本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
元数据访问控制
对于数据目录资源的访问控制,以下讨论假设具有 Lake Formation 权限的精细访问控制和使用 IAM 策略的粗粒度访问控制。
有两种不同的方法可以授予 Lake Formation 对数据目录资源的权限:
-
命名资源访问控制— 使用此方法,您可以通过指定数据库或表名来授予对特定数据库或表的权限。补助金有这样的形式:
Grant许可到校长上资源[有授予选项]。
使用授予选项,您可以允许被授权者将权限授予其他委托人。
-
基于标签的访问控制— 使用此方法,您可以分配一个或多个LF 标签访问数据目录数据库、表和列,并将一个或多个 LF 标记的权限授予主体。每个 LF-Tag 都是一个键-值对,如
department=sales. 拥有与数据目录资源上的 LF 标签匹配的 LF 标签的委托人可以访问该资源。对于具有大量数据库和表的数据湖,建议使用此方法。在中详细解释了它Lake Formation 标签访问控制概述.
委托人对资源拥有的权限是这两种方法所授予的权限的联合。
下表汇总了数据目录资源的可用Lake Formation 权限。列标题指示被授予权限的资源。
| 目录 | 数据库。 | 表 |
|---|---|---|
CREATE_DATABASE |
CREATE_TABLE |
ALTER |
ALTER |
DROP |
|
DROP |
DESCRIBE |
|
DESCRIBE |
SELECT* |
|
INSERT* |
||
DELETE* |
例如,CREATE_TABLE已授予对数据库的权限。这意味着主体可以在该数据库中创建表。
带星号 (*) 的权限是针对数据目录资源授予的,但这些权限适用于基础数据。例如,DROP元数据表的权限允许您从数据目录中删除该表。但是,DELETE授予对同一表的权限使您能够在 Amazon S3 中删除该表的基础数据,例如,使用 SQLDELETE网页。有了这些权限,您还可以在 Lake Formation 控制台上查看该表,并使用Amazon GlueAPI。因此,SELECT、INSERT, 和DELETE既是数据目录权限,又是数据访问权限。
授予时SELECT在表中,可以添加包含或排除一列或多列的筛选器。这允许对元数据表列进行精细的访问控制,从而限制集成服务的用户在运行查询时可以看到的列。此功能在使用 IAM 策略时,无法使用 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 权限参考.