本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Amazon 啟用 Lake Formation EMR
使用 Amazon EMR 6.15.0 和更新版本,當您EMR在存取 AWS Glue Data Catalog 中資料的EC2叢集上執行 Amazon 上的 Spark 任務時,您可以使用 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": { "EnableInTransitEncryption": true, "InTransitEncryptionConfiguration": { "TLSCertificateConfiguration": {<certificate-configuration>} } } }
-
接下來,若要確保工作階段標籤可以授權 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 主控台的外部資料篩選區段中設定此工作階段標籤。Replace (取代) 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 APIs和資源的存取。雖然您可能擁有 Lake Formation 許可,可存取資料型錄 (SELECT) 中的資料表,但如果您沒有 glue:Get*
的IAM許可,您的操作會失敗API。如需有關 Lake Formation 存取控制的更多詳細資訊,請參閱 Lake Formation 存取控制概觀。
-
使用下列內容建立
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": "*" } }
-
建立相關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。如需詳細的 end-to-end範例,請參閱介紹 Amazon EMR 步驟 的執行期角色