Skip to main content

06. S3 Encryption

1. Chiffrement au repos

yrdyLe 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.