2016-12-26 3 views
3

Je reçois une erreur lors de l'appel à la méthode assume role de STS. Il dit que l'utilisateur n'est pas autorisé à effectuer sts:AsumeRole sur la ressource xxx.Comment activer l'accès à AWS STS AssumeRole

j'ai fait ce qui suit:

  1. J'ai créé un rôle à l'accès au seau S3.
  2. j'ai couru un test sur simulateur de politique et fonctionne très bien
  3. J'ai créé un nouveau groupe, et, je créé une nouvelle politique qui permet toutes les actions de mailles, sur toutes les ressources.
  4. J'ai effectué un test avec le simulateur de stratégie, pour que les SS assument le rôle, en pointant vers l'ARN du rôle créé à la première étape; et il fonctionne très bien
  5. J'ai créé un nouvel utilisateur, et le mettre dans le groupe créé à l'étape 3
  6. Avec les pouvoirs du nouvel utilisateur, je tente d'obtenir un nouveau pouvoirs en utilisant m Asume rôle, mais me jette un erreur qui dit que mon utilisateur n'est pas autorisé à effectuer des sts: AssumeRole

Qu'est-ce que je fais mal?

politique dans le groupe

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "some-large-id", 
      "Effect": "Allow", 
      "Action": [ 
       "sts:*" 
      ], 
      "Resource": [ 
       "*" 
      ] 
     } 
    ] 
} 

politique dans le rôle

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "another-large-id", 
      "Effect": "Allow", 
      "Action": [ 
       "s3:PutObject" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::my-bucket-name/*" 
      ] 
     } 
    ] 
} 

Et enfin appeler comme ça

let policy = { 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "new-custom-id", 
      "Effect": "Allow", 
      "Action": ["s3:PutObject"], 
      "Resource": ["arn:aws:s3:::my-bucket-name/*"] 
     } 
    ] 
}; 

let params = { 
    DurationSeconds: 3600, 
    ExternalId: 'some-value', 
    Policy: JSON.stringify(policy), 
    RoleArn: "arn:aws:iam::NUMBER:role/ROLE-NAME", //Cheked, role is the same that step one 
    RoleSessionName: this.makeNewSessionId() 
}; 
let sts = new AWS.STS({ apiVersion: '2012-08-10' }); 

sts.assumeRole(params, (err, data) => { 
    if(err) console.log(err); 
    else console.log(data); 
}); 

Répondre

4

Il y a une étape qui manquait: set relantionship de confiance sur le rôle créé dans la première étape. Quels que soient les privilèges de l'utilisateur, STS refusera la demande si la relation d'approbation n'est pas établie.

Troubleshooting IAM Roles expliquer comment cela fonctionne.

+0

Oh mon Dieu, merci. – mikejones1477

+0

Cela m'a aidé. Il spécifie comment définir les valeurs dans Principal. http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html –