亚马逊Cognito多租户最佳方法

ber*_*tie 9 multi-tenant amazon-web-services amazon-cognito

我正在AWS上开发一个多租户应用程序.我正在努力在认知上实施多租户.我的第一种方法是为整个应用程序使用一个Cognito用户池和一个标识池.

目前我们每个租户有两种用户(管理员和普通用户),所以我想为他们分配不同的IAM角色.

我们的想法是为每个用户角色创建一个Cognito组,并将它们与各自的IAM角色相关联.它工作正常.使用组进行角色分配时,我将身份池身份验证角色选择配置为"从令牌中选择角色".

但是,对于20个租户,将需要40个组,并且每个用户池的Cognito组限制为25个.

每个租户使用Cognito用户池具有相同的不便,因为Cognito用户池的限制为50(我们预计超过25个租户).

这些是软限制,所以我知道可以要求增加它.事实上,我要求增加Cognito Groups Limit,但答案花了太长时间.

作为Cognito Group的替代方案,我可以将身份池身份验证角色选择配置为"选择带规则的角色".

通过这种方式,我添加了Cognito User Pool自定义属性(custom:role)和配置的Identity Pool Cognito Authenticate Provider,其规则如下:

if custom:role equals 'tenant1_admin' then assign TENANT_1_ADMIN_IAM_ROLE

if custom:role equals 'tenant1_regular' then assign TENANT_1_REGULAR_IAM_ROLE

...

if custom:role equals 'tenant20_admin' then assign TENANT_20_ADMIN_IAM_ROLE

if custom:role equals 'tenant20_regular' then assign TENANT_20_REGULAR_IAM_ROLE
Run Code Online (Sandbox Code Playgroud)

这是在Cognito上实施多租户的正确方法吗?据我所知,Identity Pool Authenticate Providers规则号没有限制.

小智 6

我知道这个问题已经被回答并且有点老了,但是我认为这对于遇到这个问题的其他人可能很有用。AWS实际上已经制作了白皮书和快速入门指南,用于在AWS上创建多租户SaaS应用程序,网址为https://aws-quickstart.s3.amazonaws.com/saas-identity-cognito/doc/saas-identity-and-isolation -with-cognito-on-the-aws-cloud.pdf

它具有基本的Web前端(S3上的AngularJS),Cognito(每个租户一个池),处理用户租户查找的逻辑以及用于托管服务的ECS配置。非常详细,应该可以帮助刚开始或对这些类型的问题感到困惑的人们回答一堆问题。


Sum*_*Guo 5

如前所述,您可以联系AWS支持部门,要求增加您的组限制.明确说明您的用例将使限制增加更容易.您是否在用户池中使用saml或cognito登录?

  • 两种解决方案都可以工作,它取决于您期望的用户数量以及这些租户之间的差异。一般来说,我更喜欢使用多个用户池。使用单独的用户池可以更轻松地管理用户并根据不同租户自定义需求。如果您总共有很多用户,那么使用单独的用户池也可以帮助控制流量。 (2认同)