複寫加密物件 (SSE-S3、SSE-KMS、DSSE-KMS、SSE-C) - Amazon Simple Storage Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

複寫加密物件 (SSE-S3、SSE-KMS、DSSE-KMS、SSE-C)

重要

Amazon S3 現在會套用伺服器端加密搭配 Amazon S3 受管金鑰 (SSE-S3),作為 Amazon S3 中每個儲存貯體的基本加密層級。從 2023 年 1 月 5 日起,所有上傳到 Amazon S3 的新物件都會自動加密,無需額外費用,也不會影響效能。S3 儲存貯體預設加密組態和新物件上傳的自動加密狀態可在 AWS CloudTrail 日誌、S3 庫存、S3 Storage Lens、Amazon S3 主控台,以及 AWS Command Line Interface 和 AWS SDKs 中的其他 Amazon S3 API 回應標頭中使用。如需詳細資訊,請參閱預設加密FAQ

複製已使用伺服器端加密進行加密的物件時,有一些特殊的考量。Amazon S3 支援下列三種類型的伺服器端加密:

  • 伺服器端加密搭配 Amazon S3 受管金鑰 (SSE-S3)

  • 伺服器端加密與 AWS Key Management Service (AWS KMS) 金鑰 (SSE-KMS)

  • 雙層伺服器端加密與 AWS KMS 金鑰 (DSSE-KMS)

  • 使用客戶提供的金鑰進行伺服器端加密 (SSE-C)

如需伺服器端加密的詳細資訊,請參閱「使用伺服器端加密保護資料」。

本主題說明指示 Amazon S3 複寫已使用伺服器端加密進行加密的物件所需的許可。本主題也提供其他組態元素,您可以新增 和範例 AWS Identity and Access Management (IAM) 政策,以授予複寫加密物件的必要許可。

如需 step-by-step 指示的範例,請參閱 啟用加密物件的複寫。如需建立複寫組態的資訊,請參閱 在 區域內和跨區域複寫物件

注意

您可以在 Amazon S3 AWS KMS keys 中使用多區域。但是,Amazon S3 目前將多區域金鑰視為單區域金鑰,並且不使用金鑰的多區域功能。如需詳細資訊,請參閱 AWS Key Management Service 開發人員指南中的使用多區域金鑰

預設儲存貯體加密如何影響複寫

在您啟用域複寫目的地儲存貯體的預設加密之後,適用下列加密行為:

  • 如果未加密來源儲存貯體中的物件,則會使用目的地儲存貯體的預設加密設定來加密目的地儲存貯體中的複本物件。因此,來源物件的實體標籤 (ETags) 與複本物件的 ETags 不同。如果您有使用 ETags 的應用程式,您必須更新這些應用程式以考慮此差異。

  • 如果來源儲存貯體中的物件使用伺服器端加密搭配 Amazon S3 受管金鑰 (SSE-S3)、伺服器端加密搭配 AWS Key Management Service (AWS KMS) 金鑰 (SSE-KMS) 或雙層伺服器端加密搭配 AWS KMS 金鑰 (DSSE-KMS) 加密,則目的地儲存貯體中的複本物件會使用與來源物件相同的加密類型。不會使用目的地儲存貯體的預設加密設定。

複寫使用 SSE-C 加密的物件

透過搭配客戶提供的金鑰 (SSE-C) 使用伺服器端加密,您可以管理自己的專屬加密金鑰。使用 SSE-C,您可以在 Amazon S3 管理加密和解密程序時管理金鑰。您必須提供加密金鑰作為請求的一部分,但不需要撰寫任何程式碼來執行物件加密或解密。當您上傳物件時,Amazon S3 會使用您提供的金鑰加密物件。然後 Amazon S3 會從記憶體中清除該金鑰。當您擷取物件時,您必須在要求中提供相同的加密金鑰。如需詳細資訊,請參閱使用伺服器端加密搭配客戶提供的金鑰 (SSE-C)

S3 Replication 支援使用 SSE-C 加密的物件。您可以在 Amazon S3 主控台或使用 AWS SDKs 設定 SSE-C 物件複寫,方法與設定未加密物件複寫的方式相同。除了複寫目前所需的許可之外,沒有其他 SSE-C 許可。

