SOPS 加密配置文件
SOPS 用 age、PGP 或云 KMS 加密 YAML、JSON、ENV 和二进制文件,只加密值、保留结构,便于 Git diff 和代码审查。它常与 Flux、Argo CD、Helm Secrets 配合,在 GitOps 中安全存放密钥。
核心概念:.sops.yaml 规则、加密密钥、MAC、sops edit 和 sops exec-env。
安装:
brew install sops age
# 或
go install go.mozilla.org/sops/v3/cmd/sops@latest
生成 age 密钥:
age-keygen -o age.key
cat age.key
创建 .sops.yaml:
cat > .sops.yaml <<'EOF'
creation_rules:
- path_regex: secrets/.*\.yaml$
age: age1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
EOF
加密文件:
sops --encrypt secrets/app.yaml > secrets/app.enc.yaml
编辑加密文件:
sops secrets/app.enc.yaml
解密:
sops --decrypt secrets/app.enc.yaml
只查看某个字段:
sops --decrypt --extract '["db"]["password"]' secrets/app.enc.yaml
使用环境变量执行命令:
sops exec-env secrets/app.enc.yaml 'env | grep DB_'
轮换密钥:
sops updatekeys secrets/app.enc.yaml
.sops.yaml 的路径规则不匹配,sops edit 会用错密钥。age.key。sops — 加密、解密、编辑和轮换age-keygen — 生成 age 密钥age — 解密文件git diff — 查看加密文件变更flux / argocd — GitOps 解密集成