

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 管理员设置
<a name="s3-admin-setup"></a>

在用户创建 Amazon S3 集成和知识库之前，Amazon Quick 管理员必须完成以下设置任务。

## 授予亚马逊快速访问亚马逊 S3 存储桶的权限
<a name="s3-grant-bucket-access"></a>

授予亚马逊快速访问您的组织所需的 Amazon S3 存储桶的权限。无论存储桶位于同一个账户还是不同的 Amazon 账户中，这都适用。

1. 在 Amazon Quick 管理控制台的 “**权限**” 下，选择**Amazon 资源**。

1. 在 “**允许访问和自动发现这些资源**” 下，选中 **Amazon S3** 复选框。

1. 选择**选择 S3 存储桶**。

1. 在**选择 Amazon S3 存储桶**对话框中，选择与您的存储桶位置相匹配的选项卡：
   + 与@@ **快速账户关联的 S3 存储桶** — 从列表中选择您希望 Amazon Quick 访问的存储桶。默认情况下，选定的存储桶具有只读权限。
   + **您可以访问的 S3 存储桶 Amazon** — 对于跨账户存储桶，请确保账户所有者已授权您的账户。选择**使用其他存储桶**，输入存储桶名称，然后选择**添加 S3 存储桶**。

1. （可选）对于跨账户存储桶，请选择**限制知识库创建者对存储桶的访问**权限以限制访问权限，以便只有创建知识库的用户才能使用存储桶。

1. 选择**结束**。

现在，用户可以在创建知识库期间访问选定的存储桶。

## 准备 IAM 角色和策略设置
<a name="s3-integration-authentication"></a>

Amazon S3 集成使用 Amazon 身份验证来访问您的亚马逊 S3 存储桶。在用户设置集成之前，请准备好您的 IAM 角色和策略配置。

### 所需的 IAM 权限
<a name="s3-integration-iam-permissions"></a>

请确保您的 Amazon 账户具有以下对 Amazon S3 存储桶的最低权限：
+ `s3:GetObject`— 读取存储桶中的对象。
+ `s3:ListBucket`— 列出存储桶内容。
+ `s3:GetBucketLocation`— 获取存储桶区域信息。
+ `s3:GetObjectVersion`— 获取对象版本。
+ `s3:ListBucketVersions`— 列出存储桶版本。

### 为跨账户访问配置 Amazon S3 存储桶权限
<a name="s3-cross-account-bucket-policy"></a>

如果您使用其他 Amazon 账户访问 Amazon S3 存储桶，则必须在源 Amazon 账户中配置 IAM 策略。

**配置 Amazon S3 存储桶权限以进行跨账户访问**

1. 登录包含 Amazon S3 存储桶的账户的 Amazon 管理控制台。

