预定义角色和权限

本页面提供有关 BigQuery 的 Cloud Identity and Access Management 角色和权限的信息。

本页面包含与每个 BigQuery 配套产品相关的角色和权限:

  • BigQuery ML
  • BigQuery Data Transfer Service
  • BigQuery BI Engine

如需详细了解 BigQuery ML 中的访问权限控制,请参阅 BigQuery ML 文档中的访问权限控制

概览

如果某个身份调用 Google Cloud API,BigQuery 会要求该身份必须具有使用相应资源的适当权限。您可以通过为用户、群组或服务帐号授予角色来提供权限。

本页面介绍了您可以授予某个身份以访问 BigQuery 资源的 BigQuery Cloud IAM 角色。

Cloud IAM 角色类型

Cloud Identity and Access Management 中有三种类型的角色:

  • 原初角色:在引入 Cloud Identity and Access Management 之前就已存在的角色,包括 Owner、Editor 和 Viewer。
  • 预定义角色:针对特定服务提供精细访问权限,并由 Google Cloud 管理。预定义角色旨在为常见使用场景和访问权限控制模式提供支持。
  • 自定义角色:根据用户指定的权限列表提供精细访问权限。

如需确定原初角色、预定义角色或自定义角色中是否包含一项或多项权限,您可以使用以下方法之一:

如果您向某用户同时分配了预定义角色和原初角色,则授予的权限是每个角色所拥有权限的并集。

如需详细了解如何使用 Cloud IAM 访问资源,请参阅 Cloud Identity and Access Management 文档中的授予、更改和撤消对资源的访问权限

如需了解如何创建自定义角色,请参阅 Cloud Identity and Access Management 文档中的创建和管理自定义角色

BigQuery 权限和预定义的 Cloud IAM 角色

如需授予对 BigQuery 资源的访问权限,请为用户、组或服务帐号分配一个或多个角色。如果在组织级层和项目级层分配角色,您将授予运行 BigQuery 作业或管理项目的所有 BigQuery 资源所需的权限。

您还可以在数据集级层分配角色,以便仅授予对一个或多个数据集的访问权限。在 Cloud IAM 政策层次结构中,BigQuery 数据集是项目的子资源。表和视图是数据集的子资源,也就是说,它们会沿用其父级数据集的权限。

如需详细了解如何在数据集级层分配角色,请参阅控制对数据集的访问权限

BigQuery 权限

下表介绍了 BigQuery 中提供的权限。

权限 说明
bigquery.jobs.create 在项目中运行作业(包括查询作业)。
bigquery.jobs.listAll 列出所有作业,并检索任何用户所提交任何作业的相关元数据。*
bigquery.jobs.list 列出所有作业,并检索任何用户所提交任何作业的相关元数据。* 对于由其他用户提交的作业,详细信息和元数据会被遮盖。
bigquery.jobs.get 获取任何作业的数据和元数据。*
bigquery.jobs.update 取消任何作业。*
bigquery.datasets.create 新建空数据集。
bigquery.datasets.delete 删除数据集。
bigquery.datasets.get 获取数据集的相关元数据。
bigquery.datasets.update 更新数据集的元数据。
bigquery.tables.create 新建表。
bigquery.tables.list 列出表和表的元数据。
bigquery.tables.delete 删除表。
bigquery.tables.get 获取表元数据。
如需获取表数据,您需要拥有 bigquery.tables.getData 权限。
bigquery.tables.getData 获取表数据。查询表数据需要此权限。
如需获取表元数据,您需要拥有 bigquery.tables.get 权限。
bigquery.tables.export 从 BigQuery 导出表数据。
bigquery.tables.update

更新表元数据。
如需更新表数据,您需要拥有 bigquery.tables.updateData 权限。

bigquery.tables.updateData

更新表数据。
如需更新表元数据,您需要拥有 bigquery.tables.update 权限。

