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

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

基于标签的 Lake Formation

当存在大量数据目录资源时,基于 Lake Formation 标签的访问控制 (Lake Formation) 是授予 Lake Formation 权限的推荐方法。LF-TBAC 比命名资源方法更具可扩展性,所需的权限管理开销更少。

基于标签的 Lake Formation

每个 LF-tag 都是一个键值对,例如department=sales要么classification=restricted. 一个密钥可以有多个定义的值,例如department=sales,marketing,engineering,finance.

要使用 LF-TBAC 方法,数据湖管理员和数据工程师执行以下任务。

任务 任务详情

1. 定义 LF-Tags 的属性和关系。

-

2. 在 Lake Formation 队中创建 LF-Tags。

创建 LF 标签

3. 将 LF 标签分配给数据目录资源。

将 LF-tag 分配给数据目录资源

4. 可以选择使用授予选项向资源授予其他委托人向资源分配 LF-Tags 的权限。

授予、撤销和列出 LF-tag 权限

5. 可以选择使用授权选项将 LF-tag 表达式授予委托人。

使用 LF-TBAC 方法授予数据目录权限

6. (推荐)验证委托人是否可以通过 LF-TBAC 方法访问正确的资源后,撤消使用命名资源方法授予的权限。

-

考虑一下数据湖管理员必须向三个数据库和七个表的三个承担者授予权限的情况。


        左边有三个用户数字,垂直排列。在右侧有三个数据库,标签为 A、B 和 C,数据库 A 有两个标记为 A.1 和 A.2 的表,数据库 B 有表标签 B.1 和 B.2,数据库 C 有三个标记为 C.1、C.2 和 C.3 的表。17 个箭头将用户连接到数据库和表,指示用户对数据库和表的授权。

要使用命名资源方法获得上图中所示的权限,数据湖管理员必须进行 17 项授权,如下所示(在伪代码中)。

GRANT CREATE_TABLE ON Database A TO PRINCIPAL 1 GRANT SELECT, INSERT ON Table A.1 TO PRINCIPAL 1 GRANT SELECT, INSERT ON Table A.2 TO PRINCIPAL 1 GRANT SELECT, INSERT ON Table B.2 TO PRINCIPAL 1 ... GRANT SELECT, INSERT ON Table A.2 TO PRINCIPAL 2 GRANT CREATE_TABLE ON Database B TO PRINCIPAL 2 ... GRANT SELECT, INSERT ON Table C.3 TO PRINCIPAL 3

现在考虑数据湖管理员将如何使用 LF-TBAC 授予权限。下图表明数据湖管理员已将 LF-Tags 分配给数据库和表,并将 LF-Tags 的权限授予委托人。

在此示例中,LF-Tags 表示数据湖中包含针对企业资源规划 (ERP) 应用程序套件不同模块的分析的区域。数据湖管理员想要控制对各种模块的分析数据的访问。所有 LF 标签都有钥匙module和可能的值SalesOrders, 和Customers. LF-tag 的示例如下:

module=Sales

该图仅显示 lf-tag 值。


        与上一图一样,三个用户数字位于左侧,垂直排列,右侧是三个标记为 A、B 和 C 的数据库,垂直排列。数据库 A 有两个标记为 A.1 和 A.2 的表,数据库 B 有表标签 B.1 和 B.2,数据库 C 有三个标记为 C.1、C.2 和 C.3 的表。用户与数据库和表之间没有箭头。相反,用户旁边标记为 “标记” 表示用户 1 已被授予 LF-Tags 销售和客户,用户 2 已被授予 LF-Tag 订单,用户 3 已被授予 LF-Tag 客户。数据库和表旁边的标志指示了对数据库和表的以下 LF-Tags 分配:数据库 A:销售。表 A1:灰色标志表示销售额是从数据库 A 继承的。表 A2:订单,但灰色标志表示销售额是从数据库 A 继承的。数据库 B:命令。表 B.1 和 B.2 继承了订单,表 B.2 有客户。数据库 C 有客户,表 C.1、C.2 和 C.3 继承客户。C 表没有任何其他任务。

