

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.

# Politiques de compartiment pour Amazon S3
<a name="bucket-policies"></a>

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

La propriété des objets S3 est un paramètre au niveau du compartiment Amazon S3 que vous pouvez utiliser pour contrôler la propriété des objets chargés dans votre compartiment et pour désactiver ou activer les listes de contrôle d'accès ()ACLs. Par défaut, Object Ownership est défini sur le paramètre imposé par le propriétaire du bucket et tous ACLs sont désactivés. Le propriétaire du compartiment détient tous les objets présents dans le compartiment et gère l’accès aux données exclusivement au moyen de politiques.

Les politiques de compartiment utilisent un langage de stratégie basé sur JSON Gestion des identités et des accès AWS (IAM). Vous pouvez utiliser des politiques de compartiment pour ajouter ou refuser des autorisations pour les objets d’un compartiment. Les politiques de compartiment peuvent autoriser ou refuser les requêtes en fonction des éléments de la politique. Ces éléments comprennent le demandeur, les actions S3, les ressources et les aspects ou conditions de la requête (comme l’adresse IP utilisée pour effectuer la requête). 

Par exemple, vous pouvez créer une stratégie de compartiment qui effectue les actions suivantes : 
+ Accorde à d’autres comptes des autorisations intercompte pour charger des objets dans votre compartiment S3.
+ Assurez-vous que vous, le propriétaire du compartiment, avez le contrôle total des objets chargés.

Pour de plus amples informations, veuillez consulter [Exemples de politiques de compartiment Amazon S3](example-bucket-policies.md).

**Important**  
Vous ne pouvez pas utiliser une stratégie de compartiment pour empêcher les suppressions ou les transitions régies par une règle de [cycle de vie S3](object-lifecycle-mgmt.md). Par exemple, même si votre politique de compartiment refuse toutes les actions pour tous les principaux, votre configuration du cycle de vie S3 continue de fonctionner normalement.

Les rubriques de cette section fournissent des exemples et indiquent comment ajouter une stratégie de compartiment dans la console S3. Pour plus d’informations sur l’utilisation des politiques basées sur l’identité, consultez [Politiques basées sur l’identité pour Amazon S3](security_iam_id-based-policy-examples.md). Pour plus d’informations sur le langage des politiques de compartiment, consultez [Politiques, stratégies et autorisations dans Amazon S3](access-policy-language-overview.md).

Pour plus d’informations sur les autorisations relatives aux opérations d’API S3 par type de ressource S3, consultez [Autorisations requises pour les opérations d’API Amazon S3](using-with-s3-policy-actions.md).

**Topics**
+ [Ajout d’une stratégie de compartiment à l’aide de la console Amazon S3](add-bucket-policy.md)
+ [Contrôle de l’accès à partir des points de terminaison d’un VPC avec des stratégies de compartiment](example-bucket-policies-vpc-endpoint.md)
+ [Exemples de politiques de compartiment Amazon S3](example-bucket-policies.md)
+ [Exemples de politiques de compartiment utilisant des clés de condition](amazon-s3-policy-keys.md)

# Ajout d’une stratégie de compartiment à l’aide de la console Amazon S3
<a name="add-bucket-policy"></a>

