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
comme valeur de ressource. Pour tester ces politiques, remplacez amzn-s3-demo-bucket
par vos propres informations (comme le nom de votre compartiment). user input placeholders
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 le langage de politique AWS Identity and Access Management (IAM), consultezPolitiques 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 :
-
Pour obtenir la liste des actions de IAM politique, des ressources et des clés de condition que vous pouvez utiliser lors de la création d'une politique de compartiment, consultez la section Actions, ressources et clés de condition pour Amazon S3 dans la référence d'autorisation de service.
-
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.
-
Pour obtenir des conseils sur la création de votre politique S3, consultez Ajout d'une stratégie de compartiment à l'aide de la console Amazon S3.
-
Pour résoudre les erreurs liées à une politique, consultez Résoudre les problèmes d'accès refusé (403 Forbidden) erreurs dans Amazon S3.
Rubriques
- Octroi d'une autorisation de lecture seule à un utilisateur public anonyme
- Obligation de chiffrement
- Gestion des seaux à l'aide de boîtes en conserve ACLs
- Gestion de l'accès aux objets avec l'étiquetage des objets
- Gestion de l'accès aux objets par l'utilisation de clés de condition globales
- Gestion de l'accès en fonction de HTTP nos HTTPS demandes
- Gestion de l'accès des utilisateurs à des dossiers spécifiques
- Gestion des accès pour les journaux d'accès
- Gérer l'accès à un Amazon CloudFront OAI
- Gestion des accès pour Amazon S3 Storage Lens
- Gestion des autorisations pour l'inventaire S3, les analyses S3 et les rapports d'inventaire S3
- Exiger MFA
- Empêcher les utilisateurs de supprimer des objets
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 ?
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.
-
Ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/
. -
Choisissez le nom du compartiment que vous avez configuré en tant que site web statique.
-
Choisissez Permissions.
-
Sous Block public access (bucket settings) (Bloquer l'accès public (paramètres de compartiment)), choisissez Edit (Modifier).
-
Effacez Block all public access (Bloquer tous les accès publics) et choisissez Enregistrer les modifications.
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 un chiffrement côté serveur avec des clés AWS Key Management Service (AWS KMS) (SSE-KMS), comme indiqué dans les exemples suivants.
Exiger SSE : 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 clés AWS Key Management Service (AWS KMS) (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:::/*", "Condition": { "Null": { "s3:x-amz-server-side-encryption-aws-kms-key-id": "true" } } }] }
amzn-s3-demo-bucket
Exiger SSE : KMS avec un code spécifique 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:::/*", "Condition": { "ArnNotEqualsIfExists": { "s3:x-amz-server-side-encryption-aws-kms-key-id": "arn:aws:kms:
amzn-s3-demo-bucket
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:::/*", "Condition": { "StringEquals": { "s3:x-amz-acl": [ "public-read" ] } } } ] }
amzn-s3-demo-bucket
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 accord spécifique Compte AWS (
) la possibilité de télécharger des objets uniquement si ce compte inclut les objets 111122223333
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:::/*", "Condition": { "StringEquals": {"s3:x-amz-acl":"bucket-owner-full-control"} } } ] }
amzn-s3-demo-bucket
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:::/*" ], "Condition": {"ForAnyValue:StringEquals": {"s3:RequestObjectTagKeys": [ "Owner", "CreationDate" ] } } } ] }
amzn-s3-demo-bucket
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
) avec la valeur définie sur Project
.X
{ "Version": "2012-10-17", "Statement": [ {"Principal":{"AWS":[ "arn:aws:iam::
111122223333
:user/JohnDoe
" ] }, "Effect": "Allow", "Action": [ "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::/*" ], "Condition": {"StringEquals": {"s3:RequestObjectTag/
amzn-s3-demo-bucket
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 (
) avec la valeur définie sur Department
.Finance
{ "Version": "2012-10-17", "Statement": [{ "Principal":{ "AWS":[ "arn:aws:iam::
111122223333
:user/JohnDoe
" ] }, "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::/*" ], "Condition": { "StringEquals": { "s3:RequestObjectTag/
amzn-s3-demo-bucket
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, le 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 de compartiment. 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:::/*", "Condition": { "StringEquals": { "aws:SourceAccount": "
amzn-s3-demo-bucket
-logs111111111111
" }, "ArnLike": { "aws:SourceArn": "arn:aws:s3:::EXAMPLE-SOURCE-BUCKET
" } } }, { "Sid": "RestrictToS3ServerAccessLogs
", "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::/*", "Condition": { "StringNotEqualsIfExists": { "aws:PrincipalServiceName": "logging.s3.amazonaws.com" } } } ] }
amzn-s3-demo-bucket
-logs
Autoriser l'accès uniquement à votre organisation
Si vous souhaitez que tous les IAMprincipaux accédant à une ressource proviennent d'un compte de gestion de votre organisation (y compris le compte de AWS Organizations gestion), vous pouvez utiliser la clé de condition aws:PrincipalOrgID
globale. Compte AWS
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, 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:::
/*", "Condition": { "StringEquals": { "aws:PrincipalOrgID": ["
amzn-s3-demo-bucket
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 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 à l'aide deHTTP.
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:::
", "arn:aws:s3:::
amzn-s3-demo-bucket
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
or www.example.com
avec des liens vers des photos et des vidéos stockées dans votre compartiment nomméexample.com
. 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. amzn-s3-demo-bucket
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'HTTPreferer
en-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 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'IAMutilisateur et le compartiment S3 appartiennent à la même entité Compte AWS, vous pouvez 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 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 à
un accès complet à la console à son seul dossier (JohnDoe
home/
). En créant un dossier JohnDoe
/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
:
-
: permet à l'utilisateur (AllowRootAndHomeListingOfCompanyBucket
) de lister les objets au niveau de la racine du compartimentJohnDoe
et dans le dossieramzn-s3-demo-bucket
home
. Cette instruction permet également à l'utilisateur d'effectuer une recherche sur le préfixehome/
en utilisant la console. -
: permet à l'utilisateur (AllowListingOfUserFolder
) de lister tous les objets du dossierJohnDoe
home/
et de ses sous-dossiers éventuels.JohnDoe
/ -
: permet à l'utilisateur d'effectuer toutes les actions Amazon S3 en accordant des autorisationsAllowAllS3ActionsInUserFolder
Read
,Write
etDelete
. 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:::"], "Condition": { "StringEquals": { "s3:prefix": ["", "home/", "home/
amzn-s3-demo-bucket
JohnDoe
"], "s3:delimiter": ["/"] } } }, { "Sid": "AllowListingOfUserFolder
", "Principal": { "AWS": [ "arn:aws:iam::111122223333
:user/JohnDoe
" ] }, "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::"], "Condition": { "StringLike": { "s3:prefix": ["home/
amzn-s3-demo-bucket
JohnDoe
/*"] } } }, { "Sid": "AllowAllS3ActionsInUserFolder
", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333
:user/JohnDoe
" ] }, "Action": ["s3:*"], "Resource": ["arn:aws:s3:::/home/
amzn-s3-demo-bucket
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 remplacer
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.elb-account-id
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:::
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 :
-
Remplacez
par OAI l'identifiant du. Pour trouver l'identifiant OAI du, consultez la page Origin Access IdentityEH1HDMB1FH2TC
sur la CloudFront console ou utilisez ListCloudFrontOriginAccessIdentitiesdans le CloudFront API. -
Remplacez
par le nom de votre compartiment.amzn-s3-demo-bucket
{ "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 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 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 Catalogage et analyse de vos données avec S3 Inventory 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
Catalogage et analyse de vos données avec S3 Inventory crée des listes des objets figurant dans un compartiment S3 et des métadonnées de chaque objet. L's3:PutInventoryConfiguration
autorisation 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:PutInventoryConfiguration
autorisation 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:PutInventoryConfiguration
autorisation à 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 (
) l'autorisation de créer une configuration d'inventaire de manière conditionnelle. La Ana
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
de la création d'une configuration d'inventaire, les seuls champs de métadonnées facultatifs qu'elle peut inclure sont Ana
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
de créer une configuration d'inventaire dans le compartiment source Ana
qui inclut les champs facultatifs DOC-EXAMPLE-SOURCE-BUCKET
ObjectAccessControlList
ou de ObjectOwner
métadonnées. L'utilisateur
peut toujours créer une configuration d'inventaire avec d'autres champs de métadonnées facultatifs.Ana
{ "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 Authentification multifactorielle AWS
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 en utilisant des informations d'identification temporaires émises par le AWS Security Token Service (AWS STS). Vous fournissez le MFA code au moment de la 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
dossier dans le /documents fiscaux
compartiment si la demande n'est pas authentifiée à l'aide MFA de. Pour en savoir plusMFA, consultez la section Utilisation de l'authentification multifactorielle (MFA) AWS dans le guide de l'IAMutilisateur.amzn-s3-demo-bucket
{ "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 (
) à tous. Une autre instruction restreint davantage l'accès au amzn-s3-demo-bucket
dossier du compartiment en exigeantMFA. amzn-s3-demo-bucket
/taxdocuments
{ "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
/*" } ] }
Empêcher les utilisateurs de supprimer des objets
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:DeleteObject
s3: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'utilisateur
. Une MaryMajor
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/" }, "Action": [ "s3:GetObjectVersion", "s3:GetBucketAcl" ], "Resource": [ "arn:aws:s3:::
MaryMajor
", "arn:aws:s3:::
amzn-s3-demo-bucket1
" ] }, { "Sid": "statement2", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::
amzn-s3-demo-bucket1
/*123456789012
:user/" }, "Action": [ "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:PutLifecycleConfiguration" ], "Resource": [ "arn:aws:s3:::
MaryMajor
", "arn:aws:s3:::
amzn-s3-demo-bucket1
" ] } ] }
amzn-s3-demo-bucket1
/*