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

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

基本数据访问控制

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

要使 Lake Formation 能够控制对 Amazon S3 位置的底层数据的访问,您注册那个位置与 Lake 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 权限控制的访问权限来读写基础数据:

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

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

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

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

注意

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

详细了解数据位置权限

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

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

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

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

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

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

请考虑下图中显示的方案。


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

在此示意图中:

  • Amazon S3 存储桶ProductsFinance, 和Customer Service已在 Lake Formation 中注册。

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

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

  • 用户datalake_user仅在Products存储桶。

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

位置在哪里datalake_user尝试创建表
数据库和位置 成功或失败 Reason
的数据库 AFinance/Sales 失败 没有数据位置权限
的数据库 AProducts Suced 拥有数据位置权限
的数据库 AHR/Plans Suced 位置尚未注册
位于数据库 BCustomer Service/Incidents Suced 数据库具有位置属性Customer Service

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