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

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

设置 Amazon Lake Formation

以下各节提供有关首次设置 Lake Formation 的信息。要开始使用 Lake Formation,并非本节中的所有主题都是必须学习的。您可以按照说明设置 Lake Formation 权限模型,以管理您在亚马逊简单存储服务 (Amazon S3) Simple S3 中的现有 Amazon Glue Data Catalog 对象和数据位置。

本节将介绍如何通过两种不同的方式设置 Lake Formation 资源:

  • 使用 Amazon CloudFormation 模板

  • 使用 Lake Formation 控制台

要使用 Amazon 控制台设置 Lake Formation,请转至创建数据湖管理员

使用 Amazon CloudFormation 模板设置 Lake Formation 资源

注意

Amazon CloudFormation 堆栈执行上述步骤 1 到 6,但步骤 2 和 5 除外。在 Lake Formation 控制台中集成 IAM Identity Center手动执行更改默认权限模式或使用混合访问模式和操作。

  1. 以美国东部(弗吉尼亚北部)地区的 IAM 管理员身份登录 Amazon CloudFormation 控制台,网址为 https://console.aws.amazon.com/cloudformation

  2. 选择启动堆栈

  3. 创建堆栈屏幕上,选择下一步

  4. 输入堆栈名称

  5. 对于DatalakeAdminNameDatalakeAdminPassword,请输入您的数据湖管理员用户的用户名和密码。

  6. 对于 DatalakeUser1NameDatalakeUser1Passwor d,输入您的数据湖分析师用户的用户名和密码。

  7. 对于 DataLakeBucketName,输入要创建的新存储桶名称。

  8. 选择下一步

  9. 在下一页上,选择下一步

  10. 查看最后一页上的详细信息,然后选择我确认这 Amazon CloudFormation 可能会创建 IAM 资源。

  11. 选择创建

    堆栈创建过程可能需要几分钟时间才能完成。

清理资源

如果你想清理堆 Amazon CloudFormation 栈资源,请执行以下操作:

  1. 取消注册您的堆栈创建并注册为数据湖位置的 Amazon S3 存储桶。

  2. 删除 Amazon CloudFormation 堆栈。这将删除堆栈创建的所有资源。

创建数据湖管理员

数据湖管理员最初是唯一可以向任何委托人 Amazon Identity and Access Management (包括自己)授予 Lake Formation 数据位置和数据目录资源的权限的 (IAM) 用户或角色。有关数据湖管理员功能的信息,请参阅隐式 Lake Formation 权限。默认情况下,Lake Formation 允许您最多创建 30 个数据湖管理员。

您可以使用 Lake Formation 控制台或 Lake Formation API 的 PutDataLakeSettings 操作来创建数据湖管理员。

创建数据湖管理员需要以下权限。Administrator 用户隐式拥有这些权限。

  • lakeformation:PutDataLakeSettings

  • lakeformation:GetDataLakeSettings

如果您向用户授予 AWSLakeFormationDataAdmin 策略,则该用户将无法创建其他 Lake Formation 管理员用户。

