SOPS et Age
Introduction
SOPS signifie Secrets OPerationS. SOPS est un outil permettant de chiffrer et déchiffrer des fichiers contenant des secrets, tout en conservant leur structure et leur lisibilité.
Il prend notamment en charge les formats YAML, JSON, ENV, INI et BINARY.
Pour le chiffrement, SOPS peut utiliser différents systèmes de gestion de clés, notamment AWS KMS, Google Cloud KMS, Azure Key Vault, PGP et age.
Installer SOPS
Pour connaitre la dernière release aller sur SOPS Release
curl -LO https://github.com/getsops/sops/releases/download/v3.13.3/sops-v3.13.3.linux.amd64
# Move the binary in to your PATH
sudo mv sops-v3.13.3.linux.amd64 /usr/local/bin/sops
# Make the binary executable
sudo chmod +x /usr/local/bin/sops
# Check
sops --version
Installer AGE
sudo dnf -y install age
Configuration
Créer une clé age protégée
Créer le répertoire pour la clé
mkdir -p ~/.config/sops/age
Créer la clé
age-keygen -o ~/.config/sops/age/keys.txt
Sortie:
Public key: age10hh5emlxq463fl2tgpnsha50mxs69a6696sg35vr9x0mt8flyqysdggc9c
Protéger la clé par un mot de passe
mv ~/.config/sops/age/keys.txt ~/.config/sops/age/keys-noencrypted.txt
age -p ~/.config/sops/age/keys-noencrypted.txt > ~/.config/sops/age/keys.txt
rm -rf ~/.config/sops/age/keys-noencrypted.txt
Attention
Le fichier keys.txt ainsi que le mot de passe doivent être conservés précieusement. Si vous les perdez, vos secrets seront inutilisables.
Note
Pour permettre aux utilisateurs de chiffrer des secrets, ils devront non seulement être en possession de la clé privée, mais également connaître le mot de passe qui protège cette clé.
En revanche, la clé privée utilisée par le CI/CD ne sera pas protégée par un mot de passe, car elle devra être utilisable automatiquement par les pipelines. Une variable CI/CD, de type secret, définie dans le dépôt Git, contiendra donc cette clé privée non protégée.
Déchiffrer ~/.config/sops/age/keys.txt
Si nécessaire, vous pouvez déchiffrer ~/.config/sops/age/keys.txt à condition de connaître le mot de passe
age -d ~/.config/sops/age/user-keys.txt
Extraire la clé public
age -d ~/.config/sops/age/keys.txt |sed -n 's/^# public key: //p'
Sortie:
age1yen2x2ntanvcd82qkve92d89zy5utgtlfs6pkyzfly7vef8festqwdlpme
C'est cette valeur qu'il faut mettre dans le fichier .sops.yaml
Extraire la clé privée
age -d ~/.config/sops/age/keys.txt |grep '^AGE-SECRET-KEY-'
Sortie:
AGE-SECRET-KEY-1HJK6D299RXWCCME589H5XMTWQ6GLGYPP9562XKE7QWR46AV7A28SC205KY
C'est cette valeur qu'il faut mettre dans un secret Git
| Version | Date | Change | Auteur |
|---|---|---|---|
| 1.1 | 12.08.2026 | SOPS et Age | GMo |
| 1.0 | 13.08.2023 | Création | GMo |