Skip to content
Learni
Voir tous les tutoriels
AWS

Comment utiliser AWS Secrets Manager en 2026

Read in English

Introduction

AWS Secrets Manager est un service AWS essentiel pour gérer les secrets comme les mots de passe de bases de données, les clés API ou les tokens d'authentification. Contrairement aux variables d'environnement exposées, il chiffre les secrets au repos avec AWS KMS, autorise l'accès via IAM et automatise les rotations.

Pourquoi l'utiliser en 2026 ? Les breaches de sécurité coûtent des millions ; Secrets Manager réduit ce risque en centralisant la gestion, en auditant les accès et en intégrant nativement avec RDS, Lambda et ECS. Ce tutoriel beginner vous guide pas à pas : de la configuration CLI à l'intégration Node.js. À la fin, vous saurez créer, récupérer et protéger des secrets en production. Imaginez comme un coffre-fort numérique : vous y déposez vos clés, AWS gère les serrures.

Prérequis

  • Compte AWS gratuit (Free Tier éligible pour Secrets Manager).
  • AWS CLI v2 installé (télécharger).
  • Node.js 20+ et npm/yarn.
  • Connaissances basiques en terminal et TypeScript (optionnel).
  • Région AWS par défaut : us-east-1 (changeable via --region).

Configurer AWS CLI

aws-configure.sh
aws configure set aws_access_key_id YOUR_ACCESS_KEY_ID
aws configure set aws_secret_access_key YOUR_SECRET_ACCESS_KEY
aws configure set default.region us-east-1
aws configure set default.output json

echo "Configuration terminée. Vérifiez avec : aws sts get-caller-identity"

Ce script configure vos credentials AWS CLI avec une clé d'accès IAM (créez-en une sans MFA pour tests). Il définit la région et le format JSON pour les sorties. Évitez d'utiliser root account : créez un utilisateur IAM avec SecretsManagerFullAccess.

Vérifier la configuration

Exécutez le script précédent, puis aws sts get-caller-identity pour confirmer. Vous verrez votre UserId et Account. Analogie : Comme régler son GPS avant un road trip AWS.

Créer un secret via CLI

create-secret.sh
SECRET_NAME=my-app-db-password
SECRET_VALUE='{"username":"admin","password":"SuperSecret123!"}'

aws secretsmanager create-secret \
  --name $SECRET_NAME \
  --description "Mot de passe base de données pour l'app de démo" \
  --secret-string $SECRET_VALUE

aws secretsmanager describe-secret --secret-id $SECRET_NAME

Ce code crée un secret JSON stocké chiffré. Utilisez --secret-string pour du texte, --secret-binary pour binaire. Piège : Nommez uniqement (pas de doublons) ; vérifiez ARN retourné pour références futures.

Récupérer un secret via CLI

get-secret.sh
SECRET_NAME=my-app-db-password

aws secretsmanager get-secret-value \
  --secret-id $SECRET_NAME \
  --query SecretString \
  --output text | jq .

Récupère la valeur décryptée en sortie JSON. --query extrait SecretString ; jq formate (installez via brew install jq). Piège : Sans permissions IAM, erreur AccessDeniedException.

Intégrer avec Node.js SDK

Passez au code : installez le SDK AWS v3 (moderne, tree-shakeable). Analogie : CLI pour admin, SDK pour apps runtime.

Installer dépendances Node.js

setup-node.sh
mkdir aws-secrets-demo && cd aws-secrets-demo
npm init -y
npm install @aws-sdk/client-secrets-manager @types/node typescript ts-node
npm install -D @types/node

echo '{
  "compilerOptions": {
    "target": "ES2022",
    "module": "commonjs",
    "strict": true
  }
}' > tsconfig.json

Initialise un projet Node.js avec AWS SDK v3. ts-node exécute TS directement. Configure tsconfig.json pour type safety. Lancez npm run après.

Créer un secret avec SDK

createSecret.ts
import { SecretsManagerClient, CreateSecretCommand } from '@aws-sdk/client-secrets-manager';

const client = new SecretsManagerClient({ region: 'us-east-1' });

const secretName = 'my-app-api-key';
const secretValue = JSON.stringify({ apiKey: 'sk-abc123def456ghi789' });

const command = new CreateSecretCommand({
  Name: secretName,
  Description: 'Clé API pour l\'app de démo',
  SecretString: secretValue,
});

async function createSecret() {
  try {
    const response = await client.send(command);
    console.log('Secret créé:', response.ARN);
  } catch (error) {
    console.error('Erreur:', error);
  }
}

createSecret();

Crée un secret via SDK avec commandes async. Utilisez fromIni pour credentials auto (~/.aws/credentials). Piège : Gérez ResourceExistsException si doublon ; ajoutez KmsKeyId pour custom KMS.

Récupérer et utiliser un secret

getAndUseSecret.ts
import { SecretsManagerClient, GetSecretValueCommand } from '@aws-sdk/client-secrets-manager';

const client = new SecretsManagerClient({ region: 'us-east-1' });

const secretName = 'my-app-db-password';

async function getSecret() {
  try {
    const command = new GetSecretValueCommand({ SecretId: secretName });
    const response = await client.send(command);
    const secret = JSON.parse(response.SecretString!);
    console.log('DB Username:', secret.username);
    console.log('DB Password:', secret.password);
    // Utilisez en prod : const db = await connect(secret.username, secret.password);
  } catch (error) {
    console.error('Erreur récupération:', error);
  }
}

getSecret();

Récupère, parse JSON et utilise le secret (ex: connexion DB). Caching optionnel via Cache pattern. Piège : Ne loggez JAMAIS secrets en prod ; utilisez process.env fallback.

Bonnes pratiques

  • Permissions least-privilege : Attachez policies IAM spécifiques (secretsmanager:GetSecretValue seulement).
  • Rotation automatique : Activez pour DB (Lambda rote chaque 30j).
  • KMS custom keys : Pour contrôle cross-account.
  • Tags : Ajoutez Environment:prod pour billing/audit.
  • Cache côté client : TTL 1h pour réduire coûts API.

Erreurs courantes à éviter

  • Credentials non configurés : Erreur NoCredentialProvider. Solution : aws configure ou env vars.
  • Région mismatch : Secret en eu-west-1, requête us-east-1 → ResourceNotFound.
  • Secrets en logs : Utilisez structured logging sans valeurs.
  • Pas de parsing JSON : SecretString est string ; toujours JSON.parse().

Pour aller plus loin

Maîtrisez AWS avancé avec nos formations Learni. Ressources : Docs AWS Secrets Manager, Exemples GitHub.

Comment utiliser AWS Secrets Manager en 2026 (Tutoriel) | Learni