

# IAM 用户组
<a name="id_groups"></a>

IAM [*用户组*](#id_groups)是 IAM 用户的集合。利用用户组，可为多个用户指定权限，以便更轻松地管理这些用户的权限。例如，您可能有一个名为 *Admins* 的用户组，并向该用户组授予管理员通常需要的权限类型。该用户组中的所有用户均自动拥有 *Admins* 组权限。如果有新用户加入您的组织，并且需要管理员权限，则可通过将此用户添加到 *Admins* 用户组来分配相应的权限。如果组织中有成员更换岗位，则不必编辑该用户的权限，只需从旧 IAM 组中将此用户删除，然后将其添加到相应的新 IAM 组即可。

您可以将基于身份的策略附加到用户组，以便该用户组中的所有用户都能获得该策略的权限。您无法在策略（例如基于资源的策略）中将用户组标识为 `Principal`，因为组与权限相关，与身份验证无关，并且主体是经过身份验证的 IAM 实体。有关策略类型的更多信息，请参阅[基于身份的策略和基于资源的策略](access_policies_identity-vs-resource.md)。

以下为 IAM 组具有的一些重要特点：
+ 一个用户组可包含多个用户，而一个用户又可归属于多个用户组。
+ 用户组不能嵌套；其中只能包含用户，而不能包含其他 IAM 组。
+ 默认情况下，没有可自动包含 AWS 账户 内所有用户的用户组。如果希望有这样的用户组，则需要创建该组，然后将每个新用户分配给它。
+ AWS 账户 中 IAM 资源的数量和大小（例如组的数量和用户可加入的组的数量）是有限的。有关更多信息，请参阅 [IAM 和 AWS STS 配额](reference_iam-quotas.md)。

下图以一家小型公司作为简单示例。随着公司的发展，公司所有者为用户创建了一个 `Admins` 用户组来创建和管理其他用户。`Admins` 用户组会创建一个 `Developers` 用户组和 `Test` 用户组。这两个 IAM 组都包含可与 AWS 交互的用户（Jim、Brad、DevApp1 等）。每个用户均拥有一组单独的安全证书。在此示例中，每个用户均属于单一用户组。不过，用户可归属于多个 IAM 组。

![\[AWS 账户、用户和 IAM 组之间的关系示例\]](http://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/images/Relationship_Between_Entities_Example.diagram.png)


# 创建 IAM 组
<a name="id_groups_create"></a>

**注意**  
作为[最佳实践](best-practices.md)，我们建议您要求人类用户使用带有身份提供程序的联合身份验证才能使用临时凭证访问 AWS。如果您遵循最佳实践，则无法管理 IAM 用户和组。相反，您的用户和组是在 AWS 外部进行管理的，并且能够以联合身份**访问 AWS 资源。联合身份是来自企业用户目录、Web 身份提供程序、AWS Identity Service 的用户，或任何使用通过身份源提供的凭证来访问 AWS 服务的用户。联合身份使用其身份提供商定义的组。如果您使用的是 AWS IAM Identity Center，请参阅《AWS IAM Identity Center 用户指南》**中的[管理 IAM Identity Center 中的身份](https://docs.aws.amazon.com/singlesignon/latest/userguide/manage-your-identity-source-sso.html)，了解有关在 IAM Identity Center 中创建用户和组的信息。

您可以创建 IAM 组，以管理具有相似角色或职责的多个用户的访问权限。您可以通过将策略附加到这些组来授予或撤消整组用户的权限。您对组的权限所做的更改将自动应用于该组的所有成员，以确保一致的访问控制，因此这简化了您对安全策略的维护。创建组后，根据您希望组中的 IAM 用户执行的工作类型向组授予权限，然后将 IAM 用户添加到该组。

有关创建 IAM 组所需权限的信息，请参阅[访问 IAM 资源所需的权限](access_permissions-required.md)。

## 创建 IAM 组并附加策略
<a name="id_groups_create-section-1"></a>

------
#### [ Console ]

1. 登录 AWS 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在导航窗格中，选择 **User groups**（用户组），然后选择 **Create group**（创建组）。

1. 对于 **User group name**（用户组名称），键入组的名称。
**注意**  
AWS 账户中 IAM 资源的数量和大小是有限的。有关更多信息，请参阅 [IAM 和 AWS STS 配额](reference_iam-quotas.md)。组名称可以是一个最多由 128 个字母、数字和以下字符构成的组合：加号 (\$1)、等号 (=)、逗号 (,)、句点 (.)、at 符号 (@)、下划线 (\$1) 和连字符 (-)。账户中的名称必须唯一。名称不区分大小写。例如，您无法同时创建名为 **ADMINS** 和 **admins** 的组。

1. 在用户列表中，选中要添加到组中的每个用户对应的复选框。

1. 在策略列表中，选中要应用于组中的所有成员的每个策略的复选框。

1. 选择**创建群组**。

------
#### [ AWS CLI ]

运行以下命令：
+ [aws iam create-group](https://docs.aws.amazon.com/cli/latest/reference/iam/create-group.html)

------
#### [ API ]

调用以下操作：
+ [CreateGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateGroup.html)

------

# 查看 IAM 组
<a name="id_groups_manage_list"></a>

您可以列出账户中的所有 IAM 组、列出某个用户组中的用户或列出用户所属的 IAM 组。如果您使用 CLI 或 API，则可以列出带特定路径前缀的所有 IAM 组。

------
#### [ Console ]

列出账户中的所有 IAM 组：
+ 在导航窗格中，选择**用户组**。

列出特定 IAM 组中的 IAM 用户：
+ 在导航窗格中，选择 **User groups**（用户组）。选择组的名称，打开组详细信息页面。查看**用户**选项卡可查看组成员资格。

列出用户所属的所有 IAM 组：
+ 在导航窗格中，选择 **Users**（用户）。然后选择用户名称，以打开用户详细信息页面。选择**组**选项卡可查看用户所属组的列表。

------
#### [ AWS CLI ]

列出账户中的所有 IAM 组：
+ [aws iam list-groups](https://docs.aws.amazon.com/cli/latest/reference/iam/list-groups.html)

列出特定 IAM 组中的用户：
+ [aws iam get-group](https://docs.aws.amazon.com/cli/latest/reference/iam/get-group.html)

列出用户所属的所有 IAM 组：
+ [aws iam list-groups-for-user](https://docs.aws.amazon.com/cli/latest/reference/iam/list-groups-for-user.html)

------
#### [ API ]

列出账户中的所有 IAM 组：
+ [ListGroups](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListGroups.html)

列出特定 IAM 组中的用户：
+ [GetGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetGroup.html)

列出用户所属的所有 IAM 组：
+ [ListGroupsForUser](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListGroupsForUser.html)

------

# 编辑 IAM 组中的用户
<a name="id_groups_manage_add-remove-users"></a>

使用 IAM 组可以跨多个有用户同时应用相同的权限策略。然后，您可以在 IAM 组中添加或删除用户。由于您组织的人员是流动的，因此这样做会很有用。

## 检查策略访问权限
<a name="groups-remove_prerequisites"></a>

在删除组之前，可利用组详细信息页面在**权限**选项卡上查看组成员（IAM 用户）和附加到组的策略，并使用**上次访问时间**选项卡查看最近的服务级别活动。这有助于防止意外删除正在使用访问权限的主体（个人或应用程序）的访问权限。有关查看上次访问的信息的更多信息，请参阅 [使用上次访问的信息优化 AWS 中的权限](access_policies_last-accessed.md)。

## 将 IAM 用户添加到 IAM 组
<a name="groups-add-remove-console"></a>

------
#### [ Console ]

1. 登录 AWS 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在导航窗格中，请选择 **User groups**（用户组），然后选择组的名称。

1. 请选择 **Users**（用户）选项卡，然后选择 **Add users**（添加用户）。选中要添加的用户旁边的复选框。

1. 选择 **Add Users**（添加用户）。

------
#### [ AWS CLI ]

运行以下命令：
+ `[aws iam add-user-to-group](https://docs.aws.amazon.com/cli/latest/reference/iam/add-user-to-group.html)`

------
#### [ API ]

调用以下操作：
+ `[AddUserToGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AddUserToGroup.html)`

------

## 从 IAM 组中删除 IAM 用户
<a name="id_groups_manage_add-remove-users-section-1"></a>

------
#### [ Console ]

1. 登录 AWS 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在导航窗格中，请选择 **User groups**（用户组），然后选择组的名称。

1. 选择**用户**选项卡。选中要移除的用户旁边的复选框，然后选择 **Remove users**（移除用户）。

------
#### [ AWS CLI ]

运行以下命令：
+ `[aws iam remove-user-from-group](https://docs.aws.amazon.com/cli/latest/reference/iam/remove-user-from-group.html)`

------
#### [ API ]

调用以下操作：
+ `[RemoveUserFromGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_RemoveUserFromGroup.html)`

------

# 将策略附加到 IAM 用户组
<a name="id_groups_manage_attach-policy"></a>

您可以将 [AWS 托管策略](access_policies_managed-vs-inline.md#aws-managed-policies) - 由 AWS 提供的预先写入的策略 - 附加到用户组，如下列步骤中所述。要附加客户托管策略（即具有您创建的自定义权限的策略），必须首先创建策略。有关创建客户托管策略的信息，请参阅[使用客户管理型策略定义自定义 IAM 权限](access_policies_create.md)。

有关权限和策略的更多信息，请参阅[适用于 AWS 资源的 Access Management](access.md)。

## 将策略附加到 IAM 组
<a name="id_groups_manage_attach-policy-section-1"></a>

------
#### [ Console ]

1. 登录 AWS 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在导航窗格中，请选择 **User groups**（用户组），然后选择组的名称。

1. 选择 **Permissions（权限）**选项卡。

1. 选择**添加权限**，然后选择**附加策略**。

1. 附加到用户组的当前策略显示在 **Current permissions policies**（当前权限策略）列表。在 **Other permissions policies**（其他权限策略）列表中，选中要附加的策略名称旁边的复选框。您可以使用搜索框通过输入类型和策略名称来筛选策略列表。

1. 选择您要附加到 IAM 组的策略，然后选择**附加策略**。

------
#### [ AWS CLI ]

运行以下命令：
+ `[aws iam attach-group-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-group-policy.html)`

------
#### [ API ]

调用以下操作：
+ `[AttachGroupPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AttachGroupPolicy.html)`

------

# 重命名 IAM 用户组
<a name="id_groups_manage_rename"></a>

当您更改用户组的名称或路径时，发生以下情况：
+ 应用于用户组的所有策略采用新群组名称继续生效。
+ 该用户组采用新名称保留所有用户。
+ 该用户组的唯一 ID 保持不变。有关唯一 ID 的更多信息，请参阅 [唯一标识符](reference_identifiers.md#identifiers-unique-ids)。

IAM 不自动更新将该用户组作为资源引用的策略以使用新名称。因此，重命名用户组时，请务必保持谨慎。在重命名用户组之前，您必须手动检查所有策略以按名称查找提到该用户组的任何策略。例如，假设 Bob 是公司测试部门的经理。Bob 向他的 IAM 用户实体中挂载了一个策略，该策略允许他在“测试”用户组中添加和删除用户。如果管理员更改用户组的名称（或更改组的路径），则管理员还必须更新附加到 Bob 的策略以使用新名称或新路径。否则，Bob 将无法在该用户组中添加或删除用户。

**查找将 IAM 组作为资源引用的策略：**

1. 从 IAM 控制台的导航窗格中，选择 **Policies**（策略）。

1. 按 **Type**（类型）列排序，以查找您的 **Customer managed**（客户托管）自定义策略。

1. 请选择策略的名称进行编辑。

1. 选择**权限**选项卡，然后选择**摘要**。

1. 从服务列表中选择 **IAM**（如果存在）

1. 在**资源**列中查找您的用户组名称。

1. 选择**编辑**以在策略中更改您的用户组名称。

## 更改 IAM 用户组的名称
<a name="id_groups_manage_rename-section-1"></a>

------
#### [ Console ]

1. 在导航窗格中，选择 **用户组**，然后选择组的名称。

1. 选择**编辑**。键入新的用户组名称，然后选择 **Save changes**（保存更改）。

------
#### [ AWS CLI ]

运行以下命令：
+ [aws iam update-group](https://docs.aws.amazon.com/cli/latest/reference/iam/update-group.html)

------
#### [ API ]

调用以下操作：
+ [UpdateGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateGroup.html)

------

# 删除 IAM 组
<a name="id_groups_manage_delete"></a>

当您在控制台中删除 IAM 组时，控制台将自动删除所有组成员、分离所有已附加的托管策略并删除所有内联策略。不过，IAM 不会自动删除将 IAM 组作为资源引用的策略，因此，在删除 IAM 组时必须格外小心。在删除 IAM 组之前，您必须手动检查策略，按名称查找提到该组的任何策略。例如，测试团队负责人 John 向其 IAM 用户实体附加了一个策略，该策略允许他在“测试”用户组中添加和删除用户。如果管理员删除该组，管理员还必须删除挂载到 John 的策略。否则，如果管理员重新创建已删除组并以相同名称命名，那么即使 John 已经离开测试团队，其权限仍然保持不变。

相反，在使用 CLI、SDK 或 API 删除组时，必须先删除组中的用户。然后删除嵌入到 IAM 组中的所有内联策略。接下来，分离所有已附加到组的托管策略。只有这样才能删除 IAM 组本身。

------
#### [ Console ]

1. 登录 AWS 管理控制台，然后通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在导航窗格中，选择 **User groups**（用户组）。

1. 在 IAM 组列表中，选中要删除的 IAM 组的名称旁边的复选框。您可以使用搜索框按类型、权限和组名称筛选 IAM 组列表。

1. 选择**删除**。

1. 在确认框中，如果要删除单个组，请键入组名称，然后选择**删除**。如果要删除多个组，请键入要删除的 IAM 组数，然后键入 **user groups**，并选择**删除**。例如，若要删除三个组，则键入 **3 **user groups****。

------
#### [ AWS CLI ]

1. 从 IAM 组移除所有用户。
   + [aws iam get-group](https://docs.aws.amazon.com/cli/latest/reference/iam/get-group.html)（用于获取 IAM 组中的用户列表）和 [aws iam remove-user-from-group](https://docs.aws.amazon.com/cli/latest/reference/iam/remove-user-from-group.html)（用于从 IAM 组中删除用户）

1. 删除嵌入到 IAM 组中的所有内联策略。
   + [aws iam list-group-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-group-policies.html)（用于获取 IAM 组的内联策略的列表）和 [aws iam delete-group-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-group-policy.html)（用于删除 IAM 组的内联策略）

1. 分离所有已附加到 IAM 组的托管策略。
   + [aws iam list-attached-group-policies](https://docs.aws.amazon.com/cli/latest/reference/iam/list-attached-group-policies.html)（用于获取已附加到 IAM 组的托管式策略的列表）和 [aws iam detach-group-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/detach-group-policy.html)（用于将托管式策略从 IAM 组中分离）

1. 删除 IAM 组。
   + [aws iam delete-group](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-group.html)

------
#### [ API ]

1. 从 IAM 组移除所有用户。
   + [GetGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetGroup.html)（用于获取 IAM 组中的用户的列表）和 [RemoveUserFromGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_RemoveUserFromGroup.html)（用于从 IAM 组中删除用户）

1. 删除嵌入到 IAM 组中的所有内联策略。
   + [ListGroupPolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListGroupPolicies.html)（用于获取 IAM 组的内联策略的列表）和 [DeleteGroupPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteGroupPolicy.html)（用于删除 IAM 组的内联策略）

1. 分离所有已附加到 IAM 组的托管策略。
   + [ListAttachedGroupPolicies](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAttachedGroupPolicies.html)（用于获取已附加到 IAM 组的托管式策略的列表）和 [DetachGroupPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DetachGroupPolicy.html)（用于将托管式策略从 IAM 组中分离）

1. 删除 IAM 组。
   + [DeleteGroup](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteGroup.html)

------