Amazon Simple Storage Service (Amazon S3) バケットポリシーで AWS Config ルール s3-bucket-ssl-requests-only を有効化し、転送中のデータに暗号化を要求するようにしました。バケットポリシーを、このルールに確実に準拠させたいです。
解決策
Amazon S3 は HTTP リクエストと HTTPS リクエストの両方を許可します。デフォルトでは、Amazon S3 は AWS マネジメントコンソール、AWS コマンドラインインターフェイス (AWS CLI)、または HTTPS を介してリクエストを行います。
s3-bucket-ssl-requests-only ルールに準拠するには、バケットポリシーは HTTP リクエストへのアクセスを明示的に拒否する必要があります。バケットポリシーが HTTPS リクエストを許可していても、HTTP リクエストを明示的に拒否しない場合、ルールに準拠できない可能性があります。
バケットポリシー内の HTTP リクエストまたは HTTPS リクエストを判別するには、aws:SecureTransport キーを確認する条件を使用します。キー条件が true の場合、Amazon S3 は HTTPS 経由でリクエストを送信します。s3-bucket-ssl-requests-only ルールに準拠するには、リクエストが "aws:SecureTransport": "false" の条件を満たす場合に、HTTP リクエストへのアクセスを明示的に拒否するバケットポリシーを作成します。
s3-bucket-ssl-requests-only ルールに準拠するバケットポリシー
次のバケットポリシー例は、s3-bucket-ssl-requests-only ルールに準拠しています。このポリシーは、リクエストが "aws:SecureTransport": "false" の条件を満たす場合、バケットとオブジェクトに対するすべてのアクションを明示的に拒否します。
{
"Id": "ExamplePolicy",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowSSLRequestsOnly",
"Action": "s3:*",
"Effect": "Deny",
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
],
"Condition": {
"Bool": {
"aws:SecureTransport": "false"
}
},
"Principal": "*"
}
]
}
s3-bucket-ssl-requests-only ルールに準拠していないバケットポリシー
次のバケットポリシーは、s3-bucket-ssl-requests-only ルールに準拠していません。このポリシーは、明示的な Deny ステートメントを使用せず、"aws:SecureTransport": "true" の条件を満たすリクエストへのアクセスを許可します。このステートメントでは、リクエストが HTTPS を使用している場合、バケット内のすべてのオブジェクトに関する GetObject への匿名アクセスを許可します。
{
"Id": "ExamplePolicy",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "NOT-RECOMMENDED-FOR__AWSCONFIG-Rule_s3-bucket-ssl-requests-only",
"Action": "s3:GetObject",
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
],
"Condition": {
"Bool": {
"aws:SecureTransport": "true"
}
},
"Principal": "*"
}
]
}
注: 上記のバケットポリシーは、ユースケースで HTTPS 経由の匿名アクセスが必要な場合にのみ使用してください。
関連情報
How to use bucket policies and apply defense-in-depth to help secure your Amazon S3 data