bigquery.routines.create(Beta 版) 创建新例程(函数和存储过程)。
bigquery.routines.list(Beta 版) 列出例程及其元数据。
bigquery.routines.delete(Beta 版) 删除例程。
bigquery.routines.get(Beta 版) 获取例程定义和元数据。
bigquery.routines.update(Beta 版)

更新例程定义和元数据。

bigquery.transfers.get 获取传输元数据。
bigquery.transfers.update 创建、更新和删除传输。
bigquery.savedqueries.create 创建已保存的查询。
bigquery.savedqueries.get 获取已保存查询的元数据。
bigquery.savedqueries.list 列出已保存的查询
bigquery.savedqueries.update 更新已保存的查询。
bigquery.savedqueries.delete 删除已保存的查询。
bigquery.readsessions.create(Beta 版) 通过 BigQuery Storage API 创建新的读取会话。
bigquery.connections.create(Beta 版) 在项目中创建新连接。
bigquery.connections.get(Beta 版) 获取连接元数据,不包括凭据。
bigquery.connections.list(Beta 版) 列出项目中的连接。
bigquery.connections.use(Beta 版) 使用连接配置连接到远程数据源。
bigquery.connections.update(Beta 版) 更新连接及其凭据。
bigquery.connections.delete(Beta 版) 删除连接。
bigquery.reservations.create(Beta 版) 在项目中创建预留。
bigquery.reservations.list(Beta 版) 列出项目中的所有预留。
bigquery.reservations.get(Beta 版) 检索预留的相关详细信息。
bigquery.reservations.delete(Beta 版) 删除预留。
bigquery.reservations.update(Beta 版) 更新预留的属性。
bigquery.capacityCommitments.create(Beta 版) 在项目中创建容量承诺。
bigquery.capacityCommitments.list(Beta 版) 列出项目中的所有容量承诺。
bigquery.capacityCommitments.get(Beta 版) 检索容量承诺的相关详细信息。
bigquery.capacityCommitments.delete(Beta 版) 删除容量承诺。
bigquery.reservationAssignments.create(Beta 版)

创建预留分配。所有者项目和分配对象资源需要此权限。
要迁移预留分配,您需要拥有新所有者项目和分配对象资源的 bigquery.reservationAssignments.create 权限。

bigquery.reservationAssignments.delete(Beta 版)

删除预留分配。所有者项目和分配对象资源需要此权限。
要迁移预留分配,您需要拥有旧所有者项目和分配对象资源的 bigquery.reservationAssignments.delete 权限。

bigquery.reservationAssignments.list(Beta 版)

列出预留分配。
要搜索指定项目、文件夹或组织的预留分配,您需要拥有分配对象资源的 bigquery.reservationAssignments.list 权限。

* 对于您创建的任何作业,系统将会自动为您分配该作业的 bigquery.jobs.getbigquery.jobs.update 权限。

BigQuery 预定义的 Cloud IAM 角色

下表列出了预定义的 BigQuery Cloud IAM 角色及每个角色包含的所有权限的列表。请注意,每个权限适用于特定资源类型。

角色 名称 说明 权限 最低资源要求
roles/
bigquery.admin
BigQuery Admin 提供管理项目中所有资源的权限。获授此角色的用户可以管理项目中的所有数据,也可以取消其他用户正在项目中运行的作业。 bigquery.*
resourcemanager.projects.get resourcemanager.projects.list
项目
roles/
bigquery.connectionAdmin
BigQuery Connection Admin Beta 版 bigquery.connections.*
roles/
bigquery.connectionUser
BigQuery Connection User Beta 版 bigquery.connections.get
bigquery.connections.getIamPolicy bigquery.connections.list bigquery.connections.use
roles/
bigquery.dataEditor
BigQuery Data Editor

dataEditor 应用于数据集时,可提供以下权限:

  • 读取数据集的元数据以及列出数据集中的表。
  • 创建、更新、获取和删除数据集的表。

