密钥管理要控制存储、分发、使用与轮换
说明凭据从创建到吊销的生命周期,以及 Kubernetes Secret、访问控制和外部密钥系统的责任边界。
密钥管理要控制存储、分发、使用与轮换
密码、令牌、私钥和证书用于证明身份或解密数据,一旦泄露就可能绕过其他防护。密钥管理不是把值移出代码就结束,而是覆盖创建、存储、授权、分发、使用、轮换、吊销和审计的完整生命周期。
base64 编码不提供保密
Kubernetes Secret 的数据字段通常以 base64 表示,这是传输编码,任何获得对象的人都能解码。默认情况下,Secret 在 etcd 中也未必加密,必须显式配置静态加密和密钥轮换。
源代码、镜像和普通配置文件不应包含真实凭据。版本控制历史即使删除当前行,旧提交仍可能保留秘密,因此泄露后必须吊销,而不是只重写历史。
备份、诊断包和缓存也可能复制 Secret。加密策略需要覆盖主存储和备份,恢复演练还要确认旧凭据不会重新生效。
访问权限应限制到实际工作负载
RBAC 要控制谁能读取、创建和修改 Secret。能在命名空间创建 Pod 的主体通常可通过挂载间接读取该命名空间中的秘密,这种权限链需要一起审计。
多容器 Pod 中只有需要凭据的容器应获得挂载。边车和调试容器共享文件系统或进程权限时,隔离边界可能扩大。
管理员查看权限也应最小化并记录审计。日常排障不应要求输出 Secret 明文,工具界面默认应遮蔽值。
服务账号优先使用短期、自动轮换的投射令牌,避免长期静态 token。机器身份应绑定工作负载和环境,不能在多个服务间共享同一万能凭据。
分发方式影响泄露面与更新行为
环境变量易于使用,但可能出现在进程信息、崩溃报告和诊断输出中,且运行中难以刷新。文件卷可以更新内容并控制权限,但应用必须正确监听或重载。
命令行参数容易被进程列表记录,不适合秘密。把凭据写入临时文件还要考虑权限、清理和节点磁盘。
外部密钥系统可通过 CSI、代理或应用 API 提供动态凭据。它减少集群中长期副本,却引入外部可用性和启动依赖,需要缓存、失效和降级策略。
无论方式如何,日志都不得输出连接串、Authorization 头和完整异常上下文。脱敏规则应在公共日志组件实施。
轮换必须支持重叠窗口
直接替换密钥可能让仍持有旧值的实例同时失败。稳健轮换通常先让服务接受新旧两把密钥,分发新值,等待实例更新,再撤销旧值。
数据库密码、签名密钥和 TLS 证书的轮换语义不同。签名验证可能需要保留旧公钥直到令牌过期,数据库则可能创建新账号再迁移连接。
应用应能在不完全重启的情况下刷新高频轮换凭据,或保证滚动重启不会中断容量。轮换过程要监控认证失败和旧密钥使用。
吊销用于泄露响应,应比正常轮换更快。事件手册需列出影响系统、缓存期限、会话失效和取证保留。
秘密与配置应分开治理
数据库地址不是秘密,密码是秘密;证书链可能公开,私钥必须保密。把所有配置都当秘密会扩大权限和轮换范围,把秘密当普通配置则失去保护。
Secret 类型可以表达用途并提供基本字段约定,但不会验证凭据真实有效。创建成功不代表外部账号存在或权限正确。
每个秘密应有所有者、用途、消费者、有效期和轮换周期。无人负责的长期凭据是常见风险。
使用时仍需最小权限
即使秘密本身保护良好,凭据授予的权限过大仍会扩大事故。数据库账号应限制 schema 和操作,云令牌应限制资源和动作,证书应限制用途。
不同环境不能共用生产凭据。开发和测试数据也应使用独立身份,避免低安全环境成为生产入口。
秘密扫描可以发现仓库和镜像中的模式,但存在误报与漏报,不能替代权限审计和运行时监控。
验证覆盖故障和恢复
测试应包含 Secret 缺失、格式错误、过期、轮换和外部密钥系统不可用。应用需要清晰失败,不能回退到硬编码默认密码。
审计应能回答谁何时读取或修改了哪个秘密,同时避免记录值本身。异常批量读取和跨服务访问应告警。
信任根与启动路径必须单独设计
应用访问密钥系统之前仍需要一种初始身份。云工作负载身份、节点证明或短期启动令牌可以缩小静态凭据范围,但它们的签发者就是新的信任根。签发策略、时钟、网络和身份元数据出现故障时,系统应明确是拒绝启动、维持已有会话还是进入只读模式。
缓存能缓解密钥服务短暂不可用,却延长秘密在内存或磁盘中的停留时间。缓存内容应加密、限制权限并设置短于凭据有效期的刷新界限,恢复连接后还要确认旧值是否已吊销。可用性选择必须与泄露风险一起评审,不能用永久本地副本换取表面稳定。
密钥管理的目标不是隐藏一串字符,而是把凭据的可见范围和有效时间压缩到业务需要。存储加密、最小权限、短期身份和可演练轮换共同成立,Secret 才形成可靠安全边界。
资料依据
- Kubernetes Project:Secrets,https://kubernetes.io/docs/concepts/configuration/secret/
- OWASP Foundation:Application Security Verification Standard,https://owasp.org/www-project-application-security-verification-standard/