如果新上傳的 SSE-C 加密物件符合資格,S3 複寫會自動複寫,如 S3 複寫組態中所指定。如需複寫儲存貯體中的現有物件,請使用 S3 批次複寫。如需複寫物件的詳細資訊,請參閱 設定即時複寫概觀使用批次複寫複寫複寫現有物件

複寫 SSE-C 物件不需支付額外費用。如需複寫定價的詳細資訊,請參閱 Amazon S3 定價

複寫使用 SSE-S3、SSE-KMS 或 DSSE-KMS 加密的物件

根據預設,Amazon S3 不會複寫使用 SSE-KMS 或 DSSE-KMS 加密的物件。本節說明您可以新增,以指示 Amazon S3 複寫這些物件的額外組態元素。

如需 step-by-step 指示的範例,請參閱 啟用加密物件的複寫。如需建立複寫組態的資訊,請參閱 在 區域內和跨區域複寫物件

在複寫組態中指定其他資訊

在複寫組態中,請執行下列作業:

  • 在複寫組態中的 Destination元素中,新增您希望 Amazon S3 用來加密物件複本的對稱 AWS KMS 客戶受管金鑰 ID,如下列範例複寫組態所示。

  • 透過啟用使用 KMS 金鑰 (SSE-KMS 或 DSSE-KMS) 加密的物件複寫,明確選擇加入。若要選擇加入,請新增 SourceSelectionCriteria 元素,如以下範例複寫組態所示。

<ReplicationConfiguration> <Rule> ... <SourceSelectionCriteria> <SseKmsEncryptedObjects> <Status>Enabled</Status> </SseKmsEncryptedObjects> </SourceSelectionCriteria> <Destination> ... <EncryptionConfiguration> <ReplicaKmsKeyID>AWS KMS key ARN or Key Alias ARN that's in the same AWS 區域 as the destination bucket.</ReplicaKmsKeyID> </EncryptionConfiguration> </Destination> ... </Rule> </ReplicationConfiguration>
重要
  • KMS 金鑰必須在 AWS 區域 與目的地儲存貯體相同的 中建立。

  • KMS 金鑰必須是有效的。API PutBucketReplication 操作不會檢查 KMS 金鑰的有效性。如果您使用無效的 KMS 金鑰,您將收到 HTTP 200 OK 狀態碼以回應,但複寫失敗。

下列範例顯示複寫組態,其中包含選用組態元素。此複寫組態具有一項規則。該規則會套用至金鑰前綴為 Tax 的物件。Amazon S3 使用指定的 AWS KMS key ID 來加密這些物件複本。

<?xml version="1.0" encoding="UTF-8"?> <ReplicationConfiguration> <Role>arn:aws:iam::account-id:role/role-name</Role> <Rule> <ID>Rule-1</ID> <Priority>1</Priority> <Status>Enabled</Status> <DeleteMarkerReplication> <Status>Disabled</Status> </DeleteMarkerReplication> <Filter> <Prefix>Tax</Prefix> </Filter> <Destination> <Bucket>arn:aws:s3:::amzn-s3-demo-destination-bucket</Bucket> <EncryptionConfiguration> <ReplicaKmsKeyID>AWS KMS key ARN or Key Alias ARN that's in the same AWS 區域 as the destination bucket.</ReplicaKmsKeyID> </EncryptionConfiguration> </Destination> <SourceSelectionCriteria> <SseKmsEncryptedObjects> <Status>Enabled</Status> </SseKmsEncryptedObjects> </SourceSelectionCriteria> </Rule> </ReplicationConfiguration>

授予 IAM 角色的其他許可

