Skip to content
Learni
Voir tous les tutoriels
Azure

Comment intégrer Azure Key Vault dans vos apps en 2026

Read in English

Introduction

Azure Key Vault est un service cloud Microsoft Azure conçu pour stocker et gérer de manière sécurisée des clés cryptographiques, secrets (comme des mots de passe, chaînes de connexion) et certificats. En 2026, avec la multiplication des réglementations comme le RGPD et les audits de sécurité renforcés, ignorer Key Vault expose vos applications à des risques majeurs de fuites de données.

Pourquoi l'utiliser ? Imaginez vos secrets d'API (Stripe, SendGrid) codés en dur dans le code source : un commit Git accidentel et c'est la catastrophe. Key Vault centralise tout, contrôle les accès via RBAC ou policies, et automatise les rotations. Ce tutoriel intermediate vous guide pour créer un vault, y injecter des secrets, et les consommer dans une app Node.js via le SDK officiel. À la fin, vous aurez une API Express fonctionnelle qui récupère dynamiquement ses configs sécurisées. Prêt à booster la sécurité de vos déploiements ? (128 mots)

Prérequis

  • Compte Azure gratuit (crédit de 200$ offert pour tester)
  • Azure CLI version 2.60+ installée
  • Node.js 20+ et npm/yarn
  • Connaissances de base en TypeScript et Azure (niveau intermediate)
  • VS Code avec extensions Azure et TypeScript

Créer le groupe de ressources et Key Vault

terminal
# Se connecter à Azure (utilisez 'az login' dans votre navigateur)
az login

# Créer un resource group (remplacez 'est-francecentral' par votre région)
az group create --name rg-keyvault-demo --location francecentral

# Créer le Key Vault avec purge protection activée (récupération 90 jours)
az keyvault create --name kv-demo-2026-unik --resource-group rg-keyvault-demo --location francecentral --enable-purge-protection true --enable-soft-delete true

# Vérifier la création
echo "URI du vault: $(az keyvault show --name kv-demo-2026-unik --query vaultUri -o tsv)"

Ce script initialise un groupe de ressources et un Key Vault avec protections anti-suppression (soft-delete et purge). Remplacez 'kv-demo-2026-unik' par un nom unique globalement. L'URI affiché sera utilisé pour l'accès SDK. Piège : sans login préalable, les commandes échouent ; testez toujours l'URI avec 'az keyvault show'.

Configurer l'accès au vault

Avant d'ajouter des secrets, définissez qui peut y accéder. Pour ce tutoriel, nous utilisons Azure CLI pour un accès rapide (via 'az login'), puis DefaultAzureCredential dans l'app Node.js – idéal pour dev/test/prod avec Managed Identity en déploiement. Évitez les clés d'accès statiques : privilégiez les identités managées.

Ajouter un secret dans Key Vault

terminal
# Récupérer l'ID de l'utilisateur connecté (pour autoriser l'accès)
USER_OBJECT_ID=$(az ad signed-in-user show --query id -o tsv)

# Autoriser l'accès Get/List pour cet utilisateur
az keyvault set-policy --name kv-demo-2026-unik --upn $(az ad signed-in-user show --query userPrincipalName -o tsv) --secret-permissions get list

# Ajouter un secret (ex: clé API fictive)
az keyvault secret set --vault-name kv-demo-2026-unik --name "api-stripe-key" --value "sk_test_123456789abcdef"

# Lister les secrets pour vérifier
az keyvault secret list --vault-name kv-demo-2026-unik

On accorde des permissions minimales (get/list) à l'utilisateur connecté via RBAC-like policy. Le secret est stocké chiffré. Attention : en prod, utilisez des groupes AD ou Managed Identities ; ne hardcodez jamais de valeurs réelles ici.

Préparer l'application Node.js

Créons une app Express qui récupère le secret au démarrage et l'utilise dans une route. Le SDK @azure/keyvault-secrets + @azure/identity gère l'authentification automatiquement via CLI login ou env vars.

Initialiser package.json

