Comment sécuriser un bucket S3 sur AWS ?
12 juillet 2024
0 minutes de lectureAmazon Web Services (AWS) Simple Storage Service (S3) est devenu un pilier du stockage cloud. Il offre évolutivité, haute disponibilité et performances, ce qui en fait un choix privilégié pour les entreprises de toutes tailles. Cependant, comme pour tout service cloud, la sécurité est primordiale. D’où la question : « comment sécuriser un bucket S3 ? »
Sécuriser vos buckets S3 ne consiste pas seulement à protéger vos données contre les accès non autorisés. Il s’agit aussi de garantir la conformité à diverses normes et réglementations de sécurité. Une seule erreur de configuration de sécurité peut entraîner une violation de données, des pertes financières et nuire à la réputation de votre entreprise.
Sécuriser vos buckets S3 sur AWS est une étape essentielle de la sécurité cloud. Dans cet article, nous allons présenter des mesures concrètes pour sécuriser vos buckets S3 et les rendre conformes aux bonnes pratiques. Nous aborderons notamment les vulnérabilités des buckets S3, les bonnes pratiques de sécurité et l’automatisation de la sécurisation des buckets S3 avec Snyk.
Comprendre les vulnérabilités des buckets S3
Bien qu’ils offrent une solution de stockage robuste et évolutive, les buckets S3 peuvent également présenter un risque de sécurité s’ils ne sont pas correctement configurés et surveillés. Examinons certaines vulnérabilités courantes des buckets S3 et les conséquences possibles de l’exposition d’un bucket S3.
Autorisations de bucket mal configurées
Les autorisations mal configurées figurent parmi les vulnérabilités les plus courantes des buckets S3. Cela se produit lorsqu’un bucket S3 est involontairement ouvert au public, permettant à quiconque d’accéder aux données qu’il contient, de les télécharger, voire de les supprimer.
Par exemple, une stratégie de bucket autorisant l’accès public peut ressembler à ceci :
Dans la stratégie ci-dessus, le champ Principal est défini sur *, ce qui signifie « tout le monde », et le champ Action sur s3:*, ce qui signifie « toute action ». Il s’agit clairement d’une autorisation de bucket mal configurée.
Données non chiffrées
Une autre vulnérabilité courante consiste à stocker des données dans des buckets S3 sans chiffrement. Ainsi, si un attaquant accède au bucket, il peut facilement lire les données. AWS propose des options de chiffrement côté serveur et côté client pour vous aider à protéger vos données. Il est important de veiller à ce que les données sensibles de vos buckets S3 soient chiffrées au repos.
Snyk peut vous aider à détecter les erreurs de configuration cloud dans Terraform et d’autres fichiers de définition cloud pris en charge. Par exemple, il peut détecter une erreur de configuration cloud dans laquelle la stratégie du bucket S3 n’interdit pas les requêtes utilisant HTTP :