若要使用 SSE-S3、SSE-KMS 或 DSSE-KMS 複寫靜態加密的物件,請將下列額外許可授予您在複寫組態中指定的 AWS Identity and Access Management (IAM) 角色。您可以透過更新與 IAM 角色相關聯的許可政策來授予這些許可。

  • s3:GetObjectVersionForReplication 來源物件的動作 – 此動作可讓 Amazon S3 複寫未加密的物件,以及使用 SSE-S3、SSE-KMS 或 DSSE-KMS 以伺服器端加密建立的物件。

    注意

    建議您使用 s3:GetObjectVersionForReplication 動作,不要使用 s3:GetObjectVersion 動作,因為 s3:GetObjectVersionForReplication 只會提供 Amazon S3 複寫所需的最低許可。此外, s3:GetObjectVersion動作允許複寫未加密和 SSE-S3-encrypted的物件,但不允許使用 KMS 金鑰 (SSE-KMS 或 DSSE-KMS) 加密的物件。

  • kms:Decrypt 和 KMS 金鑰kms:Encrypt AWS KMS 的動作

    • 您必須針對用來解密來源物件的 AWS KMS key 授予 kms:Decrypt 許可。

    • 您必須針對用來加密物件複本的 AWS KMS key 授予 kms:Encrypt 許可。

  • kms:GenerateDataKey 複寫純文字物件的動作 – 如果您要將純文字物件複寫至預設啟用 SSE-KMS 或 DSSE-KMS 加密的儲存貯體,則必須在 Word 政策中包含目的地加密內容和 IAM KMS金鑰的kms:GenerateDataKey許可。

建議您使用 AWS KMS 條件金鑰,將這些許可限制為目的地儲存貯體和物件。 AWS 帳戶 擁有 IAM 角色的 ,必須具有政策中所列 KMS 金鑰的 kms:Encryptkms:Decrypt動作的許可。如果 KMS 金鑰是由另一個 擁有 AWS 帳戶,則 KMS 金鑰的擁有者必須將這些許可授予 AWS 帳戶 擁有 IAM 角色的 。如需管理這些 KMS 金鑰存取權的詳細資訊,請參閱 AWS Key Management Service 開發人員指南中的使用 IAM 政策搭配 AWS KMS

S3 儲存貯體金鑰和複寫

若要搭配 S3 儲存貯體金鑰使用複寫,用於加密物件複本的 KMS 金鑰 AWS KMS key 政策必須包含呼叫主體的kms:Decrypt許可。在使用 S3 儲存貯體金鑰之前,對 kms:Decrypt 的呼叫會驗證 S3 儲存貯體金鑰的完整性。如需詳細資訊,請參閱使用 S3 儲存貯體金鑰與複寫

當來源或目的地儲存貯體啟用 S3 儲存貯體金鑰時,加密內容將是儲存貯體的 Amazon Resource Name (ARN),而不是物件的 ARN (例如 arn:aws:s3:::bucket_ARN)。您必須更新您的 IAM 政策,才能將儲存貯體 ARN 用於加密內容:

"kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::bucket_ARN" ]

如需詳細資訊,請參閱 加密內容 (x-amz-server-side-encryption-context)(在「使用 API」一節中) REST 和 啟用 S3 儲存貯體金鑰之前,要注意的變更

範例政策:使用 SSE-S3 和 SSE-KMS 進行複寫

下列 IAM 政策範例顯示 SSE-S3 和 SSE-KMS 搭配複寫使用的陳述式。

範例 – 將 SSE-KMS 與個別目的地儲存貯體搭配使用

下列範例政策顯示將 SSE-KMS 與個別目的地儲存貯體搭配使用的陳述式。

{ "Version":"2012-10-17", "Statement":[ { "Action": ["kms:Decrypt"], "Effect": "Allow", "Condition": { "StringLike": { "kms:ViaService": "s3.source-bucket-region.amazonaws.com", "kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::amzn-s3-demo-source-bucket/key-prefix1*" ] } }, "Resource": [ "List of AWS KMS key ARNs that are used to encrypt source objects." ] }, { "Action": ["kms:Encrypt"], "Effect": "Allow", "Condition": { "StringLike": { "kms:ViaService": "s3.destination-bucket-1-region.amazonaws.com", "kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket1/key-prefix1*" ] } }, "Resource": [ "AWS KMS key ARNs (in the same AWS 區域 as destination bucket 1). Used to encrypt object replicas created in destination bucket 1." ] }, { "Action": ["kms:Encrypt"], "Effect": "Allow", "Condition": { "StringLike": { "kms:ViaService": "s3.destination-bucket-2-region.amazonaws.com", "kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket2/key-prefix1*" ] } }, "Resource": [ "AWS KMS key ARNs (in the same AWS 區域 as destination bucket 2). Used to encrypt object replicas created in destination bucket 2." ] } ] }
範例 – 複寫使用 SSE-S3 和 SSE-KMS 建立的物件

