访问权限控制

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

概览

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

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

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

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

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

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

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

如需详细了解 IAM 及其功能,请参阅 IAM 开发者指南。请特别留意授予、更改和撤消项目成员的访问权限部分。

在 Bigtable 中,您无法向以下成员类型授予访问权限:

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

启用 Bigtable API

如需查看和分配 Bigtable IAM 角色,您必须为项目启用 Bigtable API。启用 API 之前,您无法在 GCP Console 中看到 Bigtable 角色。

启用 API

权限

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

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

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

位置权限名称 说明
bigtable.locations.list 列出 Bigtable 位置。
实例权限名称 说明
bigtable.instances.create 创建 Bigtable 实例。
bigtable.instances.delete 删除 Bigtable 实例。
bigtable.instances.get 获取有关 Bigtable 实例的信息。
bigtable.instances.getIamPolicy 读取实例访问控制列表 (ACL)以 IAM 政策的形式返回。
bigtable.instances.list 列出项目的 Bigtable 实例。
bigtable.instances.setIamPolicy 更新 ACL。
bigtable.instances.update 更新 Bigtable 实例的设置。
应用配置文件权限名称 说明
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.get 获取 Bigtable 备份。
bigtable.backups.list 列出 Bigtable 备份。
bigtable.backups.delete 删除 Bigtable 备份。
bigtable.backups.update 修改 Bigtable 备份的到期时间。
bigtable.backups.restore 恢复 Bigtable 备份。
集群权限名称 说明
bigtable.clusters.create 创建 Bigtable 集群。
bigtable.clusters.delete 删除 Bigtable 集群。
bigtable.clusters.get 获取有关 Bigtable 集群的信息。
bigtable.clusters.list 列出实例的 Bigtable 集群。
bigtable.clusters.update 更新 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.update 更新表的设置,包括列族及其各自的设置。

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

Key Visualizer 权限名称 说明
bigtable.keyvisualizer.get 获取有关表的 Key Visualizer 的信息,包括有关访问模式和行键分布的元数据。
bigtable.keyvisualizer.list 列出表的可用 Key Visualizer 信息。

预定义角色

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

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

角色 权限 说明
roles/bigtable.admin

拥有对所有 Bigtable 功能的访问权限:

bigtable.*.*

拥有 GCP Console 中监控图表的查看权限:

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

拥有项目级层元数据的访问权限:

resourcemanager.projects.get

管理项目中的所有实例,包括存储在表中的数据。还可创建新实例。适用于项目管理员。这包括对 Key Visualizer 的访问权限。
roles/bigtable.user

拥有实例、集群、表和列族的元数据的只读权限:

  • bigtable.*.get
  • bigtable.*.list
  • bigtable.tables.checkConsistency
  • bigtable.tables.generateConsistencyToken

拥有表的读写权限:

  • bigtable.tables.mutateRows
  • bigtable.tables.readRows
  • bigtable.tables.sampleRowKeys

拥有 GCP Console 中监控图表的查看权限:

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

拥有项目级层元数据的访问权限:

resourcemanager.projects.get

提供表中所存储数据的读写权限。适用于应用开发者或服务帐号。这包括对 Key Visualizer 的访问权限。
roles/bigtable.reader

拥有实例、集群、表和列族的元数据的只读权限:

  • bigtable.*.get
  • bigtable.*.list
  • bigtable.tables.checkConsistency
  • bigtable.tables.generateConsistencyToken

拥有表的只读权限:

  • bigtable.tables.readRows
  • bigtable.tables.sampleRowKeys

拥有 GCP Console 中监控图表的查看权限:

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

拥有项目级层元数据的访问权限:

resourcemanager.projects.get

提供表中所存储数据的只读权限。适用于数据科学家、信息中心生成器和其他数据分析情景。 这包括对 Key Visualizer 的访问权限。
roles/bigtable.viewer

拥有实例、集群、表和列族的元数据的只读权限:

  • bigtable.appProfiles.get
  • bigtable.appProfiles.list
  • bigtable.clusters.get
  • bigtable.clusters.list
  • bigtable.instances.get
  • bigtable.instances.list
  • bigtable.locations.list
  • bigtable.tables.checkConsistency
  • bigtable.tables.generateConsistencyToken
  • bigtable.tables.get
  • bigtable.tables.list

拥有 GCP Console 中监控图表的查看权限:

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

拥有项目级层元数据的访问权限:

resourcemanager.projects.get

不提供数据访问权限。仅提供适用于 Bigtable 的 Cloud Console 的一组最低访问权限。 这不包括对 Key Visualizer 的访问权限。

自定义角色

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

如果您的自定义角色需要支持访问 Cloud Console,您必须确定用户将执行的任务,然后确保该自定义角色拥有每项任务所需的权限,如下表所示。如果自定义角色不具备某项任务所需的所有权限,那么当用户尝试执行该任务时,Cloud Console 将无法正常运作。

Cloud Console 任务 所需权限
对 GCP Console 进行基本访问
  • 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 或 gcloud 命令行工具来授予、更改和撤消 IAM 角色。如需了解详细说明,请参阅授予、更改和撤销项目成员的访问权限

实例级层 IAM 管理

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

准备工作

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

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

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

如果用户并未至少具有这些项目级层角色之一,则用户将没有通过 Cloud Console 访问 Bigtable 的权限。Cloud Console 要求用户必须拥有其中一个项目级层角色,这样它才能通过用户身份检索实例和集群的相关信息。

授予实例级层 IAM 角色

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

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

控制台

  1. 转到 Cloud Console 中的 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 角色。

如果用户并未至少具有这些项目级层角色之一,则用户没有通过 Cloud Console 访问 Bigtable 的权限。Cloud Console 要求用户必须拥有其中一个项目级层角色,这样它才能检索实例、集群和表的相关信息。

授予表级层 IAM 角色

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

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

控制台

  1. 转到 Cloud Console 中的 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