Exemples de politiques relatives aux compartiments Amazon S3 - 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 politiques relatives aux compartiments Amazon S3

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 amzn-s3-demo-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 Amazon Resource Names (ARNs) et d'autres valeurs. Par exemple, vous pouvez contrôler l'accès à des groupes d'objets qui commencent par un préfixe commun ou se terminent par une extension spécifique, tels que.html.

Pour plus d'informations sur AWS Identity and Access Management (IAM) langage politique, voirPolitiques et autorisations dans Amazon S3.

Pour plus d'informations sur les autorisations relatives aux API opérations S3 par type de ressource S3, consultezAutorisations requises pour les API opérations 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.

Les ressources supplémentaires pour créer des politiques de compartiment sont les suivantes :

Octroi d'une autorisation de lecture seule à un utilisateur public 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 bucket en tant que site Web statique. Pour accorder l'accès à des utilisateurs anonymes publics, vous devez désactiver les paramètres de blocage de l'accès public pour votre compartiment. Pour plus d'informations sur la procédure à suivre et sur la politique requise, consultezDéfinition des autorisations pour l'accès au site web. Pour savoir comment configurer des politiques plus restrictives dans le même but, consultez Comment accorder un accès public en lecture à certains objets de mon compartiment Amazon S3 ? dans le AWS Centre de connaissances.

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 ces étapes, vérifiez Blocage de l'accès public à votre stockage Amazon S3 que vous comprenez et acceptez les risques liés à l'autorisation d'un 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 tous les accès publics à vos compartiments.

  1. Ouvrez la console Amazon S3 à l'adresse 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.

    La console Amazon S3, qui affiche les paramètres de blocage du compartiment d'accès public.

    Amazon S3 désactive les paramètres de blocage de l'accès public pour votre compartiment. Pour créer un site Web statique public, vous devrez peut-être également modifier les paramètres de blocage de l'accès public pour votre compte avant d'ajouter une politique de compartiment. Si les paramètres de blocage de l'accès public de votre compte sont actuellement activés, une note s'affiche sous Bloquer l'accès public (paramètres du compartiment).

Obligation de chiffrement

Vous pouvez exiger le chiffrement côté serveur avec AWS Key Management Service (AWS KMS) keys (SSE-KMS), comme indiqué dans les exemples suivants.

SSEObligatoire : KMS pour tous les objets écrits 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 AWS Key Management Service (AWS KMS) clés (SSE-KMS). Si l'objet n'est pas chiffré avec SSE -KMS, la demande est 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 SSE - KMS avec un AWS KMS key pour tous les objets écrits dans un compartiment

L'exemple de politique suivant interdit l'écriture d'objets dans le compartiment s'ils ne sont pas chiffrés avecSSE, KMS en utilisant un identifiant de KMS clé spécifique. Même si les objets sont chiffrés avec SSE un en-tête KMS par demande ou un chiffrement par défaut du compartiment, les objets ne peuvent pas être écrits dans le compartiment s'ils n'ont pas été chiffrés avec la KMS clé spécifiée. Assurez-vous de remplacer la KMS clé ARN utilisée dans cet exemple par votre propre KMS clé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 seaux à l'aide de boîtes en conserve ACLs

Octroi d'autorisations à plusieurs comptes pour télécharger des objets ou définir un objet ACLs pour un accès public

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

Avertissement

La public-read boîte en conserve ACL permet à n'importe qui dans le monde de voir les objets contenus dans votre seau. 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 un autre Compte AWS pour télécharger des objets dans votre compartiment tout en vous assurant de contrôler totalement les objets chargés. Cette politique accorde une Compte AWS (111122223333) la possibilité de télécharger des objets uniquement si ce compte inclut les objets bucket-owner-full-control prédéfinis ACL lors du téléchargement. La StringEquals condition de la politique spécifie la clé de s3:x-amz-acl condition pour exprimer l'ACLexigence prédéfinie. Pour de plus amples informations, veuillez consulter Clés de conditions de politique pour 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:::amzn-s3-demo-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 la section Création d'une condition qui teste plusieurs valeurs clés dans le Guide de IAM l'utilisateur.

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'Conditionélément d'une JSON politique pour comparer les clés d'une demande avec les valeurs 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 bucket suivant, aws:SourceArnune clé de condition globale est utilisée pour comparer le nom de ressource Amazon (ARN) de la ressource, en faisant une service-to-service demande avec ARN celle spécifiée 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).

