已采纳
回答正文
回复
讨论正文
该问题的正文、回答与讨论。
【背景】
3 节点自建 K8s 1.28(containerd 1.6),etcd 数据在本地 SSD(/var/lib/etcd)。运维脚本每天 etcdctl snapshot save /backup/etcd/etcd-$(date).db,然后 rsync 到一台内网备份服务器。快照文件未加密(etcd 原生不支持快照加密,文件里所有 Secret 都是 base64)。40+ 微服务,K8s Secrets 里存了约 30 组数据库密码、若干 API Token。
【现象 / 卡点】 合规审计发现三个问题,需要一次处理:
【已尝试的排查与结果】
ls -lt /backup/etcd/ + stat 看 atime:atime 不可靠(mount 选项 noatime 开了),无法作为"谁读过"的证据;etcdctl snapshot status 确认快照完整,但没有访问日志;chattr +a(append-only)保护目录,但快照文件需要定期清理旧文件,append-only 反而卡住了清理脚本;kubectl get secret -o jsonpath 导出了 30 组密码的清单,确认哪些服务引用了哪些 Secret(通过 Deployment 的 env / volumeMount 反查),但 无法确认哪些服务当前连接池里还缓存着旧密码;【期望得到的答案形态】
auseaudit 是否来得及补装?)——给出一个"尽力而为"的 checklist,而不是"上 SIEM"。connectionTimeout / maxLifetime 怎么配合?);etcdctl snapshot save → openssl enc -aes-256-cbc → 密钥存哪里?怎么保证"备份服务器宕机时能恢复"又不让密钥和密文放一起?给一个最小可落地的脚本框架。谢谢。