В чем разница между GetRoleCredentials и AssumeRole?

avatar
Craig Edwards
9 августа 2021 в 01:46
321
1
0

Я возился с написанием кода, который проходит через процесс аутентификации STS. Я обнаружил, что могу последовательно вызывать следующие API:

RegisterClient
StartDeviceAuthorization
CreateToken
ListAccounts
ListAccountRoles  

, и в конце концов я дошел до того, что могу позвонить GetRoleCredentials и успешно получить обратно accessKeyId, secretAccessKey и sessionToken. Я заметил, что я могу использовать эти три значения для успешного вызова набора API (например, получить список лямбда-функций).

Однако весь документ, который я читал, предполагает, что на самом деле мне также следует вызывать AssumeRole (который также возвращает accessKeyId, secretAccessKey и sessionToken).

Я просто пытаюсь выяснить, в чем разница между GetRoleCredentials и AssumeRole, и когда мне следует звонить одному или другому. Спасибо.

Источник

Ответы (1)

avatar
shimo
9 августа 2021 в 03:02
0

GetRoleCredentials:

Возвращает краткосрочные учетные данные STS для заданного имени роли, назначенного пользователю.

AssumeRole:

Возвращает набор временных учетных данных безопасности, которые можно использовать для доступа к ресурсам AWS, к которым у вас обычно нет доступа. Эти временные учетные данные состоят из идентификатора ключа доступа, секретного ключа доступа и токена безопасности.

Основные различия заключаются в том, что какой объект запускает API, чтобы получить/узнать, что.

  • Служба SSO выполняет GetRoleCredentials для получения учетных данных в роли пользователя.
  • Пользователь IAM выполняет AssumeRole для получения временных учетных данных. (А также может знать учетные данные, которые получает пользователь.)

По-видимому, в вашем случае выполняются операции единого входа, поэтому я думаю, что использование GetRoleCredentials допустимо.

Craig Edwards
9 августа 2021 в 20:57
0

Спасибо за ответ. Перед публикацией я читал обе эти ссылки несколько раз, но это все еще не объясняет /почему/ я предпочитаю использовать одну вместо другой. При отладке интерфейса командной строки AWS я вижу, что на самом деле он вызывает оба, но мне непонятно, почему.

shimo
9 августа 2021 в 21:17
0

Для успешного входа в систему единого входа служба единого входа должна подтвердить, что у пользователя есть учетные данные. Это делается в два этапа с разными сущностями и API. 1. Пользователь получает роль с учетными данными через AssumeRole. 2. Служба единого входа подтверждает учетные данные пользователя в роли через GetRoleCredentials. Я предполагаю, что в CLI шаги включены в последовательность.