以下是完整的 IAM 政策,授予必要的許可,以複寫未加密的物件、使用 SSE-S3 建立的物件,以及使用 SSE-KMS 建立的物件。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetReplicationConfiguration", "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::amzn-s3-demo-source-bucket" ] }, { "Effect":"Allow", "Action":[ "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl" ], "Resource":[ "arn:aws:s3:::amzn-s3-demo-source-bucket/key-prefix1*" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete" ], "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/key-prefix1*" }, { "Action":[ "kms:Decrypt" ], "Effect":"Allow", "Condition":{ "StringLike":{ "kms:ViaService":"s3.source-bucket-region.amazonaws.com", "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::amzn-s3-demo-source-bucket/key-prefix1*" ] } }, "Resource":[ "List of the AWS KMS key ARNs that are used to encrypt source objects." ] }, { "Action":[ "kms:Encrypt" ], "Effect":"Allow", "Condition":{ "StringLike":{ "kms:ViaService":"s3.destination-bucket-region.amazonaws.com", "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::amzn-s3-demo-destination-bucket/prefix1*" ] } }, "Resource":[ "AWS KMS key ARNs (in the same AWS 區域 as the destination bucket) to use for encrypting object replicas" ] } ] }
範例 – 使用 S3 儲存貯體金鑰來複寫物件

以下是完整的 IAM 政策,授予使用 S3 儲存貯體金鑰複寫物件的必要許可。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetReplicationConfiguration", "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::amzn-s3-demo-source-bucket" ] }, { "Effect":"Allow", "Action":[ "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl" ], "Resource":[ "arn:aws:s3:::amzn-s3-demo-source-bucket/key-prefix1*" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete" ], "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/key-prefix1*" }, { "Action":[ "kms:Decrypt" ], "Effect":"Allow", "Condition":{ "StringLike":{ "kms:ViaService":"s3.source-bucket-region.amazonaws.com", "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::amzn-s3-demo-source-bucket" ] } }, "Resource":[ "List of the AWS KMS key ARNs that are used to encrypt source objects." ] }, { "Action":[ "kms:Encrypt" ], "Effect":"Allow", "Condition":{ "StringLike":{ "kms:ViaService":"s3.destination-bucket-region.amazonaws.com", "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::amzn-s3-demo-destination-bucket" ] } }, "Resource":[ "AWS KMS key ARNs (in the same AWS 區域 as the destination bucket) to use for encrypting object replicas" ] } ] }

跨帳戶案例之授予其他許可

在來源和目的地儲存貯體由不同 擁有的跨帳戶案例中 AWS 帳戶,您可以使用 KMS 金鑰加密物件複本。不過,KMS 金鑰擁有者必須授予來源儲存貯體擁有者使用 KMS 金鑰的許可。

注意

如果您需要複寫 SSE-KMS 資料跨帳戶,則複寫規則必須指定 AWS KMS 目的地帳戶的客戶受管金鑰AWS 受管金鑰 不允許跨帳戶使用,因此無法用於執行跨帳戶複寫。

授予來源儲存貯體擁有者使用 KMS 金鑰 (AWS KMS 主控台) 的許可
  1. 登入 AWS Management Console 並在 https://console.aws.amazon.com/kms 開啟 AWS KMS 主控台。

  2. 若要變更 AWS 區域,請使用頁面右上角的區域選取器。

  3. 若要檢視您所建立及管理帳戶中的金鑰,請在導覽窗格中選擇Customer managed keys (客戶受管金鑰)。

  4. 選擇 KMS 機碼。

  5. 一般組態下,選擇金鑰政策標籤。

  6. 向下捲動至其他 AWS 帳戶

  7. 選擇新增其他 AWS 帳戶

    其他 AWS 帳戶對話方塊隨即出現。

  8. 在對話方塊中,選擇新增另一個 AWS 帳戶。針對 arn:aws:iam::,輸入來源儲存貯體帳戶 ID。

  9. 選擇 Save changes (儲存變更)。

