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

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Exemples de stratégie de compartiment

Grâce aux politiques de compartiment d'Amazon S3, vous pouvez sécuriser l'accès aux objets de vos compartiments, afin que seuls les utilisateurs disposant des autorisations appropriées puissent y accéder. Vous pouvez même empêcher les utilisateurs authentifiés ne disposant pas des autorisations appropriées d'accéder à vos ressources Amazon S3.

Cette section présente des exemples de cas d'utilisation standard de politiques de compartiment. Ces exemples de politiques utilisent DOC-EXAMPLE-BUCKET comme valeur de ressource. Pour tester ces politiques, remplacez user input placeholders par vos propres informations (comme le nom de votre compartiment).

Pour accorder ou refuser des autorisations à un ensemble d'objets, vous pouvez utiliser des caractères génériques (*) dans les noms Amazon Resource Name (ARN) et d'autres valeurs. Par exemple, vous pouvez contrôler l'accès aux groupes d'objets qui commencent par un préfixe courant ou se terminent par une extension donnée, comme .html.

Pour plus d'informations sur le langage de politique AWS Identity and Access Management (IAM), consultezStratégies et autorisations dans Amazon S3.

Note

Lors du test des autorisations à l'aide de la console Amazon S3, vous devez accorder les autorisations supplémentaires requises par la console (s3:ListAllMyBuckets, s3:GetBucketLocation et s3:ListBucket). Pour obtenir un exemple de guide étape par étape pour accorder des autorisations aux utilisateurs et tester ces autorisations à l'aide de la console, consultez Contrôle de l'accès à un compartiment avec des stratégies d'utilisateur.

Ressources supplémentaires pour créer des politiques de compartiment

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

Vous pouvez utiliser vos paramètres de politique pour accorder l'accès à des utilisateurs anonymes publics, ce qui est utile si vous configurez votre compartiment en tant que site Web statique. Cela nécessite que vous désactiviez le blocage de l'accès public pour votre compartiment. Pour plus d'informations sur la manière de procéder et sur la politique requise, consultez Définition des autorisations pour l'accès au site web. Pour découvrir comment configurer des politiques plus restrictives dans le même but, consultez Comment accorder un accès public en lecture à certains objets dans mon compartiment Amazon S3 ?.

Par défaut, Amazon S3 bloque l'accès public à votre compte et à vos compartiments. Si vous souhaitez utiliser un compartiment pour héberger un site web statique, vous pouvez utiliser ces étapes pour modifier vos paramètres de blocage de l'accès public.

Avertissement

Avant de terminer cette étape, revoyez Blocage de l'accès public à votre stockage Amazon S3 pour vous assurer que vous comprenez et acceptez les risques liés à l'autorisation d'accès public. Lorsque vous désactivez les paramètres de blocage de l'accès public pour rendre votre compartiment public, toute personne sur Internet peut accéder à votre compartiment. Nous vous recommandons de bloquer tout accès public à vos compartiments.

  1. Ouvrez la console Amazon S3 sur https://console.aws.amazon.com/s3/.

  2. Choisissez le nom du compartiment que vous avez configuré en tant que site web statique.

  3. Choisissez Permissions.

  4. Sous Block public access (bucket settings) (Bloquer l'accès public (paramètres de compartiment)), choisissez Edit (Modifier).

  5. Effacez Block all public access (Bloquer tous les accès publics) et choisissez Enregistrer les modifications.

    Avertissement

    Avant de terminer cette étape, examinez Blocage de l'accès public à votre stockage Amazon S3 pour vous assurer que vous comprenez et acceptez les risques liés à l'autorisation d'accès public. Lorsque vous désactivez les paramètres de blocage de l'accès public pour rendre votre compartiment public, toute personne sur Internet peut accéder à votre compartiment. Nous vous recommandons de bloquer tout accès public à vos compartiments.

    Amazon S3 désactive les paramètres de blocage de l'accès public pour votre compartiment. Pour créer un site web public statique, vous devrez peut-être aussi modifier les paramètres de blocage de l'accès public de votre compte avant d'ajouter une stratégie de compartiment. Si les paramètres du compte pour la fonctionnalité de blocage de l'accès public sont actuellement activés, une note s'affiche sous Block public access (bucket settings) (Bloquer l'accès public (paramètres de compartiment)).

Obligation de chiffrement

