跳至內容

如何在啟用物件鎖定的 Amazon S3 儲存貯體中設定跨帳戶複寫?

3 分的閱讀內容
0

我想在已啟用物件鎖定的 Amazon Simple Storage Service (Amazon S3) 儲存貯體上設定跨帳戶複寫。

解決方法

為目的地儲存貯體開啟物件鎖定

若要設定 Amazon S3 儲存貯體的複寫,請為目的地儲存貯體開啟物件鎖定

注意: 啟用 S3 物件鎖定後,您無法關閉物件鎖定或暫停儲存貯體的版本控制。

建立具有必要權限的複寫 IAM 角色

在您的 IAM 主控台中為來源帳戶建立用於複寫的 AWS Identity and Access Management (IAM) 角色,並與 Amazon S3 建立信任關係。

範例:


{  "Version": "2012-10-17",  
  "Statement": [  
    {  
      "Effect": "Allow",  
      "Principal": {  
        "Service": "s3.amazonaws.com"  
      },  
      "Action": "sts:AssumeRole"  
    }  
  ]  
}

將下列權限附加到 IAM 角色:


{  "Version": "2012-10-17",  
  "Statement": [  
    {  
      "Sid": "SourceBucketPermissions",  
      "Effect": "Allow",  
      "Action": [  
        "s3:GetObjectRetention",  
        "s3:GetObjectVersionTagging",  
        "s3:GetObjectVersionAcl",  
        "s3:ListBucket",  
        "s3:GetObjectVersionForReplication",  
        "s3:GetObjectLegalHold",  
        "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:::DestBucketName/*"  
      ]  
    }  
  ]  
}

如果您使用 AWS Key Management Service (AWS KMS) 金鑰,則也要將下列權限附加到您的 IAM 角色:


{  "Version": "2012-10-17",  
  "Statement": [  
    {  
      "Sid": "SourceBucketPermissions",  
      "Effect": "Allow",  
      "Action": [  
        "s3:GetObjectRetention",  
        "s3:GetObjectVersionTagging",  
        "s3:GetObjectVersionAcl",  
        "s3:ListBucket",  
        "s3:GetObjectVersionForReplication",  
        "s3:GetObjectLegalHold",  
        "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:::DestBucketName/*"  
      ]  
    },  
    {  
      "Sid": "SourceBucketKMSKey",  
      "Action": [  
        "kms:Decrypt",  
        "kms:GenerateDataKey"  
      ],  
      "Effect": "Allow",  
      "Resource": "SourceBucketKMSKeyARN"  
    },  
    {  
      "Sid": "DestinationBucketKMSKey",  
      "Action": [  
        "kms:Encrypt",  
        "kms:GenerateDataKey"  
      ],  
      "Effect": "Allow",  
      "Resource": "DestinationBucketKMSKeyARN"  
    }  
  ]  
}

更新 AWS KMS key 權限

為目的地帳戶設定 AWS KMS key,以允許存取來源帳戶中複寫的 IAM 角色。您可以使用 SSE-S3 加密,但不能使用受管 AWS KMS key aws/S3 進行跨帳戶複寫。如需詳細資訊,請參閱複寫加密物件 (SSE-S3、SSE-KMS、DSSE-KMS、SSE-C)

範例:


{  "Sid": "AllowS3ReplicationSourceRoleToUseTheKey",  
  "Effect": "Allow",  
  "Principal": {  
    "AWS": "arn:aws:iam::123456789101:role/s3-replication-role"  
  },  
  "Action": [  
    "kms:GenerateDataKey",  
    "kms:Encrypt"  
  ],  
  "Resource": "*"  
}

**注意:**如果您在金鑰政策中對 Resource 使用萬用字元 (*),則該政策只會授權 AWS KMS key 的複寫 IAM 角色權限。該政策不允許複寫角色提升其權限。

將以下儲存貯體政策新增至目的地帳戶

Principal (主體) 區段中,新增您建立的複寫 IAM 角色的 Amazon Resource Name (ARN)。

範例:


{  "Version": "2012-10-17",  
  "Id": "PolicyForDestinationBucket",  
  "Statement": [  
    {  
      "Sid": "ReplicationPermissions",  
      "Effect": "Allow",  
      "Principal": {  
        "AWS": "arn:aws:iam::SourceBucket-account-ID:role/service-role/source-account-IAM-role"  
      },  
      "Action": [  
        "s3:ReplicateDelete",  
        "s3:ReplicateObject",  
        "s3:ObjectOwnerOverrideToBucketOwner",  
        "s3:GetBucketVersioning",  
        "s3:PutBucketVersioning"  
      ],  
      "Resource": [  
        "arn:aws:s3:::DestBucketName/*",  
        "arn:aws:s3:::DestBucketName"  
      ]  
    }  
  ]  
}

將您的 IAM 角色複寫到 S3 儲存貯體

請完成下列步驟:

  1. 開啟 Amazon S3 console (Amazon S3 主控台)。
  2. 選擇 Buckets (儲存貯體),然後選取您的來源儲存貯體。
  3. 選擇 Management (管理) 索引標籤。
  4. Replication rules (複寫規則) 下,選擇 Create replication rule (建立複寫規則)。
  5. 輸入規則的名稱。
  6. Source bucket (來源儲存貯體) 下,選擇規則範圍,以決定複寫是否適用於特定物件首碼或儲存貯體的全部內容。
  7. Destination (目的地) 區段下,選取 Specify a bucket in another account 指定另一個帳戶中的儲存貯體),然後輸入目的地儲存貯體的名稱和帳戶 ID。
  8. IAM role (IAM 角色) 下,選擇 Choose from existing IAM roles (從現有 IAM 角色中選擇)。
  9. 選擇 Create new role (建立新角色)。
    - 或 -
    輸入 IAM 角色的 ARN,以使用您已建立的角色或現有的複寫規則。
  10. 若要複寫使用 AWS KMS 加密的物件:
    Encryption (加密) 下,選取 Replicate objects encrypted with AWS Key Management Service (AWS KMS) (複寫使用 AWS Key Management Service (KMS) 加密的物件)。
    輸入您 AWS KMS key 的 ARN。
  11. (選用) 設定目的地儲存類別其他複寫選項
  12. 檢查組態,然後選擇 Save (儲存)。
  13. (選用) 使用一次性 Amazon S3 Batch Operations 作業複寫現有物件

確認您是否已跨帳戶複寫 IAM 角色

若要測試複寫規則,請將新物件新增至來源儲存貯體,然後檢查目的地儲存貯體中是否有複寫的物件。

相關資訊

設定 S3 物件鎖定

S3 物件鎖定的運作方式

AWS 官方已更新 1 年前