Exploitation¶
Mises à jour¶
Une fois Vault initialisé, les exécutions ultérieures du playbook sont idempotentes :
ansible-playbook -i inventory.yml playbook/reemo-infra.yml
Le playbook va :
Détecter que Vault est déjà initialisé
Lire
init.jsonRe-unseal automatiquement les containers si nécessaire
Mettre à jour le reste de l’infra
Si init.json est chiffré, ajoutez --ask-vault-pass.
Déverrouillage automatique (unseal)¶
Le playbook fait l’unseal automatiquement à chaque exécution : il détecte les replicas sealed, lit init.json (déchiffrement auto si chiffré), applique les 3 premières clés, et Vault redevient opérationnel. Aucune action manuelle.
À utiliser après reboot serveur, redémarrage Docker, mise à jour du container, ou incident ayant scellé les replicas.
Note
Pour le déverrouillage manuel via l’interface web (runner Ansible indisponible, intervention isolée), voir la configuration des fournisseurs de secrets.
Le token CredentialAPI¶
CredentialAPI utilise un token Vault pour accéder aux secrets. Ce token :
Est créé automatiquement au premier run du playbook
Est stocké dans un Docker secret Swarm (
<INSTANCE_NAME>_credentialapi_vault_token)A une durée de vie de 30 jours (720h) avec renouvellement automatique
Est limité par la policy
credentialapi-admin
Le renouvellement est assuré par supercronic intégré au container CredentialAPI : toutes les 6h, le token est renouvelé via auth/token/renew-self, ce qui remet son TTL à 720h. Aucune action manuelle n’est nécessaire.
Rotation manuelle (cas exceptionnel)¶
Si vous devez forcer la régénération du token (compromission soupçonnée) :
# 1. Identifier le token actuel
TOKEN=$(docker exec $(docker ps --filter name=reemo_credentialapi. -q | head -1) cat /run/secrets/reemo_credentialapi_vault_token)
ROOT=$(jq -r .root_token playbooks/secrets/reemo/vault/init.json)
CID=$(docker ps --filter name=reemo_vault1. -q)
# 2. Récupérer l'accessor du token
ACCESSOR=$(docker exec -e BAO_TOKEN=$TOKEN $CID bao token lookup -format=json | jq -r .data.accessor)
# 3. Stopper CredentialAPI pour libérer le Docker secret
docker service rm reemo_credentialapi
# 4. Supprimer le Docker secret
docker secret rm reemo_credentialapi_vault_token
# 5. Révoquer l'ancien token côté Vault
docker exec -e BAO_TOKEN=$ROOT $CID bao token revoke -accessor $ACCESSOR
# 6. Relancer le playbook : un nouveau token sera créé
ansible-playbook -i inv playbook/reemo-infra.yml