View a markdown version of this page

Amazon S3 Signature 第 4 版身分驗證特定政策金鑰 - Amazon Simple Storage Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon S3 Signature 第 4 版身分驗證特定政策金鑰

下表顯示可在 Amazon S3 政策中與 Amazon S3 Signature 第 4 版身分驗證相關的政策金鑰。在儲存貯體政策中,您可以新增這些條件,以便在使用第 4 版簽署程序來驗證請求時強制執行特定行為。如需範例政策,請參閱 使用 Signature 第 4 版相關條件索引鍵的儲存貯體政策範例

適用的金鑰 說明

s3:signatureversion

識別您要支援已驗證請求的 AWS Signature 版本。對於已驗證的請求,Amazon S3 同時支援 Signature 第 4 版和 Signature 第 2 版。您可以在儲存貯體政策中新增此條件,以要求特定的簽章版本。

有效值:

"AWS" 識別簽章版本 2

"AWS4-HMAC-SHA256" 識別 Signature 第 4 版

s3:authType

Amazon S3 支援各種身分驗證方法 (請參閱 驗證請求AWS (簽章第 4 版)。您可以選擇性地使用此條件金鑰來限制傳入的請求,以使用特定的身分驗證方法。例如,您可以只允許在請求身分驗證中使用 HTTP Authorization標頭。

有效值:

REST-HEADER

REST-QUERY-STRING

POST

s3:signatureAge

簽章在已驗證請求中有效的時間長度 (以毫秒為單位)。

此條件適用於:

  • 預先簽章URLs — 其中最嚴格的條件獲勝。如需詳細資訊,請參閱使用預先簽章URLs

  • 預先簽章的 POST — 使用預先簽章的 POST 將檔案直接上傳至 S3。如需詳細資訊,請參閱 Amazon S3 POST 政策

在 Signature 第 2 版中,此值一律設定為 0。

在 第 4 版簽署程序中,簽署金鑰的有效期限最長七天。因此,簽章的有效期限也是最長七天。您可以使用此條件來進一步限制簽章存留期。如需詳細資訊,請參閱簽署請求簡介

範例值:100

s3:x-amz-content-sha256

您可以使用此條件金鑰以不允許在儲存貯體中未簽署的內容。

當您使用第 4 版簽署程序時,針對使用 Authorization 標頭的請求,會在簽署計算中新增 x-amz-content-sha256 標頭,然後將其值設定為雜湊承載。請注意,此條件索引鍵不支援 x-amz-content-sha256標頭做為查詢字串參數。

您可以在儲存貯體政策中使用此條件金鑰,以拒絕未簽署承載的任何上傳。例如,您可以拒絕使用 Authorization標頭來驗證請求,但不簽署承載的上傳。如需詳細資訊,請參閱授權標頭的簽章計算:在單一區塊中傳輸承載AWS (簽章第 4 版)

有效值:UNSIGNED-PAYLOAD

使用 Signature 第 4 版相關條件索引鍵的儲存貯體政策範例

examplebucket 如果簽章超過十分鐘,下列儲存貯體政策會拒絕 中物件的任何 Amazon S3 預先簽章 URL 請求。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "Deny a presigned URL request if the signature is more than 10 min old", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::examplebucket3/*", "Condition": { "NumericGreaterThan": { "s3:signatureAge": 600000 } } } ] }

下列儲存貯體政策僅允許使用 Authorization 標頭以供請求驗證的任何請求。任何 POST 或預先簽章的 URL 請求都會遭到拒絕。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "Allow only requests that use Authorization header for request authentication. Deny POST or presigned URL requests.", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::examplebucket3/*", "Condition": { "StringNotEquals": { "s3:authType": "REST-HEADER" } } } ] }

下列儲存貯體政策拒絕使用預先簽章 URLS 進行請求身分驗證的請求:

JSON
{ "Version":"2012-10-17", "Statement":[ { "Sid":"DenyUploadsUsingPresignedURL", "Effect":"Deny", "Principal":"*", "Action":"s3:*", "Resource":"arn:aws:s3:::amzn-s3-demo-bucket1/*", "Condition":{ "StringEquals":{ "s3:authType":"REST-query-string" } } } ] }

下列儲存貯體政策會拒絕任何具有未簽署承載的上傳:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "Deny uploads with unsigned payloads that use the Authorization header.", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::examplebucket3/*", "Condition": { "StringEquals": { "s3:x-amz-content-sha256": "UNSIGNED-PAYLOAD" } } } ] }