設定 AWS Lake Formation - AWS Lake Formation

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

設定 AWS Lake Formation

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

本節介紹如何以兩種不同的方式設置 Lake Formation 資源:

  • 使用 AWS CloudFormation 範本

  • 使用 Lake Formation 控制台

要使用 AWS 控制台設置 Lake Formation,請轉到建立資料湖管理員

使用 AWS CloudFormation 模板設置 Lake Formation 資源

注意

AWS CloudFormation 堆疊會執行上述步驟 1 到 6,但步驟 2 和 5 除外。從 Lake Formation 控制台進行變更預設權限模型或使用混合存取模式整合IAM識別中心手動執行。

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

  2. 選擇「啟動堆疊」。

  3. 在「建立堆疊」畫面中選擇「一步」

  4. 輸入堆疊名稱。

  5. DatalakeAdminName和中 DatalakeAdminPassword,輸入資料湖管理員使用者的使用者名稱和密碼。

  6. 對於 DatalakeUser1NameDatalakeUser1Password,請輸入資料湖分析師使用者的使用者名稱和密碼。

  7. 針對 DataLakeBucketName,輸入要建立的新值區名稱。

  8. 選擇下一步

  9. 在下一頁上,選擇 [下一步]。

  10. 檢閱最後一頁上的詳細資訊,然後選取 [我確認 AWS CloudFormation 可能會建立 IAM 資源]。

  11. 選擇建立

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

清除資源

如果您想清理堆 AWS CloudFormation 棧資源:

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

  2. 刪除 AWS CloudFormation 堆疊。這將刪除堆棧創建的所有資源。

建立資料湖管理員

資料湖管理員最初是唯 AWS Identity and Access Management 一可以將資料位置和資料目錄資源的 Lake Formation 權限授與任何主體 (包括自己) 的 (IAM) 使用者或角色。如需有關資料湖管理員權能的更多資訊,請參閱隱含 Lake Formation 權限。根據預設,Lake Formation 允許您建立多達 30 個資料湖管理員。

您可以使用湖泊形成控制台或湖泊形成 API 的PutDataLakeSettings操作來創建數據 Lake Formation 管理員。

建立資料湖管理員需要下列權限。Administrator使用者具有隱含的這些權限。

  • lakeformation:PutDataLakeSettings

  • lakeformation:GetDataLakeSettings

如果您授與使用者AWSLakeFormationDataAdmin原則,該使用者將無法建立其他 Lake Formation 管理員使用者。

