本文档介绍了如何轮换根密钥。如果您的根密钥遭到入侵,或者您选择定期轮替根密钥以增强安全性,可以使用 RotationJob 资源将密钥轮替为新的根密钥。
轮替根密钥会创建一个新的根密钥,该密钥会成为主密钥并封装所有非根密钥。您无法删除根密钥;轮替是替换根密钥的唯一方法。如需详细了解根密钥,请参阅根密钥类型。
如需详细了解 KMS API,请参阅 KMS API 概览;如需查看完整的 API 定义,请参阅 Key Management Service KRM API。
准备工作
在继续操作之前,请务必做好以下准备:
配置为访问 Management API 服务器的
kubectl命令。为此,请使用 gdcloud 命令行界面 (CLI) 获取 kubeconfig 文件。KMS Rotation Job Admin 角色。如需获得轮换密钥所需的权限,请让您的组织 IAM 管理员为您授予 KMS Rotation Job Admin (
kms-rotationjob-admin) 角色。
轮替根密钥
如需创建新的根密钥并轮替密钥,请完成以下步骤:
创建一个 YAML 文件,并添加
RotationJob资源和以下内容:apiVersion: "kms.gdc.goog/v1" kind: RotationJob metadata: name: ROTATION_NAME spec: rootKeyResourceName: ROOT_KEY_RESOURCE_NAME将 ROTATION_NAME 替换为轮换作业的名称,例如:
rotate-job1。将 ROOT_KEY_RESOURCE_NAME 替换为以
namespace/NAMESPACE/secrets/ROOT_KEY_NAME形式指定的根密钥名称例如
namespaces/kms-system/secrets/kms-key-ctm-root。将 YAML 文件的内容应用于 KMS:
kubectl apply -f FILENAME.yaml将 FILENAME 替换为相应 YAML 文件的名称。
运行该命令后,KMS 会创建一个新的根密钥,并使用该新根密钥轮替每个密钥。
如需验证根密钥轮替是否已完成,请运行以下命令:
kubectl get rotationjobs ROTATION_NAME将 ROTATION_NAME 替换为轮换作业的名称。
运行该命令后,如果轮替作业成功,您会看到状态为
Completed。从根密钥中移除了
Done注解。移除注解后,您可以多次轮替密钥。您的基础设施运营商 (IO) 必须执行此步骤。请让您的 IO 运行以下命令:kubectl annotate secret kms-key-ROOT_KEY_NAME -n kms-system gdch.cluster.gke.io/rotation-status-