本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
元数据访问控制
对于数据目录资源的访问控制,以下讨论假设具有 Lake Formation 权限的精细访问控制以及 IAM 策略的粗粒度访问控制。
有两种不同的方法可以授予对数据目录资源的 Lake Formation 权限:
-
命名资源访问控制— 使用此方法,您可以通过指定数据库或表名称来授予对特定数据库或表的权限。补助金有这种形式:
Grant许可到校长上资源[使用授予选项]。
使用授予选项,您可以允许被授权者向其他委托人授予权限。
-
基于标签的访问控制— 使用此方法,您可以分配一个或多个LF-标签转到数据目录数据库、表和列,并将一个或多个 LF 标签的权限授予委托人。每个 LF 标签都是一个键-值对,例如
department=sales
. 具有与数据目录资源上的 LF 标签匹配的委托人可以访问该资源。对于具有大量数据库和表的数据湖,建议使用此方法。在中详细解释了这个问题基于标签的 Lake Formation.
委托人对资源拥有的权限是两种方法授予的权限的联合。
下表总结了对数据目录资源的可用 Lake Formation 权限。列标题表示授予权限的资源。
目录 | 数据库。 | 表 |
---|---|---|
CREATE_DATABASE |
CREATE_TABLE |
ALTER |
ALTER |
DROP |
|
DROP |
DESCRIBE |
|
DESCRIBE |
SELECT * |
|
INSERT * |
||
DELETE * |
例如,CREATE_TABLE
授予对数据库的权限。这意味着允许委托人在该数据库中创建表。
带星号 (*) 的权限是对数据目录资源授予的,但它们适用于底层数据。例如,DROP
对元数据表的权限允许您将该表从数据目录中删除。但是,DELETE
对同一表授予的权限使您可以使用例如使用 SQL 删除 Amazon S3 中表的底层数据DELETE
网页。有了这些权限,您还可以在 Lake Formation 控制台上查看表格,并使用Amazon GlueAPI。因此,SELECT
、INSERT
, 和DELETE
同时是数据目录权限和数据访问权限。
授予时SELECT
在表格上,您可以添加包含或排除一个或多个列的筛选器。这允许对元数据表列进行精细的访问控制,从而限制了集成服务用户在运行查询时可以看到的列。仅使用 IAM 策略无法使用此功能。
还有一个名为的特殊许可Super
. 这些区域有:Super
权限使委托人能够在授予该操作的数据库或表上执行所有受支持的 Lake Formation 操作。此权限可以与其他 Lake Formation 权限共存。例如,您可以授予Super
、SELECT
, 和INSERT
在元数据表上。委托人可以在桌子上执行所有受支持的操作,当你撤销时Super
,SELECT
和INSERT
权限仍然存在。
有关每个权限的详细信息,请参Lake Formation 权限参考.
为了能够查看由另一个用户创建的数据目录表,必须向您授予至少一个对该表的 Lake Formation 权限。如果您至少获得对表的一个权限,则还可以看到表中的包含数据库。
您可以使用 Lake Formation 控制台、API 或Amazon Command Line Interface(Amazon CLI)。以下是一个示例Amazon CLI授予用户的命令datalake_user1
在中创建表的权限retail
数据库。
aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "CREATE_TABLE" --resource '{ "Database": {"Name":"retail"}}'
以下是粗粒度访问控制 IAM 策略的示例,该策略使用 Lake Formation 权限补充了细粒度的访问控制。它允许对任何元数据库或表进行所有操作。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:*Database*", "glue:*Table*", "glue:*Partition*" ], "Resource": "*" } ] }
下一个例子也是粗粒度但有些限制性更大。它允许对指定账户和区域中的数据目录中的所有元数据库和表进行只读操作。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:GetTables", "glue:SearchTables", "glue:GetTable", "glue:GetDatabase", "glue:GetDatabases" ], "Resource": "arn:aws:glue:us-east-1:111122223333:*" } ] }
将这些策略与以下策略进行比较,后者实施基于 IAM 的精细访问控制。它仅授予对指定账户和区域中客户关系管理 (CRM) 元数据库中的一部分表的权限。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:GetTables", "glue:SearchTables", "glue:GetTable", "glue:GetDatabase", "glue:GetDatabases" ], "Resource": [ "arn:aws:glue:us-east-1:111122223333:catalog", "arn:aws:glue:us-east-1:111122223333:database/CRM", "arn:aws:glue:us-east-1:111122223333:table/CRM/P*" ] } ] }
有关粗粒度访问控制策略的更多示例,请参阅Lake Formation 角色角色和 IAM 权限参考.