

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

# 設定對 Amazon S3 儲存貯體的存取權
<a name="aurora-export-snapshot.Setup"></a>

識別出 Amazon S3 儲存貯體後，接著授予快照許可以存取該儲存貯體。

**Topics**
+ [識別要匯出的 Amazon S3 儲存貯體](#aurora-export-snapshot.SetupBucket)
+ [使用 IAM 角色提供對 Amazon S3 儲存貯體的存取權](#aurora-export-snapshot.SetupIAMRole)
+ [使用跨帳戶 Amazon S3 儲存貯體](#aurora-export-snapshot.Setup.XAcctBucket)
+ [使用跨帳戶 AWS KMS key](#aurora-export-snapshot.CMK)

## 識別要匯出的 Amazon S3 儲存貯體
<a name="aurora-export-snapshot.SetupBucket"></a>

識別要匯出資料庫快照的目標 Amazon S3 儲存貯體。使用現有的 S3 儲存貯體或建立新的 S3 儲存貯體。

**注意**  
要匯出至 的 S3 儲存貯體必須與快照位於相同的 AWS 區域。

如需使用 Amazon S3 儲存貯體的詳細資訊，請參閱《*Amazon Simple Storage Service 使用者指南*》中的下列內容：
+ [ 如何檢視 S3 儲存貯體的屬性？](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/view-bucket-properties.html)
+ [ 如何啟用 Amazon S3 儲存貯體的預設加密？](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/default-bucket-encryption.html)
+ [ 如何建立 S3 儲存貯體？](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html)

## 使用 IAM 角色提供對 Amazon S3 儲存貯體的存取權
<a name="aurora-export-snapshot.SetupIAMRole"></a>

在您將資料庫快照資料匯出至 Amazon S3 前，請給予快照匯出任務對 Amazon S3 儲存貯體的存取許可。

若要授予此許可，請建立提供儲存貯體之存取權的 IAM 政策，然後建立 IAM 角色並將該政策附加至其中。稍後，您可以將 IAM 角色指派給快照匯出任務。

**重要**  
如果您打算使用 AWS 管理主控台 匯出快照，您可以選擇在匯出快照時自動建立 IAM 政策和角色。如需說明，請參閱[建立快照匯出任務](aurora-export-snapshot.Exporting.md)。

**給予資料庫快照任務對 Amazon S3 的存取權限**

1. 建立 IAM 政策。此政策會提供儲存貯體和物件許可，允許您的快照匯出任務存取 Amazon S3。

   在政策中，包含下列必要動作，以允許將檔案從 Amazon Aurora 傳輸至 S3 儲存貯體：
   + `s3:PutObject*`
   + `s3:GetObject*` 
   + `s3:ListBucket` 
   + `s3:DeleteObject*`
   +  `s3:GetBucketLocation`

   在政策中，包含下列資源，以識別 S3 儲存貯體和該儲存貯體中的物件。以下資源清單會顯示用於存取 Amazon S3 的 Amazon Resource Name (ARN) 格式。
   + `arn:aws:s3:::{{amzn-s3-demo-bucket}}`
   + `arn:aws:s3:::{{amzn-s3-demo-bucket}}/*`

   如需為 Amazon Aurora 建立 IAM 政策的詳細資訊，請參閱 [建立並使用 IAM 政策進行 IAM 資料庫存取](UsingWithRDS.IAMDBAuth.IAMPolicy.md)。另請參閱《*IAM 使用者指南*》中的[教學：建立和連接您的第一個客戶受管原則](https://docs.aws.amazon.com//IAM/latest/UserGuide/tutorial_managed-policies.html)。

   下列 AWS CLI 命令會使用這些選項建立名為 `ExportPolicy`的 IAM 政策。其將存取權授予名為 {{amzn-s3-demo-bucket}} 的儲存貯體。
**注意**  
在您建立政策後，請記下政策的 ARN。在後續步驟中將政策附加至 IAM 角色時，您會需要此 ARN。

   ```
   aws iam create-policy  --policy-name ExportPolicy --policy-document '{
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ExportPolicy",
               "Effect": "Allow",
               "Action": [
                   "s3:PutObject*",
                   "s3:ListBucket",
                   "s3:GetObject*",
                   "s3:DeleteObject*",
                   "s3:GetBucketLocation"
               ],
               "Resource": [
                   "arn:aws:s3:::{{amzn-s3-demo-bucket}}",
                   "arn:aws:s3:::{{amzn-s3-demo-bucket}}/*"
               ]
           }
       ]
   }'
   ```

1. 建立 IAM 角色，讓 Aurora 可以代表您擔任此 IAM 角色，以存取您的 Amazon S3 儲存貯體。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[建立角色以將許可委派給 IAM 使用者](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html)。

   下列範例顯示使用 AWS CLI 命令來建立名為 的角色`rds-s3-export-role`。

   ```
   aws iam create-role  --role-name rds-s3-export-role  --assume-role-policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
               "Service": "export.rds.amazonaws.com"
             },
            "Action": "sts:AssumeRole"
          }
        ] 
      }'
   ```

1. 將您建立的 IAM 政策附加至您建立的 IAM 角色。

   下列 AWS CLI 命令會將先前建立的政策連接至名為 的角色`rds-s3-export-role`。將 `{{your-policy-arn}}` 取代成您在稍早步驟中記下的政策 ARN。

   ```
   aws iam attach-role-policy  --policy-arn {{your-policy-arn}}  --role-name rds-s3-export-role
   ```

## 使用跨帳戶 Amazon S3 儲存貯體
<a name="aurora-export-snapshot.Setup.XAcctBucket"></a>

您可以跨 AWS 帳戶使用 Amazon S3 儲存貯體。若要使用跨帳戶儲存貯體，請新增儲存貯體政策，以將存取權授予您用於 S3 匯出的 IAM 角色。如需詳細資訊，請參閱[範例 2：儲存貯體擁有者授予跨帳戶儲存貯體許可](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access-example2.html)。新增儲存貯體政策
+ 將儲存貯體政策附加至您的儲存貯體，如下列範例所示。

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Principal": {
                  "AWS": "arn:aws:iam::{{123456789012}}:role/Admin"
              },
              "Action": [
                  "s3:PutObject*",
                  "s3:ListBucket",
                  "s3:GetObject*",
                  "s3:DeleteObject*",
                  "s3:GetBucketLocation"
              ],
              "Resource": [
                  "arn:aws:s3:::{{amzn-s3-demo-destination-bucket}}",
                  "arn:aws:s3:::{{amzn-s3-demo-destination-bucket}}/*"
              ]
          }
      ]
  }
  ```

------

## 使用跨帳戶 AWS KMS key
<a name="aurora-export-snapshot.CMK"></a>

您可以使用跨帳戶 AWS KMS key 來加密 Amazon S3 匯出。首先，將金鑰政策新增至本機帳戶，然後在外部帳戶中新增 IAM 政策。如需詳細資訊，請參閱[允許其他帳戶中的使用者使用 KMS 金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html)。

**使用跨帳戶 KMS 金鑰**

1. 將金鑰政策新增至本機帳戶。

   下列範例將本機帳戶 123456789012 中的許可給予外部帳戶 444455556666 中的 `ExampleRole` 和 `ExampleUser`。

   ```
   {
       "Sid": "Allow an external account to use this KMS key",
       "Effect": "Allow",
       "Principal": {
           "AWS": [
               "arn:aws:iam::444455556666:role/ExampleRole",
               "arn:aws:iam::444455556666:user/ExampleUser"
           ]
       },
       "Action": [
           "kms:Encrypt",
           "kms:Decrypt",
           "kms:ReEncrypt*",
           "kms:GenerateDataKey*",
           "kms:CreateGrant",
           "kms:DescribeKey",
           "kms:RetireGrant"
       ],
       "Resource": "*"
   }
   ```

1. 將 IAM 政策新增至外部帳戶。

   以下 IAM 政策範例允許委託人使用帳戶 123456789012 中的 KMS 金鑰來進行密碼編譯操作。若要提供此許可給帳戶 444455556666 中的 `ExampleRole` 和 `ExampleUser`，請在該帳戶中[附加政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#attach-managed-policy-console)給他們。

   ```
   {
       "Sid": "Allow use of KMS key in account 123456789012",
       "Effect": "Allow",
       "Action": [
           "kms:Encrypt",
           "kms:Decrypt",
           "kms:ReEncrypt*",
           "kms:GenerateDataKey*",
           "kms:CreateGrant",
           "kms:DescribeKey",
           "kms:RetireGrant"
       ],
       "Resource": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"
   }
   ```