向用户池添加组 - Amazon Cognito
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

向用户池添加组

借助对 Amazon Cognito 用户池中组的 Support,您可以创建和管理组、将用户添加到组以及从组中删除用户。使用组可创建用户集合以管理其权限或表示不同类型的用户。您可以将Amazon Identity and Access Management(IAM) 角色添加到组中以定义组成员的权限。

您可以使用组以在用户池中创建用户集合,这通常用于为这些用户设置权限。例如,您可以为作为您网站和应用程序的读者、撰稿人或编辑的用户创建单独的组。通过使用与组关联的 IAM 角色,您还可以为那些不同的组设置不同的权限,从而只有撰稿人可以将内容置于 Amazon S3 中,并且只有编辑可以通过 Amazon API Gateway 中的 API 发布内容。

您可以通过 Amazon Web Services Management Console、API 和 CLI 创建并管理用户池中的组。作为开发人员 (使用 Amazon 凭证),您可以创建、读取、更新、删除并列出用户池的组。您还可以将用户添加到组和从组中删除用户。

在用户池中使用组不会产生额外费用。请参阅Amazon Cognito 定价了解更多信息。

您可以看到 SpaceFinder 参考应用程序中使用的此功能。

向组分配 IAM 角色

您可以使用组使用 IAM 角色控制对资源的权限。IAM 角色包括信任策略和权限策略。角色信任策略指定谁可使用该角色。这些区域有:权限策略指定组成员可以访问的操作和资源。在您创建 IAM 角色时,请设置角色信任策略以允许您的组用户代入该角色。在角色权限策略中,指定您希望组具有的权限。

当您在 Amazon Cognito 中创建群组时,您可以通过提供角色的进行筛选。当群组成员使用 Amazon Cognito 登录时,他们可以从身份池接收临时证书。他们的权限由关联的 IAM 角色决定。

单个用户可处于多个组中。作为开发人员,当一个用户处于多个组中时,您可以使用以下选项自动选择 IAM 角色:

  • 您可以为每个组分配优先级值。将选择优先级较高 (值较低) 的组,并应用其关联的 IAM 角色。

  • 通过身份池请求用户的 Amazon 凭证时,您的应用程序还可以从可用角色中进行选择,只需在 GetCredentialsForIdentity CustomRoleARN 参数中指定角色 ARN。指定的 IAM 角色必须与适用于用户的角色相匹配。

将优先级值分配到组

一个用户可归属于多个组。在用户的 ID 令牌中,cognito:groups断言包含用户所属的所有组的列表。cognito:roles 断言包含与这些组对应的角色列表。

因为一位用户可以归属于多个组,所以可向每个组分配一个优先级。这是一个非负数值,指定该组相对于用户所属的用户池中其他组的优先级。零是代表最高优先级的值。具有较低优先级值的组优先于具有较高或空优先级值的组。如果一个用户属于两个或更多组,则具有最低优先级值的组的 IAM 角色将应用于cognito:preferred_role声明中的用户 ID 令牌。

两个组可以具有相同的优先级值。如果发生这种情况,则两个组之间不存在优先情况。如果具有相同优先级值的两个组还具有相同的角色 ARN,则该角色将用于cognito:preferred_role在每个组中的用户 ID 令牌中声明。如果两个组具有不同的角色 ARN,则不会在用户的 ID 令牌中设置 cognito:preferred_role 断言。

使用组来控制使用 Amazon API Gateway 的权限

您可以使用用户池中的组来控制使用 Amazon API Gateway 的权限。用户所属的组包含在用户登录时用户池提供的 ID 令牌中。您可以将这些 ID 令牌和请求提交至 Amazon API Gateway,使用自定义授权方 Lambda 函数来验证令牌,然后检查用户所属的组。请参阅博客帖子了解将用户池令牌与 Amazon API Gateway 自定义授权方结合使用的示例。

组的限制

用户组受以下限制的约束:

  • 您可以创建的组的数量受Amazon Cognito 服务限制

  • 不能对组进行嵌套。

  • 不能搜索组中的用户。

  • 不能按名称搜索组,但可以列出组。

  • 只能删除没有成员的组。

在 Amazon Web Services Management Console中创建新组

Users and groups 选项卡中的 Groups 选项卡具有一个 Create group 按钮。


        在“Users and Groups”选项卡中的“Groups”选项卡中创建新组。

在选择创建组,a创建组窗体。您可以在此表单中输入关于新组的信息。只有名称字段为必填项。如果您要将用户池与身份池集成,则IAM 角色设置将确定在身份池配置为从令牌中选择角色时,在用户 ID 令牌中分配哪个角色。如果您尚未定义角色,请选择创建新角色。如果您有多个组,并且可将您的用户分配到多个组,则可以将优先顺序每个组的值。优先级值可以是任何非负整数。零是代表最高优先级的值。


        在“Users and groups”选项卡中创建组表单。