將AWS Glue資料權限升級至 AWS Lake Formation 模型 - AWS Lake Formation

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

將AWS Glue資料權限升級至 AWS Lake Formation 模型

AWS Lake Formation 權限可為資料湖中的資料提供精細的存取控制。您可以使用 Lake Formation 許可模型來管理 Amazon Simple Storage Service (Amazon S3) 中的現有 AWS Glue Data Catalog 物件和資料位置。

Lake Formation 權限模型使用粗粒度 AWS Identity and Access Management (IAM) 權限進行API服務存取。它限制了您的用戶和這些服務可以通過 Lake Formation 功能訪問的數據。相較之下,AWS Glue模型會透過精細的存取控制IAM權限授予資料存取權限。要進行切換,請按照本指南中的步驟進行操作。

如需詳細資訊,請參閱Lake Formation 許可權概述

關於預設權限

為了維持向下相容性AWS Glue,預設情況下Super, AWS Lake Formation 會將所有現有資AWS Glue料目錄資源的Super權限授與IAMAllowedPrincipals群組,並在啟用僅使用IAM存取控制設定時授與新資料目錄資源的權限。這有效地導致資料目錄資源和 Amazon S3 位置的存取僅由 AWS Identity and Access Management (IAM) 政策控制。IAMAllowedPrincipals群組包括您的IAM原則允許存取資料目錄物件的任何IAM使用者和角色。此Super權限可讓主體在授與該作業的資料庫或表格上執行每個受支援的 Lake Formation 作業。

您可以透過在 Lake Formation 中註冊現有資料目錄資源的位置,或使用混合存取模式,開始使用 Lake Formation 來管理對資料的存取。當您以混合式存取模式註冊 Amazon S3 位置時,可以透過選擇該位置下資料庫和表格的主體來啟用 Lake Formation 許可。

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

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

停用預設「資料目錄」設定,以在單一步驟中將表格的所有現有使用者移至 Lake Formation。

若要開始對現有AWS Glue資料目錄資料庫和表格使用 Lake Formation 權限,您必須執行下列動作:

  1. 確定用戶對每個數據庫和表的現有IAM權限。

  2. 在 Lake Formation 中複製這些權限。

  3. 對於包含資料的每個 Amazon S3 位置:

    1. 撤銷參考該位置之每個「資料目錄」資源上之IAMAllowedPrincipals群組的Super權限。

    2. 在 Lake Formation 註冊位置。

  4. 清理現有細緻的存取控制IAM原則。

重要

若要在轉換資料目錄的過程中新增使用者,您必須像以前一樣在中設定精細IAM的AWS Glue權限。您還必須按照本節中的說明複製 Lake Formation 中的這些權限。如果新使用者具有本指南中所述的粗略IAM原則,他們可以列出任何具有授與Super權限的資料庫或表格。IAMAllowedPrincipals他們也可以檢視這些資源的中繼資料。

請按照本節中的步驟升級到 Lake Formation 權限模型。

步驟 1:列出使用者和角色的現有權限

若要開始對現有AWS Glue資料庫和資料表使用 AWS Lake Formation 權限,您必須先決定使用者現有的權限。

重要

在開始之前,請確定您已完成中的工作開始使用 Lake Formation

使用操API作

使用 AWS Identity and Access Management (IAM) ListPoliciesGrantingServiceAccessAPI作業決定附加至每個主參與者 (使用者或角色) 的IAM原則。從結果中傳回的原則中,您可以決定授與主參與者的IAM權限。您必須API針對每個主參與者個別呼叫。

下列 AWS CLI 範例會傳回附加至使用者的策略glue_user1

aws iam list-policies-granting-service-access --arn arn:aws:iam::111122223333:user/glue_user1 --service-namespaces glue

命令會傳回類似下列內容的結果。

{ "PoliciesGrantingServiceAccess": [ { "ServiceNamespace": "glue", "Policies": [ { "PolicyType": "INLINE", "PolicyName": "GlueUserBasic", "EntityName": "glue_user1", "EntityType": "USER" }, { "PolicyType": "MANAGED", "PolicyArn": "arn:aws:iam::aws:policy/AmazonAthenaFullAccess", "PolicyName": "AmazonAthenaFullAccess" } ] } ], "IsTruncated": false }

使用 AWS Management Console