将分配标记到数据目录资源和继承

表从数据库继承 LF-Tags,列从表中继承 LF-Tags。继承的值可以被覆盖。在上图中,将继承变暗的 LF-Tags。

由于继承,数据湖管理员只需对资源进行以下五个 LF-tag 分配(以伪代码形式)。

ASSIGN TAGS module=Sales TO database A ASSIGN TAGS module=Orders TO table A.2 ASSIGN TAGS module=Orders TO database B ASSIGN TAGS module=Customers TO table B.2 ASSIGN TAGS module=Customers TO database C

标签对校长的补助

将 LF-Tags 分配给数据库和表后,数据湖管理员只能向委托人授予四项 LF-Tags,如下所示(在伪代码中)。

GRANT TAGS module=Sales TO Principal 1 GRANT TAGS module=Customers TO Principal 1 GRANT TAGS module=Orders TO Principal 2 GRANT TAGS module=Customers TO Principal 3

现在,一个负责人module=Saleslf-tag 可以使用module=Saleslf-tag(例如,数据库 A),一个具有module=Customerslf-tag 可以使用module=Customerslf-tag 等。

前面的授权命令不完整。这是因为尽管他们通过 LF-Tags 表示委托人有权限的数据目录资源,但他们并没有准确指出哪些 Lake Formation 权限(例如SELECTALTER)负责人对这些资源拥有。因此,以下伪代码命令更准确地表示了如何通过 Lf-Tags 授予对数据目录资源的 Lake Formation 权限。

GRANT (CREATE_TABLE ON DATABASES) ON TAGS module=Sales TO Principal 1 GRANT (SELECT, INSERT ON TABLES) ON TAGS module=Sales TO Principal 1 GRANT (CREATE_TABLE ON DATABASES) ON TAGS module=Customers TO Principal 1 GRANT (SELECT, INSERT ON TABLES) ON TAGS module=Customers TO Principal 1 GRANT (CREATE_TABLE ON DATABASES) ON TAGS module=Orders TO Principal 2 GRANT (SELECT, INSERT ON TABLES) ON TAGS module=Orders TO Principal 2 GRANT (CREATE_TABLE ON DATABASES) ON TAGS module=Customers TO Principal 3 GRANT (SELECT, INSERT ON TABLES) ON TAGS module=Customers TO Principal 3

组合起来-生成的对资源的委托人权限

鉴于分配给上图中的数据库和表的 LF-Tags,以及授予图中委托人的 LF-Tag,下表列出了委托人对数据库和表拥有的 Lake Formation 权限。

主体 通过 LF-Tags 授予的权限
委托人 1
  • CREATE_TABLE在数据库 A

  • SELECTINSERT在表 A.1

  • SELECTINSERT在表 A.2

  • SELECTINSERT在表 B.2

  • CREATE_TABLE在数据库 C

  • SELECTINSERT在表 C.1 上

  • SELECTINSERT在表 C.2 上

  • SELECTINSERT在表 C.3

委托人 2
  • SELECTINSERT在表 A.2

  • CREATE_TABLE在数据库 B 上

  • SELECTINSERT在表 B.1

  • SELECTINSERT在表 B.2

委托人 3
  • SELECTINSERT在表 B.2

  • CREATE_TABLE在数据库 C

  • SELECTINSERT在表 C.1 上

  • SELECTINSERT在表 C.2 上

  • SELECTINSERT在表 C.3

底线

在这个简单的示例中,使用五个分配操作和八个授权操作,数据湖管理员能够指定 17 个权限。当有数十个数据库和数百个表时,LF-TBAC 方法比命名资源方法的优势变得明显。在假设情况下,需要授予每个委托人访问每个资源的权限,以及在哪里n(P)是校长的数量和n(R)是资源的数量:

  • 使用命名资源方法,所需的授权数量为n(P)n(R).

  • 使用 LF-TAC 方法,使用单个 LF-Tag,给委托人的补助金和资源分配的总数为n(P)+n(R).