AWS AssumeRole autorisation ne fonctionne pas
Je suis tente d'appeler la AssumeRole fonction à l'aide d'AWS sts dans mon programme PHP depuis le je veux créer des informations d'identification temporaires pour permettre à un utilisateur de créer un objet pour une AWS seau.
Ci-dessous est la fumction je fais appel PHP:
$sts = StsClient::factory(array(
'key' => 'XXXXXXXXXXXXXX',
'secret' => 'XXXXXXXXXXXXXXXX',
'token.ttd' => $timetodie
));
$bucket = "mybucket";
$result1 = $sts->assumeRole(array(
'RoleArn' => 'arn:aws:iam::123456789012:role/createPic',
'RoleSessionName' => 'mytest',
'Policy' => json_encode(array(
'Statement' => array(
array(
'Sid' => 'Deny attributes',
'Action' => array(
's3:deleteObject',
's3:deleteBucket'
),
'Effect' => 'Deny',
'Resource' => array(
"arn:aws:s3:::{$bucket}",
"arn:aws:s3:::{$bucket}/AWSLogs/*"
),
'Principal' => array(
'AWS' => "*"
)
)
)
)
),
'DurationSeconds' => 3600,
// 'ExternalId' => 'string',
));
$credentials = $result1->get('Credentials');
Cependant, je reçois l'erreur suivante:
Utilisateur arn:aws:iam::123456789012:utilisateur/TVMUser n'est pas autorisé à effectuer: sts:AssumeRole sur la ressource: arn:aws:iam::123456789012:rôle/createPic
Ci-dessous est ma stratégie d'autorisations pour l'utilisateur TVMUser sur ma console AWS:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect":"Allow",
"Action":"ec2:RunInstances",
"Resource":"*"
},
{
"Effect":"Allow",
"Action":"iam:PassRole",
"Resource":"arn:aws:iam::791758789361:user/TVMUser"
},
{
"Effect":"Allow",
"Action":"sts:AssumeRole",
"Resource":"arn:aws:iam::791758789361:role/createPic"
}
]
}
Ci-dessous est mon rôle en politique pour le rôle createPic:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:Get*",
"s3:List*",
"s3:Put*",
],
"Effect": "Allow",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::123456789012:role/createPic"
}
]
}
Quelqu'un maintenant que je suis absent de mon AWS énoncés de politique et d'installation sur AWS, donc je n'ai pas l'erreur: l'Utilisateur arn:aws:iam::123456789012:utilisateur/TVMUser n'est pas autorisé à effectuer: sts:AssumeRole sur la ressource: arn:aws:iam::123456789012:rôle/createPic?
Suis-je raté quelque chose?
OriginalL'auteur Dave | 2014-02-22
Vous devez vous connecter pour publier un commentaire.
Vous devez également modifier la relation de Confiance pour le rôle de permettre le compte (même si c'est la même chose) pour assumer le rôle.
Dans cet exemple, j'ai dû ajouter le "AWS" principal avec le bon numéro de compte, le ec2.amazonaws.com le Service était déjà là.
Après j'ai réalisé que j'étais capable d'assumer le rôle sans problème. M'a fallu littéralement des heures à comprendre cela, espère que cela va aider quelqu'un.
Mec, vous êtes un épargnant de vie. M'a pris des heures et ne pouvait pas comprendre pourquoi j'ai été d'être refusé.
Content que ça aide. Btw j'ai mis à jour l'exemple d'utiliser un rôle plus restreint que
root
qui est mieux à partir d'un point de vue sécurité.Merci beaucoup. Il m'a aidé à résoudre mon problème. Nous avons besoin de donner à chaque utilisateur dans des entités de confiance qui veut assumer ce rôle pour effectuer des opérations
Merci beaucoup. Cela a été très utile.
OriginalL'auteur jtblin
J'ai eu le même message d'erreur et passé des heures à essayer de réparer les autorisations et les relations de confiance... mais ce n'était pas mon problème.
Je suivais ce tutoriel et j'ai déployé la grappe dans l'Ouest des états-unis (Oregon) comme spécifié.
Pour le faire fonctionner, j'ai dû activer STS pour cette région ici.
OriginalL'auteur Thierry G.
Peut-être vous devriez affecter votre sts région et le point de terminaison:
OriginalL'auteur kaiser douglas