Comment puis-je accorder à un utilisateur l'accès à la console Amazon S3 à un certain compartiment ou dossier seulement ?

Date de la dernière mise à jour : 04/03/2022

Je veux accorder à un utilisateur l'accès à la console Amazon Simple Storage Service (Amazon S3) à un compartiment ou un dossier (préfixe). 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é d'Amazon S3 ?

Brève description

Pour limiter l'accès à la console 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 ressemble à ceci :

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.

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.

Remarque : si une stratégie utilisateur jointe autorise l'accès s3:* ou Full Admin avec la ressource « * », elle inclut alors déjà les autorisations S3:ListAllMyBuckets. Par conséquent, supprimez la ressource « * ». Assurez-vous plutôt d'utiliser l'une des stratégies d'exemple répertoriées dans cet article.

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 S3 :

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

La stratégie permet à l'utilisateur d'exécuter les actions s3:ListBucket, s3:PutObject et s3:GetObject uniquement sur DOC-EXAMPLE-BUCKET.

L'exemple de politique suivant accorde l'accès à un dossier. La politique permet à l'utilisateur d'effectuer les actions s3:ListBucket, s3:ListBucketVersions, s3:PutObject, s3:GetObject et s3:GetObjectVersion uniquement sur le folder2 dans DOC-EXAMPLE-BUCKET. Les actions s3:ListBucketVersions et s3:GetObjectVersion ne sont requises que si le la gestion des versions est activée sur le compartiment et que vous souhaitez que les utilisateurs aient accès aux versions précédentes des objets.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowUsersToAccessFolder2Only",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion",
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/folder1/folder2/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:ListBucketVersion"
      ],
      "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 à ceci :

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

Le lien direct de la console vers un dossier ressemble à ceci :

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 ?


Avez-vous besoin d'aide pour une question technique ou de facturation ?