Je souhaite accorder à un utilisateur AWS Identity and Access Management (IAM) d'un autre compte l'accès à mon compartiment Amazon Simple Storage Service (Amazon S3). Je souhaite également accorder un accès intercompte afin que l'utilisateur puisse charger des objets dans mon compartiment Amazon S3.
Résolution
Pour autoriser un utilisateur IAM appartenant au compte A à charger des objets dans un compartiment S3 appartenant au compte B, vous devez suivre ces étapes :
-
À partir du compte A, attachez une politique à l'utilisateur IAM. Cette politique doit autoriser l'utilisateur à exécuter les actions s3:PutObject et s3:PutObjectAcl dans le compartiment du compte B :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
]
}
]
}
Remarque : avant de spécifier une liste de contrôle d'accès (ACL) dans le cadre du chargement des objets, vous devez disposer de l'autorisation s3:PutObjectAcl. Dans le cas contraire, vous obtiendrez le message d'erreur Accès refusé lors du chargement d’un objet avec une ACL telle que bucket-owner-full control.
-
Dans le compte A, prenez note de la valeur Amazon Resource Name (ARN) de l'utilisateur IAM.
-
Dans le compte B, attachez une politique de compartiment qui autorise l'utilisateur IAM du compte A à exécuter les actions s3:PutObject et s3:PutObjectAcl :
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DelegateS3Access",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::999999999999:user/UploadData"
},
"Action": [
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": [
"arn:aws:s3:::DOC-EXAMPLE-BUCKET",
"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
]
}
]
}
Important : vous devez renseigner l'ARN de l'utilisateur IAM du compte A dans le champ Principal.
L'utilisateur IAM peut désormais charger des objets dans Amazon S3.
Informations connexes
Exemple 2 : propriétaire d'un compartiment accordant des autorisations intercomptes sur un compartiment