

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

# 變更 S3 Tables 整合的存取控制
<a name="manage-s3tables-catalog-integration"></a>

將 Amazon S3 Tables 與 整合後 AWS Glue Data Catalog，您可以變更控制目錄資源存取的方式。本節說明如何根據您目前和所需的存取控制模型變更存取控制。啟用 Lake Formation 可讓您透過 Lake Formation 授予使用精細的許可，例如資料欄層級和資料列層級安全性，並允許 Lake Formation 透過註冊角色代表委託人提供臨時憑證。 AWS Lake Formation 將存取控制從 變更為 IAM 會傳回標準 IAM 政策的存取控制，如果您的工作負載不需要精細存取，而且您偏好完全透過 IAM 管理許可，則此政策可能是適當的。這兩個遷移路徑都涉及更新 Data Catalog 預設值、使用 Lake Formation 調整資源註冊，以及協調許可授予以避免轉換期間的存取中斷。

**Topics**
+ [啟用 Lake Formation 與 S3 Tables 與 Data Catalog 整合](change-access-iam-to-lf.md)
+ [將存取控制從 AWS Lake Formation 變更為 IAM](change-access-lf-to-iam.md)

# 啟用 Lake Formation 與 S3 Tables 與 Data Catalog 整合
<a name="change-access-iam-to-lf"></a>

本節說明使用與 整合的 Amazon S3 Tables AWS Lake Formation 授予，將存取控制從 IAM 權限遷移至 IAM 的工作流程 AWS Glue Data Catalog。

**重要**  
啟用 AWS Lake Formation 存取控制會撤銷對 S3 Tables 資源的所有現有 IAM 型存取。完成步驟 1 後，先前透過 IAM 許可存取資料的使用者和角色將立即失去存取權。您必須先在步驟 2 中授予 Lake Formation 許可，使用者才能再次查詢資料。在維護時段規劃此遷移，並與資料團隊協調。

## 先決條件
<a name="w2aac13c29b7b7"></a>

對於對 S3 Tables 的讀取/寫入存取，除了 Lake Formation 許可之外，主體還需要 `lakeformation:GetDataAccess` IAM 許可。有了此許可，Lake Formation 就會授與要求存取資料所需的臨時憑證。

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

1. **步驟 1：使用 IAM 角色向 Lake Formation 註冊儲存貯體**

   向 Lake Formation 註冊 S3 Tables 資源。
**注意**  
如果您有現有角色，請確保混合存取為 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>

本節說明將存取控制從 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`任何步驟。