

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

# 設定即時複寫的許可
<a name="setting-repl-config-perm-overview"></a>

設定 Amazon S3 中的即時複寫時，您必須用以下方式取得必要的許可：
+ 您必須授予建立複寫規則的 AWS Identity and Access Management (IAM) 委託人 （使用者或角色） 一組特定許可。
+ Amazon S3 需要許可，才能代您複寫物件。您可建立 IAM 角色並在您的複寫組態中指定此角色以授予這些許可。
+ 當來源與目的地儲存貯體的擁有者是不同的帳戶時，目的地儲存貯體的擁有者也必須將存放複本的許可授予來源儲存貯體擁有者。

**注意**  
如果您使用 S3 Batch Operations 隨需複寫物件，而不是設定即時複寫，S3 批次複寫需要不同的 IAM 角色和政策。如需批次複寫 IAM 角色和政策範例，請參閱[設定 S3 批次複寫的 IAM 角色](s3-batch-replication-policies.md)。

**Topics**
+ [步驟 1：將許可權授予建立複寫規則的 IAM 主體](#setting-repl-config-role)
+ [步驟 2：為 Amazon S3 建立要擔任的 IAM 角色](#setting-repl-config-same-acctowner)
+ [（選用） 步驟 3：在來源和目的地儲存貯體由不同 擁有時授予許可 AWS 帳戶](#setting-repl-config-crossacct)
+ [(選用) 步驟 4：授予變更複本擁有權的許可](#change-replica-ownership)

## 步驟 1：將許可權授予建立複寫規則的 IAM 主體
<a name="setting-repl-config-role"></a>

您將用來建立複寫規則的 IAM 使用者或角色需要許可權，才能為單向或雙向複寫建立複寫規則。如果使用者或角色沒有這些許可權，您將無法建立複寫規則。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [IAM 識別碼](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html)。

使用者或角色需要下列動作：
+ `iam:AttachRolePolicy`
+ `iam:CreatePolicy`
+ `iam:CreateServiceLinkedRole`
+ `iam:PassRole`
+ `iam:PutRolePolicy`
+ `s3:GetBucketVersioning`
+ `s3:GetObjectVersionAcl`
+ `s3:GetObjectVersionForReplication`
+ `s3:GetReplicationConfiguration`
+ `s3:PutReplicationConfiguration`

以下是包含這些動作的範例 IAM 政策。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetAccessPoint",
                "s3:GetAccountPublicAccessBlock",
                "s3:GetBucketAcl",
                "s3:GetBucketLocation",
                "s3:GetBucketPolicyStatus",
                "s3:GetBucketPublicAccessBlock",
                "s3:ListAccessPoints",
                "s3:ListAllMyBuckets",
                "s3:PutReplicationConfiguration",
                "s3:GetReplicationConfiguration",
                "s3:GetBucketVersioning",
                "s3:GetObjectVersionForReplication",
                "s3:GetObjectVersionAcl",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:GetObjectVersion",
                "s3:GetBucketOwnershipControls",
                "s3:PutBucketOwnershipControls",
                "s3:GetObjectLegalHold",
                "s3:GetObjectRetention",
                "s3:GetBucketObjectLockConfiguration"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket1-*",
                "arn:aws:s3:::amzn-s3-demo-bucket2-*/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:List*AccessPoint*",
                "s3:GetMultiRegion*"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:Get*",
                "iam:CreateServiceLinkedRole",
                "iam:CreateRole",
                "iam:PassRole"
            ],
            "Resource": "arn:aws:iam::*:role/service-role/s3*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:List*"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:AttachRolePolicy",
                "iam:PutRolePolicy",
                "iam:CreatePolicy"
              ],
            "Resource": [
                "arn:aws:iam::*:policy/service-role/s3*",
                "arn:aws:iam::*:role/service-role/s3*"
            ]
        }
    ]
}
```

------

## 步驟 2：為 Amazon S3 建立要擔任的 IAM 角色
<a name="setting-repl-config-same-acctowner"></a>



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

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

**注意**  
如果您使用主控台建立複寫組態，建議您略過本節，改為讓主控台為您建立此 IAM 角色和必要的信任和許可政策。

*信任政策*會識別哪些主體身分可以擔任 IAM 角色。*許可政策*會指定 IAM 角色可以在哪些條件下對哪些資源執行的動作。
+ 下列範例顯示*信任政策*，其中您將 Amazon S3 識別為可擔任該角色的 AWS 服務 委託人：

------
#### [ JSON ]

****  

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

------
+ 以下範例顯示*信任政策*，您可以在其中將 Amazon S3 和 S3 批次操作識別為可擔任該角色的服務主體。如果您要建立批次複寫任務，請使用此操作。如需詳細資訊，請參閱[為新複寫規則或目的地建立批次複寫任務](s3-batch-replication-new-config.md)。

------
#### [ JSON ]

****  

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

------

  如需 IAM 角色的詳細資訊，請參閱 *IAM 使用者指南*中的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)。
+ 下列範例顯示*許可政策*，您可以在其中授予 IAM 角色許可來代您執行複寫作業。當 Amazon S3 擔任該角色時，即具備您在此政策中指定的許可。在這項政策中，`{{amzn-s3-demo-source-bucket}}` 是來源儲存貯體，`{{amzn-s3-demo-destination-bucket}}` 是目的地儲存貯體。

------
#### [ JSON ]

****  

  ```
  {
     "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:GetReplicationConfiguration` 和 `s3:ListBucket` – 針對 `{{amzn-s3-demo-source-bucket}}` 儲存貯體的這些動作的許可，允許 Amazon S3 擷取複寫組態並列出儲存貯體內容。(目前的許可模型需要 `s3:ListBucket` 許可以存取刪除標記。)
  + `s3:GetObjectVersionForReplication` 與 `s3:GetObjectVersionAcl` – 所有物件上授予的這些動作許可，其允許 Amazon S3 取得特定物件版本以及與物件相關聯的存取控制清單 (ACL)。

    
  + `s3:ReplicateObject` 與 `s3:ReplicateDelete` – `{{amzn-s3-demo-destination-bucket}}` 儲存貯體的所有物件上這些動作的許可，其允許 Amazon S3 將物件或刪除標記複寫至目的地儲存貯體。如需刪除標記的資訊，請參閱 [刪除操作對複寫的影響](replication-what-is-isnot-replicated.md#replication-delete-op)。
**注意**  
`{{amzn-s3-demo-destination-bucket}}` 儲存貯體上 `s3:ReplicateObject` 動作的許可也允許複寫物件標籤和 ACL 等中繼資料。因此，您不需要明確授予 `s3:ReplicateTags` 動作的許可。
  + `s3:GetObjectVersionTagging` – 針對 `{{amzn-s3-demo-source-bucket}}` 儲存貯體內物件之這項動作的許可，可讓 Amazon S3 讀取要複寫的物件標籤。如需物件標籤的詳細資訊，請參閱 [使用標籤為物件分類](object-tagging.md)。如果 Amazon S3 不具備 `s3:GetObjectVersionTagging` 許可，則會複寫物件，但不會複寫物件標籤。

  如需 Amazon S3 動作清單，請參閱服務授權參考**中的[適用於 Amazon S3 的動作、資源和條件金鑰](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html#list_amazons3-actions-as-permissions)。

  如需依 S3 資源類型列出 S3 API 操作許可的詳細資訊，請參閱[Amazon S3 API 操作所需的許可](using-with-s3-policy-actions.md)。
**重要**  
 AWS 帳戶 擁有 IAM 角色的 必須具有授予 IAM 角色之動作的許可。  
例如，假設來源儲存貯體包含另一個 AWS 帳戶所擁有的物件。物件的擁有者必須透過物件的存取控制清單 (ACLs)，明確授予 AWS 帳戶 擁有 IAM 角色的必要許可。否則，Amazon S3 就無法存取這些物件，而導致物件的複寫失敗。如需 ACL 許可的資訊，請參閱「[存取控制清單 (ACL) 概觀](acl-overview.md)」。  
  
此處描述的許可與基本複寫組態相關。如果您選擇新增額外的複寫組態，則必須將額外許可權授予 Amazon S3。  
若要複寫加密物件，您也需要授予必要的 AWS Key Management Service (AWS KMS) 金鑰許可。如需詳細資訊，請參閱[複寫加密的物件 (SSE-S3、SSE-KMS、DSSE-KMS、SSE-C)](replication-config-for-kms-objects.md)。
若要搭配複寫使用物件鎖定，您必須在用於設定複寫的 AWS Identity and Access Management (IAM) 角色中授予來源 S3 儲存貯體的兩個額外許可。這兩項額外的許可為 `s3:GetObjectRetention` 和 `s3:GetObjectLegalHold`。若該角色有 `s3:Get*` 許可陳述式，該陳述式即符合需求。如需詳細資訊，請參閱[搭配 S3 複寫使用物件鎖定](object-lock-managing.md#object-lock-managing-replication)。

## （選用） 步驟 3：在來源和目的地儲存貯體由不同 擁有時授予許可 AWS 帳戶
<a name="setting-repl-config-crossacct"></a>

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

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

**注意**  
角色的 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 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html)。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "PolicyForDestinationBucket",
    "Statement": [
        {
            "Sid": "Permissions on objects",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::{{111122223333}}:{{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::{{111122223333}}:{{role/service-role/source-account-IAM-role}}"
            },
            "Action": [
                "s3:List*",
                "s3:GetBucketVersioning",
                "s3:PutBucketVersioning"
            ],
            "Resource": "arn:aws:s3:::{{amzn-s3-demo-destination-bucket}}"
        }
    ]
}
```

------

如需範例，請參閱 [設定不同帳戶內的儲存貯體複寫](replication-walkthrough-2.md)。

如果來源儲存貯體中的物件已標記，請注意下列情況：
+ 如果來源儲存貯體擁有者將 `s3:GetObjectVersionTagging` 與 `s3:ReplicateTags` 動作的許可授予 Amazon S3 來複寫物件標籤 (透過 IAM 角色)，Amazon S3 會連同物件一起複寫標籤。如需 IAM 角色的資訊，請參閱 [步驟 2：為 Amazon S3 建立要擔任的 IAM 角色](#setting-repl-config-same-acctowner)。
+ 如果目的地儲存貯體擁有者不想要複寫標籤，擁有者可以將下列陳述式新增至目的地儲存貯體政策，以明確拒絕 `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)](replication-config-for-kms-objects.md)。
若要搭配複寫使用物件鎖定，您必須在用於設定複寫的 AWS Identity and Access Management (IAM) 角色中授予來源 S3 儲存貯體的兩個額外許可。這兩項額外的許可為 `s3:GetObjectRetention` 和 `s3:GetObjectLegalHold`。若該角色有 `s3:Get*` 許可陳述式，該陳述式即符合需求。如需詳細資訊，請參閱[搭配 S3 複寫使用物件鎖定](object-lock-managing.md#object-lock-managing-replication)。

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

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) 開啟 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇 **Buckets** (儲存貯體)。

1. 在 **Buckets (儲存貯體)** 清單中，選擇您要作為目的地儲存貯體的儲存貯體。

1. 選擇 **Management (管理)** 標籤，然後向下捲動至 **Replication rules (複寫規則)**。

1. 針對 **Actions (動作)**，選擇 **Receive replicated objects (接收複寫物件)**。

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

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

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

## (選用) 步驟 4：授予變更複本擁有權的許可
<a name="change-replica-ownership"></a>

當不同的 AWS 帳戶 擁有來源和目的地儲存貯體時，您可以指示 Amazon S3 將複本的擁有權變更為 AWS 帳戶 擁有目的地儲存貯體的 。若要覆寫複本的擁有權，您必須授予一些額外的許可，或調整目的地儲存貯體的 S3 物件擁有權設定。如需擁有者覆寫的詳細資訊，請參閱 [變更複本擁有者](replication-change-owner.md)。