🎃

Amazon S3でのサーバーサイド暗号化 (SSE-S3) の設定

2024/06/05に公開

はじめに

Amazon S3は、保存中のオブジェクトを暗号化するためにさまざまな暗号化オプションを提供しています。その中でもサーバーサイド暗号化(Server-Side Encryption, SSE)は、S3が自動的にオブジェクトを暗号化する機能です。この記事では、PutObject API操作によってS3バケットに追加されるオブジェクトをSSE-S3を使用して暗号化する方法について説明します。
PutObject API操作を呼び出す際に、x-amz-server-side-encryption ヘッダーを設定することで、S3バケットに保存されるオブジェクトを暗号化できます。具体的には、AES256 を指定することで、SSE-S3を有効にします。

手順

バケットの作成または選択

  • 既存のバケットを選択するか、新しいバケットを作成します。

バケットポリシーの設定

  • バケットを選択し、「Permissions」タブに移動します。
  • 「Bucket Policy」を編集し、以下のポリシーを追加します。
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "EnableSSE-S3",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::YOUR_BUCKET_NAME/*",
      "Condition": {
        "StringNotEquals": {
          "s3:x-amz-server-side-encryption": "AES256"
        }
      }
    }
  ]
}

このポリシーは、PutObject APIを呼び出す際にx-amz-server-side-encryptionヘッダーがAES256であることを要求します。

動作確認

  • アプリケーションを使用してオブジェクトをS3バケットに保存します。
  • オブジェクトが正常に保存されたことを確認し、暗号化が適用されていることを確認します。

Pythonのboto3を使用した例

import boto3

s3_client = boto3.client('s3')

response = s3_client.put_object(
    Bucket='YOUR_BUCKET_NAME',
    Key='example.txt',
    Body=b'Hello world!',
    ServerSideEncryption='AES256'
)

print(response)

以上の手順に従うことで、PutObject API操作によってS3バケットに追加されるオブジェクトをSSE-S3を使用して暗号化できます。

Discussion