本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
基于标签的 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 方法访问正确的资源后,撤消使用命名资源方法授予的权限。 |
- |
考虑一下数据湖管理员必须向三个数据库和七个表的三个承担者授予权限的情况。

要使用命名资源方法获得上图中所示的权限,数据湖管理员必须进行 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
和可能的值Sales
、Orders
, 和Customers
. LF-tag 的示例如下:
module=Sales
该图仅显示 lf-tag 值。

将分配标记到数据目录资源和继承
表从数据库继承 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=Sales
lf-tag 可以使用module=Sales
lf-tag(例如,数据库 A),一个具有module=Customers
lf-tag 可以使用module=Customers
lf-tag 等。
前面的授权命令不完整。这是因为尽管他们通过 LF-Tags 表示委托人有权限的数据目录资源,但他们并没有准确指出哪些 Lake Formation 权限(例如SELECT
、ALTER
)负责人对这些资源拥有。因此,以下伪代码命令更准确地表示了如何通过 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 |
|
委托人 2 |
|
委托人 3 |
|
底线
在这个简单的示例中,使用五个分配操作和八个授权操作,数据湖管理员能够指定 17 个权限。当有数十个数据库和数百个表时,LF-TBAC 方法比命名资源方法的优势变得明显。在假设情况下,需要授予每个委托人访问每个资源的权限,以及在哪里n(P)
是校长的数量和n(R)
是资源的数量:
-
使用命名资源方法,所需的授权数量为
n(P)
✕n(R)
. -
使用 LF-TAC 方法,使用单个 LF-Tag,给委托人的补助金和资源分配的总数为
n(P)
+n(R)
.