LoginSignup
5
7

More than 5 years have passed since last update.

AWS アカウントを跨いだ S3 バケットの移動(KMS キーで暗号化している場合)

Posted at

KMS キーで暗号化しているバケットから移行して、移行先でも KMS キーで暗号化しようとして少しつまずいたのでメモ。

移行元のバケットが暗号化されている場合、aws-cli で使うユーザに KMS キーの権限が必要です。

  1. How do I transfer ownership of Amazon S3 objects to a different AWS account? の通りに、移行元のバケットと移行先のユーザのポリシーを設定します。
  2. ここで aws s3 sync を実行すると A client error (AccessDenied) occurred when calling the CopyObject operation: Access Denied のようなエラーが出て失敗するはず。
  3. 移行元コンソールの「IAM > Encryption Keys > 該当のキー > Key Users > External Accounts」で移行先のアカウント番号を設定します。
  4. 移行先コンソールの「IAM > Users > 該当のユーザ > Permissions > Inline Policies」で KMS キーの利用権限を設定します。

    {
      "Version": "2012-10-17",
      "Statement": {
        "Effect": "Allow",
        "Action": [
          "kms:Encrypt",
          "kms:Decrypt",
          "kms:ReEncrypt*",
          "kms:GenerateDataKey*",
          "kms:DescribeKey"
        ],
        "Resource": [
          "arn:aws:kms:(移行元リージョン):(移行元アカウント):key/(移行元 KMS キー ID)"
        ]
      }
    }
    
  5. 移行先コンソールの「IAM > Encryption Keys」で移行先バケットを暗号化する KMS キーを作り、Key Users に aws-cli で使うユーザを設定します。

  6. 移行先の KMS キー ID を指定しつつ、コピーを実行します。

    aws s3 sync --sse=aws:kms --sse-kms-key-id=(移行元 KMS キー ID) s3://(移行元バケット) s3://(移行先バケット)
    
5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7