创建数据湖管理员(控制台)
  1. 如果要成为数据湖管理员的用户尚不存在,请使用 IAM 控制台创建该用户。或者,请选择现有用户来担任数据湖管理员。

    注意

    我们建议您不要选择 IAM 管理用户(拥有AdministratorAccess Amazon 托管策略的用户)作为数据湖管理员。

    将以下 Amazon 托管策略附加到用户:

    策略 必需? 注意
    AWSLakeFormationDataAdmin 强制性 基本数据湖管理员权限。此 Amazon 托管策略包含对 Lake Formation API 操作的明确拒绝,PutDataLakeSetting该操作限制用户创建新的数据湖管理员。
    AWSGlueConsoleFullAccess, CloudWatchLogsReadOnlyAccess 可选 如果数据湖管理员要对通过 Lake Formation 蓝图创建的工作流进行故障排除,请附加这些策略。这些策略使数据湖管理员能够在 Amazon Glue 控制台和 Amazon CloudWatch Logs 控制台中查看故障排除信息。有关工作流的更多信息,请参阅在 Lake Formation 中使用工作流导入数据
    AWSLakeFormationCrossAccountManager 可选 附加此策略可使数据湖管理员能够授予和撤销对数据目录资源的跨账户权限。有关更多信息,请参阅 Lake Formation 中的跨账户数据共享
    AmazonAthenaFullAccess 可选 如果数据湖管理员要在中运行查询,请附上此策略 Amazon Athena。
  2. 附加以下内联策略,该策略向数据湖管理员授予创建 Lake Formation 服务相关角色的权限。建议将该策略命名为 LakeFormationSLR

    服务相关角色使数据湖管理员能够更轻松地在 Lake Formation 中注册 Amazon S3 位置。有关 Lake Formation 服务相关角色的更多信息,请参阅在 Lake Formation 中使用服务相关角色

    重要

    在以下所有政策中,请<account-id>替换为有效的 Amazon 账号。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "*", "Condition": { "StringEquals": { "iam:AWSServiceName": "lakeformation.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "iam:PutRolePolicy" ], "Resource": "arn:aws:iam::<account-id>:role/aws-service-role/lakeformation.amazonaws.com/AWSServiceRoleForLakeFormationDataAccess" } ] }
  3. (可选)将下面的 PassRole 内联策略附加到用户。此策略使数据湖管理员能够创建和运行工作流。iam:PassRole 权限使工作流能够担任创建爬网程序和作业的角色 LakeFormationWorkflowRole,并将该角色附加到所创建的爬网程序和作业。建议将该策略命名为 UserPassRole

    重要

    <account-id>替换为有效的 Amazon 账号。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "PassRolePermissions", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::<account-id>:role/LakeFormationWorkflowRole" ] } ] }
  4. (可选)如果您的账户将授予或接收跨账户 Lake Formation 权限,请附加此额外内联策略。此策略使数据湖管理员能够查看和接受 Amazon Resource Access Manager (Amazon RAM) 资源共享邀请。此外,对于 Amazon Organizations 管理账户中的数据湖管理员,该策略还包括向组织启用跨账户授予的权限。有关更多信息,请参阅 Lake Formation 中的跨账户数据共享

    建议将该策略命名为 RAMAccess

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ram:AcceptResourceShareInvitation", "ram:RejectResourceShareInvitation", "ec2:DescribeAvailabilityZones", "ram:EnableSharingWithAwsOrganization" ], "Resource": "*" } ] }
  5. 通过 https://console.aws.amazon.com/lakeformation/ 打开 Amazon Lake Formation 控制台,然后以您在中创建的管理员用户或具有用户 Amazon 托管策略的AdministratorAccess用户身份登录。

  6. 如果显示欢迎使用 Lake Formation 窗口,请选择您在第 1 步创建或选择的 IAM 用户,然后选择开始使用

  7. 如果没有看到欢迎使用 Lake Formation ‬窗口,请执行以下步骤来配置 Lake Formation 管理员。

    1. 在导航窗格中的管理员下,选择管理角色和任务。在控制台页面的数据湖管理员部分,选择添加

    2. 添加管理员对话框中的“访问类型”下,选择数据湖管理员

    3. 对于 IAM 用户和角色,选择您在第 1 步创建或选择的 IAM 用户,然后选择保存

更改默认权限模式或使用混合访问模式

Lake Formation 一开始就启用了 “仅使用 IAM 访问控制” 设置,以便与现有 Amazon Glue Data Catalog 行为兼容。此设置使您可以通过 IAM 策略和 Amazon S3 存储桶策略管理对数据湖中数据及其元数据的访问。

为了简化数据湖权限从 IAM 和 Amazon S3 模式向 Lake Formation 权限的过渡,我们建议您对数据目录使用混合访问模式。在混合访问模式下,您现在有了增量路径,允许您为一组特定的用户启用 Lake Formation 权限,而不会中断其他现有用户或工作负载。

有关更多信息,请参阅 混合访问模式

禁用默认设置,只需一步即可将表的所有现有用户移至 Lake Formation。

重要

如果您已有 Amazon Glue Data Catalog 数据库和表,请不要按照本节中的说明执行操作。而是应按照升级 Amazon Lake Formation 模型Amazon Glue的数据权限中的说明操作。

警告

如果您实施自动化功能来在数据目录中创建数据库和表,则以下步骤可能会导致自动化和下游提取、转换、加载 (ETL) 作业失败。只有在修改现有流程或向所需主体授予显式 Lake Formation 权限后,才能继续操作。有关 Lake Formation 权限的信息,请参阅 Lake Formation 权限参考

更改默认数据目录设置
  1. 通过 https://console.aws.amazon.com/lakeformation/ 继续在 Lake Formation 控制台中操作。确保您以在中创建的管理员用户或使用AdministratorAccess Amazon 托管策略的用户身份登录。

  2. 修改数据目录设置:

    1. 在导航窗格中的管理下,选择数据目录设置

    2. 清除两个复选框,然后选择保存

      “数据目录设置”对话框的副标题为“对新创建的数据库和表的默认权限”,并且含有两个复选框(如文本中所述)。
  3. 撤销数据库创建者的 IAMAllowedPrincipals 权限。

    1. 在导航窗格中的管理下,选择管理角色和任务

    2. 管理角色和任务控制台页面的数据库创建者部分,选择 IAMAllowedPrincipals 组,然后选择撤销

      此时将出现撤销权限对话框,其中显示 IAMAllowedPrincipals 拥有创建数据库权限。

    3. 选择撤销

为 Lake Formation 用户分配权限

创建用户以访问中的数据湖 Amazon Lake Formation。此用户拥有查询数据湖的最低权限。

有关创建用户或组的更多信息,请参阅《IAM 用户指南》中的 IAM 身份

向非管理员用户附加用于访问 Lake Formation 数据的权限
  1. 在打开 IAM 控制台,https://console.amazonaws.cn/iam并以您在中创建的管理员用户或使用AdministratorAccess Amazon 托管策略的用户身份登录。

  2. 选择用户用户组

  3. 在列表中,请选择要在其中嵌入策略的用户或组的名称。

    选择权限

  4. 选择添加权限,然后选择直接附加策略。在筛选策略文本字段中输入 Athena。在结果列表中,选中 AmazonAthenaFullAccess 的复选框。

  5. 选择创建策略按钮。在创建策略页面上,选择 JSON 选项卡。复制以下策略并将其粘贴到策略编辑器中。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess", "glue:GetTable", "glue:GetTables", "glue:SearchTables", "glue:GetDatabase", "glue:GetDatabases", "glue:GetPartitions", "lakeformation:GetResourceLFTags", "lakeformation:ListLFTags", "lakeformation:GetLFTag", "lakeformation:SearchTablesByLFTags", "lakeformation:SearchDatabasesByLFTags" ], "Resource": "*" } ] }
  6. 选择底部的下一步按钮,直到看到查看策略页面。输入策略名称,例如 DatalakeUserBasic。选择创建策略,然后关闭策略选项卡或浏览器窗口。

为您的数据湖配置 Amazon S3 位置

要使用 Lake Formation 管理和保护数据湖中的数据,您必须先注册一个 Amazon S3 位置。注册位置时,会注册 Amazon S3 路径和该路径下的所有文件夹,这使 Lake Formation 能够强制实施存储级别权限。当用户从 Amazon Athena 等集成引擎请求数据时,Lake Formation 会提供数据访问权限,而不是使用用户权限。

注册位置时,您需要指定一个 IAM 角色以授予对该位置的读/写权限。Lake Formation 在向请求访问已注册的 Amazon S3 位置的数据的集成 Amazon 服务提供临时证书时担任该角色。您可以指定 Lake Formation 服务相关角色 (SLR) 或创建自己的角色。

在以下情况下使用自定义角色:

所选角色必须具有必需的权限,如用于注册位置的角色的要求中所述。有关如何注册 Amazon S3 位置的说明,请参阅向数据湖添加 Amazon S3 位置

(可选)外部数据筛选设置

如果您打算使用第三方查询引擎分析和处理数据湖中的数据,则必须选择允许外部引擎访问由 Lake Formation 管理的数据。如果您不选择,则外部引擎将无法访问已在 Lake Formation 中注册的 Amazon S3 位置处的数据。

Lake Formation 支持使用列级别权限来限制对表中特定列的访问。诸如 Amazon Athena Amazon Redshift Spectrum 和 Amazon EMR 之类的集成分析服务可从中检索未经过筛选的表格元数据。 Amazon Glue Data Catalog集成服务负责对查询响应中的列进行实际筛选。第三方管理员负责妥善处理权限,以免有人未经授权便访问数据。

选择允许第三方引擎访问和筛选数据(控制台)
  1. 通过 https://console.aws.amazon.com/lakeformation/ 继续在 Lake Formation 控制台中操作。确保您以拥有对 Lake Formation PutDataLakeSettings API 操作的 IAM 权限的主体身份登录。您在 注册获取 Amazon Web Services 账户 中创建的 IAM 管理员用户拥有此权限。

  2. 在导航窗格中的管理下,选择应用程序集成设置

  3. 应用程序集成设置页面上,执行以下操作:

    1. 选中允许外部引擎筛选在 Lake Formation 中注册的 Amazon S3 位置处的数据复选框。

    2. 输入为第三方引擎定义的会话标签值

    3. 对于 Amazon 账户 ID,输入允许第三方引擎从中访问在 Lake Formation 中注册的位置的账户 ID。在输入每个账户 ID 之后按 Enter 键。

    4. 选择保存

要允许外部引擎在不进行会话标签验证的情况下访问数据,请参阅集成应用程序以获取完整表访问权限

(可选)授予对数据目录加密密钥的访问权限

如果已加密, Amazon Glue Data Catalog 则向需要授予 Lake Formation 数据目录数据库和表权限的所有委托人授予 Amazon KMS 密钥的 Amazon Identity and Access Management (IAM) 权限。

有关更多信息,请参见Amazon Key Management Service 开发人员指南

(可选)为工作流程创建 IAM 角色

借 Amazon Lake Formation助,您可以使用 Amazon Glue 抓取工具执行的工作流程导入数据。工作流定义数据来源和计划以将数据导入到数据湖中。您可以使用 Lake Formation 提供的蓝图或模板轻松定义工作流。

创建工作流程时,必须为其分配一个 Amazon Identity and Access Management (IAM) 角色,该角色向 Lake Formation 授予采集数据的必要权限。

以下过程假定您熟悉 IAM。

为工作流创建 IAM 角色
  1. 在打开 IAM 控制台,https://console.amazonaws.cn/iam并以您在中创建的管理员用户或使用AdministratorAccess Amazon 托管策略的用户身份登录。

  2. 在导航窗格中,选择角色,然后选择创建角色

  3. 创建角色页面上,选择 Amazon 服务,然后选择 Glue。选择下一步

  4. 添加权限页面上,搜索AWSGlueServiceRole托管策略,然后选中列表中策略名称旁边的复选框。然后完成创建角色向导,命名角色 LFWorkflowRole。要完成操作,请选择创建角色

  5. 回到角色页面上,搜索 LFflowRole,然后选择该角色名称。

  6. 角色摘要页面上的权限选项卡下,选择添加内联策略。在创建策略屏幕上,导航到 JSON 选项卡,然后添加以下内联策略。建议将该策略命名为 LakeFormationWorkflow

    重要

    在以下策略中,将 <account-id> 替换为有效的 Amazon Web Services 账户 数字。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess", "lakeformation:GrantPermissions" ], "Resource": "*" }, { "Effect": "Allow", "Action": ["iam:PassRole"], "Resource": [ "arn:aws:iam::<account-id>:role/LakeFormationWorkflowRole" ] } ] }

    以下是关于该策略中权限的简要描述:

    • lakeformation:GetDataAccess 使工作流创建的作业能够向目标位置写入数据。

    • lakeformation:GrantPermissions 使工作流能够授予对目标表的 SELECT 权限。

    • iam:PassRole 使服务能够担任创建爬网程序和作业(工作流实例)的角色 LakeFormationWorkflowRole,并将该角色附加到所创建的爬网程序和作业。

  7. 验证角色 LakeFormationWorkflowRole 是否附加了两个策略。

  8. 如果您要摄取数据湖位置之外的数据,请添加用于授予来源数据读取权限的内联策略。