0

我正在努力在使用 Lake Formation 进行访问控制的数据湖中定义读者角色。我想将此角色Select权限授予相关数据库中的所有表,以便它自动选择创建的新表。在CloudFormation 的文档中,我可以看到这目前被标记为不支持,TableWildcard 看起来像是我想使用的解决方案。

我目前正在考虑对这个角色应该有权访问的表名进行硬编码,或者编写一个boto3脚本来获取数据库中的所有表并通过 Lake Formation 向它们添加权限。这可以使用 Lambda 定期运行,这将自动执行此过程,但当然这不是最漂亮的方法。

4

2 回答 2

0

如果您想拥有相关数据库中的所有表,为什么不使用DataBaseResource?这就是我正在使用的,它就像一个魅力。

于 2021-04-30T10:18:57.497 回答
0

与当前文档相反,可以使用"TableWildcard": {}如下示例所示的构造来授予角色对给定数据库中所有表的权限。

"ExamplePermission": {
  "Type": "AWS::LakeFormation::Permissions",
  "Properties": {
    "DataLakePrincipal": {
      "DataLakePrincipalIdentifier": {
        "Fn::GetAtt": [
          "ExampleRole",
          "Arn"
        ]
      }
    },
    "Resource": {
      "TableResource": {
        "DatabaseName": "example_database",
        "TableWildcard": {}
      }
    },
    "Permissions": [
      "SELECT"
    ],
    "PermissionsWithGrantOption": []
  }
}

对于使用 CDK 的任何人,这里是表资源属性的 Python 风格:

import aws_cdk.aws_lakeformation as lakeformation

table_property = lakeformation.CfnPermissions.TableResourceProperty(
    database_name="example_database",
    table_wildcard={}
)
于 2021-05-13T08:19:33.233 回答