Skip to content

Securing your S3 buckets: essential best practices

Security best practices guide for Amazon S3: encryption, access control, versioning and monitoring to protect your data.

Updated on 14 August 2023

Protect your data in the cloud

Amazon S3 stores billions of objects pour des millions de clients. Sa fiabilité est de 99,999999999% (onze neuf), ce qui signifie que vos données ne seront pas perdues. Cependant, la sécurité de vos données dépend de votre configuration. Un bucket S3 mal configuré peut exposer des sensitive data. Ce guide couvre les bonnes pratiques essentielles pour sécuriser vos buckets S3.

Block public access

The first measure est d’activer S3 Block Public Access au niveau du compte AWS. This setting prevents any attempt de rendre un bucket ou un objet public, même si une bucket policy ou une ACL le permet. Rendez-vous dans la console S3, cliquez sur “Block Public Access settings for this account” et activez les quatre options.

This measure protects contre les erreurs de configuration qui sont la cause la plus fréquente de fuites de données sur S3. Les cas médiatisés de données exposées sur S3 sont presque toujours dus à un accès public activé par erreur.

Encrypt your data

Since January 2023, S3 chiffre tous les nouveaux objets par défaut avec SSE-S3. Ce chiffrement protège les data at rest sur les disques d’Amazon. Pour un contrôle supplémentaire, utilisez SSE-KMS qui vous permet de gérer vos propres clés de chiffrement via AWS Key Management Service.

SSE-KMS offers additional advantages : rotation automatique des clés, journalisation de chaque utilisation de clé dans CloudTrail et possibilité de révoquer l’accès en désactivant la clé. Pour les données les plus sensibles, le client-side encryption (CSE) chiffre les données avant de les envoyer à S3.

Enable versioning

Versioning conserve toutes les versions de chaque objet. Une suppression accidentelle ne supprime pas réellement l’objet mais crée un marqueur de suppression. You can restaurer n’importe quelle version précédente. Un écrasement involontaire est réversible.

Combine le versioning avec des règles de cycle de vie pour contrôler les coûts. Old versions can be moved to S3 Glacier après 30 jours et supprimées après 90 jours. This approach offre une protection contre les erreurs tout en maîtrisant les coûts de stockage.

Control access with policies

Bucket policies and IAM policies control qui peut accéder à quels objets et avec quelles permissions. Appliquez le principe du least privilege : chaque utilisateur et chaque service ne dispose que des permissions strictement nécessaires.

Use les conditions dans les policies pour restreindre l’accès par adresse IP, par VPC ou par protocole (HTTPS uniquement). La condition aws:SecureTransport impose l’utilisation de HTTPS pour toutes les requêtes, ce qui protège les data in transit.

Monitor with CloudTrail and S3 Access Logs

AWS CloudTrail records every API call vers S3 : création de bucket, modification de policy, accès aux objets. Ces logs sont essentiels pour l’audit et la détection d’activités suspectes.

S3 Server Access Logging records every request vers un bucket : qui a accédé à quel objet, quand et depuis quelle adresse IP. Ces logs complètent CloudTrail avec des informations plus détaillées sur les accès aux données.

LCMH accompagne les entreprises in securing their AWS infrastructure.

For a complete guide on secure web hosting, read our article on l’hébergement de sites statiques sur AWS.


Sources

  1. AWS, Security Best Practices for Amazon S3. docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html
  2. AWS, S3 Block Public Access. docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html
  3. AWS, S3 Default Encryption. docs.aws.amazon.com/AmazonS3/latest/userguide/default-bucket-encryption.html

Frequently asked questions

S3 est-il chiffré par défaut ?
Oui, depuis janvier 2023, tous les nouveaux objets stockés dans S3 sont chiffrés par défaut avec SSE-S3 (chiffrement côté serveur avec des clés gérées par S3). You can aussi utiliser SSE-KMS pour gérer vos propres clés de chiffrement via AWS KMS.
Comment empêcher l'accès public accidentel à un bucket S3 ?
Enable S3 Block Public Access au niveau du compte AWS. Ce paramètre bloque toute tentative de rendre un bucket ou un objet public, même si une policy le permet. C'est la mesure la plus efficace contre les fuites de données accidentelles.
Faut-il activer le versioning sur S3 ?
Oui, le versioning protège contre les suppressions accidentelles et les écrasements. Chaque modification crée une nouvelle version de l'objet. You can restaurer n'importe quelle version précédente. Combine le versioning avec des règles de cycle de vie pour contrôler les coûts de stockage.

Related Articles