Amazon S3 バケットに、クロスアカウント、クロスリージョン、AWS KMS 暗号化レプリケーションを設定する方法を教えてください。

所要時間2分
0

AWS Key Management Service (AWS KMS) で暗号化された Amazon Simple Storage Service (Amazon S3) バケットを使用しています。バケット内のオブジェクトの、複数の AWS リージョンとアカウントにわたるレプリケーションを設定したいです。

簡単な説明

AWS KMS で暗号化されたソースバケットからオブジェクトをレプリケートするには、レプリケート先バケットで AWS KMS 暗号化を使用する必要があります。ただし、2 つのバケットには異なる AWS KMS キーを設定できます。AWS KMS で暗号化されたソースバケットがある場合、宛先バケットのオブジェクトに別の暗号化方法を使用することはできません。

また、宛先バケットの AWS KMS キーは、宛先バケットと同じリージョンにある必要があります。

注: ソースバケットと宛先バケットが別々のリージョンにある場合は、それぞれ別の AWS KMS キーが必要です。

宛先用の S3 バケットを作成する

AWS KMS キーと同じリージョンに新しい宛先 S3 バケットを作成します。

バケットを作成したら、バージョニングを有効にします。これは Amazon S3 レプリケーションの要件です。

**注:**バケットが 1 つの AWS KMS キーのみを使用するように、新しい AWS KMS キーをデフォルトの暗号化として使用するのがベストプラクティスです。

暗号化コストを削減するには、S3 バケットで S3 バケットキーを有効にします。

(オプション) レプリケーション IAM ロールのアクセス許可を編集する

レプリケーションルールを作成するときに、AWS Identity and Access Management (IAM) ロールを作成することもできます。IAM ロールは、Amazon S3 がオブジェクトを取得、レプリケート、暗号化、復号化できるようにする必要があります。オブジェクトを別のリージョンに移動する前に、オブジェクトを復号化するアクセス許可を付与する必要があります。次に、宛先のオブジェクトを暗号化します。IAM ロールに次の信頼関係とアクセス許可があることを確認してください。

注: 次のアクセス許可は、既存のレプリケーションルールがあるバケットに適用されます。

  1. ロールと Amazon S3 に、次の信頼関係があることを確認します。

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "s3.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
  2. IAM ロールに次のアクセス許可があることを確認します。これにより、ロールはソースバケット内のオブジェクトにアクセスし、オブジェクトを宛先バケットにレプリケートできます。ロールは、AWS KMS キーを使用してオブジェクトを復号および暗号化することもできます。

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "SourceBucketPermissions",
          "Effect": "Allow",
          "Action": [
            "s3:GetObjectVersionTagging",
            "s3:GetObjectVersionAcl",
            "s3:ListBucket",
            "s3:GetObjectVersionForReplication",
            "s3:GetReplicationConfiguration"
          ],
          "Resource": [
            "arn:aws:s3:::SourceBucketName/*",
            "arn:aws:s3:::SourceBucketName"
          ]
        },
        {
          "Sid": "DestinationBucketPermissions",
          "Effect": "Allow",
          "Action": [
            "s3:ReplicateObject",
            "s3:ObjectOwnerOverrideToBucketOwner",
            "s3:GetObjectVersionTagging",
            "s3:ReplicateTags",
            "s3:ReplicateDelete"
          ],
          "Resource": [
            "arn:aws:s3:::DestinationBucketName/*"
          ]
        },
        {
          "Sid": "SourceBucketKMSKey",
          "Action": [
            "kms:Decrypt",
            "kms:GenerateDataKey"
          ],
          "Effect": "Allow",
          "Resource": "SourceBucketKMSKeyARN"
        },
        {
          "Sid": "DestinationBucketKMSKey",
          "Action": [
            "kms:Encrypt",
            "kms:GenerateDataKey"
          ],
          "Effect": "Allow",
          "Resource": "DestinationBucketKMSKeyARN"
        }
      ]
    }

注:

  • SourceBucketName は、お使いのソースバケットの名前に置き換えます。
  • DestinationBucketName は、お使いの宛先バケットの名前に置き換えます。
  • SourceBucketKMSKeyARN は、お使いのソースバケットの AWS KMS キーの ARN に置き換えまs。
  • DestinationBucketKMSKeyARN は、宛先バケットの AWS KMS キーの ARN に置き換えます。

AWS KMS ポリシーを更新して、IAM ロールがソースバケットとターゲットバケットの両方のキーを使用できるようにする

AWS KMS ポリシーを変更して、IAM ロールがソースバケットとターゲットバケットの両方の AWS KMS キーを使用する許可を付与します。

クロスアカウントレプリケーションでは、AWS KMS キーポリシーと IAM ロールポリシーの両方に暗号化と復号化のアクセス許可が必要です。

バケットへのレプリケーションを許可するように宛先バケットのポリシーを変更します

宛先バケットのポリシーを次のテンプレートに変更します。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DestinationBucketPermissions",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::ACCOUNTNUMBER:role/IAMROLE"
      },
      "Action": [
        "s3:ReplicateObject",
        "s3:ObjectOwnerOverrideToBucketOwner",
        "s3:GetObjectVersionTagging",
        "s3:ReplicateTags",
        "s3:ReplicateDelete"
      ],
      "Resource": [
        "arn:aws:s3:::DestinationBucketName/*"
      ]
    }]
}

注: AccountNumber は、ソースバケットのアカウント番号に置き換えます。IAMRole は、使用している IAM ロールに置き換えます。DestinationBucketName は、お使いの宛先バケットの名前に置き換えます。

レプリケーションルールを設定する

  1. Amazon S3 コンソールを開きます。
  2. [バケット] を選択してから、ソースバケットを選択します。
  3. [管理] タブを選択します。[レプリケーションルール][レプリケーションルールを作成] を選択します。
  4. ルールの名前を入力します。[ソースバケット] で、レプリケーションが特定のオブジェクトプレフィックスに適用されるのか、バケットの内容全体に適用されるのかを決定するルールスコープを選択します。
  5. [宛先] セクションで、レプリケートされたオブジェクトの宛先バケットを選択します。
  6. [IAM ロール] で、[既存の IAM ロールから選択] を選択します。
  7. [新しいロールを作成] を選択します。
    または、
    作成済みのロールを使用するには、IAM ロールの ARN を入力します。既存のレプリケーションルールがある場合は、こちらの方法を使用してください。
  8. [暗号化] で、[AWS Key Management Service (AWS KMS) で暗号化されたオブジェクトを複製する] を選択します。次に、AWS KMS キーの ARN を入力します。
  9. (オプション) 宛先ストレージクラス追加のレプリケーションオプションを設定します。
  10. 設定を確認したら、[保存] を選択します。
  11. (オプション) 1 回限りの S3 バッチ操作ジョブで、既存のオブジェクトを複製します。

レプリケーションを検証する

レプリケーションルールを作成すると、新しく追加されたオブジェクトをソースから宛先バケットにシームレスにレプリケーションできます。レプリケーションをテストするには、次の手順を実行します。

  1. 新しいオブジェクトをソースバケットにアップロードします。
  2. オブジェクトの概要を確認し、オブジェクトのレプリケーションステータスをチェックします。
  3. レプリケーションが成功すると、COMPLETED ステータスとなります。

関連情報

サーバー側の暗号化 (SSE-C、SSE-S3、SSE-KMS) で作成されたオブジェクトを複製する

AWS公式
AWS公式更新しました 1年前
コメントはありません