Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅
中国的 Amazon Web Services 服务入门
(PDF)。
使用 LF-TBAC 方法授予数据湖权限
您可以向主体授予对 LF 标签的 DESCRIBE 和 ASSOCIATE Lake Formation 权限,以便他们可以查看 LF 标签并将其分配给数据目录资源(数据库、表、视图和列)。将 LF 标签分配给数据目录资源时,您可以使用 Lake Formation 基于标签的访问控制 (LF-TBAC) 方法来保护这些资源。有关更多信息,请参阅Lake Formation 基于标签的访问控制。
首先,只有数据湖管理员才能授予这些权限。如果数据湖管理员通过授予选项授予这些权限,则其他主体可以授予这些权限。Lake Formation 基于标签的访问控制最佳实践和注意事项中介绍了 DESCRIBE 和 ASSOCIATE 权限。
您可以向外部 Amazon 账户授予对 LF 标签的 DESCRIBE 和 ASSOCIATE 权限。然后,该账户中的数据湖管理员可以将这些权限授予给该账户中的其他主体。接着,外部账户中的数据湖管理员向其授予 ASSOCIATE 权限的主体可以将 LF 标签分配给您与其账户共享的数据目录资源。
向外部账户授予权限时,您必须包括授予选项。
您可以使用 Amazon Lake Formation 控制台、API 或 Amazon Command Line Interface (Amazon CLI) 来授予对 LF 标签的权限。
S3 表目录不需要执行以下步骤。您可以使用 LF 标签对现有 S3 表目录授予权限,而无需删除和重新创建表。
为使用 Lake Formation 权限的现有联合目录启用 LF 标签支持
如果您已有使用 Lake Formation 权限的联合目录(例如 Amazon Redshift 或在为联合目录提供 LF 标签支持之前创建的 Amazon DynamoDB 目录),请按照以下步骤操作。
-
删除现有目录 - 调用 deleteCatalog API 操作以移除使用 Lake Formation 权限的现有联合目录。
-
创建新的联合目录 - 创建新目录并将新目录指向现有命名空间/数据共享。
为目录使用新名称 - 此过程会更新预先存在的联合目录以支持 LF 标签功能。如果您想使用相同的目录名称,请联系 Amazon 支持团队寻求协助。
授予数据目录权限
使用 Lake Formation 控制台或 Amazon CLI 利用 Lake Formation 基于标签的访问控制(LF-TBAC)方法授予对数据目录数据库、表、视图和列的 Lake Formation 权限。
- Console
-
以下步骤说明如何使用 Lake Formation 基于标签的访问控制(LF-TBAC)方法和 Lake Formation 控制台上的授予数据湖权限页面来授予权限。该页面分为以下几个部分:
-
主体 – 要向其授予权限的用户、角色和 Amazon Web Services 账户。
-
LF 标签或目录资源 – 要对其授予权限的数据库、表或资源链接。
-
权限:要授予的 Lake Formation 权限。
-
打开“授予数据湖权限”页面。
通过 https://console.aws.amazon.com/lakeformation/ 打开 Amazon Lake Formation 控制台,然后以数据湖管理员或已使用授予选项通过 LF-TBAC 获得对数据目录资源的 Lake Formation 权限的用户身份登录。
在导航窗格的权限下,选择数据湖权限。然后选择授予。
-
指定主体。
在主体部分中,选择主体类型,然后指定要向其授予权限的主体。
- IAM 用户和角色
-
从 IAM 用户和角色列表中选择一个或多个用户或角色。
- IAM Identity Center 验证
-
从用户和组列表中选择一个或多个用户或组。
- SAML 用户和组
-
对于 SAML 和 Quick Suite 用户和组,为通过 SAML 联合的用户或组输入一个或多个 Amazon 资源名称(ARN),或者为 Quick Suite 用户或组输入 ARN。在每个 ARN 后按 Enter。
有关如何构建 ARN 的信息,请参阅 Lake Formation 授予和撤销 Amazon CLI 命令。
只有 Quick Suite 企业版支持 Lake Formation 与 Quick Suite 的集成。
- 外部账户
-
对于 Amazon Web Services 账户、Amazon Organizations 或 IAM 主体,为 IAM 用户或角色输入一个或多个有效 Amazon Web Services 账户 ID、组织 ID、组织单元 ID 或 ARN。在每个 ID 后按 Enter。
组织 ID 由“o-”后跟 10 到 32 个小写字母或数字组成。
单位 ID 以“ou-”开头,后跟 4 到 32 个小写字母或数字(包含 OU 的根的 ID)。该字符串后跟第二个“-”短横线和 8 到 32 个额外的小写字母或数字。
-
确保选择与 LF 标签匹配的资源选项。选择 LF 标签键值对或已保存的 LF 标签表达式。
-
如果选择 LF 标签键值对选项,请选择键和值。
如果选择多个值,则将使用 OR 运算符创建 LF 标签表达式。这意味着,如果任何 LF 标签值与分配给数据目录资源的 LF 标签相匹配,则将授予您对该资源的权限。
-
(可选)再次选择添加 LF 标签键值对以指定其他 LF 标签。
如果指定多个值,则将使用 AND 运算符创建 LF 标签表达式。仅在为 LF 标签表达式中的每个 LF 标签分配了匹配的 LF 标签时,才会向主体授予对数据目录资源的权限。
-
选择另存为新表达式选项可重复使用该表达式。
您需要具有 Create LF-Tag expression 权限才能保存表达式。
有关 LF 标签表达式的更多信息,请参阅管理 LF 标签表达式以实现元数据访问控制。
-
指定权限。
指定向主体授予的对匹配数据目录资源的权限。匹配的资源是指那些分配了 LF 标签的资源,这些标签与向主体授予的其中一个 LF 标签表达式相匹配。
您可以指定要授予的对匹配数据库、匹配表和匹配视图的权限。
在数据库权限下,选择要向主体授予的对匹配数据库的数据库权限。
在表权限下,选择要向主体授予的对匹配表和匹配视图的表或视图权限。
您也可以从表权限中选择要对视图应用的 Select、Describe 和 Drop 权限。
-
选择授权。
- Amazon CLI
-
您可以使用 Amazon Command Line Interface (Amazon CLI) 和 Lake Formation 基于标签的访问控制 (LF-TBAC) 方法授予对数据目录数据库、表和列的 Lake Formation 权限。
使用 Amazon CLI 和 LF-TBAC 方法授予数据湖权限
-
使用 grant-permissions 命令。
以下示例向用户 datalake_user1 授予 LF 标签表达式“module=*”(LF 标签键 module 的所有值)。该用户将具有对所有匹配数据库(即分配了带有键 module 及任何值的 LF 标签的数据库)的 CREATE_TABLE 权限。
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":["*"]}]}}'
下一个示例向用户 datalake_user1 授予 LF 标签表达式“(level=director)
AND (region=west OR region=south)”。该用户将通过授予选项具有对匹配表(即分配了 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"]}]}}'
下一个示例向账户 1234-5678-9012 中的 Amazon 授予 LF 标签表达式“module=orders”。然后,该账户中的数据湖管理员可以向其账户中的主体授予“module=orders”表达式。接着,这些主体将具有对匹配数据库的 CREATE_TABLE 权限,这些数据库由账户 1111-2222-3333 拥有并通过使用命名资源方法或 LF-TBAC 方法与账户 1234-5678-9012 共享。
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"]}]}}'