

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

# 更改 S3 表格集成的访问控制
<a name="manage-s3tables-catalog-integration"></a>

将 Amazon S3 表与集成后 AWS Glue Data Catalog，您可以更改对目录资源的访问控制方式。本节如何根据您当前和所需的访问控制模型更改访问控制。启用 Lake Formation 允许您通过 Lake Formation 授权使用细粒度权限，例如列级和行级安全，并允许 Lake Formation 通过注册角色代表委托人出售临时证书。将访问控制从更改 AWS Lake Formation 为 IAM 会将访问控制返回到标准 IAM 策略，如果您的工作负载不需要精细的访问权限，并且您更愿意完全通过 IAM 管理权限，那么这可能是合适的。这两种迁移路径都涉及更新数据目录默认值、在 Lake Formation 中调整资源注册以及协调权限授予以避免过渡期间访问中断。

**Topics**
+ [启用 Lake Formation with S3 表格与数据目录集成](change-access-iam-to-lf.md)
+ [将访问控制从更改 AWS Lake Formation 为 IAM](change-access-lf-to-iam.md)

# 启用 Lake Formation with S3 表格与数据目录集成
<a name="change-access-iam-to-lf"></a>

本节介绍使用与集成的 Amazon S3 表的 AWS Lake Formation 授权，将访问控制从 IAM 权限迁移到 IAM 的工作流程 AWS Glue Data Catalog。

**重要**  
启用 AWS Lake Formation 访问控制将撤消对您的 S3 Tables 资源的所有现有基于 IAM 的访问权限。完成步骤 1 后，之前通过 IAM 权限访问数据的用户和角色将立即失去访问权限。用户必须先在步骤 2 中授予 Lake Formation 权限，然后用户才能再次查询数据。在维护时段内规划此次迁移，并与您的数据团队进行协调。

## 先决条件
<a name="w2aac13c29b7b7"></a>

要 read/write 访问 S3 表，除了 Lake Formation 权限外，委托人还需要 `lakeformation:GetDataAccess` IAM 权限。获得此权限后，Lake Formation 将授权访问数据的临时凭证请求。

## 使用 AWS CLI
<a name="w2aac13c29b7b9"></a>

1. **第 1 步：使用 IAM 角色向 Lake Formation 注册存储桶**

   在 Lake Formation 中注册 S3 表格资源。
**注意**  
如果您已有角色，请确保混合访问权限为 false。

   ```
   aws lakeformation register-resource \
     --resource-arn "arn:aws:s3tables:us-east-1:AWSAccountID:bucket/*" \
     --role-arn "arn:aws:iam::AWSAccountID:role/service-role/LFAccessRole" \
     --with-federation
   ```

1. **第 2 步：更新 AWS Glue 目录以启用 Lake Formation 访问控制**

   使用空`CreateDatabaseDefaultPermissions`和`CreateTableDefaultPermissions`（设置为`[]`）更新目录，然后设置`OverwriteChildResourcePermissionsWithDefault`为`Accept`。这将从所有现有子资源中移除基于 IAM 的访问权限，并允许使用 Lake Formation 授权管理目录及其对象。

   ```
   aws glue update-catalog \
     --catalog-id "s3tablescatalog" \
     --catalog-input '{
       "FederatedCatalog": {
           "Identifier": "arn:aws:s3tables:us-east-1:AWSAccountID:bucket/*",
           "ConnectionName": "aws:s3tables"
       },
       "CreateDatabaseDefaultPermissions": [],
       "CreateTableDefaultPermissions": [],
       "OverwriteChildResourcePermissionsWithDefault": "Accept",
       "AllowFullTableExternalDataAccess": "True"
     }'
   ```

1. **第 3 步：向你的数据团队授予 Lake Formation 权限**

   向需要访问的委托人（角色、用户或群组）授予 Lake Formation 权限。例如，要向角色授予全表读取权限，请执行以下操作：

   ```
   aws lakeformation grant-permissions \
     --principal DataLakePrincipalIdentifier=arn:aws:iam::AWSAccountID:role/DataTeamRole \
     --resource '{
       "Table": {
           "CatalogId": "AWSAccountID",
           "DatabaseName": "s3tablescatalog/table-bucket-name/namespace",
           "TableWildcard": {}
       }
     }' \
     --permissions "SELECT" "DESCRIBE"
   ```

   根据需要对每个委托人和资源组合重复此操作。

# 将访问控制从更改 AWS Lake Formation 为 IAM
<a name="change-access-lf-to-iam"></a>

本节介绍将与集成的 Amazon S3 表的访问控制从 AWS Lake Formation 授权更改为 IAM 权限的工作流程 AWS Glue Data Catalog。

