首页/开发/CI/CD 与发布速查/SOPS 加密配置文件
环境与配置管理60 条

SOPS 加密配置文件

对 YAML/JSON/ENV 等结构化文件做字段级加密:值加密、结构与键可见,diff 友好,适配配置入库与 GitOps。

CI/CD 与发布速查开发更新于 2026-10-13

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 解密使用短期凭据而不是长期密钥。

易错点

  • 解密后文件误提交:解密产物放临时目录并加忽略规则,配合扫描兜底。
  • 接收方列表长期不清理:离职人员仍可解密历史与未来内容,定期轮换并复核接收方。
  • KMS 权限过宽:能解该主密钥即可解全部密文,按环境拆分 KMS key 与 IAM 策略。
  • 环境规则错配:A 环境的密文用 B 环境密钥加密,部署时才失败,规则文件按环境拆分并在 CI 测试解密。
  • 把密文提交当作完整防护:仓库权限、接收方、审计三道都要有,否则保密链条一样断。

数据来源与参考

  • SOPS 文档(getsops.io)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