使用 Amazon EMR 启用 Lake Formation - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 Amazon EMR 启用 Lake Formation

在本节中,我们将介绍如何创建安全配置和设置 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 步骤的运行时角色

步骤 4:使用 Amazon EMR 运行时角色设置基于 Lake Formation 的访问控制

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


					Lake Formation 外部数据筛选

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

Lake Formation 权限控制对 Amazon Glue 数据目录资源、Amazon S3 位置以及这些位置的基础数据的访问。IAM 权限控制对 Lake Formation 和 Amazon 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 运行时角色,请按照管理 Amazon Lake Formation 权限中的步骤操作。

现在您可以使用运行时角色和 Lake Formation 来应用表和列级别权限。使用源身份时,您可以控制并监控对 Amazon CloudTrail 执行的操作。有关详细的端到端示例,请参阅 Introducing runtime roles for Amazon EMR steps(引入适用于 Amazon EMR 步骤的运行时角色)。