Amazon Simple Storage Service (Amazon S3) バケットポリシーの AWS Config ルール「s3-bucket-ssl-requests-only」を有効にして、データ転送中に暗号化を要求するようにしました。バケットポリシーがこのルールに確実に準拠するようにしようと考えています。
解決策
注: Amazon S3 では、転送中の暗号化と保管時の暗号化が可能です。転送中の暗号化とは HTTPS を指し、保管時の暗号化とはクライアント側またはサーバー側の暗号化を指します。
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 ルールに準拠していません。明示的な拒否ステートメントの代わりに、このポリシーは "aws:SecureTransport": "true" の条件を満たすリクエストへのアクセスを許可します。このステートメントでは、リクエストが HTTPS を使用している場合、バケット内のすべてのオブジェクトの s3: GetObject への匿名アクセスを許可します。ユースケースで HTTPS を介した匿名アクセスが必要でない限り、このタイプのバケットポリシーは避けてください。
{
"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": "*"
}
]
}
関連情報
How to use bucket policies and apply defense-in-depth to help secure your Amazon S3 data