Предполагается, что роль означает запрос к службе маркеров безопасности (STS) предоставить вам набор временных учетных данных - учетных данных роли, которые относятся к роли, которую вы хотите занять. (В частности, новый «сеанс» с этой ролью.)
Вы можете дополнительно включить в этот запрос политику, которая будет ограничивать разрешения временных учетных данных только подмножеством разрешенных политиками роли.
Затем вы используете эти учетные данные для дальнейших запросов. Эти учетные данные похожи на учетные данные пользователя IAM с идентификатором-ключом доступа и секретом, но ключ доступа начинается с ASIA
вместо AKIA
, и есть третий элемент, называемый маркером безопасности, который должен быть включен в подписанные запросы с временными полномочиями.
Когда вы отправляете запросы с этими временными учетными данными, у вас есть разрешения, связанные с ролью, а не ваши собственные (если у вас есть), потому что вы приобрели новую личность. CloudTrail можно использовать для отслеживания учетных данных роли обратно пользователю, который принял роль, но в противном случае служба не знает, кто использует учетные данные.
tl; dr: Принятие роли означает получение набора временных учетных данных, связанных с ролью, а не с объектом, который принял роль.
AWS (API? Или некоторое время выполнения авторизации в AWS?) Определяет роли, которые может быть предоставлен принципалу.
Нет. Вы указываете роль, которую хотите занять.
Когда «вы» - это код, выполняющийся на экземпляре EC2, и экземпляр имеет роль экземпляра, инфраструктура EC2 фактически вызывает accept-роль от имени экземпляра, и вы можете получить временные учетные данные из экземпляра служба метаданных . Эти учетные данные доступны только из экземпляра, но они не хранятся в экземпляре.
При запуске функции Lambda инфраструктура Lambda связывается с STS и помещает ваши временные учетные данные в переменные среды . Опять же, эти учетные данные доступны для функции без сохранения внутри функции.
В любом случае вы могли бы вызвать взять на себя роль с этими учетными данными и принять другую роль, но это не должно быть необходимо в большинстве сред.
например. если указан пользователь EC2 для выполнения вызова API предположительной роли и запуска приложения, которое обращается к ресурсам AWS в экземпляре EC2, к которому присоединен профиль IAM, то:
AWS не знает пользователей EC2 . Роли экземпляра доступны всем, кто работает в экземпляре.
Все роли IAM из профиля IAM EC2
Профиль экземпляра может включать только одну роль .
Роли и политики IAM, запрошенные в вызове предположительной роли
Вы просите взять на себя ровно одну роль. Вам не нужно запрашивать политику - вы указываете политику только в том случае, если хотите, чтобы временные учетные данные имели меньше привилегий, чем позволяют учетные данные роли. Это может быть чем-то, что вам нужно сделать, если вам нужен код, работающий в ненадежном месте, например код в браузере или приложении, чтобы иметь возможность подписывать запросы с учетными данными.
AWS находит роль из ролей, у которых есть политика (действие, ресурс), которая позволяет принципу выполнять действие над ресурсом.
Нет. Как отмечалось выше, вы запрашиваете определенную роль при вызове accept-role.
AWS переключает роль принципа на указанную роль.
Нет. Вы выполняете переключение, используя предоставленные временные учетные данные.