本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Lake Formation 基于标签的访问控制最佳实践和注意事项
您可以创建、维护和分配 LF 标签以控制对数据目录数据库、表和列的访问。
使用 Lake Formation 基于标签的访问控制时,请考虑以下最佳实践:
-
必须先预定义所有 LF 标签,然后才能将其分配给数据目录资源 或授予给主体。
数据湖管理员可以通过创建具有所需IAM权限的 LF-Tag 创建者来委派标签管理任务。数据工程师和分析师决定 LF 标签的特征和关系。然后,LF 标签创建者在 Lake Formation 中创建和维护 LF 标签。
-
您可以将多个 LF 标签分配给数据目录资源。只能将特定键的一个值分配给特定资源。
例如,您可以将
module=Orders
、region=West
和division=Consumer
等分配给数据库、表或列。您无法分配module=Orders,Customers
。 -
创建资源时,您无法将 LF 标签分配给资源。您只能将 LF 标签添加到现有资源。
-
您可以向主体授予 LF 标签表达式,而不仅仅是单个 LF 标签。
LF 标签表达式如下所示(使用伪代码)。
module=sales AND division=(consumer OR commercial)
被授予此 LF 标签表达式的主体只能访问分配了
module=sales
和division=consumer
或division=commercial
的数据目录资源(数据库、表和列)。如果您希望主体能够访问具有module=sales
或division=commercial
的资源,请不要将两者都包含在同一个授予中。进行两次授予,一次用于module=sales
,一次用于division=commercial
。最简单的 LF 标签表达式仅包含一个 LF 标签,例如
module=sales
。 -
被授予对具有多个值的 LF 标签的权限的主体可以使用其中任一值访问数据目录资源。例如,如果用户被授予 key=
module
和 values=orders,customers
的 LF 标签,则该用户有权访问分配了module=orders
或module=customers
的资源。 -
您需要拥有
Grant with LF-Tag expressions
使用 LF-TBAC 方法授予对数据目录资源的数据权限的权限。数据湖管理员和 LF 标签创建者会隐式接收此权限。具有Grant with LFTag expressions
权限的主体可以使用以下方式授予对资源的数据权限-
命名资源方法
-
LF-TBAC 方法,但只能使用相同的 LF-Tag 表达式
例如,假设数据湖管理员进行以下授予(使用伪代码)。
GRANT (SELECT ON TABLES) ON TAGS module=customers, region=west,south TO user1 WITH GRANT OPTION
在这种情况下,
user1
可以使用 LF-TBAC 方法向其他委托人授予SELECT
对表的授权,但只能使用完整的 LF-Tag 表达式。module=customers, region=west,south
-
-
如果委托人被授予对同时使用 LF TBAC 方法和命名资源方法的资源的权限,则委托人对资源的权限就是这两种方法授予的权限的并集。
-
Lake For
DESCRIBE
matiASSOCIATE
on 支持跨账户授予和 LF-标签,以及使用 LF-TBAC 方法跨账户授予对数据目录资源的权限。在这两种情况下,本金都是 AWS 账户 ID。注意
Lake Formation 支持使用 LF TBAC 方法向组织和组织单位提供跨账户拨款。要使用此功能,您需要将跨账户版本设置更新为版本 3。
有关更多信息,请参阅 Lake Formation 中的跨账户数据共享。
-
在一个账户中创建的数据目录资源只能使用在同一账户中创建的 LF 标签进行标记。在一个账户中创建的 LF 标签不能与另一个账户中的共享资源关联。
-
使用基于 Lake Formation 标签的访问控制 (LF-TBAC) 授予跨账户访问数据目录资源的权限需要为您的 AWS 账户添加数据目录资源策略。有关更多信息,请参阅 先决条件。
-
LF 标签键和 LF 标签值的长度不能超过 50 个字符。
-
可以分配给数据目录资源的 LF 标签的最大数量为 50。
-
以下限制是软限制:
-
可以创建的 LF 标签的最大数量为 1000。
-
可以为 LF 标签定义的值的最大数量为 1000。
-
-
标签、键和值在存储时将全部转换为小写。
-
只能将 LF 标签的一个值分配给特定资源。
-
如果通过一次授予向主体授予多个 LF 标签,则该主体只能访问具有所有 LF 标签的数据目录资源。
-
AWS Glue ETL作业需要全表访问权限。如果 AWS Glue ETL角色无法访问表中的所有列,则作业将失败。可以在列级别应用 LF-Tag,但这可能会导致 AWS Glue ETL角色失去完整表访问权限并导致作业失败。
-
如果 LF 标签表达式计算仅导致访问表列的子集,但在匹配时授予的 Lake Formation 权限是需要完整列访问权限的权限之一,即
Alter
、Drop
、Insert
或Delete
,则不会授予这些权限。相反,仅会授予Describe
权限。如果授予的权限为All
(Super
),则仅会授予Select
和Describe
权限。 -
通配符不与 LF 标签一起使用。要将 LF 标签分配给某个表的所有列,请将 LF 标签分配给该表,并且表中的所有列都将继承该 LF 标签。要将 LF 标签分配给某个数据库中的所有表,请将 LF 标签分配给该数据库,并且数据库中的所有表都将继承该 LF 标签。