使用 IAM 进行 Bigtable 访问权限控制

本页介绍了 Bigtable 中的访问权限控制选项。

概览

Bigtable 使用 Identity and Access Management (IAM) 进行访问权限控制。如需控制谁对哪些资源具有什么访问权限,请在资源上设置 IAM 政策。

Bigtable 资源以层次结构的形式组织。Google Cloud 项目是 Bigtable 实例的父级,而 Bigtable 实例是其集群和表的父级。表是其已获授权的视图的父级,而集群是其备份的父级。您可以在每个级别配置访问权限控制。

如果您拥有某个级别的权限,则会自动拥有低于该级别的权限。例如,如果您拥有项目级访问权限,则可以访问该项目中的实例、集群、表、授权视图和持续具体化视图。如果您获准访问授权视图或持续具体化视图,则不会自动获准访问授权视图或持续具体化视图的父级资源(例如表和实例)。这种行为称为“政策继承”。

如需详细了解 IAM 层次结构,请参阅 IAM 政策沿用

以下示例说明了如何在项目级层使用访问权限控制:

  • 允许用户从项目内的任何表中读取数据,但不允许他们写入数据。
  • 允许用户从项目内的任何表中读取数据以及向表中写入数据,但不允许他们管理实例。
  • 允许用户从项目内的任何表中读取数据以及向表中写入数据,并且允许他们管理实例。

以下示例说明了如何在实例级层使用访问权限控制:

  • 允许用户从具有多个实例的项目中仅读取一个实例中任何表的数据。
  • 允许用户仅管理具有多个实例的项目中的一个实例。

以下示例说明了如何在级层使用访问权限控制:

  • 允许用户向表中写入数据,但不允许其从表中读取数据。
  • 允许用户从表中读取内容,但不允许其向表中写入数据。

以下示例说明了如何在备份级层使用访问权限控制:

  • 防止用户删除备份。
  • 防止用户从备份中恢复。

以下示例说明了如何在授权视图级层使用访问权限控制:

  • 允许用户读取授权视图,但不允许修改。
  • 允许用户仅查看表的多个授权视图中的一个视图中的数据。

以下示例说明了如何在持续物化视图级层使用访问权限控制:

  • 允许用户从持续具体化视图中读取数据,但不允许其修改基础表。

如需详细了解 IAM 及其功能,请参阅 IAM 开发者指南。尤其是授予、更改和撤消访问权限部分。

在 Bigtable 中,您无法向以下主账号类型授予访问权限:

有关 Bigtable 支持的权限和角色的列表,请参阅以下各部分。

启用 Bigtable API

如需查看和分配 Bigtable IAM 角色,您必须为项目启用 Bigtable API。在启用此 API 之前,Bigtable 角色不会显示在Google Cloud 控制台中。

启用 API 所需的角色

如需启用 API,您需要拥有 serviceusage.services.enable 权限。如果您创建了项目,则可能已经通过 Owner 角色 (roles/owner) 获得了此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。了解如何授予角色

启用 API

权限

本部分总结了 Bigtable 支持的权限。

权限允许用户对 Bigtable 资源执行特定操作。例如,拥有 bigtable.instances.list 权限的用户可以列出项目中的所有 Bigtable 实例。您不能直接向用户授予权限;不过,您可以为每个用户分配预定义角色自定义角色,这些角色会向用户授予一项或多项权限。

下表列出了与 Bigtable 关联的 IAM 权限:

