使用 IAM 控制访问权限
本页面介绍了 BigQuery 的 Identity and Access Management (IAM) 角色和权限。 在配置 BigQuery 的访问权限控制之前,您应该熟悉如何使用 IAM 管理对 Google Cloud 的访问权限。
您可能还需要有关以下 BigQuery 服务的角色和权限的详细指导:
概览
如果某个身份(用户或服务帐号)调用 Google Cloud API,BigQuery 会要求该身份必须具有使用相应资源的适当权限。您可以通过为用户、群组或服务帐号授予角色来提供权限。
本页面介绍了您可以为身份授予访问 BigQuery 资源所需的 BigQuery IAM 角色。
IAM 角色类型
您可以在 IAM 中管理以下类型的角色:
如需确定角色中是否包含一项或多项权限,您可以使用以下方法之一:
- IAM 权限搜索参考
gcloud iam roles describe
命令- IAM API 中的
roles.get()
方法
向用户分配多个角色类型时,授予的权限是每个角色所拥有权限的并集。
如需详细了解如何使用 IAM 访问资源,请参阅 IAM 文档中的授予、更改和撤消对资源的访问权限。
如需了解如何创建自定义角色,请参阅 IAM 文档中的创建和管理自定义角色。
BigQuery 权限和预定义的 IAM 角色
权限不会直接分配给用户、群组或服务帐号。相反,用户、群组或服务帐号会被授予预定义角色或自定义角色的访问权限,以便获得对资源执行操作所需的权限。
您可以在以下 BigQuery 资源级别授予访问权限:
- 组织或 Google Cloud 项目级
- 数据集级
- 表或视图级
在组织或 Cloud 项目级应用的角色
如果在组织级和项目级分配角色,您需要提供运行 BigQuery 作业或访问项目的所有 BigQuery 资源所需的权限。
在数据集级应用的角色
您可以在数据集级分配角色,以提供对特定数据集的访问权限,而无需提供对项目资源的完整访问权限。在 IAM 政策层次结构中,BigQuery 数据集是项目的子资源。如需详细了解如何在数据集级分配角色,请参阅控制对数据集的访问权限。
应用于数据集内单个资源的角色
您可以单独为数据集内特定类型的资源分配角色,而无需提供对数据集资源的完整访问权限。
角色可以应用于以下类型的单个资源:
- 表
- 视图
角色无法应用于以下类型的单个资源:
- 例程
- 模型
如需详细了解如何在表或视图级分配角色,请参阅控制对表或视图的访问权限。
BigQuery 权限
下表介绍了 BigQuery 中提供的权限。
权限 | 说明 |
---|---|
bigquery.bireservations.get |
读取 BI Engine 预留。 |
bigquery.bireservations.update |
更新 BI Engine 预留。 |
bigquery.capacityCommitments.create |
在项目中创建容量承诺。 |
bigquery.capacityCommitments.delete |
删除容量承诺。 |
bigquery.capacityCommitments.get |
检索容量承诺的相关详细信息。 |
bigquery.capacityCommitments.list |
列出项目中的所有容量承诺。 |
bigquery.capacityCommitments.update |
更新项目中的所有容量承诺。 |
bigquery.connections.create |
在项目中创建新连接。 |
bigquery.connections.delete |
删除连接。 |
bigquery.connections.get |
获取连接元数据。不包括凭据。 |
bigquery.connections.list |
列出项目中的连接。 |
bigquery.connections.update |
更新连接及其凭据。 |
bigquery.connections.updateTag |
更新连接的标记。 |
bigquery.connections.use |
使用连接配置连接到远程数据源。 |
bigquery.connections.delegate |
委托连接以创建授权的外部表和远程函数。 |
bigquery.dataPolicies.create |
创建新的数据政策。 此权限为预览版。 |
bigquery.dataPolicies.delete |
删除数据政策。 此权限为预览版。 |
bigquery.dataPolicies.get |
获取数据政策的相关元数据。 此权限为预览版。 |
bigquery.dataPolicies.getIamPolicy |
读取数据政策的 IAM 权限。 此权限为预览版。 |
bigquery.dataPolicies.list |
列出项目中的数据政策。 此权限为预览版。 |
bigquery.dataPolicies.maskedGet |
查看具有与数据政策关联的政策标记的列的遮盖数据。 此权限为预览版。 |
bigquery.dataPolicies.setIamPolicy |
设置数据政策的 IAM 权限。 此权限为预览版。 |
bigquery.dataPolicies.update |
更新数据政策的元数据。 此权限为预览版。 |
bigquery.datasets.create |
新建空数据集。 |
bigquery.datasets.createTagBinding |
创建数据集的标记绑定。 |
bigquery.datasets.delete |
删除数据集。 |
bigquery.datasets.deleteTagBinding |
删除数据集的标记绑定。 |
bigquery.datasets.get |
获取数据集的相关元数据。 |
bigquery.datasets.getIamPolicy |
读取数据集的 IAM 权限。 |
bigquery.datasets.link |
创建关联数据集。 |
bigquery.datasets.listTagBindings |
列出数据集的标记绑定。 |
bigquery.datasets.setIamPolicy |
更改数据集的 IAM 权限。 |
bigquery.datasets.update |
更新数据集的元数据。 |
bigquery.datasets.updateTag (Beta 版) |
更新数据集的标记。 |
bigquery.jobs.create |
在项目中运行作业(包括查询作业)。 |
bigquery.jobs.get |
获取任何作业的数据和元数据。1 |
bigquery.jobs.list |
列出所有作业,并检索任何用户所提交任何作业的相关元数据。 对于由其他用户提交的作业,详细信息和元数据会被遮盖。 |
bigquery.jobs.listAll |
列出所有作业,并检索任何用户所提交任何作业的相关元数据。 |
bigquery.jobs.listExecutionMetadata (Beta 版) |
列出任何用户所提交的任何作业的所有作业执行元数据(无敏感信息)。它只能在组织级层应用,并由管理界面使用。 |
bigquery.jobs.delete |
删除作业的元数据。 |
bigquery.jobs.update |
取消任何作业。1 |
bigquery.models.create |
创建新模型。 |
bigquery.models.delete |
删除模型。 |
bigquery.models.getData |
获取模型数据。如需获取模型元数据,您需要拥有 bigquery.models.getMetadata 权限。 |
bigquery.models.getMetadata |
获取模型元数据。如需获取模型数据,您需要拥有 bigquery.models.getData 权限。 |
bigquery.models.list |
列出模型及其元数据。 |
bigquery.models.updateData |
更新模型数据。如需更新模型元数据,您需要拥有 bigquery.models.updateMetadata 权限。 |
bigquery.models.updateMetadata |
更新模型元数据。如需更新模型数据,您需要拥有 bigquery.models.updateData 权限。 |
bigquery.models.export |
导出模型。 |
bigquery.readsessions.create |
通过 BigQuery Storage Read API 创建新的读取会话。 |
bigquery.readsessions.getData |
通过 Storage Read API 从读取会话读取数据。 |
bigquery.readsessions.update |
通过 Storage Read API 更新读取会话。 |
bigquery.reservations.create |
在项目中创建预留。 |
bigquery.reservations.delete |
删除预留。 |
bigquery.reservations.get |
检索预留的相关详细信息。 |
bigquery.reservations.list |
列出项目中的所有预留。 |
bigquery.reservations.update |
更新预留的属性。 |
bigquery.reservationAssignments.create |
创建预留分配。所有者项目和分配对象资源需要此权限。 |
bigquery.reservationAssignments.delete |
删除预留分配。所有者项目和分配对象资源需要此权限。 |
bigquery.reservationAssignments.list |
列出项目中的所有预留分配。 |
bigquery.reservationAssignments.search |
搜索指定项目、文件夹或组织的预留分配。 |
bigquery.rowAccessPolicies.create |
为表创建新的行级层访问权限政策。 |
bigquery.rowAccessPolicies.delete |
从表中删除行级层访问权限政策。 |
bigquery.rowAccessPolicies.getFilteredData |
获取表中您希望只对行级层访问权限政策被授权者列表的主帐号可见的数据。我们建议仅对行级层访问权限政策授予此权限资源。 |
bigquery.rowAccessPolicies.list |
列出表中的所有行级层访问权限政策。 |
bigquery.rowAccessPolicies.overrideTimeTravelRestrictions |
访问现在具有或以前具有行级访问政策的表的历史数据。 |
bigquery.rowAccessPolicies.getIamPolicy |
获取行访问权限政策的 IAM 权限。 |
bigquery.rowAccessPolicies.setIamPolicy |
设置行访问权限政策的 IAM 权限。 |
bigquery.rowAccessPolicies.update |
重新创建行级层访问权限政策。 |
bigquery.routines.create |
创建新例程(函数和存储过程)。 |
bigquery.routines.delete |
删除例程。 |
bigquery.routines.get |
获取例程定义和元数据。 |
bigquery.routines.list |
列出例程及其元数据。 |
bigquery.routines.update |
更新例程定义和元数据。 |
bigquery.routines.updateTag |
更新例程的标记。 |
bigquery.savedqueries.create |
创建已保存的查询。 |
bigquery.savedqueries.delete |
删除已保存的查询。 |
bigquery.savedqueries.get |
获取已保存查询的元数据。 |
bigquery.savedqueries.list |
列出已保存的查询 |
bigquery.savedqueries.update |
更新已保存的查询。 |
bigquery.tables.create |
新建表。 |
bigquery.tables.createIndex |
在表上创建搜索索引。 |
bigquery.tables.createSnapshot
|
创建新的表快照。 |
bigquery.tables.delete |
删除表。 |
bigquery.tables.deleteIndex |
删除表上的搜索索引。 |
bigquery.tables.deleteSnapshot
|
删除表快照。 |
bigquery.tables.export |
从 BigQuery 导出表数据。 |
bigquery.tables.get |
获取表元数据。 如需获取表数据,您需要拥有 bigquery.tables.getData 权限。 |
bigquery.tables.getData |
获取表数据。查询表数据需要此权限。 如需获取表元数据,您需要拥有 bigquery.tables.get 权限。 |
bigquery.tables.getIamPolicy |
读取表的 IAM 政策。 |
bigquery.tables.list |
列出表及其元数据。 |
bigquery.tables.restoreSnapshot
|
恢复表快照。 |
bigquery.tables.setCategory |
设置表架构中的政策标记。 |
bigquery.tables.setIamPolicy |
更改表的 IAM 政策。 |
bigquery.tables.update |
更新表元数据。 |
bigquery.tables.updateData |
更新表数据。 |
bigquery.tables.updateTag (Beta 版) |
更新表的标记。 |
bigquery.transfers.get |
获取转移作业元数据。 |
bigquery.transfers.update |
创建、更新和删除传输。 |
1 对于您创建的任何作业,系统将会自动为您分配该作业的 bigquery.jobs.get
和 bigquery.jobs.update
权限。
BigQuery 预定义的 IAM 角色
下表列出了预定义的 BigQuery IAM 角色以及每个角色包含的所有权限的列表。请注意,每个权限适用于特定资源类型。
角色 | 权限 |
---|---|
BigQuery Admin
提供管理项目中所有资源的权限。获授此角色的用户可以管理项目中的所有数据,也可以取消其他用户正在项目中运行的作业。 您可以授予此角色的最低级层资源:
|
|
BigQuery Connection Admin
|
|
BigQuery Connection User
|
|
BigQuery Data Editor
此角色在应用于表或视图时,可提供以下权限:
此角色无法应用于单个模型或例程。 此角色在应用于数据集时,可提供以下权限:
此角色在应用于项目或组织级层时,还可提供创建新数据集的权限。 您可以授予此角色的最低级层资源:
|
|
BigQuery Data Owner
此角色在应用于表或视图时,可提供以下权限:
此角色无法应用于单个模型或例程。 此角色在应用于数据集时,可提供以下权限:
此角色在应用于项目或组织级层时,还可提供创建新数据集的权限。 您可以授予此角色的最低级层资源:
|
|
BigQuery Data Viewer
此角色在应用于表或视图时,可提供以下权限:
此角色无法应用于单个模型或例程。 此角色在应用于数据集时,可提供以下权限:
此角色在应用于项目或组织级层时,还可提供枚举项目中所有数据集的权限。但若要运行作业,还需要具备其他角色。 您可以授予此角色的最低级层资源:
|
|
BigQuery Filtered Data Viewer
可以查看由行访问权限政策定义的已过滤表数据 |
|
BigQuery Job User
提供在项目中运行作业(包括查询)的权限。 您可以授予此角色的最低级层资源:
|
|
BigQuery Metadata Viewer
此角色在应用于表或视图时,可提供以下权限:
此角色无法应用于单个模型或例程。 此角色在应用于数据集时,可提供以下权限:
此角色在应用于项目或组织级层时,可提供以下权限:
但若要运行作业,还需要具备其他角色。 您可以授予此角色的最低级层资源:
|
|
BigQuery Read Session User
拥有创建和使用读取会话的权限 |
|
BigQuery Resource Admin
管理所有 BigQuery 资源。 |
|
BigQuery Resource Editor
管理所有 BigQuery 资源,但不能做出购买决定。 |
|
BigQuery Resource Viewer
可查看所有 BigQuery 资源,但不能执行更改或做出购买决定。 |
|
BigQuery User
此角色应用于数据集时,让您可以读取数据集的元数据并列出数据集中的表。 应用于项目时,此角色还提供在项目内运行作业(包括查询)的能力。具有此角色的主帐号可以枚举自己的作业、取消自己的作业,还可以枚举项目中的数据集。此外,具有此角色的用户还可以在项目中创建新数据集;对于这些新数据集,系统会为创建者授予 BigQuery Data Owner 角色 ( 您可以授予此角色的最低级层资源:
|
|
Masked Reader
Beta 版
拥有对与数据政策关联的政策标记所标记的子资源(例如 BigQuery 列)的遮盖内容读取权限 |
|
BigQuery 自定义角色
如需为 BigQuery 创建自定义 IAM 角色,请按照 IAM 自定义角色文档中列出的步骤操作。
BigQuery 基本角色
如需了解 BigQuery 基本角色,请参阅 BigQuery 基本角色和权限。
后续步骤
- 请参阅 BigQuery 访问权限控制示例。
- 如需详细了解如何在数据集级分配角色,请参阅控制对数据集的访问权限。
- 如需详细了解如何在表或视图级分配角色,请参阅控制对表和视图的访问权限。