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
comme valeur de ressource. Pour tester ces politiques, remplacez DOC-EXAMPLE-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 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éfixecourant ou se terminent par une extension donnée, comme .html
.
Pour plus d'informations sur les stratégies de compartiment, consultez la rubrique Utilisation des stratégies de compartiment. Pour en savoir plus sur le langage de politique AWS Identity and Access Management (IAM), consultez Stratégies et autorisations dans Amazon S3.
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.
Rubriques
- Obligation de chiffrement
- Gestion des compartiments à l'aide de listes de contrôle d'accès en prédéfinies (ACL)
- 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 d'adresses IP spécifiques
- Gestion des accès en fonction des requêtes HTTP ou HTTPS
- Gestion de l'accès des utilisateurs à des dossiers spécifiques
- Gestion des accès pour les journaux d'accès
- Gestion de l'accès à un OAI Amazon CloudFront
- 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
- Exigence d'une MFA
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 enregistré dans le compartiment soit chiffré avec un chiffrement côté serveur utilisant des 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 octroie les autorisations s3:PutObject
et s3:PutObjectAcl
à plusieurs Comptes AWS, et exige que toute requête de telles opérations doive inclure la liste de contrôle d'accès (ACL) prédéfinie public-read
. Pour plus d'informations, consultez Actions Amazon S3 et Exemples de clés de condition Amazon S3.
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 un autre Compte AWS à charger des objets dans votre compartiment tout en vous assurant d'avoir le contrôle total des objets chargés. Cette politique accorde à un Compte AWS spécifique (
) la possibilité de charger des objets uniquement si ce compte inclut la liste ACL prête à l'emploi 111122223333
bucket-owner-full-control
lors du 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 de plus amples informations, veuillez consulter 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
) 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:::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 (
) 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:::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 comportant un préfixe aws
. Services AWS prennent en charge des clés de condition globales ou des 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 globale aws:SourceArn est utilisée pour comparer l'Amazon Resource Name (ARN) de la ressource, émettant une requête de service à service avec l'ARN qui est 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 voulez exiger que tous les principaux IAM accédant à une ressource proviennent d'un Compte AWS de votre organisation (y compris le compte de gestion AWS Organizations), vous pouvez utiliser la clé de condition globale aws:PrincipalOrgID
.
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.
Cette instruction de Condition
de politique identifie
comme la plage d'adresses Internet Protocol version 4 (IPv4) autorisées. 192.0.2.0/24
Le bloc Condition
utilise la condition NotIpAddress
et la clé de condition aws:SourceIp
, qui est une clé de condition à l'échelle d'AWS. La clé de condition aws:SourceIp
ne peut être utilisée que pour les plages d'adresses IP publiques. Pour de plus amples informations sur l'utilisation de ces clés de condition, consultez la section Exemples de clés de condition Amazon S3. Les valeurs IPv4 aws:SourceIp
font appel à la notation CIDR standard. Pour de plus amples informations, veuillez consulter Références des éléments de stratégie JSON IAM dans le Guide de l'utilisateur IAM.
Avant d'employer cette politique, remplacez la plage d'adresses IP
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.192.0.2.0/24
{ "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-BUCKET1
/*" ], "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
et 192.0.2.1
et le refuse aux adresses 2001:DB8:1234:5678::1
et 203.0.113.1
.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 de plus amples informations, veuillez consulter Opérateurs de condition d'adresse IP dans le Guide de l'utilisateur IAM.
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-BUCKET1
/*" ], "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 requête renvoie true
, alors la requête a été envoyée par HTTP. Si une requête renvoie false
, alors la requête a été envoyée par HTTPS. 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 l'accès aux requêtes HTTP.
{ "Version": "2012-10-17", "Statement": [{ "Sid": "RestrictToTLSRequestsOnly", "Action": "s3:*", "Effect": "Deny", "Resource": [ "arn:aws:s3:::
DOC-EXAMPLE-BUCKET
", "arn:aws:s3:::DOC-EXAMPLE-BUCKET1
/*" ], "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
ou 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, si bien que seul le Compte AWS qui a créé ces ressources peut y accéder. DOC-EXAMPLE-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:::
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.
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, évitez d'utiliser aws:Referer
pour empêcher les parties non autorisées d'effectuer des demandes AWS directes.
La clé de condition aws:Referer
est fournie uniquement pour permettre aux clients de protéger leur contenu numérique, stocké notamment dans Simple Storage Service (Amazon S3), contre tout référencement sur des sites tiers non autorisés. Pour de plus amples informations, veuillez consulter aws:Referer dans le Guide de l'utilisateur IAM.
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 au même Compte AWS, vous pouvez utiliser une politique IAM pour accorder à l'utilisateur l'accès à un dossier spécifique du compartiment. 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 Comptes AWS différents, vous devez accorder un accès intercompte dans la politique IAM et 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 dossierDOC-EXAMPLE-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:::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-BUCKET1
/prefix
/AWSLogs/111122223333
/*" } ] }
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 votre 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::
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.
Gestion de l'accès à un OAI Amazon CloudFront
Octroi d'autorisations à une OAI Amazon CloudFront
L'exemple de stratégie de compartiment suivant autorise une identité d'accès d'origine (OAI) CloudFront à obtenir (lire) tous les objets de votre compartiment S3. Vous pouvez utiliser une OAI CloudFront pour permettre aux utilisateurs d'accéder aux objets de votre compartiment via CloudFront, mais pas directement via Amazon S3. Pour plus d'informations, consultez Restriction de l'accès au contenu Amazon S3 à l'aide d'une identité d'accès à l'origine dans le Manuel du développeur Amazon CloudFront.
La stratégie suivante utilise l'ID de l'OAI comme stratégie de Principal
. Pour plus d'informations sur l'utilisation des politiques de compartiment S3 pour accorder l'accès à un OAI CloudFront, consultez la section Migrating from origin access identity (OAI) to origin access control (OAC) [Migration de l'identité d'accès d'origine (OAI) vers le contrôle d'accès d'origine (OAC)] dans le Guide du développeur Amazon CloudFront.
Pour utiliser cet exemple :
-
Remplacez
par l'ID OAI. Pour trouver l'ID de l'identité d'accès à l'origine, consultez la page Identité d'accès à l'origineEH1HDMB1FH2TC
dans la console CloudFront, ou utilisez ListCloudFrontOriginAccessIdentities dans l'API CloudFront. -
Remplacez
par le nom de votre compartiment.DOC-EXAMPLE-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:::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 des informations au niveau de l'organisation, du compte, du compartiment, de l'objet ou du préfixe. 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 de plus amples informations, veuillez consulter É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" } } } ] }
Restreindre l'accès à un rapport d'inventaire 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'autorisation s3:PutInventoryConfiguration
permet à un utilisateur de créer un rapport d'inventaire comprenant tous les champs de métadonnées d'objet disponibles et de spécifier le compartiment de destination où stocker cet 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 S3 Inventory de toutes les métadonnées d'objet disponibles, retirez l'autorisation s3:PutInventoryConfiguration
à l'utilisateur.
Pour empêcher un utilisateur d'accéder à votre rapport S3 Inventory dans un compartiment de destination, ajoutez une politique de compartiment comme dans l'exemple suivant au compartiment de destination. Cet exemple de politique de compartiment refuse à tous les demandeurs, sauf à l'utilisatrice
, l'accès au rapport d'inventaire Ana
dans le compartiment DOC-EXAMPLE-DESTINATION-BUCKET-INVENTORY
de destination.DOC-EXAMPLE-DESTINATION-BUCKET
{ "Id": "GetObjectPolicy", "Version": "2012-10-17", "Statement": [{ "Sid": "AllowListBucket", "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::
DOC-EXAMPLE-DESTINATION-BUCKET
", "arn:aws:s3:::DOC-EXAMPLE-DESTINATION-BUCKET
/*" ], "Principal": { "AWS": [ "arn:aws:iam::111122223333
:user/Ana
" ] } }, { "Sid": "AllowACertainUserToReadObject", "Action": [ "s3:GetObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::DOC-EXAMPLE-DESTINATION-BUCKET/DOC-EXAMPLE-DESTINATION-BUCKET-INVENTORY
/*", "Principal": { "AWS": [ "arn:aws:iam::111122223333
:user/Ana
" ] } }, { "Sid": "DenyAllTheOtherUsersToReadObject", "Action": [ "s3:GetObject" ], "Effect": "Deny", "Resource": "arn:aws:s3:::DOC-EXAMPLE-DESTINATION-BUCKET/DOC-EXAMPLE-DESTINATION-BUCKET-INVENTORY
/*", "Principal": { "AWS": "*" }, "Condition": { "ArnNotEquals": { "aws:PrincipalArn": "arn:aws:iam::111122223333
:user/Ana
" } } } ] }
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 multifacteur fournit un niveau de sécurité supplémentaire que vous pouvez appliquer à votre environnement AWS. 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 de plus amples informations, veuillez consulter Authentification multifacteur AWS
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 en utilisant des informations d'identification temporaires émises par AWS Security Token Service (AWS STS). Vous fournissez le code MFA au moment de la demande AWS STS.
Quand Amazon S3 reçoit une demande 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
dans le compartiment /taxdocuments
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.DOC-EXAMPLE-BUCKET
{ "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 (
) à tous. Une autre déclaration limite encore plus l'accès au dossier DOC-EXAMPLE-BUCKET
du compartiment en requérant l'authentification MFA. DOC-EXAMPLE-BUCKET
/taxdocuments
{ "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
/*" } ] }