应用配置文件权限名称 说明
bigtable.appProfiles.create 创建 Bigtable 应用配置文件。
bigtable.appProfiles.delete 删除 Bigtable 应用配置文件。
bigtable.appProfiles.get 获取有关 Bigtable 应用配置文件的信息。
bigtable.appProfiles.list 列出实例的 Bigtable 应用配置文件。
bigtable.appProfiles.update 更新 Bigtable 应用配置文件的设置。
备份权限名称 说明
bigtable.backups.create 创建 Bigtable 备份。
bigtable.backups.delete 删除 Bigtable 备份。
bigtable.backups.get 获取有关 Bigtable 备份的信息。
bigtable.backups.getIamPolicy 获取备份的 IAM 政策。
bigtable.backups.list 列出 Bigtable 备份。
bigtable.backups.restore 从 Bigtable 备份进行恢复。
bigtable.backups.testIamPermissions 获取对指定备份的调用方权限。
bigtable.backups.read 从 Bigtable 备份中读取数据。
bigtable.backups.setIamPolicy 更新备份 ACL。
bigtable.backups.update 修改 Bigtable 备份的到期时间。
集群权限名称 说明
bigtable.clusters.create 创建 Bigtable 集群。
bigtable.clusters.delete 删除 Bigtable 集群。
bigtable.clusters.get 获取有关 Bigtable 集群的信息。
bigtable.clusters.list 列出实例的 Bigtable 集群。
bigtable.clusters.update 更新 Bigtable 集群的设置。
热门平板电脑权限名称 说明
bigtable.hotTablets.list 列出集群的热片。
内存中层(预览版)权限名称 说明
bigtable.memoryLayer.get 查看有关 Bigtable 内存中层的信息。
bigtable.memoryLayer.list 列出 Bigtable 内存中层。
bigtable.memoryLayer.update 启用、停用或调整 Bigtable 内存中层的大小。
实例权限名称 说明
bigtable.instances.create 创建 Bigtable 实例。
bigtable.instances.createTagBinding 创建标记。
bigtable.instances.delete 删除 Bigtable 实例。
bigtable.instances.deleteTagBinding 删除标记。
bigtable.instances.get 获取有关 Bigtable 实例的信息。
bigtable.instances.getIamPolicy 获取实例的 IAM 政策。
bigtable.instances.list 列出项目的 Bigtable 实例。
bigtable.instances.listEffectiveTagBindings 列出对实例生效的所有标记。
bigtable.instances.listTagBindings 列出实例的标记。
bigtable.instances.ping 发送渠道预热请求。
bigtable.instances.executeQuery 向实例发送 ExecuteQueryPrepareQuery 请求。
bigtable.instances.setIamPolicy 更新 ACL。
bigtable.instances.update 更新 Bigtable 实例的设置。
Key Visualizer 权限名称 说明
bigtable.keyvisualizer.get 获取有关表的 Key Visualizer 的信息,包括有关访问模式和行键分布的元数据。
bigtable.keyvisualizer.list 列出表的可用 Key Visualizer 信息。
位置权限名称 说明
bigtable.locations.list 列出 Bigtable 位置。
表权限名称 说明
bigtable.tables.checkConsistency 检查复制表是否是最新的。
bigtable.tables.create 创建表。
bigtable.tables.delete 删除表。
bigtable.tables.generateConsistencyToken 生成令牌以检查复制表是否是最新的。
bigtable.tables.get 获取有关表的信息,包括列族及其各自的设置。
bigtable.tables.getIamPolicy 获取表的 IAM 政策。
bigtable.tables.list 列出实例中的表。
bigtable.tables.mutateRows 修改表中的行,或截断表。
bigtable.tables.readRows 从表中读取行。这包括有关表的信息,例如列族及其各自的设置。
bigtable.tables.sampleRowKeys 获取表中使用的行键示例。
bigtable.tables.setIamPolicy 更新表 ACL。
bigtable.tables.undelete 恢复已删除的表。
bigtable.tables.update 更新表的设置,包括列族及其各自的设置。
位置权限名称 说明
bigtable.locations.list 列出 Bigtable 位置。
授权视图权限名称 说明
bigtable.authorizedViews.create 创建授权视图。
bigtable.authorizedViews.delete 删除授权视图。
bigtable.authorizedViews.get 获取有关授权视图的信息。
bigtable.authorizedViews.getIamPolicy 获取已获授权视图的 IAM 政策。
bigtable.authorizedViews.list 以表格形式列出授权视图。
bigtable.authorizedViews.mutateRows 修改授权视图中的行。
bigtable.authorizedViews.readRows 从授权视图中读取行。
bigtable.authorizedViews.sampleRowKeys 获取已获授权视图中使用的行键示例。
bigtable.authorizedViews.setIamPolicy 更新授权视图的访问权限控制政策。
bigtable.authorizedViews.update 更新授权视图的设置。
持续具体化视图权限名称 说明
bigtable.materializedViews.create 创建连续的具体化视图。
bigtable.materializedViews.delete 删除连续的具体化视图。
bigtable.materializedViews.get 获取有关连续具体化视图的信息。
bigtable.materializedViews.getIamPolicy 获取连续的具体化视图的 IAM 政策。
bigtable.materializedViews.list 列出实例中的连续具体化视图。
bigtable.materializedViews.readRows 从连续的具体化视图中读取行。
bigtable.materializedViews.sampleRowKeys 获取连续具体化视图中使用的行键示例。
bigtable.materializedViews.setIamPolicy 更新持续具体化视图的访问权限控制政策。
bigtable.materializedViews.update 更新连续具体化视图的设置。

