🎯 Definicja
SOPS (Secrets OPerationS) to narzędzie Mozilli do szyfrowania plików konfiguracyjnych (YAML, JSON, ENV). Pozwala bezpiecznie trzymać hasła i klucze API w repozytorium Git. Szyfruje tylko wartości (values), a klucze (keys) zostawia jawne, co ułatwia przeglądanie struktury pliku (Diff) bez ujawniania sekretów.
🔑 Kluczowe punkty
- Bezpieczny Git: Możesz trzymać plik
secrets.yamlw publicznym repozytorium, bo wartości są zaszyfrowane. - Współpraca z KMS: Obsługuje AWS KMS, GCP KMS, Azure Key Vault oraz PGP i age.
- Selektywne szyfrowanie: Szyfruje wartości, struktura pliku pozostaje czytelna.
📚 Szczegółowe wyjaśnienie
Jak to działa?
- Tworzysz plik z hasłami:
db_password: super_secret. - Uruchamiasz
sops --encrypt secrets.yaml > secrets.enc.yaml. - Plik wynikowy ma postać:
db_password: ENC[AES256_GCM...]. - Wrzucasz
secrets.enc.yamldo Gita. - Na serwerze/u kolegi, mając odpowiedni klucz prywatny, uruchamiasz
sops --decrypt. SOPS automatycznie zarządza kluczami “master” i kluczami danych.
💡 Przykład zastosowania
Konfiguracja Kubernetesa (GitOps).
Masz definicję Deploymentu bazy danych. Hasło jest w Secret.
Zamiast ręcznie wgrywać hasło na klaster (kubectl create secret), trzymasz je w repozytorium zaszyfrowane SOPS-em.
Operator FluxCD lub ArgoCD (z wtyczką SOPS) automatycznie odszyfrowuje je przy wdrażaniu na klaster.
📌 Źródła
- Mozilla SOPS GitHub Repository.
- “Managing Secrets in GitOps”.
👽 Brudnopis
- Nowoczesnym, prostszym standardem szyfrowania dla SOPS jest age (zamiast starego PGP).
- Pamiętaj, aby nigdy nie commitować pliku
.sops.yamlz kluczami prywatnymi!