Ошибка, когда Ec2, работающий в качестве роли, пытается получить токен сеанса в AWS.

Я запускаю приложение на EC2, используя роль с разрешениями:

"sts:GetSessionToken",
"sts:AssumeRole"

Когда я пытаюсь получить временные учетные данные, используя эту роль, я получаю сообщение об ошибке:

Cannot call GetSessionToken with session credentials (Service: AWSSecurityTokenService; Status Code: 403; Error Code: AccessDenied;

Мне не хватает одного или нескольких разрешений для роли, чтобы получить временные учетные данные сеанса?


person Todd    schedule 08.03.2016    source источник
comment
Начните с "sts:*" и убедитесь, что это работает. Если это не так, политика вашей роли определена неправильно. Если это так, сделайте политику шаг за шагом детализированной.   -  person helloV    schedule 08.03.2016
comment
Я добавил в роль как allow sts:*, так и iam:*, но безуспешно.   -  person Todd    schedule 08.03.2016
comment
Так что ваша политика не определена правильно. Примеров много, используйте их или разместите свою политику.   -  person helloV    schedule 08.03.2016
comment
@helloV Вам не нужна политика для вызова GetSessionToken. Ответ, на который указал Тодд, на самом деле правильный. Вы можете вызывать GetSessionToken только с использованием пользователя IAM, а не роли. Учетные данные, полученные при принятии роли, уже являются учетными данными сеанса, нет смысла получать их снова.   -  person Viccari    schedule 01.05.2017


Ответы (1)


Согласно поддержке AWS, роли не могут запрашивать временные учетные данные. Это могут сделать только реальные пользователи.

Обходной путь заключается в использовании учетных данных роли. Они обновляются каждый час, поэтому являются временными (хотя и жестко запрограммированы на 1 час TTL).

person Todd    schedule 08.03.2016
comment
Когда вы работаете с ролью, ваши учетные данные являются учетными данными сеанса (которые служба EC2 получает от имени вашего экземпляра), отсюда и формулировка ошибки Cannot call GetSessionToken with session credentials. - person Michael - sqlbot; 09.03.2016
comment
Это очень ценно. Есть ли какие-либо документы aws по этому @Michael-sqlbot? - person Mathemats; 10.09.2020
comment
@Michael-sqlbot Проблема, с которой я столкнулся, заключалась в том, что я пытался использовать роль экземпляра EC2 для создания токенов сеанса, чего вы не можете сделать. Вместо этого я создал нового пользователя IAM и дал ему нужные мне политики. - person Mathemats; 11.09.2020
comment
@Mathemats, многие люди неправильно используют GetSessionToken, когда на самом деле им следует использовать AssumeRole. GetSessionToken практически не имеет допустимых вариантов использования, за исключением, может быть, MFA, в то время как AssumeRole можно вызывать из другой роли, и в большинстве случаев это правильный способ получить временные учетные данные. - person Michael - sqlbot; 11.09.2020