通过 CloudFormation 授予 Lake Formation 对 Glue 数据库中所有表的读取权限
Grant Lake Formation read permission to all tables in a Glue database through CloudFormation
我正在努力在使用 Lake Formation 进行访问控制的数据湖中定义 reader 角色。我想授予此角色 Select
对相关数据库中所有 table 的权限,以便它自动获取创建的新 table。在 documentation of CloudFormation 中,我可以看到当前标记为不受支持,TableWildcard
看起来像是我想使用的解决方案。
我目前正在考虑对这个角色应该有权访问的 table 名称进行硬编码,或者编写一个 boto3
脚本来获取数据库中的所有 table并通过 Lake Formation 向它们添加权限。这可能是定期 运行 Lambda,它会自动执行此过程,但当然这不是最漂亮的方法。
如果您想拥有相关数据库中的所有表,为什么不使用 DataBaseResource?这就是我正在使用的,它就像一个魅力。
与当前文档相反,可以使用 "TableWildcard": {}
构造,如下例所示,将角色权限授予给定数据库中的所有 table。
"ExamplePermission": {
"Type": "AWS::LakeFormation::Permissions",
"Properties": {
"DataLakePrincipal": {
"DataLakePrincipalIdentifier": {
"Fn::GetAtt": [
"ExampleRole",
"Arn"
]
}
},
"Resource": {
"TableResource": {
"DatabaseName": "example_database",
"TableWildcard": {}
}
},
"Permissions": [
"SELECT"
],
"PermissionsWithGrantOption": []
}
}
对于任何使用 CDK 的人,这里是 table 资源的 Python 风格 属性:
import aws_cdk.aws_lakeformation as lakeformation
table_property = lakeformation.CfnPermissions.TableResourceProperty(
database_name="example_database",
table_wildcard={}
)
我正在努力在使用 Lake Formation 进行访问控制的数据湖中定义 reader 角色。我想授予此角色 Select
对相关数据库中所有 table 的权限,以便它自动获取创建的新 table。在 documentation of CloudFormation 中,我可以看到当前标记为不受支持,TableWildcard
看起来像是我想使用的解决方案。
我目前正在考虑对这个角色应该有权访问的 table 名称进行硬编码,或者编写一个 boto3
脚本来获取数据库中的所有 table并通过 Lake Formation 向它们添加权限。这可能是定期 运行 Lambda,它会自动执行此过程,但当然这不是最漂亮的方法。
如果您想拥有相关数据库中的所有表,为什么不使用 DataBaseResource?这就是我正在使用的,它就像一个魅力。
与当前文档相反,可以使用 "TableWildcard": {}
构造,如下例所示,将角色权限授予给定数据库中的所有 table。
"ExamplePermission": {
"Type": "AWS::LakeFormation::Permissions",
"Properties": {
"DataLakePrincipal": {
"DataLakePrincipalIdentifier": {
"Fn::GetAtt": [
"ExampleRole",
"Arn"
]
}
},
"Resource": {
"TableResource": {
"DatabaseName": "example_database",
"TableWildcard": {}
}
},
"Permissions": [
"SELECT"
],
"PermissionsWithGrantOption": []
}
}
对于任何使用 CDK 的人,这里是 table 资源的 Python 风格 属性:
import aws_cdk.aws_lakeformation as lakeformation
table_property = lakeformation.CfnPermissions.TableResourceProperty(
database_name="example_database",
table_wildcard={}
)