本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將存取控制從 AWS Lake Formation 變更為 IAM
本節說明將存取控制從 AWS Lake Formation 授予變更為與 整合之 Amazon S3 Tables 的 IAM 權限的工作流程 AWS Glue Data Catalog。
重要
將存取控制從 AWS Lake Formation 授予變更為 IAM 將撤銷對 S3 Tables 資源的所有現有 Lake Formation 型存取。完成步驟 2 後,先前透過 Lake Formation 授予存取資料的使用者和角色將立即失去存取權。您必須先在步驟 1 中授予 IAM 存取權,才能更新目錄。在維護時段規劃此遷移,並與資料團隊協調。
重要
AWS Lake Formation 只有在使用 時,才能使用具有 Data Catalog 物件的精細存取控制,例如資料欄層級存取和資料儲存格篩選條件。在繼續將存取控制從 遷移 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:將 IAM 許可授予委託人
將 IAM 政策連接至需要存取的使用者或角色。政策必須同時包含 AWS Glue 中繼資料許可和 S3 Tables 資料許可。
注意
下列範例政策僅提供讀取存取權。
aws iam put-user-policy \ --user-nameGlueIAMAccessUser\ --policy-nameS3TablesIAMAccessPolicy\ --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:更新目錄以還原 IAM 預設許可
更新目錄,以便
CreateDatabaseDefaultPermissions和CreateTableDefaultPermissionsALL授予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" }' -
步驟 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任何步驟。