授予來源儲存貯體擁有者使用 KMS 金鑰的許可 (AWS CLI)

AWS KMS 交易配額考量

當您在啟用跨區域複寫 (CRR) 之後新增許多具有 AWS KMS 加密的新物件時,您可能會遇到限流 (HTTP 503 Service Unavailable錯誤)。當每秒 AWS KMS 交易數量超過目前配額時,即會發生限流。如需詳細資訊,請參閱《AWS Key Management Service 開發人員指南》中的配額

若要請求提升配額,請使用 Service Quotas。如需詳細資訊,請參閱請求增加配額。如果您的區域不支援 Service Quotas,請開啟 AWS Support 案例

啟用加密物件的複寫

根據預設,Amazon S3 不會複寫透過使用 AWS Key Management Service (AWS KMS) 金鑰 (SSE-KMS) 的伺服器端加密或使用 AWS KMS 金鑰 (DSSE-KMS) 的雙層伺服器端加密進行加密的物件。若要複寫使用 SSE-KMS 或 DSS-KMS 加密的物件,您必須修改儲存貯體複寫組態,以告知 Amazon S3 複寫這些物件。此範例說明如何使用 Amazon S3 主控台和 AWS Command Line Interface (AWS CLI) 變更儲存貯體複寫組態,以啟用複寫加密物件。

注意

當來源或目的地儲存貯體啟用 S3 儲存貯體金鑰時,加密內容將是儲存貯體的 Amazon Resource Name (ARN),而不是物件的 ARN。您必須更新您的 IAM 政策,才能將儲存貯體 ARN 用於加密內容。如需詳細資訊,請參閱S3 儲存貯體金鑰和複寫

注意

您可以在 Amazon S3 AWS KMS keys 中使用多區域。但是,Amazon S3 目前將多區域金鑰視為單區域金鑰,並且不使用金鑰的多區域功能。如需詳細資訊,請參閱 AWS Key Management Service 開發人員指南中的使用多區域金鑰

如需 step-by-step 指示,請參閱 為相同帳戶中的儲存貯體設定複寫。本主題提供在來源和目的地儲存貯體由相同和不同擁有時設定複寫組態的指示 AWS 帳戶。

若要使用 複寫加密的物件 AWS CLI,請執行下列動作:

  • 建立來源和目的地儲存貯體,並對這些儲存貯體啟用版本控制。

  • 建立 AWS Identity and Access Management (IAM) 服務角色,授予 Amazon S3 複寫物件的許可。IAM 角色的許可包括複寫加密物件的必要許可。

  • 將複寫組態新增至來源儲存貯體。複寫組態提供與使用 KMS 金鑰加密的複寫物件相關的資訊。

  • 將加密物件新增到來源儲存貯體。

  • 測試設定,確認您的加密物件正在複寫到目的地儲存貯體。

下列步驟將逐步引導您完成此程序。

複寫伺服器端加密物件 (AWS CLI)

