SOPS 是什么
SOPS(Secrets OPerationS)对结构化配置文件做字段级加密:YAML/JSON/ENV 等文件中,值被加密、结构与键保持可读,diff 时能看清「哪个键变了」而不必解密全文。主密钥后端可选 age、GPG 或云 KMS;文件里记录每个值的加密方式与接收方。典型流程是文件明文编辑(sops 自动加解密)、密文入库,CI 或 GitOps 控制器在部署时解密注入。它解决的是「配置随代码走」的加密问题,不是访问控制本身。
基本信息
| 后端 | age、GPG、云 KMS(AWS/GCP/Azure)均可作为主密钥 |
|---|---|
| 特性 | 只加密值、保留结构;支持多接收方与按路径规则 |
| 流程 | 本地/CI 解密后注入,或配合 GitOps 控制器解密 |
| 文件形态 | 密文文件保留加密元数据,键与结构可见,评审友好 |
典型使用场景
- 配置仓库保存密钥:值密文入库,评审时只见结构变化,不见明文。
- 多环境文件:dev/staging/prod 各配不同接收方,按环境控制谁能解密。
- KMS 集中托管:主密钥放云 KMS,权限走云 IAM,整合既有审计。
- GitOps 解密:控制器带解密插件在集群内解密后应用。
- 本地调试:开发临时解密到临时目录,用完即删。
加解密
加解密
sops -e -i secrets.enc.yaml # 原地加密
sops -d secrets.enc.yaml > /tmp/secrets.yaml # 解密到临时目录
sops updatekeys secrets.enc.yaml # 调整接收方
sops secrets.enc.yaml # 打开编辑器, 自动加解密主密钥后端对比
| 后端 | 特点 | 适用 |
|---|---|---|
| age | 密钥即文件、命令简洁 | 新项目、小型团队 |
| GPG | 生态传统、成员已有密钥 | 已用 GPG 的组织 |
| 云 KMS | 托管、权限走云 IAM | 合规与集中管控 |
SOPS 解决「配置随代码走」的加密问题;谁持有主密钥仍是访问控制核心,密钥分发与回收要单独设计。
解密产物管理:解密到临时目录、加忽略规则、仓库扫描兜底;CI 解密使用短期凭据而不是长期密钥。