您也可以在 AWS Identity and Access Management (IAM) 主控台的使用者或角色「摘要」頁面的「存取建議程式」頁籤中查看此資訊:

  1. 在開啟IAM主控台https://console.aws.amazon.com/iam/

  2. 在服務導覽窗格中,選擇 Users (使用者) 或者 Roles (角色)

  3. 在清單中選擇名稱以開啟其「摘要」頁面,然後選擇「存取建議程式」頁籤。

  4. 檢查每個原則,以判斷每個使用者都有權限的資料庫、資料表和動作的組合。

    在此過程中,除了使用者之外,還要檢查角色,因為您的資料處理工作可能會假定角色來存取資料。

使用 AWS CloudTrail

判斷現有權限的另一種方法是尋找記錄additionaleventdata欄位包含insufficientLakeFormationPermissions項目的AWS GlueAPI呼叫。 AWS CloudTrail 此項目列出使用者需要 Lake Formation 權限才能採取相同動作的資料庫和表格。

這些是資料存取記錄,因此不保證會產生完整的使用者及其權限清單。我們建議您選擇較寬的時間範圍,以擷取大部分使用者的資料存取模式,例如數週或數月。

如需詳細資訊,請參閱AWS CloudTrail 使用指南中的檢視具有 CloudTrail 事件歷程記錄的事件。

接下來,您可以設置 Lake Formation 權限以匹配AWS Glue權限。請參閱 第 2 步:設置等效的 Lake Formation 權限

第 2 步:設置等效的 Lake Formation 權限

使用中收集的資訊步驟 1:列出使用者和角色的現有權限,授與與 AWS Lake Formation 權限相符的AWS Glue權限。使用下列任一方法來執行授權:

如需詳細資訊,請參閱Lake Formation 許可權概述

設置 Lake Formation 許可權後,繼續步驟 3:授予用戶使用 Lake Formation 的IAM權限

步驟 3:授予用戶使用 Lake Formation 的IAM權限

若要使用 AWS Lake Formation 權限模型,主體必須具有 AWS Identity and Access Management (IAM) 對 Lake Formation APIs 的權限。

在中建立下列原則,IAM並將其附加至需要存取資料湖的每個使用者。將政策命名為 LakeFormationDataAccess

{ "Version": "2012-10-17", "Statement": [ { "Sid": "LakeFormationDataAccess", "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess" ], "Resource": "*" } ] }

接下來,升級到 Lake Formation 權限一次一個數據位置。請參閱 步驟 4:將資料存放區切換至 Lake Formation 型權限模型

步驟 4:將資料存放區切換至 Lake Formation 型權限模型

每次升級至 Lake Formation 權限一個資料位置。若要這麼做,請重複此整節,直到您註冊資料目錄參考的所有 Amazon 簡單儲存服務 (Amazon S3) 路徑為止。

驗證 Lake Formation 的權限

在註冊位置之前,請執行驗證步驟,以確保正確的主參與者具有必要的 Lake Formation 權限,並且不會將 Lake Formation 權限授與不應擁有這些權限的主參與者。使用 Lake Formation GetEffectivePermissionsForPath API 操作,識別參考 Amazon S3 位置的資料目錄資源,以及對這些資源具有許可的主體。

下列 AWS CLI 範例會傳回參照 Amazon S3 儲存貯體的資料目錄資料庫和表格products

aws lakeformation get-effective-permissions-for-path --resource-arn arn:aws:s3:::products --profile datalake_admin

請注意profile選項。我們建議您以資料湖管理員的身分執行命令。

以下是傳回結果的摘錄。

{ "PermissionsWithGrantOption": [ "SELECT" ], "Resource": { "TableWithColumns": { "Name": "inventory_product", "ColumnWildcard": {}, "DatabaseName": "inventory" } }, "Permissions": [ "SELECT" ], "Principal": { "DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/datalake_user1", "DataLakePrincipalType": "IAM_USER" } },...
重要

如果您的AWS Glue資料目錄已加密,則只會GetEffectivePermissionsForPath傳回在 Lake Formation 正式運作之後建立或修改的資料庫和表格。

保護現有資料目錄資源

接下來IAMAllowedPrincipals,撤銷您為該位置識別的每個資料表和資料庫的Super權限。

警告

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

