为密钥添加标签

Cloud Key Management Service 提供了用于为 Cloud KMS 密钥添加标签的选项。标签采用键值对形式,可用于对相关 Cloud KMS 密钥进行分组以及存储 Cloud KMS 密钥的相关元数据。

您的账单中也可以包含标签,让您能够按标签查看费用分布情况。

您可以使用 Google Cloud CLI 和 Cloud KMS REST API 添加、更新和移除密钥标签。

您可以在其他 Google Cloud 资源中使用标签,例如 虚拟机资源存储分区。如需详细了解如何在 Google Cloud中使用标签,请参阅 创建和管理标签

什么是标签?

标签是您可以分配给 Google Cloud Cloud KMS 密钥的键值对。 它们可以帮助您按照所需的粒度大规模组织这些资源并管理费用。您可以将标签附加到各项资源,然后根据其标签对资源进行过滤。标签的相关信息会转发到结算系统,以便您按标签细分结算费用。使用内置的结算报告, 您可以按资源标签对费用进行过滤和分组。 您还可以使用标签 查询结算数据导出

标签要求

应用于资源的标签必须符合以下要求:

  • 每个资源最多可以有 64 个标签。
  • 每个标签都必须采用键值对形式。
  • 键至少包含 1 个字符,最多包含 63 个字符,且不能为空。值可以为空,且最多包含 63 个字符。
  • 键和值只能包含小写字母、数字字符、下划线和短划线。所有字符必须使用 UTF-8 编码,允许使用国际字符。 键必须以小写字母或国际字符开头。
  • 标签的键部分在单个资源内必须是唯一的。不过,您可以将同一个键用于多个资源。

这些限制适用于每个标签的键和值,以及带有标签的各个 Google Cloud 资源。您可以对一个项目的所有资源应用任意数量的标签。

标签的常见用途

以下是标签的一些常见使用场景:

  • 团队或成本中心标签:根据团队或 成本中心添加标签,以区分不同 团队所拥有的 Cloud KMS 密钥(例如 team:researchteam:analytics)。您可以在进行成本核算或预算时使用此类 标签。

  • 组件标签:例如 component:rediscomponent:frontendcomponent:ingestcomponent:dashboard

  • 环境或阶段标签:例如 environment:productionenvironment:test

  • 状态标签:例如 state:activestate:readytodeletestate:archive

  • 所有权标签:用于标识负责运营的团队,例如:team:shopping-cart

我们不建议创建大量唯一标签,例如为每个 API 调用的时间戳或个别值创建标签。这种方法的问题在于,当值经常变化或键导致目录杂乱时,很难有效地过滤和报告资源。

标签和标记

标签可用作资源可查询的注释,但不能用于设置政策的条件。通过对政策进行精细控制,标记提供了一种有条件地允许或拒绝政策的方法,具体取决于资源是否具有特定的标记。如需了解详情,请参阅 标记概览

使用带有标签的密钥

创建密钥时,您可以通过提供一个或多个键值对作为标签

控制台

  1. 在 Google Cloud 控制台中,前往 密钥管理 页面。

    前往 Key Management

  2. 点击您要为其创建密钥的密钥环的名称。

  3. 点击创建密钥

  4. 对于密钥名称,输入密钥的名称。

  5. 根据您的需求配置密钥。

  6. 点击其他设置

  7. 对于要添加的每个标签,点击添加标签,然后输入

  8. 点击创建

gcloud

如需在命令行上使用 Cloud KMS,请先 安装或升级到最新版本的 Google Cloud CLI

此示例展示了如何创建新密钥并向密钥分配标签。您还可以向现有密钥添加标签。

gcloud kms keys create KEY_NAME \
    --keyring KEY_RING \
    --location LOCATION \
    --purpose PURPOSE \
    --labels "LABEL_LIST"

替换以下内容:

  • KEY_NAME:密钥的名称。
  • KEY_RING:您要在其中创建密钥的密钥环。
  • LOCATION:密钥环的位置,例如 global
  • PURPOSE:密钥的用途,例如 encryption
  • LABEL_LIST:键值对的逗号分隔列表,其中每个键值对的格式为 LABEL_KEY=LABEL_VALUE。例如,env=prod,team=research。每个标签键只能在 Cloud Key Management Service 密钥上使用一次。如果使用不同的值多次指定标签键,则每个新值都会覆盖之前的值。

如需了解所有标志和可能值,请使用 --help 标志运行命令。

C#

要运行此代码,请先设置 C# 开发环境安装 Cloud KMS C# SDK


using Google.Cloud.Kms.V1;

public class CreateKeyLabelsSample
{
    public CryptoKey CreateKeyLabels(
      string projectId = "my-project", string locationId = "us-east1", string keyRingId = "my-key-ring",
      string id = "my-asymmetric-encrypt-key")
    {
        // Create the client.
        KeyManagementServiceClient client = KeyManagementServiceClient.Create();

        // Build the parent key ring name.
        KeyRingName keyRingName = new KeyRingName(projectId, locationId, keyRingId);

        // Build the key.
        CryptoKey key = new CryptoKey
        {
            Purpose = CryptoKey.Types.CryptoKeyPurpose.EncryptDecrypt,
            VersionTemplate = new CryptoKeyVersionTemplate
            {
                Algorithm = CryptoKeyVersion.Types.CryptoKeyVersionAlgorithm.GoogleSymmetricEncryption,
            }
        };

        key.Labels["team"] = "alpha";
        key.Labels["cost_center"] = "cc1234";

        // Call the API.
        CryptoKey result