若要建立資料湖管理員 (主控台)
  1. 如果要成為資料湖管理員的使用者尚不存在,請使用 IAM 主控台建立該使用者。否則,請選擇要成為資料湖管理員的現有使用者。

    注意

    建議您不要選取 IAM 管理使用者 (具有AdministratorAccess AWS 受管政策的使用者) 做為資料湖管理員。

    將下列 AWS 受管理的策略附加到使用者:

    政策 強制性? 備註
    AWSLakeFormationDataAdmin 強制性 基本資料湖管理員權限。此 AWS 受管政策包含 Lake Formation API 作業的明確拒絕,PutDataLakeSetting限制使用者建立新的資料湖管理員。
    AWSGlueConsoleFullAccess, CloudWatchLogsReadOnlyAccess 選用 如果資料湖管理員將對從 Lake Formation 藍圖建立的工作流程進行疑難排解,請附加這些原則。這些原則可讓資料湖管理員在AWS Glue主控台和主控台中檢視疑難排解資訊。 Amazon CloudWatch Logs 如需工作流程的資訊,請參閱使用 Lake Formation 的工作流程匯入資料
    AWSLakeFormationCrossAccountManager 選用 附加此原則可讓資料湖管理員授與和撤銷資料目錄資源的跨帳戶權限。如需詳細資訊,請參閱 Lake Formation 的跨賬戶數據共享
    AmazonAthenaFullAccess 選用 如果資料湖管理員將在中執行查詢,請附加此原則 Amazon Athena。
  2. 附加下列內嵌政策,該原則會授與資料湖管理員建立 Lake Formation 服務連結角色的權限。策略的建議名稱為LakeFormationSLR

    服務連結角色可讓資料湖管理員更輕鬆地向 Lake Formation 註冊 Amazon S3 位置。有關 Lake Formation 服務鏈接角色的更多信息,請參閱使用服務連結角色進行 Lake Formation

    重要

    在下列所有策略中,請以<account-id>有效的 AWS 帳號取代。

    { "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" } ] }
  3. (選擇性) 將下列PassRole內嵌原則附加至使用者。此原則可讓資料湖管理員建立和執行工作流程。此iam:PassRole權限可讓工作流程擔任建立爬行者程式和工作的角色LakeFormationWorkflowRole,以及將角色附加至建立的爬行者程式和工作。策略的建議名稱為UserPassRole

    重要

    以<account-id>有效的 AWS 帳號取代。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "PassRolePermissions", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::<account-id>:role/LakeFormationWorkflowRole" ] } ] }
  4. (可選)如果您的帳戶將授予或接收跨帳戶 Lake Formation 權限,請附加此額外的內嵌政策。此原則可讓資料湖管理員檢視並接受 AWS Resource Access Manager (AWS RAM) 資源共用邀請。此外,對於 AWS Organizations 管理帳戶中的資料湖管理員,此原則包含啟用跨帳戶授與組織的權限。如需詳細資訊,請參閱 Lake Formation 的跨賬戶數據共享

    策略的建議名稱為RAMAccess

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ram:AcceptResourceShareInvitation", "ram:RejectResourceShareInvitation", "ec2:DescribeAvailabilityZones", "ram:EnableSharingWithAwsOrganization" ], "Resource": "*" } ] }
  5. https://console.aws.amazon.com/lakeformation/ 開啟 AWS Lake Formation 主控台,然後以您在其中建立的系統管理員使用者身分登入,建立具有管理權限的使用者或以具有使用者 AWS 管理策略的AdministratorAccess使用者身分登入。

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

  7. 如果您沒有看到「歡迎使用 Lake Formation」視窗,請執行以下步驟來配置 Lake Formation 管理員。

    1. 在瀏覽窗格的 [系統管理員] 下,選擇 [系統管理角色和工作]。在主控台頁面的 [資料湖管理員] 區段中,選擇 [新增]。

    2. 在 [新增管理員] 對話方塊的 [存取類型] 下,選擇 [資料湖管理員]。

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

變更預設權限模型或使用混合存取模式

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

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

如需詳細資訊,請參閱 混合存取模式

停用預設設定,只需一個步驟,即可將表格的所有現有使用者移至 Lake Formation。

重要

如果您有現有的AWS Glue Data Catalog資料庫和資料表,請勿遵循本節中的指示。或者,請遵循將AWS Glue資料權限升級至 AWS Lake Formation 模型中的說明進行。

警告

如果您已在資料目錄中建立資料庫和表格的自動化,則下列步驟可能會導致自動化和下游擷取、轉換和載入 (ETL) 工作失敗。只有在修改現有程序或將明確的 Lake Formation 權限授與必要主參與者之後,才繼續執行。如需 Lake Formation 權限的相關資訊,請參閱Lake Formation 權限參考

變更預設資料目錄設定的步驟
  1. 繼續在 Lake Formation 控制台 https://console.aws.amazon.com/lakeformation/. 請確定您以您在其中建立的系統管理員使用者身分登入,建立具有管理權限的使用者或以具有AdministratorAccess AWS 受管理策略的使用者身分登入。

  2. 修改「資料目錄」設定:

    1. 在導覽窗格的 [系統管理] 下,選擇 [資料目錄設定]。

    2. 清除這兩個核取方塊並選擇 [儲存]。

      「資料目錄設定」對話方塊的副標題為「新建立的資料庫和表格的預設權限」,並有兩個核取方塊,如文字中所述。
  3. 撤銷資料庫建立者的IAMAllowedPrincipals權限。

    1. 在功能窗格的 [系統管理] 下,選擇 [系統管理角色和工作]。

    2. 在 [管理角色和工作] 主控台頁面的 [資料庫建立者] 區段中,選取IAMAllowedPrincipals群組,然後選擇 [撤銷]。

      [撤銷權限] 對話方塊隨即出現,並顯示IAMAllowedPrincipals具有 [建立資料庫] 權限。

    3. 選擇「撤銷」。

將權限分配給 Lake Formation 用戶

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

如需建立使用者或群組的詳細資訊,請參閱 IAM 使用者指南中的 IAM 身分

