Vault

Vault est le coffre-fort de secrets de la plateforme Reemo : il stocke de manière chiffrée et centralisée les identifiants applicatifs (mots de passe, clés, certificats) et ne les délivre qu’aux services autorisés.

Reemo s’appuie sur OpenBao, le fork open-source de HashiCorp Vault ; les variables et commandes du rôle conservent le terme « vault ». Ce composant est optionnel : il n’est déployé qu’avec la fonctionnalité Credential (CREDENTIAL_ENABLED) et le commutateur VAULT_ENABLED.

À quoi sert Vault

Vault est le magasin de secrets de la CredentialAPI, le service qui gère les identifiants des ressources Reemo. Les secrets y sont rangés dans un moteur KV v2, sous le chemin secret/.

La chaîne d’accès est la suivante :

  • l’API interroge la CredentialAPI ;

  • la CredentialAPI lit et écrit les secrets dans Vault, à l’aide d’un jeton dédié (politique credentialapi-admin) ;

  • l’isolation est assurée par des politiques ACL créées dynamiquement (préfixe reemo-container-*), une portée distincte par conteneur.

Sceller et desceller (seal / unseal)

Pour des raisons de sécurité, Vault ne conserve jamais en clair sur disque la clé qui chiffre ses données. Au démarrage, il est scellé (sealed) et ne peut pas lire ses propres secrets : il faut le desceller (unseal). Ce processus se reproduit à chaque redémarrage (reboot serveur, redémarrage Docker, recréation du conteneur).

Deux stratégies de descellement sont possibles :

  • Manuel (Shamir) (par défaut) : la clé maître est répartie en plusieurs parts (5 par défaut) ; un seuil de parts (3 par défaut) suffit à desceller. On peut perdre jusqu’à 2 parts sans perdre l’accès.

  • Auto-unseal : Vault se descelle automatiquement via un service externe — moteur Transit d’un autre Vault, ou AWS KMS.

À l’initialisation (une seule fois), les clés de descellement et le jeton racine sont générés puis sauvegardés côté contrôleur Ansible (fichier init.json), à conserver précieusement.

Haute disponibilité

Vault utilise le stockage intégré Raft :

  • Mode raft (par défaut) : cluster de plusieurs nœuds, qui requiert un nombre impair ≥ 3. Les réplicas rejoignent le nœud leader puis sont descellés ; en 2.6.0, le descellement d’un réplica fraîchement rejoint est réessayé automatiquement le temps qu’il soit prêt.

  • Repli mono-nœud : avec un seul nœud, le mode bascule automatiquement sur un stockage fichier local.

Chaque réplica tourne comme un service Swarm dédié, épinglé à un nœud. Un front HAProxy fournit une URL stable et répartit la charge vers les réplicas — Vault n’est pas exposé via Traefik. Les communications sont protégées par TLS/mTLS.

Voir aussi

Vault et gestion des secrets — Installation, descellement, exploitation et vérification de Vault et de la CredentialAPI.