Les secrets dynamiques sont la vraie promesse de Vault : au lieu de stocker des credentials permanents que tout le monde partage, Vault génère des identifiants uniques, temporaires et révocables pour chaque workload.
Ce guide explique la différence entre secrets statiques et dynamiques, le modèle lease/TTL, et comment choisir le bon moteur selon votre besoin.
Pourquoi les secrets permanents posent problème
Section intitulée « Pourquoi les secrets permanents posent problème »Le modèle classique de gestion des secrets :
Problèmes :
| Risque | Conséquence |
|---|---|
| Credential partagé | Si compromis, toutes les apps sont exposées |
| Pas de traçabilité | Impossible de savoir quelle app a fait quoi |
| Révocation difficile | Changer le mot de passe impacte toutes les apps |
| Rotation manuelle | Oublis, fenêtres d’exposition longues |
| Secrets dans le code | Fuites via Git, logs, variables d’environnement |
Secrets statiques vs dynamiques
Section intitulée « Secrets statiques vs dynamiques »Secret statique (KV)
Section intitulée « Secret statique (KV) »Vault stocke un secret que vous avez créé. Le secret existe indépendamment de Vault et ne change pas automatiquement.
# Vous créez le secretvault kv put secret/myapp/db password="secret123"
# Vous le lisezvault kv get secret/myapp/dbCas d’usage :
- Clés API tierces imposées par le fournisseur
- Secrets legacy non migrables
- Configuration statique (URLs, paramètres)
Secret dynamique
Section intitulée « Secret dynamique »Vault génère un secret à la demande, avec une durée de vie limitée. Le secret n’existait pas avant la requête et sera révoqué à expiration.
# Vault génère un nouveau user/password PostgreSQLvault read database/creds/readonly
# Sortie : credentials uniques, valides 1 heureKey Value--- -----lease_id database/creds/readonly/abcd1234lease_duration 1husername v-token-readonly-xyz123password A1B2c3D4e5F6g7H8Cas d’usage :
- Accès base de données (PostgreSQL, MySQL, MongoDB)
- Credentials cloud (AWS, GCP, Azure)
- Certificats TLS (PKI)
- Accès SSH (certificats signés)
Le modèle lease / TTL / révocation
Section intitulée « Le modèle lease / TTL / révocation »Chaque secret dynamique est associé à un lease (bail) qui définit sa durée de vie.
Le lease est un identifiant unique qui référence le secret émis :
lease_id: database/creds/readonly/abcd1234-5678-90ef-ghij-klmnopqrstuvVault stocke ce lease et sait :
- Quel secret a été émis
- À qui (quel token)
- Quand il expire
- Comment le révoquer
TTL (Time To Live)
Section intitulée « TTL (Time To Live) »Exemples de TTL fréquents :
| TTL | Cas d’usage |
|---|---|
| 1h | Accès DB pour un job batch |
| 24h | Session de développement |
| 72h | Credentials CI/CD |
| 30 jours | Certificats TLS services |
Renouvellement
Section intitulée « Renouvellement »Avant expiration, le client peut prolonger le lease :
vault lease renew database/creds/readonly/abcd1234Le renouvellement est limité par le max_ttl configuré sur le rôle.
Révocation
Section intitulée « Révocation »À tout moment, vous pouvez révoquer un lease :
# Révoquer un lease spécifiquevault lease revoke database/creds/readonly/abcd1234
# Révoquer tous les leases d'un préfixevault lease revoke -prefix database/creds/readonlyVault exécute l’action de nettoyage : pour une base de données, il supprime l’utilisateur créé. Pour AWS, il révoque les credentials IAM.
Dynamic role vs static role
Section intitulée « Dynamic role vs static role »Certains moteurs (Database, AWS) supportent deux modes.
Dynamic role
Section intitulée « Dynamic role »Vault crée un nouveau credential à chaque requête :
# Chaque appel crée un nouvel utilisateur DBvault read database/creds/app-role# → username: v-token-app-xyz123
vault read database/creds/app-role# → username: v-token-app-abc456 (différent!)Avantages :
- Credentials uniques par workload
- Traçabilité parfaite
- Révocation granulaire
Inconvénients :
- Nécessite que l’app gère le renouvellement
- Plus de credentials à gérer côté système cible
Static role
Section intitulée « Static role »Vault gère un credential existant et le fait tourner automatiquement :
# Toujours le même utilisateur, mais password rotévault read database/static-creds/legacy-app# → username: legacy_app_user (fixe)# → password: RotatedPass123 (changé périodiquement)Avantages :
- Compatible avec les apps legacy qui attendent un user fixe
- Rotation automatique sans changer l’architecture
Inconvénients :
- Credential partagé si plusieurs apps utilisent le même static role
- Moins de traçabilité
Tableau de choix des moteurs
Section intitulée « Tableau de choix des moteurs »| Besoin | Moteur Vault | Type | TTL typique |
|---|---|---|---|
| Credentials PostgreSQL/MySQL | Database | Dynamique | 1-24h |
| Compte DB legacy à rotation | Database (static role) | Géré | rotation 24h |
| Credentials AWS IAM | AWS | Dynamique | 1-12h |
| Access key AWS existante | AWS (static role) | Géré | rotation 24h |
| Certificats TLS | PKI | Dynamique | 30-90 jours |
| Accès SSH aux serveurs | SSH | Dynamique | 5 min - 24h |
| Clés API tierces imposées | KV | Statique | N/A |
| Configuration applicative | KV | Statique | N/A |
Arbre de décision
Section intitulée « Arbre de décision »Le credential peut-il être généré à la demande ?├── Oui → Secret dynamique│ ├── Base de données → Database secrets engine│ ├── AWS → AWS secrets engine│ ├── Azure → Azure secrets engine│ ├── GCP → GCP secrets engine│ ├── Certificat TLS → PKI secrets engine│ └── Accès SSH → SSH secrets engine│└── Non (imposé par un tiers) └── KV secrets engineAudit et traçabilité par identité
Section intitulée « Audit et traçabilité par identité »Avec les secrets dynamiques, chaque workload obtient un credential unique. La traçabilité devient bien plus simple :
Bénéfices :
| Aspect | Avant (partagé) | Après (dynamique) |
|---|---|---|
| Audit DB | ”admin a fait X" | "v-token-app-b a fait X” |
| Compromission | Toutes les apps exposées | Une seule app exposée |
| Révocation | Impacte tout le monde | Révoque juste l’app compromise |
| Rotation | Coordination manuelle | Automatique par TTL |
Corrélation avec les logs Vault
Section intitulée « Corrélation avec les logs Vault »Les logs d’audit Vault tracent :
- Quel token a demandé le credential
- Quelle méthode d’auth a obtenu ce token
- L’heure exacte de l’émission
Vous pouvez corréler :
- Log Vault : token abc123 a demandé
database/creds/readonlyà 10:00 - Log PostgreSQL : user v-token-readonly-xyz a exécuté
SELECT * FROM usersà 10:05 - Conclusion : l’app avec token abc123 a lu la table users
Quand rester sur KV (secrets statiques)
Section intitulée « Quand rester sur KV (secrets statiques) »Les secrets dynamiques ne sont pas toujours possibles. Utilisez KV quand le secret est imposé par un tiers ou non générable par Vault :
| Cas | Exemple | Pourquoi KV |
|---|---|---|
| Clé API tierce | Stripe, Twilio, SendGrid | Le fournisseur impose la clé |
| Secret partagé partenaire | Token d’intégration B2B | Négocié manuellement |
| Licence logicielle | Clé de licence propriétaire | Non générable |
| Credential legacy | Mot de passe d’un système non supporté | Pas de plugin Vault |
| Configuration statique | URLs, paramètres non secrets | Pas besoin de dynamique |
Ce que les secrets dynamiques ne résolvent pas
Section intitulée « Ce que les secrets dynamiques ne résolvent pas »Les secrets dynamiques réduisent considérablement les risques, mais ne suppriment pas tout :
| Besoin | Reste nécessaire |
|---|---|
| Authentification du workload | Le workload doit prouver son identité à Vault (K8s auth, OIDC, AppRole…) |
| Policies strictes | Les permissions Vault doivent être finement configurées |
| Monitoring et audit | Centraliser et surveiller les logs Vault reste indispensable |
| Haute disponibilité | Vault devient un SPOF — prévoir cluster HA |
| Gestion des échecs | Que faire si Vault est down ou si le renouvellement échoue ? |
À retenir
Section intitulée « À retenir »- Secret statique : Vault stocke, vous gérez le cycle de vie
- Secret dynamique : Vault génère, gère le TTL et révoque
- Lease : identifiant du secret dynamique, permet renouvellement et révocation
- Dynamic role : nouveau credential à chaque requête (recommandé)
- Static role : credential existant roté automatiquement (legacy)
- Traçabilité : simplifiée mais dépend d’une bonne configuration
- KV reste utile : pour les secrets imposés par des tiers
- Vault devient central : planifiez HA et stratégie de renouvellement