如何解决通过 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 举报,一经查实,本站将立刻删除。