/
/

Comment gérer le chiffrement côté serveur d’Amazon S3 avec des garde-fous

par Team Ninja
How to Operate Amazon S3 Server-Side Encryption With Guardrails blog banner image

Points clés

  • Classer les buckets et choisir le mode SSE de S3 : classez les données par tenant et choisissez le mode SSE de S3, SSE-S3 pour la simplicité, SSE-KMS pour le contrôle des clés, SSE-C pour des clés gérées par le client.
  • Activer le chiffrement par défaut et imposer des politiques de refus : activez le chiffrement par défaut du bucket et ajoutez des politiques de refus qui bloquent les requêtes PutObject dépourvues d’en-têtes de chiffrement valides.
  • Appliquer des politiques de clé strictes et activer la rotation : pour SSE-KMS, appliquez des politiques de clé au moindre privilège, séparez administrateurs et utilisateurs, restreignez les rôles GIA (gestion des identités et des accès) et les services, et activez la rotation annuelle.
  • Exiger TLS (HTTPS) pour tous les accès S3 : imposez un transport chiffré en attachant une politique de bucket qui refuse les requêtes sans TLS (HTTP).
  • Vérifier la couverture du chiffrement avec S3 Inventory et les journaux : vérifiez la couverture via le champ EncryptionStatus de S3 Inventory, calculez le pourcentage d’objets chiffrés et signalez les exceptions.
  • Conserver les preuves et assurer un reporting continu pour la conformité : produisez des dossiers de preuves mensuels résumant la couverture du chiffrement, les requêtes non chiffrées refusées, l’utilisation des clés et les mises à jour de politiques.

Le chiffrement côté serveur d’AWS S3 protège les données au repos, mais il révèle tout son potentiel comme outil de sécurité des données lorsque le chiffrement est appliqué par défaut, imposé par une politique, encadré par une propriété des clés clairement définie et vérifié par des preuves. Exploitez tous les outils à votre disposition pour garantir la protection des données de l’entreprise.

Guide d’activation du chiffrement par défaut d’AWS S3

📌 Prérequis :

  • Vous devez avoir réalisé un inventaire des buckets par tenant et par classe de données.
  • Vous devez disposer de critères de décision entre SSE-S3 et SSE-KMS pour chaque bucket.
  • Vous devez disposer d’un modèle de politique de clé KMS avec des rôles propriétaire et utilisateur définis.
  • Vous devez disposer de buckets de destination pour S3 Inventory et les journaux d’accès au serveur.
  • Vous devez disposer d’un espace de travail dédié aux preuves pour les différences de politiques, les fichiers CSV et les dossiers mensuels

Étape 1 : choisir le mode SSE pour chaque bucket

Le chiffrement côté serveur est un type de chiffrement dans lequel les données sont chiffrées par le service ou l’application qui les reçoit. Amazon propose ce service par défaut à l’aide de clés gérées par Amazon S3 (SSE-S3). Vous pouvez toutefois le modifier ou effectuer une mise à niveau selon vos propres besoins. Voici les options disponibles :

  • SSE-S3 : l’option par défaut. Les clés de chiffrement sont gérées par Amazon S3.
  • SSE-KMS : les clés de chiffrement sont stockées et gérées dans AWS Key Management Service (KMS).
  • SSE-C : le client fournit ses propres clés de chiffrement pour chaque requête d’écriture. AWS effectue un chiffrement AES-256 avec la clé fournie, mais ne stocke ni ne gère les clés. Les clients sont responsables de la gestion des clés et de leur disponibilité pour les opérations de déchiffrement.

Vous pouvez choisir un mode SSE différent pour chaque bucket. Notez bien quelle méthode vous utilisez pour quel bucket.

Étape 2 : activer le chiffrement par défaut du bucket

Once vous avez choisi la méthode de chiffrement souhaitée pour un bucket, il est temps de la mettre en place. Activez le chiffrement par défaut sur chaque bucket afin que les nouveaux objets soient chiffrés automatiquement. Vous garantissez ainsi la sécurité de vos données.

