設定即時複寫的許可 - Amazon Simple Storage Service

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

設定即時複寫的許可

設定 Amazon S3 中的即時複寫時,您必須用以下方式取得必要的許可:

  • Amazon S3 需要許可,才能代您複寫物件。您可以透過建立 AWS Identity and Access Management (IAM) 角色,然後在複寫組態中指定該角色來授予這些許可。

  • 當來源與目的地儲存貯體的擁有者是不同的帳戶時,目的地儲存貯體的擁有者也必須將存放複本的許可授予來源儲存貯體擁有者。

建立 IAM 角色

根據預設,所有 Amazon S3 資源 (儲存貯體、物件與相關子資源) 皆為私有,且只有資源擁有者才可存取該資源。Amazon S3 需要從來源儲存貯體讀取和複寫物件的許可。您可建立 IAM 角色並在您的複寫組態中指定該角色,以授予這些許可。

本節說明附加至此 IAM 角色的信任政策與最低必要許可政策。這些範例演練提供建立 IAM 角色的逐步說明。如需詳細資訊,請參閱設定即時複寫的範例

信任政策會識別哪些主體身分可以擔任 IAM 角色。許可政策會指定 IAM 角色可以在哪些條件下對哪些資源執行的動作。

  • 下列範例顯示信任政策,其中您將 Amazon S3 識別為可擔任該角色的 AWS 服務 委託人:

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
  • 以下範例顯示信任政策,您可以在其中將 Amazon S3 和 S3 批次操作識別為可擔任該角色的服務主體。如果您要建立批次複寫任務,請使用此操作。如需詳細資訊,請參閱為新複寫規則或目的地建立批次複寫任務

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

    如需 IAM 角色的詳細資訊,請參閱 IAM 使用者指南中的 IAM 角色

  • 下列範例顯示許可政策,您可以在其中授予 IAM 角色許可來代您執行複寫作業。當 Amazon S3 擔任該角色時,即具備您在此政策中指定的許可。在這項政策中,amzn-s3-demo-source-bucket 是來源儲存貯體,amzn-s3-demo-destination-bucket 是目的地儲存貯體。

    { "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", "s3:GetObjectVersionTagging" ], "Resource":[ "arn:aws:s3:::amzn-s3-demo-source-bucket/*" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete", "s3:ReplicateTags" ], "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/*" } ] }

    許可政策會授予執行下列動作的許可:

    • s3:GetReplicationConfigurations3:ListBucket – 針對 amzn-s3-demo-source-bucket 儲存貯體的這些動作的許可,允許 Amazon S3 擷取複寫組態並列出儲存貯體內容。(目前的許可模型需要 s3:ListBucket 許可以存取刪除標記。)

    • s3:GetObjectVersionForReplications3:GetObjectVersionAcl – 所有物件上授予的這些動作許可,其允許 Amazon S3 取得特定物件版本以及與物件相關聯的存取控制清單 (ACL)。

    • s3:ReplicateObjects3:ReplicateDeleteamzn-s3-demo-destination-bucket 儲存貯體的所有物件上這些動作的許可,其允許 Amazon S3 將物件或刪除標記複寫至目的地儲存貯體。如需刪除標記的資訊,請參閱 刪除操作對複寫的影響

      注意

      amzn-s3-demo-destination-bucket 儲存貯體上 s3:ReplicateObject 動作的許可也允許複寫物件標籤和 ACL 等中繼資料。因此,您不需要明確授予 s3:ReplicateTags 動作的許可。

    • s3:GetObjectVersionTagging – 針對 amzn-s3-demo-source-bucket 儲存貯體內物件之這項動作的許可,可讓 Amazon S3 讀取要複寫的物件標籤。如需物件標籤的詳細資訊,請參閱 使用標籤分類儲存空間。如果 Amazon S3 不具備 s3:GetObjectVersionTagging 許可,則會複寫物件,但不會複寫物件標籤。

    如需 Amazon S3 動作清單,請參閱服務授權參考中的適用於 Amazon S3 的動作、資源和條件金鑰

    如需依 S3 資源類型列出 S3 API 操作許可的詳細資訊,請參閱Amazon S3 API 操作所需的許可

    重要

    AWS 帳戶 擁有 IAM 角色的 必須具有授予 IAM 角色之動作的許可。

    例如,假設來源儲存貯體包含另一個 AWS 帳戶所擁有的物件。物件的擁有者必須透過物件的存取控制清單 (ACLs),明確授予 AWS 帳戶 擁有 IAM 角色的必要許可。否則,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:GetObjectRetentions3:GetObjectLegalHold。若該角色有 s3:Get* 許可陳述式,該陳述式即符合需求。如需詳細資訊,請參閱搭配 S3 複寫使用物件鎖定

當來源和目的地儲存貯體由不同 擁有時授予許可 AWS 帳戶

當來源與目的地儲存貯體的擁有者是不同的帳戶時,目的地儲存貯體的擁有者也必須新增儲存貯體政策,以將執行複寫動作的許可授予來源儲存貯體擁有者,如下列範例所示。在此政策範例中,amzn-s3-demo-destination-bucket 是目的地儲存貯體。

您也可以使用 Amazon S3 主控台自動為您產生此儲存貯體政策。如需詳細資訊,請參閱允許從來源儲存貯體接收所複寫物件

注意

角色的 ARN 格式出現時可能會有所不同。如果使用主控台建立角色,ARN 格式為 arn:aws:iam::account-ID:role/service-role/role-name。如果角色是使用 建立的 AWS CLI,則 ARN 格式為 arn:aws:iam::account-ID:role/role-name。如需詳細資訊,請參閱《IAM 使用者指南》中的 IAM 角色

{ "Version":"2012-10-17", "Id":"PolicyForDestinationBucket", "Statement":[ { "Sid":"Permissions on objects", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::source-bucket-account-ID:role/service-role/source-account-IAM-role" }, "Action":[ "s3:ReplicateDelete", "s3:ReplicateObject" ], "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/*" }, { "Sid":"Permissions on bucket", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::source-bucket-account-ID:role/service-role/source-account-IAM-role" }, "Action": [ "s3:List*", "s3:GetBucketVersioning", "s3:PutBucketVersioning" ], "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket" } ] }

如需範例,請參閱「設定不同帳戶內的儲存貯體複寫」。

如果來源儲存貯體中的物件已標記,請注意下列情況:

  • 如果來源儲存貯體擁有者將 s3:GetObjectVersionTaggings3:ReplicateTags 動作的許可授予 Amazon S3 來複寫物件標籤 (透過 IAM 角色),Amazon S3 會連同物件一起複寫標籤。如需 IAM 角色的資訊,請參閱 建立 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:GetObjectRetentions3:GetObjectLegalHold。若該角色有 s3:Get* 許可陳述式,該陳述式即符合需求。如需詳細資訊,請參閱搭配 S3 複寫使用物件鎖定

允許從來源儲存貯體接收複寫的物件

您可以快速產生所需的政策,以透過 Amazon S3 主控台從來源儲存貯體接收複寫物件,而不是手動將上述政策新增至目的地儲存貯體。

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

  2. 在左側導覽窗格中,選擇 Buckets (儲存貯體)。

  3. Buckets (儲存貯體) 清單中,選擇您要作為目的地儲存貯體的儲存貯體。

  4. 選擇 Management (管理) 標籤,然後向下捲動至 Replication rules (複寫規則)

  5. 針對 Actions (動作),選擇 Receive replicated objects (接收複寫物件)

    遵循提示並輸入來源儲存貯體帳戶的 AWS 帳戶 ID,然後選擇產生政策。主控台隨即產生 Amazon S3 儲存貯體政策和 KMS 金鑰政策。

  6. 若要將此政策新增到現有儲存貯體政策,請選擇 Apply settings (套用設定),或選擇 Copy (複製) 手動複製變更。

  7. (選用) 在 主控台中將 AWS KMS 政策複製到您想要的 AWS Key Management Service KMS 金鑰政策。

變更複本擁有權

當不同的 AWS 帳戶 擁有來源和目的地儲存貯體時,您可以告知 Amazon S3 將複本的擁有權變更為 AWS 帳戶 擁有目的地儲存貯體的 。如需擁有者覆寫的詳細資訊,請參閱 變更複本擁有者

授予 S3 批次操作的許可

S3 批次複寫可讓您複寫下列物件:

  • 在設定複寫組態之前已存在的物件

  • 先前已複寫的物件

  • 複寫失敗的物件

在新複寫組態中建立第一項規則或透過 Amazon S3 主控台將新目的地新增到現有組態時,您可以建立一次性的批次複寫任務。您也可以藉由建立批次操作任務,為現有複寫組態啟動批次複寫。

如需批次複寫 IAM 角色和政策範例,請參閱設定 S3 批次複寫的 IAM 角色