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

本页面介绍了如何使用 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 实例标记

标记采用键值对结构。您可以在组织资源下创建标记键,然后将标记值附加到标记键(例如,值为 proddev 的标记键 environment)。然后,您可以创建一个标记绑定,将标记值与 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 政策绑定。 政策绑定由成员、角色和可选条件组成。

例如,如需在带有 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

删除标记

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

后续步骤