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.json

  • Re-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