用户组多租赁最佳实践 - Amazon Cognito
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

用户组多租赁最佳实践

当您的架构需要 Amazon Cognito 用户池和身份池时,基于组的多租赁效果更好。

用户池 ID 令牌和访问令牌包含 cognito:groups 声明。此外,ID 令牌包含 cognito:rolescognito:preferred_role 声明。当您的应用程序中身份验证的主要结果是来自身份池的临时 Amazon 凭证时,您的用户的组成员资格可以决定他们获得的 IAM 角色和权限。

例如,假设三个租户,每个租户都在自己的 Amazon S3 存储桶中存储应用程序资产。将每个租户的用户分配到关联的组,为该组配置首选角色,并授予该角色读取其存储桶的权限。

下图显示租户共享应用程序客户端和用户池,且用户池中的专用组用来确定他们是否有资格代入 IAM 角色。

多对一的多租赁模型示意图,其中共享用户池中的每个租户都有自己的用户组。
何时实施组多租赁

当 Amazon 资源访问是您的首要考虑时。Amazon Cognito 用户池中的组是一种基于角色的访问控制(RBAC)机制。您可以在用户池中配置许多组,并根据组优先级作出复杂的 RBAC 决策。身份池可以为优先级最高的角色、组声明中的任何角色或来自用户令牌中其他声明的角色分配凭证。

工作量水平

仅通过组成员身份来维持多租赁架构的工作量很低。但是,要将用户池组的角色扩展到内置的 IAM 角色选择容量之外,必须构建应用程序逻辑来处理用户令牌中的组成员身份,并确定要在客户端中执行的操作。可以将 Amazon Verified Permissions 与应用程序集成,从而作出客户端授权决策。当前未在 Verified Permissions IsAuthorizedWithToken API 操作中处理组标识符,但您可以开发自定义代码来解析令牌的内容,包括组成员身份声明。