Как разрешить доступ к AWS STS AssumeRole

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

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

  • Я создал роль для доступа к ведро S3.
  • Я проверил тестовый симулятор политики и отлично работал
  • Я создал новую группу, и в ней я создал новую политику, которая включает все действия sts по всем ресурсам.
  • Я проверил тест с симулятором политики, чтобы принять роль, указывая к ARN роли, созданной на первом этапе; и он отлично работает
  • Я создал нового пользователя и поместил его в группу, созданную на шаге 3
  • С учетными данными нового пользователя, я пытаюсь получить новые учетные данные используя роль ass asume, но выбросьте мне ошибку, которая говорит, что мой пользователь не уполномочен выполнять 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);
});

Ответ 1

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

Устранение неполадок роли IAM объясняют, как это работает.