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

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

Google Cloud 代码是 键值对,您可以附加到 Google Cloud 资源, (例如项目或 Spanner 实例)。你可以使用标签将群组 和整理实例,以及有条件地 基于 Identity and Access Management (IAM) 访问权限政策 某个实例是否具有特定标记。您可以使用 Google Cloud CLI 或 Google Cloud 控制台创建和管理 Spanner 实例标记。创建标记后,您可以创建标记绑定, 将标记附加到 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

例如,如需使用标记键值对 env:prod 在 Spanner 实例 my-instance 上创建标记绑定,请运行以下命令:

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

删除标记

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

后续步骤