使用 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) 获得此权限。了解如何授予角色。
权限
本部分总结了 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 |
向实例发送 ExecuteQuery 和 PrepareQuery 请求。 |
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 |
|---|---|
Bigtable Administrator( 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:
|
|
Bigtable Editor( Editor role for bigtable |
|
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:
|
|
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:
|
|
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:
|
|