问题
阐明 AWS 中的用户如何代入 IAM 角色。这让我感到困惑,因为 AWS 中的用户/身份可能会因上下文而有所不同,例如 IAM 用户、Cognito 用户池用户、Cognito 联合用户。
背景
试图了解AWS中用户和身份之间的关系以及每个用户如何承担 IAM 角色。
同样在 AWS 中,用户/未经身份验证和身份(经过身份验证的用户)似乎是不同的概念,两者都可以承担 IAM 角色,因此看起来经过身份验证不是承担 IAM 角色的先决条件,这也让我感到困惑。
- IAM用户/身份(身份 = 通过 AWS CLI 使用 AWS ID/Secret 进行身份验证的用户)
- Cognito 用户池用户/身份(已验证)
- Cognito 联合身份池用户/身份(经过身份验证)
- 还有其他用户类型吗?
IAM 用户(经过身份验证)
我相信这是通过登录 AWS 控制台或使用 AWS 访问密钥 ID/秘密通过 CLI/SDK 识别的用户身份。此用户可以通过切换到角色(AWS 管理控制台)或使用 CLI/SDK 以编程方式代入角色来代入IAM 角色。这个对吗?
Cognito 用户池用户
我相信此用户仅存在于 Cognito 中的 AWS 账户中,与 IAM User 无关。目前无法将IAM 用户映射到Cognito 用户(用户池和联合身份池),如Add AWS IAM users to AWS Cognito Pool中那样。
看起来有几种方法可以将 IAM 角色分配给 Cognito 用户池用户或身份(经过身份验证的用户)。
一种方法是将 IAM 角色分配给添加用户的 Cognito 用户池组。用户池组中经过身份验证的用户可以自动代入 IAM 角色。
另一种方法是通过与 Cognito 用户池联合来使用 Cognito 联合身份池,并将 IAM 角色分配给联合身份池。在这种情况下,Cognito 用户池用户/身份(经过身份验证)等同于 Cognito 联合身份池用户/身份(经过身份验证)。
我想用户将通过 Cognito 联合身份池使用 Cognito 用户池工作流程进行身份验证。然后,用户可以承担映射到 Cognito 用户池组的 IAM 角色和映射到 Cognito 联合身份(经过身份验证)的 IAM 角色。
这些是正确的,还是用户只能承担其中一个 IAM 角色?如果AWS 组织中有多个账户怎么办。每个账户应该创建其 Cognito 用户池来管理同一组用户,还是在一个账户中拥有一个 Cognito 用户池并通过指向用户池的 Cognito 联合身份在账户之间共享 Cognito 用户池?
Cognito 联合身份池用户
如果联盟不与 Cognito 合作,例如 Facebook,则 Cognito 联合身份池用户/身份与 Cognito 用户池用户/身份无关,并且该用户是 Facebook 的用户。用户可以承担映射到 Cognito 联合身份池的 IAM 角色,即使它未经身份验证也是如此。这个对吗?
帮助
我一直在研究 AWS Re:Invent 视频、AWS 文档,但要清楚地理解 Cognito 术语和含义是一项艰巨的任务。如果有清晰、简单、直观的解释,请提供参考。