

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

# 使用 IAM Identity Center 设置 Amazon S3 访问权限管控
<a name="tip-tutorial-s3"></a>

[Amazon S3 Access Grants](https://docs.aws.amazon.com//AmazonS3/latest/userguide/access-grants-get-started.html) 提供灵活的基于身份的细粒度访问控制能力，可用于授权访问 S3 位置。您可以通过 Amazon S3 Access Grants，直接向企业用户和组授予 Amazon S3 存储桶的访问权限。按照以下步骤启用 S3 Access Grants 与 IAM Identity Center 的集成，实现可信身份传播。

## 先决条件
<a name="tip-tutorial-s3-prereqs"></a>

在开始本教程之前，您需要设置以下方面：
+ [启用 IAM 身份中心](enable-identity-center.md)。建议使用[组织实例](organization-instances-identity-center.md)。有关更多信息，请参阅 [先决条件和注意事项](trustedidentitypropagation-overall-prerequisites.md)。

## 通过 IAM Identity Center 配置可信身份传播的 S3 访问权限管控
<a name="tip-tutorial-s3-configure"></a>

**如果您已创建 Amazon S3 Access Grants 实例且已注册位置，请执行以下步骤：**

1. [关联您的 IAM Identity Center 实例](https://docs.aws.amazon.com//AmazonS3/latest/userguide/access-grants-instance-idc.html)。

1. [创建授权](#tip-tutorial-s3-create-grant)。

**如果您尚未创建 Amazon S3 Access Grants，请执行以下步骤：**

1. [https://docs.aws.amazon.com//AmazonS3/latest/userguide/access-grants-instance-create.html](https://docs.aws.amazon.com//AmazonS3/latest/userguide/access-grants-instance-create.html)-您可以为每个Access Grants实例创建一个 S3 实例 AWS 区域。创建 S3 Access Grants 实例时，请务必勾选**添加 IAM Identity Center 实例**选项框，并提供您的 IAM Identity Center 实例 ARN。选择**下一步**。

   下图展示了 Amazon S3 Access Grants 控制台中的“创建 S3 Access Grants 实例”页面：  
![\[S3 访问权限管控控制台的“创建 S3 Access Grants 实例”页面。\]](http://docs.aws.amazon.com/zh_cn/singlesignon/latest/userguide/images/s3-tutorial-step-1.1.png)

1. **注册营业地点**-在您的账户中[创建 Amazon S3 Access Grants 实例](https://docs.aws.amazon.com//AmazonS3/latest/userguide/access-grants-instance-create.html)后，您就可以在该实例中[注册一个 S3 地点](https://docs.aws.amazon.com//AmazonS3/latest/userguide/access-grants-location-register.html)。 AWS 区域 S3 Access Grants 位置会将默认 S3 区域（`S3://`）、存储桶或前缀映射到某个 IAM 角色。S3 Access Grants 代入此 Amazon S3 角色，来向正在访问该特定位置的被授权者提供临时凭证。您必须先在 S3 Access Grants 实例中注册至少一个位置，然后才能创建访问权限管控。

   对于**位置范围**，请指定 `s3://`，其中包含该区域内的所有存储桶。这是大多数使用案例的推荐位置范围。如果您有高级访问管理使用案例，可将位置范围设置为特定存储桶 `s3://bucket` 或存储桶内的前缀 `s3://bucket/prefix-with-path`。有关更多信息，请参阅*《Amazon Simple Storage Service 用户指南》*中的[注册位置](https://docs.aws.amazon.com//AmazonS3/latest/userguide/access-grants-location-register.html)。
**注意**  
确保您要授予访问权限的 AWS Glue 表的 S3 位置包含在此路径中。

   该过程要求您为该位置配置 IAM 角色。该角色应包含访问该位置范围的权限。您可以通过 S3 控制台向导创建该角色。您需要在该 IAM 角色的策略中指定您的 S3 Access Grants 实例 ARN。您的 S3 Access Grants 实例 ARN 的默认值为 `arn:aws:s3:Your-Region:Your-AWS-Account-ID:access-grants/default`。

   以下权限策略示例为您创建的 IAM 角色授予 Amazon S3 权限。后续的信任策略示例允许 S3 Access Grants 服务主体扮演该 IAM 角色。

   1. **权限策略**

      要使用这些政策，请用您自己的信息替换示例*italicized placeholder text*中的策略。有关详细操作指引，请参阅[创建策略](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_create.html)或[编辑策略](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_manage-edit.html)。

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "ObjectLevelReadPermissions",
                  "Effect": "Allow",
                  "Action": [
                      "s3:GetObject",
                      "s3:GetObjectVersion",
                      "s3:GetObjectAcl",
                      "s3:GetObjectVersionAcl",
                      "s3:ListMultipartUploadParts"
                  ],
                  "Resource": [
                      "arn:aws:s3:::*"
                  ],
                  "Condition": {
                      "StringEquals": {
                          "aws:ResourceAccount": "111122223333"
                      },
                      "ArnEquals": {
                          "s3:AccessGrantsInstanceArn": [
                          "arn:aws:s3:::access-grants/instance-id"
                          ]
                      }
                  }
              },
              {
                  "Sid": "ObjectLevelWritePermissions",
                  "Effect": "Allow",
                  "Action": [
                      "s3:PutObject",
                      "s3:PutObjectAcl",
                      "s3:PutObjectVersionAcl",
                      "s3:DeleteObject",
                      "s3:DeleteObjectVersion",
                      "s3:AbortMultipartUpload"
                  ],
                  "Resource": [
                      "arn:aws:s3:::*"
                  ],
                  "Condition": {
                      "StringEquals": {
                      "aws:ResourceAccount": "111122223333"
                      },
                      "ArnEquals": {
                          "s3:AccessGrantsInstanceArn": [
                          "arn:aws:s3:::access-grants/instance-id"
                          ]
                      }
                  }
              },
              {
                  "Sid": "BucketLevelReadPermissions",
                  "Effect": "Allow",
                  "Action": [
                      "s3:ListBucket"
                  ],
                  "Resource": [
                      "arn:aws:s3:::*"
                  ],
                  "Condition": {
                      "StringEquals": {
                      "aws:ResourceAccount": "111122223333"
                      },
                      "ArnEquals": {
                          "s3:AccessGrantsInstanceArn": [
                          "arn:aws:s3:::access-grants/instance-id"
                          ]
                      }
                  }
              },
              {
                  "Sid": "OptionalKMSPermissionsForSSEEncryption",
                  "Effect": "Allow",
                  "Action": [
                      "kms:Decrypt",
                      "kms:GenerateDataKey"
                  ],
                  "Resource": [
                      "*"
                  ]
              }
          ]
      }
      ```

------

   1. **信任策略**

       在 IAM 角色信任策略中，向 S3 访问权限管控服务 (`access-grants.s3.amazonaws.com`)主体授予对您创建的 IAM 角色的访问权限。为此，您可以创建一个包含以下语句的 JSON 文件。要将信任策略添加到您的账户，请参阅[使用自定义信任策略创建角色](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-custom.html)。

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "Stmt1234567891011",
                  "Effect": "Allow",
                  "Action": [
                      "sts:AssumeRole",
                      "sts:SetSourceIdentity"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "aws:SourceAccount": "111122223333",
                          "aws:SourceArn": "Your-Custom-Access-Grants-Location-ARN"
                      }
                  }
              },
      
              {
                  "Sid": "Stmt1234567891012",
                  "Effect": "Allow",
                  "Action": "sts:SetContext",
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "aws:SourceAccount": "111122223333",
                          "aws:SourceArn": "Your-Custom-Access-Grants-Location-ARN"
                      },
                      "ForAllValues:ArnEquals": {
                          "sts:RequestContextProviders": "arn:aws:iam::aws:contextProvider/IdentityCenter"
                      }
                  }
              }
          ]
      }
      ```

------

## 创建 Amazon S3 访问权限管控
<a name="tip-tutorial-s3-create-grant"></a>

如果您已创建带有已注册位置的 Amazon S3 Access Grants 实例，且已关联 IAM Identity Center 实例，则可以[创建授权](https://docs.aws.amazon.com//AmazonS3/latest/userguide/access-grants-grant-create.html)。在 S3 控制台的**创建授权**页面，完成以下操作：

**创建授权**

1. 选择上一步创建的位置。您可以通过添加子前缀缩小授权范围。子前缀可以是 `bucket`、`bucket/prefix` 或存储桶中的对象。有关更多信息，请参阅《*Amazon Simple Storage Service 用户指南*》中的[子前缀](https://docs.aws.amazon.com//AmazonS3/latest/userguide/access-grants-grant-create.html#subprefix)。

1. 在**权限和访问**下，根据需求选择**读取**和/或**写入**。

1. 在**授权方类型**中，选择**来自 IAM Identity Center 的目录身份**。

1. 提供 IAM Identity Center **用户或组 ID**。您可以在 IAM Identity Center 控制台的 “用户和群组 IDs ” [部分下找到该**用户**和**群组**](howtoviewandchangepermissionset.md)。选择**下一步**。

1. 在**审核并完成**页面，确认 S3 Access Grant 的设置，然后选择**创建授权**。

   下图展示了 Amazon S3 Access Grants 控制台中的“创建授权”页面：  
![\[Amazon S3 访问权限管控控制台的“创建授权”页面。\]](http://docs.aws.amazon.com/zh_cn/singlesignon/latest/userguide/images/s3-tutorial-step-1.4.png)