向用户池添加组 - Amazon Cognito

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

向用户池添加组

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

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

您可以通过、API 和 CLI 在用户池中创建和管理群组。 AWS Management Console作为开发者(使用 AWS 证书),您可以创建、读取、更新、删除和列出用户池的群组。您还可以将用户添加到组和从组中删除用户。

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

向组分配 IAM 角色

您可以使用组通过 IAM 角色控制资源的权限。IAM 角色包含信任策略和权限策略。角色的信任策略指定谁可使用该角色。权限策略指定组成员可以访问的操作和资源。在您创建 IAM 角色时,请设置角色的信任策略以允许您的组用户担任该角色。请在角色的权限策略中,指定您希望组具有的权限。

在 Amazon Cognito 中创建组时,可以通过提供角色的 ARN 指定 IAM 角色。当组成员使用 Amazon Cognito 登录时,他们可以从身份池接收临时凭证。他们的权限由关联的 IAM 角色确定。

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

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

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

将优先级值分配到组

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

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

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

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

您可以使用用户池中的组控制使用 Amazon API Gateway 的权限。用户所属的组包含在 cognito:groups 声明中的用户池的 ID 令牌和访问令牌中。您可以通过请求向 Amazon API Gateway 提交 ID 或访问令牌,并使用 Amazon Cognito 用户池授权方获取 REST API。有关更多信息,请参阅《API Gateway 开发人员指南》中的使用 Amazon Cognito 用户池作为授权方控制对 REST API 的访问

您还可以使用自定义 JWT 授权方授权访问 Amazon API Gateway HTTP API。有关更多信息,请参阅《API Gateway 开发人员指南》中的使用 JWT 授权方控制对 HTTP API 的访问

组的限制

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

  • 您可以创建的群组数量受到 Amazon Cognito 服务配额的限制。

  • 不能对组进行嵌套。

  • 不能搜索组中的用户。

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

在 AWS Management Console中创建新组

使用以下过程创建新组。

创建新组。
  1. 转到 Amazon Cognito 控制台。如果出现提示,请输入您的 AWS 凭据。

  2. 选择 User Pools(用户池)。

  3. 从列表中选择现有用户池。

  4. 选择 Groups(组)选项卡,然后选择 Create group(创建组)。

  5. Create a group(创建组)页面的 Group name(组名称)中,为您的新组输入一个易记名称。

  6. 您可以选择使用以下任意字段提供有关此组的其它信息:

    • Description(说明)– 输入有关这个新组将用于什么的详细信息。

    • Precedence(优先顺序)– Amazon Cognito 根据给定用户所属群组具有的较低优先级值,评估并应用所有群组权限。将选择优先级较低的组,并应用其关联的 IAM 角色。有关更多信息,请参阅将优先级值分配到组

    • IAM role(IAM 角色)– 当您需要控制对资源的权限时,您可以为组分配 IAM 角色。如果您要将用户池与身份池集成,并且身份池配置为从令牌中选择角色,则 IAM role (IAM 角色) 设置将确定在用户的 ID 令牌中分配哪个角色。有关更多信息,请参阅向组分配 IAM 角色

    • Add users to this group(将用户添加到此组)– 创建后将现有用户添加为该组的成员。

  7. 选择 Create(创建)以确认。