使用标记控制访问权限并整理实例

本页面介绍了如何使用 Google Cloud 代码来管理对 Spanner 实例。

Google Cloud 代码是 键值对,您可以附加到 Google Cloud 资源, (例如项目或 Spanner 实例)。你可以使用标签将群组 和整理实例,以及有条件地 基于 Identity and Access Management (IAM) 访问权限政策 某个实例是否具有特定标记。您可以创建和管理 使用 Google Cloud CLI 或 Google Cloud 控制台。创建标记后,您可以创建标记绑定, 将标记附加到 Google Cloud 资源。标记绑定由 根据 Google Cloud 资源层次结构为该资源的子资源。 例如,如果您将标记附加到项目,则该项目中的所有实例 继承该标记。您还可以使用标签 来整理您的 Google Cloud 资源,但无法使用标签来设置 有关 IAM 政策的条件。

如需详细了解标记,请参阅标记概览

Spanner 实例标记的常见使用场景

常见的代码用例包括:

  • Identity and Access Management (IAM) 标记:授予 Identity and Access 基于实例是否具有特定标记的 Management (IAM) 角色。通过 标记值是否存在是该 IAM 政策的条件; 有助于控制对 Spanner 实例的访问权限。
  • 状态标记:通过创建标记来指示和管理实例的状态。 例如,state:activestate:todeletestate:archive
  • 环境标记:指定生产、测试和开发环境 例如创建 env:prodenv:devenv:test

如何创建和管理 Spanner 实例标记

标记采用键值对结构。您需要在 组织资源,然后将标记值附加到标记键(例如, 标记键 environment,值为 proddev)。然后,您可以创建 将标记值关联到 Google Cloud 资源(例如项目)的绑定 或 Spanner 实例。请注意,您不能将代码分配给 数据库。

所需权限

所需权限取决于您要执行的操作。有关 相关信息,请参阅 Resource Manager 中的所需权限 文档。

创建标记键和标记值

在将标记附加到实例之前,您必须先创建标记并 赋值。如需创建标记键和标记值,请参阅创建标记添加标记值

将标记附加到实例

创建标记键值对后,您可以创建标记绑定并 将其挂接到您的 Spanner 实例。

控制台

  1. 在 Google Cloud 控制台中,前往 Spanner 实例 页面。

    转到 Spanner 实例

  2. 选择要附加标记的实例。

  3. 点击代码

  4. 如果您的组织未显示在标记面板中,请点击选择范围。选择您的组织,然后点击打开

  5. 在“代码”面板中,选择添加标签

  6. 字段中,选择要从哪个键附加代码 列表。您可以通过输入关键字来过滤列表。

  7. 字段中,选择要附加的代码的值 。您可以通过输入关键字来过滤列表。

  8. 如果您想附加更多标签,请点击 添加标记,然后选择键 和价值

  9. 点击保存

  10. 确认对话框中,点击确认以附加代码。

    系统会显示一条通知以确认您的标记已更新。

gcloud

如需创建标记绑定并将其附加到您的实例,请运行以下命令 命令:

gcloud resource-manager tags bindings create
--parent=//spanner.googleapis.com/projects/PROJECT_ID/instances/INSTANCE_ID
--tag-value=ORG_ID/KEY_NAME/VALUE_NAME
--location=LOCATION
  • PROJECT_ID:项目的 ID。
  • INSTANCE_ID:实例的 ID。
  • ORG_ID:组织的 ID。
  • KEY_NAME:代码的显示(简称)名称 键。例如 env
  • VALUE_NAME:代码的显示(简称)名称 值。例如 prod
  • LOCATION:您的实例的位置。例如 us-east1

例如,要在 Spanner 实例上创建标记绑定, 将 my-instance 替换为标记键值对 env:prod,请运行以下命令 命令:

gcloud resource-manager tags bindings create
--parent=//spanner.googleapis.com/projects/my-project/instances/my-instance
--tag-value=123456789012/env/prod
--location=us-east1

IAM 条件和标记

