KMS キーで暗号化したオブジェクトのみを S3 バケットに保存したいのですが、これはどのように実行できますか?

所要時間2分
0

AWS アカウントの AWS Key Management Service (AWS KMS) キーで暗号化したオブジェクトのみを Amazon Simple Storage Service (Amazon S3) バケットに保存したいと思います。どうしたら該当するオブジェクトのみをバケットにアップロードできますか?

簡単な説明

Amazon S3 のデフォルト暗号化を使用して、暗号化ヘッダーなしでアップロードされたオブジェクトが S3 バケットに保存される前に AWS KMS によって暗号化されるようにします。暗号化ヘッダーは、x-amz-server-side-encryptionx-amz-server-side-encryption-aws-kms-key-id などのヘッダーです。次に、バケットポリシーを使用して、アップロードされたオブジェクトが、AWS アカウントの AWS KMS キー ID を使用して AWS KMS を使用して暗号化されていることを確認します。

注意: AWS KMS キーによって暗号化されたオブジェクトをアップロードするには、キーおよび S3 バケットが同じ AWS リージョンにある必要があります。

解決方法

Amazon S3 デフォルト暗号化

Amazon S3 コンソールでバケットの Amazon S3 デフォルト暗号化を AWS KMS に設定するには、以下のステップに従います。

  1. Amazon S3 コンソールを開きます。
  2. AWS KMS で暗号化したオブジェクト用のバケットを選択します。
  3. [Properties] (プロパティ) ビューを選択します。
  4. [Default encryption] (デフォルト暗号化)、[AWS-KMS] の順に選択します。
  5. [AWS KMS key] (AWS KMS キー) で、AWS KMS キーを選択します。
  6. [Bucket Key] (バケットキー) で [Enable] (有効にする) を選択します。この設定により、Amazon S3 バケットキーを使用できます。
  7. [Save] (保存) を選択します。

注意: REST API、AWS コマンドラインインターフェイス (AWS CLI)、または AWS SDK を使用して Amazon S3 デフォルト暗号化を有効にするには、「Amazon S3 のデフォルトバケット暗号化の有効化」を参照してください。

バケットポリシー

以下の手順に従って、別の暗号化設定 (AES-256) を使用するアップロードリクエストを拒否するようにバケットポリシーを設定します。または、AWS KMS 暗号化を使用するものの、AWS アカウント以外のキー ID を含むリクエスト:

  1. Amazon S3 コンソールを開きます。
  2. AWS KMS で暗号化したオブジェクト用のバケットを選択します。
  3. [Permissions] (許可) ビューを選択します。
  4. [バケットポリシー] を選択します。
  5. 次のようなバケットポリシーを入力します。
    **注意:**bucketname はお客様のバケットの名前に置き換えてください。us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab を、お客様の AWS リージョン、AWS アカウント ID、および AWS KMS キー ID に置き換えてください。
{
  "Version": "2012-10-17",
  "Id": "PutObjPolicy",
  "Statement": [
    {
      "Sid": "RequireKMSEncryption",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::bucketname/*",
      "Condition": {
        "StringNotEquals": {
          "s3:x-amz-server-side-encryption": "aws:kms"
        }
      }
    },
    {
      "Sid": "RequireSpecificKMSKey",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::samplebucketname/*",
      "Condition": {
        "StringNotLikeIfExists": {
          "s3:x-amz-server-side-encryption-aws-kms-key-id": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
      }
    }
  ]
}

このバケットポリシーを S3 バケットに追加したら、S3 バケットにオブジェクトをアップロードするときに x-amz-server-side-encryptionx-amz-server-side-encryption-aws-kms-key-id というヘッダーを含める必要があります。詳細情報は、「リクエスト構文」を参照してください。


関連情報

Amazon Simple Storage Service (Amazon S3) が AWS KMS を使用する方法

Amazon S3 バケットキーを使用した SSE-KMS のコストの削減

AWS公式
AWS公式更新しました 1年前