

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

# Amazon S3 Signature 第 4 版身分驗證特定政策金鑰
<a name="bucket-policy-s3-sigv4-conditions"></a>

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


| 適用的金鑰 | 說明 | 
| --- | --- | 
| `s3:signatureversion` | 識別您要支援已驗證請求的 AWS Signature 版本。對於已驗證的請求，Amazon S3 同時支援 Signature 第 4 版和 Signature 第 2 版。您可以在儲存貯體政策中新增此條件，以要求特定的簽章版本。<br />有效值：<br />`"AWS"` 識別簽章版本 2 <br /> `"AWS4-HMAC-SHA256"` 識別 Signature 第 4 版 | 
| `s3:authType` | Amazon S3 支援各種身分驗證方法 （請參閱 [驗證請求AWS （簽章第 4 版）](sig-v4-authenticating-requests.md)。您可以選擇性地使用此條件金鑰來限制傳入的請求，以使用特定的身分驗證方法。例如，您可以只允許在請求身分驗證中使用 HTTP `Authorization`標頭。<br />有效值：<br />`REST-HEADER` <br />`REST-QUERY-STRING` <br />`POST` <br />  | 
| `s3:signatureAge` | 簽章在已驗證請求中有效的時間長度 (以毫秒為單位)。<br />此條件適用於：+ *預先簽章URLs* — 其中最嚴格的條件獲勝。如需詳細資訊，請參閱[使用預先簽章URLs](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-presigned-url.html)。<br />+ *預先簽章的 POST* — 使用預先簽章的 POST 將檔案直接上傳至 S3。如需詳細資訊，請參閱 [Amazon S3 POST 政策](https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-HTTPPOSTConstructPolicy.html)。<br />在 Signature 第 2 版中，此值一律設定為 0。<br />在 第 4 版簽署程序中，簽署金鑰的有效期限最長七天。因此，簽章的有效期限也是最長七天。您可以使用此條件來進一步限制簽章存留期。如需詳細資訊，請參閱[簽署請求簡介](sig-v4-authenticating-requests.md#signing-request-intro)。<br />範例值：`100` | 
| `s3:x-amz-content-sha256` | 您可以使用此條件金鑰以不允許在儲存貯體中未簽署的內容。<br />當您使用第 4 版簽署程序時，針對使用 `Authorization` 標頭的請求，會在簽署計算中新增 `x-amz-content-sha256` 標頭，然後將其值設定為雜湊承載。請注意，此條件索引鍵不支援 `x-amz-content-sha256`標頭做為查詢字串參數。<br />您可以在儲存貯體政策中使用此條件金鑰，以拒絕未簽署承載的任何上傳。例如，您可以拒絕使用 `Authorization`標頭來驗證請求，但不簽署承載的上傳。如需詳細資訊，請參閱[授權標頭的簽章計算：在單一區塊中傳輸承載AWS （簽章第 4 版）](sig-v4-header-based-auth.md)。<br />有效值：`UNSIGNED-PAYLOAD` | 

## 使用 Signature 第 4 版相關條件索引鍵的儲存貯體政策範例
<a name="bucket-policy-sig-v4-condition-key-example"></a>

`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"
                     }
               }
         }
   ]
}
```

------