

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

# 使用 Lake Formation 管理對資料表或資料庫的存取
<a name="grant-permissions-tables"></a>

如果您的資料表儲存貯體與使用 Lake Formation 的 AWS 分析服務整合，則 Lake Formation 會管理對資料表的存取，並要求每個 IAM 主體 （使用者或角色） 都有權執行動作。Lake Formation 會使用自己的許可模型 (Lake Formation 許可)，為資料目錄資源啟用精細的存取控制。

如需詳細資訊，請參閱《AWS Lake Formation 開發人員指南》**中的 [Lake Formation 許可概觀](https://docs.aws.amazon.com//lake-formation/latest/dg/lf-permissions-overview.html)。

 AWS Lake Formation中有兩種主要類型的權限：

1. 中繼資料存取權限可控制在 Data Catalog 中建立、讀取、更新和刪除中繼資料資料庫和資料表的能力。

1. 基礎資料存取權限可控制讀取和寫入資料目錄資源指向的基礎 Amazon S3 位置的能力。

Lake Formation 使用自己的許可模型和 IAM 許可模型的組合，控制對 Data Catalog 資源和基礎資料的存取：
+ 若要請求成功存取 Data Catalog 資源或基礎資料，則請求必須通過 IAM 和 Lake Formation 的許可權檢查。
+ IAM 許可控制對 Lake Formation 和 AWS Glue APIs存取，而 Lake Formation 許可控制對 Data Catalog 資源、Amazon S3 位置和基礎資料的存取。

Lake Formation 許可權僅適用於授予其獲授權的區域，且主體必須由資料湖管理員或其他具有必要權限的主體的授權，才能授予 Lake Formation 許可。

**注意**  
如果您是執行資料表儲存貯體整合的使用者，您已擁有資料表的 Lake Formation 許可。如果您是將存取資料表的唯一主體，您可以略過此步驟。您只需將資料表的 Lake Formation 許可權授予其他 IAM 主體。這可讓其他主體在執行查詢時存取資料表。如需詳細資訊，請參閱[授予資料表或資料庫的 Lake Formation 許可](#grant-lf-table)。

## 授予資料表或資料庫的 Lake Formation 許可
<a name="grant-lf-table"></a>

您可以對資料表儲存貯體中的資料表或資料庫授予主體 Lake Formation 許可，方式是透過 Lake Formation 主控台或 AWS CLI。

**注意**  
當您將 Data Catalog 資源的 Lake Formation 許可授予外部帳戶或直接授予另一個帳戶中的 IAM 主體時，Lake Formation 會使用 AWS Resource Access Manager (AWS RAM) 服務來共用資源。如果承授者帳戶與授予者帳戶位於相同的組織中，則承授者可立即使用共享資源。如果承授者帳戶不在同一個組織中， AWS RAM 會向承授者帳戶傳送邀請，請其接受或拒絕資源授權。然後，若要提供共用資源，承授者帳戶中的資料湖管理員必須使用 AWS RAM 主控台或 AWS CLI 接受邀請。如需有關跨帳戶資料共享的詳細資訊，請參閱《AWS Lake Formation 開發人員指南》**中的 [Lake Formation 中的跨帳戶資料共享](https://docs.aws.amazon.com/lake-formation/latest/dg/cross-account-permissions.html)。

------
#### [ Console ]

1. 在 開啟 AWS Lake Formation 主控台[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)，並以資料湖管理員身分登入。如需如何建立資料湖管理員的詳細資訊，請參閱《AWS Lake Formation 開發人員指南》**中的[建立資料湖管理員](https://docs.aws.amazon.com/lake-formation/latest/dg/initial-lf-config.html#create-data-lake-admin)。

1. 在導覽窗格中，選擇**資料許可**，然後選擇**授予**。

1. 在**授予許可**頁面的**主體**下，執行下列其中一項操作：
   + 針對 Amazon Athena 或 Amazon Redshift，選擇 **IAM 使用者和角色**，然後選取您用於查詢的 IAM 主體。
   + 針對 Amazon Data Firehose，選擇 **IAM 使用者和角色**，然後選取您已建立的服務角色以讓其串流至資料表。
   + 針對快速，選擇 **SAML 使用者和群組**，然後輸入快速管理員使用者的 Amazon Resource Name (ARN)。
   + 針對 AWS Glue Iceberg REST端點存取，選擇 **IAM 使用者和角色**，然後選取您為用戶端建立的 IAM 角色。如需詳細資訊，請參閱[為您的用戶端建立 IAM 角色](s3-tables-integrating-glue-endpoint.md#glue-endpoint-create-iam-role)

1. 在 **LF-標籤或型錄資源**下，選擇**已命名的的資料型錄資源**。

1. 對於**目錄**，選擇您在整合資料表儲存貯體時建立的子目錄，例如 `account-id:s3tablescatalog/amzn-s3-demo-bucket`。

1. 針對**資料庫**，選擇您建立的 S3 資料表儲存貯體命名空間。

1. (選用) 針對**資料表**選擇您在資料表儲存貯體中建立的 S3 資料表。
**注意**  
如果您要在 Athena 查詢編輯器中建立新資料表，請勿選取資料表。

1. 執行以下任意一項：
   + 如果您在上一個步驟中指定了資料表，請針對**資料表許可**選擇**超級**。
   + 如果您未在上一個步驟中指定資料表，請前往**資料庫許可**。對於跨帳戶資料共享，您無法選擇**超級**來授予其他主體資料庫的所有權限。反之，請選擇更精細的許可權，例如**描述**。

1. 選擇 **Grant** (授予)。

------
#### [ CLI ]

1. 請確定您以資料湖管理員身分執行下列 AWS CLI 命令。如需詳細資訊，請參閱《AWS Lake Formation 開發人員指南》**中的[建立資料湖管理員者](https://docs.aws.amazon.com//lake-formation/latest/dg/initial-lf-config.html#create-data-lake-admin)。

1. 執行下列命令，將 S3 資料表儲存貯體中資料表的 Lake Formation 許可授予 IAM 主體，以存取資料表。若要使用此範例，請以您自己的資訊取代 *`user input placeholders`*。

   ```
   aws lakeformation grant-permissions \
   --region us-east-1 \
   --cli-input-json \
   '{
       "Principal": {
           "DataLakePrincipalIdentifier": "user or role ARN, for example, arn:aws:iam::account-id:role/example-role"
       },
       "Resource": {
           "Table": {
               "CatalogId": "account-id:s3tablescatalog/amzn-s3-demo-bucket",
               "DatabaseName": "S3 table bucket namespace, for example, test_namespace",
               "Name": "S3 table bucket table name, for example test_table"
           }
       },
       "Permissions": [
           "ALL"
       ]
   }'
   ```

------