若要在表格IAMAllowedPrincipals上撤銷 Super
  1. 在開啟 AWS Lake Formation 主控台https://console.aws.amazon.com/lakeformation/。以資料湖管理員身分登入。

  2. 在導覽窗格中,選擇 Tables (資料表)。

  3. 在「表格」頁面上,選取所需表格旁邊的圓鈕。

  4. 在 [動作] 功能表上,選擇 [撤銷]。

  5. 在 [撤銷權限] 對話方塊的 [IAM使用者和角色] 清單中,向下捲動至 [群組] 標題,然後選擇IAMAllowedPrincipals

  6. 在 [資料表權限] 底下,確定已選取 [超級],然後選擇 [撤銷]。

若要撤SuperIAMAllowedPrincipals資料庫
  1. 在開啟 AWS Lake Formation 主控台https://console.aws.amazon.com/lakeformation/。以資料湖管理員身分登入。

  2. 在導覽窗格中,選擇 Databases (資料庫)。

  3. 在「料庫」頁面上,選取所需資料庫旁邊的圓鈕。

  4. Actions (動作) 功能表上,選擇 Edit (編輯)

  5. 在 [編輯資料庫] 頁面上,清除 [僅對此資料庫中的新表格使用存IAM取控制],然後選擇 [儲存]。

  6. 返回 [料庫] 頁面,確定資料庫仍處於選取狀態,然後在 [動作] 功能表上選擇 [撤銷]。

  7. 在 [撤銷權限] 對話方塊的 [IAM使用者和角色] 清單中,向下捲動至 [群組] 標題,然後選擇IAMAllowedPrincipals

  8. 在 [資料庫權限] 底下,確定已選取 [超級],然後選擇 [撤銷]。

為您的 Amazon S3 位置開啟 Lake Formation 許可

接下來,向 Lake Formation 註冊 Amazon S3 位置。若要這麼做,您可以使用中所述的程序將 Amazon S3 位置新增至您的資料湖。或者,如中所述使用RegisterResourceAPI操作憑證自動販賣 API

注意

如果已註冊父地點,則不需要註冊子位置。

完成這些步驟並測試使用者是否可以存取其資料後,您已成功升級至 Lake Formation 權限。繼續執行下一個步驟,步驟 5:保護新的資料目錄資源

步驟 5:保護新的資料目錄資源

接下來,透過變更預設資料目錄設定來保護所有新資料目錄資源的安全。關閉僅對新資料庫和表格使用 AWS Identity and Access Management (IAM) 存取控制的選項。

警告

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

變更預設資料目錄設定的步驟
  1. 在開啟 AWS Lake Formation 主控台https://console.aws.amazon.com/lakeformation/。以IAM系統管理使用者身分登入 (具有AdministratorAccess AWS 受管理策略的使用者Administrator或其他使用者)。

  2. 在導覽窗格中,選擇設定

  3. 在 [資料目錄設定] 頁面上,清除這兩個核取方塊,然後選擇 [儲存]。

下一個步驟是將來授與使用者存取其他資料庫或資料表 future 權限。請參閱 步驟 6:為使用者提供 future 資料湖存取的新IAM原則

步驟 6:為使用者提供 future 資料湖存取的新IAM原則

若要在 future 授與使用者存取其他「資料目錄」資料庫或表格,您必須提供下列粗粒度 AWS Identity and Access Management (IAM) 內嵌原則。將政策命名為 GlueFullReadAccess

重要

如果您在資料目錄SuperIAMAllowedPrincipals的每個資料庫和表格撤銷之前將此原則附加至使用者,則該使用者可以檢視授與之任何資源的所有中Super繼資料。IAMAllowedPrincipals

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GlueFullReadAccess", "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess", "glue:GetTable", "glue:GetTables", "glue:SearchTables", "glue:GetDatabase", "glue:GetDatabases", "glue:GetPartitions" ], "Resource": "*" } ] }
注意

在此步驟中指定的內嵌原則與先前步驟包含最低IAM權限。如需資料湖管理員、資料分析師和其他角色角色的建議政策,請參閱Lake Formation 角色和 IAM 許可參考

接下來,繼續步驟 7:清除現有IAM策略

步驟 7:清除現有IAM策略

設定 AWS Lake Formation 權限並建立並附加粗粒度存取控制 AWS Identity and Access Management (IAM) 原則之後,請完成下列最後一個步驟:

  • 從使用者、群組和角色中移除您在 Lake Formation 中複製的舊細緻存取控制IAM原則。

這樣可以確保這些主體不再能夠直接存取 Amazon Simple Storage Service (Amazon S3) 中的資料。然後,您可以完全透過 Lake Formation 管理這些主體的資料湖存取。