Absence de journalisation et de surveillance
Sans journalisation ni surveillance adéquates, il peut être difficile de détecter les accès non autorisés ou les modifications apportées à vos buckets S3. AWS propose des services comme CloudTrail et CloudWatch pour vous aider, mais ils doivent être correctement configurés et activement surveillés. Sans ces mesures, il est facile de passer à côté des signes d’une éventuelle faille de sécurité ou d’un accès non autorisé aux données.
Bonnes pratiques pour sécuriser les buckets S3
L’exposition d’un bucket S3 peut avoir de graves conséquences. Selon les données qu’il contient, elle peut entraîner des violations de données, la perte de propriété intellectuelle, des sanctions réglementaires et nuire à la réputation de votre organisation.
Pour éviter ces vulnérabilités et sécuriser vos buckets S3, il est important de suivre les bonnes pratiques de sécurité S3 : chiffrer les données, configurer correctement les autorisations des buckets, et mettre en place la journalisation et la surveillance. Des outils comme Snyk peuvent également vous aider à détecter les erreurs de configuration cloud et à corriger les vulnérabilités de sécurité de votre infrastructure cloud.
Sécuriser votre bucket S3 est une étape essentielle pour garantir la sécurité de vos données. Nous allons ici passer en revue les bonnes pratiques pour sécuriser un bucket S3 sur AWS.
Garantir des autorisations de bucket adéquates
Pour sécuriser un bucket S3 sur AWS, l’une des étapes les plus importantes consiste à définir des autorisations adéquates. Il faut notamment comprendre et appliquer le principe du moindre privilège, utiliser efficacement les rôles AWS Identity and Access Management (IAM) et recourir aux stratégies de bucket pour restreindre les accès.
Principe du moindre privilège : explication et mise en œuvre
Le principe du moindre privilège (PoLP) est un concept de sécurité informatique selon lequel un utilisateur ne dispose que du niveau d’accès minimal nécessaire pour accomplir ses tâches. Appliqué aux buckets AWS S3, cela signifie qu’il faut accorder uniquement les autorisations nécessaires aux utilisateurs, rôles ou services qui doivent accéder à votre bucket.
Voici un exemple de sécurisation d’un bucket S3 en appliquant le PoLP avec AWS IAM :
Dans cette stratégie, nous autorisons uniquement l’utilisateur root du compte indiqué à lire les objets de my_secure_bucket. Aucune autre autorisation n’est accordée, conformément au principe du moindre privilège.
Comprendre et utiliser efficacement les rôles AWS Identity and Access Management (IAM)
Les rôles AWS IAM permettent d’accorder des autorisations de manière sécurisée à des entités de confiance. Au lieu de partager des identifiants de sécurité, vous pouvez accorder des autorisations à des rôles IAM. C’est une méthode plus sûre et évolutive pour gérer les autorisations dans AWS.
Voici un exemple de sécurisation d’un bucket S3 à l’aide des rôles IAM :
Dans cette stratégie, nous accordons toutes les autorisations S3 au rôle IAM my_secure_role pour my_secure_bucket. Nous pouvons ainsi attribuer ce rôle à toute entité qui doit accéder au bucket, sans partager d’identifiants de sécurité.
Conseils pour restreindre l’accès à l’aide des stratégies de bucket
Les stratégies de bucket sont un outil puissant pour gérer l’accès à vos buckets S3. Elles vous permettent de définir des autorisations et des restrictions précises, et donc de sécuriser efficacement vos buckets S3.
Voici quelques conseils pour sécuriser un bucket S3 à l’aide de stratégies de bucket :
Utilisez des conditions pour restreindre l’accès en fonction de l’adresse IP.
Refusez explicitement l’accès aux opérations sensibles, telles que
s3:DeleteObject.Utilisez l’élément
NotActionpour refuser toutes les actions, à l’exception de celles spécifiées.
Pour obtenir des résultats et des recommandations plus détaillés sur la sécurisation de vos buckets S3, créez un compte Snyk gratuit. Snyk propose de nombreuses ressources pédagogiques gratuites et des outils gratuits pour vous aider à sécuriser efficacement votre infrastructure cloud.
Activer le chiffrement par défaut
L’un des moyens les plus efficaces de sécuriser vos buckets S3 consiste à activer le chiffrement par défaut. Depuis 2023, les objets stockés dans les buckets S3 sont chiffrés automatiquement.
Voici comment procéder :
Accédez à la console de gestion AWS, puis ouvrez la console Amazon S3.
Dans la liste des noms de buckets, sélectionnez celui pour lequel vous souhaitez activer le chiffrement par défaut.
Sélectionnez l’onglet Propriétés.
Dans la section Chiffrement par défaut, sélectionnez Modifier.
Sélectionnez Activer.
Dans la liste Type de chiffrement, sélectionnez une méthode de chiffrement.
Sélectionnez Enregistrer les modifications.
Vous pouvez également utiliser AWS CLI pour activer le chiffrement par défaut :
L’exemple de ligne de commande ci-dessus montre comment activer le chiffrement par défaut avec AWS CLI.
Choisir entre les clés gérées par AWS (SSE-S3) et les clés gérées par le client (SSE-KMS)
Pour sécuriser un bucket S3, vous avez deux options principales pour les clés de chiffrement : les clés gérées par AWS (SSE-S3) et les clés gérées par le client (SSE-KMS).
Les clés gérées par AWS (SSE-S3) constituent l’option la plus simple. Avec SSE-S3, Amazon gère les clés et leur protection pour vous. C’est une bonne option si vous souhaitez éviter la complexité liée à la gestion de vos propres clés de chiffrement (rotation des clés, gestion des autorisations et audit de leur utilisation, par exemple).
En revanche, les clés gérées par le client (SSE-KMS) vous offrent davantage de contrôle et de flexibilité. Avec SSE-KMS, vous pouvez créer et gérer vos propres clés de chiffrement, ainsi que contrôler les stratégies qui déterminent leur utilisation. C’est une bonne option si vous devez gérer vos propres clés pour répondre à des exigences de conformité spécifiques.
L’exemple de ligne de commande ci-dessus montre comment activer le chiffrement par défaut à l’aide d’une clé gérée par le client.
Utiliser des stratégies de transport sécurisé
En matière de sécurité cloud, l’un des moyens les plus efficaces de sécuriser les données en transit consiste à imposer HTTPS. HTTPS chiffre les données échangées entre votre navigateur et le serveur, ce qui rend leur interception et leur consultation plus difficiles. Dans ce chapitre, nous verrons comment sécuriser un bucket S3 en imposant HTTPS pour les données en transit et en configurant des stratégies de bucket qui refusent les requêtes non SSL.
Pour imposer HTTPS sur votre bucket S3, vous devez mettre à jour sa stratégie. Voici un exemple de stratégie de bucket qui impose HTTPS :
Dans cette stratégie, nous refusons toutes les actions S3 ("Action": "s3:*") lorsque la requête n’utilise pas HTTPS ("aws:SecureTransport": "false"). Remplacez your-bucket-name par le nom de votre bucket S3.
Mettre en place la journalisation des accès et la surveillance
Pour savoir comment sécuriser un bucket S3, il est essentiel de mettre en place une journalisation et une surveillance robustes. Vous pourrez ainsi voir les activités dans vos buckets S3 et détecter les éventuelles menaces ou failles de sécurité. Dans cette section, nous verrons comment activer et configurer la journalisation des accès aux buckets S3, utiliser AWS CloudTrail pour surveiller l’activité de l’API et configurer des alarmes pour détecter les activités suspectes avec Amazon CloudWatch.
Il est important de noter que le chiffrement des buckets S3 (comme SSE-S3) entraîne un surcoût et n’est pas gratuit.
La journalisation des accès est essentielle pour sécuriser un bucket S3. Elle enregistre toutes les requêtes adressées à votre bucket S3 et stocke les journaux dans un autre bucket S3. Voici comment l’activer et la configurer :
Accédez à la console de gestion AWS, puis ouvrez la console Amazon S3.
Dans la liste des noms de buckets, sélectionnez celui pour lequel vous souhaitez activer la journalisation.
Sélectionnez l’onglet Propriétés.
Dans la section Journalisation, sélectionnez Modifier.
Dans la section Bucket de destination des journaux, saisissez le nom du bucket dans lequel vous souhaitez les stocker.
(Facultatif) Dans la section Préfixe cible, vous pouvez ajouter un préfixe. Cette option est utile si vous souhaitez stocker les journaux de différents buckets dans le même bucket de destination.
Sélectionnez Enregistrer les modifications.
Dans la commande ci-dessus, logging.json est un fichier contenant les éléments suivants :
Utiliser AWS CloudTrail pour surveiller l’activité de l’API
AWS CloudTrail est un service qui permet d’assurer la gouvernance, la conformité, l’audit opérationnel et l’audit des risques de votre compte AWS. Il fournit l’historique des événements liés à l’activité de votre compte AWS, y compris les actions effectuées depuis la console de gestion AWS, les SDK AWS, les outils en ligne de commande et d’autres services AWS.
Pour activer CloudTrail pour votre bucket S3, procédez comme suit :
Ouvrez la console CloudTrail.
Sélectionnez Pistes, puis Créer une piste.
Dans le champ Nom de la piste, saisissez un nom pour la piste.
Pour appliquer la piste à toutes les régions, sélectionnez Oui afin de capturer les événements de toutes les régions.
Sous Événements de gestion, sélectionnez Événements de lecture/écriture pour choisir les événements de gestion à consigner. Si vous souhaitez vous concentrer uniquement sur les événements de données, vous pouvez ne pas configurer cette option ou sélectionner Aucun.
Configuration des événements de données :
Faites défiler la page jusqu’à la section Événements de données.
Cliquez sur Ajouter un bucket S3. Indiquez le bucket S3 pour lequel vous souhaitez consigner les événements de données.
Vous pouvez consigner les événements de données de lecture, d’écriture ou tous les événements. Pour une surveillance complète, sélectionnez Tous.
Indiquez le bucket S3 dans lequel vous souhaitez recevoir les journaux CloudTrail.
Pour le bucket S3, sélectionnez un bucket existant ou créez-en un pour stocker vos journaux CloudTrail.
Sélectionnez Créer.
Vous pouvez également utiliser AWS CLI pour créer une piste :
Configurer des alarmes pour détecter les activités suspectes avec Amazon CloudWatch
Amazon CloudWatch est un service de surveillance et d’observabilité conçu pour les ingénieurs DevOps, les développeurs, les ingénieurs de fiabilité des sites (SRE) et les responsables informatiques. CloudWatch vous fournit des données et des informations exploitables pour surveiller vos applications, comprendre et gérer les changements de performances à l’échelle du système, optimiser l’utilisation des ressources et obtenir une vue unifiée de l’état opérationnel.
Pour créer une alarme qui envoie un message Amazon SNS lorsqu’elle change d’état, vous pouvez utiliser la commande put-metric-alarm comme suit :
Cette commande configure une alarme qui surveille le nombre d’objets dans le compartiment my-bucket. Si le nombre d’objets dépasse 1 000 sur une période de 5 minutes, un message SNS est envoyé.
La mise en œuvre de ces étapes renforcera considérablement la sécurité de vos compartiments S3. N’oubliez pas que sécuriser un compartiment S3 n’est pas une tâche ponctuelle, mais un processus continu qui exige une surveillance et des mises à jour régulières. Pour obtenir de l’aide supplémentaire afin de sécuriser votre infrastructure cloud, pensez à utiliser Snyk IaC, un outil puissant qui vous aide à détecter et à corriger les vulnérabilités de sécurité dans votre infrastructure cloud.
Auditer régulièrement vos compartiments S3
L’audit régulier de vos compartiments S3 est une autre étape essentielle pour garantir la sécurité de vos ressources AWS. Ce processus consiste à utiliser des outils et des services spécifiques, ainsi qu’à examiner périodiquement les autorisations des compartiments et leur exposition publique.
Plusieurs outils et services peuvent vous aider à auditer vos compartiments S3. AWS propose quelques services intégrés que vous pouvez utiliser à cette fin.
AWS Trusted Advisor : cet outil fournit des conseils en temps réel pour vous aider à provisionner vos ressources conformément aux bonnes pratiques AWS. Les vérifications de Trusted Advisor contribuent à optimiser votre infrastructure AWS, à renforcer la sécurité et les performances, à réduire les coûts globaux et à surveiller les limites de service.
AWS Config : ce service offre une vue détaillée de la configuration des ressources AWS dans votre compte AWS. Il indique notamment les relations entre les ressources et leur configuration passée, afin de vous permettre de suivre l’évolution des configurations et de ces relations au fil du temps.
En complément des outils intégrés d’AWS, des outils comme Snyk IaC peuvent effectuer des vérifications de sécurité supplémentaires et détecter les erreurs de configuration du cloud.
Examen périodique des autorisations des compartiments et de leur exposition publique
L’examen régulier des autorisations de vos compartiments S3 est essentiel pour « sécuriser un compartiment S3 ». Il s’agit de vérifier qui peut accéder à vos compartiments et à quel niveau.
Vous devez également vérifier l’exposition publique de vos compartiments. Il est possible de configurer les compartiments S3 pour autoriser l’accès public, mais il faut éviter de le faire, sauf en cas de nécessité absolue.
Si l’accès public est nécessaire, veillez à mettre en place des mesures de sécurité supplémentaires, comme des stratégies de compartiment qui limitent l’accès à des adresses IP spécifiques.
L’audit et l’examen réguliers de vos compartiments S3 sont essentiels au maintien d’un environnement AWS sécurisé. En utilisant les outils et les pratiques présentés dans cet article, vous pouvez sécuriser vos compartiments S3 et protéger vos données.
Automatiser la sécurité des compartiments S3 avec Snyk
Vous souhaitez savoir comment sécuriser un compartiment S3 avec Snyk IaC ? Snyk propose une solution automatisée qui détecte et corrige les erreurs de configuration des compartiments S3, pour rendre votre environnement cloud plus sûr et plus résilient.
Fonctionnalités de sécurité cloud de Snyk
Les fonctionnalités de sécurité cloud de Snyk offrent une solution complète pour sécuriser votre environnement cloud. Elles assurent une surveillance continue de la sécurité, détectent les erreurs de configuration et proposent des corrections automatisées. Snyk est ainsi l’outil idéal pour les équipes DevOps et Sécurité qui souhaitent automatiser leurs processus de sécurité cloud.
Automatiser la détection et la correction des erreurs de configuration des compartiments S3 avec Snyk
Les erreurs de configuration des compartiments S3 peuvent entraîner des violations de données et des accès non autorisés. Snyk peut automatiser la détection et la correction de ces erreurs. Grâce à Snyk Infrastructure as Code (IaC) et à ses règles de sécurité complètes, les organisations peuvent renforcer considérablement leur posture de sécurité tout en limitant les interventions manuelles.
Étape 1 : Importer des projets IaC dans Snyk
La première étape consiste à importer vos projets Infrastructure as Code dans Snyk. Snyk peut alors analyser vos fichiers de configuration d’infrastructure, notamment Terraform, les manifestes Kubernetes, AWS CloudFormation et bien d’autres, afin d’y détecter d’éventuels problèmes de sécurité.
Accédez à votre tableau de bord Snyk, puis sélectionnez Projects.
Cliquez sur le menu déroulant Add projects, puis choisissez votre gestionnaire de contrôle de code source (SCM), par exemple GitHub.
Sélectionnez les dépôts contenant vos configurations d’infrastructure AWS, puis ajoutez-les à Snyk pour les analyser.
Prenons la définition de compartiment S3 suivante, dans un fichier Terraform v4 nommé s3.tf :
Si vous analysez ce fichier avec snyk iac test s3.tf, un paramétrage permissif des ACL sera signalé : il s’agit d’un élément à surveiller pour garantir la sécurité du compartiment S3. De même, l’interface utilisateur de Snyk affiche les résultats si vous utilisez l’application Snyk.
Snyk réanalyse automatiquement vos projets une fois par semaine, pour assurer une surveillance continue de la sécurité.
Étape 2 : Détecter et corriger les erreurs de configuration
Les capacités d’analyse IaC de Snyk couvrent différents types de ressources AWS, notamment aws_s3_bucket et aws_s3_bucket_policy. Lors de l’analyse, Snyk détecte les erreurs de configuration, comme les compartiments S3 non chiffrés ou dépourvus de blocages adéquats contre l’accès public, puis les signale en indiquant :
Le niveau de gravité des problèmes.
Un extrait du code vulnérable.
Des conseils détaillés pour y remédier.
Pour les compartiments S3, Snyk peut détecter des problèmes tels que l’activation de l’accès public, susceptible d’entraîner des violations de données. En suivant les conseils de correction de Snyk, vous pouvez résoudre rapidement ces problèmes.
Lorsque vous consultez les fichiers de configuration Infrastructure as Code importés depuis des SCM comme GitHub ou Bitbucket, Snyk vous signale visuellement les erreurs de configuration cloud susceptibles d’entraîner une faille de sécurité. C’est notamment le cas de la configuration de compartiment S3 suivante, qui ne restreint pas le contrôle des accès publics au compartiment.

