

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

# 設定 AWS Lake Formation
<a name="initial-lf-config"></a>

 下列各節提供第一次設定 Lake Formation 的相關資訊。並非本節中的所有主題都需要開始使用 Lake Formation。您可以使用指示來設定 Lake Formation 許可模型，以在 Amazon Simple Storage Service (Amazon S3) 中管理現有的 AWS Glue Data Catalog 物件和資料位置。

1. [建立資料湖管理員](#create-data-lake-admin)

1. [變更預設許可模型或使用混合存取模式](#setup-change-cat-settings)

1. [為您的資料湖設定 Amazon S3 位置](#register-s3-location)

1. [將許可指派給 Lake Formation 使用者](#permissions-lf-principal)

1. [整合 IAM Identity Center](identity-center-integration.md)

1. [（選用） 外部資料篩選設定](#external-data-filter)

1. [（選用） 授予對 Data Catalog 加密金鑰的存取權](#setup-encrypted-catalog)

1. [（選用） 建立工作流程的 IAM 角色](#iam-create-blueprint-role)

本節說明如何以兩種不同的方式設定 Lake Formation 資源：
+ 使用 AWS CloudFormation 範本
+ 使用 Lake Formation 主控台

若要使用 AWS 主控台設定 Lake Formation，請前往 [建立資料湖管理員](#create-data-lake-admin)。

## 使用 CloudFormation 範本設定 Lake Formation 資源
<a name="lf-setup-cfn"></a>
**注意**  
 CloudFormation 堆疊會執行上述的步驟 1 到 6，步驟 2 和 5 除外。從 Lake Formation 主控台執行 [變更預設許可模型或使用混合存取模式](#setup-change-cat-settings)和 [整合 IAM Identity Center](identity-center-integration.md)手動。

1. 以美國東部 （維吉尼亞北部） 區域的 IAM 管理員身分登入 AWS CloudFormation 主控台，網址為 [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)：//。

1. 選擇[啟動堆疊](https://us-east-1.console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/new?templateURL=https://lf-public.s3.amazonaws.com/cfn/SettingUpLf.yaml)。

1. 在**建立堆疊**畫面上選擇**下一步**。

1. 輸入**堆疊名稱。**

1. 針對 **DatalakeAdminName** 和 **DatalakeAdminPassword**，輸入資料湖管理員使用者的使用者名稱和密碼。

1. 針對 **DatalakeUser1Name** 和 **DatalakeUser1Password**，輸入資料湖分析師使用者的使用者名稱和密碼。

1. 針對 **DataLakeBucketName**，輸入要建立的新儲存貯體名稱。

1. 選擇**下一步**。

1. 在下一頁中，選擇 `I acknowledge that CloudFormation might create IAM resources with custom names`，然後選擇**下一步**。

1. 檢閱最終頁面上的詳細資訊，然後選取**我確認 AWS CloudFormation 可能會建立 IAM 資源。**

1. 選擇**建立**。

   堆疊建立最多可能需要兩分鐘。

**清除資源**

如果您想要清除 CloudFormation 堆疊資源：

1. 取消註冊堆疊建立並註冊為資料湖位置的 Amazon S3 儲存貯體。

1. 刪除 CloudFormation 堆疊。這將刪除堆疊建立的所有資源。

## 建立資料湖管理員
<a name="create-data-lake-admin"></a>

資料湖管理員一開始是唯一 AWS Identity and Access Management (IAM) 使用者或角色，可將資料位置和 Data Catalog 資源的 Lake Formation 許可授予任何主體 （包括自己）。如需資料湖管理員功能的詳細資訊，請參閱 [隱含 Lake Formation 許可](implicit-permissions.md)。根據預設，Lake Formation 可讓您建立最多 30 個資料湖管理員。

您可以使用 Lake Formation 主控台或 Lake Formation API `PutDataLakeSettings`的操作來建立資料湖管理員。

建立資料湖管理員需要下列許可。`Administrator` 使用者隱含地擁有這些許可。
+ `lakeformation:PutDataLakeSettings`
+ `lakeformation:GetDataLakeSettings`

如果您將`AWSLakeFormationDataAdmin`政策授予使用者，該使用者將無法建立其他 Lake Formation 管理員使用者。

**建立資料湖管理員 （主控台）**

1. 如果要成為資料湖管理員的使用者尚未存在，請使用 IAM 主控台來建立它。否則，請選擇要成為資料湖管理員的現有使用者。
**注意**  
建議您不要選取 IAM 管理使用者 （具有 `AdministratorAccess` AWS 受管政策的使用者） 做為資料湖管理員。

   將下列 AWS 受管政策連接至使用者：    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/initial-lf-config.html)

1. 連接下列內嵌政策，授予資料湖管理員建立 Lake Formation 服務連結角色的許可。政策的建議名稱為 `LakeFormationSLR`。

   服務連結角色可讓資料湖管理員更輕鬆地向 Lake Formation 註冊 Amazon S3 位置。如需 Lake Formation 服務連結角色的詳細資訊，請參閱 [使用 Lake Formation 的服務連結角色](service-linked-roles.md)。
**重要**  
在下列所有政策中，以有效的 AWS 帳號取代 {{<account-id>}}。

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "iam:CreateServiceLinkedRole",
               "Resource": "*",
               "Condition": {
                   "StringEquals": {
                       "iam:AWSServiceName": "lakeformation.amazonaws.com"
                   }
               }
           },
           {
               "Effect": "Allow",
               "Action": [
                   "iam:PutRolePolicy"
               ],
               "Resource": "arn:aws:iam::{{<account-id>}}:role/aws-service-role/lakeformation.amazonaws.com/AWSServiceRoleForLakeFormationDataAccess"
           }
       ]
   }
   ```

1. （選用） 將下列`PassRole`內嵌政策連接至使用者。此政策可讓資料湖管理員建立和執行工作流程。`iam:PassRole` 許可可讓工作流程擔任角色`LakeFormationWorkflowRole`來建立爬蟲程式和任務，並將角色連接到建立的爬蟲程式和任務。政策的建議名稱為 `UserPassRole`。
**重要**  
以有效的 AWS 帳號取代 {{<account-id>}}。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "PassRolePermissions",
               "Effect": "Allow",
               "Action": [
                   "iam:PassRole"
               ],
               "Resource": [
                   "arn:aws:iam::{{111122223333}}:role/LakeFormationWorkflowRole"
               ]
           }
       ]
   }
   ```

------

1. （選用） 如果您的帳戶將授予或接收跨帳戶 Lake Formation 許可，請附加此額外的內嵌政策。此政策可讓資料湖管理員檢視和接受 AWS Resource Access Manager (AWS RAM) 資源共用邀請。此外，對於 AWS Organizations 管理帳戶中的資料湖管理員，該政策包含允許對組織啟用跨帳戶授予的許可。如需詳細資訊，請參閱[Lake Formation 中的跨帳戶資料共用](cross-account-permissions.md)。

    政策的建議名稱為 `RAMAccess`。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ram:AcceptResourceShareInvitation",
                   "ram:RejectResourceShareInvitation",
                   "ec2:DescribeAvailabilityZones",
                   "ram:EnableSharingWithAwsOrganization"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. 開啟位於 https：//[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) 的 AWS Lake Formation 主控台，並以您在 中建立的管理員使用者身分登入，[建立具有管理存取權的使用者](getting-started-setup.md#create-an-admin)或以具有`AdministratorAccess`使用者 AWS 受管政策的使用者身分登入。

1. 如果出現**歡迎使用 Lake Formation** 視窗，請選擇您在步驟 1 中建立或選取的 IAM 使用者，然後選擇**開始使用**。

1. 如果您沒有看到**歡迎使用 Lake Formation** 視窗，請執行下列步驟來設定 Lake Formation 管理員。

   1. 在導覽窗格的**管理**下，選擇**管理角色和任務**。在主控台頁面**的資料湖管理員**區段中，選擇**新增**。

   1. 在**新增管理員**對話方塊中的存取類型下，選擇**資料湖管理員**。

   1. 對於 **IAM 使用者和角色**，請選擇您在步驟 1 中建立或選取的 IAM 使用者，然後選擇**儲存**。

## 變更預設許可模型或使用混合存取模式
<a name="setup-change-cat-settings"></a>

Lake Formation 會從「僅使用 IAM 存取控制」設定開始，以與現有 AWS Glue Data Catalog 行為相容。此設定可讓您透過 IAM 政策和 Amazon S3 儲存貯體政策，管理對資料湖中資料及其中繼資料的存取。

為了簡化將資料湖許可從 IAM 和 Amazon S3 模型轉換為 Lake Formation 許可，我們建議您使用 Data Catalog 的混合存取模式。使用混合存取模式時，您會有一個增量路徑，您可以在其中為一組特定使用者啟用 Lake Formation 許可，而不會中斷其他現有的使用者或工作負載。

如需詳細資訊，請參閱[混合存取模式](hybrid-access-mode.md)。

停用預設設定，以在單一步驟中將資料表的所有現有使用者移至 Lake Formation。

**重要**  
如果您有現有的AWS Glue Data Catalog資料庫和資料表，請勿遵循本節中的指示。或者，請遵循[將AWS Glue資料許可升級到 AWS Lake Formation 模型](upgrade-glue-lake-formation.md)中的說明進行。

**警告**  
如果您有在 Data Catalog 中建立資料庫和資料表的自動化，下列步驟可能會導致自動化和下游擷取、轉換和載入 (ETL) 任務失敗。只有在修改現有程序或將明確的 Lake Formation 許可授予必要的委託人之後，才能繼續。如需 Lake Formation 許可的詳細資訊，請參閱 [Lake Formation 許可參考](lf-permissions-reference.md)。

**變更預設 Data Catalog 設定**

1. 在 Lake Formation 主控台中繼續，網址為 https：//[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。確保您以您在 中建立的管理員使用者身分登入，[建立具有管理存取權的使用者](getting-started-setup.md#create-an-admin)或以 `AdministratorAccess` AWS 受管政策的使用者身分登入。

1. 修改 Data Catalog 設定：

   1. 在導覽窗格的**管理**下，選擇 **Data Catalog 設定**。

   1. 清除兩個核取方塊，然後選擇**儲存**。  
![Data Catalog 設定對話方塊具有字幕「新建立的資料庫和資料表的預設許可」，並有兩個核取方塊，如文字中所述。](http://docs.aws.amazon.com/zh_tw/lake-formation/latest/dg/images/settings-page.png)

1. 撤銷資料庫建立者的`IAMAllowedPrincipals`許可。

   1. 在導覽窗格的**管理**下，選擇**管理角色和任務**。

   1. 在**管理角色和任務**主控台頁面的**資料庫建立者**區段中，選取`IAMAllowedPrincipals`群組，然後選擇**撤銷**。

      隨即出現**撤銷**許可對話方塊，顯示 `IAMAllowedPrincipals`具有**建立資料庫**許可。

   1. 選擇**撤銷**。

## 將許可指派給 Lake Formation 使用者
<a name="permissions-lf-principal"></a>

建立使用者以存取其中的資料湖 AWS Lake Formation。此使用者具有查詢資料湖的最低權限許可。

如需建立使用者或群組的詳細資訊，請參閱《[IAM 使用者指南》中的 IAM 身分](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html)。

**將存取 Lake Formation 資料的許可連接到非管理員使用者**

1. 在 開啟 IAM 主控台，[https://console.aws.amazon.com/iam](https://console.aws.amazon.com/iam)並以您在 中建立的管理員使用者身分登入，[建立具有管理存取權的使用者](getting-started-setup.md#create-an-admin)或以 `AdministratorAccess` AWS 受管政策的使用者身分登入。

1. 選擇**使用者**或**使用者群組**。

1. 在清單中，選擇要內嵌政策的使用者或群組名稱。

   選擇**許可**。

1. 選擇**新增許可**，然後選擇**直接連接政策**。`Athena` 在**篩選政策**文字欄位中輸入 。在結果清單中，勾選 的方塊`AmazonAthenaFullAccess`。

1. 選擇**建立政策**按鈕。在**建立政策**頁面上，選擇 **JSON** 標籤。將下列程式碼複製並貼到政策編輯器中。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "lakeformation:GetDataAccess",
                   "glue:GetTable",
                   "glue:GetTables",
                   "glue:SearchTables",
                   "glue:GetDatabase",
                   "glue:GetDatabases",
                   "glue:GetPartitions",
                   "lakeformation:GetResourceLFTags",
                   "lakeformation:ListLFTags",
                   "lakeformation:GetLFTag",
                   "lakeformation:SearchTablesByLFTags",
                   "lakeformation:SearchDatabasesByLFTags"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. 選擇底部的**下一步**按鈕，直到您看到**檢閱政策**頁面。輸入政策的名稱，例如 `DatalakeUserBasic`。選擇**建立政策**，然後關閉**政策**索引標籤或瀏覽器視窗。

## 為您的資料湖設定 Amazon S3 位置
<a name="register-s3-location"></a>

若要使用 Lake Formation 來管理和保護資料湖中的資料，您必須先註冊 Amazon S3 位置。當您註冊位置時，Amazon S3 路徑和該路徑下的所有資料夾都會註冊，這可讓 Lake Formation 強制執行儲存層級許可。當使用者從 Amazon Athena 等整合引擎請求資料時，Lake Formation 會提供資料存取，而不是使用使用者許可。

當您註冊位置時，您可以指定 IAM 角色來授予該位置的讀取/寫入許可。Lake Formation 在將臨時登入資料提供給請求存取已註冊 Amazon S3 位置中資料的整合 AWS 服務時，會擔任該角色。您可以指定 Lake Formation 服務連結角色 (SLR) 或建立自己的角色。

在下列情況下使用自訂角色：
+ 您計劃在 Amazon CloudWatch Logs 中發佈指標。使用者定義的角色必須包含在 CloudWatch Logs 中新增日誌，以及除了 SLR 許可之外發佈指標的政策。如需授予必要 CloudWatch 許可的內嵌政策範例，請參閱 [用於註冊位置的角色需求](registration-role.md)。
+ Amazon S3 位置存在於不同的帳戶中。如需詳細資訊，請參閱[在另一個 AWS 帳戶中註冊 Amazon S3 位置](register-cross-account.md)。
+ Amazon S3 位置包含使用 加密的資料 AWS 受管金鑰。如需詳細資訊，請參閱 [註冊加密的 Amazon S3 位置](register-encrypted.md) 和 [跨 AWS 帳戶註冊加密的 Amazon S3 位置](register-cross-encrypted.md)。
+ 您計劃使用 Amazon EMR 存取 Amazon S3 位置。如需角色需求的詳細資訊，請參閱《*Amazon EMR 管理指南*》中的 [Lake Formation 的 IAM 角色](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-lf-iam-role.html)。

您選擇的角色必須具有必要的許可，如中所述[用於註冊位置的角色需求](registration-role.md)。如需如何註冊 Amazon S3 位置的說明，請參閱 [將 Amazon S3 位置新增至您的資料湖](register-data-lake.md)。

## （選用） 外部資料篩選設定
<a name="external-data-filter"></a>

如果您想要使用第三方查詢引擎來分析和處理資料湖中的資料，您必須選擇加入，以允許外部引擎存取 Lake Formation 管理的資料。如果您不選擇加入，外部引擎將無法存取在 Lake Formation 註冊的 Amazon S3 位置中的資料。

Lake Formation 支援資料欄層級許可，以限制對資料表中特定資料欄的存取。整合式分析服務 Amazon Athena，例如 Amazon Redshift Spectrum 和 Amazon EMR 從 擷取未篩選的資料表中繼資料 AWS Glue Data Catalog。查詢回應中資料欄的實際篩選是整合服務的責任。第三方管理員有責任正確處理許可，以避免未經授權的資料存取。

**選擇加入以允許第三方引擎存取和篩選資料 （主控台）**

1. 在 Lake Formation 主控台中繼續，網址為 https：//[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)。確保您以擁有 Lake Formation `PutDataLakeSettings` API 操作 IAM 許可的委託人身分登入。您在 中建立的 IAM 管理員使用者[註冊 AWS 帳戶](getting-started-setup.md#sign-up-for-aws)具有此許可。

1. 在導覽窗格的**管理**下，選擇**應用程式整合設定**。

1. 在**應用程式整合設定**頁面上，執行下列動作：

   1. 勾選方塊 **允許外部引擎篩選向 Lake Formation 註冊的 Amazon S3 位置中的資料**。

   1.  輸入為第三方引擎定義的**工作階段標籤值**。

   1. 對於**AWS 帳戶 IDs**，輸入允許第三方引擎存取向 Lake Formation 註冊之位置的帳戶 IDs。在每個帳戶 ID 之後按 **Enter**。

   1. 選擇**儲存**。

 若要允許外部引擎在沒有工作階段標籤驗證的情況下存取資料，請參閱 [完整資料表存取的應用程式整合](full-table-credential-vending.md) 

## （選用） 授予對 Data Catalog 加密金鑰的存取權
<a name="setup-encrypted-catalog"></a>

如果 AWS Glue Data Catalog 已加密，請將 AWS KMS 金鑰上的 AWS Identity and Access Management 許可授予需要對 Data Catalog 資料庫和資料表授予 Lake Formation 許可的任何委託人。

如需詳細資訊，請參閱《AWS Key Management Service 開發人員指南》**。

## （選用） 建立工作流程的 IAM 角色
<a name="iam-create-blueprint-role"></a>

使用 AWS Lake Formation，您可以使用 AWS Glue 爬蟲程式執行的*工作流程*匯入資料。工作流程會定義資料來源和排程，將資料匯入您的資料湖。您可以使用 Lake Formation 提供的*藍圖*或範本輕鬆定義工作流程。

建立工作流程時，您必須為其指派 AWS Identity and Access Management (IAM) 角色，授予 Lake Formation 擷取資料的必要許可。

下列程序假設您熟悉 IAM。

**為工作流程建立 IAM 角色**

1. 在 開啟 IAM 主控台，[https://console.aws.amazon.com/iam](https://console.aws.amazon.com/iam)並以您在 中建立的管理員使用者身分登入，[建立具有管理存取權的使用者](getting-started-setup.md#create-an-admin)或以`AdministratorAccess` AWS 受管政策的使用者身分登入。

1. 在導覽窗格中，選擇**角色**，然後選擇**建立角色**。

1. 在**建立角色**頁面上，選擇**AWS 服務**，然後選擇 **Glue**。選擇**下一步**。

1. 在**新增許可**頁面上，搜尋 **AWSGlueServiceRole** 受管政策，然後選取清單中政策名稱旁的核取方塊。然後完成**建立角色**精靈，命名角色 `LFWorkflowRole`。若要完成，請選擇**建立角色**。

1. 返回**角色**頁面，搜尋 `LFWorkflowRole`，然後選擇角色名稱。

1. 在角色**摘要**頁面的**許可**索引標籤下，選擇**建立內嵌政策**。在**建立政策**畫面上，導覽至 JSON 索引標籤，然後新增下列內嵌政策。政策的建議名稱為 `LakeFormationWorkflow`。
**重要**  
在下列政策中，將 {{<account-id>}} 取代為有效的 AWS 帳戶 數字。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                    "lakeformation:GetDataAccess",
                    "lakeformation:GrantPermissions"
                ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": ["iam:PassRole"],
               "Resource": [
                   "arn:aws:iam::{{111122223333}}:role/LakeFormationWorkflowRole"
               ]
           }
       ]
   }
   ```

------

   以下是此政策中許可的簡短描述：
   + `lakeformation:GetDataAccess` 可讓工作流程建立的任務寫入目標位置。
   + `lakeformation:GrantPermissions` 可讓工作流程授予目標資料表的 `SELECT` 許可。
   + `iam:PassRole` 可讓服務擔任角色`LakeFormationWorkflowRole`來建立爬蟲程式和任務 （工作流程執行個體），並將角色連接到建立的爬蟲程式和任務。

1. 確認角色`LakeFormationWorkflowRole`已連接兩個政策。

1. 如果您要擷取資料湖位置以外的資料，請新增內嵌政策，授予讀取來源資料的許可。