您可以使用标记和 IAM 条件有条件地将角色绑定授予 用户。如果应用了带有条件角色绑定的 IAM 政策,则更改或 删除附加到资源的标记可能会移除用户对资源的访问权限 资源。

如需了解详情,请参阅 IAM Conditions 概览

控制台

如需使用标记有条件地向用户授予角色绑定,请参阅 管理对标记的访问权限

gcloud

如需将基于标记的条件应用于 IAM 政策,请确保您拥有 所需的权限,然后运行以下命令:

gcloud organizations add-iam-policy-binding ORG_ID
--role=roles/ROLE --member=PRINCIPAL
--condition=resource.matchTag('PROJECT_ID/KEY_NAME', 'VALUE_NAME')
  • ORG_ID:组织的 ID。
  • ROLE:要分配给主账号的角色名称。通过 角色名称是预定义角色的完整路径,例如 roles/logging.viewer 或自定义角色的角色 ID,例如 organizations/{ORG_ID}/roles/logging.viewer.
  • PRINCIPAL:您要向其添加主账号的主账号 角色绑定。格式应为 user|group|serviceAccount:emaildomain:domain。例如: user:test-user@gmail.comgroup:admins@example.comserviceAccount:test123@example.domain.comdomain:example.domain.com
  • PROJECT_ID:项目的 ID。
  • KEY_NAME:代码的显示(简称)名称 键。例如 env
  • VALUE_NAME:代码的显示(简称)名称 值。例如 prod

此命令将 IAM 策略绑定添加到组织的 IAM 策略。 政策绑定由成员、角色和可选条件组成。

例如,如需有条件地向 user1@example.com 授予 在所有 123456789012 个项目资源中拥有以下角色的 spanner.backupAdmin 角色: 标记 env:prod,请运行以下命令:

gcloud organizations add-iam-policy-binding my-project
--member=user1@example.com --role=roles/spanner.backupAdmin
--condition=resource.matchTag('123456789012/env', 'prod')

列出附加到实例的标记

您可以查看直接附加到实例或由实例继承的标记绑定列表。

gcloud

如需获取直接附加到资源的标记绑定列表,请使用 gcloud resource-manager tags bindings list 命令。如果您将 --effective 标志,您还可以获取由此继承的所有标记绑定 资源。

如需列出附加到实例的所有标记绑定,请运行以下命令:

gcloud resource-manager tags bindings list
--parent=//spanner.googleapis.com/projects/PROJECT_ID/instances/INSTANCE_ID
--location=LOCATION
--effective
  • PROJECT_ID:项目的 ID。
  • INSTANCE_ID:实例的 ID。
  • LOCATION:您的实例的位置。例如 us-east1

删除标记绑定

移除标记键或值定义时,请确保标记已与实例分离。您必须先删除现有的标记绑定,然后才能删除标记。

控制台

  1. 在 Google Cloud 控制台中,前往 Spanner 实例 页面。

    转到 Spanner 实例

  2. 选择要为其删除标记绑定的实例。

  3. 点击代码

  4. 在“代码”面板中,点击要分离的代码旁边的 删除内容

  5. 点击保存

  6. 确认对话框中,点击确认以分离代码。

    系统会显示一条通知以确认您的标记已更新。

gcloud

如需删除标记绑定,请运行以下命令:

gcloud resource-manager tags bindings delete
--parent=//spanner.googleapis.com/projects/PROJECT_ID/instances/INSTANCE_ID
--tag-value=ORG_ID/KEY_NAME/KEY_VALUE
--location=LOCATION
  • PROJECT_ID:项目的 ID。
  • INSTANCE_ID:实例的 ID。
  • ORG_ID:组织的 ID。
  • KEY_NAME:代码的显示(简称)名称 键。例如 env
  • VALUE_NAME:代码的显示(简称)名称 值。例如 prod
  • LOCATION:您的实例的位置。例如 us-east1

删除标记

删除标记绑定后,您可以删除标记。删除代码 键和标记值,请参阅删除标记

后续步骤