此角色在应用于项目或组织级层时,还可提供创建新数据集的权限。

bigquery.datasets.create
bigquery.datasets.get bigquery.datasets.getIamPolicy bigquery.datasets.updateTag bigquery.models.* bigquery.routines.* bigquery.tables.create bigquery.tables.delete bigquery.tables.export bigquery.tables.get bigquery.tables.getData bigquery.tables.list bigquery.tables.update bigquery.tables.updateData bigquery.tables.updateTag resourcemanager.projects.get resourcemanager.projects.list
数据集
roles/
bigquery.dataOwner
BigQuery Data Owner

dataOwner 应用于数据集时,可提供以下权限:

  • 读取、更新和删除数据集。
  • 创建、更新、获取和删除数据集的表。

此角色在应用于项目或组织级层时,还可提供创建新数据集的权限。

bigquery.datasets.*
bigquery.models.* bigquery.routines.* bigquery.tables.* resourcemanager.projects.get resourcemanager.projects.list
数据集
roles/
bigquery.dataViewer
BigQuery Data Viewer

dataViewer 应用于数据集时,可提供以下权限:

  • 读取数据集的元数据以及列出数据集中的表。
  • 从数据集的表中读取数据和元数据。

此角色在应用于项目或组织级层时,还可提供枚举项目中所有数据集的权限。但若要运行作业,还需要具备其他角色。

bigquery.datasets.get
bigquery.datasets.getIamPolicy bigquery.models.getData bigquery.models.getMetadata bigquery.models.list bigquery.routines.get bigquery.routines.list bigquery.tables.export bigquery.tables.get bigquery.tables.getData bigquery.tables.list resourcemanager.projects.get resourcemanager.projects.list
数据集
roles/
bigquery.jobUser
BigQuery Job User 提供在项目中运行作业(包括查询)的权限。 此角色可以检查所有作业是否存在,以及枚举和取消自己的作业。 bigquery.jobs.create
resourcemanager.projects.get resourcemanager.projects.list
项目
roles/
bigquery.metadataViewer
BigQuery Metadata Viewer

metadataViewer 应用于项目或组织级层时,可提供以下权限:

  • 列出项目中的所有数据集,以及读取所有数据集的元数据。
  • 列出项目中的所有表和视图,以及读取所有表和视图的元数据。

但若要运行作业,还需要具备其他角色。

bigquery.datasets.get
bigquery.datasets.getIamPolicy bigquery.models.getMetadata bigquery.models.list bigquery.routines.get bigquery.routines.list bigquery.tables.get bigquery.tables.list resourcemanager.projects.get resourcemanager.projects.list
项目
roles/
bigquery.readSessionUser
BigQuery Read Session User Beta 版 拥有创建和使用读取会话的权限 bigquery.readsessions.*
resourcemanager.projects.get resourcemanager.projects.list
roles/
bigquery.user
BigQuery User 提供在项目中运行作业(包括查询)的权限。具有此角色的用户不但可以枚举和取消自己的作业,还可以枚举项目中的数据集。另外,具有此角色的用户还可以在项目中创建新数据集;对于这些新数据集,系统会为创建者授予 bigquery.dataOwner 角色。 bigquery.config.get
bigquery.datasets.create bigquery.datasets.get bigquery.datasets.getIamPolicy bigquery.jobs.create bigquery.jobs.list bigquery.models.list bigquery.readsessions.* bigquery.routines.list bigquery.savedqueries.get bigquery.savedqueries.list bigquery.tables.list bigquery.transfers.get resourcemanager.projects.get resourcemanager.projects.list
项目

BigQuery 原初角色

如需了解 BigQuery 原初角色,请参阅 BigQuery 原初角色和权限

BigQuery 自定义角色

要为 BigQuery 创建自定义 Cloud IAM 角色,请按照 Cloud IAM 自定义角色文档中列出的步骤操作。

后续步骤