You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何列出BigQuery数据集/表的用户角色及权限(含继承权限)

BigQuery 非控制台获取数据集、表全量权限(含继承权限)实现方案

bq show 'dataset_name'仅能返回数据集/表层面直接绑定的IAM角色与权限,无法展示从组织、文件夹、项目层级继承的权限。无需登录控制台,通过bq命令行或原生SQL即可拉取包含继承关系的全量权限,具体实现方式如下:

方案1:通过bq命令行获取全量有效权限

不要使用bq show,改用bq get-iam-policy子命令搭配有效权限参数,即可拉取包含继承权限的完整IAM策略:

  • 查询数据集全量权限(含继承):
    bq get-iam-policy --effective --format=prettyjson 你的项目ID:目标数据集名
  • 查询指定表全量权限(含继承):
    bq get-iam-policy --effective --format=prettyjson 你的项目ID:目标数据集名.目标表名

返回结果中会明确区分每条权限绑定的来源:直接绑定在当前资源的权限会归类在资源自身的bindings节点下,继承自上级层级的权限会标注对应的上层资源节点,不会遗漏继承获得的角色。如果不需要格式化易读输出,去掉--format=prettyjson参数即可返回原始JSON结构。

方案2:通过BigQuery SQL查询全量权限

直接查询BigQuery内置的INFORMATION_SCHEMA有效权限视图即可,视图返回结果默认包含所有继承权限,还自带字段标记权限是否为继承获得:

  1. 查指定数据集下所有表的全量权限(含继承):
SELECT
  table_name,
  grantee, -- 被授权的主体(用户、服务账号、用户组)
  privilege_type, -- 对应的权限类型
  is_inherited -- 权限来源标记:TRUE=继承自上层资源,FALSE=直接绑定在当前表
FROM
  `你的项目ID.资源所在区域.INFORMATION_SCHEMA.EFFECTIVE_TABLE_PRIVILEGES`
WHERE
  table_schema = '目标数据集名';
  1. 查数据集本身的全量权限(含继承):
SELECT
  schema_name,
  grantee,
  privilege_type,
  is_inherited
FROM
  `你的项目ID.资源所在区域.INFORMATION_SCHEMA.EFFECTIVE_SCHEMA_PRIVILEGES`
WHERE
  schema_name = '目标数据集名';

注意:执行上述命令或SQL前,需要确保当前使用的账号拥有目标资源的IAM策略查看权限(对应权限点为bigquery.datasets.getIamPolicy、bigquery.tables.getIamPolicy),同时拥有上级项目/文件夹/组织的IAM查看权限,否则无法拉取完整的继承权限数据。SQL中的资源所在区域需替换为数据集/表实际部署的区域,例如多区域美区填region-us,单区域华东2填region-asia-east2。

内容的提问来源于stack exchange,提问作者Mayur7771

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 06:18:26