

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 將存取控制從 AWS Lake Formation 變更為 IAM
<a name="change-access-lf-to-iam"></a>

本節說明將存取控制從 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 存取。

## 先決條件
<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 Tables 資料許可。
**注意**  
下列範例政策僅提供讀取存取權。

   ```
   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`任何步驟。