预定义角色

每个预定义角色都包括一项或多项权限。例如,roles/bigtable.reader 提供对 Bigtable 实例、集群、表和列族的相关信息以及表中所含数据的只读权限。您将角色分配给用户或组,这些角色允许他们对项目中的资源执行操作。

下表列出了 Bigtable 的预定义角色,包括与每个角色关联的权限列表:

Role Permissions

(roles/bigtable.admin)

Administers all Bigtable instances within a project, including the data stored within tables. Can create new instances. Intended for project administrators.

Lowest-level resources where you can grant this role:

  • Table

bigtable.*

  • bigtable.appProfiles.create
  • bigtable.appProfiles.delete
  • bigtable.appProfiles.get
  • bigtable.appProfiles.list
  • bigtable.appProfiles.update
  • bigtable.authorizedViews.create
  • bigtable.authorizedViews.createTagBinding
  • bigtable.authorizedViews.delete
  • bigtable.authorizedViews.deleteTagBinding
  • bigtable.authorizedViews.get
  • bigtable.authorizedViews.getIamPolicy
  • bigtable.authorizedViews.list
  • bigtable.authorizedViews.listEffectiveTags
  • bigtable.authorizedViews.listTagBindings
  • bigtable.authorizedViews.mutateRows
  • bigtable.authorizedViews.readRows
  • bigtable.authorizedViews.sampleRowKeys
  • bigtable.authorizedViews.setIamPolicy
  • bigtable.authorizedViews.update
  • bigtable.backups.create
  • bigtable.backups.delete
  • bigtable.backups.get
  • bigtable.backups.getIamPolicy
  • bigtable.backups.list
  • bigtable.backups.read
  • bigtable.backups.restore
  • bigtable.backups.setIamPolicy
  • bigtable.backups.update
  • bigtable.clusters.create
  • bigtable.clusters.delete
  • bigtable.clusters.get
  • bigtable.clusters.list
  • bigtable.clusters.update
  • bigtable.hotTablets.list
  • bigtable.instances.create
  • bigtable.instances.createTagBinding
  • bigtable.instances.delete
  • bigtable.instances.deleteTagBinding
  • bigtable.instances.executeQuery
  • bigtable.instances.get
  • bigtable.instances.getIamPolicy
  • bigtable.instances.list
  • bigtable.instances.listEffectiveTags
  • bigtable.instances.listTagBindings
  • bigtable.instances.ping
  • bigtable.instances.setIamPolicy
  • bigtable.instances.update
  • bigtable.keyvisualizer.get
  • bigtable.keyvisualizer.list
  • bigtable.locations.list
  • bigtable.logicalViews.create
  • bigtable.logicalViews.delete
  • bigtable.logicalViews.get
  • bigtable.logicalViews.getIamPolicy
  • bigtable.logicalViews.list
  • bigtable.logicalViews.readRows
  • bigtable.logicalViews.setIamPolicy
  • bigtable.logicalViews.update
  • bigtable.materializedViews.create
  • bigtable.materializedViews.delete
  • bigtable.materializedViews.get
  • bigtable.materializedViews.getIamPolicy
  • bigtable.materializedViews.list
  • bigtable.materializedViews.readRows
  • bigtable.materializedViews.sampleRowKeys
  • bigtable.materializedViews.setIamPolicy
  • bigtable.materializedViews.update
  • bigtable.memoryLayers.get
  • bigtable.memoryLayers.list
  • bigtable.memoryLayers.update
  • bigtable.schemaBundles.create
  • bigtable.schemaBundles.delete
  • bigtable.schemaBundles.get
  • bigtable.schemaBundles.getIamPolicy
  • bigtable.schemaBundles.list
  • bigtable.schemaBundles.setIamPolicy
  • bigtable.schemaBundles.update
  • bigtable.tables.checkConsistency
  • bigtable.tables.create
  • bigtable.tables.delete
  • bigtable.tables.generateConsistencyToken
  • bigtable.tables.get
  • bigtable.tables.getIamPolicy
  • bigtable.tables.list
  • bigtable.tables.mutateRows
  • bigtable.tables.readRows
  • bigtable.tables.sampleRowKeys
  • bigtable.tables.setIamPolicy
  • bigtable.tables.undelete
  • bigtable.tables.update

