

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

# 将访问控制从更改 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`步骤。