使用 IAM 控制访问权限

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

概览

Bigtable 使用 身份和访问权限管理 (IAM) 进行访问权限控制。

在 Bigtable 中,您可以在项目级层、实例级层和表级层配置访问权限控制。以下示例说明了如何在项目级层使用访问权限控制:

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

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

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

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

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

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

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

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

启用 Bigtable API

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

启用 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 读取备份的访问控制列表 (ACL)。以 IAM 政策的形式返回。
bigtable.backups.list 列出 Bigtable 备份。
bigtable.backups.restore 从 Bigtable 备份进行恢复。
bigtable.backups.testIamPermissions 获取对指定备份的调用方权限。
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.instances.create 创建 Bigtable 实例。
bigtable.instances.createTagBinding 创建标记。
bigtable.instances.delete 删除 Bigtable 实例。
bigtable.instances.deleteTagBinding 删除标记。
bigtable.instances.get 获取有关 Bigtable 实例的信息。
bigtable.instances.getIamPolicy 读取实例访问控制列表 (ACL)以 IAM 政策的形式返回。
bigtable.instances.list 列出项目的 Bigtable 实例。
bigtable.instances.listEffectiveTagBindings 列出对实例有效的所有标记。
bigtable.instances.listTagBindings 列出实例的标记。
bigtable.instances.ping 发送渠道启动请求。
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 读取表 ACL(以 IAM 政策的形式返回)。
bigtable.tables.list 列出实例中的表。
bigtable.tables.mutateRows 修改表中的行,或截断表。
bigtable.tables.readRows 从表中读取行。
bigtable.tables.sampleRowKeys 获取表中使用的行键示例。
bigtable.tables.setIamPolicy 更新表 ACL。
bigtable.tables.undelete 恢复已删除的表。
bigtable.tables.update 更新表的设置,包括列族及其各自的设置。

预定义角色

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

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

角色 权限

(roles/bigtable.admin)

可管理项目中的所有 Bigtable 实例(包括表中存储的数据),还可创建新实例。适用于项目管理员。

您可以授予此角色的最低级层资源:

bigtable.*

  • bigtable.appProfiles.create
  • bigtable.appProfiles.delete
  • bigtable.appProfiles.get
  • bigtable.appProfiles.list
  • bigtable.appProfiles.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.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.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

monitoring.metricDescriptors.get

monitoring.metricDescriptors.list

monitoring.timeSeries.*

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

resourcemanager.projects.get

(roles/bigtable.reader)

提供对 Bigtable 表中所存储数据的只读权限。适用于数据科学家、信息中心生成器和其他数据分析情景。

您可以授予此角色的最低级层资源:

bigtable.appProfiles.get

bigtable.appProfiles.list

bigtable.backups.get

bigtable.backups.list

bigtable.clusters.get

bigtable.clusters.list

bigtable.hotTablets.list

bigtable.instances.get

bigtable.instances.list

bigtable.instances.ping

bigtable.keyvisualizer.*

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

bigtable.locations.list

bigtable.tables.checkConsistency

bigtable.tables.generateConsistencyToken

bigtable.tables.get

bigtable.tables.list

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.user)

提供对 Bigtable 表中所存储数据的读写权限。适用于应用开发者或服务帐号。

您可以授予此角色的最低级层资源:

bigtable.appProfiles.get

bigtable.appProfiles.list

bigtable.backups.get

bigtable.backups.list

bigtable.clusters.get

bigtable.clusters.list

bigtable.hotTablets.list

bigtable.instances.get

bigtable.instances.list

bigtable.instances.ping

bigtable.keyvisualizer.*

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

bigtable.locations.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)

不提供数据访问权限。仅提供适用于 Bigtable 的 Google Cloud 控制台的一组最低访问权限。

您可以授予此角色的最低级层资源:

bigtable.appProfiles.get

bigtable.appProfiles.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.tables.checkConsistency

bigtable.tables.generateConsistencyToken

bigtable.tables.get

bigtable.tables.list

monitoring.metricDescriptors.get

monitoring.metricDescriptors.list

monitoring.timeSeries.list

resourcemanager.projects.get

自定义角色

如果 Bigtable 的预定义角色不能满足您的业务需求,您可以自行定义自定义角色并为其指定权限。

如果您的自定义角色需要拥有 Google Cloud 控制台的访问权限,您必须确定用户将执行的任务,然后确保自定义角色具有每项任务所需的权限,如下表所示。如果自定义角色不具有任务所需的全部权限,并且用户尝试执行该任务,则 Google Cloud 控制台将无法正确运行。

Google Cloud 控制台任务 所需权限
Google Cloud 控制台的基本访问权限
  • bigtable.appProfiles.get
  • bigtable.appProfiles.list
  • bigtable.clusters.get
  • bigtable.clusters.list
  • bigtable.instances.get
  • bigtable.instances.list
  • bigtable.locations.list
  • resourcemanager.projects.get
创建实例或集群

基本访问权限,以及:

  • bigtable.clusters.create
  • bigtable.instances.create
修改实例或集群

基本访问权限,以及:

  • bigtable.clusters.update
  • bigtable.instances.update
管理复制配置

基本访问权限,以及:

  • bigtable.appProfiles.create
  • bigtable.appProfiles.delete
  • bigtable.appProfiles.update
删除实例或集群

基本访问权限,以及:

  • bigtable.clusters.delete
  • bigtable.instances.delete
通过查看图表来监控实例

基本访问权限,以及:

  • monitoring.metricDescriptors.get
  • monitoring.metricDescriptors.list
  • monitoring.timeSeries.list

项目级层 IAM 管理