將權限附加至非系統管理員使用者以存取 Lake Formation 資料
  1. 在以下位置開啟 IAM 主控台,https://console.aws.amazon.com/iam並以您在其中建立的管理員使用者身分登入,建立具有管理權限的使用者或以AdministratorAccess AWS 受管政策的使用者身分登入。

  2. 選擇使用者使用者群組

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

    選擇許可

  4. 選擇 [新增權限],並選擇 [直接附加原則]。Athena篩選策略文字欄位中輸入。在結果清單中,勾選的方塊AmazonAthenaFullAccess

  5. 選擇 [建立原則] 按鈕。在建立政策頁面上,選擇 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": "*" } ] }
  6. 選擇底部的「下一步」按鈕,直到看到「檢閱政策」頁面為止。輸入策略的名稱,例如DatalakeUserBasic。選擇「建立策略」,然後關閉「略」標籤或瀏覽器視窗。

為您的資料湖設定 Amazon S3 位置

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

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

在下列情況下使用自訂角色:

您選擇的角色必須具有必要的權限,如中所述用於註冊地點的角色需求。如需有關如何註冊 Amazon S3 位置的指示,請參閱將 Amazon S3 位置新增至您的資料湖

(選擇性) 外部資料篩選設定

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

Lake Formation 支持列級權限,以限制對表中特定列的訪問。整合式分析服務 (例如 Amazon Athena Amazon Redshift Spectrum 和 Amazon EMR) 會從中擷取未篩選的表格中繼資料。 AWS Glue Data Catalog查詢回應中欄的實際篩選是整合式服務的責任。協力廠商管理員有責任妥善處理權限,以避免未經授權存取資料。

選擇加入以允許第三方引擎存取和篩選資料(主控台)
  1. 繼續在 Lake Formation 控制台 https://console.aws.amazon.com/lakeformation/. 確保您以主體的身分登入,且該主體具有 Lake Formation PutDataLakeSettings API 作業的 IAM 許可。您在中建立的 IAM 管理員使用者註冊一個 AWS 帳戶具有此權限。

  2. 在功能窗格的 [系統管理] 下,選擇 [應用程式整合設定]。

  3. 在 [應用程式整合設定] 頁面上,執行下列動作:

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

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

    3. 對於AWS 帳號 ID,請輸入允許第三方引擎存取在 Lake Formation 註冊地點的帳號 ID。在每個帳戶 ID 之後按 Enter 鍵。

    4. 選擇儲存

若要允許外部引擎在沒有工作階段標籤驗證的情況下存取資料 完整表格存取的應用程式整合

(選擇性) 授與資料目錄加密金鑰的存取權

如果 AWS Glue Data Catalog 已加密,請將 AWS KMS 金鑰 AWS Identity and Access Management (IAM) 權限授與任何需要在資料目錄資料庫和表格上授與 Lake Formation 權限的主體。

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

(選擇性) 為工作流程建立 IAM 角色

使用 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並以您在其中建立的管理員使用者身分登入,建立具有管理權限的使用者或以AdministratorAccess AWS 受管政策的使用者身分登入。

  2. 在導覽窗格中,選擇角色,然後選擇建立角色。

  3. 在 [建立角色] 頁面上,選擇 [AWS 服務],然後選擇 [Glue]。選擇下一步

  4. 在 [新增權限] 頁面上,搜尋受AWSGlueServiceRole管理的原則,然後選取清單中原則名稱旁邊的核取方塊。然後完成 [建立角色] 精靈,命名角色LFWorkflowRole。若要完成,請選擇 [建立角色]。

  5. 返回「角色」頁面,搜尋LFflowRole並選擇角色名稱。

  6. 在角色 [摘要] 頁面的 [權限] 索引標籤下,選擇 [建立內嵌原則]。在「建立政策」畫面上,瀏覽至 JSON 索引標籤,然後新增下列內嵌政策。策略的建議名稱為LakeFormationWorkflow

    重要

    在下列原則中,請以<account-id>有效的 AWS 帳戶 數字取代

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

    以下是此原則中權限的簡短說明:

    • lakeformation:GetDataAccess可讓工作流程建立的工作寫入目標位置。

    • lakeformation:GrantPermissions可讓工作流程授與目標資料表的SELECT權限。

    • iam:PassRole可讓服務擔任建立爬行者程式和工作 (工作流程執行個體) 的角色,並將角色附加至建立的爬行者程式和工作。LakeFormationWorkflowRole

  7. 確認角色LakeFormationWorkflowRole已附加兩個原則。

  8. 如果您要擷取資料湖位置之外的資料,請新增內嵌政策,授與讀取來源資料的權限。