Comment autoriser un utilisateur à accéder à un dossier donné dans mon compartiment Amazon S3 ?
Dernière mise à jour : 05/11/2020
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 dois-je procéder ?
Résolution
Si l'utilisateur IAM et le compartiment S3 appartiennent au même compte AWS, vous pouvez accorder à l'utilisateur l'accès à un dossier spécifique du compartiment à l'aide d'une stratégie IAM. Tant que la stratégie de compartiment ne refuse pas explicitement l'accès de l'utilisateur au dossier, vous n'avez pas besoin de mettre à jour la stratégie de compartiment si l'accès est accordé par la stratégie IAM. Vous pouvez ajouter la stratégie IAM à différents utilisateurs IAM ou attacher la stratégie IAM à un rôle IAM vers lequel plusieurs utilisateurs peuvent basculer.
Si l'identité IAM (utilisateur ou rôle) et le compartiment S3 appartiennent à des comptes AWS différents, vous devez accorder l'accès à la fois à la stratégie IAM et à la stratégie de compartiment. Pour plus d'informations sur l'accès inter-comptes, voir Comment autoriser un utilisateur d'un autre compte AWS à charger des objets dans mon compartiment Amazon S3 ?
Par exemple, la stratégie IAM suivante permet à un utilisateur de télécharger des objets à partir du dossier DOC-EXAMPLE-BUCKET/media 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 DOC-EXAMPLE-BUCKET, où l'utilisateur doit pouvoir 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 DOC-EXAMPLE-BUCKET/media.
- AllowStatement4A permet à l'utilisateur de télécharger des objets (s3:GetObject) à partir du dossier DOC-EXAMPLE-BUCKET/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:::DOC-EXAMPLE-BUCKET"],
"Condition":{"StringEquals":{"s3:prefix":["","media"]}}
},
{
"Sid": "AllowStatement3",
"Action": ["s3:ListBucket"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET"],
"Condition":{"StringLike":{"s3:prefix":["media/*"]}}
},
{
"Sid": "AllowStatement4A",
"Effect": "Allow",
"Action": ["s3:GetObject"],
"Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET/media/*"]
}
]
}
Autre exemple : la stratégie IAM suivante permet à l'utilisateur de télécharger des objets de et vers le dossier DOC-EXAMPLE-BUCKET/media en utilisant la console ou des méthodes de programmation telles que l'AWS Command Line Interface (AWS CLI) 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 envoie des requêtes en utilisant l’interface CLI AWS ou l’API Amazon S3.
- AllowStatement4B permet à l'utilisateur de télécharger des objets de (s3:GetObject) et vers (s3:PutObject) le dossier DOC-EXAMPLE-BUCKET/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:::DOC-EXAMPLE-BUCKET"],
"Condition":{"StringEquals":{"s3:prefix":["","media"],"s3:delimiter":["/"]}}
},
{
"Sid": "AllowStatement3",
"Action": ["s3:ListBucket"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET"],
"Condition":{"StringLike":{"s3:prefix":["media/*"]}}
},
{
"Sid": "AllowStatement4B",
"Effect": "Allow",
"Action": ["s3:GetObject", "s3:PutObject"],
"Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET/media/*"]
}
]
}
Informations connexes
Cet article vous a-t-il été utile ?
Besoin d'aide pour une question technique ou de facturation ?