担任角色意味着要求安全令牌服务 (STS) 为您提供一组临时凭证 - 角色凭证 - 特定于您要担任的角色。 (特别是具有该角色的新“会话”。)
您可以选择在此请求中包含一个策略,这将用于将临时凭证的权限限制为角色策略允许的权限的子集。
然后,您可以使用这些凭据发出进一步的请求。这些凭证看起来类似于带有访问密钥 ID 和秘密的 IAM 用户凭证,但访问密钥以 ASIA 而不是 AKIA 开头,并且还有第三个元素,称为安全令牌,它必须包含在签名的请求中使用临时凭据。
当您使用这些临时凭证发出请求时,您拥有与该角色相关的权限,而不是您自己的权限(如果您有的话),因为您采用了新身份。 CloudTrail 可用于将角色凭据追溯到担任该角色的用户,否则服务不知道谁在使用这些凭据。
tl;dr:承担角色意味着获得一组与该角色相关联的临时凭证,而不是与承担该角色的实体相关联。
AWS(API?或 AWS 中的一些授权运行时?)标识可以授予委托人的角色。
没有。您指定要担任的角色。
当“您”是在 EC2 实例上运行的代码,并且该实例具有实例角色时,EC2 基础架构实际上会代表该实例调用假设角色,您可以从 instance metadata service 获取临时凭证。这些凭据只能从实例内部访问,但它们不存储在实例中。
在运行 Lambda 函数时,Lambda 基础设施会联系 STS 并将您的临时凭证放在 environment variables 中。同样,函数可以访问这些凭据,而无需存储在函数内部。
在任何一种情况下,您都可以使用这些凭据调用承担角色并承担不同的角色,但这在大多数环境中不是必需的。
例如如果指定 EC2 用户执行假设角色 API 调用并运行应用程序来访问附加了 IAM 配置文件的 EC2 实例中的 AWS 资源,则:
AWS 不了解 EC2 用户。实例上运行的所有东西都可以访问实例角色。
EC2 IAM 配置文件中的所有 IAM 角色
An instance profile can only include one role.
假设角色调用中请求的 IAM 角色和策略
您要求只担任一个角色。您不需要请求策略 - 如果您希望临时凭证具有比角色凭证允许的更少 权限,您只需指定策略。如果您需要在不受信任的地方(例如浏览器或应用程序中的代码)运行代码,以便能够使用凭据对请求进行签名,那么您可能会这样做。
AWS 从具有允许原则对资源执行操作的策略(操作、资源)的角色中找到一个角色。
没有。如上所述,您在调用假设角色时要求特定角色。
AWS 将原则的角色切换为识别的角色。
没有。 您使用提供的临时凭据进行切换。