

# 为 IAM 用户设置账户密码策略
<a name="id_credentials_passwords_account-policy"></a>

您可以在 AWS 账户 上设置自定义密码策略，以便指定您的 IAM 用户密码的复杂性要求和强制轮换期。如果未设置自定义密码策略，则 IAM 用户密码必须符合默认 AWS 密码策略。有关更多信息，请参阅 [自定义密码策略选项](#password-policy-details)。

**Topics**
+ [设置密码策略的规则](#password-policy-rules)
+ [设置密码策略时所需的权限](#default-policy-permissions-required)
+ [默认密码策略](#default-policy-details)
+ [自定义密码策略选项](#password-policy-details)
+ [要设置密码策略（控制台）](#IAMPasswordPolicy)
+ [更改密码策略（控制台）](#id_credentials_passwords_account-policy-section-1)
+ [删除自定义密码策略（控制台）](#id_credentials_passwords_account-policy-section-2)
+ [设置密码策略 (AWS CLI)](#PasswordPolicy_CLI)
+ [设置密码策略 (AWS API)](#PasswordPolicy_API)

## 设置密码策略的规则
<a name="password-policy-rules"></a>

IAM 密码策略不适用于 AWS 账户根用户 密码或 IAM 用户访问密钥。如果密码过期，IAM 用户将无法登录 AWS 管理控制台，但可以继续使用其访问密钥。

创建或更改密码策略时，大多数密码策略设置会在用户下次更改其密码时实施。但是，一些设置将立即实施。例如：
+ 在最小长度和字符类型要求变更后，系统会在您的用户下次更改其密码时强制实施该设置。不强制用户更改其现有密码，即使这些密码不符合更新后的密码策略。
+ 设置密码有效期时，有效期立即生效。例如，假定您将密码有效期设置为 90 天。在这种情况下，对于现有密码使用期限超过 90 天的所有 IAM 用户，其密码将过期。这些用户必须在下次登录时更改其密码。

在尝试指定的登录失败次数后，您将无法创建“锁定策略”来锁定账户用户。为了增强安全性，我们建议您将强密码策略与 Multi-Factor Authentication (MFA) 相结合。有关 MFA 的更多信息，请参阅 [IAM 中的 AWS 多重身份验证](id_credentials_mfa.md)。

## 设置密码策略时所需的权限
<a name="default-policy-permissions-required"></a>

您必须配置权限以允许 IAM 实体（用户或角色）查看或编辑其账户密码策略。您可以在 IAM policy 中包含以下密码策略操作：
+ `iam:GetAccountPasswordPolicy` - 允许实体查看其账户的密码策略
+ `iam:DeleteAccountPasswordPolicy` - 允许实体删除其账户的自定义密码策略并恢复到默认密码策略
+ `iam:UpdateAccountPasswordPolicy` - 允许实体为其账户创建或更改自定义密码策略

以下策略允许查看和编辑账户密码策略的完全访问权限。要了解如何使用该示例 JSON 策略文档创建 IAM policy，请参阅。[使用 JSON 编辑器创建策略](access_policies_create-console.md#access_policies_create-json-editor)

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "FullAccessPasswordPolicy",
            "Effect": "Allow",
            "Action": [
                "iam:GetAccountPasswordPolicy",
                "iam:DeleteAccountPasswordPolicy",
                "iam:UpdateAccountPasswordPolicy"
            ],
            "Resource": "*"
        }
    ]
}
```

------

有关 IAM 用户更改自己的密码所需权限的信息，请参阅 [允许 IAM 用户更改自己的密码](id_credentials_passwords_enable-user-change.md)。

## 默认密码策略
<a name="default-policy-details"></a>

如果管理员未设置自定义密码策略，则 IAM 用户密码必须符合默认 AWS 密码策略。

默认密码策略强制执行以下条件：
+ 密码长度最短为 8 个字符，最长为 128 个字符
+ 至少包含以下三种字符类型的组合：大写、小写、数字，以及非字母数字字符（`! @ # $ % ^ & * ( ) _ + - = [ ] { } | '`）
+ 与您的 AWS 账户 名称或电子邮件地址不同
+ 密码永不过期

## 自定义密码策略选项
<a name="password-policy-details"></a>

为账户配置自定义密码策略时，可以指定以下条件：
+ **密码最小长度** - 您可以指定最少 6 个字符和最多 128 个字符。
+ **密码强度** - 您可以选中以下任一复选框来定义 IAM 用户密码的强度：
  + 至少需要一个大写拉丁字母（A-Z）
  + 至少需要一个小写拉丁字母（a-z）
  + 至少需要一个数字
  + 至少需要一个非字母数字字符 `! @ # $ % ^ & * ( ) _ + - = [ ] { } | '` 
+ **Turn on password expiration**（打开密码过期）– 您可以选择并指定 IAM 用户密码设置后的有效期：至少 1 天和最多 1095 天。例如，如果您指定的过期时间为 90 天，则会立即影响所有用户。对于密码超过 90 天的用户，更改后登录控制台时，必须设置新密码。密码为 75-89 天的用户会收到有关密码过期的 AWS 管理控制台 警告。IAM 用户可以随时更改其密码（如有权限）。密码的有效期从用户设置新密码时起计算。IAM 用户同时只能有一个有效密码。
+ **Password expiration requires administrator reset**（密码过期需要管理员重置）– 选择此选项可防止 IAM 用户在密码过期后使用 AWS 管理控制台 更新自己的密码。选择此选项之前，请确认您的 AWS 账户 具有多个具备管理权限的用户，以重置 IAM 用户密码。具有 `iam:UpdateLoginProfile` 权限的管理员可重置 IAM 用户密码。具有 `iam:ChangePassword` 权限和活动访问密钥的 IAM 用户可以编程方式重置其 IAM 用户控制台密码。如果清除此复选框，则密码已过期的 IAM 用户仍必须先设置新密码，然后才能访问 AWS 管理控制台。
+ **Allow users to change their own password**（允许用户更改自己的密码）– 您可以允许账户中的所有 IAM 用户更改自己的密码。这样用户就可以仅访问其用户的 `iam:ChangePassword` 操作和 `iam:GetAccountPasswordPolicy` 操作。此选项不会将权限策略附加到每个用户。相反，IAM 为所有用户提供账户级别权限。或者，您可以只允许部分用户管理自己的密码。为此，请清除此复选框。有关使用策略来限制哪些人可以管理密码的更多信息，请参阅[允许 IAM 用户更改自己的密码](id_credentials_passwords_enable-user-change.md)。
+ **Prevent password reuse**（防止密码重复使用）- 您可以阻止 IAM 用户重复使用指定数量的前密码。您可以指定最少 1 个和最多 24 个不能重复的前密码。

## 要设置密码策略（控制台）
<a name="IAMPasswordPolicy"></a>

您可使用 AWS 管理控制台 创建、更改或删除自定义密码策略。密码策略的更改适用于在此策略更改后创建的新 IAM 用户，以及更改密码时的现有 IAM 用户。

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

1. 按照 *AWS 登录用户指南*中的[如何登录 AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html)所述，根据用户类型选择相应的登录过程。

1. 在 **IAM 控制台主页**左侧的导航窗格中，在**搜索 IAM** 文本框中输入查询语句。

1. 在导航窗格中，选择 **Account settings**（账户设置）。

1. 在 **Password policy**（密码策略）部分，选择 **Edit**（编辑）。

1. 选择 **Custom**（自定义）以使用自定义密码策略。

1. 选择您要应用于密码策略的选项，然后选择 **Save changes**（保存更改）。

1. 通过选择 **Set custom**（设置自定义）来确认您要设置自定义密码策略。

控制台会显示一条状态消息，通知您 IAM 用户的密码要求已更新。

------

## 更改密码策略（控制台）
<a name="id_credentials_passwords_account-policy-section-1"></a>

您可使用 AWS 管理控制台 创建、更改或删除自定义密码策略。密码策略的更改适用于在此策略更改后创建的新 IAM 用户，以及更改密码时的现有 IAM 用户。

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

1. 按照 *AWS 登录用户指南*中的[如何登录 AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html)所述，根据用户类型选择相应的登录过程。

1. 在 **IAM 控制台主页**左侧的导航窗格中，在**搜索 IAM** 文本框中输入查询语句。

1. 在导航窗格中，选择 **Account settings**（账户设置）。

1. 在 **Password policy**（密码策略）部分，选择 **Edit**（编辑）。

1. 选择您要应用于密码策略的选项，然后选择 **Save changes**（保存更改）。

1. 通过选择 **Set custom**（设置自定义）来确认您要设置自定义密码策略。

控制台会显示一条状态消息，通知您 IAM 用户的密码要求已更新。

------

## 删除自定义密码策略（控制台）
<a name="id_credentials_passwords_account-policy-section-2"></a>

您可使用 AWS 管理控制台 创建、更改或删除自定义密码策略。密码策略的更改适用于在此策略更改后创建的新 IAM 用户，以及更改密码时的现有 IAM 用户。

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

1. 按照 *AWS 登录用户指南*中的[如何登录 AWS](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html)所述，根据用户类型选择相应的登录过程。

1. 在 **IAM 控制台主页**左侧的导航窗格中，在**搜索 IAM** 文本框中输入查询语句。

1. 在导航窗格中，选择 **Account settings**（账户设置）。

1. 在 **Password policy**（密码策略）部分，选择 **Edit**（编辑）。

1. 选择 **IAM default**（IAM 默认）以删除自定义密码策略，然后选择 **Save changes**（保存更改）。

1. 通过选择 **Set default**（设置默认值）来确认您要设置 IAM 默认密码策略。

控制台会显示一条状态消息，通知您密码策略已设置为 IAM 默认值。

------

## 设置密码策略 (AWS CLI)
<a name="PasswordPolicy_CLI"></a>

您可以使用 AWS Command Line Interface 设置密码策略。

**通过 AWS CLI 管理自定义账户密码策略**  
运行以下 命令：
+ 创建或更改自定义密码策略：[https://docs.aws.amazon.com/cli/latest/reference/iam/update-account-password-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/update-account-password-policy.html)
+ 查看密码策略：[https://docs.aws.amazon.com/cli/latest/reference/iam/get-account-password-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-account-password-policy.html)
+ 删除自定义密码策略：[https://docs.aws.amazon.com/cli/latest/reference/iam/delete-account-password-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-account-password-policy.html)

## 设置密码策略 (AWS API)
<a name="PasswordPolicy_API"></a>

您可以使用 AWS API 操作来设置密码策略。

**通过 AWS API 管理自定义账户密码策略**  
调用以下操作：
+ 创建或更改自定义密码策略：[https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccountPasswordPolicy.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccountPasswordPolicy.html)
+ 查看密码策略：[https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccountPasswordPolicy.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccountPasswordPolicy.html)
+ 删除自定义密码策略：[https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccountPasswordPolicy.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccountPasswordPolicy.html)