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

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

基础数据访问控制

当 AWS 服务请求访问 Amazon S3 由 AWS Lake Formation, Lake Formation 提供临时凭证以访问数据。

要启用 Lake Formation 以控制对 Amazon S3 位置,您 寄存器 那个位置 Lake Formation.

在您注册 Amazon S3 您可以开始授予以下权限 Lake Formation 权限:

  • 数据访问权限(SELECT, INSERT,和 DELETE) 于 Data Catalog 指向该位置的表格。

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

Lake Formation 数据位置权限控制着创建 或改变 Data Catalog 特定资源 Amazon S3 位置。数据位置权限为数据湖内的位置提供额外的安全层。当你 授予 CREATE_TABLEALTER 许可给承运人, 你也可以 数据位置权限 至 限制承运人可以创建的位置 或改变 元数据表。

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

您可以使用 Lake Formation 控制台、API或 AWS CLI. 拨款的一般形式如下:

Grant DATA_LOCATION_ACCESS主体Amazon S3 位置 [含赠与选项]

使用授予选项,您可以允许受赠人授予其他委托人的权限。

回想一下 Lake Formation 权限始终与 AWS Identity and Access Management (人IAM)细粒度访问控制权限。对于底层的读取/写入权限 Amazon S3 数据, IAM 权限的授予方式如下:

当您注册地点时,您可以指定 IAM 角色,授予该位置的读/写权限。 Lake Formation 假设在向集成 AWS 服务。一个典型角色可能附加了以下政策,其中注册地点是 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: 该位置的权限。

对于对底层数据的读/写访问,principal还需要: IAM 权限 Lake Formation API:

lakeformation:GetDataAccess

在获得此许可的情况下, Lake Formation 授予对访问数据的临时凭证的请求。

注意

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

此权限包含在 Lake Formation 人物和 IAM 权限参考.

总而言之 Lake Formation 读取和写入底层数据,访问控制为 Lake Formation 权限:

  • 的 Amazon S3 必须注册包含数据的地点 Lake Formation.

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

  • 读取和写入基础数据的主体必须具有 Lake Formation 上的数据访问权限 Data Catalog 指向基础数据位置的表。

  • 读取和写入基础数据的主体必须具有 lakeformation:GetDataAccess IAM 权限。

注意

的 Lake Formation 权限模型不会阻止访问 Amazon S3 通过 Amazon S3 API或控制台(如果您可以通过 IAM 或 Amazon S3 政策。你可以附加 IAM 策略以阻止此访问。

关于数据位置许可的更多信息

数据位置权限管理创建和更新操作的结果 Data Catalog 数据库和表格。规则如下:

  • 主体必须在 Amazon S3 用于创建或更新指定该位置的数据库或表的位置。

  • 明确许可 DATA_LOCATION_ACCESS 使用控制台、API或 AWS CLI.

  • 当数据库具有指向已注册位置的位置属性时,将授予隐式权限,主体具有 CREATE_TABLE 权限,并且主管理员尝试在该位置或子位置创建表格。

  • 如果向主体授予了某个位置的数据位置权限,则主体具有所有子位置的数据位置权限。

  • 主体不需要数据定位权限即可对底层数据执行读/写操作。有了 SELECTINSERT 数据访问权限。数据位置权限仅适用于创建 Data Catalog 指向位置的资源。

考虑下图中所示的场景。


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

在此示意图中:

  • 的 Amazon S3 桶 Products, Finance,和 Customer Service 已注册 Lake Formation.

  • Database A 没有位置属性,以及 Database B 具有指向 Customer Service 桶。

  • 用户 datalake_userCREATE_TABLE 两个数据库上。

  • 用户 datalake_user 已被授予数据位置权限,权限仅限于 Products 桶。

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

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

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