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

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

设置 Lake Formation

首次完成以下任务设置 Lake Formation:

完成初始 Amazon 配置任务

要使用Amazon Lake Formation,您必须先完成以下任务:

注册一个 Amazon Web Services 账户

如果您还没有 Amazon Web Services 账户,请完成以下步骤来创建一个。

注册 Amazon Web Services 账户
  1. 打开 https://portal.aws.amazon.com/billing/signup

  2. 按照屏幕上的说明进行操作。

    在注册时,您将接到一通电话,要求您使用电话键盘输入一个验证码。

    当您注册 Amazon Web Services 账户 时,系统将会创建一个 Amazon Web Services 账户根用户。根用户有权访问该账户中的所有 Amazon Web Services和资源。作为安全最佳实践,请 为管理用户分配管理访问权限,并且只使用根用户执行 需要根用户访问权限的任务

Amazon注册过程完成后,会向您发送一封确认电子邮件。在任何时候,您都可以通过转至 https://aws.amazon.com/ 并选择 My Account (我的账户) 来查看当前的账户活动并管理您的账户。

保护 IAM 用户

注册 Amazon Web Services 账户 后,启用多重身份验证(MFA)保护您的管理用户。有关说明,请参阅 IAM 用户指南中的为 为 IAM 用户(控制台)启用虚拟 MFA 设备

要授予其他用户访问您的 Amazon Web Services 账户 资源的权限,请创建 IAM 用户。为了保护您的 IAM 用户,请启用 MFA 并仅向 IAM 用户授予执行任务所需的权限。

有关创建和保护 IAM 用户的更多信息,请参阅 IAM 用户指南中的以下主题:

授权以编程方式访问

如果用户需要在 Amazon Web Services Management Console 之外与 Amazon 交互,则需要编程式访问权限。Amazon API 和 Amazon Command Line Interface 需要访问密钥。可能的话,创建临时凭证,该凭证由一个访问密钥 ID、一个秘密访问密钥和一个指示凭证何时到期的安全令牌组成。

要向用户授予编程式访问权限,请选择以下选项之一。

哪个用户需要编程式访问权限? 目的 方式
IAM 使用短期凭证签署对 Amazon CLI 或 Amazon API 的编程式请求(直接或使用 Amazon SDK)。 按照《IAM 用户指南》将临时凭证用于 Amazon 资源中的说明进行操作。
IAM

(不推荐使用)

使用长期凭证签署对 Amazon CLI 或 Amazon API 的编程式请求(直接或使用 Amazon SDK)。
按照《IAM 用户指南》管理 IAM 用户的访问密钥中的说明进行操作。

设置 Amazon Lake Formation

本节向您展示了如何通过两种不同的方式设置 Lake Formation 资源:

  • 使用 Amazon CloudFormation 模板

  • 使用 Lake Formation 控制台

要使用Amazon控制台设置 Lake Formation,请转至为工作流程创建 IAM 角色

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

注意

Amazon CloudFormation堆栈执行上述步骤 2 到 7,但步骤 4 除外。从 Lake Formation 控制台更改默认权限模型手动执行。

  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堆栈。这将删除堆栈创建的所有资源。

为工作流程创建 IAM 角色

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

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

以下过程假设您熟悉 IAM。

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

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

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

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

  5. 返回 “角色” 页面,搜索LakeFormationWorkflowRole并选择角色名称。

  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. 如果您正在提取数据湖位置之外的数据,请添加授予读取源数据的权限的内联策略。

创建数据湖管理员

数据湖管理员最初是唯一可以向任何委托人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 管理用户(拥有AdministratorAccessAmazon托管策略的用户)作为数据湖管理员。

    将以下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行为兼容。我们建议您禁用这些设置,以便使用 Lake Formation 权限启用基于标签的精细访问控制。

有关更多信息,请参阅更改数据湖的默认设置

重要

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

警告

如果您采用了在数据目录中创建数据库和表的自动化,则以下步骤可能会导致自动化和下游提取、转换和加载 (ETL) 作业失败。只有在修改现有流程或向所需委托人授予明确的 Lake Formation 权限后,才能继续操作。有关 Lake Formation 权限的信息,请参阅湖泊形成权限参考

更改默认数据目录设置
  1. 继续访问 Lake Formation 控制台,网址为 https://console.aws.amazon.com/lakeformation/。确保您以在中创建的管理员用户或使用AdministratorAccessAmazon托管策略的用户身份登录。

  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并以您在中创建的管理员用户或使用AdministratorAccessAmazon托管策略的用户身份登录。

  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 对数据目录表的权限时,可以包括数据筛选规范,以限制对查询结果和 Amazon Glue ETL 作业中某些数据的访问。Lake Formation 使用数据筛选来实现列级安全、行级安全和单元级安全。您可以通过创建命名数据筛选器并在授予对表的 Lake Formation SELECT 权限时指定数据筛选器来实现列级、行级和单元级安全。创建数据筛选器时,需要为需要包含的行提供一组列和一个筛选表达式。这允许您限制对查询结果和与 Lake Formation 集成的引擎(例如 Athena Amazon Glue 和 ETL 作业)中的某些数据的访问。

有关数据筛选器的更多信息,请参阅Lake Formation 中的数据筛选和单元格级安全性

Lake Formation 行级筛选需要在使用前进行额外的配置。

为表配置行级安全性
  1. 确定要限制访问的内容并创建数据过滤器。有关如何创建数据筛选器的说明,请参阅创建数据筛选器

  2. 向能够查看数据筛选器的用户授予对数据筛选器的DESCRIBE权限。

    创建数据筛选器时,只有您可以查看它。要允许其他委托人查看和使用数据筛选器,您可以向其授予DESCRIBE权限。

  3. 在向委托人授予表的 SELECT Lake Formation 权限时,请指定数据过滤器。

  4. 向将使用单元级筛选器查询表格的委托人分配 IAM 权限。使用单元格级别筛选查询表的委托人必须具有以下 IAM 权限:

    lakeformation:StartQueryPlanning lakeformation:GetQueryState lakeformation:GetWorkUnits lakeformation:GetWorkUnitResults

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

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

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

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

  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 开发人员指南