cloudkms.keyHandles.*

  • cloudkms.keyHandles.create
  • cloudkms.keyHandles.get
  • cloudkms.keyHandles.list

cloudkms.operations.get

cloudkms.projects.showEffectiveAutokeyConfig

monitoring.metricDescriptors.get

monitoring.metricDescriptors.list

monitoring.timeSeries.*

  • monitoring.timeSeries.create
  • monitoring.timeSeries.list

resourcemanager.projects.get

(roles/bigtable.editor)

Editor role for bigtable

bigtable.appProfiles.*

  • bigtable.appProfiles.create
  • bigtable.appProfiles.delete
  • bigtable.appProfiles.get
  • bigtable.appProfiles.list
  • bigtable.appProfiles.update

bigtable.authorizedViews.create

bigtable.authorizedViews.delete

bigtable.authorizedViews.get

bigtable.authorizedViews.getIamPolicy

bigtable.authorizedViews.list

bigtable.authorizedViews.listEffectiveTags

bigtable.authorizedViews.listTagBindings

bigtable.authorizedViews.mutateRows

bigtable.authorizedViews.readRows

bigtable.authorizedViews.sampleRowKeys

bigtable.authorizedViews.update

bigtable.backups.create

bigtable.backups.delete

bigtable.backups.get

bigtable.backups.getIamPolicy

bigtable.backups.list

bigtable.backups.read

bigtable.backups.restore

bigtable.backups.update

bigtable.clusters.*

  • bigtable.clusters.create
  • bigtable.clusters.delete
  • bigtable.clusters.get
  • bigtable.clusters.list
  • bigtable.clusters.update

bigtable.hotTablets.list

bigtable.instances.create

bigtable.instances.delete

bigtable.instances.executeQuery

bigtable.instances.get

bigtable.instances.getIamPolicy

bigtable.instances.list

bigtable.instances.listEffectiveTags

bigtable.instances.listTagBindings

bigtable.instances.ping

bigtable.instances.update

bigtable.keyvisualizer.*

  • bigtable.keyvisualizer.get
  • bigtable.keyvisualizer.list

bigtable.locations.list

bigtable.logicalViews.create

bigtable.logicalViews.delete

bigtable.logicalViews.get

bigtable.logicalViews.getIamPolicy

bigtable.logicalViews.list

bigtable.logicalViews.readRows

bigtable.logicalViews.update

bigtable.materializedViews.create

bigtable.materializedViews.delete

bigtable.materializedViews.get

bigtable.materializedViews.getIamPolicy

bigtable.materializedViews.list

bigtable.materializedViews.readRows

bigtable.materializedViews.sampleRowKeys

bigtable.materializedViews.update

