GKE on VMware 1.10 版本支持在无需外部 KMS(密钥管理服务)或任何其他依赖项的情况下对 Secret 进行加密。
启用始终开启的 Secret 加密
“始终开启的 Secret 加密”功能的工作原理是在 Secret 存储到集群的 etcd 数据库之前自动生成用于加密 Secret 的加密密钥。 加密算法为 A256GCM(使用 256 位密钥的 AES GCM)。
密钥版本是指示当前正在使用的密钥的版本号。
您可以在创建集群后启用 Secret 加密。
对于管理员集群:
修改管理员集群配置文件以添加
secretsEncryption
部分。运行
gkectl update
命令。gkectl update admin --config ADMIN_CLUSTER_CONFIG_FILE --kubeconfig ADMIN_CLUSTER_KUBECONFIG
对于用户集群:
修改用户集群配置文件以添加
secretsEncryption
部分。运行
gkectl update
命令。gkectl update cluster --config USER_CONFIG_FILE --kubeconfig ADMIN_CLUSTER_KUBECONFIG
替换以下内容:
- 将
ADMIN_KUBECONFIG
替换为管理员集群 kubeconfig 文件的路径。 - 将
ADMIN_CLUSTER_CONFIG
替换为管理员集群配置文件的路径。 - 将
USER_CLUSTER_CONFIG
替换为用户集群配置文件的路径。
本部分中提供的 gkectl update
命令还可用于相应集群的任何其他更新。
密钥存储
管理员集群的加密密钥存储在管理员集群数据磁盘上。该磁盘装载在管理员主机器的 /opt/data
中,加密密钥位于 /opt/data/gke-k8s-kms-plugin/generatedkeys/
。必须备份这些密钥,以便保留对该密钥使用的加密 Secret 的访问权限。
密钥轮替
如需轮替集群的现有加密密钥,请递增相应的管理员集群配置文件或用户集群配置文件中的 keyVersion
,然后运行适当的 gkectl update
命令。这将创建与新版本号匹配的新密钥,重新加密每个 Secret,并安全地清除旧密钥。所有后续的新 Secret 均使用新的加密密钥进行加密。
停用始终开启的 Secret 加密
如需在现有集群上停用 Secret 加密,请添加 disabled: true
字段。接下来,运行相应的 gkectl update
命令。此更新会解密每个现有 Secret 并以纯文本形式存储每个 Secret。所有后续的新 Secret 均以纯文本形式存储。
secretsEncryption: mode: GeneratedKey generatedKey: keyVersion: KEY_VERSION disabled: true