使用 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 集群安全性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 账户 身份证替换。

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 APIs 以及资源的访问。尽管您可能拥有访问数据目录 (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 步骤介绍运行时角色

有关如何与 Iceberg 和 AWS Glue 数据目录集成以实现多目录层次结构的信息,请参阅在 Glue 数据目录中配置 Spark 以访问多目录层次结构 AWS 。