bigtable.memoryLayers.*

  • bigtable.memoryLayers.get
  • bigtable.memoryLayers.list
  • bigtable.memoryLayers.update

bigtable.schemaBundles.create

bigtable.schemaBundles.delete

bigtable.schemaBundles.get

bigtable.schemaBundles.getIamPolicy

bigtable.schemaBundles.list

bigtable.schemaBundles.update

bigtable.tables.checkConsistency

bigtable.tables.create

bigtable.tables.delete

bigtable.tables.generateConsistencyToken

bigtable.tables.get

bigtable.tables.getIamPolicy

bigtable.tables.list

bigtable.tables.mutateRows

bigtable.tables.readRows

bigtable.tables.sampleRowKeys

bigtable.tables.undelete

bigtable.tables.update

monitoring.metricDescriptors.get

monitoring.metricDescriptors.list

monitoring.timeSeries.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/bigtable.user)

Provides read-write access to the data stored within Bigtable tables. Intended for application developers or service accounts.

Lowest-level resources where you can grant this role:

  • Table

bigtable.appProfiles.get

bigtable.appProfiles.list

bigtable.authorizedViews.get

bigtable.authorizedViews.list

bigtable.authorizedViews.mutateRows

bigtable.authorizedViews.readRows

bigtable.authorizedViews.sampleRowKeys

bigtable.backups.get

bigtable.backups.list

bigtable.clusters.get

bigtable.clusters.list

bigtable.hotTablets.list

bigtable.instances.executeQuery

bigtable.instances.get

bigtable.instances.list

bigtable.instances.ping

bigtable.keyvisualizer.*

  • bigtable.keyvisualizer.get
  • bigtable.keyvisualizer.list

bigtable.locations.list

bigtable.logicalViews.get

bigtable.logicalViews.list

bigtable.logicalViews.readRows

bigtable.materializedViews.get

bigtable.materializedViews.list

bigtable.materializedViews.readRows

bigtable.materializedViews.sampleRowKeys

bigtable.memoryLayers.get

bigtable.memoryLayers.list

bigtable.schemaBundles.get

bigtable.schemaBundles.list

bigtable.tables.checkConsistency

bigtable.tables.generateConsistencyToken

bigtable.tables.get

bigtable.tables.list

bigtable.tables.mutateRows

bigtable.tables.readRows

bigtable.tables.sampleRowKeys

monitoring.metricDescriptors.get

monitoring.metricDescriptors.list

monitoring.timeSeries.*

  • monitoring.timeSeries.create
  • monitoring.timeSeries.list

resourcemanager.projects.get

(roles/bigtable.viewer)

Provides no data access. Intended as a minimal set of permissions to access the Google Cloud console for Bigtable.

Lowest-level resources where you can grant this role:

  • Table

bigtable.appProfiles.get

bigtable.appProfiles.list

bigtable.authorizedViews.get

bigtable.authorizedViews.list

bigtable.backups.get

bigtable.backups.list

bigtable.clusters.get

bigtable.clusters.list

bigtable.hotTablets.list

bigtable.instances.get

bigtable.instances.list

bigtable.instances.listEffectiveTags

bigtable.instances.listTagBindings

bigtable.locations.list

bigtable.logicalViews.get

bigtable.logicalViews.list

bigtable.materializedViews.get

bigtable.materializedViews.list

bigtable.memoryLayers.get

bigtable.memoryLayers.list

bigtable.schemaBundles.get

bigtable.schemaBundles.list

bigtable.tables.checkConsistency

bigtable.tables.generateConsistencyToken

bigtable.tables.get

bigtable.tables.list

monitoring.metricDescriptors.get

monitoring.metricDescriptors.list

monitoring.timeSeries.list

resourcemanager.projects.get

(roles/bigtable.reader)

Provides read-only access to the data stored within Bigtable tables. Intended for data scientists, dashboard generators, and other data-analysis scenarios.

Lowest-level resources where you can grant this role:

  • Table

bigtable.appProfiles.get

bigtable.appProfiles.list

bigtable.authorizedViews.get