1. 打开 Amazon S3 控制台，网址为 [https://console.aws.amazon.com/s3/](https://console.amazonaws.cn/s3/)。

1. 选择您要授予访问权限的存储桶。

1. 选择 **Permissions**，然后选择 **Bucket Policy**。

1. 添加包含以下元素的存储桶策略：
   + `Version`— 设置为 “2012-10-17”
   + `Statement`— 包含政策声明的数组，其中包含：
     + `Sid`— “AllowQuickSuiteS3Access”
     + `Effect`— “允许”
     + `Principal`— 您账户中的 Amazon Amazon Quick 服务角色的 ARN。例如，校长应如下所示：` "Principal": { "AWS": "arn:aws:iam::<quick_account_id>:role/service-role/aws-quicksight-service-role-v0" }`
     + `Action`— Amazon S3 权限数组：s3: GetObject、s3: ListBucket、s3:、s3: GetBucketLocation、s3: GetObjectVersion、s3：ListBucketVersions
     + `Resource`— “\$1”（适用于当前密钥），Amazon S3 存储桶路径应如下所示：`"Resource": [ "arn:aws:s3:::bucket_name"]`

1. 选择**保存更改**。

### 配置 KMS 密钥权限（如果您的存储桶使用加密）
<a name="s3-kms-permissions"></a>

如果您的 Amazon S3 存储桶使用 Amazon KMS 加密，请完成以下步骤。

**配置 KMS 密钥权限**

1. 在 [https://console.aws.amazon.com/](https://console.amazonaws.cn/kms)km Amazon s 上打开密钥管理服务 (Amazon KMS) 控制台。

1. 选择用于加密您的 Amazon S3 存储桶的 KMS 密钥。

1. 选择**密钥策略**，然后选择**编辑**。

1. 在密钥策略中添加包含以下结构元素的声明：
   + `Sid` – "AllowQuickSuiteKMSAccess"
   + `Effect`— “允许”
   + `Principal`— 您账户中的 Amazon Amazon Quick 服务角色的 ARN。例如，校长应如下所示：` "Principal": { "AWS": "arn:aws:iam::<quick_account_id>:role/service-role/aws-quicksight-service-role-v0" }`
   + `Action`— KMS 权限数组： kms:解密， kms:DescribeKey
   + `Resource`— “\$1”（适用于当前密钥），Amazon S3 存储桶路径应如下所示：`"Resource": [ "arn:aws:s3:::bucket_name"]`

1. 选择**保存更改**。

1. 等待 2-3 分钟，让策略更改传播。

## 在 Amazon Quick 中配置 Amazon S3 连接器的 VPC 访问权限
<a name="s3-vpc-support"></a>

VPC 权限可确保 Amazon Quick 只能通过安全的 VPC 或 VPC 终端节点连接访问您的 Amazon S3 存储桶。

### 必要的政策变更
<a name="s3-vpc-required-policy"></a>

将此声明添加到您的存储桶访问策略中，以允许 Amazon Quick 通过 VPC 终端节点访问您的存储桶：

```
{
  "Sid": "Allow-Quick-access"		 	 	 ,
  "Principal": "arn:aws:iam::Quick Account:role/service-role/aws-quicksight-service-role-v0",
  "Action": "s3:*",
  "Effect": "Allow",
  "Resource": [
    "arn:aws:s3:::amzn-s3-demo-bucket",
    "arn:aws:s3:::amzn-s3-demo-bucket/*"
  ],
  "Condition": {
    "Null": {
      "aws:SourceVpce": "false"
    }
  }
}
```
+ 将 `amzn-s3-demo-bucket`替换为存储桶名称。
+ `Quick Account`用您的 Amazon Quick 账户替换。

该`"aws:SourceVpce": "false"`条件可确保 Amazon Quick 只能通过 VPC 终端节点访问您的存储桶，从而满足您的安全要求。

### 拒绝策略
<a name="s3-vpc-deny-policies"></a>

如果您的存储桶的策略通过拒绝策略限制流向特定 VPC 或 VPC 终端节点，则必须撤消此政策，因为拒绝策略优先于允许策略。

例如：

```
{
   "Version":"2012-10-17"		 	 	 ,                   
   "Id": "Policy1415115909152",
   "Statement": [
     {
       "Sid": "Access-to-specific-VPCE-only",
       "Principal": "*",
       "Action": "s3:*",
       "Effect": "Deny",
       "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket",
                    "arn:aws:s3:::amzn-s3-demo-bucket/*"],
       "Condition": {
         "StringNotEquals": {
           "aws:SourceVpce": "vpce-0abcdef1234567890"
         }
       }
     }
   ]
}
```

应反转为：

```
{
   "Version":"2012-10-17"		 	 	 ,                   
   "Id": "Policy1415115909152",
   "Statement": [
     {
       "Sid": "Access-to-specific-VPCE-only",
       "Principal": "*",
       "Action": "s3:*",
       "Effect": "Allow",
       "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket",
                    "arn:aws:s3:::amzn-s3-demo-bucket/*"],
       "Condition": {
         "StringEquals": {
           "aws:SourceVpce": "vpce-0abcdef1234567890"
         }
       }
     }
   ]
}
```

### 最佳实践
<a name="s3-vpc-best-practices"></a>

**限制访问您的 Amazon Quick 角色**

访问策略应强制要求来电者是你的 Amazon Quick 角色 ARN，或者至少是你的 Amazon Quick 账户。这样可以确保尽管允许 VPC 流量，但呼叫仅来自预期来源。

### 安全建议
<a name="s3-vpc-security-recommendations"></a>
+ 将策略限制在您的 Amazon Quick 角色上，以获得最安全的流量
+ 定期查看您的存储桶策略，确保它们遵循最低权限原则

## 通过 IAM 策略分配限制 Amazon S3 存储桶的访问权限
<a name="s3-restrict-bucket-access"></a>

您可以通过创建 IAM 策略并通过 Amazon Quick IAM 策略分配将其分配给特定用户、群组或所有用户，来控制您的 Amazon Quick 用户可以使用哪些 Amazon S3 存储桶来创建知识库。这允许您限制谁可以针对特定的存储分区创建知识库，包括支持 ACL 的知识库。

**注意**  
通过 Amazon Quick 分配的 IAM 策略优先于 Amazon 资源级策略。为确保满足您的访问要求，请适当配置您的 IAM 策略。

例如，您可以为需要访问支持 ACL 的存储桶的特定用户分配限制性策略，同时为非 ACL 存储桶的所有用户分配更广泛的策略。

### 步骤 1：在 IAM 中创建 Amazon S3 访问策略
<a name="s3-create-iam-policy"></a>

在 IAM 控制台中创建一个 Amazon IAM 策略，定义用户可以访问哪些 Amazon S3 存储桶来创建知识库。以下示例策略授予对两个特定存储桶的访问权限：

```
{
    "Version": "2012-10-17"		 	 	 ,
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:ListAllMyBuckets",
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Action": [
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-1",
                "arn:aws:s3:::amzn-s3-demo-bucket-2"
            ]
        },
        {
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-1/*",
                "arn:aws:s3:::amzn-s3-demo-bucket-2/*"
            ]
        },
        {
            "Action": [
                "s3:ListBucketMultipartUploads",
                "s3:GetBucketLocation"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-1",
                "arn:aws:s3:::amzn-s3-demo-bucket-2"
            ]
        },
        {
            "Action": [
                "s3:PutObject",
                "s3:AbortMultipartUpload",
                "s3:ListMultipartUploadParts"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-1/*",
                "arn:aws:s3:::amzn-s3-demo-bucket-2/*"
            ]
        }
    ]
}
```

将`amzn-s3-demo-bucket-1`和`amzn-s3-demo-bucket-2`替换为您想要授予访问权限的 Amazon S3 存储桶的名称。

### 第 2 步：在 Amazon Quick 中分配策略
<a name="s3-assign-iam-policy"></a>

创建 IAM 策略后，将其分配给 Amazon Quick 用户或群组。

1. 在 Amazon Quick 管理控制台的 “**权限**” 下，选择 **IAM 策略分配**。

1. 选择 “**添加新作业”**。

1. 输入任务的名称。

1. 在**选择 IAM 策略**页面上，搜索并选择您在步骤 1 中创建的 IAM 策略。选择**下一步**。

1. 在**分配用户和群组**页面上，选择以下选项之一：
   + 选择 “**分配给所有用户和群组**”，将该策略应用于所有当前和未来的用户。
   + 搜索并选择要向其分配策略的特定用户或组。

   选择**下一步**。

1. 在 “**查看并启用更改**” 页面上，验证您的任务详细信息，然后选择 “**保存并启用**”。

未通过 IAM 策略分配明确授予访问权限的用户将无法访问受限的 Amazon S3 存储桶来创建集成或知识库。