承担角色意味着要求安全令牌服务 (STS) 为您提供一组特定于您要承担的角色的临时凭证(角色凭证)。 (具体来说,是一个具有该角色的新“会话”。)
您可以选择在此请求中包含一个策略,该策略将用于将临时凭证的权限限制为角色策略所允许的权限的子集。
然后,您可以使用这些凭据提出进一步的请求。这些凭证看起来类似于具有访问密钥 ID 和密钥的 IAM 用户凭证,但访问密钥以ASIA
代替AKIA
还有第三个元素,称为安全令牌,它必须包含在使用临时凭据签名的请求中。
当您使用这些临时凭据发出请求时,您将拥有与该角色关联的权限,而不是您自己的权限(如果您有的话),因为您已采用新身份。 CloudTrail 可用于将角色凭证追溯到担任该角色的用户,但除此之外,服务不知道谁在使用该凭证。
tl;dr:承担角色意味着获取一组与该角色相关联的临时凭证,而不是与承担该角色的实体相关联。
AWS(API?或AWS中的某些授权运行时?)标识可以授予委托人的角色。
不需要。您可以指定您想要担任的角色。
当“您”在 EC2 实例上运行代码并且该实例具有实例角色时,EC2 基础设施实际上代表该实例调用假设角色,您可以从实例元数据服务 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html#instancedata-data-categories。这些凭证只能从实例内部访问,但不会存储在实例上。
运行 Lambda 函数时,Lambda 基础设施会联系 STS 并将您的临时凭证放入环境变量 https://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html。同样,这些凭证可供函数访问,而无需存储在函数内部。
在任何一种情况下,您都可以使用这些凭据调用假设角色并假设不同的角色,但这在大多数环境中不是必需的。
例如如果指定 EC2 用户执行假设角色 API 调用并运行访问附加 IAM 配置文件的 EC2 实例中的 AWS 资源的应用程序,则:
AWS不知道EC2users。实例上运行的所有内容都可以访问实例角色。
EC2 IAM 配置文件中的所有 IAM 角色
一个实例配置文件只能包含一个角色 https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html.
假设角色调用中请求的 IAM 角色和策略
您请求只担任一个角色。您不需要请求策略 - 仅当您希望临时凭证具有fewer比角色凭据允许的权限。如果您需要在不受信任的地方运行代码(例如浏览器或应用程序中的代码)以便能够使用凭据签署请求,那么您可能会这样做。
AWS 从具有允许原则对资源执行操作的策略(操作、资源)的角色中查找角色。
不需要。如上所述,当您调用假设角色时,您会要求一个特定的角色。
AWS 将原则的角色切换为已识别的角色。
No. You使用提供的临时凭据进行切换。