本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
複寫加密物件 (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 金鑰,您將收到 HTTP200 OK
狀態碼以回應,但複寫失敗。
下列範例顯示複寫組態,其中包含選用組態元素。此複寫組態具有一項規則。該規則會套用至金鑰前綴為
的物件。Amazon S3 使用指定的 AWS KMS key ID 來加密這些物件複本。Tax
<?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:::</Bucket> <EncryptionConfiguration> <ReplicaKmsKeyID>
amzn-s3-demo-destination-bucket
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:Encrypt
和 kms: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:::
)。您必須更新您的 IAM 政策,才能將儲存貯體 ARN 用於加密內容:bucket_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:::
" ] }, { "Effect":"Allow", "Action":[ "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl" ], "Resource":[ "arn:aws:s3:::
amzn-s3-demo-source-bucket
/
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:::
" ] }, { "Effect":"Allow", "Action":[ "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl" ], "Resource":[ "arn:aws:s3:::
amzn-s3-demo-source-bucket
/
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:::" ] } }, "Resource":[ "
amzn-s3-demo-source-bucket
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:::" ] } }, "Resource":[ "
amzn-s3-demo-destination-bucket
AWS KMS key ARNs (in the same AWS 區域 as the destination bucket) to use for encrypting object replicas
" ] } ] }
跨帳戶案例之授予其他許可
在來源和目的地儲存貯體由不同 擁有的跨帳戶案例中 AWS 帳戶,您可以使用 KMS 金鑰加密物件複本。不過,KMS 金鑰擁有者必須授予來源儲存貯體擁有者使用 KMS 金鑰的許可。
授予來源儲存貯體擁有者使用 KMS 金鑰 (AWS KMS 主控台) 的許可
-
登入 AWS Management Console 並在 https://console.aws.amazon.com/kms
開啟 AWS KMS 主控台。 -
若要變更 AWS 區域,請使用頁面右上角的區域選取器。
-
若要檢視您所建立及管理帳戶中的金鑰,請在導覽窗格中選擇Customer managed keys (客戶受管金鑰)。
-
選擇 KMS 機碼。
-
在一般組態下,選擇金鑰政策標籤。
-
向下捲動至其他 AWS 帳戶。
-
選擇新增其他 AWS 帳戶。
其他 AWS 帳戶對話方塊隨即出現。
-
在對話方塊中,選擇新增另一個 AWS 帳戶。針對 arn:aws:iam::,輸入來源儲存貯體帳戶 ID。
-
選擇 Save changes (儲存變更)。
授予來源儲存貯體擁有者使用 KMS 金鑰的許可 (AWS CLI)
-
如需
put-key-policy
AWS Command Line Interface (AWS CLI) 命令的相關資訊,請參閱 put-key-policy 在 AWS CLI 命令參考中。如需基礎 APIPutKeyPolicy
操作的相關資訊,請參閱 PutKeyPolicy 在 AWS Key Management Service API 參考中。
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
-
在此範例中,您可以建立兩個來源 (
) 和目的地 (amzn-s3-demo-source-bucket
) 儲存貯體 AWS 帳戶。您也會設定 AWS CLI的憑證描述檔。此範例使用描述檔名稱amzn-s3-demo-destination-bucket
。acctA
如需有關設定憑證設定檔和使用具名設定檔的資訊,請參閱 AWS Command Line Interface 使用者指南中的組態和憑證檔案設定。
-
使用下列命令建立
儲存貯體並在其上啟用版本控制。下列範例命令會在美國東部 (維吉尼亞北部) (amzn-s3-demo-source-bucket
us-east-1
) 區域中建立
儲存貯體。amzn-s3-demo-source-bucket
aws s3api create-bucket \ --bucket
amzn-s3-demo-source-bucket
\ --regionus-east-1
\ --profileacctA
aws s3api put-bucket-versioning \ --bucket
amzn-s3-demo-source-bucket
\ --versioning-configuration Status=Enabled \ --profileacctA
-
使用下列命令建立
儲存貯體並在其上啟用版本控制。下列範例命令會在美國西部 (奧勒岡) (amzn-s3-demo-destination-bucket
us-west-2
) 區域中建立
儲存貯體。amzn-s3-demo-destination-bucket
注意
若要在
和amzn-s3-demo-source-bucket
儲存貯體位於同一個 AWS 帳戶時設定複寫組態,您可以使用同一個描述檔。此範例使用amzn-s3-demo-destination-bucket
。若要在儲存貯體由不同 擁有時設定複寫 AWS 帳戶,您可以為每個儲存貯體指定不同的設定檔。acctA
aws s3api create-bucket \ --bucket
amzn-s3-demo-destination-bucket
\ --regionus-west-2
\ --create-bucket-configuration LocationConstraint=us-west-2
\ --profileacctA
aws s3api put-bucket-versioning \ --bucket
amzn-s3-demo-destination-bucket
\ --versioning-configuration Status=Enabled \ --profileacctA
-
接下來,您可以建立 IAM 服務角色。您將在稍後新增至儲存
貯體的複寫組態中指定此角色。Amazon S3 就會擔任此角色以代您複寫物件。您可以透過兩個步驟建立 IAM 角色:amzn-s3-demo-source-bucket
-
建立服務角色。
-
將許可政策連接到角色。
-
若要建立 IAM 服務角色,請執行下列動作:
-
複製下列信任政策,並將它儲存至本機電腦目前目錄下的
檔案中。此政策授予 Amazon S3 服務主體擔任 角色的許可,以便 Amazon S3 可以代表您執行任務。s3-role-trust-policy-kmsobj
.json{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
-
使用以下命令來建立角色:
$
aws iam create-role \ --role-namereplicationRolekmsobj
\ --assume-role-policy-document file://s3-role-trust-policy-kmsobj
.json \ --profileacctA
-
-
接著,請將許可政策連接到角色。此政策會授予各種 Amazon S3 儲存貯體與物件動作的許可。
-
複製下列許可政策,並將它儲存至本機電腦目前目錄中名為
的檔案。您將建立 IAM 角色,稍後再將政策連接至該角色。s3-role-permissions-policykmsobj
.json重要
在許可政策中,您可以指定要用於加密
和amzn-s3-demo-source-bucket
儲存貯體的 AWS KMS 金鑰 IDs。您必須為amzn-s3-demo-destination-bucket
和amzn-s3-demo-source-bucket
buckets. AWS KMS keys aren 建立兩個單獨的 KMS 金鑰,而不是在建立它們 AWS 區域 的 之外共用。amzn-s3-demo-destination-bucket
{ "Version":"2012-10-17", "Statement":[ { "Action":[ "s3:ListBucket", "s3:GetReplicationConfiguration", "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging" ], "Effect":"Allow", "Resource":[ "arn:aws:s3:::
", "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":[ "amzn-s3-demo-source-bucket
AWS KMS key IDs(in ARN format) to use for encrypting object replicas
" ] } }, "Resource":"arn:aws:s3:::
/*" }, { "Action":[ "kms:Decrypt" ], "Effect":"Allow", "Condition":{ "StringLike":{ "kms:ViaService":"s3.amzn-s3-demo-destination-bucket
us-east-1
.amazonaws.com", "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::
/*" ] } }, "Resource":[ "amzn-s3-demo-source-bucket
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:::
/*" ] } }, "Resource":[ "amzn-s3-demo-destination-bucket
AWS KMS key IDs (in ARN format) to use for encrypting object replicas
" ] } ] } -
建立政策,並將政策連接至角色。
$
aws iam put-role-policy \ --role-namereplicationRolekmsobj
\ --policy-document file://s3-role-permissions-policykmsobj
.json \ --policy-namereplicationRolechangeownerPolicy
\ --profileacctA
-
-
-
接著,請將下列複寫組態新增至
儲存貯體。該組態會指示 Amazon S3 使用amzn-s3-demo-source-bucket
儲存貯體的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:::
</Bucket> <EncryptionConfiguration> <ReplicaKmsKeyID>amzn-s3-demo-destination-bucket
AWS KMS key IDs to use for encrypting object replicas
</ReplicaKmsKeyID> </EncryptionConfiguration> </Destination> </Rule> </ReplicationConfiguration>請執行下列操作,將複寫組態新增至
儲存貯體:amzn-s3-demo-source-bucket
-
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:::
", "EncryptionConfiguration":{ "ReplicaKmsKeyID":"amzn-s3-demo-destination-bucket
AWS KMS key IDs (in ARN format) to use for encrypting object replicas
" } }, "SourceSelectionCriteria":{ "SseKmsEncryptedObjects":{ "Status":"Enabled" } } } ] } -
編輯 JSON 以提供
儲存貯體、amzn-s3-demo-destination-bucket
和 的值AWS KMS key IDs (in ARN format)
。儲存變更。IAM-role-ARN
-
使用下列命令,將複寫組態新增至您的
儲存貯體。請務必提供amzn-s3-demo-source-bucket
儲存貯體名稱。amzn-s3-demo-source-bucket
$
aws s3api put-bucket-replication \ --replication-configuration file://replication
.json \ --bucket
\ --profileamzn-s3-demo-source-bucket
acctA
-
-
測試組態,確認已複寫加密的物件。在 Amazon S3 主控台中,執行下列操作:
登入 AWS Management Console 並在 Word 開啟 Amazon S3 主控台。 https://console.aws.amazon.com/s3/
-
在
儲存貯體中,建立名為amzn-s3-demo-source-bucket
的資料夾。Tax
-
將範例物件新增至資料夾。請務必選擇加密選項,並指定您的 KMS 金鑰來加密物件。
-
確認儲存
貯體包含物件複本,並使用您在組態中指定的 KMS 金鑰進行加密。如需詳細資訊,請參閱取得複寫狀態資訊。amzn-s3-demo-destination-bucket
如需新增複寫組態的程式碼範例,請參閱 使用 AWS SDKs。您必須正確修改複寫組態。