本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 LF-TBAC 方法授予数据湖权限
您可以 LF-Tags 向委托人授予DESCRIBE和 ASSOCIATE Lake Formation 权限,以便他们可以查看 LF-Tags 和分配给数据目录资源(数据库、表、视图和列)。分配给数据目录资源后 LF-Tags ,您可以使用基于 Lake Formation 标签的访问控制 (LF-TBAC) 方法来保护这些资源。有关更多信息,请参阅 Lake Formation 基于标签的访问控制。
首先,只有数据湖管理员才能授予这些权限。如果数据湖管理员通过授予选项授予这些权限,则其他主体可以授予这些权限。Lake Formation 基于标签的访问控制最佳实践和注意事项中介绍了 DESCRIBE 和 ASSOCIATE 权限。
您可以向外部 AWS 账户授予DESCRIBE和ASSOCIATE权限。 LF-Tag然后,该账户中的数据湖管理员可以将这些权限授予给该账户中的其他主体。然后,外部账户中的数据湖管理员向其授予ASSOCIATE权限的委托人可以分配 LF-Tags给您与其账户共享的数据目录资源。
向外部账户授予权限时,您必须包括授予选项。
您可以使用 AWS Lake Formation 控制台、API 或 AWS Command Line Interface (AWS CLI) 授予权限。 LF-Tags
S3 表目录不需要执行以下步骤。您可以使用授予 LF-Tags 对现有 S3 表目录的权限,而无需删除和重新创建它们。
启用对使用 Lake Formation 权限的现有联合目录的 LF-Tags 支持
如果您有使用 Lake Formation 权限的现有联合目录,例如 Amazon Redshift Amazon DynamoDB 或 LF-Tags 在支持联合目录之前创建的目录,请按照以下步骤操作。
-
删除现有目录 - 调用 deleteCatalog API 操作以移除使用 Lake Formation 权限的现有联合目录。
-
创建新的联合目录-创建新目录并将新目录指向您的现有目录 namespace/datashare。
为目录使用新名称-此过程会更新您先前存在的联合目录以支持 LF-Tag 功能。如果您想使用相同的目录名称,请联系 AWS 支持团队寻求帮助。
授予数据目录权限
使用 Lake Formation 控制台,或者 AWS CLI 使用基于 Lake Formation 标签的访问控制 (LF-TBAC) 方法授予 Lake Formation 对数据目录数据库、表、视图和列的权限。
- Console
-
以下步骤说明了如何使用基于 Lake Formation 标签的访问控制 (LF-TBAC) 方法和 Lake Formation 控制台上的 “授予数据湖权限” 页面来授予权限。该页面分为以下几个部分:
-
委托人-用户、角色和 AWS 账户 向其授予权限。
-
LF-Tags 或目录资源-要授予权限的数据库、表或资源链接。
-
权限:要授予的 Lake Formation 权限。
-
打开“授予数据湖权限”页面。
在上打开 AWS Lake Formation 控制台 https://console.aws.amazon.com/lakeformation/,然后以数据湖管理员或使用授权选项获得 Lake Formation 数据目录资源权限的 LF-TBAC 用户身份登录。
在导航窗格的权限下,选择数据湖权限。然后选择授予。
-
指定主体。
在主体部分中,选择主体类型,然后指定要向其授予权限的主体。
- IAM 用户和角色
-
从 IAM 用户和角色列表中选择一个或多个用户或角色。
- IAM Identity Center
-
从用户和组列表中选择一个或多个用户或组。
- SAML 用户和组
-
对于 SAML 和 Quick 用户和群组,请为通过 SAML 联合的用户或群组输入一个或多个 Amazon 资源名称 (ARN),为快速用户或群组输入 ARN。在每个 ARN 后按 Enter。
有关如何构建 ARN 的信息,请参阅 Lake Formation 的批准和撤销 AWS CLI 命令。
仅Quick 企业版支持 Lake Formation 与 Quick 集成。
- 外部账户
-
对于AWS 账户 AWS 组织或 IAM 委托人,请为 IAM 用户或角色输入一个或多个有效 AWS 账户 ID、组织 ID、组织单位 ID 或 ARN。在每个 ID 后按 Enter。
组织 ID 由“o-”后跟 10 到 32 个小写字母或数字组成。
单位 ID 以“ou-”开头,后跟 4 到 32 个小写字母或数字(包含 OU 的根的 ID)。该字符串后跟第二个“-”短横线和 8 到 32 个额外的小写字母或数字。
-
确保选择了 “资源匹配依 LF-Tags据” 选项。选择LF-Tag 键值对或已保存 LF-Tag 的表达式。
-
如果选择LF-Tag 键值对选项,请选择键和值。
如果选择多个值,则使用OR运算符创建 LF-Tag 表达式。这意味着,如果其中任何一个 LF-Tag 值与 LF-Tag 分配给数据目录资源的值相匹配,则授予您对该资源的权限。
-
(可选)再次选择 “添加 LF-Tag 键值对” 以指定另一个键值对。 LF-Tag
如果指定多个 LF-Tag,则使用AND运算符创建 LF-Tag 表达式。只有在 LF-Tag 表达式中为每个 LF-Tag资源分配了匹配项时,才会向委托人授予 LF-Tag 对数据目录资源的权限。
-
选择另存为新表达式选项可重复使用该表达式。
您需要具有 Create LF-Tag expression 权限才能保存表达式。
有关 LF-Tag 表达式的更多信息,请参阅管理元数据访问控制 LF-Tag 表达式。
-
指定权限。
指定向主体授予的对匹配数据目录资源的权限。匹配资源是指分配给委 LF-Tags 托人的其中一个 LF-Tag 表达式匹配的资源。
您可以指定要授予的对匹配数据库、匹配表和匹配视图的权限。
在数据库权限下,选择要向主体授予的对匹配数据库的数据库权限。
在表权限下,选择要向主体授予的对匹配表和匹配视图的表或视图权限。
您也可以从表权限中选择要对视图应用的 Select、Describe 和 Drop 权限。
-
选择授权。
- AWS CLI
-
您可以使用 AWS Command Line Interface (AWS CLI) 和基于 Lake Formation 标签的访问控制 (LF-TBAC) 方法来授予 Lake Formation 对数据目录数据库、表和列的权限。
使用授予数据湖权限 AWS CLI 还有 LF-TBAC 方法
-
使用 grant-permissions 命令。
例
以下示例将 LF-Tag 表达式 “module=*”( LF-Tag 密钥的所有值module)授予用户datalake_user1。该用户将拥有所有匹配数据库的CREATE_TABLE权限,即已分配了密钥 LF-Tag module和任意值的数据库。
aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "CREATE_TABLE" --resource '{ "LFTagPolicy": {"CatalogId":"111122223333","ResourceType":"DATABASE","Expression":[{"TagKey":"module","TagValues":["*"]}]}}'
例
下一个示例将 LF-Tag 表达式 “(level=director)
AND (region=west OR region=south)” 授予用户datalake_user1。该用户将通过授予选项具有对匹配表(即分配了 level=director 和 region=west 或region=south 的表)的 SELECT、ALTER 和 DROP 权限。
aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=arn:aws:iam::111122223333:user/datalake_user1 --permissions "SELECT" "ALTER" "DROP" --permissions-with-grant-option "SELECT" "ALTER" "DROP" --resource '{ "LFTagPolicy": {"CatalogId":"111122223333","ResourceType":"TABLE","Expression": [{"TagKey": "level","TagValues": ["director"]},{"TagKey": "region","TagValues": ["west", "south"]}]}}'
例
下一个示例将 LF-Tag 表达式 “module=orders” 授予 AWS 账户 1234-5678-9012。然后,该账户中的数据湖管理员可以向其账户中的主体授予“module=orders”表达式。然后,这些委托人将CREATE_TABLE有权使用指定的资源方法或方法访问账户 1111-2222-3333 拥有并与账户 1234-5678-9012 共享的匹配数据库。 LF-TBAC
aws lakeformation grant-permissions --principal DataLakePrincipalIdentifier=123456789012 --permissions "CREATE_TABLE" --permissions-with-grant-option "CREATE_TABLE" --resource '{ "LFTagPolicy": {"CatalogId":"111122223333","ResourceType":"DATABASE","Expression":[{"TagKey":"module","TagValues":["orders"]}]}}'