You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在GCP KMS创建对称/非对称密钥时,如何指定自定义密钥版本?

GCP KMS Java创建密钥时自定义密钥版本的实现方式

核心结论

你提供的createCryptoKey代码无法直接指定自定义密钥版本号——因为创建CryptoKey时,GCP KMS会自动生成初始密钥版本,该版本的ID由系统自动分配,不支持通过创建密钥的请求参数自定义。

若要使用自定义版本ID(如v20这类非默认数字ID),需要分两步操作:

  1. 先创建基础的CryptoKey(即你示例中的逻辑)
  2. 调用createCryptoKeyVersion接口手动创建指定ID的密钥版本

Java代码实现示例

在原有创建密钥的代码基础上,添加创建自定义版本的逻辑:

public void createKeyWithCustomVersion(
      String projectId, String locationId, String keyRingId, String keyId, String customVersionId) throws IOException {
    try (KeyManagementServiceClient client = KeyManagementServiceClient.create()) {
      // 1. 创建基础CryptoKey(自动生成初始版本)
      KeyRingName keyRingName = KeyRingName.of(projectId, locationId, keyRingId);
      CryptoKey key =
          CryptoKey.newBuilder()
              .setPurpose(CryptoKeyPurpose.ASYMMETRIC_DECRYPT)
              .setVersionTemplate(
                  CryptoKeyVersionTemplate.newBuilder()
                      .setAlgorithm(CryptoKeyVersionAlgorithm.RSA_DECRYPT_OAEP_2048_SHA256))
              .setDestroyScheduledDuration(Duration.newBuilder().setSeconds(24 * 60 * 60))
              .build();
      CryptoKey createdKey = client.createCryptoKey(keyRingName, keyId, key);
      System.out.printf("Created base asymmetric key %s%n", createdKey.getName());

      // 2. 创建指定自定义ID的密钥版本
      CryptoKeyName cryptoKeyName = CryptoKeyName.of(projectId, locationId, keyRingId, keyId);
      CryptoKeyVersion version = client.createCryptoKeyVersion(cryptoKeyName, customVersionId);
      System.out.printf("Created custom version %s for key %s%n", version.getName(), cryptoKeyName);
    }
  }

关于GCP终端(gcloud)的参数

使用gcloud命令创建自定义版本时,可通过--version-id参数指定自定义ID:

gcloud kms keys versions create --version-id=v20 \
  --key=YOUR_KEY_NAME \
  --keyring=YOUR_KEYRING_NAME \
  --location=YOUR_LOCATION

内容的提问来源于stack exchange,提问作者Vishal Poddar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 08:28:22