목차

, , , ,

SOPS (Secrets OPerationS)

sops는 YAML, JSON, dotenv, binary 파일을 부분 단위로 암호화하면서 Git 친화적인 형태를 유지하는 secret 관리 도구다.

Summary

Usage

sops encrypt --age age1example... secret.yaml
sops decrypt secret.enc.yaml
sops edit secret.enc.yaml
sops updatekeys -y secret.enc.yaml

Options

Examples

# age 공개키 recipient로 새 YAML 암호화
sops encrypt --age age1exampleexampleexampleexampleexampleexample secret.yaml > secret.enc.yaml
 
# 복호화해서 stdout으로 확인
sops decrypt secret.enc.yaml
 
# 원본 파일을 직접 편집
sops edit secret.enc.yaml
 
# 특정 값만 추출
sops decrypt --extract '["database"]["password"]' secret.enc.yaml
 
# .env 파일을 제자리 암호화
sops --encrypt --in-place secrets.env
 
# 특정 key만 암호화하고 나머지는 평문 유지
sops encrypt --encrypted-regex '^(data|stringData)$' secret.yaml > secret.enc.yaml
 
# MAC 오류를 무시하고 강제로 확인
sops decrypt --ignore-mac secret.enc.yaml
 
# .sops.yaml 정책 변경 후 key metadata 재정렬
sops updatekeys -y secret.enc.yaml

Config

creation_rules:
  - path_regex: \.prod\.yaml$
    age: age1exampleexampleexampleexampleexampleexample
  - path_regex: \.env$
    age: >-
      age1exampleexampleexampleexampleexampleexample,
      age1secondrecipientexampleexampleexampleexample
creation_rules:
  - path_regex: secrets/.*\.yaml$
    age: age1exampleexampleexampleexampleexampleexample
    encrypted_regex: '^(data|stringData)$'

Environment

export SOPS_AGE_RECIPIENTS="age1exampleexampleexampleexampleexampleexample"
export SOPS_CONFIG="$PWD/.sops.yaml"
export SOPS_DECRYPTION_ORDER="age,pgp"
export SOPS_EDITOR="nvim"
문서나 예제에는 실제 secret, 실제 recipient private key, production KMS 식별자를 넣지 않는다.
–ignore-mac는 위변조 감지 단계를 건너뛰므로, 파일이 손상되었는지 조사하거나 긴급 복구할 때만 제한적으로 쓴다.

Troubleshooting

Compatibility

Help

sops --help

sops encrypt --help

sops decrypt --help

See Also

History