【发布时间】:2020-03-24 04:19:31
【问题描述】:
我们面临的以下问题需要帮助????
任何提示将不胜感激!
细节和环境:
- 一个多租户应用程序,旨在为每个客户(组织)提供一个专用租户,以实现完全分离。
- AWS Cognito 用户池作为我用户的数据存储和身份验证提供商。
- 每个客户的“AWS Cognito 用户池”(组织)。
- 角色管理 - 基于内置的用户池组。按角色分组,服务器端验证用户的访问令牌是否在其嵌入式组列表中包含组名。
到目前为止一切顺利,一切都按预期工作,使用 AWS Amplify 的 SDK,用于客户端的实施。 Amplify 表现良好,让我可以做任何我想做的事。服务器验证群组归属等。
问题:
我想限制非管理员用户(不属于“管理员”组)通过 Amplify 执行某些 Cognito 操作。 2个例子:
- 我想禁止非管理员用户通过 Amplify 修改特定属性的值。
- 我想禁止非管理员用户通过 Amplify 为自己修改 MFA 设置。
当我希望管理员能够为其他用户设置 MFA(启用/禁用)时,实际问题开始了,但在 Cognito(据我了解)中,只有用户可以设置自己的 MFA 设置。
我看到并尝试过的:
- 设置用户属性的读/写权限。因此,我要保护的特定属性只能通过使用开发人员凭据的 API 调用进行修改。这样,管理员可以致电我的服务器要求修改属性。服务器根据访问令牌通过所属组验证角色并调用 Cognito API。该解决方案的问题在于它仅涵盖属性修改场景。
- 为每个用户池创建一个 AWS Cognito 身份池。对于每个用户池中的每个组,使用将限制或允许所需行为的策略创建一个 AWS IAM 角色。实际上可以工作。该解决方案的问题在于,它感觉像是一个超级骗子,而且它需要我为每个用户池创建一个额外的身份池和一个 IAM 角色。这意味着每个加入服务的新客户都需要 (1) 用户池、(2) Cognito 客户端应用程序、(3) 身份池和 (4) IAM 角色(而不仅仅是用户池和 Cognito 客户端应用程序)。 Essentially, implementing this solution.
真正的问题:
我可以限制某个组中的用户对自己执行操作,例如禁用 MFA(即使用户池的 MFA 设置为“可选”)?强>
非常感谢大家!任何帮助,将不胜感激!
【问题讨论】:
标签: amazon-web-services amazon-cognito amazon-iam multi-tenant