用户组多租赁最佳实践
当您的架构需要 Amazon Cognito 用户池和身份池时,基于组的多租赁效果更好。
用户池 ID 令牌和访问令牌包含 cognito:groups
声明。此外,ID 令牌包含 cognito:roles
和 cognito:preferred_role
声明。当您的应用程序中身份验证的主要结果是来自身份池的临时 Amazon 凭证时,您的用户的组成员资格可以决定他们获得的 IAM 角色和权限。
例如,假设三个租户,每个租户都在自己的 Amazon S3 存储桶中存储应用程序资产。将每个租户的用户分配到关联的组,为该组配置首选角色,并授予该角色读取其存储桶的权限。
下图显示租户共享应用程序客户端和用户池,且用户池中的专用组用来确定他们是否有资格代入 IAM 角色。
何时实施组多租赁
当 Amazon 资源访问是您的首要考虑时。Amazon Cognito 用户池中的组是一种基于角色的访问控制(RBAC)机制。您可以在用户池中配置许多组,并根据组优先级作出复杂的 RBAC 决策。身份池可以为优先级最高的角色、组声明中的任何角色或来自用户令牌中其他声明的角色分配凭证。
工作量水平
仅通过组成员身份来维持多租赁架构的工作量很低。但是,要将用户池组的角色扩展到内置的 IAM 角色选择容量之外,必须构建应用程序逻辑来处理用户令牌中的组成员身份,并确定要在客户端中执行的操作。可以将 Amazon Verified Permissions 与应用程序集成,从而作出客户端授权决策。当前未在 Verified Permissions IsAuthorizedWithToken API 操作中处理组标识符,但您可以开发自定义代码来解析令牌的内容,包括组成员身份声明。