使用始终开启的 Secret 加密

10

Anthos clusters on VMware (GKE On-Prem) 1.10 版支持无需使用外部 KMS(密钥管理服务)或任何其他依赖项加密 Secret。

启用始终开启的 Secret 加密

“始终开启的 Secret 加密”功能的工作原理是在 Secret 存储到集群的 etcd 数据库之前自动生成用于加密 Secret 的加密密钥。

密钥版本是指示当前正在使用的密钥的版本号。

您可以在创建集群后启用 Secret 加密。

  • 对于管理员集群:

    1. 修改管理员集群配置文件以添加 secretsEncryption 部分。

    2. 运行 gkectl update 命令。

      gkectl update admin --config ADMIN_CLUSTER_CONFIG_FILE --kubeconfig ADMIN_CLUSTER_KUBECONFIG
  • 对于用户集群:

    1. 修改用户集群配置文件以添加 secretsEncryption 部分。

    2. 运行 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 加密,请移除 keyVersion 字段并添加 disabled: true 字段。然后,运行相应的 gkectl update 命令。此更新会解密每个现有 Secret 并以纯文本形式存储每个 Secret。所有后续的新 Secret 均以纯文本形式存储。

secretsEncryption:
  mode: GeneratedKey
  generatedKey:
    disabled: true