阐明AWS中的用户如何承担IAM角色。这让我很困惑,因为AWS中的用户/身份可能会有所不同,具体取决于上下文,例如IAM用户,Cognito用户池用户,Cognito联合用户。
尝试了解AWS中用户和身份之间的关系,以及每个用户如何承担IAM角色。
同样在AWS中,用户/未经身份验证的和身份(经过身份验证的用户)似乎是不同的概念,并且两者都可以承担IAM角色,因此它看起来经过身份验证不是承担IAM角色的先决条件,这也让我感到困惑。
IAM用户(已通过身份验证)
我认为这是通过登录AWS控制台或通过具有AWS访问密钥ID /机密的CLI / SDK识别的用户的标识。此用户可以通过Switching to a Role (AWS Management Console)或使用CLI / SDK以编程方式assume-role承担IAM角色。这是对的吗?
Cognito用户池用户
我认为用户仅存在于AWS账户中的Cognito中,而与IAM用户无关。目前无法将 IAM用户映射到 Cognito用户(既不是用户池也不是联合身份池),如Add AWS IAM users to AWS Cognito Pool所示。
看起来很少有方法可以将IAM角色分配给Cognito用户池用户或身份(经过身份验证的用户)。
一种方法是将IAM角色分配给添加用户的Cognito用户池组。用户池组中经过身份验证的用户可以自动承担IAM角色。
另一种方法是通过与Cognito用户池联合使用Cognito联合身份池,并将IAM角色分配给联合身份池。在这种情况下,Cognito用户池用户/身份(经过身份验证)与Cognito联合身份池用户/身份(经过身份验证)等效。
我认为用户将通过Cognito联合身份池通过Cognito用户池工作流进行身份验证。然后,用户可以假定映射到Cognito用户池组的IAM角色 AND 映射到Cognito联合身份(已验证)的IAM角色。
这些是正确的,还是用户只能假设其中一个IAM角色?如果AWS organisation中有多个帐户,该怎么办?每个帐户是否应创建其Cognito用户池以管理同一组用户,或在帐户中拥有一个Cognito用户池,并通过指向用户池的Cognito Fedatated Identities在帐户之间共享Cognito用户池?
Cognito联合身份池用户
如果联盟不使用Cognito,例如使用Facebook,则Cognito联合身份池用户/身份与Cognito用户池用户/身份和用户无关是Facebook的。即使未经身份验证,用户也可以假定映射到Cognito联合身份池的IAM角色。这是对的吗?
我一直在研究AWS Re:Invent视频,AWS文档,但很难清楚地理解Cognito的术语和含义。如果有清晰,简单,直观的解释,请提供参考。