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

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

設定即時複寫的許可

在 Amazon S3 中設定即時複寫時,您必須取得必要的許可,如下所示:

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

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

建立IAM角色

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

本節說明信任政策和連接到此IAM角色的最低必要許可政策。範例演練提供 step-by-step建立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動作的許可也允許複寫中繼資料,例如物件標籤和 ACLs。因此,您不需要明確授予 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 帳戶所擁有的物件。物件的擁有者必須透過物件的存取控制清單 () AWS 帳戶 ,明確授予擁有IAM角色所需許可的 ACLs。否則,Amazon S3 就無法存取這些物件,而導致物件的複寫失敗。如需有關ACL許可的資訊,請參閱 存取控制清單 (ACL) 概觀

    此處描述的許可與基本複寫組態相關。如果您選擇新增額外的複寫組態,則必須將額外許可授予給 Amazon S3。例如,如果您想要複寫加密的物件,您也需要授予必要的 AWS Key Management Service (AWS KMS) 金鑰許可。如需詳細資訊,請參閱複寫加密的物件 (SSE-S3、SSE-KMS、DSSE-KMS、SSE-C)

當來源和目的地儲存貯體由不同 擁有時授予許可 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" } ] }

如需範例,請參閱為不同帳戶中的儲存貯體設定複寫

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

  • 如果來源儲存貯體擁有者授予 Amazon S3 許可,讓 s3:GetObjectVersionTaggings3:ReplicateTags動作複寫物件標籤 (透過 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)

啟用從來源儲存貯體接收複寫物件

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

  1. 登入 AWS Management Console 並在 開啟 Amazon S3 主控台https://console.aws.amazon.com/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 Key Management Service 主控台中將 AWS KMS 政策複製到所需的KMS金鑰政策。

變更複本擁有權

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

授予 S3 批次操作的許可

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

  • 在複寫組態到位之前存在的物件

  • 先前已複寫的物件

  • 複寫失敗的物件

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

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