Enregistrez une courte sortie CLI (interface en ligne de commande) ou des captures d’écran dans votre espace de travail dédié aux preuves, pour chaque bucket. Cela favorise la transparence et la responsabilisation.

Étape 3 : refuser les envois d’objets non chiffrés par politique

Attachez une politique de bucket qui bloque PutObject en l’absence des en-têtes de chiffrement requis ou en cas d’algorithmes non autorisés. Pour ce faire :

  1. Accédez à Amazon S3 > Buckets.
  2. Sélectionnez le bucket cible qui stocke des données sensibles ou réglementées.
  3. Notez l’ARN (Amazon Resource Name) du bucket, car il vous servira à créer la politique de bucket.
  4. Créez un fichier JSON dans un programme distinct qui refuse toute opération PutObject dépourvue des en-têtes de chiffrement appropriés. Voici un exemple dont vous pouvez vous inspirer :
{
"Version": "2012-10-17",
"Id": "EnforceS3EncryptionPolicy",
"Statement": [
{
"Sid": "DenyUnEncryptedObjectUploads",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::your-bucket-name/*",
"Condition": {
"StringNotEqualsIfExists": {
"s3:x-amz-server-side-encryption": ["AES256", "aws:kms"]
}
}
},
{
"Sid": "DenyInsecureTransport",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::your-bucket-name",
"arn:aws:s3:::your-bucket-name/*"
],
"Condition": {
"Bool": {
"aws:SecureTransport": "false"
}
}
}
]
}
  1. Une fois le fichier JSON prêt, accédez au bucket S3 cible > Permissions > Bucket policy.
  2. Collez la politique JSON dans l’éditeur.
  3. Cliquez sur Save changes.
  4. Validez le résultat. Envoyez un fichier sans chiffrement : la requête doit être refusée.

Conservez le texte de la politique dans un emplacement distinct pour référence, afin que les auditeurs puissent le vérifier ultérieurement.

Étape 4 : définir les politiques de clé KMS et leur rotation

Pour les buckets SSE-KMS, vous devez restreindre l’usage de la clé à des rôles GIA (gestion des identités et des accès) et à des services précis. Pour ce faire :

  1. Accédez au bucket Amazon qui utilise le chiffrement SSE-KMS.
  2. Créez un fichier JSON respectant le principe du moindre privilège. Voici un exemple dont vous pouvez vous inspirer :
{
"Version": "2012-10-17",
"Id": "S3-KMS-Key-Policy",
"Statement": [
{
"Sid": "AllowKeyAdministration",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:role/SecurityAdminRole"
},
"Action": "kms:*",
"Resource": "*"
},
{
"Sid": "AllowS3UseOfKeyForBucket",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:role/DataBackupRole",
"Service": "s3.amazonaws.com"
},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"kms:ViaService": "s3.<region>.amazonaws.com",
"kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::your-bucket-name"
}
}
}
]
}
  1. Ouvrez AWS KMS > Customer managed keys > Your key > Key policy.
  2. Sélectionnez Switch to policy view.
  3. Collez la politique JSON et cliquez sur Save changes.

Étape 5 : aligner le transport sur les objectifs de protection au repos

Exigez TLS pour les clients et les services qui accèdent aux buckets protégés. Référencez vos standards HTTPS et TLS dans le runbook afin que les équipes comprennent la posture de bout en bout.

  1. Accédez au bucket cible.
  2. Créez un fichier JSON qui bloque tout accès depuis des appareils utilisant HTTP non chiffré (sans TLS). Voici un exemple pour référence :
{
"Version": "2012-10-17",
"Id": "EnforceTLSOnlyAccess",
"Statement": [
{
"Sid": "DenyInsecureTransport",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::your-bucket-name",
"arn:aws:s3:::your-bucket-name/*"
],
"Condition": {
"Bool": {
"aws:SecureTransport": "false"
}
}
}
]
}
  1. Accédez à S3 > Buckets > [votre bucket cible] > Permissions > Bucket policy.
  2. Collez la politique JSON et remplacez your-bucket-name par le nom réel de votre bucket.
  3. Cliquez sur Save changes.

Étape 6 : valider la couverture avec S3 Inventory

  1. Choisissez ou créez un bucket de destination où les rapports S3 Inventory seront livrés. À noter :
    • il doit se trouver dans la même région AWS que le bucket source ;
    • le chiffrement par défaut (SSE-S3 ou SSE-KMS) doit y être activé afin de protéger le rapport lui-même.
  2. Créez un dossier dédié à votre rapport.
  3. Accédez à S3 > [votre bucket source] > Management > Inventory configurations > Create inventory configuration.
  4. Configurez les éléments suivants :
    • Name : EncryptionStatusAudit
    • Destination : le bucket de destination et le préfixe que vous avez choisis.
    • Frequency : Daily ou Weekly (quotidien recommandé).
    • Output format : CSV
  5. Incluez les champs suivants :
    • Size
    • LastModifiedDate
    • StorageClass
    • EncryptionStatus
    • Activez le chiffrement côté serveur pour les rapports.
  6. Cliquez sur Save changes pour activer la configuration d’inventaire.

Le rapport est généralement généré dans les 24 heures suivant la fin de la configuration. Téléchargez les résultats dès qu’ils sont prêts et analysez les données fournies.

Étape 7 : détecter les dérives grâce aux journaux d’accès et aux contrôles de configuration

Dès que vous disposez de vos données, examinez les journaux d’accès au serveur pour repérer les envois non chiffrés refusés et les principaux inattendus utilisant des clés. S’ils sont trop nombreux, un problème plus profond mérite peut-être votre attention.

Analysez régulièrement votre environnement pour vérifier qu’aucun bucket n’est dépourvu de chiffrement par défaut ou doté de politiques trop permissives. Si vous en trouvez un, ouvrez un ticket avec un responsable et une date d’échéance afin que le problème soit bien résolu.

Étape 8 : tester les accès et les chemins de restauration

Lisez un objet témoin pour vérifier que le déchiffrement fonctionne. Si des fichiers non chiffrés passent encore, reprenez vos configurations. Pour SSE-KMS, vérifiez que l’utilisation de la clé apparaît bien dans les journaux. Enregistrez les commandes, les horodatages et de courtes sorties.

Étape 9 : encadrer les changements

Seul le personnel autorisé doit modifier la configuration des buckets. Et chaque modification de la politique de bucket ou de clé doit avoir un objectif, un périmètre d’impact, des notes de retour arrière et une date d’expiration pour les changements temporaires. Consignez tous ces éléments pour favoriser la transparence et la responsabilisation.

Étape 10 : publier un dossier de preuves mensuel

Créez un dossier pour chaque tenant. Ces rapports doivent présenter la couverture issue de l’inventaire, le nombre d’envois non chiffrés refusés, des synthèses d’utilisation des clés, les différences de politiques ainsi que les exceptions ouvertes avec leurs responsables et leur date d’expiration.

Limitez le rapport à une seule page pour que les dirigeants puissent le parcourir facilement et en retirer l’essentiel.

Tableau récapitulatif des bonnes pratiques de gestion de la configuration du chiffrement côté serveur des buckets AWS S3

PratiqueObjectifBénéfice
Un mode par bucketFaire correspondre le contrôle à la classe de données.Une conception alignée sur le risque et un coût clair.
Chiffrement par défaut et politique de refusRendre le chiffrement non facultatif sur vos buckets.Une couverture homogène et des audits simples.
Gouvernance KMS stricteLimiter les personnes en mesure de déchiffrer.Une séparation des tâches et une traçabilité.
Inventaire et journauxAssurer une vérification continue.Des QBR rapides et des contrôles de conformité efficaces.
Dossier mensuelObtenir un récit prêt pour la direction.Davantage de confiance et un temps de revue réduit.

Idées d’intégration NinjaOne pour AWS Key Management Service

Les outils NinjaOne vous permettent de :

  • utiliser des tâches planifiées pour collecter les fichiers CSV exportés et de courts échantillons de journaux depuis les comptes AWS ;
  • étiqueter les artefacts par tenant et par bucket ;
  • conserver le dossier mensuel et la documentation client destinée aux QBR dans la plateforme de documentation NinjaOne.

Guide de démarrage rapide

NinjaOne peut vous aider à mettre en place le chiffrement côté serveur d’Amazon S3 avec des garde-fous, grâce à plusieurs fonctionnalités :

Fonctionnalités NinjaOne pour les garde-fous de chiffrement S3

1. Application par politiques

NinjaOne vous permet de créer des politiques capables d’imposer des configurations de sécurité dans tout votre environnement. Même si la solution ne gère pas directement les paramètres de chiffrement d’AWS S3, vous pouvez utiliser les politiques NinjaOne pour :

  • vérifier que les agents disposent des configurations adéquates pour interagir avec des buckets S3 chiffrés ;
  • déployer des scripts qui contrôlent les paramètres de chiffrement des buckets S3 ;
  • créer des alertes lorsque des données non chiffrées sont détectées.

2. Surveillance et alertes

NinjaOne offre des capacités de surveillance utiles aux garde-fous de chiffrement S3 :

  • surveiller la connectivité des agents aux services S3 ;
  • alerter en cas de violation des politiques liées à la protection des données ;
  • suivre l’état du chiffrement à l’aide de scripts personnalisés.

3. Automatisation

Les scripts NinjaOne vous permettent d’automatiser :

  • la vérification des paramètres de chiffrement des buckets S3 ;
  • l’application des politiques de chiffrement sur plusieurs comptes AWS ;
  • les actions de remédiation lorsque les exigences de chiffrement ne sont pas respectées.

4. Intégration avec AWS

NinjaOne s’intègre aux services AWS, ce qui vous permet de :

  • surveiller la configuration des ressources AWS ;
  • réagir aux événements de sécurité liés aux accès S3 ;
  • mettre en place des garde-fous via des services natifs AWS que NinjaOne peut surveiller.

Gérer correctement le chiffrement côté serveur d’AWS S3 avec les bonnes connaissances

Le chiffrement côté serveur de S3 constitue un garde-fou de sécurité fiable dès lors que vous choisissez le bon mode, l’imposez par défaut, gouvernez les clés avec rigueur et vérifiez la couverture à l’aide de l’inventaire et des journaux. En publiant un simple dossier mensuel, vous rendez le contrôle auditable et maintenez l’alignement des parties prenantes.

Sujets connexes :

FAQs

Optez pour SSE-KMS au lieu de SSE-S3 lorsque vous avez besoin d’un contrôle d’accès granulaire, de journaux d’audit et d’une gestion des clés allant au-delà de ce que S3 propose par défaut.

Oui. Vous devez tout de même activer le chiffrement par défaut, même si vos politiques de bucket S3 refusent les envois non chiffrés. Le chiffrement par défaut fait office de filet de sécurité : si un utilisateur ou une application envoie des données sans préciser les en-têtes de chiffrement, S3 applique automatiquement le chiffrement défini par défaut (SSE-S3 ou SSE-KMS).

Chiffrement côté serveur (SSE) :

  • le chiffrement a lieu au sein d’AWS S3 avant l’écriture des données sur le disque ;
  • AWS gère les clés via SSE-S3 (AES-256) ou SSE-KMS (clés gérées par KMS) ;
  • idéal pour la plupart des entreprises, car il offre une gestion automatisée des clés, une journalisation et une intégration avec la GIA (gestion des identités et des accès) et KMS.

Chiffrement côté client (CSE) :

  • les données sont chiffrées avant leur envoi vers S3, via une application cliente ou un SDK ;
  • vous maîtrisez la création, le stockage et la rotation des clés indépendamment d’AWS ;
  • ce mode offre un contrôle maximal, mais augmente la charge opérationnelle et la complexité.

AWS recommande d’effectuer chaque année la rotation des clés KMS gérées par le client, afin de s’aligner sur les référentiels de sécurité et de conformité tels que NIST 800-57, ISO 27001 et CIS AWS Foundations Benchmark.

You might also like

Prêt à simplifier les aspects les plus complexes de l'informatique et de la sécurité ?