顧客が古いバージョンの TLS を使用しています。自分の Amazon Simple Storage Service (Amazon S3) バケットに保存されているコンテンツにアクセスする際に、最新の TLS バージョンを使用するよう強制したいと考えています。Amazon S3 バケットに TLS 1.2 以降の使用を強制する方法を教えてください。
簡単な説明
転送中のデータには、最新の暗号化プロトコルを使用するのがベストプラクティスです。バケットのセキュリティポリシーを更新することで、Amazon S3 への接続に TLS 1.2 以降の使用を強制できます。
注: 顧客が TLS 1.2 以降を使用していない場合、S3 バケットに保存されているコンテンツにはアクセスできません。
解決方法
バケットにアタッチされたリソースベースのポリシーを使用して、S3 バケットへのすべての接続に TLS 1.2 以降の使用を強制できます。
TLS バージョン 1.2 以降を必須とするバケットポリシーを設定するには:
- S3 コンソールに移動します。
- リストからバケットを選択します。
- [Permissions] (アクセス許可) タブに移動します。
- [Bucket Policy] (バケットポリシー) で、[Edit] (編集) を選択します。
- 防止する暗号化プロトコルへのアクセスを拒否するポリシーを追加します。例えば、1.2 より前の TLS バージョンを使用するすべての HTTPS リクエストを拒否するには、次のポリシーを使用します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "EnforceTLSv12orHigher",
"Principal": {
"AWS": "*"
},
"Action": ["s3:*"],
"Effect": "Deny",
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET"
],
"Condition": {
"NumericLessThan": {
"s3:TlsVersion": 1.2
}
}
}
]
}
S3 に最新の暗号化プロトコルを使用していることを確認する
新しいポリシーをテストするには、次のサンプルの curl コマンドを使用して、特定のレガシープロトコルを使用して HTTPS リクエストを行います。
curl https://${BUCKET_NAME}.s3.us-east-1.amazonaws.com/image.png -v --tlsv1.0 --tls-max 1.0
このサンプルの curl コマンドでは、リクエストが TLS 1.2 以降を使用していないことを Amazon S3 が検出すると、Access Denied (アクセス拒否) が返されます。
AWS CloudTrail Lake を使用して AWS サービスエンドポイントへの古い TLS 接続を識別することがベストプラクティスです。CloudTrail Lake イベントデータストアを設定して、管理イベントまたはデータイベントをキャプチャできます。CloudTrail Lake の対応する CloudTrail イベントには TLS バージョン 1.2 が表示され、顧客が最新のセキュリティポリシーを使用して Amazon S3 に接続していることを確認できます。