設定即時複寫的許可
設定 Amazon S3 中的即時複寫時,您必須用以下方式取得必要的許可:
-
您必須授予建立複寫規則的 AWS Identity and Access Management (IAM) 主體 (使用者或角色) 一組特定許可。
-
Amazon S3 需要許可,才能代您複寫物件。您可建立 IAM 角色並在您的複寫組態中指定此角色以授予這些許可。
-
當來源與目的地儲存貯體的擁有者是不同的帳戶時,目的地儲存貯體的擁有者也必須將存放複本的許可授予來源儲存貯體擁有者。
注意
如果您使用 S3 Batch Operations 隨需複寫物件,而不是設定即時複寫,S3 批次複寫需要不同的 IAM 角色和政策。如需批次複寫 IAM 角色和政策範例,請參閱設定 S3 批次複寫的 IAM 角色。
主題
步驟 1:將許可權授予建立複寫規則的 IAM 主體
您將用來建立複寫規則的 IAM 使用者或角色需要許可權,才能為單向或雙向複寫建立複寫規則。如果使用者或角色沒有這些許可權,您將無法建立複寫規則。如需詳細資訊,請參閱《IAM 使用者指南》中的 IAM 識別碼。
使用者或角色需要下列動作:
iam:AttachRolePolicyiam:CreatePolicyiam:CreateServiceLinkedRoleiam:PassRoleiam:PutRolePolicys3:GetBucketVersionings3:GetObjectVersionAcls3:GetObjectVersionForReplications3:GetReplicationConfigurations3:PutReplicationConfiguration
以下是包含這些動作的範例 IAM 政策。
步驟 2:為 Amazon S3 建立要擔任的 IAM 角色
根據預設,所有 Amazon S3 資源 (儲存貯體、物件與相關子資源) 皆為私有,且只有資源擁有者才可存取該資源。Amazon S3 需要從來源儲存貯體讀取和複寫物件的許可。您可建立 IAM 角色並在您的複寫組態中指定該角色,以授予這些許可。
本節說明附加至此 IAM 角色的信任政策與最低必要許可政策。這些範例演練提供建立 IAM 角色的逐步說明。如需更多詳細資訊,請參閱 設定即時複寫的範例。
注意
如果您使用主控台建立複寫組態,建議您略過本節,改為讓主控台為您建立此 IAM 角色和必要的信任和許可政策。
信任政策會識別哪些主體身分可以擔任 IAM 角色。許可政策會指定 IAM 角色可以在哪些條件下對哪些資源執行的動作。
-
以下範例顯示信任政策,您可以在其中將 Amazon S3 識別為可擔任該角色的 AWS 服務 主體:
-
以下範例顯示信任政策,您可以在其中將 Amazon S3 和 S3 批次操作識別為可擔任該角色的服務主體。如果您要建立批次複寫任務,請使用此操作。如需更多詳細資訊,請參閱 為新複寫規則或目的地建立批次複寫任務。
如需 IAM 角色的詳細資訊,請參閱《IAM 使用者指南》中的 IAM 角色。
-
下列範例顯示許可政策,您可以在其中授予 IAM 角色許可來代您執行複寫作業。當 Amazon S3 擔任該角色時,即具備您在此政策中指定的許可。在這項政策中,
是來源儲存貯體,amzn-s3-demo-source-bucket是目的地儲存貯體。amzn-s3-demo-destination-bucket許可政策會授予執行下列動作的許可:
-
s3:GetReplicationConfiguration和s3:ListBucket– 針對儲存貯體的這些動作的許可,允許 Amazon S3 擷取複寫組態並列出儲存貯體內容。(目前的許可模型需要amzn-s3-demo-source-buckets3:ListBucket許可以存取刪除標記。) -
s3:GetObjectVersionForReplication與s3:GetObjectVersionAcl– 所有物件上授予的這些動作許可,其允許 Amazon S3 取得特定物件版本以及與物件相關聯的存取控制清單 (ACL)。 -
s3:ReplicateObject與s3:ReplicateDelete–儲存貯體的所有物件上這些動作的許可,其允許 Amazon S3 將物件或刪除標記複寫至目的地儲存貯體。如需刪除標記的資訊,請參閱 刪除操作對複寫的影響。amzn-s3-demo-destination-bucket注意
儲存貯體上amzn-s3-demo-destination-buckets3:ReplicateObject動作的許可也允許複寫物件標籤和 ACL 等中繼資料。因此,您不需要明確授予s3:ReplicateTags動作的許可。 -
s3:GetObjectVersionTagging– 針對儲存貯體內物件之這項動作的許可,可讓 Amazon S3 讀取要複寫的物件標籤。如需物件標籤的詳細資訊,請參閱 使用標籤為物件分類。如果 Amazon S3 不具備amzn-s3-demo-source-buckets3:GetObjectVersionTagging許可,則會複寫物件,但不會複寫物件標籤。
如需 Amazon S3 動作清單,請參閱服務授權參考中的適用於 Amazon S3 的動作、資源和條件金鑰。
如需依 S3 資源類型列出 S3 API 操作許可的詳細資訊,請參閱Amazon S3 API 操作所需的許可。
重要
擁有 IAM 角色的 AWS 帳戶 必須具備授予 IAM 角色的動作許可。
例如,假設來源儲存貯體包含另一個 AWS 帳戶 所擁有的物件。物件擁有者必須透過物件存取控制清單 (ACL),將必要的許可明確授予擁有 IAM 角色的 AWS 帳戶。否則,Amazon S3 就無法存取這些物件,而導致物件的複寫失敗。如需 ACL 許可的資訊,請參閱「存取控制清單 (ACL) 概觀」。
此處描述的許可與基本複寫組態相關。如果您選擇新增額外的複寫組態,則必須將額外許可權授予 Amazon S3。
-
若要複寫加密物件,您也需要授予必要的 AWS Key Management Service (AWS KMS) 金鑰許可。如需更多詳細資訊,請參閱 複寫加密的物件 (SSE-S3、SSE-KMS、DSSE-KMS、SSE-C)。
-
若要使用物件鎖定搭配複寫,您必須在用於設定複寫的 AWS Identity and Access Management (IAM) 角色中,於來源 S3 儲存貯體上授予兩項額外的許可。這兩項額外的許可為
s3:GetObjectRetention和s3:GetObjectLegalHold。若該角色有s3:Get*許可陳述式,該陳述式即符合需求。如需更多詳細資訊,請參閱 搭配 S3 複寫使用物件鎖定。
-
(選用) 步驟 3:在來源與目的地儲存貯體分屬於不同 AWS 帳戶 時授予許可
當來源與目的地儲存貯體的擁有者是不同的帳戶時,目的地儲存貯體的擁有者也必須新增儲存貯體政策,以將執行複寫動作的許可授予來源儲存貯體擁有者,如下列範例所示。在此政策範例中, 是目的地儲存貯體。amzn-s3-demo-destination-bucket
您也可以使用 Amazon S3 主控台自動為您產生此儲存貯體政策。如需詳細資訊,請參閱允許從來源儲存貯體接收所複寫物件。
注意
角色的 ARN 格式出現時可能會有所不同。如果使用主控台建立角色,ARN 格式為 arn:aws:iam::。如果使用 AWS CLI 建立角色,ARN 格式為 account-ID:role/service-role/role-namearn:aws:iam::。如需詳細資訊,請參閱《IAM 使用者指南》中的 IAM 角色。account-ID:role/role-name
如需範例,請參閱「設定不同帳戶內的儲存貯體複寫」。
如果來源儲存貯體中的物件已標記,請注意下列情況:
-
如果來源儲存貯體擁有者將
s3:GetObjectVersionTagging與s3:ReplicateTags動作的許可授予 Amazon S3 來複寫物件標籤 (透過 IAM 角色),Amazon S3 會連同物件一起複寫標籤。如需 IAM 角色的資訊,請參閱 步驟 2:為 Amazon S3 建立要擔任的 IAM 角色。 -
如果目的地儲存貯體擁有者不想要複寫標籤,擁有者可以將下列陳述式新增至目的地儲存貯體政策,以明確拒絕
s3:ReplicateTags動作的許可。在此政策中,是目的地儲存貯體。amzn-s3-demo-destination-bucket... "Statement":[ { "Effect":"Deny", "Principal":{ "AWS":"arn:aws:iam::source-bucket-account-id:role/service-role/source-account-IAM-role" }, "Action":"s3:ReplicateTags", "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/*" } ] ...
注意
-
如果您想要複寫加密的物件,您還必須授予必要的 AWS Key Management Service(AWS KMS) 金鑰許可。如需更多詳細資訊,請參閱 複寫加密的物件 (SSE-S3、SSE-KMS、DSSE-KMS、SSE-C)。
-
若要使用物件鎖定搭配複寫,您必須在用於設定複寫的 AWS Identity and Access Management (IAM) 角色中,於來源 S3 儲存貯體上授予兩項額外的許可。這兩項額外的許可為
s3:GetObjectRetention和s3:GetObjectLegalHold。若該角色有s3:Get*許可陳述式,該陳述式即符合需求。如需更多詳細資訊,請參閱 搭配 S3 複寫使用物件鎖定。
允許從來源儲存貯體接收複寫的物件
您可以快速產生所需的政策,以透過 Amazon S3 主控台從來源儲存貯體接收複寫物件,而不是手動將上述政策新增至目的地儲存貯體。
登入 AWS 管理主控台,並開啟位於 https://console.aws.amazon.com/s3/
的 Amazon S3 主控台。 -
在左側導覽窗格中,選擇 Buckets (儲存貯體)。
-
在 Buckets (儲存貯體) 清單中,選擇您要作為目的地儲存貯體的儲存貯體。
-
選擇 Management (管理) 標籤,然後向下捲動至 Replication rules (複寫規則)。
-
針對 Actions (動作),選擇 Receive replicated objects (接收複寫物件)。
按照提示進行,輸入來源儲存貯體帳戶的 AWS 帳戶 ID,然後選擇產生政策。主控台隨即產生 Amazon S3 儲存貯體政策和 KMS 金鑰政策。
-
若要將此政策新增到現有儲存貯體政策,請選擇 Apply settings (套用設定),或選擇 Copy (複製) 手動複製變更。
-
(選用) 在 AWS Key Management Service 主控台內將 AWS KMS 政策複製到所需的 KMS 金鑰政策。
(選用) 步驟 4:授予變更複本擁有權的許可
如果來源與目的地儲存貯體的擁有者是不同的 AWS 帳戶,您可以告知 Amazon S3 將複本擁有者變更為擁有目的地儲存貯體的 AWS 帳戶。若要覆寫複本的擁有權,您必須授予一些額外的許可,或調整目的地儲存貯體的 S3 物件擁有權設定。如需擁有者覆寫的詳細資訊,請參閱 變更複本擁有者。