级联跨账户权限 - Amazon Lake Formation
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

级联跨账户权限

按照以下步骤进行操作,设置和测试跨账户权限级联:

  1. 使用 Lake Formation 控制台创建 LF 标签:

    • 标签键c175912681300719

    • 标签值[all, public]

  2. 将表与标签和值相关联:

    • c175912681300719

    • all

  3. 授予跨账户标签策略权限。从账户 111122223333 向账户 444455556666 授予标签策略的 SELECT 权限:

    aws lakeformation grant-permissions \ --cli-input-json '{ "Principal": { "DataLakePrincipalIdentifier": "444455556666" }, "Resource": { "LFTagPolicy": { "CatalogId": "111122223333", "ResourceType": "TABLE", "Expression": [{ "TagKey": "c175912681300719", "TagValues": [ "all" ] }] } }, "Permissions": [ "SELECT" ] }'

    使用者账户(444455556666)管理员可以访问使用标签 c175912681300719:all 标记的表。使用者账户无法使用任一标签值级联对其他用户的权限授予。

  4. 授予 DESCRIBE 权限。创建者账户管理员向使用者账户授予标签键和两个值的 DESCRIBE 权限:

    aws lakeformation grant-permissions \ --cli-input-json '{ "Principal": { "DataLakePrincipalIdentifier": "444455556666" }, "Resource": { "LFTag": { "CatalogId": "111122223333", "TagKey": "c175912681300719", "TagValues": ["all","public"] } }, "Permissions": [ "DESCRIBE" ] }'

    使用者账户管理员尝试使用标签 c175912681300719 和值“all”(完全相同的策略)将权限级联授予其他用户:

    aws lakeformation grant-permissions --region us-east-1 --cli-input-json '{ "Principal": { "DataLakePrincipalIdentifier": "arn:aws:iam::444455556666:role/AccessAnalyzerTrustedService" }, "Resource": { "LFTagPolicy": { "CatalogId": "111122223333", "ResourceType": "TABLE", "Expression": [ { "TagKey": "c175912681300719", "TagValues": [ "all" ] } ] } }, "Permissions": [ "SELECT" ] }'

    结果:AccessDeniedException

    授予失败,因为 Lake Formation 检测到 LF 标签策略与创建者账户用于与使用者账户共享资源的 LF 标签策略完全相同,并且仅检查用户是否具有可授予的权限,而不是检查规则 2(DESCRIBE 权限)。

    使用多个标签值授予:

    aws lakeformation grant-permissions --region us-east-1 --cli-input-json '{ "Principal": { "DataLakePrincipalIdentifier": "arn:aws:iam::444455556666:role/AccessAnalyzerTrustedService" }, "Resource": { "LFTagPolicy": { "CatalogId": "111122223333", "ResourceType": "TABLE", "Expression": [ { "TagKey": "c175912681300719", "TagValues": [ "all","public" ] } ] } }, "Permissions": [ "SELECT" ] }'

    结果(成功):策略不完全相同,因此规则 2 适用,DESCRIBE 权限相同就足够了。

    使用者尝试单个 public 值 - 成功:

    aws lakeformation grant-permissions --cli-input-json '{ "Principal": { "DataLakePrincipalIdentifier": "arn:aws:iam::444455556666:role/AccessAnalyzerTrustedService" }, "Resource": { "LFTagPolicy": { "CatalogId": "111122223333", "ResourceType": "TABLE", "Expression": [ { "TagKey": "c175912681300719", "TagValues": [ "public" ] } ] } }, "Permissions": [ "SELECT" ] }'

    策略不完全相同,因此规则 2 适用。