本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Amazon EMR 6.15.0 及更高版本中,当您在访问 G AWS lue 数据目录中数据的EC2集群EMR上在 Amazon 上运行 Spark 作业时,您可以使用 AWS Lake Formation 对基于 Hudi、Iceberg 或 Delta Lake 的表应用表、行、列和单元级别的权限。
在本节中,我们将介绍如何创建安全配置以及如何设置 Lake Formation 以与亚马逊合作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:启动亚马逊集EMR群
现在,您已准备好使用您在上一步中创建的安全配置启动EMR集群。有关安全配置的更多信息,请参阅 使用安全配置来设置 Amazon EMR 集群安全 和 Amazon EMR 步骤的运行时角色。
步骤 3a:使用亚马逊运行时角色设置基于 Lake Formation 的表级权限 EMR
如果您不需要在列、行或单元格级别进行精细的访问控制,则可以使用 Glue 数据目录设置表级别的权限。要启用表格级访问权限,请导航到 AWS Lake Formation 控制台,然后从边栏的 “管理” 部分中选择 “应用程序集成设置” 选项。然后,启用以下选项并选择保存:
允许外部引擎以完整表访问权限访问 Amazon S3 位置的数据
步骤 3b:使用 Amazon 运行时角色设置基于 Lake Formation 的列、行或单元格级权限 EMR
要使用 Lake Formation 应用表和列级别权限,Lake Formation 的数据湖管理员必须将 Amazon EMR
设置为会话标签配置的值 AuthorizedSessionTagValue
。Lake Formation 使用该会话标签来授权调用者并提供对数据湖的访问权限。您可以在 Lake Formation 控制台的 External data filtering(外部数据筛选)部分设置该会话标签。123456789012
用你自己的 AWS 账户
身份证替换。
第 4 步:为亚马逊EMR运行时角色 AWS 配置 Glue 和 Lake Formation 授权
要继续使用亚马逊运行时角色设置基于 Lake Formation 的访问控制,您必须为亚马逊EMR运行时角色配置 AWS Glu EMR e 和 Lake Formation 授权。要允许您的IAM运行时角色与 Lake Formation 交互,请向他们授予lakeformation:GetDataAccess
和访问权限glue:Get*
。
Lake For AWS mation 权限控制对 Glue 数据目录资源、Amazon S3 位置以及这些位置的基础数据的访问权限。 IAM权限控制对 Lake Formation 和 AWS Glue APIs 以及资源的访问权限。尽管您可能拥有 Lake Formation 访问数据目录中表的权限 (SELECT),但如果您没有该IAM权限,则操作将失败glue:Get*
API。有关 Lake Formation 访问控制的更多信息,请参阅 Lake Formation access control overview(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 步骤介绍运行时角色
有关如何与 Iceberg 和 AWS Glue 数据目录集成以实现多目录层次结构的信息,请参阅在 Glue 数据目录中配置 Spark 以访问多目录层次结构 AWS 。