Skip to content
Learni
Voir tous les tutoriels
Infrastructure et Sécurité

Comment sécuriser les secrets avec HashiCorp Vault en 2026

Read in English

Introduction

HashiCorp Vault est la solution de référence pour centraliser la gestion des secrets, des tokens et des certificats. Dans un contexte DevOps moderne, stocker des mots de passe en clair dans le code ou les variables d'environnement représente un risque majeur. Ce tutoriel vous guide pas à pas pour déployer Vault, le configurer et l'intégrer dans une application. Vous apprendrez à créer des politiques dynamiques et à accéder aux secrets de manière sécurisée. L'approche progressive vous permettra de passer d'un environnement de développement à une configuration prête pour la production.

Prérequis

  • Docker et Docker Compose installés
  • Connaissances de base en ligne de commande
  • Notions de TypeScript et Node.js
  • Accès administrateur sur votre machine

Déploiement avec Docker Compose

docker-compose.yml
version: '3.8'
services:
  vault:
    image: hashicorp/vault:1.18
    container_name: vault
    ports:
      - "8200:8200"
    environment:
      VAULT_DEV_ROOT_TOKEN_ID: "dev-only-token"
      VAULT_DEV_LISTEN_ADDRESS: "0.0.0.0:8200"
    cap_add:
      - IPC_LOCK

Ce fichier démarre Vault en mode développement avec un token racine fixe. Le mode dev est idéal pour tester mais jamais pour la production.

Initialisation et déverrouillage

init-vault.sh
#!/bin/bash
export VAULT_ADDR='http://127.0.0.1:8200'
export VAULT_TOKEN='dev-only-token'
vault status
vault secrets enable -path=secret kv-v2
vault kv put secret/app/config username="admin" password="s3cr3t"

Active le moteur KV v2 et stocke une première paire clé-valeur. Le token dev permet un accès immédiat sans initialisation complète.

Création d'une politique

app-policy.hcl
path "secret/data/app/config" {
  capabilities = ["read"]
}
path "secret/metadata/app/*" {
  capabilities = ["list"]
}

Cette politique autorise uniquement la lecture des secrets de l'application. Limiter les droits est essentiel pour respecter le principe du moindre privilège.

Application de la politique

apply-policy.sh
vault policy write app-policy app-policy.hcl
vault token create -policy=app-policy -ttl=1h

Crée un token avec la politique restreinte. Ce token sera utilisé par l'application pour lire les secrets sans droits d'administration.

Client Node.js pour lire les secrets

src/vault-client.ts
import * as vault from 'node-vault';

const client = vault({
  apiVersion: 'v1',
  endpoint: 'http://127.0.0.1:8200',
  token: process.env.VAULT_TOKEN
});

export async function getAppConfig() {
  const result = await client.read('secret/data/app/config');
  return result.data.data;
}

Le client utilise le token limité pour récupérer les secrets. Toujours valider la présence du token avant toute requête en production.

Intégration dans une API Express

src/server.ts
import express from 'express';
import { getAppConfig } from './vault-client';

const app = express();
app.get('/config', async (req, res) => {
  try {
    const config = await getAppConfig();
    res.json(config);
  } catch (error) {
    res.status(500).json({ error: 'Impossible de récupérer les secrets' });
  }
});
app.listen(3000, () => console.log('Serveur démarré'));

L'API expose les données de configuration sans jamais les stocker en dur. Gérez les erreurs pour éviter les fuites d'informations sensibles.

Bonnes pratiques

  • Utilisez toujours des tokens à durée de vie limitée et renouvelez-les automatiquement
  • Activez l'audit logging pour tracer tous les accès aux secrets
  • Préférez le moteur KV v2 pour bénéficier des versions et de la suppression sécurisée
  • Séparez les environnements avec des namespaces ou des instances Vault distinctes
  • Intégrez Vault dans vos pipelines CI/CD via des rôles d'authentification dynamiques

Erreurs courantes à éviter

  • Laisser le mode dev activé en production
  • Accorder des droits trop larges aux tokens d'application
  • Oublier de chiffrer les données au repos avec un KMS externe
  • Stocker le token racine dans le code source ou les variables d'environnement

Pour aller plus loin

Explorez l'authentification Kubernetes et les secrets dynamiques pour les bases de données. Découvrez nos formations avancées sur la sécurité.