

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.

# Contrôle de l’accès à un compartiment avec des stratégies d’utilisateur
<a name="walkthrough1"></a>

Cette démonstration explique comment les autorisations utilisateur fonctionnent avec Amazon S3. Dans cet exemple, vous créez un compartiment avec des dossiers. Vous créez ensuite des utilisateurs Gestion des identités et des accès AWS IAM dans votre compartiment Amazon S3 Compte AWS et les dossiers qu'il contient et leur accordez des autorisations supplémentaires. 

**Topics**
+ [Principes de base des compartiments et des dossiers](#walkthrough-background1)
+ [Résumé de la procédure détaillée](#walkthrough-scenario)
+ [Préparation de la procédure détaillée](#walkthrough-what-you-need)
+ [Étape 1 : créer un compartiment](#walkthrough1-create-bucket)
+ [Étape 2 : créer des utilisateurs IAM et un groupe](#walkthrough1-add-users)
+ [Étape 3 : vérifier que les utilisateurs IAM ne disposent d’aucune autorisation](#walkthrough1-verify-no-user-permissions)
+ [Étape 4 : octroyer des autorisations au niveau du groupe](#walkthrough-group-policy)
+ [Étape 5 : octroyer des autorisations spécifiques à l’utilisateur IAM Alice](#walkthrough-grant-user1-permissions)
+ [Étape 6 : octroyer des autorisations spécifiques à l’utilisateur IAM Bob](#walkthrough1-grant-permissions-step5)
+ [Étape 7 : sécuriser le dossier Private](#walkthrough-secure-private-folder-explicit-deny)
+ [Étape 8 : Nettoyage](#walkthrough-cleanup)
+ [Ressources connexes](#RelatedResources-walkthrough1)

## Principes de base des compartiments et des dossiers
<a name="walkthrough-background1"></a>

Le modèle de données Amazon S3 est une structure horizontale : vous créez un compartiment et ce compartiment stocke des objets. Il n’existe aucune hiérarchie de sous-compartiments ou de sous-dossiers, mais vous pouvez émuler une hiérarchie de dossiers. Des outils tels que la console Amazon S3 peuvent présenter une vue de ces dossiers et sous-dossiers logiques dans votre compartiment.

La console montre qu’un compartiment nommé `companybucket` comporte trois dossiers, `Private`, `Development` et `Finance`, ainsi qu’un objet, `s3-dg.pdf`. La console utilise les noms d’objet (clés) pour créer une hiérarchie logique avec des dossiers et des sous-dossiers. Considérez les exemples suivants :
+ Lorsque vous créez le dossier `Development`, la console crée un objet avec la clé `Development/`. Notez la barre oblique de fin (`/`) comme délimiteur.
+ Lorsque vous chargez un objet nommé `Projects1.xls` dans le dossier `Development`, la console charge l’objet et lui fournit la clé `Development/Projects1.xls`. 

  Dans la clé, `Development` est le [préfixe](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html#keyprefix) et `/` le délimiteur. L’API Amazon S3 prend en charge les préfixes et les délimiteurs dans ses opérations. Par exemple, vous pouvez obtenir la liste de tous les objets d’un compartiment avec un préfixe et un délimiteur spécifiques. Dans la console, quand ouvrez le dossier `Development`, la console répertorie les objets de ce dossier. Dans l’exemple suivant, le dossier `Development` contient un seul objet. 

  Lorsque la console répertorie le dossier `Development` dans le compartiment `companybucket`, elle envoie une demande à Amazon S3 dans laquelle elle spécifie le préfixe `Development` et le délimiteur `/`. La réponse de la console ressemble à une liste de dossiers du système de fichiers de votre ordinateur. L’exemple précédent montre que le compartiment `companybucket` possède un objet doté de la clé `Development/Projects1.xls`.

La console utilise des clés d’objet pour déduire une hiérarchie logique. Amazon S3 n’a pas de hiérarchie physique. Amazon S3 n’a que des compartiments contenant des objets dans une structure de fichier horizontale. Lorsque vous créez des objets à l’aide de l’API Amazon S3, vous pouvez utiliser des clés d’objet qui impliquent une hiérarchie logique. Lorsque vous créez une hiérarchie logique d’objets, vous pouvez gérer l’accès aux dossiers individuels, comme le montre cette procédure détaillée.

Avant de commencer, veillez à vous familiariser avec le concept de contenu du compartiment de *niveau racine*. Supposez que votre compartiment `companybucket` contienne les objets suivants :
+ `Private/privDoc1.txt`
+ `Private/privDoc2.zip`
+ `Development/project1.xls`
+ `Development/project2.xls`
+ `Finance/Tax2011/document1.pdf`
+ `Finance/Tax2011/document2.pdf`
+ `s3-dg.pdf`

Ces clés d’objet créent une hiérarchie logique avec `Private`, `Development` et `Finance` comme dossiers de niveau racine et `s3-dg.pdf` comme objet de niveau racine. Lorsque vous choisissez le nom du compartiment dans la console Amazon S3, les éléments de niveau racine apparaissent. La console montre les préfixes de niveau supérieur (`Private/`, `Development/` et `Finance/`) sous la forme de dossiers de niveau racine. La clé d’objet `s3-dg.pdf` n’a pas de préfixe et apparaît donc en tant qu’élément de niveau racine.



## Résumé de la procédure détaillée
<a name="walkthrough-scenario"></a>

Dans cette procédure détaillée, vous créez un compartiment avec trois dossiers (`Private`, `Development` et `Finance`) dans celui-ci. 

Vous avez deux utilisateurs, Alice et Bob. Vous souhaitez qu’Alice accède uniquement au dossier `Development` et que Bob accède uniquement au dossier `Finance`. Vous souhaitez garder le contenu du dossier `Private` privé. Dans cette procédure détaillée, vous gérez l’accès en créant des utilisateurs IAM (l’exemple utilise les noms d’utilisateur Alice et Bob) et vous leur octroyez les autorisations nécessaires. 

IAM prend également en charge la création de groupes d’utilisateurs et l’octroi d’autorisations au niveau du groupe, qui s’appliquent à tous les utilisateurs du groupe. Cela vous aide à mieux gérer les autorisations. Pour cet exercice, Alice et Bob ont besoin de certaines autorisations communes. Vous allez donc créer un groupe nommé `Consultants` et ajouter Alice et Bob à ce groupe. Vous commencerez par octroyer des autorisations en attachant une stratégie de groupe à ce groupe. Ensuite, vous ajouterez des autorisations spécifiques aux utilisateurs en attachant des stratégies aux utilisateurs spécifiques.

**Note**  
Cette démonstration utilise `companybucket` comme nom de compartiment, Alice et Bob comme utilisateurs IAM, et `Consultants` comme nom de groupe. Comme Amazon S3 exige que les noms de compartiment soient uniques à l’échelle mondiale, vous devez remplacer le nom du compartiment par un nom de votre création.

## Préparation de la procédure détaillée
<a name="walkthrough-what-you-need"></a>

 Dans cet exemple, vous utilisez vos Compte AWS informations d'identification pour créer des utilisateurs IAM. Initialement, ces utilisateurs n’ont aucune autorisation. Vous octroyez de façon incrémentielle des autorisations à ces utilisateurs pour leur permettre d’effectuer des actions Amazon S3 spécifiques. Pour tester ces autorisations, vous vous connectez à la console avec les autorisations de chaque utilisateur. Au fur et à mesure que vous accordez des autorisations en tant que Compte AWS propriétaire et que vous testez des autorisations en tant qu'utilisateur IAM, vous devez vous connecter et vous déconnecter en utilisant à chaque fois des informations d'identification différentes. Vous pouvez effectuer ce test dans un seul navigateur, mais le processus sera accéléré si vous pouvez utiliser deux navigateurs différents. Utilisez un navigateur pour vous connecter à l' AWS Management Console aide de vos Compte AWS informations d'identification et un autre navigateur pour vous connecter aux informations d'identification utilisateur IAM. 

 Pour vous connecter à l' AWS Management Console aide de vos Compte AWS informations d'identification, rendez-vous sur [https://console.aws.amazon.com/](https://console.aws.amazon.com/). Un utilisateur IAM ne peut pas se connecter en utilisant le même lien. Un utilisateur IAM doit utiliser une page de connexion prenant en charge IAM. En tant que propriétaire du compte, vous pouvez fournir ce lien à vos utilisateurs. 

Pour plus d’informations sur IAM, consultez la [page connexion à la AWS Management Console](https://docs.aws.amazon.com/IAM/latest/UserGuide/console.html) dans le *Guide de l’utilisateur IAM*.

### Pour fournir un lien de connexion pour les utilisateurs IAM
<a name="walkthrough-sign-in-user-credentials"></a>

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

1. Dans le panneau **Navigation (Navigation)**, choisissez **IAM Dashboard (Tableau de bord IAM)**.

1. Notez l’URL sous **IAM users sign in link: (Lien de connexion des utilisateurs IAM)**. Vous donnerez ce lien aux utilisateurs IAM pour qu’ils se connectent à la console avec leur nom d’utilisateur et leur mot de passe IAM.

## Étape 1 : créer un compartiment
<a name="walkthrough1-create-bucket"></a>

Dans cette étape, vous allez vous connecter à la console Amazon S3 avec les informations d’identification de votre Compte AWS , créer un compartiment, y ajouter des dossiers et charger un ou deux exemples de document dans chaque dossier. 

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. Créez un compartiment. 

   Pour step-by-step obtenir des instructions, voir[Création d’un compartiment à usage général](create-bucket-overview.md).

1. Chargez un document dans le compartiment.

   Cet exercice suppose que vous disposez du document `s3-dg.pdf` au niveau racine de ce compartiment. Si vous chargez un autre document, inscrivez son nom de fichier à la place de `s3-dg.pdf`.

1. Ajoutez trois dossiers nommés `Private`, `Finance` et `Development` au compartiment.

   Pour step-by-step obtenir des instructions sur la création d'un dossier, consultez [Organisation des objets dans la console Amazon S3 à l’aide de dossiers](using-folders.md) > dans le *guide de l'utilisateur d'Amazon Simple Storage Service*.

1. Chargez un ou deux documents dans chaque dossier. 

   Pour cet exercice, supposons que vous avez chargé deux documents dans chaque dossier, de sorte que le compartiment possède des objets avec les clés suivantes :
   + `Private/privDoc1.txt`
   + `Private/privDoc2.zip`
   + `Development/project1.xls`
   + `Development/project2.xls`
   + `Finance/Tax2011/document1.pdf`
   + `Finance/Tax2011/document2.pdf`
   + `s3-dg.pdf`

   

   Pour step-by-step obtenir des instructions, voir[Chargement d’objets](upload-objects.md). 

## Étape 2 : créer des utilisateurs IAM et un groupe
<a name="walkthrough1-add-users"></a>

À présent, utilisez la [console IAM](https://console.aws.amazon.com/iam/) pour ajouter deux utilisateurs IAM, Alice et Bob, à votre Compte AWS. Pour step-by-step obtenir des instructions, consultez [la section Création d'un utilisateur IAM Compte AWS dans votre](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console) guide de l'*utilisateur IAM*. 

Créez également un groupe administratif nommé `Consultants`. Ajoutez ensuite les deux utilisateurs au groupe. Pour step-by-step obtenir des instructions, consultez la section [Création de groupes d'utilisateurs IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups_create.html). 

**Avertissement**  
Lorsque vous ajoutez des utilisateurs et un groupe, n’attachez aucune stratégie octroyant des autorisations à ces utilisateurs. Au début, les utilisateurs n’ont aucune autorisation. Dans les sections suivantes, vous allez octroyer des autorisations de façon incrémentielle. Vous devez tout d’abord vous assurer d’avoir attribué des mots de passe à ces utilisateurs IAM. Vous utiliserez les autorisations de ces utilisateurs pour tester les actions Amazon S3 et vérifier que ces autorisations fonctionnent comme prévu.

Pour step-by-step obtenir des instructions relatives à la création d'un nouvel utilisateur IAM, reportez-vous à la section [Création d'un utilisateur IAM Compte AWS dans votre guide](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html) de l'utilisateur *IAM*. Lorsque vous créez les utilisateurs pour cette procédure, sélectionnez **Accès àAWS Management Console ** et désactivez l’option [Accès par programmation](https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys).

Pour step-by-step obtenir des instructions sur la création d'un groupe administratif, consultez la section [Création de votre premier utilisateur et de votre premier groupe administrateur IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started_create-admin-group.html) dans le guide de l'*utilisateur IAM*.



## Étape 3 : vérifier que les utilisateurs IAM ne disposent d’aucune autorisation
<a name="walkthrough1-verify-no-user-permissions"></a>

Si vous utilisez deux navigateurs, vous pouvez utiliser à présent le second navigateur pour vous connecter à la console en utilisant les autorisations d’un des utilisateurs IAM.

1. Utilisez le lien de connexion d’utilisateur IAM (consultez [Pour fournir un lien de connexion pour les utilisateurs IAM](#walkthrough-sign-in-user-credentials)) pour vous connecter à la AWS Management Console en utilisant les autorisations d’un des deux utilisateurs IAM.

1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

    Vérifiez que le message de la console s’affiche et vous indique que l’accès est refusé. 

À présent, vous pouvez commencer octroyer des autorisations incrémentielles aux utilisateurs. En premier lieu, vous attacherez une stratégie de groupe octroyant les autorisations que les deux utilisateurs doivent posséder. 

## Étape 4 : octroyer des autorisations au niveau du groupe
<a name="walkthrough-group-policy"></a>

Vous voulez que les utilisateurs soient en mesure d’effectuer les tâches suivantes :
+ Répertorier tous les compartiments détenus par le compte parent. Pour cela, Bob et Alice doivent disposer de l’autorisation pour l’action `s3:ListAllMyBuckets`.
+ Répertorier les éléments de niveau racine, les dossiers et les objets dans le compartiment `companybucket`. Pour cela, Bob et Alice doivent disposer de l’autorisation pour l’action `s3:ListBucket` sur le compartiment `companybucket`.

À présent, vous allez créer une stratégie qui octroie ces autorisations, puis vous l’attacherez au groupe `Consultants`. 

### Étape 4.1 : octroyer l’autorisation de répertorier tous les compartiments
<a name="walkthrough1-grant-permissions-step1"></a>

Dans cette étape, vous allez créer une stratégie gérée qui octroie aux utilisateurs les autorisations minimales leur permettant de répertorier tous les compartiments détenus par le compte parent. Vous attacherez ensuite cette stratégie au groupe `Consultants`. Lorsque vous attachez la stratégie gérée à un utilisateur ou à un groupe, vous accordez à cet utilisateur ou à ce groupe l’autorisation d’obtenir la liste des compartiments détenus par le parent Compte AWS.

1. Connectez-vous à la console IAM AWS Management Console et ouvrez-la à [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)l'adresse.
**Note**  
Comme vous octroyez des autorisations utilisateur, connectez-vous à l’aide des informations d’identification de votre Compte AWS , et non pas en tant qu’utilisateur IAM.

1. Créez la stratégie gérée.

   1. Dans le volet de navigation de gauche, sélectionnez **Politiques**, puis **Créer une politique**.

   1. Choisissez l'onglet **JSON**.

   1. Copiez la stratégie d’accès suivante et collez-la dans le champ de texte de stratégie.

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

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Sid": "AllowGroupToSeeBucketListInTheConsole",
            "Action": ["s3:ListAllMyBuckets"],
            "Effect": "Allow",
            "Resource": ["arn:aws:s3:::*"]
          }
        ]
      }
      ```

------

      Une stratégie est un document JSON. Dans ce document, un élément `Statement` est un tableau d’objets, chacun décrivant une autorisation à l’aide d’une collection de paires de noms-valeurs. La stratégie précédente décrit une autorisation spécifique. L’élément `Action` spécifie le type d’accès. Dans la stratégie, l’élément `s3:ListAllMyBuckets` est une action Amazon S3 prédéfinie. Cette action couvre l’opération GET Service d’Amazon S3, qui renvoie la liste de tous les compartiments que l’expéditeur authentifié possède. La valeur de l’élément `Effect` détermine si une autorisation spécifique est accordée ou refusée.

   1. Choisissez **Review Policy (Examiner une stratégie)**. Sur la page suivante, saisissez `AllowGroupToSeeBucketListInTheConsole`dans le champ **Nom**, puis choisissez **Créer une stratégie**.
**Note**  
L’entrée **Résumé** affiche un message indiquant que la stratégie n’accorde pas d’autorisations. Vous pouvez ignorer ce message dans le cadre de cette procédure.

1. Attachez la stratégie gérée `AllowGroupToSeeBucketListInTheConsole` que vous avez créée au groupe `Consultants`.

   Pour step-by-step obtenir des instructions relatives à l'attachement d'une politique gérée, consultez la section [Ajout et suppression d'autorisations d'identité IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#attach-managed-policy-console) dans le guide de l'*utilisateur IAM*. 

   Vous attachez des documents de stratégie aux utilisateurs IAM et aux groupes dans la console IAM. Comme vous voulez que les deux utilisateurs soient en mesure de répertorier les compartiments, vous attachez cette stratégie au groupe. 

1. Testez l’autorisation.

   1. Utilisez le lien de connexion d’utilisateur IAM (consultez [Pour fournir un lien de connexion pour les utilisateurs IAM](#walkthrough-sign-in-user-credentials)) pour vous connecter à la console en utilisant les autorisations d’un des deux utilisateurs IAM.

   1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

      La console doit à présent répertorier tous les compartiments mais pas les objets figurant dans ces compartiments.

### Étape 4.2 : permettre aux utilisateurs de répertorier le contenu de niveau racine d’un compartiment
<a name="walkthrough1-grant-permissions-step2"></a>

Ensuite, autorisez tous les utilisateurs du groupe `Consultants` à répertorier les éléments de niveau racine du compartiment `companybucket`. Lorsqu’un utilisateur choisit le compartiment de l’entreprise dans la console Amazon S3, il peut voir les éléments de niveau racine figurant dans le compartiment.

**Note**  
Cet exemple utilise `companybucket` à titre d’illustration. Vous devez utiliser le nom du compartiment que vous avez créé.

Pour comprendre la demande que la console envoie à Amazon S3 lorsque vous choisissez un nom de compartiment, la réponse qu’Amazon S3 renvoie et la manière dont la console interprète cette réponse, examinons les différentes étapes d’un peu plus près.

Lorsque vous choisissez un nom de compartiment, la console envoie la demande [GET Bucket (List Objects)](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html) à Amazon S3. Cette demande inclut les paramètres suivants :
+ le paramètre `prefix` avec une chaîne vide comme valeur ; 
+ le paramètre `delimiter` avec `/` comme valeur. 

Voici un exemple de demande.

```
GET ?prefix=&delimiter=/ HTTP/1.1 
Host: companybucket.s3.amazonaws.com
Date: Wed, 01 Aug  2012 12:00:00 GMT
Authorization: AWS AKIAIOSFODNN7EXAMPLE:xQE0diMbLRepdf3YB+FIEXAMPLE=
```

Amazon S3 retourne une réponse qui inclut l’élément `<ListBucketResult/>`.

```
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
  <Name>companybucket</Name>
  <Prefix></Prefix>
  <Delimiter>/</Delimiter>
   ...
  <Contents>
    <Key>s3-dg.pdf</Key>
    ...
  </Contents>
  <CommonPrefixes>
    <Prefix>Development/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>Finance/</Prefix>
  </CommonPrefixes>
  <CommonPrefixes>
    <Prefix>Private/</Prefix>
  </CommonPrefixes>
</ListBucketResult>
```

L’objet de clé `s3-dg.pdf` ne contient pas la barre oblique (`/`) comme délimiteur et Amazon S3 retourne la clé dans l’élément `<Contents>`. Toutefois, toutes les autres clés dans notre exemple de compartiment contiennent le délimiteur `/`. Amazon S3 regroupe ces clés et renvoie un élément `<CommonPrefixes>` pour chacune des valeurs de préfixe distinctes `Development/`, `Finance/` et `Private/` qui est une sous-chaîne du début de ces clés jusqu’à la première occurrence du délimiteur `/` spécifié. 

La console interprète ce résultat et affiche les éléments de niveau racine sous la forme de trois dossiers et d’une clé d’objet. 

Si Bob ou Alice ouvre le dossier **Development (Développement)**, la console envoie la demande [GET Bucket (List Objects)](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html) à Amazon S3 avec le préfixe `prefix` et les valeurs suivantes pour les paramètres `delimiter` :
+ Le paramètre `prefix` avec la valeur `Development/`.
+ Le paramètre `delimiter` avec la valeur « `/` ». 

En réponse à cela, Amazon S3 renvoie les clés d’objet qui commencent par le préfixe spécifié. 

```
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
  <Name>companybucket</Name>
  <Prefix>Development</Prefix>
  <Delimiter>/</Delimiter>
   ...
  <Contents>
    <Key>Project1.xls</Key>
    ...
  </Contents>
  <Contents>
    <Key>Project2.xls</Key>
    ...
  </Contents> 
</ListBucketResult>
```

La console affiche les clés d’objet.

A présent, revenez à l’octroi aux utilisateurs d’une autorisation pour répertorier les éléments de niveau racine du compartiment. Pour répertorier le contenu du compartiment, les utilisateurs ont besoin d’une autorisation pour appeler l’action `s3:ListBucket`, telle qu’illustrée dans la déclaration de stratégie ci-dessous. Pour s’assurer qu’ils ne voient que le contenu de niveau racine, vous ajoutez une condition stipulant que les utilisateurs doivent spécifier un paramètre `prefix` vide dans la demande (c’est-à-dire qu’ils ne sont pas autorisés à double-cliquer sur les dossiers de niveau racine). Enfin, vous ajoutez une condition pour exiger un accès de type dossier en exigeant que les demandes des utilisateurs incluent le paramètre `delimiter` avec la valeur « `/` ». 

```
{
  "Sid": "AllowRootLevelListingOfCompanyBucket",
  "Action": ["s3:ListBucket"],
  "Effect": "Allow",
  "Resource": ["arn:aws:s3:::companybucket"],
  "Condition":{ 
         "StringEquals":{
             "s3:prefix":[""], "s3:delimiter":["/"]
                        }
              }
}
```

Lorsque vous choisissez un compartiment sur la console Amazon S3, la console envoie d'abord la demande de [localisation du compartiment GET](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGETlocation.html) pour savoir Région AWS où le compartiment est déployé. Ensuite, la console utilise le point de terminaison spécifique à la Région du compartiment pour envoyer la demande [GET Bucket (List Objects)](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketGET.html). Par conséquent, si les utilisateurs doivent utiliser la console, vous devez octroyer l’autorisation pour l’action `s3:GetBucketLocation` telle qu’illustrée dans la déclaration de stratégie suivante.

```
{
   "Sid": "RequiredByS3Console",
   "Action": ["s3:GetBucketLocation"],
   "Effect": "Allow",
   "Resource": ["arn:aws:s3:::*"]
}
```

**Pour permettre aux utilisateurs de répertorier le contenu de niveau racine d’un compartiment**

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

   Utilisez vos Compte AWS informations d'identification, et non celles d'un utilisateur IAM, pour vous connecter à la console.

1. Remplacez la stratégie gérée `AllowGroupToSeeBucketListInTheConsole` existante qui est attachée au groupe `Consultants` par la stratégie suivante, qui autorise également l’action `s3:ListBucket`. N’oubliez pas de remplacer *`companybucket`* dans l’élément `Resource` de la politique par le nom de votre compartiment. 

   Pour step-by-step obtenir des instructions, consultez la section [Modification des politiques IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html) dans le Guide de l'*utilisateur IAM*. Lorsque vous suivez les step-by-step instructions, veillez à suivre les étapes permettant d'appliquer vos modifications à toutes les entités principales auxquelles la politique est attachée. 

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	                  
     "Statement": [
        {
          "Sid": "AllowGroupToSeeBucketListAndAlsoAllowGetBucketLocationRequiredForListBucket",
          "Action": [ "s3:ListAllMyBuckets", "s3:GetBucketLocation" ],
          "Effect": "Allow",
          "Resource": [ "arn:aws:s3:::*"  ]
        },
        {
          "Sid": "AllowRootLevelListingOfCompanyBucket",
          "Action": ["s3:ListBucket"],
          "Effect": "Allow",
          "Resource": ["arn:aws:s3:::companybucket"],
          "Condition":{ 
                "StringEquals":{
                       "s3:prefix":[""], "s3:delimiter":["/"]
                              }
                      }
        }
     ] 
   }
   ```

------

1. Testez les autorisations mises à jour.

   1. Utilisez le lien de connexion d’utilisateur IAM (voir [Pour fournir un lien de connexion pour les utilisateurs IAM](#walkthrough-sign-in-user-credentials)) pour vous connecter à la AWS Management Console. 

      Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

   1. Choisissez le compartiment que vous avez créé ; la console affiche les éléments de niveau racine du compartiment. Si vous choisissez un dossier dans le compartiment, vous ne pourrez pas voir le contenu du dossier, car vous n’avez pas encore été octroyé ces autorisations.

Ce test réussit lorsque les utilisateurs utilisent la console Amazon S3. Lorsque vous choisissez sur un compartiment dans la console, l’implémentation de la console envoie une demande qui inclut le paramètre `prefix` avec une chaîne vide comme valeur et le paramètre `delimiter` avec la valeur « `/` ».

### Étape 4.3 : récapitulatif de la stratégie de groupe
<a name="walkthrough-group-policy-summary"></a>

L’effet net de la stratégie de groupe que vous avez ajoutée est d’octroyer aux utilisateurs IAM Alice et Bob les autorisations minimales suivantes :
+ Répertorier tous les compartiments détenus par le compte parent.
+ Voir les éléments de niveau racine dans le compartiment `companybucket`. 

Toutefois, les utilisateurs ont une marge de manœuvre encore limitée. Vous octroyez ensuite des autorisations spécifiques à l’utilisateur, comme suit :
+ Autorisez Alice à obtenir et placer des objets dans le dossier `Development`.
+ Autorisez Bob à obtenir et placer des objets dans le dossier `Finance`.

Dans le cadre des autorisations spécifiques à l’utilisateur, vous attachez une stratégie à un utilisateur spécifique et non pas au groupe. Dans la section suivante, vous octroyez à Alice l’autorisation de travailler dans le dossier `Development`. Vous pouvez répéter cette procédure pour octroyer une autorisation similaire à Bob pour lui permettre de travailler dans le dossier `Finance`.

## Étape 5 : octroyer des autorisations spécifiques à l’utilisateur IAM Alice
<a name="walkthrough-grant-user1-permissions"></a>

À présent, vous octroyez des autorisations supplémentaires à Alice pour qu’elle puisse voir le contenu du dossier `Development`, ainsi qu’obtenir et placer des objets dans ce dossier.

### Étape 5.1 : octroyer une autorisation à l’utilisateur IAM Alice pour répertorier le contenu du dossier Development
<a name="walkthrough-grant-user1-permissions-listbucket"></a>

Pour qu’Alice répertorie le contenu du dossier `Development`, vous devez appliquer une politique à l’utilisatrice Alice. Cette politique doit octroyer une autorisation pour l’action `s3:ListBucket` sur le compartiment `companybucket`, à condition que la demande inclue le préfixe `Development/`. Vous voulez que cette stratégie soit appliquée uniquement à l’utilisateur Alice. Vous devez donc une stratégie en ligne. Pour de plus amples informations sur les politiques en ligne, consultez [Politiques gérées et politiques en ligne](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html) dans le *Guide de l’utilisateur IAM*.

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

   Utilisez vos Compte AWS informations d'identification, et non celles d'un utilisateur IAM, pour vous connecter à la console.

1. Créez une stratégie en ligne pour octroyer à l’utilisateur Alice l’autorisation de répertorier le contenu du dossier `Development`.

   1. Dans le volet de navigation de gauche, choisissez **Utilisateurs**.

   1. Choisissez sur le nom d’utilisateur **Alice**.

   1. Sur la page des détails de l’utilisateur, choisissez l’onglet **Autorisations**, puis **Ajouter une stratégie en ligne**.

   1. Choisissez l'onglet **JSON**.

   1. Copiez la politique suivante et collez-la dans le champ de texte de politique.

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	   
          "Statement": [
          {
            "Sid": "AllowListBucketIfSpecificPrefixIsIncludedInRequest",
            "Action": ["s3:ListBucket"],
            "Effect": "Allow",
            "Resource": ["arn:aws:s3:::companybucket"],
            "Condition": { "StringLike": {"s3:prefix": ["Development/*"] }
             }
          }
        ]
      }
      ```

------

   1. Choisissez **Review Policy (Examiner une stratégie)**. Sur la page suivante, saisissez un nom dans le champ **Nom**, puis choisissez **Créer une stratégie**.

1. Testez la modification des autorisations d’Alice :

   1. Utilisez le lien de connexion d'utilisateur IAM (voir [Pour fournir un lien de connexion pour les utilisateurs IAM](#walkthrough-sign-in-user-credentials)) pour vous connecter à la AWS Management Console. 

   1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

   1. Dans la console Amazon S3, vérifiez qu’Alice peut voir la liste des objets dans le dossier `Development/` du compartiment. 

      Lorsque l’utilisateur choisit le dossier `/Development` pour afficher la liste des objets qu’il contient, la console Amazon S3 envoie la demande `ListObjects` à Amazon S3 avec le préfixe `/Development`. Comme l’utilisateur obtient l’autorisation de voir la liste des objets avec le préfixe `Development` et le délimiteur `/`, Amazon S3 renvoie la liste des objets avec le préfixe de clé `Development/`, et la console affiche cette liste.

### Étape 5.2 : octroyer des autorisations à l’utilisateur IAM Alice pour obtenir et placer des objets dans le dossier Development
<a name="walkthrough-grant-user1-permissions-get-put-object"></a>

Pour qu’Alice puisse obtenir et placer des objets dans le dossier `Development`, elle a besoin d’une autorisation pour appeler les actions `s3:GetObject` et `s3:PutObject`. Les déclarations de stratégie suivantes octroient ces autorisations, à condition que la demande inclue le paramètre `prefix` avec la valeur `Development/`.

```
{
    "Sid":"AllowUserToReadWriteObjectData",
    "Action":["s3:GetObject", "s3:PutObject"],
    "Effect":"Allow",
    "Resource":["arn:aws:s3:::companybucket/Development/*"]
 }
```



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/).

   Utilisez vos Compte AWS informations d'identification, et non celles d'un utilisateur IAM, pour vous connecter à la console.

1. Modifiez la stratégie en ligne que vous avez créée à l’étape précédente. 

   1. Dans le panneau de navigation de gauche, choisissez **Utilisateurs**.

   1. Choisissez sur le nom d’utilisateur Alice.

   1. Dans la page des détails, sélectionnez l’onglet **Autorisations** et développez la section **Stratégies en ligne**.

   1. En regard du nom de la stratégie que vous avez créée à l’étape précédente, choisissez **Modifier la stratégie**.

   1. Copiez la stratégie suivante et collez-la dans le champ de texte de la stratégie pour remplacer la stratégie existante.

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

****  

      ```
      {
           "Version":"2012-10-17",		 	 	 
           "Statement":[
            {
               "Sid":"AllowListBucketIfSpecificPrefixIsIncludedInRequest",
               "Action":["s3:ListBucket"],
               "Effect":"Allow",
               "Resource":["arn:aws:s3:::companybucket"],
               "Condition":{
                  "StringLike":{"s3:prefix":["Development/*"]
                  }
               }
            },
            {
              "Sid":"AllowUserToReadWriteObjectDataInDevelopmentFolder", 
              "Action":["s3:GetObject", "s3:PutObject"],
              "Effect":"Allow",
              "Resource":["arn:aws:s3:::companybucket/Development/*"]
            }
         ]
      }
      ```

------

1. Testez la stratégie mise à jour :

   1. Utilisez le lien de connexion d’utilisateur IAM (voir [Pour fournir un lien de connexion pour les utilisateurs IAM](#walkthrough-sign-in-user-credentials)) pour vous connecter à la AWS Management Console. 

   1. Ouvrez la console Amazon S3 à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

   1. Dans la console Amazon S3, vérifiez qu’Alice peut à présent ajouter un objet et télécharger un objet dans le dossier `Development`. 

### Étape 5.3 : refuser explicitement à l’utilisateur IAM Alice les autorisations pour tout autre dossier du compartiment
<a name="walkthrough-grant-user1-explicit-deny-other-access"></a>

L’utilisateur Alice peut à présent répertorier le contenu de niveau racine dans le compartiment `companybucket`. Elle peut également obtenir et placer des objets dans le dossier `Development`. Si vous souhaitez réellement renforcer les autorisations d’accès, vous pouvez refuser explicitement à Alice l’accès aux autres dossiers du compartiment. S’il existe une autre stratégie (stratégie de compartiment ou liste ACL) qui accorde à Alice l’accès à d’autres dossiers du compartiment, ce refus explicite a priorité sur ces autorisations. 

Vous pouvez ajouter la déclaration suivante à la stratégie de l’utilisateur Alice. Elle exige que toutes les demandes envoyées par Alice à Amazon S3 incluent le paramètre `prefix`, dont la valeur peut être `Development/*` ou une chaîne vide. 



```
{
   "Sid": "ExplicitlyDenyAnyRequestsForAllOtherFoldersExceptDevelopment",
   "Action": ["s3:ListBucket"],
   "Effect": "Deny",
   "Resource": ["arn:aws:s3:::companybucket"],
   "Condition":{  "StringNotLike": {"s3:prefix":["Development/*",""] },
                  "Null"         : {"s3:prefix":false }
    }
}
```

Deux expressions conditionnelles figurent dans le bloc `Condition`. Les résultats de ces expressions conditionnelles sont associés à l’aide du `AND` logique. Si les deux conditions son vraies, le résultat de la combinaison combinée est vrai (true). Comme `Effect` dans cette stratégie est défini sur `Deny`, lorsque la `Condition` a la valeur true, les utilisateurs ne peuvent pas effectuer l’`Action` spécifiée.
+ L’expression conditionnelle `Null` garantit que les demandes d’Alice incluent le paramètre `prefix`. 

  Le paramètre `prefix` requiert un accès de type dossier. Si vous envoyez une demande sans le paramètre `prefix`, Amazon S3 renvoie toutes les clés d’objet. 

  Si la demande inclut le paramètre `prefix` avec une valeur null, l’expression prend la valeur true, et le bloc entier `Condition` est défini sur true. Vous devez autoriser une chaîne vide comme valeur du paramètre `prefix`. Nous avons vu dans la discussion précédente qu’autoriser la chaîne null permet à Alice de récupérer les éléments de niveau racine du compartiment, comme le fait la console dans la discussion précédente. Pour plus d’informations, consultez [Étape 4.2 : permettre aux utilisateurs de répertorier le contenu de niveau racine d’un compartiment](#walkthrough1-grant-permissions-step2). 
+ L’expression conditionnelle `StringNotLike` garantit que si la valeur du paramètre `prefix` est spécifiée et n’est pas `Development/*`, la demande échoue. 

Suivez les étapes de la section précédente et mettez à jour à nouveau la stratégie en ligne que vous avez créée pour l’utilisateur Alice.

Copiez la stratégie suivante et collez-la dans le champ de texte de la stratégie pour remplacer la stratégie existante.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowListBucketIfSpecificPrefixIsIncludedInRequest",
         "Action":["s3:ListBucket"],
         "Effect":"Allow",
         "Resource":["arn:aws:s3:::companybucket"],
         "Condition":{
            "StringLike":{"s3:prefix":["Development/*"]
            }
         }
      },
      {
        "Sid":"AllowUserToReadWriteObjectDataInDevelopmentFolder", 
        "Action":["s3:GetObject", "s3:PutObject"],
        "Effect":"Allow",
        "Resource":["arn:aws:s3:::companybucket/Development/*"]
      },
      {
         "Sid": "ExplicitlyDenyAnyRequestsForAllOtherFoldersExceptDevelopment",
         "Action": ["s3:ListBucket"],
         "Effect": "Deny",
         "Resource": ["arn:aws:s3:::companybucket"],
         "Condition":{  "StringNotLike": {"s3:prefix":["Development/*",""] },
                        "Null"         : {"s3:prefix":false }
          }
      }
   ]
}
```

------

## Étape 6 : octroyer des autorisations spécifiques à l’utilisateur IAM Bob
<a name="walkthrough1-grant-permissions-step5"></a>

À présent, vous voulez accorder à Bob une autorisation sur le dossier `Finance`. Suivez la procédure que vous avez utilisée précédemment pour accorder des autorisations à Alice, mais remplacez le dossier `Development` par le dossier `Finance`. Pour step-by-step obtenir des instructions, voir[Étape 5 : octroyer des autorisations spécifiques à l’utilisateur IAM Alice](#walkthrough-grant-user1-permissions). 

## Étape 7 : sécuriser le dossier Private
<a name="walkthrough-secure-private-folder-explicit-deny"></a>

Dans cet exemple, vous n’avez que deux utilisateurs. Vous avez accordé toutes les autorisations minimales requises au niveau du groupe et accordé des autorisations au niveau de l’utilisateur seulement lorsque ces autorisations étaient réellement requises au niveau d’un utilisateur individuel. Cette approche aide à réduire au maximum l’effort de gestion des autorisations. Lorsque le nombre d’utilisateurs augmente, la gestion des autorisations peut devenir fastidieuse. Par exemple, vous ne voulez pas que les utilisateurs de cet exemple accèdent au contenu du dossier `Private`. Comment s’assurer de ne pas accorder accidentellement une autorisation utilisateur d’accès au dossier `Private` ? Vous devez ajouter une stratégie qui refuse explicitement l’accès à ce dossier. Un refus explicite a priorité sur toutes les autres autorisations. 

Pour vous assurer que le dossier `Private` reste privé, vous pouvez ajouter les deux déclarations de refus suivantes à la stratégie de groupe :
+ Ajoutez la déclaration suivante pour refuser explicitement toute action sur les ressources dans le dossier `Private` (`companybucket/Private/*`).

  ```
  {
    "Sid": "ExplictDenyAccessToPrivateFolderToEveryoneInTheGroup",
    "Action": ["s3:*"],
    "Effect": "Deny",
    "Resource":["arn:aws:s3:::companybucket/Private/*"]
  }
  ```
+ Vous refusez également l’autorisation pour l’action visant à répertorier les objets lorsque la demande spécifie le préfixe `Private/`. Dans la console, si Bob ou Alice ouvre le dossier `Private`, avec cette stratégie, Amazon S3 renvoie une réponse d’erreur.

  ```
  {
    "Sid": "DenyListBucketOnPrivateFolder",
    "Action": ["s3:ListBucket"],
    "Effect": "Deny",
    "Resource": ["arn:aws:s3:::*"],
    "Condition":{
        "StringLike":{"s3:prefix":["Private/"]}
     }
  }
  ```

Remplacez la stratégie de groupe `Consultants` par une stratégie mise à jour qui inclut les déclarations de refus précédentes. Après l’application de la stratégie mise à jour, aucun des utilisateurs du groupe ne peut accéder au dossier `Private` de votre 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/).

   Utilisez vos Compte AWS informations d'identification, et non celles d'un utilisateur IAM, pour vous connecter à la console.

1. Remplacez la stratégie gérée `AllowGroupToSeeBucketListInTheConsole` existante qui est attachée au groupe `Consultants` par la stratégie suivante. N’oubliez pas de remplacer *`companybucket`* dans la stratégie par le nom de votre compartiment. 

   Pour obtenir des instructions, consultez [Modification des politiques gérées par le client](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html#edit-managed-policy-console) dans le *Guide de l’utilisateur IAM*. Lorsque vous suivez ces instructions, veillez à suivre les consignes pour appliquer vos modifications à toutes les entités principales auxquelles la stratégie est attachée. 

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "AllowGroupToSeeBucketListAndAlsoAllowGetBucketLocationRequiredForListBucket",
         "Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"],
         "Effect": "Allow",
         "Resource": ["arn:aws:s3:::*"]
       },
       {
         "Sid": "AllowRootLevelListingOfCompanyBucket",
         "Action": ["s3:ListBucket"],
         "Effect": "Allow",
         "Resource": ["arn:aws:s3:::companybucket"],
         "Condition":{
             "StringEquals":{"s3:prefix":[""]}
          }
       },
       {
         "Sid": "RequireFolderStyleList",
         "Action": ["s3:ListBucket"],
         "Effect": "Deny",
         "Resource": ["arn:aws:s3:::*"],
         "Condition":{
             "StringNotEquals":{"s3:delimiter":"/"}
          }
        },
       {
         "Sid": "ExplictDenyAccessToPrivateFolderToEveryoneInTheGroup",
         "Action": ["s3:*"],
         "Effect": "Deny",
         "Resource":["arn:aws:s3:::companybucket/Private/*"]
       },
       {
         "Sid": "DenyListBucketOnPrivateFolder",
         "Action": ["s3:ListBucket"],
         "Effect": "Deny",
         "Resource": ["arn:aws:s3:::*"],
         "Condition":{
             "StringLike":{"s3:prefix":["Private/"]}
          }
       }
     ]
   }
   ```

------



## Étape 8 : Nettoyage
<a name="walkthrough-cleanup"></a>

Pour effectuer le nettoyage, ouvrez la [console IAM](https://console.aws.amazon.com/iam/), puis supprimez les utilisateurs Alice et Bob. Pour step-by-step obtenir des instructions, reportez-vous à [la section Suppression d'un utilisateur IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_manage.html#id_users_deleting) dans le guide de l'*utilisateur IAM*.

Pour vous assurer que le stockage ne vous est plus facturé, vous devez également supprimer les objets et le compartiment que vous avez créés pour cet exercice.

## Ressources connexes
<a name="RelatedResources-walkthrough1"></a>
+ [Gestion des politiques IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html) dans le *Guide de l’utilisateur IAM*