設定許可 - Amazon Simple Storage Service

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

設定許可

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

  • Amazon S3 需要許可,才能代您複寫物件。您可建立 IAM 角色並在您的複寫組態中指定此角色以授予這些許可。

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

建立 IAM 角色

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

本節說明信任政策與最低必要許可政策。範例逐步解 step-by-step 說提供建立 IAM 角色的指示。如需詳細資訊,請參閱 逐步解說:設定複寫的範例

  • 以下範例顯示信任政策,您可以在其中將 Amazon S3 識別為可擔任該角色的服務主體。

    { "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 角色

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

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetReplicationConfiguration", "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::DOC-EXAMPLE-BUCKET1" ] }, { "Effect":"Allow", "Action":[ "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging" ], "Resource":[ "arn:aws:s3:::DOC-EXAMPLE-BUCKET1/*" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete", "s3:ReplicateTags" ], "Resource":"arn:aws:s3:::DOC-EXAMPLE-BUCKET2/*" } ] }

    存取政策會授予下列動作的許可:

    • s3:GetReplicationConfigurations3:ListBucketDOC-EXAMPLE-BUCKET1 儲存貯體 (來源儲存貯體) 上這些動作的許可允許 Amazon S3 擷取複寫組態並列出儲存貯體內容。(目前的許可模型需要 s3:ListBucket 許可以存取刪除標記。)

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

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

      注意

      DOC-EXAMPLE-BUCKET2 儲存貯體 (目的地儲存貯體) 上 s3:ReplicateObject 動作的許可也允許複寫物件標籤和 ACL 等中繼資料。因此,您不需要明確授予 s3:ReplicateTags 動作的許可。

    • s3:GetObjectVersionTaggingDOC-EXAMPLE-BUCKET1 儲存貯體 (來源儲存貯體) 中物件上這個動作的許可,其允許 Amazon S3 讀取要複寫的物件標籤。如需詳細資訊,請參閱 使用標籤分類儲存空間。如果 Amazon S3 不具備這些許可,則會複寫物件,但不會複寫物件標籤。

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

    重要

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

    例如,假設來源儲存貯體包含另一個 AWS 帳戶所擁有的物件。物件的擁有者必須透過物件 ACL 明確授與擁有 IAM 角色的必要權限。 AWS 帳戶 否則,Amazon S3 就無法存取這些物件,而導致物件的複寫失敗。如需 ACL 許可的資訊,請參閱「存取控制清單 (ACL) 概觀」。

    此處描述的許可與基本複寫組態相關。如果您選擇新增額外的複寫組態,則必須將額外許可授予給 Amazon S3。如需詳細資訊,請參閱 其他複寫組態

當來源和目的地值區屬於不同的值區時,授與權限 AWS 帳戶

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

注意

角色的 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::SourceBucket-account-ID:role/service-role/source-account-IAM-role" }, "Action":[ "s3:ReplicateDelete", "s3:ReplicateObject" ], "Resource":"arn:aws:s3:::DOC-EXAMPLE-BUCKET2/*" }, { "Sid":"Permissions on bucket", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::SourceBucket-account-ID:role/service-role/source-account-IAM-role" }, "Action": [ "s3:List*", "s3:GetBucketVersioning", "s3:PutBucketVersioning" ], "Resource":"arn:aws:s3:::DOC-EXAMPLE-BUCKET2" } ] }

如需範例,請參閱當不同帳戶擁有來源與目的地儲存貯體時設定複寫

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

  • 如果來源儲存貯體擁有者將 s3:GetObjectVersionTaggings3:ReplicateTags 動作的許可授予 Amazon S3 來複寫物件標籤 (透過 IAM 角色),Amazon S3 會連同物件一起複寫標籤。如需 IAM 角色的資訊,請參閱 建立 IAM 角色

  • 如果目的地儲存貯體擁有者不想要複寫標籤,擁有者可以將下列陳述式新增至目的地儲存貯體政策,以明確拒絕 s3:ReplicateTags 動作的許可。在此政策中,DOC-EXAMPLE-BUCKET2 是目的地儲存貯體。

    ... "Statement":[ { "Effect":"Deny", "Principal":{ "AWS":"arn:aws:iam::SourceBucket-account-id:role/service-role/source-account-IAM-role" }, "Action":"s3:ReplicateTags", "Resource":"arn:aws:s3:::DOC-EXAMPLE-BUCKET2/*" } ] ...

授予 S3 批次操作的許可

S3 批次複寫讓您能夠複寫在複寫組態就位之前就存在的物件、以前已複寫過的物件以及複寫失敗的物件。在新複寫組態中建立第一項規則或透過  AWS Management Console 將新目的地新增到現有組態時,您可以建立一次性的批次複寫任務。您也可以藉由建立批次操作任務,為現有複寫組態啟動批次複寫。

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

變更複本擁有權

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

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

您可以透過 AWS Management Console快速產生允許接收來自來源儲存貯體的複寫物件所需的政策。

  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 KMS 原則複製到 AWS Key Management Service 主控台上所需的 KMS 金鑰原則。