2016-12-26 6 views
3

Я получаю сообщение об ошибке при звонке в assume role метод STS. В нем говорится, что пользователь не имеет права выполнять sts:AsumeRole на ресурсе xxx.Как разрешить доступ к AWS STS AssumeRole

я сделал следующее:

  1. Я создал роль доступа к S3 ведро.
  2. Я провел тест по тренажеру политики и работаю отлично
  3. Я создал новую группу, и в ней, я создал новую политику, которая позволяет все StS действия, над всеми ресурсами.
  4. Я проверил тест с симулятором политики, чтобы выполнить роль sts, указывая на ARN роли, созданной на первом шаге; и она отлично работает
  5. Я создал новый пользователь, и поместить его в группе, созданной на шаге 3
  6. С полномочиями нового пользователя, я стараюсь, чтобы получить новые полномочия используя петла предполагает роль, но бросить меня в ошибка, заявленная моим пользователем, не является , уполномоченным на выполнение sts: AssumeRole

Что я делаю неправильно?

политики в группе

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

политика в роли

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

И, наконец, вызывая как этот

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); 
}); 

ответ

4

Существует шаг, который отсутствовал: установить доверие relantionship на роль создана в первом шаге. Независимо от того, какие привилегии у пользователя были, если не настроены доверительные отношения, STS откажется от запроса.

Troubleshooting IAM Roles объясните, как это работает.

+0

О, Боже, спасибо. – mikejones1477

+0

Это помогло мне. В нем указывается, как устанавливать значения в Principal. http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html –