

# IAM 教程：允许用户管理其凭证和 MFA 设置
<a name="tutorial_users-self-manage-mfa-and-creds"></a>

您可以允许用户在**安全凭证**页面上管理自己的多重身份验证（MFA）设备和凭证。您可以使用 Amazon Web Services 管理控制台为用户配置凭证（访问密钥、密码、签名证书和 SSH 公有密钥）、删除或停用不再需要的凭证，以及启用 MFA 设备。这在用户数量较少时较为实用，不过随着用户数量增加，这一任务很快会变得非常耗时。本教程旨在介绍如何实现这些最佳实践，而不给您的管理员带来负担。

本教程介绍如何允许用户访问 Amazon 服务，不过此操作**仅**限于用户使用 MFA 登录的情况。如果未使用 MFA 设备登录，则用户无法访问其他服务。

此工作流程具有三个基本步骤。

**[步骤 1：创建策略以强制 MFA 登录](#tutorial_mfa_step1)**  
创建客户管理型策略以禁止***除***少量 IAM 操作以外的所有操作。这些例外允许用户在**安全凭证**页面上更改自己的凭证并管理其 MFA 设备。有关访问该页面的更多信息，请参阅[IAM 用户如何更改自己的密码（控制台）](id_credentials_passwords_user-change-own.md#ManagingUserPwdSelf-Console)。

**[步骤 2：将策略附加到您的测试用户组](#tutorial_mfa_step2)**  
创建一个用户组，在使用 MFA 登录时，该组的成员具有所有 Amazon EC2 操作的完全访问权限。要创建此类用户组，请附加名为 `AmazonEC2FullAccess` 的 Amazon 托管策略和在步骤 1 中创建的客户托管策略。

**[步骤 3：测试您的用户的访问权限](#tutorial_mfa_step3)**  
以测试用户身份登录，验证对 Amazon EC2 的访问是否被阻止，*直*至该用户创建 MFA 设备为止。之后，用户可以使用该设备进行登录。

## 先决条件
<a name="tutorial_mfa_prereqs"></a>

要执行本教程中的步骤，您必须已具备以下内容：
+ 可作为 IAM 用户身份登录且具有管理权限的 Amazon Web Services 账户。
+ 您在步骤 1 的策略中键入的账户 ID 号。

  要查找您的账户 ID 号，请在页面顶部的导航栏上，选择 **Support**，然后选择 **Support Center**。您可以在该页面的 **Support** 菜单下找到您的账户 ID。
+ [虚拟（基于软件的）MFA 设备](id_credentials_mfa_enable_virtual.md)、[FIDO 安全密钥](id_credentials_mfa_enable_fido.md)或[基于硬件的 MFA 设备](id_credentials_mfa_enable_physical.md)。
+ 一个作为组成员的测试 IAM 用户，如下所示：


| 用户名称 | 用户名说明 | 用户组名称 | 将用户添加为成员 | 用户组说明 | 
| --- | --- | --- | --- | --- | 
| MFAUser | 仅选择启用控制台访问 – 可选选项，然后分配密码。 | EC2MFA | MFAUser | 请勿向此用户组附加任何策略或授予任何权限。 | 

## 步骤 1：创建策略以强制 MFA 登录
<a name="tutorial_mfa_step1"></a>

首先创建一个 IAM 客户托管策略，除 IAM 用户管理其自有凭证和 MFA 设备所需的权限外，该策略拒绝其他所有权限。

1. 以具有管理员凭证的用户身份登录 Amazon 管理控制台。根据 IAM 最佳实践，请勿使用 Amazon Web Services 账户根用户凭证登录。
**重要**  
 IAM [最佳实践](best-practices.md)建议您您要求人类用户使用与身份提供商的联合身份验证才能使用临时凭证访问 Amazon，而不是使用具有长期凭证的 IAM 用户。建议您仅在联合用户不支持的[特定用例](gs-identities-iam-users.md)中使用 IAM 用户。

1. 访问：[https://console.aws.amazon.com/iam/](https://console.amazonaws.cn/iam/)，打开 IAM 控制台。

   

1. 在导航窗格中，选择 **Policies (策略)**，然后选择 **Create policy (创建策略)**。

1. 选择 **JSON** 选项卡，然后复制以下 JSON 策略文档中的文本：[Amazon：允许使用 MFA 完成身份验证的 IAM 用户在“安全凭证”页面上管理自己的凭证。](reference_policies_examples_aws_my-sec-creds-self-manage.md)。

1. 将该策略粘贴到 **JSON** 文本框中。解决策略验证过程中生成的任何安全警告、错误或常规警告，然后选择**下一步**。
**注意**  
您可以随时在**可视化编辑器**和 **JSON** 选项之间切换。但是，以上策略包含 `NotAction` 元素，该元素在可视化编辑器中不受支持。对于此策略，您在 **Visual editor** 选项卡上将看到一个通知。返回 **JSON** 以继续处理此策略。  
此示例策略不允许用户在首次登录 Amazon Web Services 管理控制台 的同时重置密码。我们建议您在新用户登录并重置密码之前不要向他们授予权限。

1. 在**查看并创建**页面上，键入 **Force\$1MFA** 作为策略名称。对于策略描述，在**标签**区域键入 **This policy allows users to manage their own passwords and MFA devices but nothing else unless they authenticate with MFA.**，您可以有选择地将标签键值对添加到客户管理型策略。查看您的策略授予的权限，然后选择**创建策略**以保存您的工作。

   将在托管策略列表中显示新策略，并已准备好附加该策略。

## 步骤 2：将策略附加到您的测试用户组
<a name="tutorial_mfa_step2"></a>

接下来，您将两个策略附加到测试 IAM 用户组，将使用该组授予受 MFA 保护的权限。

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

1. 在搜索框中键入 **`EC2MFA`**，然后在列表中选择组名称（而不是复选框）。

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

1. 在 **Attach permission policies to EC2MFA group**（将权限策略附加到 EC2MFA 组）页面上，在搜索框中键入 **EC2Full**。然后，选中列表中 **AmazonEC2FullAccess** 旁边的复选框。暂不保存您的更改。

1. 在搜索框中键入 **Force**，然后选中列表中 **Force\$1MFA** 旁边的复选框。

1. 选择**附加策略**。

## 步骤 3：测试您的用户的访问权限
<a name="tutorial_mfa_step3"></a>

在本教程的这一部分中，您以测试用户身份登录并验证策略是否正常工作。

1. 使用上一部分中分配给您的密码，以 **MFAUser** 身份登录您的 Amazon Web Services 账户。使用 URL：`https://<alias or account ID number>.signin.aws.amazon.com/console`

1. 选择 **EC2** 打开 Amazon EC2 控制台，验证此用户没有执行任何操作的权限。

1. 在右上角的导航栏中，选择 `MFAUser` 用户名，然后选择 **Security credentials**（安全凭证）。  
![\[Amazon 管理控制台安全凭证链接。\]](http://docs.amazonaws.cn/IAM/latest/UserGuide/images/security-credentials-user.shared.console.png)

1. 现在添加一个 MFA 设备。在**多重身份验证 (MFA)** 部分中，选择**分配 MFA 设备**。
**注意**  
可能会出现未授权您执行 `iam:DeleteVirtualMFADevice` 的错误。如果某个人以前开始将虚拟 MFA 设备分配给该用户并取消了该过程，则可能会发生这种情况。要继续，您或其他管理员必须删除用户现有的未分配虚拟 MFA 设备。有关更多信息，请参阅 [我没有权限执行：iam:DeleteVirtualMFADevice](troubleshoot.md#troubleshoot_general_access-denied-delete-mfa)。

1. 对于本教程，我们使用一个虚拟 (基于软件的) MFA 设备，例如，手机上的 Google Authenticator 应用程序。选择 **Authenticator app**（身份验证器应用程序），然后单击 **Next**（下一步）。

   IAM 将生成并显示虚拟 MFA 设备的配置信息，包括 QR 代码图形。此图形是秘密配置密钥的表示形式，适用于不支持 QR 代码的设备上的手动输入。

1. 打开您的虚拟 MFA 应用程序。（有关可以用作托管虚拟 MFA 设备的应用程序的列表，请参阅[虚拟 MFA 应用程序](https://www.amazonaws.cn/iam/details/mfa/#Virtual_MFA_Applications)。） 如果虚拟 MFA 应用程序支持多个账户 (多个虚拟 MFA 设备)，请选择相应的选项以创建新账户 (新的虚拟 MFA 设备)。

1. 确定 MFA 应用程序是否支持 QR 代码，然后执行以下操作之一：
   + 在向导中，选择 **Show QR code (显示 QR 代码)**。使用此应用程序扫描 QR 代码。例如，您可选择摄像头图标或选择类似于 **Scan code** 的选项，然后使用设备的摄像头扫描此代码。
   + 在 **Set up device**（设置设备）向导中，选择 **Show secret key**（显示私有密钥），然后在您的 MFA 应用程序中键入私有密钥。

   完成操作后，虚拟 MFA 设备会开始生成一次性密码。

1. 在 **Set up device**（设置设备）向导的 **Enter the code from your authenticator app.**（键入身份验证器应用程序中的代码。）框中，键入虚拟 MFA 设备上当前显示的一次性密码。选择 **Register MFA**（注册 MFA）。
**重要**  
生成代码之后立即提交您的请求。如果在生成代码后等待很长时间才提交请求，MFA 设备将成功与用户关联，但 MFA 设备不同步。这是因为基于时间的一次性密码（TOTP）很快会过期。这种情况下，您可以[重新同步设备](id_credentials_mfa_sync.md)。

   虚拟 MFA 设备现已准备好与 Amazon 一起使用。

1. 从控制台注销，然后重新以 **MFAUser** 身份登录。此时 Amazon 会提示输入您手机中的 MFA 代码。收到该代码后，请将代码键入框中，然后选择 **Submit**。

1. 选择 **EC2** 以再次打开 Amazon EC2 控制台。请注意，这次您可以看到所有信息，并且可以执行所需的任何操作。如果您以该用户身份转至任何其他控制台，则会看到指示访问被拒绝的消息。导致出现此问题的原因是，本教程中的策略仅向 Amazon EC2 授予访问权限。

## 相关资源
<a name="tutorial_mfa_related"></a>

有关更多信息，请参阅以下主题：
+ [IAM 中的 Amazon 多重身份验证](id_credentials_mfa.md)
+ [已启用 MFA 的登录](console_sign-in-mfa.md)