访问权限控制

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

概览

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

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

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

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

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

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

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

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

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

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

启用 Cloud Bigtable API

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

启用 API

权限

本节总结了 Cloud Bigtable 支持的权限。

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

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

位置权限名称 说明
bigtable.locations.list 列出 Cloud Bigtable 位置。
实例权限名称 说明
bigtable.instances.create 创建 Cloud Bigtable 实例。
bigtable.instances.delete 删除 Cloud Bigtable 实例。
bigtable.instances.get 获取 Cloud Bigtable 实例的相关信息。
bigtable.instances.getIamPolicy 读取实例访问控制列表 (ACL)以 IAM 政策的形式返回。
bigtable.instances.list 列出项目的 Cloud Bigtable 实例。
bigtable.instances.setIamPolicy 更新 ACL。
bigtable.instances.update 更新 Cloud Bigtable 实例的设置。
应用配置文件权限名称 说明
bigtable.appProfiles.create 创建 Cloud Bigtable 应用配置文件。
bigtable.appProfiles.delete 删除 Cloud Bigtable 应用配置文件。
bigtable.appProfiles.get 获取有关 Cloud Bigtable 应用配置文件的信息。
bigtable.appProfiles.list 列出实例的 Cloud Bigtable 应用配置文件。
bigtable.appProfiles.update 更新 Cloud Bigtable 应用配置文件的设置。
备份权限名称 说明
bigtable.backups.create 创建 Cloud Bigtable 备份。
bigtable.backups.get 获取 Cloud Bigtable 备份。
bigtable.backups.list 列出 Cloud Bigtable 备份。
bigtable.backups.delete 删除 Cloud Bigtable 备份。
bigtable.backups.update 修改 Cloud Bigtable 备份的到期时间。
bigtable.backups.restore 恢复 Cloud Bigtable 备份。
集群权限名称 说明
bigtable.clusters.create 创建 Cloud Bigtable 集群。
bigtable.clusters.delete 删除 Cloud Bigtable 集群。
bigtable.clusters.get 获取有关 Cloud Bigtable 集群的信息。
bigtable.clusters.list 列出实例的 Cloud Bigtable 集群。
bigtable.clusters.update 更新 Cloud 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 提供对 Cloud Bigtable 实例、集群、表和列族的相关信息以及表中所含数据的只读权限。您将角色分配给用户或组,这些角色允许他们对项目中的资源执行操作。

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

角色 权限 说明
roles/bigtable.admin

拥有所有 Cloud 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

不提供数据访问权限。仅提供通过 Cloud Console 访问 Cloud Bigtable 所需的一组最低权限。这不包括对 Key Visualizer 的访问权限。

自定义角色

如果 Cloud 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 管理

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

准备工作

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

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

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

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

授予实例级层 IAM 角色

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

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

控制台

  1. 转到 Cloud Console 中的 Cloud Bigtable 实例页面。

    转到实例页面

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

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

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

  5. 点击选择角色下拉列表,然后点击 Cloud 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 管理

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

准备工作

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

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

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

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

授予表级层 IAM 角色

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

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

控制台

  1. 转到 Cloud Console 中的 Cloud Bigtable 实例页面。

    转到实例页面

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

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

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

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

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

  7. 点击选择角色下拉列表,然后点击 Cloud 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