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

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

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

重要

Amazon S3 現在會使用 Amazon S3 受管金鑰 (SSE-S3) 套用伺服器端加密,做為 Amazon S3 中每個儲存貯體的加密基礎層級。從 2023 年 1 月 5 日起,所有上傳到 Amazon S3 的新物件都會自動加密,無需額外費用,也不會影響效能。S3 儲存貯體預設加密組態和新物件上傳的自動加密狀態可用於 AWS CloudTrail 日誌、S3 庫存、S3 儲存鏡頭、Amazon S3 主控台,以及和中的額外 Amazon S3 API 回應標頭 AWS SDKs。 AWS Command Line Interface 如需詳細資訊,請參閱預設加密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 指示的範例,請參閱啟用加密物件的複寫。如需建立複寫組態的資訊,請參閱 複製物件概觀

注意

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

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

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

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

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

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

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

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

如果新上傳的 SSE-C 加密物件符合資格,S3 複寫會自動複寫,如 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金鑰必須是有效的。作PutBucketReplicationAPI業不會檢查KMS金鑰的有效性。如果您使用的KMS金鑰無效,您會收到HTTP200 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. (S3 uses this key to encrypt object replicas.)</ReplicaKmsKeyID> </EncryptionConfiguration> </Destination> <SourceSelectionCriteria> <SseKmsEncryptedObjects> <Status>Enabled</Status> </SseKmsEncryptedObjects> </SourceSelectionCriteria> </Rule> </ReplicationConfiguration>

授與IAM角色的其他權限

若要使用 SSE-S3、SSE-或 DSSE-KMS 複寫靜態加密的物件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 加密的物件,但不能複寫使用KMS金鑰 (SSE-或-KMS) 加密的物件。DSSE KMS

  • kms:Decryptkms:Encrypt AWS KMS KMS鍵的動作

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

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

  • kms:GenerateDataKey複寫純文字物件的動作 — 如果您要將純文字物件複製到預設已啟用KMS或DSSEKMS加密的值區,則必須在原則中包含目的地加密內容和金鑰的kms:GenerateDataKey權限。SSE KMS IAM

建議您使用條件索引鍵,僅限於目的地值區和物 AWS KMS 件的這些權限。擁 AWS 帳戶 有IAM角色的權限必須具有原則中所列KMS金鑰的kms:Encryptkms:Decrypt動作的權限。如果KMS金鑰由另一個金鑰所擁有 AWS 帳戶,則KMS金鑰的擁有者必須將這些權限授與擁有 AWS 帳戶 該IAM角色的擁有者。如需有關管理這些KMS金鑰存取權的詳細資訊,請參閱 AWS Key Management Service 開發人員指南 AWS KMS中的搭配使用IAM原則

S3 儲存貯體金鑰和複寫

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

為來源或目標儲存貯體啟用 S3 儲存貯體金鑰時,加密內容將是儲存貯體的 Amazon 資源名稱 (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)(在「使用 RESTAPI」一節中)和啟用 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 並開啟 AWS KMS 主控台,網址為 https://console.aws.amazon.com/kms

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

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

  4. 選擇 KMS 機碼。

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

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

  7. 選擇 [新增其他] AWS 帳戶。

    這時系統顯示 AWS 帳戶 「其他」對話框

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

  9. 選擇儲存變更

授與來源值區擁有者使用KMS金鑰的權限 (AWS CLI)

AWS KMS 交易配額考量

當您在啟用跨區域複寫 (CRR) 之後新增許多具有 AWS KMS 加密功能的新物件時,您可能會遇到節流 (HTTP503 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) 變更儲存貯體複寫組態以啟用複寫加密物件。

如需詳細資訊,請參閱 複寫加密物件 (-SSE C、SSE-S3、SSE-KMS、DSSE-) KMS

注意

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

注意

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

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

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

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

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

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

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

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

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

複寫伺服器端加密物件 (AWS CLI)
  1. 在此範例中,您會同時建立 amzn-s3-demo-source-bucket 以及 amzn-s3-demo-destination-bucket 桶在同一個 AWS 帳戶。您也會設定 AWS CLI的憑證描述檔。此範例使用描述檔名稱 acctA

    如需有關設定認證設定檔的詳細資訊,請參閱 AWS Command Line Interface 使用指南中的具名設定檔。若要在此範例中使用命令,請以您的資訊取代 user input placeholders

  2. 使用下列指令建立 DOC-EXAMPLE-SOURCE-BUCKET 桶並在其上啟用版本控制。下列範例指令會建立 DOC-EXAMPLE-SOURCE-BUCKET 位於美國東部 (維吉尼亞北部) (us-east-1) 區域的值區。

    aws s3api create-bucket \ --bucket DOC-EXAMPLE-SOURCE-BUCKET \ --region us-east-1 \ --profile acctA
    aws s3api put-bucket-versioning \ --bucket DOC-EXAMPLE-SOURCE-BUCKET \ --versioning-configuration Status=Enabled \ --profile acctA
  3. 使用下列指令建立 DOC-EXAMPLE-DESTINATION-BUCKET 桶並在其上啟用版本控制。下列範例指令會建立 DOC-EXAMPLE-DESTINATION-BUCKET 位於美國西部 (奧勒岡) (us-west-2) 區域的值區。

    注意

    若要同時設定複製組態 DOC-EXAMPLE-SOURCE-BUCKET 以及 DOC-EXAMPLE-DESTINATION-BUCKET 桶是在相同的 AWS 帳戶,你使用相同的配置文件。在此範例中,我們使用 acctA. 若要在儲存貯體屬於不同 AWS 帳戶時設定複寫,則需為每個儲存貯體指定不同的描述檔。

    aws s3api create-bucket \ --bucket DOC-EXAMPLE-DESTINATION-BUCKET \ --region us-west-2 \ --create-bucket-configuration LocationConstraint=us-west-2 \ --profile acctA
    aws s3api put-bucket-versioning \ --bucket DOC-EXAMPLE-DESTINATION-BUCKET \ --versioning-configuration Status=Enabled \ --profile acctA
  4. 接下來,您建立IAM服務角色。您將在新增至 DOC-EXAMPLE-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角色並在稍後將原則附加至該角色。

        重要

        在權限原則中,您可以指IDs定將用於amzn-s3-demo-source-bucketamzn-s3-demo-destination-bucket值區加密的 AWS KMS 金鑰。您必須為amzn-s3-demo-source-bucket和建立兩個單獨的KMS金鑰 amzn-s3-demo-destination-bucket 水桶。 AWS KMS keys 不會在建立它們 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命令中指定的設定檔必須具有此權限。有關詳情,請參閱《使用指南》中的授與使用者將角色傳遞給某 AWS 服務個IAM使用者的權限。

    <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內容儲存在本機電腦目前目錄中的 file (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-bucketAWS 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 並開啟 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。您必須正確修改複寫組態。

如需相關概念資訊,請參閱 複寫加密物件 (-SSE C、SSE-S3、SSE-KMS、DSSE-) KMS