如何启用对AWS STS AssumeRole的访问

在调用STS的assume role方法时出现错误。 它表示用户没有被授权在资源xxx上执行sts:AsumeRole

我做了以下几点:

  1. 我创build了一个angular色来访问S3存储桶。
  2. 我在策略模拟器上运行testing,工作正常
  3. 我创build了一个新组,并在其中创build了一个新策略,使所有资源上的所有sts操作成为可能。
  4. 我使用策略模拟器运行了一个testing,以扮演angular色,指向在第一步创build的angular色的ARN; 它工作正常
  5. 我创build了一个新用户,并将其放在第3步创build的组中
  6. 随着新用户的凭据,我尝试使用sts asumeangular色获得新的凭据,但抛出一个错误,说我的用户没有被授权执行sts:AssumeRole

我究竟做错了什么?

政策在集团

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

政策的angular色

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

有一个缺失的步骤:在第一步创build的angular色上设置信任关系。 无论用户拥有什么特权,如果没有设置信任关系,STS将拒绝该请求。

故障排除IAMangular色解释了它是如何工作的。