使用 Amazon 啟用 Lake Formation EMR - Amazon EMR

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

使用 Amazon 啟用 Lake Formation EMR

使用 Amazon EMR 6.15.0 及更高版本時,當您在存取 AWS Glue 資料型錄中資料的EC2叢集EMR上執行 Spark 任務時,您可 AWS Lake Formation 以使用在 Hudi、冰山或達美湖的表格上套用表、列、欄和儲存格層級許可。

在本節中,我們將介紹如何創建安全配置以及如何設置 Lake Formation 以與 Amazon 合作EMR。我們還將介紹如何使用您為 Lake Formation 建立的安全組態啟動叢集。

步驟 1:設定EMR叢集的執行階段角色

若要為EMR叢集使用執行階段角色,您必須建立安全性組態。透過安全組態,您可以在叢集中套用一致的安全、授權和身分驗證選項。

  1. 建立稱為 lf-runtime-roles-sec-cfg.json 的檔案,其中具有下列安全組態。

    { "AuthorizationConfiguration": { "IAMConfiguration": { "EnableApplicationScopedIAMRole": true, "ApplicationScopedIAMRoleConfiguration": { "PropagateSourceIdentity": true } }, "LakeFormationConfiguration": { "AuthorizedSessionTagValue": "Amazon EMR" } }, "EncryptionConfiguration": { "EnableInTransitEncryption": true, "InTransitEncryptionConfiguration": { "TLSCertificateConfiguration": {<certificate-configuration>} } } }
  2. 接下來,若要確保工作階段標籤可以授權 Lake Formation,請將 LakeFormationConfiguration/AuthorizedSessionTagValue 屬性設定為 Amazon EMR

  3. 使用下列命令建立 Amazon EMR 安全組態。

    aws emr create-security-configuration \ --name 'iamconfig-with-iam-lf' \ --security-configuration file://lf-runtime-roles-sec-cfg.json

    或者,您可以使用 Amazon EMR 主控台建立具有自訂設定的安全組態。

步驟 2:啟動 Amazon EMR 群集

現在,您可以使用您在上一個步驟中建立的安全性設定來啟動EMR叢集。如需有關安全組態的詳細資訊,請參閱 使用安全組態設定叢集安全性Amazon EMR 步驟的執行階段角色

步驟 3a:使用 Amazon 執行階段角色設定以 Lake Formation 為基礎的表格層級許可 EMR

如果您不需要在資料欄、資料列或儲存格層級進行精細存取控制,則可以使用 Glue Data Catalog 來設定資料表層級許可。若要啟用表格層級存取,請導覽至 AWS Lake Formation 主控台,然後從側邊欄的「管理」區段中選取「應用程式整合設定」選項。接著,請啟用以下選項並選擇儲存

允許外部引擎使用完整資料表存取權限來存取 Amazon S3 位置中的資料

Lake Formation 外部資料篩選

步驟 3b:使用 Amazon 執行階段角色設定 LLake Formation 欄、列或儲存格層級許可 EMR

若要使用 Lake Formation 套用資料表和資料欄層級許可,Lake Formation 的資料湖管理員必須將 Amazon EMR 設定為工作階段標籤組態的值 AuthorizedSessionTagValue。Lake Formation 使用此工作階段標籤來授權呼叫者並提供對資料湖的存取權。您可以在 Lake Formation 主控台的外部資料篩選區段中設定此工作階段標籤。Replace (取代) 123456789012 使用您自己的 AWS 帳戶 身份證。

Lake Formation 外部資料篩選

步驟 4:為 Amazon EMR 執行階段角色設定 AWS Glue 和 Lake Formation 補助

若要使用 Amazon 執行階段角色繼續設定以湖泊形成為基礎的存取控制,您必須為 Amazon EMR 執行階EMR段角色設定 AWS Glue 和 Lake Formation 授權。若要允許您的IAM執行階段角色與 Lake Formation 互動,請將存取權授予lakeformation:GetDataAccessglue:Get*

Lake Formation 許可控制對 AWS Glue 資料型錄資源、Amazon S3 位置以及這些位置基礎資料的存取。IAM權限控制對 Lake Formation 和 AWS Glue APIs 和資源的訪問。雖然您可能擁有 Lake Formation 權限來存取資料目錄 (SELECT) 中的資料表,但是如果您沒有 glue:Get*API. IAM 如需有關 Lake Formation 存取控制的更多詳細資訊,請參閱 Lake Formation 存取控制概觀

  1. 使用下列內容建立 emr-runtime-roles-lake-formation-policy.json 檔案。

    { "Version": "2012-10-17", "Statement": { "Sid": "LakeFormationManagedAccess", "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess", "glue:Get*", "glue:Create*", "glue:Update*" ], "Resource": "*" } }
  2. 建立相關IAM策略。

    aws iam create-policy \ --policy-name emr-runtime-roles-lake-formation-policy \ --policy-document file://emr-runtime-roles-lake-formation-policy.json
  3. 若要將此原則指派給您的IAM執行階段角色,請遵循管理 AWS Lake Formation 權限中的步驟。

您現在可以使用執行期角色和 Lake Formation 來套用資料表和資料欄層級許可。您也可以使用來源身分識別來控制動作和監視作業 AWS CloudTrail。如需詳細的 end-to-end 範例,請參閱介紹 Amazon EMR 步驟的執行階段角色