Aller au contenu

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