**重要**  
将访问控制从 AWS Lake Formation 授权更改为 IAM 将撤销对您的 S3 Tables 资源的所有现有基于 Lake Formation 的访问权限。完成第 2 步后，之前通过 Lake Formation 授权访问数据的用户和角色将立即失去访问权限。在更新目录之前，您必须在步骤 1 中授予 IAM 访问权限。在维护时段内规划此次迁移，并与您的数据团队进行协调。

**重要**  
仅在使用数据目录对象时，可以使用精细的访问控制，例如列级访问权限和数据单元格筛选器。 AWS Lake Formation 在继续将访问控制从 IAM 迁移 AWS Lake Formation 到 IAM 之前，请使用审核您现有的 Lake Formation 授权，`aws lakeformation list-permissions`并确定等效的 IAM 策略能否为您的用户提供所需的访问权限。任何依赖精细的 Lake Formation 拨款的委托人在迁移访问控制后都需要完整的表级 IAM 访问权限。

## 先决条件
<a name="w2aac13c29b9b9"></a>

在开始之前，请确保满足以下条件：
+ 您已经确定了当前对正在迁移的资源生效的所有 Lake Formation 补助。跑`aws lakeformation list-permissions --resource-type TABLE`去查看它们。
+ 您已准备好为所有受影响的委托人提供同等访问权限的 IAM 策略。
+ 在 Lake Formation 注册的 IAM 角色仍然存在`lakeformation:GetDataAccess`（在混合过渡期间需要）。

## 使用 AWS CLI
<a name="w2aac13c29b9c11"></a>

1. **步骤 1：向委托人授予 IAM 权限**

   将 IAM 策略附加到需要访问权限的用户或角色。该策略必须包括 AWS Glue 元数据权限和 S3 表数据权限。
**注意**  
以下示例策略仅提供读取权限。

   ```
   aws iam put-user-policy \
     --user-name GlueIAMAccessUser \
     --policy-name S3TablesIAMAccessPolicy \
     --policy-document '{
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "GlueMetadataAccess",
               "Effect": "Allow",
               "Action": [
                   "glue:GetCatalog",
                   "glue:GetDatabase",
                   "glue:GetTable"
               ],
               "Resource": [
                   "arn:aws:glue:us-east-1:AWSAccountID:catalog/s3tablescatalog",
                   "arn:aws:glue:us-east-1:AWSAccountID:database/s3tablescatalog/table-bucket-name/namespace",
                   "arn:aws:glue:us-east-1:AWSAccountID:table/s3tablescatalog/table-bucket-name/namespace/*"
               ]
           },
           {
               "Sid": "S3TablesDataAccess",
               "Effect": "Allow",
               "Action": [
                   "s3tables:GetTableBucket",
                   "s3tables:GetTable",
                   "s3tables:GetTableMetadataLocation",
                   "s3tables:GetTableData"
               ],
               "Resource": [
                   "arn:aws:s3tables:us-east-1:AWSAccountID:bucket/table-bucket-name",
                   "arn:aws:s3tables:us-east-1:AWSAccountID:bucket/table-bucket-name/table/*"
               ]
           }
       ]
     }'
   ```

   在继续操作之前，请确认所有受影响的用户和角色都可以使用其 IAM 证书访问预期的表。

1. **步骤 2：更新目录以恢复 IAM 默认权限**

   更新目录这样`CreateDatabaseDefaultPermissions`并`CreateTableDefaultPermissions``ALL`授予`IAM_ALLOWED_PRINCIPALS`。设置为`OverwriteChildResourcePermissionsWithDefault`，`Accept`这样更改就会传播到所有现有的子资源，而不仅仅是新创建的子资源。

   ```
   aws glue update-catalog \
     --catalog-id "s3tablescatalog" \
     --catalog-input '{
       "FederatedCatalog": {
           "Identifier": "arn:aws:s3tables:us-east-1:AWSAccountID:bucket/*",
           "ConnectionName": "aws:s3tables"
       },
       "CreateDatabaseDefaultPermissions": [{
           "Principal": {"DataLakePrincipalIdentifier": "IAM_ALLOWED_PRINCIPALS"},
           "Permissions": ["ALL"]
       }],
       "CreateTableDefaultPermissions": [{
           "Principal": {"DataLakePrincipalIdentifier": "IAM_ALLOWED_PRINCIPALS"},
           "Permissions": ["ALL"]
       }],
       "OverwriteChildResourcePermissionsWithDefault": "Accept"
     }'
   ```

1. **第 3 步：从 Lake Formation 注销资源**

   确认所有访问权限均通过 IAM 策略运行，并且所有委托人均不依赖于 Lake Formation 的授权，即可从 Lake Formation 注销资源以完成迁移。

   ```
   aws lakeformation deregister-resource \
     --resource-arn "arn:aws:s3tables:us-east-1:AWSAccountID:bucket/*"
   ```
**注意**  
注销资源后，`lakeformation:GetDataAccess`从不再需要该资源的 IAM 委托人中移除。

无需任何`revoke-permissions`步骤。