Comment accorder à un utilisateur un accès limité à un compartiment ou dossier donné uniquement via la console Amazon S3 ?

Date de la dernière mise à jour : 06/08/2020

Je veux accorder à un utilisateur l'accès à un compartiment ou dossier (préfixe) via la console Amazon Simple Storage Service (Amazon S3). Toutefois, je ne veux pas que l'utilisateur puisse voir d'autres compartiments dans le compte ou d'autres dossiers dans le compartiment. Comment limiter l'accès de l'utilisateur à la console à un compartiment ou dossier donné ?

Brève description

Pour limiter l'accès d'un utilisateur à la console Amazon S3 à un compartiment ou dossier (préfixe) donné uniquement, changez les autorisations AWS Identity and Access Management (IAM) suivantes :

  1. Supprimez l'autorisation d'accès à l'action s3:ListAllMyBuckets.
  2. Ajoutez l'autorisation à s3:ListBucket uniquement pour le compartiment ou dossier auquel l'utilisateur doit accéder.
    Remarque : pour permettre à l'utilisateur de charger et de télécharger des objets à partir du compartiment ou du dossier, vous devez également inclure s3:PutObject et s3:GetObject.

Avertissement : après avoir modifié ces autorisations, l'utilisateur reçoit une erreur d'accès refusé lorsqu'il accède à la console Amazon S3 principale. L'utilisateur doit accéder au compartiment à l'aide d'un lien direct de console vers le compartiment ou le dossier. Le lien direct de la console vers un compartiment est similaire à ce qui suit :

https://s3.console.aws.amazon.com/s3/buckets/AWSDOC-EXAMPLE-BUCKET/

Le lien direct de la console vers un dossier, tel que l'exemple folder2, est similaire à ce qui suit :

https://s3.console.aws.amazon.com/s3/buckets/AWSDOC-EXAMPLE-BUCKET/folder1/folder2/

Remarque : Amazon S3 utilise une structure de données plate au lieu d'une hiérarchie de fichiers. La console prend en charge le concept d'un dossier comme moyen de regrouper et d'organiser les fichiers.

Solution

Procédez comme suit pour mettre à jour les autorisations IAM d'un utilisateur pour limiter l'accès à la console à un compartiment ou dossier donné uniquement :

1.    Ouvrez la console IAM.

2.    Dans la console, ouvrez l'utilisateur ou le rôle IAM qui doit avoir accès à un compartiment donné uniquement.

3.    Dans l'onglet Permissions (Autorisations) de l’utilisateur ou du rôle IAM, développez chaque stratégie pour afficher son document de stratégie JSON.

4.    Dans les documents de stratégie JSON, recherchez la stratégie qui autorise l'utilisateur à exécuter l'action s3:ListAllMyBuckets ou les actions s3:* (toutes les actions S3).

5.    Modifiez la stratégie pour supprimer l'autorisation d'accès à l'action s3:ListAllMyBuckets.

6.    Ajoutez l'autorisation à s3:ListBucket uniquement pour le compartiment ou dossier auquel l'utilisateur doit accéder depuis la console.

L'exemple de stratégie suivant concerne l'accès à un compartiment. La stratégie suivante permet à l'utilisateur d'effectuer les actions s3:ListBucket, s3:PutObject, et s3:GetObject sur AWSDOC-EXAMPLE-BUCKET :

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "s3:ListBucket"
         ],
         "Resource":"arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET"
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:PutObject",
            "s3:GetObject"
         ],
         "Resource":"arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*"
      }
   ]
}

L'exemple de stratégie suivant concerne l'accès à un dossier. Par exemple, la stratégie suivante permet à l'utilisateur d'effectuer les actions s3:ListBucket, s3:PutObject, et s3:GetObject uniquement sur folder2 dans AWSDOC-EXAMPLE-BUCKET :

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowUsersToAccessFolder2Only",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject*",
                "s3:PutObject*"
            ],
            "Resource": [
                "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/folder1/folder2/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket*"
            ],
            "Resource": [
                "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET"
            ],
            "Condition": {
                "StringLike": {
                    "s3:prefix": [
                        "folder1/folder2/*"
                    ]
                }
            }
        }
    ]
}

7.    Fournissez à l'utilisateur un lien de console direct au compartiment ou dossier. Le lien direct de la console vers un compartiment est similaire à ce qui suit :

https://s3.console.aws.amazon.com/s3/buckets/AWSDOC-EXAMPLE-BUCKET/

Le lien direct de la console vers un dossier est similaire à ce qui suit : 

https://s3.console.aws.amazon.com/s3/buckets/AWSDOC-EXAMPLE-BUCKET/folder1/folder2/

L'utilisateur doit utiliser le lien direct pour accéder au compartiment ou dossier à partir de la console.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?