底层数据访问控制 - Amazon Lake Formation
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

底层数据访问控制

当一个集成Amazon服务请求访问由 Amazon S3 访问控制的 Amazon S3 位置中的数据Amazon Lake Formation,Lake Formation 提供临时凭证来访问数据。

要使 Lake Formation 能够控制对 Amazon S3 位置底层数据的访问,您可以注册Lake Formation Formation

注册 Amazon S3 位置后,您可以开始授予以下Lake Formation 权限:

  • 数据访问权限 (SELECTINSERT, 和DELETE)在指向该位置的数据目录表上。

  • 该位置的数据位置权限。

Lake Formation 数据位置权限控制创建或更改指向特定 Amazon S3 位置的数据目录资源的能力。数据位置权限为数据湖中的位置提供了额外的安全层。当你授予CREATE_TABLE要么ALTER权限时,您还可以授予数据位置权限,以限制承担者可以创建或更改元数据表的位置。

Amazon S3 位置是存储桶或存储桶下的前缀,但不是单个 Amazon S3 对象。

您可以使用 Lake Formation 控制台、API 或Amazon CLI. 授权的一般形式如下所示:

grant DATA_LOCATION_ACCESS to principal on S3 location [with grant option]

如果你包含with grant option,被授权者可以将权限授予其他委托人。

回想一下,Lake Formation 权限始终与Amazon Identity and Access Management用于精细访问控制的 (IAM) 权限。对于基础 Amazon S3 数据的读/写权限,IAM 权限按如下方式授予:

注册位置时,您需要指定一个 IAM 角色,该角色授予对该位置的读/写权限。Lake Formation 在为集成版提供临时证书时担任该角色Amazon服务。典型角色可能附加了以下策略,其中注册的位置是存储桶awsexamplebucket.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::awsexamplebucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::awsexamplebucket" ] } ] }

Lake Formation 提供了一个服务相关角色,您可以在注册期间使用该角色来自动创建类似这样的策略。有关更多信息,请参阅 对 Lake Formation 使用服务相关角色

因此,注册 Amazon S3 位置将授予所需的 IAM 权限s3:权限,其中权限由用于注册位置的角色指定。

重要

避免注册具有以下功能的 Amazon S3 存储桶申请方付款已启用. 对于在 Lake Formation 中注册的存储桶,用于注册存储桶的角色始终被视为请求者。如果存储桶被其他人访问Amazon账户,如果该角色与存储桶拥有者属于同一账户,则向存储桶拥有者收取数据访问费用。

对于基础数据的读/写访问权限,除了 Lake Formation 权限外,委托人还需要以下 IAM 权限:

lakeformation:GetDataAccess

有了此权限,Lake Formation 会批准访问数据的临时凭证请求。

注意

仅限Amazon Athena要求用户具有lakeformation:GetDataAccess权限。对于其他集成服务,代入的角色必须具有权限。

此权限包含在建议策略中的Lake Formation 角色和 IAM 权限参考.

总而言之,要使 Lake Formation 负责人能够读取和写入基础数据,其访问权限受 Lake Formation 权限控制:

  • 包含数据的 Amazon S3 位置必须向 Lake Formation 注册。

  • 创建指向基础数据位置的数据目录表的委托人必须具有数据位置权限。

  • 读取和写入基础数据的委托人必须对指向基础数据位置的数据目录表具有 Lake Formation 数据访问权限。

  • 读取和写入基础数据的委托人必须具有lakeformation:GetDataAccessIAM 权限。

注意

如果您通过 IAM 或 Amazon S3 策略可以访问 Amazon S3 位置,则Lake Formation 权限模型不会阻止通过 Amazon S3 API 或控制台访问 Amazon S3 位置。您可以将 IAM 策略附加到委托人以阻止此访问。

详细了解数据位置权限

数据位置权限控制对 Data Catalog 数据库和表执行的创建和更新操作的结果。规则如下所示:

  • 委托人必须对 Amazon S3 位置具有显式或隐式数据位置权限,才能创建或更新指定该位置的数据库或表。

  • 显式权限DATA_LOCATION_ACCESS使用控制台、API 或Amazon CLI.

  • 如果数据库具有指向注册位置的 location 属性,则会授予隐式权限,而主体具有CREATE_TABLE权限,并且委托人尝试在该位置或子位置创建表。

  • 如果委托人被授予对某个位置的数据位置权限,则承担者对所有子位置都具有数据位置权限。

  • 委托人不需要数据位置权限即可对基础数据执行读/写操作。只要有SELECT要么INSERT数据访问权限。数据位置权限仅适用于创建指向该位置的数据目录资源。

考虑下图中显示的场景。


          文件夹层次结构和两个数据库(数据库 A 和 B),数据库 B 指向客户服务文件夹。

在此示意图中:

  • Amazon S3 iceProductsFinance, 和Customer Service已向Lake Formation 注册。

  • Database A没有位置属性,并且Database B有一个位置属性指向Customer Service存储桶。

  • 用户datalake_userCREATE_TABLE在两个数据库上。

  • 用户datalake_user已被授予数据位置权限仅在Products存储桶。

以下是用户的结果datalake_user尝试在特定数据库中的特定位置创建目录表。

位置在哪里datalake_user尝试创建表
数据库和位置 成功或失败 Reason
数据库 AFinance/Sales 失败 没有数据定位权限
数据库 A,位于 A,Products Succeed 具有数据定位权限
数据库 A,位于 A,HR/Plans Succeed 位置未注册
数据库 B,位于 B,Customer Service/Incidents Succeed 数据库的位置属性位于Customer Service

有关更多信息,请参阅下列内容: