Skip to main content

06. S3 Encryption

1. Chiffrement au repos

Le dilemme à l'examen repose toujours sur deux critères : Qui gère la clé ? et Où se fait le chiffrement ?

A. Server-Side Encryption (SSE) : AWS chiffre pour vous

Les données arrivent brutes chez AWS, et c'est S3 qui s'occupe de les chiffrer avant de les écrire sur le disque.

  • SSE-S3 (Chiffrement géré par S3)
    • Le concept : AWS gère tout. La clé est créée, stockée et gérée automatiquement par AWS.
    • Algorithme : AES-256.
    • Pourquoi ? C'est la solution par défaut (gratuite et zéro gestion).
    • Ce qu'il faut savoir pour l'examen : Depuis 2023, SSE-S3 est activé par défaut sur tous les nouveaux buckets S3. Si vous n'en spécifiez aucun, c'est celui-là qui s'applique.
    • Header HTTP à l'upload : "x-amz-server-side-encryption": "AES256"
  • SSE-KMS (Chiffrement via AWS KMS)

    • Le concept : Vous utilisez le service AWS Key Management Service (KMS) pour gérer les clés. Vous pouvez utiliser la clé AWS par défaut (aws/s3) ou créer votre propre clé personnalisée (Customer Managed Key).

    • Pourquoi ? Pour avoir un contrôle d'accès strict (qui a le droit d'utiliser la clé) et un suivi d'audit (CloudTrail) complet de chaque chiffrement/déchiffrement.

    • Ce qu'il faut savoir pour l'examen : * Génère des coûts (appels API KMS).

      • Attention aux quotas de requêtes KMS en cas de fort trafic.

      • Pour déchiffrer un objet, l'utilisateur a besoin de la permission S3 ET de la permission kms:Decrypt.

    • Header HTTP à l'upload : "x-amz-server-side-encryption": "aws:kms"

  • SSE-C (Chiffrement avec clés fournies par le client)
    • Le concept : Vous possédez et gérez la clé secrète, mais vous la passez à S3 dans la requête HTTPS pour qu'AWS fasse le travail de chiffrement. AWS ne stocke jamais votre clé. Une fois l'opération finie, AWS jette la clé de sa mémoire vive.

    • Pourquoi ? Pour les entreprises qui ont des obligations de conformité strictes interdisant de confier la gestion des clés à un tiers (même AWS).

    • Ce qu'il faut savoir pour l'examen : Si vous perdez la clé, vos données sont perdues à jamais. AWS a récemment renforcé la sécurité en désactivant le support SSE-C par défaut sur les nouveaux buckets (il faut l'autoriser explicitement via l'API si besoin).

    • Header HTTP : Vous devez envoyer la clé dans chaque requête HTTP (x-amz-server-side-encryption-customer-key).

B. Client-Side Encryption : Vous chiffrez avant d'envoyer

  • Le concept : Vos données sont chiffrées au sein même de votre application (par exemple avec le SDK AWS / S3 Encryption Client) avant de franchir le réseau. AWS reçoit un fichier qui est déjà un bloc illisible.

  • Pourquoi ? Sécurité maximale "End-to-End". AWS n'a aucun moyen de voir ce qu'il y a dans votre fichier, même s'ils le voulaient.