Note

L'interface NotPrincipall'élément ne peut pas être utilisé avec Service AWS les principes des politiques basées sur les ressources d'Amazon S3, telles que les politiques relatives aux compartiments. Nous vous recommandons plutôt d'utiliser la clé de aws:PrincipalServiceName condition, comme indiqué dans la politique suivante.

{ "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": { "StringNotEqualsIfExists": { "aws:PrincipalServiceName": "logging.s3.amazonaws.com" } } } ] }

Autoriser l'accès uniquement à votre organisation

Si vous souhaitez que tous les IAMprincipaux accédant à une ressource proviennent d'un Compte AWS dans votre organisation (y compris le AWS Organizations compte de 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 IAM responsables 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, le aws:PrincipalOrgID une clé de condition globale agit comme 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 de HTTP nos HTTPS demandes

Restreindre l'accès aux seules HTTPS demandes

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

Si une demande est renvoyéetrue, elle a été envoyéeHTTPS. Si la demande est renvoyéefalse, c'est qu'elle a été envoyéeHTTP. 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 du compartiment refuse explicitement les HTTP demandes.

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

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

Supposons que vous ayez un site Web avec le nom de domaine www.example.com or example.com avec des liens vers des photos et des vidéos stockées dans votre compartiment nomméamzn-s3-demo-bucket. Par défaut, toutes les ressources Amazon S3 sont privées, donc seules les Compte AWS qui a créé les ressources peuvent 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:::amzn-s3-demo-bucket/*", "Condition":{ "StringLike":{"aws:Referer":["http://www.example.com/*","http://example.com/*"]} } } ] }

Assurez-vous que les navigateurs que vous utilisez incluent l'HTTPrefereren-tête 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'HTTPen-tête de référence connue du public. 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 créer des AWS demandes.

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'IAMutilisateur et le compartiment S3 appartiennent au même Compte AWS, vous pouvez ensuite utiliser une IAM politique 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 IAM politique à un IAM rôle auquel plusieurs utilisateurs peuvent passer.

Si l'IAMidentité et le compartiment S3 appartiennent à des entités différentes Comptes AWS, vous devez alors accorder un accès entre comptes à la fois dans la IAM politique 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 du bucket accorde à Elastic Load Balancing (ELB) l'autorisation d'écrire les journaux d'accès dans le bucket :

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

Assurez-vous de le remplacer elb-account-id par le Compte AWS ID pour Elastic Load Balancing pour votre Région AWS. Pour obtenir la liste des régions Elastic Load Balancing, consultez Attacher une politique à votre compartiment Amazon S3 dans le guide de l'utilisateur d'Elastic Load Balancing.

Si vos recettes Région AWS ne figure pas dans la liste des régions Elastic Load Balancing prises en charge. Utilisez 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:::amzn-s3-demo-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 a 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 politique suivante utilise l'identifiant « OAI s » comme identifiant de la politiquePrincipal. 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 CloudFront Developer Guide.

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:::amzn-s3-demo-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 comporte des options d'exploration pour générer et visualiser des informations sur l'organisation, le compte, Région AWS, classe de stockage, compartiment, préfixe ou niveau du groupe Storage Lens. Vous pouvez également envoyer une exportation de métriques quotidiennes dans CSV ou Parquet formater dans 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:::amzn-s3-demo-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:::amzn-s3-demo-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, voir OptionalFieldsdans le 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

Nous vous recommandons 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'IAMutilisateur.

Exiger MFA

Amazon S3 prend en charge API l'accès MFA protégé, une fonctionnalité qui permet d'appliquer l'authentification multifactorielle (MFA) pour accéder à vos ressources Amazon S3. L'authentification multifactorielle fournit un niveau de sécurité supplémentaire que vous pouvez appliquer à votre AWS environnement. MFAest une fonctionnalité de sécurité qui oblige les utilisateurs à prouver la possession physique d'un MFA appareil en fournissant un MFA code valide. Pour plus d’informations, consultez .AWS Authentification multifactorielle. MFAPour toute demande, vous pouvez demander l'accès à vos ressources Amazon S3.

Pour appliquer MFA cette exigence, utilisez la clé de aws:MultiFactorAuthAge condition dans une politique de compartiment. IAMles utilisateurs peuvent accéder aux ressources Amazon S3 à l'aide d'informations d'identification temporaires émises par AWS Security Token Service (AWS STS). Vous fournissez le MFA code au moment de AWS STS demande.

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 MFA appareil, cette valeur de clé est nulle (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 /documents fiscaux dossier dans le amzn-s3-demo-bucket compartiment si la demande n'est pas authentifiée à l'aide MFA de. Pour en savoir plusMFA, voir Utilisation de l'authentification multifactorielle (MFA) dans AWS dans le guide de l'utilisateur IAM.

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

La Null condition du Condition bloc indique true si la valeur de la clé de aws:MultiFactorAuthAge condition est nulle, ce qui indique que les informations d'identification de sécurité temporaires contenues dans la demande ont été créées sans MFA appareil.

La stratégie de compartiment suivante est une extension de la stratégie de compartiment précédente. La politique suivante inclut deux déclarations de politique. Une déclaration accorde l'autorisation s3:GetObject sur un compartiment (amzn-s3-demo-bucket) à tous. Une autre instruction restreint davantage l'accès au amzn-s3-demo-bucket/taxdocuments dossier du compartiment en exigeantMFA.

{ "Version": "2012-10-17", "Id": "123", "Statement": [ { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/taxdocuments/*", "Condition": { "Null": { "aws:MultiFactorAuthAge": true } } }, { "Sid": "", "Effect": "Allow", "Principal": "*", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::amzn-s3-demo-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 politique de compartiment suivante, en plus d'exiger une MFA authentification, vérifie également depuis combien de temps la session temporaire a été créée. 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:::amzn-s3-demo-bucket/taxdocuments/*", "Condition": {"Null": {"aws:MultiFactorAuthAge": true }} }, { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/taxdocuments/*", "Condition": {"NumericGreaterThan": {"aws:MultiFactorAuthAge": 3600 }} }, { "Sid": "", "Effect": "Allow", "Principal": "*", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }

Par défaut, les utilisateurs ne disposent d'aucune autorisation. Mais lorsque vous créez des politiques, vous pouvez accorder aux utilisateurs des autorisations que vous n'aviez pas l'intention d'accorder. Pour éviter de telles failles d'autorisation, vous pouvez rédiger une politique d'accès plus stricte en ajoutant un refus explicite.

Pour empêcher explicitement les utilisateurs ou les comptes de supprimer des objets, vous devez ajouter les actions suivantes à une politique de compartiment : s3:DeleteObjects3:DeleteObjectVersion, et s3:PutLifecycleConfiguration autorisations. Les trois actions sont obligatoires car vous pouvez supprimer des objets soit en appelant explicitement les DELETE Object API opérations, soit en configurant leur cycle de vie (voirGestion du cycle de vie des objets) afin qu'Amazon S3 puisse supprimer les objets à l'expiration de leur durée de vie.

Dans l'exemple de politique suivant, vous refusez explicitement DELETE Object les autorisations à l'utilisateurMaryMajor. Une Deny déclaration explicite remplace toujours toute autre autorisation accordée.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/MaryMajor" }, "Action": [ "s3:GetObjectVersion", "s3:GetBucketAcl" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1", "arn:aws:s3:::amzn-s3-demo-bucket1/*" ] }, { "Sid": "statement2", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012:user/MaryMajor" }, "Action": [ "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:PutLifecycleConfiguration" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket1", "arn:aws:s3:::amzn-s3-demo-bucket1/*" ] } ] }