使用 Amazon EMR 启用 Lake Formation - Amazon EMR

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Amazon EMR 启用 Lake Formation

在 Amazon EMR 6.15.0 及更高版本中,当您在访问 G AWS lue 数据目录中数据的 EC2 集群上在 Amazon EMR 上运行 Spark 作业时,您可以使用 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": { "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 EMR 运行时系统角色设置基于 Lake Formation 的表级别权限

如果您不需要在列、行或单元格级别进行精细的访问控制,则可以使用 Glue 数据目录设置表级别的权限。要启用表格级访问权限,请导航到 AWS Lake Formation 控制台,然后从边栏的 “管理” 部分中选择 “应用程序集成设置” 选项。然后,启用以下选项并选择保存

允许外部引擎以完整表访问权限访问 Amazon S3 位置的数据

Lake Formation 外部数据筛选

步骤 3b:使用 Amazon EMR 运行时系统角色设置基于 Lake Formation 的列、行或单元格级别权限

要使用 Lake Formation 应用表和列级别权限,Lake Formation 的数据湖管理员必须将 Amazon EMR 设置为会话标签配置的值 AuthorizedSessionTagValue。Lake Formation 使用该会话标签来授权调用者并提供对数据湖的访问权限。您可以在 Lake Formation 控制台的 External data filtering(外部数据筛选)部分设置该会话标签。将 123456789012 替换为您自己的 AWS 账户 ID。

Lake Formation 外部数据筛选

第 4 步:为亚马逊 EMR 运行时角色配置 AWS Glue 和 Lake Formation 授权

要继续使用亚马逊 EMR 运行时角色设置基于 Lake Formation 的访问控制,您必须为亚马逊 EMR 运行时角色配置 Gl AWS ue 和 Lake Formation 授权。要让您的 IAM 运行时角色与 Lake Formation 进行交互,请使用 lakeformation:GetDataAccessglue:Get* 向其授予访问权限。

Lake For AWS mation 权限控制对 Glue 数据目录资源、Amazon S3 位置以及这些位置的基础数据的访问权限。IAM 权限控制对 Lake Formation 和 AWS Glue API 及资源的访问。尽管您可能拥有访问数据目录 (SELECT) 中的表的 Lake Formation 权限,但如果没有 glue:Get* API 的 IAM 权限,您的操作将失败。有关 Lake Formation 访问控制的更多信息,请参阅 Lake Formation access control overview(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 policy。

    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 步骤介绍运行时角色