View a markdown version of this page

Amazon S3 署名バージョン 4 の認証固有のポリシーキー - Amazon Simple Storage Service

Amazon S3 署名バージョン 4 の認証固有のポリシーキー

次の表は、Amazon S3 ポリシーで使用できる Amazon S3 署名バージョン 4 認証に関連するポリシーキーを示しています。これらの条件をバケットポリシーに追加して、Signature Version 4 を使用してリクエストが認証された際の特定の動作を適用できます。エンドポイントポリシーの例については、「署名バージョン 4 に関連する条件キーを使用するバケットポリシーの例」を参照してください。

適用できるキー 説明

s3:signatureversion

認証されたリクエストでサポートされる AWS 署名のバージョンを識別します。認証されたリクエストについて、Amazon S3 は署名バージョン 4 と署名バージョン 2 の両方をサポートしています。この条件をバケットポリシーに追加して、特定の署名バージョンを要求できます。

有効な値:

"AWS" は署名バージョン 2 を識別します

"AWS4-HMAC-SHA256" は署名バージョン 4 を識別します

s3:authType

Amazon S3 は、さまざまな認証方式をサポートしています (リクエストの認証 (AWS 署名バージョン 4) を参照)。必要に応じてこの条件キーを使用し、受信するリクエストが特定の認証方法を使用するように制限することができます。例えば、リクエスト認証のために HTTP Authorization ヘッダーのみの使用を指定できます。

有効な値:

REST-HEADER

REST-QUERY-STRING

POST

s3:signatureAge

認証されたリクエストの中で署名が有効である時間長 (ミリ秒単位)。

この条件は、以下に適用されます。

  • 署名付き URL – 最も制限の厳しい条件が優先されます。詳細については、「署名付き URL の使用」を参照してください。

  • 署名付き POST – 署名付き POST を使用してファイルを S3 に直接アップロードします。詳細については、「Amazon S3 POST ポリシー」を参照してください。

署名バージョン 2 では、この値は常に 0 に設定されます。

Signature Version 4 では、署名キーは最大 7 日間有効です。したがって、署名の有効期間も最大 7 日間となります。この条件を使用すると、署名の有効期間をさらに制限できます。詳細については、「リクエストへの署名の概要」を参照してください。

値の例: 100

s3:x-amz-content-sha256

この条件キーを使用すると、バケット内にある署名されていないコンテンツを許可しません。

Authorization ヘッダを使用するリクエストに対し Signature Version 4 を使用する場合、署名計算に x-amz-content-sha256 ヘッダーを追加した後、その値をハッシュペイロードに設定します。この条件キーは、クエリ文字列パラメータとして x-amz-content-sha256 ヘッダーをサポートしていないことに注意してください。

この条件キーをバケットポリシーで使用すると、ペイロードに署名がないアップロードを、すべて拒否することができます。例えば、リクエスト認証において、Authorization ヘッダーを使用しているものの、ペイロードに署名していないアップロードを拒否することができます。詳細については、「Authorization ヘッダーの署名計算: 単一チャンクでのペイロードの転送 (AWS 署名バージョン 4)」を参照してください。

有効な値: UNSIGNED-PAYLOAD

署名バージョン 4 に関連する条件キーを使用するバケットポリシーの例

次のバケットポリシーは、署名が作成されてから 10分以上経過している場合、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" } } } ] }

次のバケットポリシーは、リクエスト認証に署名付き URL を使用するリクエストを拒否します。

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