package.json
{
  "name": "keyvault-demo",
  "version": "1.0.0",
  "type": "module",
  "scripts": {
    "start": "node index.js",
    "dev": "tsx watch index.ts"
  },
  "dependencies": {
    "express": "^4.19.2",
    "@azure/keyvault-secrets": "^1.0.0",
    "@azure/identity": "^3.0.0",
    "dotenv": "^16.4.5"
  },
  "devDependencies": {
    "@types/express": "^4.17.21",
    "tsx": "^4.7.0",
    "typescript": "^5.5.3"
  }
}

Ce package.json inclut les SDK Azure officiels et Express. 'tsx' permet le hot-reload TS. Installez avec 'npm install' après création du dossier projet. Piège : activez ESM avec 'type: module' pour les imports Azure modernes.

Écrire l'app qui récupère le secret

index.ts
import express from 'express';
import { DefaultAzureCredential } from '@azure/identity';
import { SecretClient } from '@azure/keyvault-secrets';

const app = express();
const port = 3000;

// URI du Key Vault (remplacez par le vôtre)
const vaultUrl = 'https://kv-demo-2026-unik.vault.azure.net/';
const secretName = 'api-stripe-key';

let stripeKey: string;

async function loadSecret() {
  const credential = new DefaultAzureCredential();
  const client = new SecretClient(vaultUrl, credential);
  try {
    const secret = await client.getSecret(secretName);
    stripeKey = secret.value || '';
    console.log('✅ Secret chargé avec succès');
  } catch (error) {
    console.error('❌ Erreur chargement secret:', error);
    process.exit(1);
  }
}

app.get('/stripe-status', (req, res) => {
  res.json({ status: 'OK', keyPrefix: stripeKey?.slice(0, 10) + '...' });
});

(async () => {
  await loadSecret();
  app.listen(port, () => {
    console.log(`🚀 Serveur sur http://localhost:${port}`);
  });
})();

L'app utilise DefaultAzureCredential (détecte az login, env vars, Managed ID). Au démarrage, elle fetch le secret et l'utilise dans une route sécurisée (masque la valeur). Lancez avec 'npm run dev'. Piège : vérifiez les permissions ; sans 'az login', cela fallback sur env vars comme AZURE_CLIENT_ID.

Tester l'app localement

terminal
cd keyvault-demo
npm install
npm run dev

# Dans un autre terminal, tester
curl http://localhost:3000/stripe-status

# Nettoyage (optionnel)
az keyvault purge --name kv-demo-2026-unik --location francecentral
ez group delete --name rg-keyvault-demo --yes --no-wait

Installez, lancez et testez l'endpoint. Le JSON renvoyé confirme le secret chargé (préfixe masqué). Pour cleanup, purgez après 90j soft-delete. Attention : en CI/CD, configurez des env vars ou OIDC pour credential.

Bonnes pratiques

  • Permissions minimales : Utilisez 'get' seulement, pas 'set' pour les apps runtime.
  • Rotation automatique : Configurez via Azure Portal pour secrets critiques (ex: 90j).
  • Monitoring : Activez Azure Monitor + Sentinel pour audits d'accès.
  • En prod : Déployez avec Managed Identity (Azure App Service/Functions) au lieu de SP.
  • Cache secrets : En Node.js, utilisez Redis pour éviter les appels répétés au vault.

Erreurs courantes à éviter

  • 401 Unauthorized : Vérifiez 'az keyvault set-policy' ou Managed ID assigné.
  • Vault non trouvé : URI mal copié (fin en '/').
  • DefaultAzureCredential fails : Pas de 'az login' local ; set AZURE_TENANT_ID etc.
  • Secrets en clair logs : Jamais console.log(secret.value) en prod !

Pour aller plus loin

Maîtrisez les HSM privés avec Key Vault Premium. Explorez l'API Keys pour chiffrement. Pour .NET/C#, voir le SDK officiel. Inscrivez-vous à nos formations Learni sur Azure : certification AZ-204 incluse. Docs officielles : Azure Key Vault.