Skip to content
Learni
Voir tous les tutoriels
Cloud Infrastructure

Comment gérer des clés de chiffrement AWS KMS en 2026

18 minINTERMEDIATE
Read in English

Introduction

AWS KMS centralise la gestion des clés de chiffrement et simplifie la conformité RGPD et ISO. Dans ce tutoriel intermédiaire, vous allez créer une clé CMK, chiffrer des données sensibles et implémenter la rotation automatique. Chaque étape inclut du code prêt à l'emploi pour Node.js avec le SDK v3. Vous découvrirez également comment intégrer KMS dans une architecture serverless tout en respectant le principe du moindre privilège.

Prérequis

  • Compte AWS avec permissions KMS
  • Node.js 20+ et AWS CLI v2
  • Connaissances de base TypeScript et IAM

Configuration AWS CLI

terminal
aws configure
aws sts get-caller-identity

Configurez vos credentials AWS et vérifiez l'identité IAM avant toute opération KMS.

Création d'une clé CMK

terminal
aws kms create-key --description "Clé application 2026" --tags TagKey=Environment,TagValue=Production --output json

Crée une clé CMK avec tags. Notez l'ARN retourné pour les étapes suivantes.

Installation du SDK AWS

terminal
npm init -y
npm install @aws-sdk/client-kms

Installe le client KMS v3 officiel, plus léger et typé que la v2.

Client KMS TypeScript

kms-client.ts
import { KMSClient } from '@aws-sdk/client-kms';

const kmsClient = new KMSClient({
  region: 'eu-west-3',
  credentials: {
    accessKeyId: process.env.AWS_ACCESS_KEY_ID!,
    secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY!,
  },
});

Initialise le client KMS avec région et credentials. Toujours utiliser des variables d'environnement.

Fonction de chiffrement

encrypt.ts
import { EncryptCommand } from '@aws-sdk/client-kms';
import { kmsClient } from './kms-client';

export async function encryptData(plaintext: string, keyId: string): Promise<Uint8Array> {
  const command = new EncryptCommand({
    KeyId: keyId,
    Plaintext: Buffer.from(plaintext),
  });
  const response = await kmsClient.send(command);
  return response.CiphertextBlob!;
}

Chiffre une chaîne et retourne le ciphertext. Gère les erreurs avec try/catch en production.

Fonction de déchiffrement

decrypt.ts
import { DecryptCommand } from '@aws-sdk/client-kms';
import { kmsClient } from './kms-client';

export async function decryptData(ciphertext: Uint8Array): Promise<string> {
  const command = new DecryptCommand({
    CiphertextBlob: ciphertext,
  });
  const response = await kmsClient.send(command);
  return Buffer.from(response.Plaintext!).toString();
}

Déchiffre le ciphertext sans spécifier la clé (KMS la déduit automatiquement).

Bonnes pratiques

  • Utilisez toujours des alias pour référencer les clés
  • Activez la rotation automatique tous les 365 jours
  • Limitez les permissions IAM au strict minimum
  • Stockez les ciphertext dans S3 avec SSE-KMS
  • Activez CloudTrail pour auditer les appels KMS

Erreurs courantes à éviter

  • Oublier de gérer l'exception KeyUnavailableException
  • Utiliser des clés AWS gérées pour des données sensibles
  • Ne pas activer la rotation sur les clés de production
  • Hardcoder l'ID de clé dans le code source

Pour aller plus loin

Découvrez nos formations avancées sur la sécurité AWS : https://learni-group.com/formations

Comment gérer des clés de chiffrement AWS KMS en 2026 | Learni