Étape 3 : Surveillance et correction continues
Snyk ne se contente pas de détecter les problèmes : il vous aide aussi à les résoudre, ce qui réduit considérablement le temps et les efforts nécessaires. Grâce aux tests récurrents de Snyk et à son intégration à votre pipeline CI/CD, vous pouvez protéger en continu votre environnement AWS contre les erreurs de configuration.
Les équipes de sécurité peuvent également affiner les paramètres de gravité des erreurs de configuration cloud signalées. Elles peuvent ainsi définir une politique de sécurité Infrastructure as Code adaptée aux besoins de leur équipe et à leur posture de sécurité :

En intégrant Snyk à votre environnement AWS, vous adoptez une posture de sécurité proactive qui automatise la détection, la surveillance et la correction des erreurs de configuration dans vos compartiments S3 et vos autres ressources AWS. Cette intégration renforce votre sécurité tout en simplifiant la conformité et la gouvernance de votre infrastructure cloud.
Quelles sont les prochaines étapes pour sécuriser les compartiments AWS S3 ?
Les mesures de sécurité évoquées, comme l’activation du versionnage des compartiments, l’utilisation de stratégies de compartiment et le chiffrement des données, ne sont pas de simples bonnes pratiques : elles sont indispensables pour protéger vos données. Leur mise en œuvre peut réduire considérablement les risques d’accès non autorisé à vos compartiments S3.
Pour conclure notre guide sur la sécurisation d’un compartiment S3, n’oubliez pas que la sécurité est un processus continu. Le paysage de la sécurité cloud évolue sans cesse : il est donc essentiel de se tenir à jour. Pour vous aider à poursuivre la sécurisation de vos compartiments AWS S3, voici quelques ressources supplémentaires qui pourraient vous être utiles :
Leçon Snyk Learn sur les vulnérabilités SSRF : la falsification de requête côté serveur (SSRF) est une vulnérabilité courante qui peut affecter votre infrastructure cloud. Comprendre le fonctionnement des vulnérabilités SSRF peut vous aider à mieux sécuriser vos compartiments S3. La leçon de Snyk Learn sur les vulnérabilités SSRF présente ce sujet en détail.
Documentation AWS sur la sécurité des compartiments S3 : AWS propose une documentation complète sur la sécurisation des compartiments S3. Vous y trouverez des bonnes pratiques, des tutoriels et des explications détaillées sur les fonctionnalités de sécurité. C’est une ressource précieuse pour toute personne souhaitant renforcer la sécurité de ses compartiments S3.
Sécuriser vos compartiments S3 n’a rien d’insurmontable. Des outils comme Snyk peuvent vous aider à les sécuriser et à préserver la sécurité de vos applications. Alors, n’attendez pas qu’il soit trop tard : commencez dès aujourd’hui à sécuriser vos compartiments S3. N’oubliez pas que la meilleure défense, c’est l’attaque. Dans le domaine de la sécurité cloud, cela signifie sécuriser vos compartiments S3 de manière proactive, avant qu’ils ne deviennent une cible.