在项目级层,您可以使用 Google Cloud Console、IAM API 或 Google Cloud CLI 来授予、更改和撤消 IAM 角色。如需查看详细说明,请参阅授予、更改和撤消访问权限

实例级层 IAM 管理

本部分介绍了如何在实例级层管理 Bigtable IAM 角色。

准备工作

在为用户设置实例级层 IAM 角色之前,请确保该用户至少具有以下任一项目级层 IAM 角色:

  • Bigtable Viewer(推荐)
  • Bigtable Reader
  • Bigtable User
  • Bigtable Administrator

在选择项目级层角色时,请确保该角色具有的权限不要超出用户对项目的所有实例所实际需要的权限。因此,在几乎所有情况下,您都应该授予 Bigtable Viewer 角色。

如果用户不具有其中任何一个项目级角色,则将无法通过 Google Cloud 控制台使用 Bigtable。Google Cloud 控制台要求用户必须拥有其中一个项目级角色,这样它才能通过用户身份检索实例和集群的相关信息。

授予实例级层 IAM 角色

在实例级层,您可以向用户或服务帐号授予 Bigtable 的任意预定义角色。您还可以授予您已定义的任何自定义角色

要在实例级层向用户或服务帐号授予预定义角色或自定义角色,请执行以下操作:

控制台

  1. 前往 Google Cloud 控制台中的“Bigtable 实例”页面。

    前往实例页面

  2. 勾选要管理其角色的实例旁边的复选框。系统将显示信息面板。

  3. 在信息面板中,点击权限

  4. 添加主帐号下,首先输入要添加的用户或服务帐号的电子邮件地址,然后点击用户或服务帐号的电子邮件地址。

  5. 点击选择角色下拉列表,然后点击 Bigtable 以选择预定义角色,或者点击自定义来选择自定义角色。

  6. 点击您要分配的每个角色的名称。

  7. 点击添加。系统将向用户或服务帐号授予您在实例级层指定的角色。

gcloud

  1. 如果您不知道实例 ID,请使用 bigtable instances list 命令查看项目的实例列表:

    gcloud bigtable instances list
    
  2. 使用 bigtable instances set-iam-policy 命令:

    gcloud bigtable instances set-iam-policy INSTANCE_ID POLICY_FILE
    

    提供以下信息:

    • INSTANCE_ID:实例的永久性标识符。
    • POLICY_FILE:包含有效 IAM 政策的本地 JSON 或 YAML 文件的路径。

表级层 IAM 管理

本部分介绍如何在表级层管理 Bigtable IAM 角色。

准备工作

在为某用户设置表级层 IAM 角色之前,请确保该用户至少具有以下任一项目级层 IAM 角色:

  • Bigtable Viewer(推荐)
  • Bigtable Reader
  • Bigtable User
  • Bigtable Administrator

在选择项目级层角色时,请确保该角色具有的权限不要超出用户所实际需要的权限。因此,在几乎所有情况下,您都应该授予 Bigtable Viewer 角色。

如果用户不具有其中任何一个项目级角色,则将无法通过 Google Cloud 控制台使用 Bigtable。Google Cloud 控制台要求用户必须拥有其中一个项目级角色,这样它才能检索实例、集群和表的相关信息。

授予表级层 IAM 角色

在表级层,您可以向用户或服务帐号授予 Bigtable 的任意预定义角色。您还可以授予您已定义的任何自定义角色

如需在表级层向用户或服务帐号授予预定义角色或自定义角色,请执行以下操作:

控制台

  1. 前往 Google Cloud 控制台中的“Bigtable 实例”页面。

    前往实例页面

  2. 点击您要设置其 IAM 的表所属的实例名称。

  3. 在左侧导航窗格中选择表格

  4. 勾选您要管理其角色的表旁边的复选框。系统将显示信息面板。

  5. 在信息面板中,点击权限

  6. 添加主帐号下,首先输入要添加的用户或服务帐号的电子邮件地址,然后点击用户或服务帐号的电子邮件地址。

  7. 点击选择角色下拉列表,然后点击 Bigtable 以选择预定义角色,或者点击自定义来选择自定义角色。

  8. 点击您要分配的每个角色的名称。

  9. 点击添加。系统将向该用户或服务帐号授予您在表级层指定的角色。

gcloud

  1. 如果您不知道实例 ID,请使用 bigtable instances list 命令查看项目的实例列表:

    gcloud bigtable instances list
    
  2. 如果您不知道实例的集群 ID,请使用 bigtable clusters list 命令查看实例中的集群列表:

    gcloud bigtable clusters list --instances=INSTANCE_ID
    
  3. 使用 bigtable instances tables set-iam-policy 命令:

    gcloud bigtable instances tables set-iam-policy TABLE_ID \
        --instance=INSTANCE_ID POLICY_FILE
    

    提供以下信息:

    • INSTANCE_ID:实例的永久性标识符。
    • POLICY_FILE:包含有效 IAM 政策的本地 JSON 或 YAML 文件的路径。

IAM Conditions

IAM Conditions 允许您为某些 Google Cloud 资源(包括 Bigtable 资源)定义和强制执行有条件、基于特性的访问权限控制。

在 Bigtable 中,您可以根据以下特性强制执行条件访问权限:

  • 日期/时间特性:用于设置对 Bigtable 资源的临时(很快就会过期)、预定或限时访问权限。例如,您可以允许用户访问某个表,此访问权限一直到指定日期为止。
  • 资源属性:用于根据资源名称、资源类型或资源服务属性配置条件访问权限。在 Bigtable 中,您可以使用实例、集群和表的特性来配置条件访问权限。 例如,您可以仅允许用户管理以特定前缀开头的表,也可以仅允许用户访问特定表。

如需详细了解 IAM 条件,请参阅条件概览

后续步骤

详细了解 IAM