Exemples de stratégie de compartiment - Amazon Simple Storage Service

Exemples de stratégie de compartiment

Cette section présente quelques exemples de cas d'utilisation standard de stratégies de compartiment. Les politiques utilisent les chaînes DOC-EXAMPLE-BUCKET dans la valeur de ressource. Pour tester ces stratégies, vous devez remplacer ces chaînes par le nom de votre compartiment. Pour plus d'informations sur les stratégies de compartiment, consultez la rubrique Utilisation des stratégies de compartiment. Pour en savoir plus sur le langage de politique, consultez Stratégies et autorisations dans Amazon S3.

Une stratégie de compartiment est une stratégie basée sur les ressources que vous pouvez utiliser pour accorder des autorisations d'accès à votre compartiment et aux objets qu'il contient. Seul le propriétaire du compartiment peut associer une stratégie à un compartiment. Les autorisations attachées au compartiment s'appliquent à tous les objets du compartiment appartenant au compte propriétaire du compartiment. Ces autorisations ne s'appliquent pas aux objets appartenant à d'autres Comptes AWS.

Par défaut, lorsqu'un autre Compte AWS télécharge un objet dans votre compartiment S3, ce compte (le rédacteur d'objet) est propriétaire de l'objet, y a accès et peut en accorder l'accès à d'autres utilisateurs via des ACL. Vous pouvez utiliser Object Ownership afin de modifier ce comportement par défaut, pour que les ACL soient désactivées et que vous, en tant que propriétaire du compartiment, possédiez automatiquement tous les objets de votre compartiment. Par conséquent, le contrôle d'accès à vos données est basé sur des stratégies, telles que les stratégies IAM, les stratégies de compartiment S3, les stratégies de point de terminaison de cloud privé virtuel (VPC) et les politiques de contrôle des services (SCP) AWS Organizations. Pour plus d'informations, consultez Consultez Contrôle de la propriété des objets et désactivation des listes ACL pour votre compartiment.

Pour plus d'informations sur les stratégies de compartiment, consultez Utilisation des stratégies de compartiment.

Note

Les stratégies de compartiment sont limitées à une taille de 20 Ko.

Vous pouvez utiliser l'outil Générateur de stratégies AWS pour créer une stratégie de compartiment pour votre compartiment Amazon S3. Vous pouvez ensuite utiliser les documents générés pour définir votre stratégie de compartiment à l'aide de la console Amazon S3, différents outils tiers ou votre application.

Important

Lors du test des autorisations à l'aide de la console Simple Storage Service (Amazon S3), vous devez accorder des autorisations supplémentaires requises par la console (autorisations s3:ListAllMyBuckets, s3:GetBucketLocation et s3:ListBucket). Pour afficher un exemple qui octroie les autorisations aux utilisateurs et qui les teste en utilisant la console, consultez Contrôle de l'accès à un compartiment avec des stratégies d'utilisateur.

Octroi d'autorisations à plusieurs comptes avec des conditions supplémentaires

L'exemple de stratégie suivant octroie les autorisations s3:PutObject et s3:PutObjectAcl à plusieurs Comptes AWS, et exige que toute demande de telles opérations inclue la liste de contrôle d'accès (ACL) intégrée public-read. Pour plus d'informations, consultez Actions Amazon S3 et Exemples de clés de condition Amazon S3.

Avertissement

Soyez vigilant lors de l'octroi de l'accès anonyme à votre compartiment Amazon S3 ou de la désactivation des paramètres du blocage de l'accès public. Lorsque vous accordez un accès anonyme, tout le monde peut accéder à votre compartiment. Il est recommandé de ne jamais autoriser un accès anonyme à votre compartiment Amazon S3 à moins que vous n'en ayez spécifiquement besoin, comme dans le cas de l'hébergement de site web statique.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AddCannedAcl", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root", "arn:aws:iam::444455556666:root" ] }, "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition": { "StringEquals": { "s3:x-amz-acl": [ "public-read" ] } } } ] }

Octroi d'une autorisation en lecture seule à un utilisateur anonyme

