Comment autoriser un utilisateur à accéder à un dossier donné dans mon compartiment Amazon S3 ?

Date de la dernière mise à jour : 17/04/2019

Je veux autoriser un utilisateur AWS Identity and Access Management (IAM) à accéder à un dossier spécifique dans mon compartiment Amazon Simple Storage Service (Amazon S3). Comment faire ? 

Résolution

Utilisez une stratégie IAM pour autoriser l’utilisateur à accéder au dossier et définissez les actions Amazon S3 qu’il peut exécuter sur le dossier. Par exemple, la stratégie IAM suivante permet à un utilisateur de télécharger des objets depuis le dossier awsexamplebucket/multimedia en utilisant la console Amazon S3. La stratégie inclut les instructions suivantes :

  • AllowStatement1 : permet à l'utilisateur de répertorier les compartiments qui appartiennent à son compte AWS. L'utilisateur doit disposer de cette autorisation pour pouvoir accéder au compartiment en utilisant la console.
  • AllowStatement2A : permet à l'utilisateur de répertorier les dossiers dans awsexamplebucket dans lequel l'utilisateur doit pouvoir naviguer pour accéder au dossier en utilisant la console. L'instruction permet également à l'utilisateur d'effectuer une recherche sur le préfixe media/ en utilisant console.
  • AllowStatement3 : permet à l'utilisateur de répertorier le contenu dans awsexamplebucket/media.
  • AllowStatement4A : permet à l'utilisateur de télécharger des objets (s3:GetObject) depuis le dossier awsexamplebucket/media.
{
 "Version":"2012-10-17",
 "Statement": [
   {
     "Sid": "AllowStatement1",
     "Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"],
     "Effect": "Allow",
     "Resource": ["arn:aws:s3:::*"]
   },
  {
     "Sid": "AllowStatement2A",
     "Action": ["s3:ListBucket"],
     "Effect": "Allow",
     "Resource": ["arn:aws:s3:::awsexamplebucket"],
     "Condition":{"StringEquals":{"s3:prefix":["","media"]}}
    },
  {
     "Sid": "AllowStatement3",
     "Action": ["s3:ListBucket"],
     "Effect": "Allow",
     "Resource": ["arn:aws:s3:::awsexamplebucket"],
     "Condition":{"StringLike":{"s3:prefix":["media/*"]}}
    },    
   {
     "Sid": "AllowStatement4A",
     "Effect": "Allow",
     "Action": ["s3:GetObject"],
     "Resource": ["arn:aws:s3:::awsexamplebucket/media/*"]
   }
 ]
}

Autre exemple : la stratégie IAM suivante permet à l'utilisateur d'accéder à toutes les actions Amazon S3 dans le dossier awsexamplebucket/multimedia en utilisant la console ou des méthodes de programmation telles que l'interface de ligne de commande (CLI) AWS ou l'API Amazon S3. Les différences par rapport à la stratégie IAM précédente sont les suivantes :

  • AllowStatement2B inclut "s3:delimiter":["/"] qui spécifie la barre oblique (/) comme délimiteur pour les dossiers dans le chemin d'accès à un objet. Il est recommandé de spécifier le délimiteur si l'utilisateur doit envoyer des requêtes en utilisant l’interface CLI AWS ou l’API Amazon S3.
  • AllowStatement4B permet à l'utilisateur d'effectuer toutes les actions au niveau des objets du dossier awsexamplebucket/media.
{
 "Version":"2012-10-17",
 "Statement": [
   {
     "Sid": "AllowStatement1",
     "Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"],
     "Effect": "Allow",
     "Resource": ["arn:aws:s3:::*"]
   },
  {
     "Sid": "AllowStatement2B",
     "Action": ["s3:ListBucket"],
     "Effect": "Allow",
     "Resource": ["arn:aws:s3:::awsexamplebucket"],
     "Condition":{"StringEquals":{"s3:prefix":["","media"],"s3:delimiter":["/"]}}
    },
  {
     "Sid": "AllowStatement3",
     "Action": ["s3:ListBucket"],
     "Effect": "Allow",
     "Resource": ["arn:aws:s3:::awsexamplebucket"],
     "Condition":{"StringLike":{"s3:prefix":["media/*"]}}
    },
   {
     "Sid": "AllowStatement4B",
     "Effect": "Allow",
     "Action": ["s3:*"],
     "Resource": ["arn:aws:s3:::awsexamplebucket/media/*"]
   }
 ]
}

Cette page vous a-t-elle été utile ?

Cette page peut-elle être améliorée ?


Vous avez besoin d'aide ?