Vous pouvez utiliser le [générateur de politiques AWS](https://aws.amazon.com/blogs/aws/aws-policy-generator/) et la console Amazon S3 pour ajouter une nouvelle stratégie de compartiment ou modifier une stratégie de compartiment existante. Une politique de compartiment est une politique basée sur les ressources Gestion des identités et des accès AWS (IAM). Vous ajoutez une politique de compartiment à un compartiment pour accorder à d'autres utilisateurs Comptes AWS ou à des utilisateurs IAM des autorisations d'accès pour le compartiment et les objets qu'il contient. Les autorisations d’objets ne s’appliquent qu’aux objets créés par le propriétaire du compartiment. Pour plus d’informations sur les stratégies de compartiment, consultez [Gestion des identités et des accès pour Amazon S3](security-iam.md).

Veillez à résoudre les avertissements de sécurité, les erreurs, les avertissements généraux et les suggestions provenant d’ AWS Identity and Access Management Access Analyzer avant d’enregistrer votre stratégie. IAM Access Analyzer exécute des vérifications de politiques pour valider votre politique par rapport à la [grammaire de politique](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html) et aux [bonnes pratiques](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) IAM. Ces vérifications génèrent des résultats et fournissent des recommandations exploitables pour vous aider à créer des stratégies fonctionnelles et conformes aux bonnes pratiques en matière de sécurité. Pour en savoir plus sur la validation des politiques à l’aide d’IAM Access Analyzer, consultez [Validation de politique IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html) dans le *Guide de l’utilisateur IAM*. Pour afficher la liste des avertissements, erreurs et suggestions renvoyés par IAM Access Analyzer, consultez la [Référence de vérification de politique IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-reference-policy-checks.html).

Pour obtenir des conseils sur la résolution des erreurs liées à une politique, consultez [Résolution des erreurs d’accès refusé (403 Forbidden) dans Amazon S3](troubleshoot-403-errors.md).

**Pour créer ou modifier une politique de compartiment**

1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Dans le volet de navigation de gauche, choisissez **Compartiments à usage général** ou **Compartiments de répertoires**.

1. Dans la liste des compartiments, choisissez le nom du compartiment pour lequel vous souhaitez créer une stratégie de compartiment ou modifier une stratégie de compartiment existante.

1. Sélectionnez l’onglet **Autorisations**.

1. Sous **Politique de compartiment**, choisissez **Modifier**. La page **Edit bucket policy** (Modifier la politique de compartiment) s'affiche.

1. Dans la page **Modifier la stratégie de compartiment**, procédez de l’une des manières suivantes : 
   + Pour voir des exemples de politiques de compartiment, choisissez **Exemples de politiques**. Vous pouvez aussi consulter [Exemples de politiques de compartiment Amazon S3](example-bucket-policies.md) dans le *Guide de l’utilisateur Amazon S3*.
   + Pour générer une politique automatiquement, ou modifier le JSON dans la section **Policy** (Politique), choisissez **Policy generator** (Générateur de politique).

   Si vous choisissez le **générateur** de AWS politiques, celui-ci s'ouvre dans une nouvelle fenêtre.

   1. Sur la page **AWS Policy Generator** (Générateur de politiques), pour **Select Type of Policy** (Sélectionner le type de politique), sélectionnez **S3 Bucket Policy** (Politique de compartiment S3).

   1. Ajoutez une instruction en saisissant les informations dans les champs fournis, puis choisissez **Add Statement (Ajouter une instruction)**. Répétez l’opération pour autant d’instructions que vous souhaitez ajouter. Pour plus d’informations sur ces champs, consultez la [Référence des éléments de politique IAM JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html) dans le *Guide de l’utilisateur IAM*. 
**Note**  
Pour plus de commodité, la page **Modifier la stratégie de compartiment** affiche l’**ARN (Amazon Resource Name)** du compartiment actuel au-dessus du champ de texte **Stratégie**. Vous pouvez copier cet ARN pour l’utiliser dans les instructions de la page **AWS Policy Generator** (Générateur de politique). 

   1. Une fois que vous avez fini d’ajouter des instructions, choisissez **Generate Policy (Générer une stratégie)**.

   1. Copiez le texte de stratégie généré, choisissez **Fermer** et revenez à la page **Modifier la stratégie de compartiment** dans la console Amazon S3.

1. Dans la zone **Politique**, modifiez la politique existante ou collez la politique de compartiment depuis le générateur de AWS politiques. Veillez à résoudre les avertissements de sécurité, les erreurs, les avertissements généraux et les suggestions avant d’enregistrer votre stratégie.
**Note**  
Les politiques de compartiment sont limitées à une taille de 20 Ko.

1. (Facultatif) Choisissez **Preview external access** (Aperçu de l’accès externe) dans le coin inférieur droit pour avoir un aperçu de la façon dont votre nouvelle politique affecte l’accès public et l’accès intercompte à votre ressource. Avant d’enregistrer votre stratégie, vous pouvez vérifier si elle introduit de nouveaux résultats IAM Access Analyzer ou si elle résout les résultats existants. Si vous ne voyez pas d’analyseur actif, choisissez **Go to Access Analyzer** (Accédez à l’analyseur d’accès) pour [créer un analyseur de compte](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-getting-started.html#access-analyzer-enabling) dans l’analyseur d’accès IAM. Pour plus d’informations, consultez [Prévisualisation des accès](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-access-preview.html) dans le *Guide de l’utilisateur IAM*. 

1. Choisissez **Save changes** (Enregistrer les modifications), ce qui vous ramène à l'onglet **Permissions** (Autorisations). 

# Contrôle de l’accès à partir des points de terminaison d’un VPC avec des stratégies de compartiment
<a name="example-bucket-policies-vpc-endpoint"></a>

Vous pouvez utiliser les politiques relatives aux compartiments Amazon S3 pour contrôler l'accès aux compartiments à partir de points de terminaison de cloud privé virtuel (VPC) spécifiques ou spécifiques. VPCs Cette section contient des exemples de politiques de compartiment qui peuvent être utilisés pour contrôler l’accès aux compartiments Amazon S3 à partir des points de terminaison d’un VPC. Pour apprendre à configurer les points de terminaison d’un VPC, consultez [Points de terminaison d’un VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html) dans le *Guide de l’utilisateur VPC*. 

Un VPC vous permet de lancer des AWS ressources dans un réseau virtuel que vous définissez. Le point de terminaison d’un VPC vous permet de créer une connexion privée entre votre VPC et un autre Service AWS. Cette connexion privée ne nécessite pas d’accès via Internet, via une connexion de réseau privé virtuel (VPN), via une instance NAT ou via Direct Connect. 

Le point de terminaison d’un VPC pour Amazon S3 est une entité logique au sein d’un VPC qui permet uniquement une connexion à Amazon S3. Le point de terminaison d’un VPC achemine les demandes vers Amazon S3 et les réponses renvoyées au VPC. Les points de terminaison d’un VPC changent uniquement la manière dont les demandes sont acheminées. Les points de terminaison publics Amazon S3 et les noms DNS continuent de fonctionner avec les points de terminaison d’un VPC. Pour obtenir des informations importantes concernant l’utilisation des points de terminaison d’un VPC avec Amazon S3, consultez [Points de terminaison de passerelle](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-gateway.html) et [Points de terminaison de passerelle pour Amazon S3](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-s3.html) dans le *Guide de l’utilisateur VPC*. 

Les points de terminaison d’un VPC pour Amazon S3 offrent deux façons de contrôler l’accès à vos données Amazon S3 : 
+ Vous pouvez contrôler les demandes, les utilisateurs ou les groupes autorisés à traverser un point de terminaison d’un VPC spécifique. Pour plus d’informations sur ce type de contrôle d’accès, consultez [Contrôle de l’accès aux points de terminaison d’un VPC à l’aide de politiques de point de terminaison](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-access.html) dans le *Guide de l’utilisateur VPC*.
+ Vous pouvez contrôler quels points de terminaison VPCs ou quels points de terminaison VPC ont accès à vos compartiments en utilisant les politiques relatives aux compartiments Amazon S3. Pour obtenir des exemples de ce type de contrôle d’accès avec stratégie de compartiment, consultez les rubriques suivantes sur les restrictions d’accès.

**Topics**
+ [Restriction de l’accès à un point de terminaison d’un VPC spécifique](#example-bucket-policies-restrict-accesss-vpc-endpoint)
+ [Restriction de l’accès à un VPC spécifique](#example-bucket-policies-restrict-access-vpc)
+ [Restreindre l'accès à un point de IPv6 terminaison VPC](#example-bucket-policies-ipv6-vpc-endpoint)

**Important**  
Lors de l’application de politiques de compartiment Amazon S3 pour les points de terminaison d’un VPC décrits dans cette section, vous pouvez bloquer involontairement l’accès au compartiment. Les autorisations attribuées à un compartiment dans le but de restreindre l’accès aux connexions issues du point de terminaison de votre VPC peuvent bloquer toutes les connexions à ce compartiment. Pour plus d’informations sur la résolution de ce problème, consultez [Comment corriger ma stratégie de compartiment lorsqu’elle a le mauvais VPC ou le mauvais ID de point de terminaison du VPC ?](https://aws.amazon.com/premiumsupport/knowledge-center/s3-regain-access/) dans le *Centre de connaissances AWS Support *.

## Restriction de l’accès à un point de terminaison d’un VPC spécifique
<a name="example-bucket-policies-restrict-accesss-vpc-endpoint"></a>

Voici un exemple de stratégie de compartiment Amazon S3 qui restreint l’accès à un compartiment spécifique, `awsexamplebucket1`, uniquement à partir du point de terminaison d’un VPC doté de l’ID `vpce-1a2b3c4d`. Si le point de terminaison spécifié n’est pas utilisé, la politique refuse tout accès au compartiment. La condition `aws:SourceVpce` spécifie le point de terminaison. La condition `aws:SourceVpce` ne requiert pas d’Amazon Resource Name (ARN) pour la ressource du point de terminaison de VPC, uniquement l’ID de point de terminaison du VPC. Pour plus d’informations sur l’utilisation de conditions dans une stratégie, consultez [Exemples de politiques de compartiment utilisant des clés de condition](amazon-s3-policy-keys.md).

**Important**  
Avant d’utiliser l’exemple de stratégie suivant, remplacez l’ID de point de terminaison du VPC par une valeur appropriée pour votre cas d’utilisation. Dans le cas contraire, vous ne parviendrez pas à accéder à votre compartiment.
Cette politique désactive l’accès de la console au compartiment spécifié, car les demandes de la console ne proviennent pas du point de terminaison du VPC défini.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Id": "Policy1415115909152",
   "Statement": [
     {
       "Sid": "Access-to-specific-VPCE-only",
       "Principal": "*",
       "Action": "s3:*",
       "Effect": "Deny",
       "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket",
                    "arn:aws:s3:::amzn-s3-demo-bucket/*"],
       "Condition": {
         "StringNotEquals": {
           "aws:SourceVpce": "vpce-0abcdef1234567890"
         }
       }
     }
   ]
}
```

------

## Restriction de l’accès à un VPC spécifique
<a name="example-bucket-policies-restrict-access-vpc"></a>

Vous pouvez créer une stratégie de compartiment qui restreint l’accès à un VPC spécifique en utilisant la condition `aws:SourceVpc`. Ceci est utile si vous avez plusieurs points de terminaison d’un VPC configurés pour le même VPC et que vous voulez gérer l’accès à vos compartiments Amazon S3 pour tous vos points de terminaison. Voici un exemple de politique qui refuse l’accès à `awsexamplebucket1` et ses objets à toute personne extérieure au VPC `vpc-111bbb22`. Si le VPC spécifié n’est pas utilisé, la politique refuse tout accès au compartiment. Cette instruction n’accorde pas l’accès au compartiment. Pour autoriser l’accès, vous devez ajouter une instruction `Allow` séparée. La clé de condition `vpc-111bbb22` ne requiert pas d’ARN pour la ressource VPC, uniquement l’ID du VPC.

**Important**  
Avant d’utiliser l’exemple de stratégie suivant, remplacez l’ID du VPC par une valeur appropriée pour votre cas d’utilisation. Dans le cas contraire, vous ne parviendrez pas à accéder à votre compartiment.
Cette politique désactive l’accès de la console au compartiment spécifié, car les demandes de la console ne proviennent pas du VPC défini.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Id": "Policy1415115909153",
   "Statement": [
     {
       "Sid": "Access-to-specific-VPC-only",
       "Principal": "*",
       "Action": "s3:*",
       "Effect": "Deny",
       "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket",
                    "arn:aws:s3:::amzn-s3-demo-bucket/*"],
       "Condition": {
         "StringNotEquals": {
           "aws:SourceVpc": "vpc-1a2b3c4d"
         }
       }
     }
   ]
}
```

------

## Restreindre l'accès à un point de IPv6 terminaison VPC
<a name="example-bucket-policies-ipv6-vpc-endpoint"></a>

L'exemple de politique suivant refuse toutes les actions Amazon S3 (`s3:`) sur le *amzn-s3-demo-bucket* compartiment et ses objets, sauf si la demande provient du point de terminaison VPC spécifié `vpce-0a1b2c3d4e5f6g` () et que l'adresse IP source correspond au bloc CIDR IPv6 fourni.

```
{
   "Version": "2012-10-17", 		 	 	 
   "Id": "Policy1415115909154",
   "Statement": [
     {
       "Sid": "AccessSpecificIPv6VPCEOnly",
       "Action": "s3:*",
       "Effect": "Deny",
       "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket",
                    "arn:aws:s3:::amzn-s3-demo-bucket/*"],
       "Condition": {
         "StringNotEquals": {
           "aws:SourceVpc": "vpc-0a1b2c3d4e5f6g4h2"
         },
        "NotIpAddress": {
          "aws:VpcSourceIp": "2001:db8::/32"
        }
       }
     }
   ]
}
```

Pour plus d'informations sur la façon de restreindre l'accès à votre compartiment en fonction d'une IPs ou plusieurs adresses IP spécifiques VPCs, consultez [Comment autoriser uniquement des points de terminaison ou des adresses IP VPC spécifiques à accéder à mon compartiment Amazon S3](https://repost.aws/knowledge-center/block-s3-traffic-vpc-ip) ? dans le AWS re:Post Knowledge Center.

# Exemples de politiques de compartiment Amazon S3
<a name="example-bucket-policies"></a>

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 aux groupes d’objets qui commencent par un [préfixe](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html#keyprefix) courant ou se terminent par une extension spécifique, comme `.html`. 

Pour plus d'informations sur le langage de politique Gestion des identités et des accès AWS (IAM), consultez[Politiques, stratégies et autorisations dans Amazon S3](access-policy-language-overview.md).

Pour plus d’informations sur les autorisations relatives aux opérations d’API S3 par type de ressource S3, consultez [Autorisations requises pour les opérations d’API Amazon S3](using-with-s3-policy-actions.md).

**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](walkthrough1.md).

Voici des ressources supplémentaires pour créer des politiques de compartiment :
+ Pour obtenir la liste des actions, des ressources et des clés de condition de politique IAM que vous pouvez utiliser lors de la création d’une stratégie de compartiment, consultez [Actions, ressources et clés de condition pour Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html) dans la *Référence de l’autorisation de service*.
+ Pour plus d’informations sur les autorisations relatives aux opérations d’API S3 par type de ressource S3, consultez [Autorisations requises pour les opérations d’API Amazon S3](using-with-s3-policy-actions.md).
+ 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](add-bucket-policy.md).
+ Pour résoudre les erreurs liées à une politique, consultez [Résolution des erreurs d’accès refusé (403 Forbidden) dans Amazon S3](troubleshoot-403-errors.md).

Si vous ne parvenez pas à ajouter ou à mettre à jour une politique, consultez [Pourquoi le message d'erreur « Principal non valide dans la politique » s'affiche-t-il lorsque j'essaie de mettre à jour la politique de mon compartiment Amazon S3 ?](https://repost.aws/knowledge-center/s3-invalid-principal-in-policy-error) dans le AWS re:Post Knowledge Center.

**Topics**
+ [Octroi d’une autorisation en lecture seule à un utilisateur anonyme public](#example-bucket-policies-anonymous-user)
+ [Obligation de chiffrement](#example-bucket-policies-encryption)
+ [Gestion des seaux à l'aide de boîtes en conserve ACLs](#example-bucket-policies-public-access)
+ [Gestion de l’accès aux objets avec l’étiquetage des objets](#example-bucket-policies-object-tags)
+ [Gestion de l’accès aux objets par l’utilisation de clés de condition globales](#example-bucket-policies-global-condition-keys)
+ [Gestion des accès en fonction des requêtes HTTP ou HTTPS](#example-bucket-policies-HTTP-HTTPS)
+ [Gestion de l’accès des utilisateurs à des dossiers spécifiques](#example-bucket-policies-folders)
+ [Gestion des accès pour les journaux d’accès](#example-bucket-policies-access-logs)
+ [Gérer l'accès à un Amazon CloudFront OAI](#example-bucket-policies-cloudfront)
+ [Gestion des accès pour Amazon S3 Storage Lens](#example-bucket-policies-lens)
+ [Gestion des autorisations pour S3 Inventory, les analyses S3 et les rapports S3 Inventory](#example-bucket-policies-s3-inventory)
+ [Exigence d’une MFA](#example-bucket-policies-MFA)
+ [Empêcher les utilisateurs de supprimer des objets](#using-with-s3-actions-related-to-bucket-subresources)

## Octroi d’une autorisation en lecture seule à un utilisateur anonyme public
<a name="example-bucket-policies-anonymous-user"></a>

Vous pouvez utiliser vos paramètres de politique pour accorder l’accès à des utilisateurs anonymes publics, ce qui est utile si vous configurez votre compartiment en tant que site web statique. 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 marche à suivre et sur la politique requise, consultez [Définition des autorisations pour l’accès au site web](WebsiteAccessPermissionsReqd.md). 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 ?](https://repost.aws/knowledge-center/read-access-objects-s3-bucket) dans le AWS Knowledge Center.

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 suivre ces étapes, passez en revue [Blocage de l’accès public à votre stockage Amazon S3](access-control-block-public-access.md) pour vous assurer que vous comprenez et acceptez les risques liés à l’autorisation de l’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/](https://console.aws.amazon.com/s3/).

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

1. Choisissez **Permissions**.

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

1. Décochez **Bloquer *tous* les accès publics** et sélectionnez **Enregistrer les modifications**.  
![\[Console Amazon S3, montrant les paramètres de la fonctionnalité de blocage de l’accès public d’un compartiment.\]](http://docs.aws.amazon.com/fr_fr/AmazonS3/latest/userguide/images/edit-public-access-clear.png)

   Amazon S3 désactive les paramètres de blocage de l’accès public pour votre compartiment. Pour créer un site Web public statique, vous devrez peut-être aussi [modifier les paramètres de blocage de l’accès public](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/block-public-access-account.html) de votre compte avant d’ajouter une stratégie de compartiment. Si les paramètres de blocage de l’accès public pour votre compte sont actuellement activés, une note s’affiche sous **Bloquer l’accès public (paramètres de compartiment)**.

## Obligation de chiffrement
<a name="example-bucket-policies-encryption"></a>

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 le SSE-KMS pour tous les objets enregistrés dans un compartiment
<a name="example-bucket-policies-encryption-1"></a>

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 sera refusée.

------
#### [ JSON ]

****  

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

------

### Exiger un SSE-KMS avec un code spécifique AWS KMS key pour tous les objets écrits dans un bucket
<a name="example-bucket-policies-encryption-2"></a>

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 demande ou le chiffrement par défaut des compartiments, les objets ne peuvent pas être écrits 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.

------
#### [ JSON ]

****  

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

------

## Gestion des seaux à l'aide de boîtes en conserve ACLs
<a name="example-bucket-policies-public-access"></a>

### Octroi d'autorisations à plusieurs comptes pour télécharger des objets ou définir un objet ACLs pour un accès public
<a name="example-bucket-policies-acl-1"></a>

L’exemple de politique utilisateur suivant octroie les autorisations `s3:PutObject` et `s3:PutObjectAcl` à plusieurs Comptes AWS. De plus, cet exemple de politique exige que toute demande correspondant à ces opérations inclue [la liste ACL prédéfinie](acl-overview.md#canned-acl) `public-read`. Pour plus d’informations, consultez [Actions de politique pour Amazon S3](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-actions) et [Clés de condition de politique pour Amazon S3](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-conditionkeys).

**Avertissement**  
L’ACL prédéfinie `public-read` permet à n’importe qui dans le monde entier de visualiser les objets de votre compartiment. Soyez vigilant lors de l’octroi de l’accès anonyme à votre compartiment Amazon S3 ou de la désactivation des paramètres du blocage de l’accès public. Lorsque vous accordez un accès anonyme, tout le monde peut accéder à votre compartiment. Il est recommandé de ne jamais autoriser un accès anonyme à votre compartiment Amazon S3 à moins que vous n’en ayez spécifiquement besoin, comme dans le cas de l’[hébergement de site web statique](WebsiteHosting.md). 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/HostingWebsiteOnS3Setup.html).

------
#### [ JSON ]

****  

```
{
    "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:::amzn-s3-demo-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
<a name="example-bucket-policies-acl-2"></a>

L'exemple suivant montre comment autoriser une autre personne Compte AWS à télécharger des objets dans votre compartiment tout en vous assurant que vous avez le contrôle total des objets chargés. Cette politique accorde à un compte spécifique Compte AWS (*`111122223333`*) la possibilité de télécharger des objets uniquement si ce compte inclut l'ACL `bucket-owner-full-control` prédéfinie lors du téléchargement. La condition `StringEquals` figurant dans la politique spécifie la clé de la condition `s3:x-amz-acl` pour exprimer l’exigence de l’ACL prédéfinie. Pour de plus amples informations, veuillez consulter [Clés de condition de politique pour Amazon S3](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-conditionkeys). 

------
#### [ JSON ]

****  

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

------

## Gestion de l’accès aux objets avec l’étiquetage des objets
<a name="example-bucket-policies-object-tags"></a>

### Autoriser un utilisateur à lire uniquement les objets qui ont une clé et une valeur d’étiquette spécifiques
<a name="example-bucket-policies-tagging-1"></a>

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.

------
#### [ JSON ]

****  

```
{
   "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
<a name="example-bucket-policies-tagging-2"></a>

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](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_multi-value-conditions.html) 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.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
  "Statement": [
    {"Principal":{"AWS":[
            "arn:aws:iam::111122223333:role/JohnDoe"
         ]
       },
 "Effect": "Allow",
      "Action": [
        "s3:PutObjectTagging"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-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
<a name="example-bucket-policies-tagging-3"></a>

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`.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
  "Statement": [
    {"Principal":{"AWS":[
       "arn:aws:iam::111122223333:user/JohnDoe"
         ]
       },
      "Effect": "Allow",
      "Action": [
        "s3:PutObjectTagging"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-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
<a name="example-bucket-policies-tagging-4"></a>

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`.

------
#### [ JSON ]

****  

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

------

## Gestion de l’accès aux objets par l’utilisation de clés de condition globales
<a name="example-bucket-policies-global-condition-keys"></a>

Les [clés de condition globales](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html) sont des clés de contexte de condition avec un `aws` préfixe. Services AWS peut prendre en charge les clés de condition globales ou les clés spécifiques au service qui incluent le préfixe du service. Vous pouvez utiliser l’élément `Condition` d’une politique JSON pour comparer les clés d’une requête avec les valeurs des clés que vous spécifiez dans votre politique.

### Restreindre l’accès aux seules livraisons du journal d’accès du serveur Amazon S3
<a name="example-bucket-policies-global-condition-keys-1"></a>

Dans l'exemple de politique de compartiment suivant, la clé de condition [https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)globale est utilisée pour comparer le [nom de ressource Amazon (ARN)](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns) de la ressource, en effectuant une service-to-service demande avec l'ARN spécifié dans la politique. La clé de condition globale `aws:SourceArn` est utilisée pour empêcher le service Amazon S3 d’être utilisé comme [adjoint confus](https://docs.aws.amazon.com//IAM/latest/UserGuide/confused-deputy.html) 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`). 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowPutObjectS3ServerAccessLogsPolicy",
            "Principal": {
                "Service": "logging.s3.amazonaws.com"
            },
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket-logs/*",
            "Condition": {
                "StringEquals": {
                "aws:SourceAccount": "111122223333"
                },
                "ArnLike": {
                "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-source-bucket1"
                }
            }
        },
        {
            "Sid": "RestrictToS3ServerAccessLogs",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket-logs/*",
            "Condition": {
                "ForAllValues:StringNotEquals": {
                    "aws:PrincipalServiceNamesList": "logging.s3.amazonaws.com"
                }
            }
        }
    ]
}
```

------

### Autoriser l'accès uniquement à votre organisation
<a name="example-bucket-policies-global-condition-keys-2"></a>

Si vous souhaitez que tous les [principaux IAM accédant à](https://docs.aws.amazon.com//IAM/latest/UserGuide/intro-structure.html#intro-structure-principal) une ressource proviennent d'un Compte AWS compte de gestion (y compris le compte de AWS Organizations gestion), vous pouvez utiliser la clé de condition `aws:PrincipalOrgID` globale.

Pour accorder ou restreindre ce type d’accès, définissez la condition `aws:PrincipalOrgID` et définissez la valeur de l’[ID de votre organisation](https://docs.aws.amazon.com//organizations/latest/userguide/orgs_manage_org_details.html) dans la stratégie 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 stratégie de compartiment sont également appliquées à tous les nouveaux comptes qui sont ajoutés à l’organisation.

Voici un exemple de stratégie 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 stratégie 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](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-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.

------
#### [ JSON ]

****  

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

------

## Gestion des accès en fonction des requêtes HTTP ou HTTPS
<a name="example-bucket-policies-HTTP-HTTPS"></a>

### Restreindre l’accès aux seules requêtes HTTPS
<a name="example-bucket-policies-use-case-HTTP-HTTPS-1"></a>

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 [https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-securetransport](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-securetransport) dans votre stratégie de compartiment S3. La clé de condition `aws:SecureTransport` vérifie si une requête a été envoyée en utilisant HTTP.

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

Dans l’exemple suivant, la stratégie de compartiment refuse explicitement les demandes HTTP. 

------
#### [ JSON ]

****  

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

------

### Restreindre l’accès à un référent HTTP spécifique
<a name="example-bucket-policies-HTTP-HTTPS-2"></a>

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

Pour autoriser l’accès en lecture à ces objets à partir de votre site Web, vous pouvez ajouter une stratégie 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 condition `StringLike` avec la clé de condition `aws:Referer`.

Veillez à ce que les navigateurs que vous utilisez incluent l’en-tête HTTP `referer` dans la demande.

**Avertissement**  
Nous vous recommandons de faire preuve de prudence lorsque vous utilisez la clé de condition `aws:Referer`. Il est dangereux d’inclure une valeur d’en-tête de référent HTTP connu publiquement. Les tiers non autorisés peuvent utiliser des navigateurs modifiés ou personnalisés pour fournir n’importe quelle valeur `aws:Referer` de leur choix. Par conséquent, ne l'utilisez pas `aws:Referer` pour empêcher des parties non autorisées de faire des AWS demandes directes.   
La clé de condition `aws:Referer` est fournie uniquement pour permettre aux clients de protéger leur contenu numérique, stocké notamment dans Simple Storage Service (Amazon S3), contre tout référencement sur des sites tiers non autorisés. Pour plus d’informations, consultez [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-referer](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-referer) dans le *Guide de l’utilisateur IAM*.

## Gestion de l’accès des utilisateurs à des dossiers spécifiques
<a name="example-bucket-policies-folders"></a>

### Accorder aux utilisateurs l’accès à des dossiers spécifiques
<a name="example-bucket-policies-folders-1"></a>

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

Si l'identité IAM et le compartiment S3 appartiennent à des entités différentes Comptes AWS, vous devez accorder un accès entre comptes à la fois dans la politique IAM et dans la politique de compartiment. Pour plus d’informations sur l’octroi d’un accès intercompte, consultez [Bucket owner granting cross-account bucket permissions](https://docs.aws.amazon.com//AmazonS3/latest/userguide/example-walkthroughs-managing-access-example2.html) (Propriétaire du compartiment accordant des autorisations intercomptes pour le compartiment).

L’exemple suivant de stratégie 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 `amzn-s3-demo-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.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowRootAndHomeListingOfCompanyBucket",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:user/JohnDoe"
                ]
            },
            "Effect": "Allow",
            "Action": ["s3:ListBucket"],
            "Resource": ["arn:aws:s3:::amzn-s3-demo-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:::amzn-s3-demo-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:::amzn-s3-demo-bucket/home/JohnDoe/*"]
        }
    ]
}
```

------

## Gestion des accès pour les journaux d’accès
<a name="example-bucket-policies-access-logs"></a>

### Accorder l’accès à l’Application Load Balancer pour activer les journaux d’accès
<a name="example-bucket-policies-access-logs-1"></a>

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](https://docs.aws.amazon.com//elasticloadbalancing/latest/application/enable-access-logging.html#access-log-create-bucket). Le compartiment doit comporter une [politique attachée](https://docs.aws.amazon.com//elasticloadbalancing/latest/application/enable-access-logging.html#attach-bucket-policy) qui accorde à Elastic Load Balancing l’autorisation d’écrire dans le compartiment.

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

------
#### [ JSON ]

****  

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

------

**Note**  
Assurez-vous de remplacer `elb-account-id` par l’ID du Compte AWS d’Elastic Load Balancing pour votre Région AWS. Pour obtenir la liste des régions Elastic Load Balancing, consultez [Attach a policy to your Amazon S3 bucket](https://docs.aws.amazon.com//elasticloadbalancing/latest/classic/enable-access-logs.html#attach-bucket-policy) (Association d’une politique à votre compartiment Amazon S3) dans le *Guide de l’utilisateur Elastic Load Balancing*.

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

------
#### [ JSON ]

****  

```
{
  "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](https://docs.aws.amazon.com//elasticloadbalancing/latest/application/enable-access-logging.html#enable-access-logs) en les activant. Vous pouvez [vérifier les autorisations de votre compartiment](https://docs.aws.amazon.com//elasticloadbalancing/latest/application/enable-access-logging.html#verify-bucket-permissions) en créant un fichier de test.

## Gérer l'accès à un Amazon CloudFront OAI
<a name="example-bucket-policies-cloudfront"></a>

### Accorder une autorisation à un Amazon CloudFront OAI
<a name="example-bucket-policies-cloudfront-1"></a>

L'exemple de politique de compartiment suivant accorde à une identité CloudFront d'accès d'origine (OAI) l'autorisation d'obtenir (lire) tous les objets de votre compartiment S3. Vous pouvez utiliser un CloudFront OAI pour autoriser les utilisateurs à accéder aux objets de votre compartiment via Amazon S3 CloudFront , mais pas directement. Pour plus d'informations, consultez [Restreindre l'accès au contenu Amazon S3 à l'aide d'une identité d'accès d'origine](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html) dans le manuel *Amazon CloudFront Developer Guide*.

La stratégie suivante utilise l’ID de l’OAI comme stratégie de `Principal`. *Pour plus d'informations sur l'utilisation des politiques de compartiment S3 pour accorder l'accès à un CloudFront OAI, consultez la section [Migration de l'identité d'accès d'origine (OAI) vers le contrôle d'accès d'origine (OAC) dans](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html#migrate-from-oai-to-oac) le manuel Amazon Developer Guide. CloudFront *

Pour utiliser cet exemple :
+ Remplacez `EH1HDMB1FH2TC` par l’ID OAI. Pour trouver l'ID de l'OAI, consultez la [page Origin Access Identity](https://console.aws.amazon.com/cloudfront/home?region=us-east-1#oai:) sur la CloudFront console ou utilisez-le [https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListCloudFrontOriginAccessIdentities.html](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListCloudFrontOriginAccessIdentities.html)dans l' CloudFront API.
+ Remplacez `amzn-s3-demo-bucket` par le nom de votre compartiment.

------
#### [ JSON ]

****  

```
{
    "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
<a name="example-bucket-policies-lens"></a>

### Accorder des autorisations pour Amazon S3 Storage Lens
<a name="example-bucket-policies-lens-1"></a>

S3 Storage Lens regroupe vos métriques et affiche les informations dans la section **Instantané du compte** sur la page **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 valeurs aberrantes et recevoir des recommandations pour optimiser les coûts de stockage et appliquer les meilleures pratiques en matière de protection des données. Votre tableau de bord comporte des options d'exploration permettant de générer et de visualiser des informations au niveau de l'organisation, du compte, de la classe de stockage Région AWS, du bucket, du préfixe ou du groupe Storage Lens. Vous pouvez également envoyer un rapport de mesures quotidiennes au format CSV ou Parquet au format CSV vers un compartiment S3 à usage général ou exporter les métriques directement vers un compartiment de table S3 AWS géré.

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 stratégie de compartiment pour le compartiment de destination. Pour plus d’informations, consultez [Surveillance de votre activité et de votre utilisation du stockage avec Amazon S3 Storage Lens](storage_lens.md).

L’exemple de stratégie 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.

------
#### [ JSON ]

****  

```
{
    "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 stratégie de compartiment précédente.

```
1. "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/destination-prefix/StorageLens/your-organization-id/*",
```

## Gestion des autorisations pour S3 Inventory, les analyses S3 et les rapports S3 Inventory
<a name="example-bucket-policies-s3-inventory"></a>

### Accorder des autorisations pour S3 Inventory et les analyses S3.
<a name="example-bucket-policies-s3-inventory-1"></a>

S3 Inventory 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 stratégie de compartiment pour le compartiment de destination. Pour plus d’informations, consultez [Catalogage et analyse de vos données avec S3 Inventory](storage-inventory.md) et [Analyses Amazon S3 - Analyse de classe de stockage](analytics-storage-class.md).

L’exemple de stratégie 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 stratégie de compartiment comme celle-ci sur le compartiment de destination lors de la configuration de S3 Inventory et de l’exportation des analyses S3.

------
#### [ JSON ]

****  

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

------

### Création de la configuration des rapports S3 Inventory
<a name="example-bucket-policies-s3-inventory-2"></a>

[Catalogage et analyse de vos données avec S3 Inventory](storage-inventory.md) 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 une configuration d’inventaire comprenant tous les champs de métadonnées d’objet disponibles par défaut 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 Amazon S3 Inventory](storage-inventory.md#storage-inventory-contents).

Pour empêcher un utilisateur de configurer un rapport S3 Inventory, supprimez l’autorisation `s3:PutInventoryConfiguration` de l’utilisateur.

Certains champs de métadonnées d’objet dans les configurations des rapports d’inventaire S3 sont facultatifs. En d’autres termes, ils sont disponibles par défaut, mais ils peuvent être restreints lorsque vous accordez l’autorisation `s3:PutInventoryConfiguration` à 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 condition `s3:InventoryAccessibleOptionalFields`. Pour obtenir la liste des champs de métadonnées facultatifs disponibles dans S3 Inventory, consultez [https://docs.aws.amazon.com//AmazonS3/latest/API/API_PutBucketInventoryConfiguration.html#API_PutBucketInventoryConfiguration_RequestBody](https://docs.aws.amazon.com//AmazonS3/latest/API/API_PutBucketInventoryConfiguration.html#API_PutBucketInventoryConfiguration_RequestBody) dans la *Référence des API Amazon Simple Storage Service*.

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

L’exemple de politique suivant accorde à un utilisateur (`Ana`) l’autorisation de créer une configuration d’inventaire de manière conditionnelle. Dans cette politique, la condition `ForAllValues:StringEquals` utilise la clé de condition `s3:InventoryAccessibleOptionalFields` pour spécifier les deux champs de métadonnées facultatifs autorisés, à savoir `Size` et `StorageClass`. Ainsi, lorsqu’`Ana` créera une configuration d’inventaire, les seuls champs de métadonnées facultatifs qu’elle pourra inclure seront `Size` et `StorageClass`. 

------
#### [ JSON ]

****  

```
{
	"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 S3 Inventory comprenant des champs de métadonnées facultatifs spécifiques, ajoutez une instruction `Deny` explicite à la stratégie du compartiment source. L’exemple de stratégie de compartiment suivant interdit à l’utilisatrice `Ana` de créer une configuration d’inventaire dans le compartiment source `amzn-s3-demo-source-bucket` avec les champs de métadonnées `ObjectAccessControlList` ou `ObjectOwner` facultatifs. L’utilisatrice `Ana` pourra toujours créer une configuration d’inventaire avec d’autres champs de métadonnées facultatifs.

```
 1. {
 2. 	"Id": "InventoryConfigSomeFields",
 3. 	"Version": "2012-10-17",		 	 	 
 4. 	"Statement": [{
 5. 			"Sid": "AllowInventoryCreation",
 6. 			"Effect": "Allow",
 7. 			"Principal": {
 8. 				"AWS": "arn:aws:iam::111122223333:user/Ana"
 9. 			},
10. 			"Action": "s3:PutInventoryConfiguration",			
11. 			"Resource": 
12. 				"arn:aws:s3:::amzn-s3-demo-source-bucket",
13. 
14. 		},
15. 		{
16. 			"Sid": "DenyCertainInventoryFieldCreation",
17. 			"Effect": "Deny",
18. 			"Principal": {
19. 				"AWS": "arn:aws:iam::111122223333:user/Ana"
20. 			},
21. 			"Action": "s3:PutInventoryConfiguration",	
22. 			"Resource": 
23. 			  "arn:aws:s3:::amzn-s3-demo-source-bucket",			
24. 			"Condition": {
25. 				"ForAnyValue:StringEquals": {
26. 					"s3:InventoryAccessibleOptionalFields": [
27. 					   "ObjectOwner",
28. 					   "ObjectAccessControlList"
29. 					   ]
30. 				  }
31. 				}
32. 			}
33. 	]
34. }
```

**Note**  
L’utilisation de la clé de condition `s3:InventoryAccessibleOptionalFields` dans les politiques de compartiment n’affecte pas la livraison des rapports d’inventaire basés sur les configurations d’inventaire existantes. 

**Important**  
Nous vous recommandons d’utiliser `ForAllValues` avec un effet `Allow` ou `ForAnyValue` avec un effet `Deny`, comme indiqué dans les exemples précédents.  
N’utilisez pas `ForAllValues` avec l’effet `Deny` ni `ForAnyValue` avec l’effet `Allow`, 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 d’ensemble de conditions `ForAllValues` et `ForAnyValue`, consultez [Clés de contexte à valeurs multiples](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-single-vs-multi-valued-context-keys.html#reference_policies_condition-multi-valued-context-keys) dans le *Guide de l’utilisateur IAM*.

## Exigence d’une MFA
<a name="example-bucket-policies-MFA"></a>

Amazon S3 prend en charge l’accès aux API protégé par MFA, une fonction qui peut appliquer l’authentification multifactorielle (MFA) pour l’accès à vos ressources Amazon S3. L'authentification multifactorielle fournit un niveau de sécurité supplémentaire que vous pouvez appliquer à votre AWS environnement. L’authentification MFA est une fonctionnalité de sécurité qui impose aux utilisateurs de prouver qu’ils détiennent physiquement un appareil d’authentification MFA en fournissant un code d’authentification MFA valide. Pour plus d’informations, consultez [Authentification multifactorielle AWS](https://aws.amazon.com/mfa/). Vous pouvez exiger l’authentification MFA pour toutes les demandes d’accès à vos ressources Amazon S3. 

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

Quand Amazon S3 reçoit une demande d’authentification multifacteur, la clé de condition `aws:MultiFactorAuthAge` fournit une valeur numérique indiquant le temps écoulé (en secondes) depuis la création des informations d’identification temporaires. Si les informations d’identification temporaires fournies dans la demande n’ont pas été créées à l’aide d’un appareil d’authentification MFA, la valeur de cette clé est null (absente). Dans une stratégie de compartiment, vous pouvez ajouter une condition pour vérifier cette valeur, comme illustré dans l’exemple suivant. 

Cet exemple de politique refuse toute opération Amazon S3 sur le dossier *`/taxdocuments`* dans le compartiment `amzn-s3-demo-bucket` si la demande n’a pas été authentifiée à l’aide de l’authentification MFA. Pour en savoir plus sur MFA, consultez [Utilisation de l’authentification multifacteur (MFA) dans AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa.html) dans le *Guide de l’utilisateur IAM*.

------
#### [ JSON ]

****  

```
{
    "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 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. La politique suivante comprend deux instructions de politique. Une déclaration accorde l’autorisation `s3:GetObject` sur un compartiment (`amzn-s3-demo-bucket`) à tous. Une autre déclaration limite encore plus l’accès au dossier `amzn-s3-demo-bucket/taxdocuments` du compartiment en requérant l’authentification MFA. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "123",
    "Statement": [
      {
        "Sid": "DenyInsecureConnections",
        "Effect": "Deny",
        "Principal": {
            "AWS": "arn:aws:iam::111122223333:root"
        },
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/taxdocuments/*",
        "Condition": { "Null": { "aws:MultiFactorAuthAge": true } }
      },
      {
        "Sid": "AllowGetObject",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::111122223333:root"
        },
        "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 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). 

------
#### [ JSON ]

****  

```
{
    "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
<a name="using-with-s3-actions-related-to-bucket-subresources"></a>

Par défaut, les utilisateurs ne disposent d’aucune autorisation. Toutefois, lorsque vous créez des politiques, vous pouvez accorder à des utilisateurs des autorisations que vous n’aviez pas l’intention d’accorder. Pour éviter ces failles d’autorisation, vous pouvez écrire une stratégie d’accès plus stricte en ajoutant un refus explicite. 

Pour empêcher explicitement des utilisateurs ou des comptes de supprimer des objets, vous devez ajouter les actions suivantes à une stratégie de compartiment : autorisations `s3:DeleteObject`, `s3:DeleteObjectVersion` et `s3:PutLifecycleConfiguration`. Ces trois actions sont nécessaires, car vous pouvez supprimer des objets soit en appelant explicitement les opérations d’API [Gestion du cycle de vie des objets](object-lifecycle-mgmt.md), soit en configurant leur cycle de vie (voir `DELETE Object`) afin qu’Amazon S3 puisse supprimer les objets lorsqu’ils arrivent à la fin de leur cycle de vie.

Dans l’exemple de politique suivant, vous refusez explicitement les autorisations `DELETE Object` à l’utilisatrice `MaryMajor`. L’instruction `Deny` explicite a toujours priorité sur n’importe quelle autre autorisation accordée.

------
#### [ JSON ]

****  

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

------

# Exemples de politiques de compartiment utilisant des clés de condition
<a name="amazon-s3-policy-keys"></a>

Vous pouvez utiliser le langage de la politique d’accès pour spécifier des conditions lorsque vous accordez des autorisations. Vous pouvez utiliser l’élément `Condition` facultatif ou le bloc `Condition` pour spécifier des conditions lorsqu’une politique est appliquée. 

Pour les stratégies qui utilisent des clés de condition Amazon S3 pour les opérations d’objet et de compartiment, consultez les exemples suivants. Pour plus d’informations sur les clés de condition, consultez [Clés de condition de politique pour Amazon S3](security_iam_service-with-iam.md#security_iam_service-with-iam-id-based-policies-conditionkeys). Pour obtenir la liste complète des actions, des clés de condition et des ressources Amazon S3 que vous pouvez spécifier dans les politiques, consultez [Actions, ressources et clés de condition pour Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html) dans la *Référence de l’autorisation de service*.

Pour plus d’informations sur les autorisations relatives aux opérations d’API S3 par type de ressource S3, consultez [Autorisations requises pour les opérations d’API Amazon S3](using-with-s3-policy-actions.md).

## Exemples : clés de condition Amazon S3 pour les opérations d’objet
<a name="object-keys-in-amazon-s3-policies"></a>

Les exemples suivants montrent comment utiliser des clés de condition spécifiques à Amazon S3 pour les opérations au niveau des objets. Pour obtenir la liste complète des actions, des clés de condition et des ressources Amazon S3 que vous pouvez spécifier dans les politiques, consultez [Actions, ressources et clés de condition pour Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html) dans la *Référence de l’autorisation de service*.

Pour plus d’informations sur les autorisations relatives aux opérations d’API S3 par type de ressource S3, consultez [Autorisations requises pour les opérations d’API Amazon S3](using-with-s3-policy-actions.md).

Plusieurs exemples de stratégies montrent comment vous pouvez utiliser des clés de condition avec des opérations [PUT Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html). Les opérations PUT Object autorisent les entêtes spécifiques à la liste de contrôle d’accès (ACL) que vous pouvez utiliser pour accorder des autorisations basées sur les listes ACL. En utilisant ces clés de condition, vous pouvez définir une condition pour exiger des autorisations d’accès spécifiques lorsque l’utilisateur charge un objet. Vous pouvez également accorder des autorisations basées sur l'ACL lors de l'opération. PutObjectAcl Pour plus d'informations, consultez [PutObjectAcl](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html)le manuel *Amazon S3 Amazon Simple Storage Service API Reference*. Pour plus d'informations sur ACLs, voir[Présentation de la liste de contrôle d’accès (ACL)](acl-overview.md).

**Topics**
+ [Exemple 1 : Octroyer l’autorisation `s3:PutObject` exigeant que les objets soient stockés en utilisant le chiffrement côté serveur](#putobject-require-sse-2)
+ [Exemple 2 : Octroyer l’autorisation `s3:PutObject` pour copier des objets avec une restriction sur la source de copie](#putobject-limit-copy-source-3)
+ [Exemple 3 : Octroyer l’accès à une version spécifique d’un objet](#getobjectversion-limit-access-to-specific-version-3)
+ [Exemple 4 : Octroi d’autorisations basées sur des balises d’objets](#example-object-tagging-access-control)
+ [Exemple 5 : restriction de l'accès en fonction de l' Compte AWS ID du propriétaire du compartiment](#example-object-resource-account)
+ [Exemple 6 : Exiger une version minimale de TLS](#example-object-tls-version)
+ [Exemple 7 : Exclure certains principaux d’une instruction `Deny`](#example-exclude-principal-from-deny-statement)
+ [Exemple 8 : obliger les clients à télécharger des objets de manière conditionnelle en fonction des noms de clés des objets ou ETags](#example-conditional-writes-enforce)

### Exemple 1 : Octroyer l’autorisation `s3:PutObject` exigeant que les objets soient stockés en utilisant le chiffrement côté serveur
<a name="putobject-require-sse-2"></a>

Supposons que le Compte A possède un compartiment. L’administrateur du compte souhaite accorder à Jane, une utilisatrice du compte A, l’autorisation de charger des objets avec cette condition : Jane doit toujours demander le chiffrement côté serveur avec des clés gérées par Amazon S3 (SSE-S3). L’administrateur du compte A peut utiliser la clé de condition `s3:x-amz-server-side-encryption` pour spécifier cette exigence, comme illustré. La paire clé-valeur du bloc `Condition` suivant spécifie la clé de condition `s3:x-amz-server-side-encryption` et SSE-S3 (`AES256`) comme type de chiffrement :

```
"Condition": {
     "StringNotEquals": {
         "s3:x-amz-server-side-encryption": "AES256"
     }}
```

Lorsque vous testez cette autorisation à l'aide du AWS CLI, vous devez ajouter le chiffrement requis à l'aide du `--server-side-encryption` paramètre, comme indiqué dans l'exemple suivant. Pour utiliser cet exemple de commande, remplacez `user input placeholders` par vos propres informations. 

```
aws s3api put-object --bucket amzn-s3-demo-bucket --key HappyFace.jpg --body c:\HappyFace.jpg --server-side-encryption "AES256" --profile AccountAadmin
```

### Exemple 2 : Octroyer l’autorisation `s3:PutObject` pour copier des objets avec une restriction sur la source de copie
<a name="putobject-limit-copy-source-3"></a>

Dans la demande `PUT`, quand vous spécifiez un objet source, il s’agit d’une opération de copie (voir [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html)). En conséquence, le propriétaire du compartiment peut octroyer une autorisation utilisateur pour copier des objets avec des restrictions sur la source, par exemple :
+ Autoriser la copie des objets uniquement à partir du compartiment source spécifié (par exemple, `amzn-s3-demo-source-bucket`)
+ Autoriser la copie d’objets à partir du compartiment source spécifié et uniquement les objets dont le préfixe de nom de clé commence par *`public/`* (par exemple, `amzn-s3-demo-source-bucket/public/*`)
+ Autoriser la copie d’un objet spécifique uniquement à partir du compartiment source (par exemple, `amzn-s3-demo-source-bucket/example.jpg`)

La stratégie de compartiment suivante accorde à l’utilisateur (`Dave`) l’autorisation `s3:PutObject`. Cette politique lui permet de copier des objets uniquement à la condition que la demande inclue l’en-tête `s3:x-amz-copy-source` et que la valeur de l’en-tête spécifie le préfixe de nom de clé `/amzn-s3-demo-source-bucket/public/*`. Pour utiliser cet exemple de politique, remplacez `user input placeholders` par vos propres informations.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
       {
            "Sid": "cross-account permission to user in your own account",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/Dave"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
        },
        {
            "Sid": "Deny your user permission to upload object if copy source is not /bucket/prefix",
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/Dave"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-source-bucket/*",
            "Condition": {
                "StringNotLike": {
                    "s3:x-amz-copy-source": "amzn-s3-demo-source-bucket/public/*"
                }
            }
        }
    ]
}
```

------

**Testez la politique à l'aide du AWS CLI**  
Vous pouvez tester l'autorisation à l'aide de la AWS CLI `copy-object` commande. Vous spécifiez la source en ajoutant le paramètre `--copy-source`, le préfixe du nom de clé doit correspondre au préfixe autorisé dans la stratégie. Vous devez fournir à l’utilisateur Dave les informations d’identification en utilisant le paramètre `--profile`. Pour plus d'informations sur la configuration du AWS CLI, consultez la section [Développement avec Amazon S3 à l'aide de la AWS CLI](https://docs.aws.amazon.com/AmazonS3/latest/API/setup-aws-cli.html) dans le *manuel Amazon S3 API Reference*.

```
aws s3api copy-object --bucket amzn-s3-demo-source-bucket --key HappyFace.jpg 
--copy-source amzn-s3-demo-source-bucket/public/PublicHappyFace1.jpg --profile AccountADave
```

**Octroyer une autorisation pour copier uniquement un objet spécifique**  
La stratégie précédente utilise la condition `StringNotLike`. Pour accorder l’autorisation de copier uniquement un objet spécifique, vous devez remplacer la condition `StringNotLike` par `StringNotEquals`, puis spécifier la clé d’objet exacte, comme indiqué dans l’exemple suivant. Pour utiliser cet exemple de commande, remplacez `user input placeholders` par vos propres informations.

```
"Condition": {
       "StringNotEquals": {
           "s3:x-amz-copy-source": "amzn-s3-demo-source-bucket/public/PublicHappyFace1.jpg"
       }
}
```

### Exemple 3 : Octroyer l’accès à une version spécifique d’un objet
<a name="getobjectversion-limit-access-to-specific-version-3"></a>

Supposons que le compte A possède un compartiment pour lequel la gestion des versions est activée. Le compartiment a plusieurs versions de l’objet `HappyFace.jpg`. L’administrateur du compte A souhaite maintenant octroyer à l’utilisateur `Dave` l’autorisation d’obtenir uniquement une version spécifique de l’objet. Pour ce faire, l’administrateur du compte octroie à `Dave` l’autorisation `s3:GetObjectVersion` de manière conditionnelle, comme indiqué dans l’exemple suivant. La paire de clé-valeur dans le bloc `Condition` spécifie la clé de condition `s3:VersionId`. Dans ce cas, pour récupérer l’objet à partir du compartiment spécifié pour lequel la gestion des versions est activée, `Dave` doit connaître l’ID exact de la version de l’objet. Pour utiliser cet exemple de politique, remplacez `user input placeholders` par vos propres informations.

Pour plus d’informations, consultez [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html) dans la *Référence d’API Amazon Simple Storage Service*. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "statement1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/Dave"
            },
            "Action": "s3:GetObjectVersion",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/HappyFace.jpg"
        },
        {
            "Sid": "statement2",
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/Dave"
            },
            "Action": "s3:GetObjectVersion",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/HappyFace.jpg",
            "Condition": {
                "StringNotEquals": {
                    "s3:VersionId": "AaaHbAQitwiL_h47_44lRO2DDfLlBO5e"
                }
            }
        }
    ]
}
```

------

**Testez la politique à l'aide du AWS CLI**  
Vous pouvez tester les autorisations définies dans cette politique en utilisant la AWS CLI `get-object` commande associée au `--version-id` paramètre pour identifier la version d'objet spécifique à récupérer. Cette commande récupère la version spécifiée de l’objet et l’enregistre dans le fichier `OutputFile.jpg`.

```
aws s3api get-object --bucket amzn-s3-demo-bucket --key HappyFace.jpg OutputFile.jpg --version-id AaaHbAQitwiL_h47_44lRO2DDfLlBO5e --profile AccountADave
```

### Exemple 4 : Octroi d’autorisations basées sur des balises d’objets
<a name="example-object-tagging-access-control"></a>

Pour obtenir des exemples sur l’utilisation des clés de condition de balisage d’objet avec des opérations Amazon S3, consultez [Stratégies de balisage et de contrôle d’accès](tagging-and-policies.md).

### Exemple 5 : restriction de l'accès en fonction de l' Compte AWS ID du propriétaire du compartiment
<a name="example-object-resource-account"></a>

Vous pouvez utiliser la clé de `s3:ResourceAccount` condition `aws:ResourceAccount` ou pour écrire des politiques de point de terminaison IAM ou de cloud privé virtuel (VPC) qui limitent l'accès des utilisateurs, des rôles ou des applications aux compartiments Amazon S3 détenus par un identifiant spécifique. Compte AWS Vous pouvez utiliser cette clé de condition pour empêcher des clients de votre VPC d’accéder aux compartiments dont vous n’êtes pas propriétaire.

Sachez toutefois que certains AWS services dépendent de l'accès à des buckets AWS gérés. Par conséquent, l’utilisation de la clé `aws:ResourceAccount` ou `s3:ResourceAccount` dans votre politique IAM risque également d’avoir un impact sur l’accès à ces ressources. Pour plus d’informations, consultez les ressources suivantes :
+ [Restreindre l’accès aux compartiments dans un Compte AWS spécifié](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html#bucket-policies-s3) dans le *Guide AWS PrivateLink *
+ [Restreindre l’accès aux compartiments utilisés par Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/vpc-endpoints.html#ecr-minimum-s3-perms) dans le *Guide de l’utilisateur Amazon ECR*
+ [Fournissez l'accès requis à Systems Manager pour les buckets Amazon S3 AWS gérés](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent-minimum-s3-permissions.html) *dans le Guide AWS Systems Manager *

Pour plus d’informations sur les clés de condition `aws:ResourceAccount` et `s3:ResourceAccount`, et pour obtenir des exemples illustrant leur utilisation, consultez [Limiter l’accès aux compartiments Amazon S3 détenus par des Comptes AWS spécifiques](https://aws.amazon.com/blogs/storage/limit-access-to-amazon-s3-buckets-owned-by-specific-aws-accounts/) dans le *blog AWS Storage*.

### Exemple 6 : Exiger une version minimale de TLS
<a name="example-object-tls-version"></a>

Vous pouvez utiliser la clé de condition `s3:TlsVersion` afin d’écrire des politiques IAM, des politiques de point de terminaison de cloud privé virtuel (VPC) ou des politiques de compartiment pour restreindre l’accès des utilisateurs ou des applications aux compartiments Amazon S3 en fonction de la version TLS utilisée par le client. Vous pouvez utiliser cette clé de condition pour écrire des stratégies qui nécessitent une version TLS minimale. 

**Note**  
Lorsque AWS les services appellent d'autres AWS services en votre nom (service-to-service appels), certains contextes d'autorisation spécifiques au réseau sont supprimés, notamment `s3:TlsVersion``aws:SecureTransport`, `aws:SourceIp` et. `aws:VpcSourceIp` Si votre politique utilise ces clés de condition avec des `Deny` instructions, les principaux AWS de service risquent d'être bloqués par inadvertance. Pour permettre aux AWS services de fonctionner correctement tout en respectant vos exigences de sécurité, excluez les principaux de service de vos `Deny` relevés en ajoutant la clé de `aws:PrincipalIsAWSService` condition avec une valeur de`false`. Par exemple :  

```
{
  "Effect": "Deny",
  "Action": "s3:*",
  "Resource": "*",
  "Condition": {
    "Bool": {
      "aws:SecureTransport": "false",
      "aws:PrincipalIsAWSService": "false"
    }
  }
}
```
Cette politique refuse l'accès aux opérations S3 lorsque le protocole HTTPS n'est pas utilisé (`aws:SecureTransport`c'est faux), mais uniquement pour les opérateurs non AWS liés au service. Cela garantit que vos restrictions conditionnelles s'appliquent à tous les principaux, à l'exception des principaux AWS de service.

**Example**  
Cet exemple de stratégie de compartiment *refuse* les demandes `PutObject` des clients dont la version TLS est inférieure à 1.2, par exemple 1.1 ou 1.0. Pour utiliser cet exemple de politique, remplacez `user input placeholders` par vos propres informations.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket1",
                "arn:aws:s3:::amzn-s3-demo-bucket1/*"
            ],
            "Condition": {
                "NumericLessThan": {
                    "s3:TlsVersion": 1.2
                }
            }
        }
    ]
}
```

**Example**  
Cet exemple de stratégie de compartiment *autorise* les demandes `PutObject` des clients dont la version TLS est supérieure à 1.1, par exemple 1.2, 1.3 ou plus :    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket1",
                "arn:aws:s3:::amzn-s3-demo-bucket1/*"
            ],
            "Condition": {
                "NumericGreaterThan": {
                    "s3:TlsVersion": 1.1
                }
            }
        }
    ]
}
```

### Exemple 7 : Exclure certains principaux d’une instruction `Deny`
<a name="example-exclude-principal-from-deny-statement"></a>

La stratégie de compartiment suivante refuse l’accès `s3:GetObject` au compartiment `amzn-s3-demo-bucket`, à l’exception des principaux possédant le numéro de compte *`123456789012`*. Pour utiliser cet exemple de politique, remplacez `user input placeholders` par vos propres informations.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyAccessFromPrincipalNotInSpecificAccount",
      "Principal": {
        "AWS": "*"
      },
      "Action": "s3:GetObject",
      "Effect": "Deny",
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/*"
      ],
      "Condition": {
        "StringNotEquals": {
          "aws:PrincipalAccount": [
            "123456789012"
          ]
        }
      }
    }
  ]
}
```

------

### Exemple 8 : obliger les clients à télécharger des objets de manière conditionnelle en fonction des noms de clés des objets ou ETags
<a name="example-conditional-writes-enforce"></a>

Avec les écritures conditionnelles, vous pouvez ajouter un en-tête supplémentaire à vos demandes `WRITE` afin de spécifier les conditions préalables à une opération S3. Cet en-tête spécifie une condition qui, si elle n’est pas remplie, entraînera l’échec de l’opération S3. Par exemple, vous pouvez empêcher le remplacement de données existantes en confirmant qu’aucun objet portant le même nom de clé ne se trouve déjà dans votre compartiment lors du chargement de l’objet. Vous pouvez également vérifier la balise d'entité (ETag) d'un objet dans Amazon S3 avant d'écrire un objet.

Pour obtenir des exemples de stratégies de compartiment qui utilisent les conditions d’une stratégie de compartiment pour appliquer les écritures conditionnelles, consultez [Application d’écritures conditionnelles sur des compartiments Amazon S3](conditional-writes-enforce.md).

## Exemples : clés de condition Amazon S3 pour les opérations sur les compartiments
<a name="bucket-keys-in-amazon-s3-policies"></a>

Cette section fournit des exemples de politiques qui vous montrent comment utiliser des clés de condition spécifiques à Amazon S3 pour les opérations au niveau des compartiments.

**Topics**
+ [Exemple 1 : Accorder une autorisation `s3:GetObject` assortie d’une condition au niveau d’une adresse IP](#AvailableKeys-iamV2)
+ [Exemple 2 : Obtention d’une liste d’objets dans un compartiment avec un préfixe spécifique](#condition-key-bucket-ops-2)
+ [Exemple 3 : Définition du nombre maximal de clés](#example-numeric-condition-operators)

### Exemple 1 : Accorder une autorisation `s3:GetObject` assortie d’une condition au niveau d’une adresse IP
<a name="AvailableKeys-iamV2"></a>

Vous pouvez autoriser les utilisateurs authentifiés à utiliser l’action `s3:GetObject` si la demande émane d’une plage d’adresses IP spécifique (par exemple, `192.0.2.*`), à l’exception de l’adresse IP que vous souhaitez exclure (par exemple, `192.0.2.188`). Dans le bloc `Condition`, les éléments `IpAddress` et `NotIpAddress` sont des conditions. Chacune est associée à une paire clé-valeur pour évaluation. Dans cet exemple, les deux paires clé-valeur utilisent la touche `aws:SourceIp` AWS large. Pour utiliser cet exemple de politique, remplacez `user input placeholders` par vos propres informations.

**Note**  
Les valeurs de clé `IPAddress` et `NotIpAddress` spécifiées dans le bloc `Condition` utilisent la notation CIDR comme décrit dans RFC 4632. Pour plus d'informations, consultez [http://www.rfc-editor. org/rfc/rfc](http://www.rfc-editor.org/rfc/rfc4632.txt)4632.txt.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "S3PolicyId1",
    "Statement": [
        {
            "Sid": "statement1",
            "Effect": "Allow",
            "Principal": "*",
            "Action":"s3:GetObject",
            "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
            "Condition" : {
                "IpAddress" : {
                    "aws:SourceIp": "192.0.2.0/24" 
                },
                "NotIpAddress" : {
                    "aws:SourceIp": "192.0.2.188/32" 
                } 
            } 
        } 
    ]
}
```

------

Vous pouvez également utiliser d'autres AWS clés de condition générales dans les politiques Amazon S3. Par exemple, vous pouvez spécifier les clés de condition `aws:SourceVpce` et `aws:SourceVpc` dans les stratégies de compartiment pour les points de terminaison de VPC. Pour plus d’exemples, consultez [Contrôle de l’accès à partir des points de terminaison d’un VPC avec des stratégies de compartiment](example-bucket-policies-vpc-endpoint.md).

**Note**  
Pour certaines clés de condition AWS globales, seuls certains types de ressources sont pris en charge. Par conséquent, vérifiez si Amazon S3 prend en charge la clé de condition globale et le type de ressource que vous souhaitez utiliser, ou si vous devez utiliser une clé de condition spécifique à Amazon S3 à la place. Pour obtenir la liste complète des types de ressources et des clés de condition prises en charge pour Amazon S3, consultez [Actions, ressources et clés de condition pour Amazon S3](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html) dans la *Référence de l’autorisation de service*.  
Pour plus d’informations sur les autorisations relatives aux opérations d’API S3 par type de ressource S3, consultez [Autorisations requises pour les opérations d’API Amazon S3](using-with-s3-policy-actions.md).

### Exemple 2 : Obtention d’une liste d’objets dans un compartiment avec un préfixe spécifique
<a name="condition-key-bucket-ops-2"></a>

Vous pouvez utiliser la clé de condition `s3:prefix` pour limiter la réponse de l’API [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html) aux noms de clés avec un préfixe spécifique. Si vous êtes le propriétaire du compartiment, vous pouvez utiliser cette clé de condition pour restreindre un utilisateur afin qu’il ne puisse répertorier que le contenu d’un préfixe spécifique dans le compartiment. La clé de condition `s3:prefix` est utile si les objets du compartiment sont organisés par préfixe de nom de clé. 

La console Amazon S3 utilise des préfixes de nom de clé pour afficher un concept de dossier. Seule la console prend en charge le concept de dossiers ; l’API Amazon S3 ne prend en charge que les compartiments et les objets. Par exemple, si vous avez deux objets avec les noms de clés *`public/object1.jpg`* et *`public/object2.jpg`*, la console affiche ces objets dans le dossier *`public`*. Dans l’API Amazon S3, il s’agit d’objets avec des préfixes, pas d’objets dans des dossiers. Pour plus d’informations sur l’utilisation de préfixes et de délimiteurs pour filtrer les autorisations d’accès, consultez [Contrôle de l’accès à un compartiment avec des stratégies d’utilisateur](walkthrough1.md). 

Dans le scénario suivant, le propriétaire du compartiment et le compte parent auquel appartient l’utilisateur sont identiques. Ainsi, le propriétaire du compartiment peut utiliser une stratégie de compartiment ou une politique utilisateur. Pour plus d’informations sur les autres clés de condition que vous pouvez utiliser avec l’opération d’API `ListObjectsV2`, consultez [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html).

**Note**  
Si la gestion des versions est activée pour le compartiment et si vous souhaitez répertorier les objets dans ce compartiment, vous devez accorder l’autorisation `s3:ListBucketVersions` dans les politiques suivantes, au lieu de l’autorisation `s3:ListBucket`. L’autorisation `s3:ListBucketVersions` prend également en charge la clé de condition `s3:prefix`. 

**Stratégie utilisateur**  
La politique utilisateur suivante accorde l’autorisation `s3:ListBucket` (voir [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html)) avec une instruction `Condition` qui oblige l’utilisateur à spécifier un préfixe dans la demande avec la valeur `projects`. Pour utiliser cet exemple de politique, remplacez `user input placeholders` par vos propres informations.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"statement1",
         "Effect":"Allow",
         "Action": "s3:ListBucket",
         "Resource":"arn:aws:s3:::amzn-s3-demo-bucket",
         "Condition" : {
             "StringEquals" : {
                 "s3:prefix": "projects" 
             }
          } 
       },
      {
         "Sid":"statement2",
         "Effect":"Deny",
         "Action": "s3:ListBucket",
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
         "Condition" : {
             "StringNotEquals" : {
                 "s3:prefix": "projects" 
             }
          } 
       }         
    ]
}
```

------

L’instruction `Condition` restreint l’utilisateur pour qu’il ne puisse répertorier que les clés d’objet comportant le préfixe `projects`. L’instruction `Deny` explicite ajoutée refuse la demande de l’utilisateur de répertorier les clés avec un autre préfixe, quelles que soient les autres autorisations dont dispose cet utilisateur. Par exemple, il est possible que l’utilisateur obtienne l’autorisation de répertorier les clés d’objets sans aucune restriction, grâce aux mises à jour de la politique utilisateur précédente ou via une stratégie de compartiment. Comme les instructions `Deny` explicites ont toujours la priorité sur les instructions `Allow`, si l’utilisateur essaie de répertorier des clés autres que celles qui ont le préfixe `projects`, la demande sera refusée. 

**Politique de compartiment**  
Si vous ajoutez l’élément `Principal` à la politique utilisateur ci-dessus, identifiant l’utilisateur, vous avez maintenant une stratégie de compartiment comme indiqué dans l’exemple suivant. Pour utiliser cet exemple de politique, remplacez `user input placeholders` par vos propres informations.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"statement1",
         "Effect":"Allow",
         "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/bucket-owner"
         },  
         "Action":  "s3:ListBucket",
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
         "Condition" : {
             "StringEquals" : {
                 "s3:prefix": "projects" 
             }
          } 
       },
      {
         "Sid":"statement2",
         "Effect":"Deny",
         "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/bucket-owner"
         },  
         "Action": "s3:ListBucket",
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket",
         "Condition" : {
             "StringNotEquals" : {
                 "s3:prefix": "projects"  
             }
          } 
       }         
    ]
}
```

------

**Testez la politique à l'aide du AWS CLI**  
Vous pouvez tester la politique à l'aide de la `list-object` AWS CLI commande suivante. Dans la commande, vous fournissez les informations d’identification utilisateur en utilisant le paramètre `--profile`. Pour plus d'informations sur la configuration et l'utilisation du AWS CLI, consultez la section [Développement avec Amazon S3 à l'aide de la AWS CLI](https://docs.aws.amazon.com/AmazonS3/latest/API/setup-aws-cli.html) dans le *manuel Amazon S3 API Reference*.

```
aws s3api list-objects --bucket amzn-s3-demo-bucket --prefix projects --profile AccountA
```

### Exemple 3 : Définition du nombre maximal de clés
<a name="example-numeric-condition-operators"></a>

Vous pouvez utiliser la clé de condition `s3:max-keys` pour définir le nombre maximal de clés qu’un demandeur peut renvoyer dans une demande [https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html) ou [https://docs.aws.amazon.com//AmazonS3/latest/API/API_ListObjectVersions.html](https://docs.aws.amazon.com//AmazonS3/latest/API/API_ListObjectVersions.html). Par défaut, les opérations d’API renvoient jusqu’à 1 000 clés. Pour obtenir la liste des opérateurs de conditions numériques que vous pouvez utiliser avec `s3:max-keys` et les exemples qui les accompagnent, consultez [Opérateurs de conditions numériques](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Numeric) dans le *Guide de l’utilisateur IAM*.