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

本页介绍了如何使用 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. 如果要附加更多代码,请点击 Add Tag(添加代码),然后为每个代码选择键和值。

  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 政策。政策绑定由成员、角色和可选条件组成。

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

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

删除标记

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

后续步骤