若要使用此程序中的範例,請將 取代user input placeholders為您自己的資訊。

  1. 在此範例中,您可以建立兩個來源 (amzn-s3-demo-source-bucket) 和目的地 (amzn-s3-demo-destination-bucket) 儲存貯體 AWS 帳戶。您也會設定 AWS CLI的憑證描述檔。此範例使用描述檔名稱 acctA

    如需有關設定憑證設定檔和使用具名設定檔的資訊,請參閱 AWS Command Line Interface 使用者指南中的組態和憑證檔案設定

  2. 使用下列命令建立 amzn-s3-demo-source-bucket 儲存貯體並在其上啟用版本控制。下列範例命令會在美國東部 (維吉尼亞北部) (us-east-1) 區域中建立 amzn-s3-demo-source-bucket 儲存貯體。

    aws s3api create-bucket \ --bucket amzn-s3-demo-source-bucket \ --region us-east-1 \ --profile acctA
    aws s3api put-bucket-versioning \ --bucket amzn-s3-demo-source-bucket \ --versioning-configuration Status=Enabled \ --profile acctA
  3. 使用下列命令建立 amzn-s3-demo-destination-bucket 儲存貯體並在其上啟用版本控制。下列範例命令會在美國西部 (奧勒岡) (us-west-2) 區域中建立 amzn-s3-demo-destination-bucket 儲存貯體。

    注意

    若要在 amzn-s3-demo-source-bucketamzn-s3-demo-destination-bucket 儲存貯體位於同一個 AWS 帳戶時設定複寫組態,您可以使用同一個描述檔。此範例使用 acctA。若要在儲存貯體由不同 擁有時設定複寫 AWS 帳戶,您可以為每個儲存貯體指定不同的設定檔。

    aws s3api create-bucket \ --bucket amzn-s3-demo-destination-bucket \ --region us-west-2 \ --create-bucket-configuration LocationConstraint=us-west-2 \ --profile acctA
    aws s3api put-bucket-versioning \ --bucket amzn-s3-demo-destination-bucket \ --versioning-configuration Status=Enabled \ --profile acctA
  4. 接下來,您可以建立 IAM 服務角色。您將在稍後新增至儲存amzn-s3-demo-source-bucket貯體的複寫組態中指定此角色。Amazon S3 就會擔任此角色以代您複寫物件。您可以透過兩個步驟建立 IAM 角色:

    • 建立服務角色。

    • 將許可政策連接到角色。

    1. 若要建立 IAM 服務角色,請執行下列動作:

      1. 複製下列信任政策,並將它儲存至本機電腦目前目錄下的 s3-role-trust-policy-kmsobj.json 檔案中。此政策授予 Amazon S3 服務主體擔任 角色的許可,以便 Amazon S3 可以代表您執行任務。

        { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
      2. 使用以下命令來建立角色:

        $ aws iam create-role \ --role-name replicationRolekmsobj \ --assume-role-policy-document file://s3-role-trust-policy-kmsobj.json \ --profile acctA
    2. 接著,請將許可政策連接到角色。此政策會授予各種 Amazon S3 儲存貯體與物件動作的許可。

      1. 複製下列許可政策,並將它儲存至本機電腦目前目錄中名為 s3-role-permissions-policykmsobj.json 的檔案。您將建立 IAM 角色,稍後再將政策連接至該角色。

        重要

        在許可政策中,您可以指定要用於加密 amzn-s3-demo-source-bucketamzn-s3-demo-destination-bucket儲存貯體的 AWS KMS 金鑰 IDs。您必須為 amzn-s3-demo-source-bucketamzn-s3-demo-destination-bucket buckets. AWS KMS keys aren 建立兩個單獨的 KMS 金鑰,而不是在建立它們 AWS 區域 的 之外共用。

        { "Version":"2012-10-17", "Statement":[ { "Action":[ "s3:ListBucket", "s3:GetReplicationConfiguration", "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging" ], "Effect":"Allow", "Resource":[ "arn:aws:s3:::amzn-s3-demo-source-bucket", "arn:aws:s3:::amzn-s3-demo-source-bucket/*" ] }, { "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete", "s3:ReplicateTags" ], "Effect":"Allow", "Condition":{ "StringLikeIfExists":{ "s3:x-amz-server-side-encryption":[ "aws:kms", "AES256", "aws:kms:dsse" ], "s3:x-amz-server-side-encryption-aws-kms-key-id":[ "AWS KMS key IDs(in ARN format) to use for encrypting object replicas" ] } }, "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/*" }, { "Action":[ "kms:Decrypt" ], "Effect":"Allow", "Condition":{ "StringLike":{ "kms:ViaService":"s3.us-east-1.amazonaws.com", "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::amzn-s3-demo-source-bucket/*" ] } }, "Resource":[ "AWS KMS key IDs(in ARN format) used to encrypt source objects." ] }, { "Action":[ "kms:Encrypt" ], "Effect":"Allow", "Condition":{ "StringLike":{ "kms:ViaService":"s3.us-west-2.amazonaws.com", "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::amzn-s3-demo-destination-bucket/*" ] } }, "Resource":[ "AWS KMS key IDs (in ARN format) to use for encrypting object replicas" ] } ] }
      2. 建立政策,並將政策連接至角色。

        $ aws iam put-role-policy \ --role-name replicationRolekmsobj \ --policy-document file://s3-role-permissions-policykmsobj.json \ --policy-name replicationRolechangeownerPolicy \ --profile acctA
  5. 接著,請將下列複寫組態新增至 amzn-s3-demo-source-bucket 儲存貯體。該組態會指示 Amazon S3 使用 amzn-s3-demo-destination-bucket 儲存貯體的 Tax/ 字首複寫物件。

    重要

    在複寫組態中,您可以指定 Amazon S3 可以擔任的 IAM 角色。只有當您有 iam:PassRole 許可時才可執行此作業。您在 CLI 命令中指定的設定檔必須具有此許可。如需詳細資訊,請參閱 IAM 使用者指南中的授予使用者將角色傳遞至 的許可 AWS 服務

    <ReplicationConfiguration> <Role>IAM-Role-ARN</Role> <Rule> <Priority>1</Priority> <DeleteMarkerReplication> <Status>Disabled</Status> </DeleteMarkerReplication> <Filter> <Prefix>Tax</Prefix> </Filter> <Status>Enabled</Status> <SourceSelectionCriteria> <SseKmsEncryptedObjects> <Status>Enabled</Status> </SseKmsEncryptedObjects> </SourceSelectionCriteria> <Destination> <Bucket>arn:aws:s3:::amzn-s3-demo-destination-bucket</Bucket> <EncryptionConfiguration> <ReplicaKmsKeyID>AWS KMS key IDs to use for encrypting object replicas</ReplicaKmsKeyID> </EncryptionConfiguration> </Destination> </Rule> </ReplicationConfiguration>

    請執行下列操作,將複寫組態新增至 amzn-s3-demo-source-bucket 儲存貯體:

    1. AWS CLI 需要您將複寫組態指定為 JSON。將下列 JSON 儲存在本機電腦上目前目錄中的檔案 (replication.json) 中。

      { "Role":"IAM-Role-ARN", "Rules":[ { "Status":"Enabled", "Priority":1, "DeleteMarkerReplication":{ "Status":"Disabled" }, "Filter":{ "Prefix":"Tax" }, "Destination":{ "Bucket":"arn:aws:s3:::amzn-s3-demo-destination-bucket", "EncryptionConfiguration":{ "ReplicaKmsKeyID":"AWS KMS key IDs (in ARN format) to use for encrypting object replicas" } }, "SourceSelectionCriteria":{ "SseKmsEncryptedObjects":{ "Status":"Enabled" } } } ] }
    2. 編輯 JSON 以提供amzn-s3-demo-destination-bucket儲存貯體、 AWS KMS key IDs (in ARN format)和 的值IAM-role-ARN。儲存變更。

    3. 使用下列命令,將複寫組態新增至您的 amzn-s3-demo-source-bucket 儲存貯體。請務必提供 amzn-s3-demo-source-bucket 儲存貯體名稱。

      $ aws s3api put-bucket-replication \ --replication-configuration file://replication.json \ --bucket amzn-s3-demo-source-bucket \ --profile acctA
  6. 測試組態,確認已複寫加密的物件。在 Amazon S3 主控台中,執行下列操作:

    1. 登入 AWS Management Console 並在 Word 開啟 Amazon S3 主控台。 https://console.aws.amazon.com/s3/

    2. amzn-s3-demo-source-bucket 儲存貯體中,建立名為 Tax 的資料夾。

    3. 將範例物件新增至資料夾。請務必選擇加密選項,並指定您的 KMS 金鑰來加密物件。

    4. 確認儲存amzn-s3-demo-destination-bucket貯體包含物件複本,並使用您在組態中指定的 KMS 金鑰進行加密。如需詳細資訊,請參閱取得複寫狀態資訊

如需新增複寫組態的程式碼範例,請參閱 使用 AWS SDKs。您必須正確修改複寫組態。