Exiger le SSE-KMS pour tous les objets enregistrés dans un compartiment

L'exemple de politique suivant exige que chaque objet écrit dans le compartiment soit chiffré avec un chiffrement côté serveur à l'aide de clés AWS Key Management Service (AWS KMS) (SSE-KMS). Si l'objet n'est pas chiffré avec SSE-KMS, la requête sera refusée.

{ "Version": "2012-10-17", "Id": "PutObjPolicy", "Statement": [{ "Sid": "DenyObjectsThatAreNotSSEKMS", "Principal": "*", "Effect": "Deny", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition": { "Null": { "s3:x-amz-server-side-encryption-aws-kms-key-id": "true" } } }] }

Exiger un SSE-KMS avec un AWS KMS key spécifique pour tous les objets enregistrés dans un compartiment

L'exemple de politique suivant interdit l'écriture d'objets dans le compartiment s'ils ne sont pas chiffrés avec SSE-KMS en utilisant un ID de clé KMS spécifique. Même si les objets sont chiffrés avec SSE-KMS en utilisant un en-tête par requête ou un chiffrement par défaut du compartiment, les objets ne peuvent pas être enregistrés dans le compartiment s'ils n'ont pas été chiffrés avec la clé KMS spécifiée. Assurez-vous de remplacer la clé KMS ARN utilisée dans cet exemple par votre propre clé KMS ARN.

{ "Version": "2012-10-17", "Id": "PutObjPolicy", "Statement": [{ "Sid": "DenyObjectsThatAreNotSSEKMSWithSpecificKey", "Principal": "*", "Effect": "Deny", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition": { "ArnNotEqualsIfExists": { "s3:x-amz-server-side-encryption-aws-kms-key-id": "arn:aws:kms:us-east-2:111122223333:key/01234567-89ab-cdef-0123-456789abcdef" } } }] }

Gestion des compartiments à l'aide de listes de contrôle d'accès en prédéfinies (ACL)

Accorder des autorisations à plusieurs comptes pour charger des objets ou définir des listes de contrôle d'accès aux objets pour l'accès public.

L'exemple de politique suivant accorde les s3:PutObjectAcl autorisations s3:PutObject et à plusieurs Comptes AWS et exige que toutes les demandes relatives à ces opérations incluent la liste de contrôle public-read d'accès (ACL) prédéfinie. Pour plus d’informations, consultez Actions politiques d'Amazon S3 et Exemples de clés de condition Amazon S3.

Avertissement

L'ACL prédéfinie public-read permet à n'importe qui dans le monde entier de visualiser les objets de votre compartiment. 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. Si vous souhaitez activer les paramètres de blocage de l'accès public pour l'hébergement de sites Web statiques, consultez Tutoriel : configuration d’un site web statique sur Amazon S3.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AddPublicReadCannedAcl", "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'autorisations intercomptes 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 une autre personne Compte AWS à télécharger des objets dans votre compartiment tout en vous assurant que vous avez le contrôle total des objets chargés. Cette politique accorde à un compte spécifique Compte AWS (111122223333) la possibilité de télécharger des objets uniquement si ce compte inclut l'ACL bucket-owner-full-control prédéfinie lors du téléchargement. La condition StringEquals figurant dans la politique spécifie la clé de la condition s3:x-amz-acl pour exprimer l'exigence de l'ACL prédéfinie. Pour plus d’informations, consultez 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"} } } ] }

Gestion de l'accès aux objets avec l'étiquetage des objets

Autoriser un utilisateur à lire uniquement les objets qui ont une clé et une valeur d'étiquette spécifiques

La politique d'autorisations suivante limite un utilisateur à la seule lecture des objets qui comportent la clé et la valeur d'étiquette environment: production. Cette politique utilise la clé de condition s3:ExistingObjectTag pour spécifier la clé et la valeur d'étiquette.

{ "Version":"2012-10-17", "Statement":[ { "Principal":{ "AWS":"arn:aws:iam::111122223333:role/JohnDoe" }, "Effect":"Allow", "Action":[ "s3:GetObject", "s3:GetObjectVersion" ], "Resource":"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition":{ "StringEquals":{ "s3:ExistingObjectTag/environment":"production" } } } ] }

Restreindre les clés d'étiquette d'objet que les utilisateurs peuvent ajouter

L'exemple de politique suivant accorde à un utilisateur l'autorisation d'exécuter l'action s3:PutObjectTagging, qui permet à un utilisateur d'ajouter des étiquettes à un objet existant. La condition utilise la clé de condition s3:RequestObjectTagKeys pour spécifier les clés d'étiquette autorisées, telles que Owner ou CreationDate. Pour plus d'informations, consultez Création d'une condition avec plusieurs clés ou valeurs dans le Guide de l'utilisateur IAM.

Cette politique garantit que chaque clé d'étiquette spécifiée dans la demande est une clé d'étiquette autorisée. Le qualificateur ForAnyValue dans la condition garantit qu'au moins une des clés spécifiées doit être présente dans la demande.

{ "Version": "2012-10-17", "Statement": [ {"Principal":{"AWS":[ "arn:aws:iam::111122223333:role/JohnDoe" ] }, "Effect": "Allow", "Action": [ "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ], "Condition": {"ForAnyValue:StringEquals": {"s3:RequestObjectTagKeys": [ "Owner", "CreationDate" ] } } } ] }

Exiger une clé et une valeur d'étiquette spécifiques pour permettre aux utilisateurs d'ajouter des étiquettes d'objet

L'exemple de politique suivant accorde à un utilisateur l'autorisation d'exécuter l'action s3:PutObjectTagging, qui permet à un utilisateur d'ajouter des étiquettes à un objet existant. La condition exige que l'utilisateur inclue une clé d'étiquette spécifique (telle que Project) avec la valeur définie sur X.

{ "Version": "2012-10-17", "Statement": [ {"Principal":{"AWS":[ "arn:aws:iam::111122223333:user/JohnDoe" ] }, "Effect": "Allow", "Action": [ "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ], "Condition": {"StringEquals": {"s3:RequestObjectTag/Project": "X" } } } ] }

Permettre à un utilisateur de n'ajouter que des objets ayant une clé et une valeur d'étiquetage d'objet spécifiques

L'exemple de politique suivant accorde à un utilisateur l'autorisation d'effectuer l'action s3:PutObject afin qu'il puisse ajouter des objets à un compartiment. Cependant, l'instruction Condition restreint les clés et les valeurs d'étiquetage qui sont autorisées sur les objets chargés. Dans cet exemple, l'utilisateur ne peut ajouter au compartiment que les objets ayant la clé d'étiquette spécifique (Department) avec la valeur définie sur Finance.

{ "Version": "2012-10-17", "Statement": [{ "Principal":{ "AWS":[ "arn:aws:iam::111122223333:user/JohnDoe" ] }, "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ], "Condition": { "StringEquals": { "s3:RequestObjectTag/Department": "Finance" } } }] }

Gestion de l'accès aux objets par l'utilisation de clés de condition globales

Les clés de condition globales sont des clés de contexte de condition avec un aws préfixe. Services AWS peut prendre en charge les clés de condition globales ou les clés spécifiques au service qui incluent le préfixe du service. Vous pouvez utiliser l'élément Condition d'une politique JSON pour comparer les clés d'une requête avec les valeurs des clés que vous spécifiez dans votre politique.

Restreindre l'accès aux seules livraisons du journal d'accès du serveur Amazon S3

Dans l'exemple de politique de compartiment suivant, la clé de condition aws:SourceArnglobale est utilisée pour comparer le nom de ressource Amazon (ARN) de la ressource, en effectuant une service-to-service demande avec l'ARN spécifié dans la politique. La clé de condition globale aws:SourceArn est utilisée pour empêcher le service Amazon S3 d'être utilisé comme adjoint confus lors de transactions entre services. Seul le service Amazon S3 est autorisé à ajouter des objets au compartiment Amazon S3.

Cet exemple de stratégie de compartiment accorde uniquement des autorisations s3:PutObject au principal du service de journalisation (logging.s3.amazonaws.com).

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutObjectS3ServerAccessLogsPolicy", "Principal": { "Service": "logging.s3.amazonaws.com" }, "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET-logs/*", "Condition": { "StringEquals": { "aws:SourceAccount": "111111111111" }, "ArnLike": { "aws:SourceArn": "arn:aws:s3:::EXAMPLE-SOURCE-BUCKET" } } }, { "Sid": "RestrictToS3ServerAccessLogs", "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET-logs/*", "Condition": { "ForAllValues:StringNotEquals": { "aws:PrincipalServiceNamesList": "logging.s3.amazonaws.com" } } } ] }

Autoriser l'accès uniquement à votre organisation

Si vous souhaitez que tous les principaux IAM accédant à une ressource proviennent d'un Compte AWS compte de gestion (y compris le compte de AWS Organizations gestion), vous pouvez utiliser la clé de condition aws:PrincipalOrgID globale.

Pour accorder ou restreindre ce type d'accès, définissez la condition aws:PrincipalOrgID et définissez la valeur de l'ID de votre organisation dans la politique de compartiment. L'ID de l'organisation permet de contrôler l'accès au compartiment. Lorsque vous utilisez la condition aws:PrincipalOrgID, les autorisations de la politique de compartiment sont également appliquées à tous les nouveaux comptes qui sont ajoutés à l'organisation.

Voici un exemple de politique de compartiment basée sur les ressources que vous pouvez utiliser pour accorder à des principaux IAM spécifiques de votre organisation un accès direct à votre compartiment. En ajoutant la clé de condition globale aws:PrincipalOrgID à votre politique de compartiment, le compte principal doit désormais faire partie de votre organisation pour obtenir l'accès à la ressource. Même si vous spécifiez accidentellement un compte incorrect lors de l'octroi de l'accès, la clé de condition globale aws:PrincipalOrgID constitue une protection supplémentaire. Lorsque cette clé globale est utilisée dans une politique, elle empêche tous les principaux de l'extérieur de l'organisation spécifiée d'accéder au compartiment S3. Seuls les principaux des comptes de l'organisation listée peuvent obtenir l'accès à la ressource.

{ "Version": "2012-10-17", "Statement": [{ "Sid": "AllowGetObject", "Principal": { "AWS": "*" }, "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition": { "StringEquals": { "aws:PrincipalOrgID": ["o-aa111bb222"] } } }] }

Gestion de l'accès en fonction d'adresses IP spécifiques

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

L'exemple suivant interdit à tous les utilisateurs d'effectuer des opérations Amazon S3 sur les objets des compartiments spécifiés, sauf si la requête provient de la plage d'adresses IP spécifiée.

Note

Lorsque vous limitez l'accès à une adresse IP spécifique, assurez-vous de spécifier également les points de terminaison de VPC, adresses IP source de VPC ou adresses IP externes qui peuvent accéder au compartiment S3. Dans le cas contraire, vous risquez de perdre l'accès au compartiment si votre politique interdit à tous les utilisateurs d'effectuer des opérations S3 sur les objets de votre compartiment sans que les autorisations appropriées ne soient déjà en place.

Cette instruction de Condition de politique identifie 192.0.2.0/24 comme la plage d'adresses Internet Protocol version 4 (IPv4) autorisées.

Le Condition bloc utilise la NotIpAddress condition et la clé de aws:SourceIp condition, qui est une clé AWS de condition large. La clé de condition aws:SourceIp ne peut être utilisée que pour les plages d'adresses IP publiques. Pour plus d’informations sur l’utilisation de ces clés de condition, consultez Exemples de clés de condition Amazon S3. Les valeurs IPv4 aws:SourceIp font appel à la notation CIDR standard. Pour plus d’informations, consultez Références des éléments de politique JSON IAM dans le Guide de l’utilisateur IAM.

Avertissement

Avant d'employer cette politique, remplacez la plage d'adresses IP 192.0.2.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": "192.0.2.0/24" } } } ] }

Autoriser les 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. Cela permettra de s'assurer que les politiques continuent de fonctionner 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 autorise l'accès aux exemples d'adresses IP 192.0.2.1 et 2001:DB8:1234:5678::1 et le refuse aux adresses 203.0.113.1 et 2001:DB8:1234:5678:ABCD::1.

La clé de condition aws:SourceIp ne peut être utilisée que pour les plages d'adresses IP publiques. 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 : 2001:DB8:1234:5678::/64). Pour plus d’informations, consultez 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": [ "192.0.2.0/24", "2001:DB8:1234:5678::/64" ] }, "NotIpAddress": { "aws:SourceIp": [ "203.0.113.0/24", "2001:DB8:1234:5678:ABCD::/80" ] } } } ] }

Gestion des accès en fonction des requêtes HTTP ou HTTPS

Restreindre l'accès aux seules requêtes HTTPS

Si vous voulez empêcher les attaquants potentiels de manipuler le trafic réseau, vous pouvez utiliser HTTPS (TLS) pour n'autoriser que les connexions chiffrées tout en limitant l'accès à votre compartiment aux requêtes HTTP. Pour déterminer si la requête est HTTP ou HTTPS, utilisez la clé de condition globale aws:SecureTransport dans votre politique de compartiment S3. La clé de condition aws:SecureTransport vérifie si une requête a été envoyée en utilisant HTTP.

Si une demande renvoie true, alors la demande a été envoyée par HTTPS. Si une demande renvoie false, alors la demande a été envoyée par HTTP. Vous pouvez ensuite autoriser ou refuser l'accès à votre compartiment en fonction du schéma de requête souhaité.

Dans l'exemple suivant, la politique de compartiment refuse explicitement les demandes HTTP.

{ "Version": "2012-10-17", "Statement": [{ "Sid": "RestrictToTLSRequestsOnly", "Action": "s3:*", "Effect": "Deny", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ], "Condition": { "Bool": { "aws:SecureTransport": "false" } }, "Principal": "*" }] }

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

Supposons que vous ayez un site web avec le nom de domaine www.example.com ou example.com, avec des liens vers des photos et des vidéos stockées dans votre compartiment nommé DOC-EXAMPLE-BUCKET. Par défaut, toutes les ressources Amazon S3 sont privées, de sorte que seul Compte AWS celui qui les a créées peut y accéder.

Pour autoriser l'accès en lecture à ces objets à partir de votre site Web, vous pouvez ajouter une politique de compartiment qui accorde l'autorisation s3:GetObject avec une condition stipulant que la requête GET provienne initialement de pages Web spécifiques. La politique suivante limite les requêtes en utilisant la conditionStringLike avec la clé de condition aws:Referer.

{ "Version":"2012-10-17", "Id":"HTTP referer policy example", "Statement":[ { "Sid":"Allow only 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/*"]} } } ] }

Veillez à ce 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 HTTP connu 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, ne l'utilisez pas aws:Referer pour empêcher des parties non autorisées de faire des AWS demandes 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 plus d’informations, consultez aws:Referer dans le Guide de l’utilisateur IAM.

Gestion de l'accès des utilisateurs à des dossiers spécifiques

Accorder aux utilisateurs l'accès à des dossiers spécifiques

Supposons que vous essayez d'accorder aux utilisateurs l'accès à un dossier spécifique. Si l'utilisateur IAM et le compartiment S3 appartiennent à la même entité Compte AWS, vous pouvez utiliser une politique IAM pour accorder à l'utilisateur l'accès à un dossier de compartiment spécifique. Avec cette approche, vous n'avez pas besoin de mettre à jour votre politique de compartiment pour octroyer l'accès. Vous pouvez ajouter la politique IAM à un rôle IAM auquel plusieurs utilisateurs peuvent basculer.

Si l'identité IAM et le compartiment S3 appartiennent à des entités différentes Comptes AWS, vous devez accorder un accès entre comptes à la fois dans la politique IAM et dans la politique de compartiment. Pour plus d'informations sur l'octroi d'un accès intercompte, consultez Bucket owner granting cross-account bucket permissions (Propriétaire du compartiment accordant des autorisations intercomptes pour le compartiment).

L'exemple suivant de politique de compartiment accorde à JohnDoe un accès complet à la console à son seul dossier (home/JohnDoe/). En créant un dossier home et en accordant les autorisations appropriées à vos utilisateurs, vous pouvez faire en sorte que plusieurs utilisateurs partagent un seul compartiment. Cette politique se compose de trois instructions Allow :

  • AllowRootAndHomeListingOfCompanyBucket : permet à l'utilisateur (JohnDoe) de lister les objets au niveau de la racine du compartiment DOC-EXAMPLE-BUCKET et dans le dossier home. Cette instruction permet également à l'utilisateur d'effectuer une recherche sur le préfixe home/ en utilisant la console.

  • AllowListingOfUserFolder : permet à l'utilisateur (JohnDoe) de lister tous les objets du dossier home/JohnDoe/ et de ses sous-dossiers éventuels.

  • AllowAllS3ActionsInUserFolder : permet à l'utilisateur d'effectuer toutes les actions Amazon S3 en accordant des autorisations Read, Write et Delete. Les autorisations sont limitées au dossier personnel du propriétaire du compartiment.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRootAndHomeListingOfCompanyBucket", "Principal": { "AWS": [ "arn:aws:iam::111122223333:user/JohnDoe" ] }, "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET"], "Condition": { "StringEquals": { "s3:prefix": ["", "home/", "home/JohnDoe"], "s3:delimiter": ["/"] } } }, { "Sid": "AllowListingOfUserFolder", "Principal": { "AWS": [ "arn:aws:iam::111122223333:user/JohnDoe" ] }, "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET"], "Condition": { "StringLike": { "s3:prefix": ["home/JohnDoe/*"] } } }, { "Sid": "AllowAllS3ActionsInUserFolder", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:user/JohnDoe" ] }, "Action": ["s3:*"], "Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET/home/JohnDoe/*"] } ] }

Gestion des accès pour les journaux d'accès

Accorder l'accès à l'Application Load Balancer pour activer les journaux d'accès

Lorsque vous activez les journaux d'accès pour Application Load Balancer, vous devez spécifier le nom du compartiment S3 où l'équilibreur de charge stockera les journaux. Le compartiment doit comporter une politique attachée qui accorde à Elastic Load Balancing l'autorisation d'écrire dans le compartiment.

Dans l'exemple suivant, la politique de compartiment accorde à Elastic Load Balancing (ELB) l'autorisation d'écrire les journaux d'accès dans le compartiment :

{ "Version": "2012-10-17", "Statement": [ { "Principal": { "AWS": "arn:aws:iam::elb-account-id:root" }, "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/prefix/AWSLogs/111122223333/*" } ] }
Note

Assurez-vous de remplacer elb-account-id par l'ID du Compte AWS d'Elastic Load Balancing pour votre Région AWS. Pour obtenir la liste des régions Elastic Load Balancing, consultez Attach a policy to your Amazon S3 bucket (Association d'une politique à votre compartiment Amazon S3) dans le Guide de l'utilisateur Elastic Load Balancing.

Si vous Région AWS ne figurez pas dans la liste des régions Elastic Load Balancing prises en charge, appliquez la politique suivante, qui accorde des autorisations au service de livraison de journaux spécifié.

{ "Version": "2012-10-17", "Statement": [ { "Principal": { "Service": "logdelivery.elasticloadbalancing.amazonaws.com" }, "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/prefix/AWSLogs/111122223333/*" } ] }

Ensuite, veillez à configurer vos journaux d'accès Elastic Load Balancing en les activant. Vous pouvez vérifier les autorisations de votre compartiment en créant un fichier de test.

Gérer l'accès à un Amazon CloudFront OAI

Accorder une autorisation à un Amazon CloudFront OAI

L'exemple de politique de compartiment suivant accorde à une identité CloudFront d'accès d'origine (OAI) l'autorisation d'obtenir (lire) tous les objets de votre compartiment S3. Vous pouvez utiliser un CloudFront OAI pour autoriser les utilisateurs à accéder aux objets de votre compartiment via Amazon S3 CloudFront , mais pas directement. Pour plus d'informations, consultez Restreindre l'accès au contenu Amazon S3 à l'aide d'une identité d'accès d'origine dans le manuel Amazon CloudFront Developer Guide.

La stratégie suivante utilise l'ID de l'OAI comme stratégie de Principal. Pour plus d'informations sur l'utilisation des politiques de compartiment S3 pour accorder l'accès à un CloudFront OAI, consultez la section Migration de l'identité d'accès d'origine (OAI) vers le contrôle d'accès d'origine (OAC) dans le manuel Amazon Developer Guide. 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/*" } ] }

Gestion des accès pour Amazon S3 Storage Lens

Accorder des autorisations pour Amazon S3 Storage Lens

S3 Storage Lens regroupe vos métriques et affiche les informations dans la section Account snapshot (Instantané du compte) sur la page Buckets (Compartiments) de la console Amazon S3. S3 Storage Lens fournit également un tableau de bord interactif que vous pouvez utiliser 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 de protection des données. Votre tableau de bord dispose d'options d'exploration pour générer et visualiser des informations au niveau de l'organisation, du compte, de la Région AWS, de la classe de stockage, du compartiment, du préfixe ou du groupe Storage Lens. Vous pouvez également envoyer une exportation de métriques quotidienne au format CSV ou Parquet vers un compartiment S3.

S3 Storage Lens peut exporter vos métriques d'utilisation du stockage agrégées vers un compartiment Amazon S3 pour une analyse plus approfondie. Le compartiment dans lequel S3 Storage Lens place ses exportations de métriques porte le nom de compartiment de destination. Lorsque vous configurez l'exportation des métriques S3 Storage Lens, vous devez disposer d'une politique de compartiment pour le compartiment de destination. Pour plus d’informations, consultez Évaluer l'activité et l'utilisation de votre stockage avec Amazon S3 Storage Lens.

L'exemple de politique de compartiment suivant octroie à Amazon S3 l'autorisation d'écrire des objets (requêtes 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:region-code:111122223333:storage-lens/storage-lens-dashboard-configuration-id" } } } ] }

Lorsque vous configurez une exportation de métriques au niveau de l'organisation S3 Storage Lens, utilisez la modification suivante de l'instruction Resource de la politique de compartiment précédente.

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

Gestion des autorisations pour l'inventaire S3, les analyses S3 et les rapports d'inventaire S3

Accorder des autorisations pour l'inventaire S3 et les analyses S3.

L'inventaire S3 crée des listes d'objets dans un compartiment, et l'exportation de l'analyse de classe de stockage des analyses S3 crée des fichiers de sortie des 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 ou le fichier d'exportation analytique est écrit est appelé compartiment de destination. Lorsque vous configurez un inventaire ou une exportation analytique, vous devez créer une politique de compartiment pour le compartiment de destination. Pour plus d’informations, consultez Inventaire Simple Storage Service (Amazon S3) et Analyses Amazon S3 - Analyse de classe de stockage.

L'exemple de politique de compartiment suivant accorde à Amazon S3 l'autorisation d'écrire des objets (requêtes PUT) à partir du compte pour le compartiment source vers le compartiment de destination. Vous utilisez une politique de compartiment comme celle-ci sur le compartiment de destination lors de la configuration de l'inventaire S3 et de l'exportation des analyses S3.

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

Création de la configuration du rapport d'inventaire Control S3

Inventaire Simple Storage Service (Amazon S3) crée des listes des objets figurant dans un compartiment S3 et des métadonnées de chaque objet. L's3:PutInventoryConfigurationautorisation permet à un utilisateur de créer une configuration d'inventaire qui inclut tous les champs de métadonnées d'objet disponibles par défaut et de spécifier le compartiment de destination pour stocker l'inventaire. Un utilisateur disposant d'un accès en lecture aux objets du compartiment de destination peut accéder à tous les champs de métadonnées d'objet disponibles dans ce rapport d'inventaire. Pour plus d'informations sur les champs de métadonnées disponibles dans S3 Inventory, consultez Liste d'inventaire Amazon S3.

Pour empêcher un utilisateur de configurer un rapport d'inventaire S3, supprimez l's3:PutInventoryConfigurationautorisation de l'utilisateur.

Certains champs de métadonnées d'objet dans les configurations des rapports d'inventaire S3 sont facultatifs, ce qui signifie qu'ils sont disponibles par défaut mais qu'ils peuvent être restreints lorsque vous accordez l's3:PutInventoryConfigurationautorisation à un utilisateur. Vous pouvez contrôler si les utilisateurs peuvent inclure ces champs de métadonnées facultatifs dans leurs rapports à l'aide de la clé de s3:InventoryAccessibleOptionalFields condition. Pour obtenir la liste des champs de métadonnées facultatifs disponibles dans S3 Inventory, consultez OptionalFieldsle manuel Amazon Simple Storage Service API Reference.

Pour autoriser un utilisateur à créer une configuration d'inventaire avec des champs de métadonnées facultatifs spécifiques, utilisez la clé de s3:InventoryAccessibleOptionalFields condition pour affiner les conditions de votre politique de compartiment.

L'exemple de politique suivant accorde à un utilisateur (Ana) l'autorisation de créer une configuration d'inventaire de manière conditionnelle. La ForAllValues:StringEquals condition de la politique utilise la clé de s3:InventoryAccessibleOptionalFields condition pour spécifier les deux champs de métadonnées facultatifs autorisés, à savoir Size etStorageClass. Ainsi, lors Ana de la création d'une configuration d'inventaire, les seuls champs de métadonnées facultatifs qu'elle peut inclure sont Size etStorageClass.

{ "Id": "InventoryConfigPolicy", "Version": "2012-10-17", "Statement": [{ "Sid": "AllowInventoryCreationConditionally", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Ana" }, "Action": "s3:PutInventoryConfiguration", "Resource": "arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET", "Condition": { "ForAllValues:StringEquals": { "s3:InventoryAccessibleOptionalFields": [ "Size", "StorageClass" ] } } } ] }

Pour empêcher un utilisateur de configurer un rapport d'inventaire S3 qui inclut des champs de métadonnées facultatifs spécifiques, ajoutez une Deny déclaration explicite à la politique de compartiment pour le compartiment source. L'exemple de politique de compartiment suivant interdit à l'utilisateur Ana de créer une configuration d'inventaire dans le compartiment source DOC-EXAMPLE-SOURCE-BUCKET qui inclut les champs facultatifs ObjectAccessControlList ou de ObjectOwner métadonnées. L'utilisateur Ana peut toujours créer une configuration d'inventaire avec d'autres champs de métadonnées facultatifs.

{ "Id": "InventoryConfigSomeFields", "Version": "2012-10-17", "Statement": [{ "Sid": "AllowInventoryCreation", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Ana" }, "Action": "s3:PutInventoryConfiguration", "Resource": "arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET", }, { "Sid": "DenyCertainInventoryFieldCreation", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333:user/Ana" }, "Action": "s3:PutInventoryConfiguration", "Resource": "arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET", "Condition": { "ForAnyValue:StringEquals": { "s3:InventoryAccessibleOptionalFields": [ "ObjectOwner", "ObjectAccessControlList" ] } } } ] }
Note

L'utilisation de la clé de s3:InventoryAccessibleOptionalFields condition dans les politiques relatives aux compartiments n'affecte pas la livraison des rapports d'inventaire basés sur les configurations d'inventaire existantes.

Important

Il est recommandé de l'utiliser ForAllValues avec un Allow effet ou ForAnyValue avec un Deny effet, comme indiqué dans les exemples précédents.

Ne les utilisez pas ForAllValues avec Deny effet ni ForAnyValue avec Allow effet, car ces combinaisons peuvent être trop restrictives et bloquer la suppression de la configuration de l'inventaire.

Pour en savoir plus sur les opérateurs ForAllValues et les ensembles de ForAnyValue conditions, consultez la section Clés contextuelles à valeurs multiples du guide de l'utilisateur IAM.

Exigence d'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 multifactorielle fournit un niveau de sécurité supplémentaire que vous pouvez appliquer à votre AWS environnement. L'authentification MFA est une fonctionnalité de sécurité qui impose aux utilisateurs de prouver qu'ils détiennent physiquement un appareil d'authentification MFA en fournissant un code d'authentification MFA valide. Pour plus d’informations, consultez Authentification multifactorielle AWS. Vous pouvez exiger l'authentification MFA pour toutes les demandes d'accès à vos ressources Amazon S3.

Pour appliquer l'exigence d'authentification MFA, utilisez la clé de condition aws:MultiFactorAuthAge dans une politique de compartiment. Les utilisateurs IAM peuvent accéder aux ressources Amazon S3 à l'aide d'informations d'identification temporaires émises par le 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 d'authentification multifacteur, la clé de condition aws:MultiFactorAuthAge fournit une valeur numérique indiquant le temps écoulé (en secondes) depuis la création des informations d'identification temporaires. Si les informations d'identification temporaires fournies dans la demande n'ont pas été créées à l'aide d'un appareil d'authentification MFA, la valeur de cette clé est null (absente). Dans une politique de compartiment, vous pouvez ajouter une condition pour vérifier cette valeur, comme illustré dans l'exemple suivant.

Cet exemple de politique refuse toute opération Amazon S3 sur le dossier /taxdocuments dans le compartiment DOC-EXAMPLE-BUCKET si la demande n'a pas été authentifiée à l'aide de l'authentification 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é de condition aws:MultiFactorAuthAge est null, ce qui indique que les informations d'identification de sécurité temporaires figurant dans la demande ont été créées sans appareil d'authentification 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 de validité de la clé aws:MultiFactorAuthAge. La durée que vous spécifiez pour la clé aws:MultiFactorAuthAge est indépendante de la durée de vie de l'identifiant de sécurité temporaire utilisé pour authentifier la requête.

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/*" } ] }