轮替密钥

密钥可以具有轮替计划,用于确定是否以及何时进行自动轮替。

要通过设置轮替周期自动轮替密钥(更新密钥)或手动轮替密钥(创建新密钥版本),用户需要 Cloud Identity and Access Management 角色 roles/cloudkms.adminroles/ownerroles/editor

密钥轮替后,其先前的密钥版本(不再是主密钥版本)既不会被停用或销毁。这可防止数据丢失。例如,如果您转替密钥,使用旧密钥版本加密的数据不会被自动解密,且会使用新的主要密钥版本进行重新加密。要在这种情况下重新加密数据,您需要解密并使用新密钥版本进行重新加密。再举一例,应用可能需要升级才能使用其他密钥版本。当没有数据受旧密钥版本保护时,您可以安排销毁它。

自动轮替:设置密钥的轮替周期

要启用密钥的自动轮替,请使用以下 gcloud 命令行工具语法设置轮替计划:

命令行

    gcloud kms keys update key-name \
      --location location \
      --keyring keyring-name \
      --rotation-period rotation-period \
      --next-rotation-time next-rotation-time
    

Windows cmd.exe

    gcloud kms keys update key ^
      --location location ^
      --keyring keyring-name ^
      --rotation-period rotation-period ^
      --next-rotation-time next-rotation-time
    

PowerShell

    gcloud kms keys update key-name `
      --location location `
      --keyring keyring-name `
      --rotation-period rotation-period `
      --next-rotation-time next-rotation-time
    

轮替计划语法

轮替计划的格式取决于所使用的客户端库。 对于 gcloud 工具,下一个轮替时间必须采用 ISO 或 RFC 3339 格式,轮替周期必须采用 integerunit 格式,其中单位可以是秒 (s)、分钟 (m)、小时 (h) 或天 (d)。例如,用于 gcloud 工具的有效轮替计划可以为:

    --rotation-period=30d
    --next-rotation-time=2016-10-12T12:34:56.1234Z
    

使用轮替计划创建密钥

要为密钥环创建新密钥,请使用以下工具:

命令行

    gcloud kms keys create key-name \
      --location location \
      --keyring keyring-name \
      --purpose ENCRYPTION \
      --rotation-period rotation-period \
      --next-rotation-time next-rotation-time
    

Windows cmd.exe

    gcloud kms keys create key-name ^
      --location location ^
      --keyring keyring-name ^
      --purpose ENCRYPTION ^
      --rotation-period rotation-period ^
      --next-rotation-time next-rotation-time
    

PowerShell

    gcloud kms keys create key-name `
      --location location `
      --keyring keyring-name `
      --purpose ENCRYPTION `
      --rotation-period rotation-period `
      --next-rotation-time next-rotation-time
    

命令使用下列参数:密钥环 keyring-name 的新密钥 key-name,其转替计划由 rotation-period 定义且下一次轮替时间为 next-rotation-time

手动轮替:生成新的密钥版本

如需创建新密钥版本并使用 gcloud 工具将其设为主要版本,对于密钥环 keyring-name 的密钥 key-name,请运行以下命令:

命令行

    gcloud kms keys versions create \
      --location location \
      --keyring keyring-name \
      --key key-name \
      --primary
    

Windows cmd.exe

    gcloud kms keys versions create --location location ^
      --keyring keyring-name ^
      --key key-name ^
      --primary
    

PowerShell

    gcloud kms keys versions create --location location `
      --keyring keyring-name `
      --key key-name --primary
    

这相当于您将创建一个非主版本的新密钥版本,然后将该版本设置为主版本。这将需要您知道新创建的 key-version 的版本号。这相当于以下 gcloud 工具命令:

命令行

    gcloud kms keys versions create \
      --location location \
      --keyring keyring-name \
      --key key-name

    gcloud kms keys update key-name \
      --primary-version key-version \
      --location location \
      --keyring keyring-name
    

Windows cmd.exe

    gcloud kms keys versions create ^
      --location location ^
      --keyring keyring-name ^
      --key key-name

    gcloud kms keys update key-name ^
      --primary-version key-version ^
      --location location ^
      --keyring keyring-name
    

PowerShell

    gcloud kms keys versions create `
      --location location `
      --keyring keyring-name `
      --key key-name

    gcloud kms keys update key-name `
      --primary-version key-version `
      --location location `
      --keyring keyring-name
    

停用自动轮替

要停用自动旋转,请清除密钥的轮替计划:

命令行

    gcloud kms keys update key-name \
      --remove-rotation-schedule \
      --location location \
      --keyring keyring-name
    

Windows cmd.exe

    gcloud kms keys update key-name ^
      --remove-rotation-schedule ^
      --location location ^
      --keyring keyring-name
    

PowerShell

    gcloud kms keys update key-name `
      --remove-rotation-schedule `
      --location location `
      --keyring keyring-name
    

将现有版本设置为主密钥版本

通过以下方式将已启用版本设置为密钥的主要版本:

命令行

    gcloud kms keys update key-name \
      --primary-version key-version \
      --location location \
      --keyring keyring-name
    

Windows cmd.exe

    gcloud kms keys update key-name ^
      --primary-version key-version ^
      --location location ^
      --keyring keyring-name
    

PowerShell

    gcloud kms keys update key-name `
      --set-=primary-version key-version `
      --location location `
      --keyring keyring-name