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 : 23/12/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 à la console Amazon S3 d'un utilisateur à un certain compartiment ou dossier (préfixe), modifiez les autorisations AWS Identity and Access Management (IAM) de l'utilisateur. Vous pouvez modifier les autorisations IAM en effectuant les opérations suivantes :

1.    Supprimez l'autorisation de 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 : une fois que vous avez modifié ces autorisations, l'utilisateur obtient une erreur 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/DOC-EXAMPLE-BUCKET/

Le lien direct de la console vers un dossier (tel que folder2) ressemble à ceci :

https://s3.console.aws.amazon.com/s3/buckets/DOC-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.

Ré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 ensuite 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 S3. La stratégie permet à l'utilisateur d'exécuter les actions s3: ListBucket, s3: PutObject et s3: GetObject uniquement sur DOC-EXAMPLE-BUCKET :

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

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

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

7.    Fournissez à l'utilisateur un lien de console direct vers le compartiment ou le dossier S3. Le lien direct de la console vers un compartiment S3 ressemble à ce qui suit :

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

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

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

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


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


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