对比 Docker Secrets 与 Kubernetes Secrets 的加密强度

解读

面试官问“加密强度”并不是让你背算法名称,而是想确认三件事:

  1. 你是否清楚两种 Secret 在数据静止(at-rest)传输中(in-transit)、**使用时(in-use)**三阶段分别被谁、用什么机制加密;
  2. 你是否知道国内等保 2.0/3.0、密评、关基对密钥管理的硬性要求;
  3. 你能否给出可落地的加固方案,而不是只背官方文档。
    回答思路:先分层对比加密链路,再给出国内合规视角下的风险点与改进动作,最后落到“选 Swarm 还是 K8s”的决策建议。

知识点

  1. Docker Swarm Secrets

    • 仅存在于 Swarm Mode,Raft 日志作为唯一持久化载体,默认 AES-256-GCM 加密;
    • 密钥材料由** swarm unlock key** 派生,存储在 manager 节点本地 /var/lib/docker/swarm/certificates/swarm-node.key
    • 传输层走 mutual TLS(TLS 1.2/1.3),证书轮换周期 90 天可配;
    • 使用阶段通过 tmpfs 挂载到容器,宿主机层面不落地,内存明文但不可宿主机直接读取;
    • 无 KMS 集成,无法对接国内云 HSM/专属加密机,等保三级场景需自行改造。
  2. Kubernetes Secrets

    • etcd 中默认 AES-GCM 加密,密钥存于 EncryptionConfiguration 文件,可配置 KMS v1/v2 provider
    • 1.27+ 版本支持 KMS v2,可对接 阿里云 KMS、腾讯云 KMS、华为云 KMS 以及国密 SM4 硬件模块,满足密评要求;
    • 传输层走 kube-apiserver 双 443TLS 1.3 + RSA-3072/ECDSA-P256,证书由 kube-controller-manager 自动轮转;
    • 节点侧通过 tmpfssecretbox 插件挂载,可开启 NodeAuthorization + BoundServiceAccountToken 防止横向越权;
    • 支持 ** sealed-secrets / external-secrets / vault-csi** 等二次加密方案,国密改造社区已有落地案例。
  3. 国内合规差异

    • 等保 2.0 要求“密钥应在硬件密码模块中生成、存储”,Docker Swarm 原生方案直接判不合格
    • 关基条例 2021 版明确“三级系统应使用国密算法或经国家密码管理局批准的硬件密码产品”,K8s 通过 KMS+SM4 可满足,Swarm 无官方插件;
    • 密评现场测评点:密钥是否明文落盘、是否定期轮换、是否双人双控管理,Swarm 三项皆弱。

答案

“从加密强度三阶段看:

  1. 静止阶段,Docker Swarm 仅用 AES-256-GCM 加密 Raft 日志,密钥文件本地裸放,无法接入硬件 HSM;而 Kubernetes 通过 KMS provider 可把密钥托管到云加密机或国密 SM4 模块支持密钥轮换与多租户隔离,静止加密强度明显更高。
  2. 传输阶段,两者均走 TLS 1.2/1.3+AES-256,算法套件同级;但 K8s 的 etcd 加密通道可独立再加密一次,形成双层通道,抗中间人能力更强
  3. 使用阶段,二者都把 Secret 挂成 tmpfs,内存明文看似相同;不过 K8s 额外提供 NodeAuthorization + BoundServiceAccountToken,可阻止恶意容器通过主机路径逃逸读取,减少明文泄露面
    综上,在国内等保、关基、密评场景下,Kubernetes Secrets 的加密强度与合规可控性全面优于 Docker Swarm Secrets;若项目必须留在 Swarm,建议通过外挂 vault + sidecar 卸载敏感配置,并把 unlock key 写入经国密认证的 USBKey+SO 口令拆分管理,才能勉强接近三级要求。”

拓展思考

  1. 如果客户已用 Docker Swarm 且无法迁移,如何零停机把 Secrets 迁移到国密硬件 KMS
    答:可在 manager 节点部署 softhsm+pkcs11 代理,重写 swarm unlock 流程,把 Raft 加密密钥改为 SM4-CBC 并由 HSM 加解密;同时用 OPA Gatekeeper 策略禁止新建 Swarm Secret,逐步把新业务切到 Vault + Consul Template 的 sidecar 方案,实现算法合规+平滑过渡

  2. 多云灾备场景,K8s 的 KMS 密钥如何跨云同步且满足跨境数据评估办法
    答:采用 KMS v2 envelope encryption,把 DEK 用国内云 SM4 主密钥加密后,再套一层目标云 RSA-4096 公钥做二次信封;跨境流动时只传已双重加密的 DEK,主密钥始终留在境内 HSM,满足网信办出境评估要求。