L'exemple suivant de stratégie octroie l'autorisation s3:GetObject à tous les utilisateurs anonymes publics. (Pour obtenir la liste des autorisations et des opérations qu'elles autorisent, consultez Actions Amazon S3.) Cette autorisation permet à quiconque de lire les données d'objet, ce qui est utile quand vous configurez un compartiment en tant que site Web et voulez que chacun soit en mesure de lire les objets figurant dans ce compartiment. Avant d'utiliser une stratégie de compartiment pour accorder l'autorisation en lecture seule à un utilisateur anonyme, vous devez désactiver les paramètres de blocage de l'accès public pour votre compartiment. Pour de plus amples informations, veuillez consulter Définition des autorisations pour l'accès au site web.

Avertissement

Soyez vigilant lors de l'octroi de l'accès anonyme à votre compartiment Amazon S3 ou de la désactivation des paramètres du blocage de l'accès public. Lorsque vous accordez un accès anonyme, tout le monde peut accéder à votre compartiment. Il est recommandé de ne jamais autoriser un accès anonyme à votre compartiment Amazon S3 à moins que vous n'en ayez spécifiquement besoin, comme dans le cas de l'hébergement de site web statique.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublicRead", "Effect": "Allow", "Principal": "*", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ] } ] }

Limitation de l'accès à des adresses IP spécifiques

Dans l'exemple suivant, les autorisations nécessaires pour effectuer des opérations Amazon S3 sur des objets dans le compartiment S3 spécifié sont refusées, sauf si la demande provient de la plage d'adresses IP spécifiée dans la condition.

Cette condition identifie 54.240.143.0/24 comme la plage d'adresses Internet Protocol version 4 (IPv4) autorisées.

Le bloc Condition utilise la condition NotIpAddress et la clé de condition aws:SourceIp, qui est une clé de condition à l'échelle d'AWS. Pour de plus amples informations sur l'utilisation de ces clés de condition, consultez la section Exemples de clés de condition Amazon S3. Les valeurs IPv4 aws:SourceIp font appel à la notation CIDR standard. Pour de plus amples informations, veuillez consulter Références des éléments de stratégie JSON IAM dans le Guide de l'utilisateur IAM.

Avertissement

Avant d'employer cette politique, remplacez la plage d'adresses IP 54.240.143.0/24 dans cet exemple par une valeur appropriée pour votre cas d'utilisation. Dans le cas contraire, vous perdrez la possibilité d'accéder à votre compartiment.

{ "Version": "2012-10-17", "Id": "S3PolicyId1", "Statement": [ { "Sid": "IPAllow", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ], "Condition": { "NotIpAddress": { "aws:SourceIp": "54.240.143.0/24" } } } ] }

Autorisation des adresses IPv4 et IPv6

Lorsque vous commencez à utiliser des adresses IPv6, nous vous recommandons de mettre à jour toutes les stratégies de votre organisation en y incluant des plages d'adresses IPv6, en plus des plages IPv4 existantes, afin de garantir le bon fonctionnement des stratégies lors de la transition vers IPv6.

L'exemple de stratégie de compartiment ci-dessous montre comment combiner des plages d'adresses IPv4 et IPv6 pour couvrir la totalité des adresses IP valides de l'organisation. Dans cet exemple, la politique autoriserait l'accès aux adresses IP 54.240.143.1 et 2001:DB8:1234:5678::1 et le refuserait aux adresses 54.240.143.129 et 2001:DB8:1234:5678:ABCD::1.

Les valeurs IPv6 pour aws:SourceIp doivent être au format CIDR standard. Pour IPv6, nous prenons en charge l'utilisation de :: pour représenter une plage de zéros (par exemple : 2032001:DB8:1234:5678::/64). Pour de plus amples informations, veuillez consulter Opérateurs de condition d'adresse IP dans le Guide de l'utilisateur IAM.

Avertissement

Remplacez les plages d'adresses IP de cet exemple par des valeurs appropriées pour votre cas d'utilisation avant d'employer cette stratégie. Dans le cas contraire, vous pourriez perdre la possibilité d'accéder à votre compartiment.

