AWS KMS を使用して Amazon S3 バケット内の特定のフォルダを暗号化するにはどうすればよいですか?

所要時間2分
0

Amazon Simple Storage Service (Amazon S3) バケット内の特定のフォルダを AWS Key Management Service (AWS KMS) キーで暗号化したいと考えています。

解決策

Amazon S3 コンソールを使用する

  1. Amazon S3 コンソールを開きます。
  2. 暗号化するフォルダに移動します。
    警告: フォルダに多数のオブジェクトが含まれている場合、スロットリングエラーが発生する可能性があります。スロットリングエラーを回避するには、Amazon S3 バケットの Amazon S3 リクエストの上限を増やします。スロットリングエラーに関するその他のトラブルシューティングのヒントについては、「AWS KMS へのリクエストを実行するときに ThrottlingExceptions エラーが表示されるのはなぜですか?」を参照してください。
  3. フォルダを選択し、[アクション] を選択します。
  4. [サーバー側の暗号化を編集する] を選択します。
  5. [サーバー側の暗号化を有効にする][有効化] を選択します。
  6. [AWS Key Management Service キー (SSE-KMS)] で、[暗号化キータイプ] を選択します。
  7. フォルダの暗号化に使用する AWS KMS キーを選択します。
    注: AWS/S3 という名前のキーは、AWS KMS が管理するデフォルトのキーです。フォルダは、デフォルトキーまたはカスタムキーのいずれかで暗号化できます。
  8. [変更を保存] を選択します。

AWS CLI を使用する

AWS コマンドラインインターフェイス (AWS CLI) のコマンドから既存フォルダの暗号化を変更することはできません。代わりに、AWS KMS 暗号化を有効にした状態でフォルダをコピーするコマンドを実行します。

注: AWS CLI コマンドの実行中にエラーが発生した場合は、最新の AWS CLI バージョンを使用していることを確認してください

デフォルトの AWS KMS キー (AWS/S3) でファイルを暗号化するには、次のコマンドを実行します:

aws s3 cp s3://awsexamplebucket/abc s3://awsexamplebucket/abc --recursive --sse aws:kms

このコマンドの構文では、AWS KMS 暗号化を使用してフォルダ自体がコピーされます。

カスタム AWS KMS キーを使用してファイルを暗号化するには、次のコマンドを実行します:

aws s3 cp s3://awsexamplebucket/abc s3://awsexamplebucket/abc --recursive --sse aws:kms --sse-kms-key-id a1b2c3d4-e5f6-7890-g1h2-123456789abc

注: --sse-kms-key-id は使用するキー ID に置き換えてください。

今後のアップロードで AWS KMS を使用したオブジェクトの暗号化を必須にする

暗号化設定を変更すると、フォルダに既に存在するオブジェクトのみが暗号化されます。この変更後は、暗号化せずにオブジェクトをアップロードできます。今後のアップロードで AWS KMS を使用したオブジェクトの暗号化を必須にするには、次の例のようなバケットポリシーを使用します:

{
  "Version": "2012-10-17",
  "Id": "PutObjPolicy",
  "Statement": [
    {
      "Sid": "DenyIncorrectEncryptionHeader",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::awsexamplebucket/awsexamplefolder/*",
      "Condition": {
        "StringNotEquals": {
          "s3:x-amz-server-side-encryption": "aws:kms"
        }
      }
    },
    {
      "Sid": "DenyUnEncryptedObjectUploads",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::awsexamplebucket/awsexamplefolder/*",
      "Condition": {
        "Null": {
          "s3:x-amz-server-side-encryption": true
        }
      }
    }
  ]
}

このバケットポリシーでは、AWS KMS を使用したサーバー側の暗号化がリクエストに含まれている場合を除き、docexamplebucket/docexamplefolder/*s3:PutObject へのアクセスが拒否されます。

関連情報

AWS KMS キー (SSE-KMS) によるサーバー側の暗号化の使用

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