Amazon Cognito
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

用户组

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

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

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

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

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

向组分配 IAM 角色

您可以使用组并为组中的用户分配 IAM 角色来控制对 AWS 中资源的访问权限。创建组后,您可以通过为组提供角色 ARN 来为该组中的用户指定 IAM 角色。IAM 角色具有关联的策略来定义允许和拒绝用户访问和执行的资源和操作。IAM 角色及其权限与 Amazon Cognito 身份池为经过身份验证的用户提供的临时 AWS 凭证相关联。当 Amazon Cognito 联合身份使用 Choose role from token 选项提供 AWS 凭证时,系统会自动为组中的用户分配针对组的 IAM 角色。

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

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

  • 通过身份池请求用户的 AWS 凭证时,您的应用程序还可以从可用角色中进行选择,只需在 GetCredentialsForIdentity CustomRoleARN 参数中指定角色 ARN。指定的 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 的权限。用户所属的组包含在用户登录时用户池提供的 ID 令牌中。您可以将这些 ID 令牌和请求提交至 Amazon API Gateway,使用自定义授权方 Lambda 函数来验证令牌,然后检查用户所属的组。请参阅此博客文章,了解将用户池令牌与 Amazon API Gateway 自定义授权方结合使用的示例。

组的限制

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

  • 每个用户池最多可创建 25 个组。

  • 不能对组进行嵌套。

  • 不能搜索组中的用户。

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

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

在 AWS 管理控制台中创建新组

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

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

在选择 Create group 时,将显示一个 Create group 表单。您可以在此表单中输入关于新组的信息。仅 Name 字段为必填字段。如果您要将用户池与身份池集成,并且身份池配置为从令牌中选择角色,则 IAM role 设置将确定在用户的 ID 令牌中分配哪个角色。如果您尚未定义角色,请选择 Create new role。如果您有多个组,并且可将您的用户分配到多个组,则可以为每个组设置 Precedence 值。优先级值可以是任何非负整数。零是代表最高优先级的值。

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