本指南介绍了如何在 Secret Manager Secret 上创建和管理标记。您可以使用标记对相关的 Secret Manager Secret 进行分组,并根据这些资源的标记存储有关它们的元数据。
关于标记
标记是一种可附加到Google Cloud中的资源的键值对。您可以使用标记,根据资源是否有特定标记,有条件地允许或拒绝政策。例如,您可以根据资源是否具有特定标记,有条件地授予 Identity and Access Management (IAM) 角色。如需了解详情,请参阅标记概览。
通过创建可将值关联到 Google Cloud 资源的标记绑定资源,系统会将标记附加到资源。
所需权限
如需获得管理标记所需的权限,请让您的管理员为您授予以下 IAM 角色:
-
针对标记附加到的资源的 Tag Viewer (
roles/resourcemanager.tagViewer) -
在组织级层查看和管理标记:针对组织的 Organization Viewer (
roles/resourcemanager.organizationViewer) -
创建、更新和删除标记定义:针对您要为其创建、更新或删除标记的资源的 Tag Administrator (
roles/resourcemanager.tagAdmin) -
在资源中附加和移除标记:针对标记值以及您要为其附加或移除标记值的资源的 Tag User (
roles/resourcemanager.tagUser)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
如需将标记附加到 Secret Manager Secret,您需要拥有 Secret Manager Admin 角色 (roles/secretmanager.admin)。
创建标记键和标记值
在附加标记之前,您需要创建标记并配置其值。如需了解详情,请参阅创建标记和添加标记值。
在创建资源期间添加标记
您可以在创建 Secret 时添加标记。这样做可为资源提供必要的元数据,并有助于更好地进行组织管理、费用跟踪和自动应用政策。
控制台
- 前往 Google Cloud 控制台中的 Secret Manager 页面。
- 选择用于创建新密文的选项。
- 点击管理标签。
- 如果您的组织未显示在管理标记面板中,请点击选择标记范围,然后选择您的组织或项目。
- 点击添加标记。
- 从列表中选择标记键和标记值。您可以使用关键字过滤列表。
- 点击保存。系统会使用标记信息更新标记部分。
- 创建您的密文。使用提供的标记创建新的密文。
gcloud
在使用下面的命令数据之前,请先进行以下替换:
- SECRET_ID:相应 Secret 的唯一标识符。
- TAG_KEY:所附加的标记键的永久 ID 或命名空间名称,例如
tagKeys/567890123456。 - TAG_VALUE:所附加的标记值的永久 ID 或命名空间名称,例如
tagValues/567890123456。
通过使用英文逗号分隔标记来指定多个标记,例如 TAGKEY1=TAGVALUE1,TAGKEY2=TAGVALUE2。
执行以下命令:
Linux、macOS 或 Cloud Shell
gcloud secrets create SECRET_ID --tags=TAG_KEY=TAG_VALUE
Windows (PowerShell)
gcloud secrets create SECRET_ID --tags=TAG_KEY=TAG_VALUE
Windows (cmd.exe)
gcloud secrets create SECRET_ID --tags=TAG_KEY=TAG_VALUE
REST
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:项目的 ID
- SECRET_ID:相应 Secret 的唯一标识符
- TAGKEY_NAME:所附加的标记键的永久 ID 或命名空间名称,例如
tagKeys/567890123456。 - TAGVALUE_NAME:所附加的标记值的永久 ID 或命名空间名称,例如
tagValues/567890123456。
HTTP 方法和网址:
POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID
请求 JSON 正文:
{
"replication": {
"automatic": {}
},
"tags": {
"TAGKEY_NAME": "TAGVALUE_NAME"
}
}
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json 的文件中,然后执行以下命令:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID"
PowerShell
将请求正文保存在名为 request.json 的文件中,然后执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID" | Select-Object -Expand Content
您应该会收到一个成功的状态代码 (2xx) 和一个空响应。
C#
要运行此代码,请先设置 C# 开发环境并安装 Secret Manager C# SDK。在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
Go
如需运行此代码,请先设置 Go 开发环境并安装 Secret Manager Go SDK。在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
Java
如需运行此代码,请先设置 Java 开发环境并安装 Secret Manager Java SDK。在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
Node.js
如需运行此代码,请先设置 Node.js 开发环境并安装 Secret Manager Node.js SDK。 在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
PHP
如需运行此代码,请先了解如何在 Google Cloud 上使用 PHP 和安装 Secret Manager PHP SDK。在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
Python
要运行此代码,请先设置 Python 开发环境并安装 Secret Manager Python SDK。 在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
Ruby
要运行此代码,请先设置 Ruby 开发环境并安装 Secret Manager Ruby SDK。 在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
为现有资源添加标记
如需为现有 Secret 添加标记,请按照以下步骤操作:
控制台
- 前往 Google Cloud 控制台中的 Secret Manager 页面。
- 选择要附加标记的密文。
- 点击 标记。
- 如果您的组织未显示在标记面板中,请点击选择范围。选择您的组织,然后点击打开。
- 点击添加标记。
- 从列表中选择标记键和标记值。您可以使用关键字过滤列表。
- 点击保存。
- 在确认对话框中,点击确认以附加标记。
系统会显示一条通知以确认您的标记已更新。
gcloud
如需将标记附加到 Secret,您必须使用 gcloud resource-manager tags bindings create 命令创建标记绑定资源:
在使用下面的命令数据之前,请先进行以下替换:
TAGVALUE_NAME是所附加的标记值的永久 ID 或命名空间名称,例如tagValues/567890123456。RESOURCE_ID是资源的完整 ID,包括用于标识资源类型的 API 域名 (//secretmanager.googleapis.com/)。例如,如需将标记关联到/projects/PROJECT_ID/secrets/SECRET_ID,则完整 ID 为//secretmanager.googleapis.com/projects/PROJECT_ID/secrets/SECRET_ID。
执行以下命令:
Linux、macOS 或 Cloud Shell
gcloud resource-manager tags bindings create \ --tag-value=TAGVALUE_NAME \ --parent=RESOURCE_ID
Windows (PowerShell)
gcloud resource-manager tags bindings create ` --tag-value=TAGVALUE_NAME ` --parent=RESOURCE_ID
Windows (cmd.exe)
gcloud resource-manager tags bindings create ^ --tag-value=TAGVALUE_NAME ^ --parent=RESOURCE_ID
Node.js
如需运行此代码,请先设置 Node.js 开发环境并安装 Secret Manager Node.js SDK。 在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
PHP
如需运行此代码,请先了解如何在 Google Cloud 上使用 PHP 和安装 Secret Manager PHP SDK。在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
Python
要运行此代码,请先设置 Python 开发环境并安装 Secret Manager Python SDK。 在 Compute Engine 或 GKE 上,您必须使用 cloud-platform 范围进行身份验证。
列出附加到资源的标记
您可以查看直接附加到 Secret 或由 Secret 继承的标记绑定列表。
控制台
- 前往 Google Cloud 控制台中的 Secret Manager 页面。
- 标记会显示在 Secret 的标记列中。
gcloud
如需获取附加到资源的标记绑定列表,请使用 gcloud resource-manager tags bindings list 命令:
在使用下面的命令数据之前,请先进行以下替换:
RESOURCE_ID是资源的完整 ID,包括用于标识资源类型的 API 域名 (//secretmanager.googleapis.com/)。例如,如需将标记关联到/projects/PROJECT_ID/secrets/SECRET_ID,则完整 ID 为//secretmanager.googleapis.com/projects/PROJECT_ID/secrets/SECRET_ID。
执行以下命令:
Linux、macOS 或 Cloud Shell
gcloud resource-manager tags bindings list \ --parent=RESOURCE_ID
Windows (PowerShell)
gcloud resource-manager tags bindings list ` --parent=RESOURCE_ID
Windows (cmd.exe)
gcloud resource-manager tags bindings list ^ --parent=RESOURCE_ID
您应该会收到类似如下所示的响应:
name: tagBindings/%2F%2Fcloudresourcemanager.googleapis.com%2Fprojects%2F7890123456/tagValues/567890123456
tagValue: tagValues/567890123456
resource: //secretmanager.googleapis.com/projects/project-abc/secrets/secret-xyz
将标记与资源分离
您可以分离直接附加到密文的标记。可以通过附加具有相同键和不同值的标记来替换继承的标记,但不能分离这些标记。
控制台
- 前往 Google Cloud 控制台中的 Secret Manager 页面。
- 选择要移除标记的 Secret。
- 点击 标记。
- 在标记面板中,点击要分离的标记旁边的 删除项。
- 点击保存。
- 在确认对话框中,点击确认以分离标记。
系统会显示一条通知以确认您的标记已更新。
gcloud
如需删除标记绑定,请使用 gcloud resource-manager tags bindings delete 命令:
在使用下面的命令数据之前,请先进行以下替换:
TAGVALUE_NAME是所附加的标记值的永久 ID 或命名空间名称,例如tagValues/567890123456。RESOURCE_ID是资源的完整 ID,包括用于标识资源类型的 API 域名 (//secretmanager.googleapis.com/)。例如,如需将标记关联到/projects/PROJECT_ID/secrets/SECRET_ID,则完整 ID 为//secretmanager.googleapis.com/projects/PROJECT_ID/secrets/SECRET_ID。
执行以下命令:
Linux、macOS 或 Cloud Shell
gcloud resource-manager tags bindings delete \ --tag-value=TAGVALUE_NAME \ --parent=RESOURCE_ID
Windows (PowerShell)
gcloud resource-manager tags bindings delete ` --tag-value=TAGVALUE_NAME ` --parent=RESOURCE_ID
Windows (cmd.exe)
gcloud resource-manager tags bindings delete ^ --tag-value=TAGVALUE_NAME ^ --parent=RESOURCE_ID
删除标记键和标记值
移除标记的键或值定义时,请确保标记已与 Secret 分离。在删除标记定义本身之前,您必须先删除现有的标记连接(称为标记绑定)。如需了解详情,请参阅删除标记。
Identity and Access Management 条件和标记
您可以使用标记和 IAM 条件来有条件地向层次结构中的用户授予角色绑定。如果应用了具有条件角色绑定的 IAM 政策,则更改或删除附加到资源的标记可能会移除用户对该资源的访问权限。如需了解详情,请参阅 Identity and Access Management 条件和标记。