Amazon S3 バケットに TLS 1.2 以降の使用を適用するにはどうすればよいですか?

所要時間1分
0

お客様が古いバージョンの TLS を使用しています。お客様が Amazon Simple Storage Service (Amazon S3) バケットのコンテンツにアクセスする際に、最新バージョンの TLS が適用されるようにしたいと考えています。

解決策

注: Amazon S3 には、S3 API エンドポイントでのデフォルトである TLS バージョン 1.2 以降が必要です。TLS 1.3 以降などのより高い暗号化プロトコルバージョンを適用する場合も、この記事での例が適用されます。

S3 バケットへのすべての接続に TLS 1.2 以降を使用するように適用するには、バケットにアタッチされたリソースベースのポリシーを使用します。

TLS バージョン 1.2 以降を必要とするバケットポリシーをアタッチするには、次の手順を実行します。

  1. Amazon S3 コンソールを開きます。

  2. リストからバケットを選択します。

  3. [権限] タブを選択します。

  4. [バケットポリシー] で [編集] を選択します。

  5. 禁止する暗号化プロトコルへのアクセスを拒否するポリシーを追加します。たとえば、次のポリシーを使用すると、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
            }
          }
        }
      ]
    }

    このポリシーでは HTTPS が適用され、転送中のデータのセキュリティが強化されます。

    ワークロードに Amazon S3 への HTTP トラフィックが必要な場合は、次のポリシーをご使用ください。このポリシーは、1.2 より前の TLS バージョンからの HTTP トラフィックを許可し、HTTPS トラフィックをブロックします。

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "UpdateTLSv12",
          "Effect": "Deny",
          "Principal": {
            "AWS": "*"
          },
          "Action": "s3:*",
          "Resource": "arn:aws:s3:::DOC_EXAMPLE_BUCKET/*",
          "Condition": {
            "Bool": {
              "aws:SecureTransport": "true"
            },
            "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

Amazon S3 は、リクエストでは TLS バージョン 1.2 以降を使用していないことを認識するため、Access Denied を返します。

: デフォルトでは、curl は匿名リクエストを送信します。バケットがプライベートの場合は、TLS バージョンに関係なく 403 Access Denied エラーが発生します。curl を使用してテストする場合は、Amazon S3 の署名付き URL を生成して、プライベートオブジェクトにアクセスできるようにしてください。

ベストプラクティスは、AWS CloudTrail Lake を使用して、AWS サービスエンドポイントへの以前の TLS 接続を特定することです。CloudTrail Lake イベントデータストアは、管理イベントまたはデータイベントをキャプチャするように設定できます。

AWS公式
AWS公式更新しました 2ヶ月前
コメントはありません

関連するコンテンツ