本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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
|
簽章在已驗證請求中有效的時間長度 (以毫秒為單位)。
此條件適用於:
在 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"
}
}
}
]
}