微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过 CloudFormation 授予 Lake Formation 对 Glue 数据库中所有表的读取权限

如何解决通过 CloudFormation 授予 Lake Formation 对 Glue 数据库中所有表的读取权限

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

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

解决方法

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

,

与当前文档相反,可以使用 "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={}
)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。