创建和删除密钥

密钥管理系统 (KMS) 支持不同类型的密钥,用于加密、解密、签名和验证等加密操作。如需详细了解可用的密钥类型和算法,请参阅支持的密钥

本页面向应用操作员群组(例如 DevOps 团队),介绍如何在 Google Distributed Cloud (GDC) 气隙环境中执行密钥管理操作。如需了解详情,请参阅 GDC 气隙环境受众群体文档

准备工作

如需创建和管理密钥,请申请必要的权限并准备好环境。

申请 IAM 角色

请与组织 IAM 管理员联系,以便其在您的项目命名空间中向您授予以下角色:

  • KMS Creator (kms-creator):查看和创建项目中的 AEADKeySigningKey 资源。
  • KMS Admin (kms-admin):查看、创建和删除项目中的密钥。

准备环境

  1. 安装并初始化 gdcloud CLI(如果您尚未执行此操作)。

  2. 使用 gdcloud CLI 向 GDC 进行身份验证。此流程需要您组织控制台的证书授权机构 (CA) 证书:

    1. 下载 CA 证书:

      echo -n | openssl s_client -showcerts -connect CONSOLE_URL:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > CA_CERT_PATH
      

      替换以下内容:

      • CONSOLE_URL:您组织的控制台网址(例如 console.org-1.zone1.google.gdch.test
      • CA_CERT_PATH:您要保存 CA 证书文件的完整路径(例如 /tmp/my-org-ca.crt
    2. 使用下载的 CA 证书登录:

      gdcloud auth login --login-config-cert=CA_CERT_PATH
      
  3. 使用 gdcloud CLI 获取 Management API 服务器的 kubeconfig 文件

创建密钥

您可以创建用于不同加密目的的密钥。

创建 AEAD 密钥

如需执行关联数据加密的身份验证 (AEAD),请在项目命名空间中创建 AEADKey 资源:

kubectl --kubeconfig KUBECONFIG_PATH \
apply -f - << EOF
apiVersion: "kms.gdc.goog/v1"
kind: AEADKey
metadata:
  name: KEY_NAME
  namespace: PROJECT
spec:
  algorithm: AES_256_GCM
EOF

替换以下内容:

  • KUBECONFIG_PATH:Management API 服务器的 kubeconfig 文件的路径
  • KEY_NAME:您要创建的 AEAD 密钥的名称,例如:key-1
  • PROJECT:项目的名称,例如:kms-test1

创建签名密钥

如需对数据进行签名和验证,请在项目命名空间中创建 SigningKey 资源:

kubectl --kubeconfig KUBECONFIG_PATH \
apply -f - << EOF
apiVersion: "kms.gdc.goog/v1"
kind: SigningKey
metadata:
  name: KEY_NAME
  namespace: PROJECT
spec:
  algorithm: EC_SIGN_P384_SHA384
EOF

替换以下内容:

  • KUBECONFIG_PATH:Management API 服务器的 kubeconfig 文件的路径
  • KEY_NAME:您要创建的签名密钥的名称,例如:key-1
  • PROJECT:项目的名称,例如:kms-test1

验证密钥创建

创建密钥后,验证操作是否成功,以及密钥资源是否已准备就绪。

验证 AEAD 密钥创建

检查 AEAD 密钥的状态:

kubectl --kubeconfig KUBECONFIG_PATH \
  get aeadkey KEY_NAME \
  --namespace=PROJECT -o yaml

替换以下内容:

  • KUBECONFIG_PATH:Management API 服务器的 kubeconfig 文件的路径
  • KEY_NAME:要验证的 AEAD 密钥的名称,例如:key-1
  • PROJECT:项目的名称,例如:kms-test1

如果密钥创建成功,请检查输出中是否存在状态为 TrueReady 条件。

验证签名密钥创建

检查签名密钥的状态:

kubectl --kubeconfig KUBECONFIG_PATH \
  get signingkey KEY_NAME \
  --namespace=PROJECT -o yaml

替换以下内容:

  • KUBECONFIG_PATH:Management API 服务器的 kubeconfig 文件的路径
  • KEY_NAME:要验证的签名密钥的名称,例如:key-1
  • PROJECT:项目的名称,例如:kms-test1

如果密钥创建成功,请检查输出中是否存在状态为 TrueReady 条件。

删除密钥

如需删除密钥资源,请指定密钥类型和名称。

  1. 删除项目命名空间中的键:

    kubectl --kubeconfig KUBECONFIG_PATH \
      delete KEY_PRIMITIVE KEY_NAME \
      --namespace=PROJECT
    

    替换以下内容:

    • KUBECONFIG_PATH:Management API 服务器的 kubeconfig 文件的路径
    • KEY_PRIMITIVE:您要删除的密钥资源类型,例如 AEAD 密钥的 aeadkey 或签名密钥的 signingkey
    • KEY_NAME:您要删除的密钥的名称,例如:key-1
    • PROJECT:项目的名称,例如:kms-test1
  2. 尝试检索密钥,验证密钥是否已删除:

    kubectl --kubeconfig KUBECONFIG_PATH \
      get KEY_PRIMITIVE  KEY_NAME \
      --namespace=PROJECT
    

    如果密钥已成功删除,该命令不会返回密钥对象。