SOPS(Secrets OPerationS)是一款开源的配置文件加密工具,能对 YAML、JSON、ENV 等文件中的值进行加密,仅保留键名可读。它可对接 KMS、PGP、age 等多种密钥后端,方便把加密后的机密安全地纳入版本控制。

| 类型 | 机密加密工具 |
| 开发语言 | Go |
| 加密粒度 | 按值加密 |
| 密钥后端 | KMS/PGP/age |
| 许可协议 | MPL 开源 |
SOPS(Secrets OPerationS)是一个由 Go 编写的开源工具,用于加密与解密结构化配置文件中的敏感内容。它的独特之处在于只加密文件里的值而保留键名可读,使加密后的文件仍保持原有结构,便于审阅差异与纳入 Git 管理。
项目中常有数据库口令、API 密钥等机密需要随代码一起管理,但明文提交到仓库极不安全。SOPS 让团队可以把加密后的配置文件直接放进版本控制:谁改了哪个键一目了然,而具体的值始终以密文形式存储,只有持有相应密钥的人才能解密。
SOPS 为每个文件生成一个随机的数据密钥,用它对文件中各个值做加密。随后,这个数据密钥本身再被一个或多个主密钥后端加密并保存在文件的元数据中,主密钥后端可以是云厂商的 KMS、PGP 或 age 密钥。解密时,持有任一有效主密钥的人先解出数据密钥,再用它还原各个值。这种双层结构支持多密钥授权,并便于轮换与撤销访问。
它广泛用于基础设施即代码与 Kubernetes 场景,把加密的机密与清单一同放入仓库;在多环境部署中,可按环境使用不同密钥授权;结合 CI 流水线,构建时以对应密钥自动解密后注入配置。
问:SOPS 把整份文件都加密吗?答:默认只加密各值而不加密键名,这样加密文件仍保留可读结构,方便代码审查中查看哪些键被改动,而不泄露具体值。
问:如何避免密钥丢失导致无法解密?答:SOPS 支持给同一文件授权多把主密钥,常见做法是同时授权团队的多把密钥或多个云 KMS,任一有效即可解密,从而避免单点失效。

| 类型 | 机密加密工具 |
| 开发语言 | Go |
| 加密粒度 | 按值加密 |
| 密钥后端 | KMS/PGP/age |
| 许可协议 | MPL 开源 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