View a markdown version of this page

使用 Amazon EMR 啟用 Lake Formation - Amazon EMR

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

使用 Amazon EMR 啟用 Lake Formation

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

在本章節中,我們將介紹如何建立安全組態,以及如何設定 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": { "EnableAtRestEncryption": false, "EnableInTransitEncryption": true, "InTransitEncryptionConfiguration": { "TLSCertificateConfiguration": {<certificate-configuration>} } } }

    以下範例說明如何使用 zip 檔案搭配 Amazon S3 中的憑證進行憑證組態:

    "TLSCertificateConfiguration": { "CertificateProviderType": "PEM", "S3Object": "s3://MyConfigStore/artifacts/MyCerts.zip" }

    以下範例說明如何使用自訂金鑰提供者進行憑證組態:

    "TLSCertificateConfiguration": { "CertificateProviderType": "Custom", "S3Object": "s3://MyConfig/artifacts/MyCerts.jar", "CertificateProviderClass": "com.mycompany.MyCertProvider" }
  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 叢集安全性Amazon EMR 步驟的執行期角色

步驟 3:使用 Amazon EMR 執行時間角色設定 Lake Formation 型資料欄、資料列或儲存格層級許可

若要使用 Lake Formation 在資料欄、資料列或儲存格層級套用精細存取控制,Lake Formation 的資料湖管理員必須設定為工作階段標籤組態 Amazon EMR的值AuthorizedSessionTagValue。Lake Formation 使用此工作階段標籤來授權呼叫者並提供對資料湖的存取權。您可以在 Lake Formation 主控台的應用程式整合設定區段中設定此工作階段標籤。將 123456789012 取代為您自己的 AWS 帳戶 ID。

下圖顯示 Lake Formation 主控台中的外部資料篩選區段。

Lake Formation 主控台外部資料篩選設定區段。

步驟 4:設定 AWS Amazon EMR 執行期角色的 Glue 和 Lake Formation 授權

若要使用 Amazon EMR 執行期角色繼續設定 Lake Formation 型存取控制,您必須為 Amazon EMR 執行期角色設定 AWS Glue 和 Lake Formation 授予。若要允許您的 IAM 執行期角色與 Lake Formation 互動,請使用 lakeformation:GetDataAccessglue:Get* 授予它們存取權。

Lake Formation 許可控制對 AWS Glue Data Catalog 資源、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 檔案。

    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。

針對您打算用作執行期角色的每個 IAM 角色,設定下列信任政策,並將 EMR_EC2_DefaultRole 取代為您的執行個體設定檔角色。若要修改 IAM 角色的信任政策,請參閱修改角色信任政策

{ "Sid":"AllowAssumeRole", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::<AWS_ACCOUNT_ID>:role/EMR_EC2_DefaultRole" }, "Action":[ "sts:AssumeRole", "sts:TagSession" ] }

如需詳細的端對端範例,請參閱 Amazon EMR 步驟的執行期角色簡介

如需有關如何整合多目錄階層的 Iceberg 和 AWS Glue Data Catalog 的資訊,請參閱設定 Spark 以存取 AWS Glue Data Catalog 中的多目錄階層