{ "Id": "PolicyId2", "Version": "2012-10-17", "Statement": [ { "Sid": "AllowIPmix", "Effect": "Allow", "Principal": "*", "Action": "s3:*", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ], "Condition": { "IpAddress": { "aws:SourceIp": [ "54.240.143.0/24", "2001:DB8:1234:5678::/64" ] }, "NotIpAddress": { "aws:SourceIp": [ "54.240.143.128/30", "2001:DB8:1234:5678:ABCD::/80" ] } } } ] }

Restriction de l'accès à un référent HTTP spécifique

Supposez que vous possédiez un site web avec un nom de domaine (www.example.com ou example.com) avec des liens vers des photos et des vidéos stockées dans votre compartiment Simple Storage Service (Amazon S3), DOC-EXAMPLE-BUCKET. Par défaut, toutes les ressources Amazon S3 sont privées, si bien que seul le Compte AWS qui a créé les ressources peut y accéder. Pour autoriser un accès en lecture à ces objets à partir de votre site Web, vous pouvez ajouter une stratégie de compartiment qui accorde l'autorisation s3:GetObject à condition (à l'aide de la clé aws:Referer) que la demande Get provienne initialement de pages Web spécifiques. La stratégie suivante spécifie la condition StringLike à l'aide de la clé de condition aws:Referer.

{ "Version":"2012-10-17", "Id":"http referer policy example", "Statement":[ { "Sid":"Allow get requests originating from www.example.com and example.com.", "Effect":"Allow", "Principal":"*", "Action":["s3:GetObject","s3:GetObjectVersion"], "Resource":"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition":{ "StringLike":{"aws:Referer":["http://www.example.com/*","http://example.com/*"]} } } ] }

Assurez-vous que les navigateurs que vous utilisez incluent l'en-tête HTTP referer dans la demande.

Avertissement

Nous vous recommandons de faire preuve de prudence lorsque vous utilisez la clé de condition aws:Referer. Il est dangereux d'inclure une valeur d'en-tête de référent connue publiquement. Les tiers non autorisés peuvent utiliser des navigateurs modifiés ou personnalisés pour fournir n'importe quelle valeur aws:Referer de leur choix. Par conséquent, évitez d'utiliser aws:Referer pour empêcher les parties non autorisées d'effectuer des demandes AWS directes.

La clé de condition aws:Referer est fournie uniquement pour permettre aux clients de protéger leur contenu numérique, stocké notamment dans Simple Storage Service (Amazon S3), contre tout référencement sur des sites tiers non autorisés. Pour de plus amples informations, veuillez consulter aws:Referer dans le Guide de l'utilisateur IAM.

Octroi d'autorisations à une OAI Amazon CloudFront

L'exemple de stratégie de compartiment suivant autorise une identité d'accès à l'origine (OAI) CloudFront pour obtenir (lire) tous les objets de votre compartiment Amazon S3. Vous pouvez utiliser une OAI CloudFront pour permettre aux utilisateurs d'accéder aux objets de votre compartiment via CloudFront, mais pas directement via Amazon S3. Pour de plus amples informations, veuillez consulter Restriction de l'accès au contenu Amazon S3 à l'aide d'une identité d'accès à l'origine dans le Manuel du développeur Amazon CloudFront.

La stratégie suivante utilise l'ID de l'OAI comme stratégie de Principal. Pour de plus amples informations sur l'utilisation des stratégies de compartiment S3 pour autoriser l'accès à un OAI CloudFront, veuillez consulter Utilisation de stratégies de compartiment Amazon S3 dans le Manuel du développeur Amazon CloudFront.

Pour utiliser cet exemple :

