BigQuery如何通过CEL条件为指定表授予访问权限
针对BigQuery指定表粒度授权的CEL条件实现方案
roles/bigquery.user 本身是数据集级的角色,要限制仅对指定表生效,只需要在授予该角色时添加IAM条件即可,具体操作和CEL规则如下:
操作步骤
- 进入对应GCP项目的IAM权限管理页面,找到需要授权的账号/服务账号,点击「编辑权限」
- 点击「添加角色」,选择
roles/bigquery.user(或者其他需要限制表范围的BigQuery相关角色) - 点击角色右侧的「添加条件」,进入条件生成器页面
CEL规则编写
两种实现方式,可直接写CEL表达式或者用可视化条件生成器配置:
1. 直接编写CEL表达式
如果是限制单张表的访问权限,CEL表达式如下:
resource.type == "bigquery.googleapis.com/Table" && resource.name == "projects/你的项目ID/datasets/你的数据集ID/tables/你的表名"
如果是匹配符合命名规则的多张表,比如匹配表名前缀为ods_的所有表,可以用:
resource.type == "bigquery.googleapis.com/Table" && resource.name.startsWith("projects/你的项目ID/datasets/你的数据集ID/tables/ods_")
如果要匹配多个不相关的指定表,可以用:
resource.type == "bigquery.googleapis.com/Table" && resource.name in [ "projects/项目ID/datasets/数据集ID/tables/表1", "projects/项目ID/datasets/数据集ID/tables/表2" ]
2. 可视化条件生成器配置
不需要手动写代码的配置方式:
- 条件类型选择「资源」
- 资源类型选择
bigquery.googleapis.com/Table - 运算符选择「名称」->「等于」/「开头为」/「在列表中」,根据你的需求填入对应表的完整资源路径即可
注意事项
该条件仅会限制
roles/bigquery.user对表资源的访问权限,不会影响账号对数据集本身的列表等基础操作权限;如果需要同时限制作业权限,可以在CEL规则中追加resource.type == "bigquery.googleapis.com/Job"相关的判断逻辑。
内容的提问来源于stack exchange,提问作者BAE
相关产品推荐
相关产品推荐

