guide technique : rotation des secrets pour un SaaS Node.js avec HashiCorp Vault
25/06/2025
guide technique : rotation des secrets pour un SaaS Node.js avec HashiCorp Vault
Dans les architectures SaaS modernes, la sécurité des secrets (API keys, tokens, certificats) est critique. Automatiser leur rotation minimise les risques de fuite et simplifie la conformité. Ce guide s’adresse aux ingénieurs DevOps et aux développeurs Node.js qui souhaitent intégrer HashiCorp Vault pour gérer et tourner les secrets de leur application.
prérequis
- Serveur Vault v1.13+ installé (Docker ou binaire) (Docker recommandé).
- Application SaaS Node.js (Express, NestJS, etc.).
- Un backend de stockage pour Vault (Consul, filesystem, AWS S3).
- CLI Vault et Node SDK (
npm install node-vault
).
1. démarrage rapide de Vault en Docker
# démarrer Vault en mode dev pour tests
docker run --cap-add=IPC_LOCK -d --name vault-dev -p 8200:8200 vault:1.13.0 server -dev
# exporter l’adresse et le token
export VAULT_ADDR='http://127.0.0.1:8200'
export VAULT_TOKEN='root-token'
Erreur fréquente : ne pas oublier --cap-add=IPC_LOCK
, sinon Vault ne peut pas verrouiller la mémoire.
2. activer le moteur KV et créer un secret
# activer KV v2
vault secrets enable -path=secret kv-v2
# écrire un secret initial
vault kv put secret/saas/api-key value="S3cr3tK3y"
Vous pouvez vérifier la version :
vault kv metadata get secret/saas/api-key
3. automatiser la rotation via Node.js
Installez le client :
npm install node-vault@^0.9.8
// vault-rotate.js
const Vault = require('node-vault');
const vault = Vault({ endpoint: process.env.VAULT_ADDR, token: process.env.VAULT_TOKEN });
async function rotateSecret() {
try {
// Lecture de l'ancien secret
const oldSecret = await vault.read('secret/data/saas/api-key');
console.log('Ancienne valeur :', oldSecret.data.data.value);
// Génération d'une nouvelle clé (exemple)
const newKey = require('crypto').randomBytes(16).toString('hex');
await vault.write('secret/data/saas/api-key', { data: { value: newKey } });
console.log('Nouvelle valeur écrite :', newKey);
// Ici, vous pouvez notifier votre application ou déclencher un déploiement
} catch (err) {
console.error('Erreur rotation :', err.message);
}
}
// Exécution périodique (cron, Kubernetes CronJob…)
rotateSecret();
Tip : utilisez un scheduler (CronJob Kubernetes) pour exécuter vault-rotate.js
toutes les 24 h.
4. intégrer la rotation dans votre pipeline CI/CD
- Ajoutez une étape dans votre pipeline (GitHub Actions, Jenkins…) qui exécute le script de rotation.
- Stockez
VAULT_TOKEN
de manière sécurisée (GitHub Secrets, Jenkins Credentials). - Validez la remontée d’erreurs : tout échec doit stopper la promotion en production.
5. bonnes pratiques & métriques
- Activer l’audit log de Vault pour tracer chaque accès (
vault audit enable file file_path=/var/log/vault-audit.log
). - Limiter la durée de vie du token (
vault token create -ttl=1h
). - Surveiller le nombre de lectures/écritures par minute pour anticiper la montée en charge (Novane Monitoring).
- Chiffrement en transit (TLS) et au repos (auto géré par Vault).
conclusion
L’intégration de HashiCorp Vault et l’automatisation de la rotation des secrets renforcent significativement la posture sécurité d’un SaaS Node.js. En suivant ce guide, vous réduisez l’impact d’une clé compromise et vous répondez aux exigences de conformité.
Pour aller plus loin, nos experts peuvent vous accompagner dans la mise en place d’un système complet de gestion des secrets et d’infrastructure sécurisée. Contactez-nous !