Lorsque j’utilise l’API GetFederationToken pour générer des informations d’identification temporaires, la variable de politique ${aws:userName} ne fonctionne pas.
Résolution
Lorsque l’élément Principal est un utilisateur fédéré, la variable de politique Gestion des identités et des accès AWS (AWS IAM) ${aws:userName} ne figure pas dans la demande. Au lieu de cela, utilisez la variable de politique ${aws:userID} avec les appels d’API GetFederationToken. Pour en savoir plus, consultez la page Où utiliser les variables de politique.
Dans l’exemple de politique JSON suivant, la variable de politique ${aws:userName} est remplacée par la variable de politique ${aws:userID} :
{ "Version":"2012-10-17",
"Statement":[
{
"Sid":"AllowListingOfUserFolder",
"Action":[
"s3:ListBucket"
],
"Effect":"Allow",
"Resource":[
"arn:aws:s3:::TESTBUCKET"
],
"Condition":{
"StringLike":{
"s3:prefix":[
"TESTBUCKET/${aws:userid}/*"
]
}
}
},
{
"Sid":"AllowAllS3ActionsInUserFolder",
"Action":[
"s3:PutObject",
"s3:GetObject",
"s3:GetObjectVersion",
"s3:DeleteObject"
],
"Effect":"Allow",
"Resource":[
"arn:aws:s3:::TESTBUCKET/${aws:userid}/*"
]
}
]
}
La valeur de la variable aws:userid doit être ACCOUNTNUMBER:caller-specified-name.
La valeur du paramètre Nom pour les appels d’API GetFederationToken doit suivre les directives GetFederationToken. Par exemple, si vous spécifiez le nom convivial Bob, le format correct est 123456789102:Bob. Ce format donne un nom à votre session et permet d’accéder au compartiment Amazon Simple Storage Service (Amazon S3) présentant un préfixe correspondant.
Remarque : l’exemple précédent suppose que le nom convivial de la variable aws:userid spécifié par l’appelant soit un identifiant unique. Un nom convivial unique empêche qu’un autre utilisateur portant le même nom convivial accède aux ressources spécifiées dans la politique JSON.
Informations connexes
Autorisations pour GetFederationToken
Éléments de politique IAM : variables et balises
Identifiants IAM