本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 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 叢集設定執行期角色,您必須建立安全組態。透過安全組態,您可以在叢集中套用一致的安全、授權和身分驗證選項。
-
建立稱為
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 中的憑證進行憑證組態:
-
使用 Amazon S3 中具有憑證的 zip 檔案做為金鑰提供者。(如需憑證需求使用 Amazon EMR 加密提供傳輸中資料的加密憑證,請參閱 。)
"TLSCertificateConfiguration": { "CertificateProviderType": "PEM", "S3Object": "s3://MyConfigStore/artifacts/MyCerts.zip" }
以下範例說明如何使用自訂金鑰提供者進行憑證組態:
-
使用自訂金鑰提供者。(如需憑證需求使用 Amazon EMR 加密提供傳輸中資料的加密憑證,請參閱 。)
"TLSCertificateConfiguration": { "CertificateProviderType": "Custom", "S3Object": "s3://MyConfig/artifacts/MyCerts.jar", "CertificateProviderClass": "com.mycompany.MyCertProvider" }
-
-
接下來,若要確保工作階段標籤可以授權 Lake Formation,請將
LakeFormationConfiguration/AuthorizedSessionTagValue
屬性設定為Amazon EMR
。 -
使用下列命令來建立 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 步驟的執行期角色。
步驟 3a:使用 Amazon EMR 執行期角色來設定 Lake Formation 型資料表層級許可
如果您不需要在資料欄、資料列或儲存格層級進行精細存取控制,則可以使用 Glue Data Catalog 來設定資料表層級許可。若要啟用資料表層級存取,請導覽至 AWS Lake Formation 主控台,然後從側邊列的管理區段中選取應用程式整合設定選項。接著,請啟用以下選項並選擇儲存:
允許外部引擎使用完整資料表存取權限來存取 Amazon S3 位置中的資料

步驟 3b:使用 Amazon EMR 執行期角色來設定 Lake Formation 型資料欄、資料列或儲存格層級許可
若要使用 Lake Formation 套用資料表和資料欄層級許可,Lake Formation 的資料湖管理員必須將 Amazon EMR
設定為工作階段標籤組態的值 AuthorizedSessionTagValue
。Lake Formation 使用此工作階段標籤來授權呼叫者並提供對資料湖的存取權。您可以在 Lake Formation 主控台的外部資料篩選區段中設定此工作階段標籤。將 123456789012
取代為您自己的 AWS 帳戶
ID。

步驟 4:設定 Amazon EMR 執行期角色的 AWS Glue 和 Lake Formation 授權
若要使用 Amazon EMR 執行期角色繼續設定 Lake Formation 型存取控制,您必須為 Amazon EMR 執行期角色設定 AWS Glue 和 Lake Formation 授予。若要允許您的 IAM 執行期角色與 Lake Formation 互動,請使用 lakeformation:GetDataAccess
和 glue:Get*
授予它們存取權。
Lake Formation 許可控制對 AWS Glue Data Catalog 資源、Amazon S3 位置和這些位置基礎資料的存取。IAM 許可可控制對 Lake Formation 和 AWS Glue API 和資源的存取。雖然您可能具有 Lake Formation 許可來存取資料型錄 (SELECT) 中的資料表,但是如果您沒有 glue:Get*
API 的 IAM 許可,您的操作會失敗。如需有關 Lake Formation 存取控制的更多詳細資訊,請參閱 Lake Formation 存取控制概觀。
-
使用下列內容建立
emr-runtime-roles-lake-formation-policy.json
檔案。 -
建立相關的 IAM 政策。
aws iam create-policy \ --policy-name emr-runtime-roles-lake-formation-policy \ --policy-document file://emr-runtime-roles-lake-formation-policy.json
-
若要將此政策指派給 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 以存取 Glue Data Catalog AWS 中的多目錄階層。