{ "Version": "2012-10-17", "Id": "PolicyForCloudFrontPrivateContent", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EH1HDMB1FH2TC" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }

Ajout d'une stratégie de compartiment pour exiger une MFA

Amazon S3 prend en charge l'accès aux API protégé par MFA, une fonction qui peut appliquer l'authentification multi-facteur (MFA) pour l'accès à vos ressources Amazon S3. L'authentification multifacteur fournit un niveau de sécurité supplémentaire que vous pouvez appliquer à votre environnement AWS. Il s'agit d'une fonctionnalité de sécurité qui exige des utilisateurs qu'ils prouvent qu'ils détiennent physiquement un appareil MFA en fournissant un code MFA valide. Pour de plus amples informations, veuillez consulter Authentification multifacteur AWS. Vous pouvez exiger l'authentification MFA pour toutes les demandes d'accès à vos ressources Amazon S3.

Vous pouvez appliquer l'exigence d'authentification MFA en utilisant la clé aws:MultiFactorAuthAge dans une stratégie de compartiment. Les utilisateurs AWS Identity and Access Management (IAM) peuvent accéder aux ressources Amazon S3 en utilisant des informations d'identification temporaires émises par AWS Security Token Service (AWS STS). Vous fournissez le code MFA au moment de la demande AWS STS.

Quand Amazon S3 reçoit une demande avec authentification MFA, la clé aws:MultiFactorAuthAge fournit une valeur numérique indiquant le temps écoulé (en secondes) depuis la création des informations d'identification temporaires. Si les autorisations temporaires fournies dans la demande n'ont pas été créées à l'aide d'un appareil MFA, la valeur de cette clé est null (absente). Dans une stratégie de compartiment, vous pouvez ajouter une condition pour vérifier cette valeur, comme illustré dans l'exemple suivant de stratégie de compartiment. Cet exemple de politique refuse toute opération Simple Storage Service (Amazon S3) sur le dossier /taxdocuments dans le compartiment DOC-EXAMPLE-BUCKET si la demande n'est pas authentifiée par MFA. Pour en savoir plus sur MFA, veuillez consulter la section Utilisation de l'authentification multifacteur (MFA) dans AWS du Guide de l'utilisateur IAM.

{ "Version": "2012-10-17", "Id": "123", "Statement": [ { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/taxdocuments/*", "Condition": { "Null": { "aws:MultiFactorAuthAge": true }} } ] }

La condition Null figurant dans le bloc Condition équivaut à true si la valeur de la clé aws:MultiFactorAuthAge est null, indiquant que les informations d'identification de sécurité temporaires figurant dans la demande ont été créées sans la clé MFA.

La stratégie de compartiment suivante est une extension de la stratégie de compartiment précédente. Elle inclut deux déclarations de stratégie. Une déclaration accorde l'autorisation s3:GetObject sur un compartiment (DOC-EXAMPLE-BUCKET) à tous. Une autre déclaration limite encore plus l'accès au dossier DOC-EXAMPLE-BUCKET/taxdocuments du compartiment en requérant l'authentification MFA.

{ "Version": "2012-10-17", "Id": "123", "Statement": [ { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/taxdocuments/*", "Condition": { "Null": { "aws:MultiFactorAuthAge": true } } }, { "Sid": "", "Effect": "Allow", "Principal": "*", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }

Vous pouvez éventuellement utiliser une condition numérique pour limiter la durée pendant laquelle la clé aws:MultiFactorAuthAge est valide, indépendamment de la durée de vie des informations d'identification de sécurité temporaires utilisées pour l'authentification de la demande. Par exemple, la stratégie de compartiment suivante, non seulement exige l'authentification MFA, mais vérifie également le temps écoulé depuis la création de la session temporaire. Cette stratégie refuse toute opération si la valeur de la clé aws:MultiFactorAuthAge indique que la session temporaire a été créée depuis plus d'une heure (3 600 secondes).

{ "Version": "2012-10-17", "Id": "123", "Statement": [ { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/taxdocuments/*", "Condition": {"Null": {"aws:MultiFactorAuthAge": true }} }, { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/taxdocuments/*", "Condition": {"NumericGreaterThan": {"aws:MultiFactorAuthAge": 3600 }} }, { "Sid": "", "Effect": "Allow", "Principal": "*", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }

Octroi d'autorisations inter-comptes pour charger des objets tout en garantissant que le propriétaire du compartiment dispose d'un contrôle total

L'exemple suivant montre comment autoriser un autre Compte AWS à charger des objets dans votre compartiment tout en prenant le contrôle total des objets chargés. Cette politique impose qu'un Compte AWS spécifique (111122223333) ait la possibilité de charger des objets uniquement s'il inclut la liste ACL prête à l'emploi de contrôle total du propriétaire du compartiment lors du chargement. La condition StringEquals figurant dans la politique spécifie la clé s3:x-amz-acl condition pour exprimer cette exigence (voir Exemples de clés de condition Amazon S3).

{ "Version":"2012-10-17", "Statement":[ { "Sid":"PolicyForAllowUploadWithACL", "Effect":"Allow", "Principal":{"AWS":"111122223333"}, "Action":"s3:PutObject", "Resource":"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition": { "StringEquals": {"s3:x-amz-acl":"bucket-owner-full-control"} } } ] }

Octroi d'autorisations pour l'inventaire Amazon S3 et l'analytique Amazon S3

L'inventaire Amazon S3 crée des listes d'objets se trouvant dans le compartiment Amazon S3 et l'exportation analytique Amazon S3 crée des fichiers de sortie contenant les données utilisées dans l'analyse. Le compartiment pour lequel l'inventaire répertorie les objets est appelé compartiment source. Le compartiment dans lequel le fichier d'inventaire est écrit et celui dans lequel le fichier d'exportation analytique est écrit est appelé compartiment de destination. Vous devez créer une stratégie de compartiment pour le compartiment de destination lorsque vous configurez l'inventaire d'un compartiment Amazon S3 et lorsque vous configurez l'exportation analytique. Pour plus d'informations, consultez Inventaire Simple Storage Service (Amazon S3) et Analyses Amazon S3 - Analyse de classe de stockage.

L'exemple de stratégie de compartiment suivante accorde à Amazon S3 l'autorisation d'écrire des objets (PUT) depuis le compte pour le compartiment source vers le compartiment de destination. Vous utilisez une stratégie de compartiment comme celle-ci sur le compartiment de destination lorsque vous configurez l'inventaire Amazon S3 et l'exportation analytique Amazon S3.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "InventoryAndAnalyticsExamplePolicy", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::destinationbucket/*" ], "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:::sourcebucket" }, "StringEquals": { "aws:SourceAccount": "111122223333", "s3:x-amz-acl": "bucket-owner-full-control" } } } ] }

Octroi d'autorisations pour le cadre de stockage Amazon S3

Amazon S3 Storage Lens regroupe vos métriques d'utilisation et d'activité et affiche les informations contenues dans l'instantané d'un compte sur la page d'accueil de la console Amazon S3 (Buckets (compartiments)), dans des tableaux de bord interactifs ou via une exportation de métriques que vous pouvez télécharger au format CSV ou Parquet. Vous pouvez utiliser le tableau de bord pour visualiser les informations et les tendances, signaler les anomalies et recevoir des recommandations pour optimiser les coûts de stockage et appliquer les bonnes pratiques en matière de protection des données. Vous pouvez utiliser S3 Storage Lens via la AWS Management Console, la AWS CLI, des kits SDK AWS ou une API REST.

S3 Storage Lens peut regrouper votre utilisation du stockage vers les exportations de métriques dans un compartiment Amazon S3 pour une analyse plus approfondie. Le compartiment dans lequel S3 Storage Lens place ses exportations de mesures est connu sous le nom de compartiment de destination. Vous devez disposer d'une politique de compartiment pour le compartiment de destination lorsque vous configurez l'exportation des mesures du S3 Storage Lens. Pour plus d'informations, consultez Évaluer l'activité et l'utilisation de votre stockage avec Amazon S3 Storage Lens.

L'exemple de stratégie de compartiment suivant octroie à Amazon S3 l'autorisation d'écrire des objets (PUT) dans un compartiment de destination. Vous utilisez une stratégie de compartiment comme celle-ci sur le compartiment de destination lorsque vous configurez les mesures de S3 Storage Lens.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3StorageLensExamplePolicy", "Effect": "Allow", "Principal": { "Service": "storage-lens.s3.amazonaws.com" }, "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::destination-bucket/destination-prefix/StorageLens/111122223333/*" ], "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": "111122223333", "aws:SourceArn": "arn:aws:s3:Région AWS:111122223333:storage-lens/storage-lens-dashboard-configuration-id" } } } ] }

Utilisez la modification suivante de la politique de compartiment Resource précédente lors de la configuration d'une exportation de métriques au niveau de l'organisation S3 Storage Lens.

"Resource": "arn:aws:s3:::destination-bucket/destination-prefix/StorageLens/your-organization-id/*",