本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
底层数据控制
当集成Amazon服务请求访问受访问控制的 Amazon S3 位置中的数据时,Lake Formation 会提供临时证书来访问数据。Amazon Lake Formation
要使 Lake Formation 能够控制对 Amazon S3 位置基础数据的访问权限,您需要将该位置注册到 Lake Formation。
注册 Amazon S3 位置后,您可以开始授予以下 Lake Formation 权限:
-
指向该位置的数据目录表
DELETE)
上的数据访问权限(SELECT
INSERT
、和)。 -
该位置的数据位置权限。
Lake Formation 数据位置权限控制创建或修改指向特定 Amazon S3 位置的数据目录资源的能力。数据位置权限为数据湖内的位置提供了额外的安全保护。当您向委托人授予CREATE_TABLE
或权ALTER
限时,您还授予数据位置权限以限制委托人可以创建或更改元数据表的位置。
Amazon S3 位置是存储段或存储段下的前缀,但不是单个 Amazon S3 对象。
您可以使用 Lake Formation 控制台、API 或向委托人授予数据位置权限Amazon CLI。补助的一般形式如下:
grant DATA_LOCATION_ACCESS to
principal
onS3 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 站点会授予该位置所需的 IAMs3:
权限,该权限由用于注册该位置的角色指定。
重要
避免注册启用了请求者付款的 Amazon S3 存储桶。对于在 Lake Formation 中注册的存储桶,用于注册存储桶的角色始终被视为请求者。如果另一个Amazon账户访问该存储桶,则如果该角色与存储段所有者属于同一个账户,则存储桶所有者需要支付数据访问费用。
要获得基础数据的读取/写入权限,除了 Lake Formation 权限外,委托人还需要以下 IAM 权限:
lakeformation:GetDataAccess
获得此权限后,Lake Formation 将授权访问数据的临时凭证请求。
注意
Amazon Athena 要求用户lakeformation:GetDataAccess
获得许可。其他集成服务需要其底层执行角色获得lakeformation:GetDataAccess
权限。
此权限包含在中的建议策略中Lake Formation 角色和 IAM 权限参考。
总而言之,为了使Lake Formation的负责人能够在Lake Formation权限控制的访问权限下读取和写入基础数据:
-
包含数据的 Amazon S3 位置必须向 Lake Formation 注册。
-
创建指向基础数据位置的数据目录表的校长必须具有数据位置权限。
-
读取和写入基础数据的校长必须拥有指向基础数据位置的数据目录表的 Lake Formation 数据访问权限。
-
读取和写入基础数据的委托人必须拥有 I
lakeformation:GetDataAccess
AM 权限。
注意
Lake Formation 权限模型不会阻止您通过 Amazon S3 API 或控制台访问 Amazon S3 站点,前提是您可以通过 IAM 或 Amazon S3 策略访问它们。您可以将 IAM 策略附加到委托人以阻止这种访问。
有关数据位置权限的更多信息
数据位置权限控制对数据目录数据库和表的创建和更新操作的结果。规则如下:
-
委托人必须对 Amazon S3 位置具有显式或隐式的数据定位权限才能创建或更新指定该位置的数据库或表。
-
使用控制台、API 或授予明确权限
DATA_LOCATION_ACCESS
Amazon CLI。 -
当数据库具有指向注册位置的位置属性,委托人拥有数据库的权限,并且委托人尝试在该位置或子位置创建表时,就会授予隐式
CREATE_TABLE
权限。 -
如果向委托人授予某个位置的数据位置权限,则该委托人对所有子位置都具有数据位置权限。
-
委托人不需要数据定位权限即可对基础数据执行读取/写入操作。拥有
SELECT
或INSERT
数据访问权限就足够了。数据位置权限仅适用于创建指向该位置的数据目录资源。
请考虑下图中显示的场景。

在此示意图中:
-
Amazon S3 存储桶
Products
Finance
、和已Customer Service
在 Lake Formation 中注册。 -
Database A
没有位置属性,并且Database B
具有指向Customer Service
存储段的位置属性。 -
用户
datalake_user
在两个数据库CREATE_TABLE
上都有。 -
仅向用户授予
datalake_user
了Products
存储桶上的数据定位权限。
以下是用户datalake_user
尝试在特定位置的特定数据库中创建目录表时的结果。
datalake_user 尝试创建表的位置 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
数据库和位置 | 成功或失败 | Reason | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
数据库 A 位于Finance/Sales |
失败 | 没有数据定位权限 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
数据库 A 位于Products |
继任 | 拥有数据定位权限 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
数据库 A 位于HR/Plans |
继任 | 位置未注册 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
数据库 B 位于Customer Service/Incidents |
继任 | 数据库的位置属性位于Customer Service |
有关更多信息,请参阅下列内容: