Lake Formation 基于标签的访问控制最佳实践和注意事项 - AWS Lake Formation

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

Lake Formation 基于标签的访问控制最佳实践和注意事项

您可以创建、维护和分配 LF 标签以控制对数据目录数据库、表和列的访问。

使用 Lake Formation 基于标签的访问控制时,请考虑以下最佳实践:

  • 必须先预定义所有 LF 标签,然后才能将其分配给数据目录资源 或授予给主体。

    数据湖管理员可以通过创建具有所需IAM权限的 LF-Tag 创建者来委派标签管理任务。数据工程师和分析师决定 LF 标签的特征和关系。然后,LF 标签创建者在 Lake Formation 中创建和维护 LF 标签。

  • 您可以将多个 LF 标签分配给数据目录资源。只能将特定键的一个值分配给特定资源。

    例如,您可以将 module=Ordersregion=Westdivision=Consumer 等分配给数据库、表或列。您无法分配 module=Orders,Customers

  • 创建资源时,您无法将 LF 标签分配给资源。您只能将 LF 标签添加到现有资源。

  • 您可以向主体授予 LF 标签表达式,而不仅仅是单个 LF 标签。

    LF 标签表达式如下所示(使用伪代码)。

    module=sales AND division=(consumer OR commercial)

    被授予此 LF 标签表达式的主体只能访问分配了 module=salesdivision=consumerdivision=commercial 的数据目录资源(数据库、表和列)。如果您希望主体能够访问具有 module=salesdivision=commercial 的资源,请不要将两者都包含在同一个授予中。进行两次授予,一次用于 module=sales,一次用于 division=commercial

    最简单的 LF 标签表达式仅包含一个 LF 标签,例如 module=sales

  • 被授予对具有多个值的 LF 标签的权限的主体可以使用其中任一值访问数据目录资源。例如,如果用户被授予 key=module 和 values=orders,customers 的 LF 标签,则该用户有权访问分配了 module=ordersmodule=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 mati ASSOCIATE 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 权限是需要完整列访问权限的权限之一,即 AlterDropInsertDelete,则不会授予这些权限。相反,仅会授予 Describe 权限。如果授予的权限为 All (Super),则仅会授予 SelectDescribe 权限。

  • 通配符不与 LF 标签一起使用。要将 LF 标签分配给某个表的所有列,请将 LF 标签分配给该表,并且表中的所有列都将继承该 LF 标签。要将 LF 标签分配给某个数据库中的所有表,请将 LF 标签分配给该数据库,并且数据库中的所有表都将继承该 LF 标签。