View a markdown version of this page

将访问控制从更改 AWS Lake Formation 为 IAM - AWS Lake Formation

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

将访问控制从更改 AWS Lake Formation 为 IAM

本节介绍将与集成的 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 访问权限。

先决条件

在开始之前,请确保满足以下条件:

  • 您已经确定了当前对正在迁移的资源生效的所有 Lake Formation 补助。跑aws lakeformation list-permissions --resource-type TABLE去查看它们。

  • 您已准备好为所有受影响的委托人提供同等访问权限的 IAM 策略。

  • 在 Lake Formation 注册的 IAM 角色仍然存在lakeformation:GetDataAccess(在混合过渡期间需要)。

使用 AWS CLI

  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 证书访问预期的表。

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

    更新目录这样CreateDatabaseDefaultPermissionsCreateTableDefaultPermissionsALL授予IAM_ALLOWED_PRINCIPALS。设置为OverwriteChildResourcePermissionsWithDefaultAccept这样更改就会传播到所有现有的子资源,而不仅仅是新创建的子资源。

    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" }'
  3. 第 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步骤。