

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Aurora MySQL 中的密碼政策和密碼驗證
<a name="AuroraMySQL.PasswordPolicies"></a>

**Topics**
+ [密碼政策](#AuroraMySQL.PasswordPolicies.overview)
+ [使用 validate\_password 元件](#AuroraMySQL.PasswordPolicies.validate-password)
+ [相關文件](#AuroraMySQL.PasswordPolicies.related)

## 密碼政策
<a name="AuroraMySQL.PasswordPolicies.overview"></a>

Aurora MySQL 支援下列 MySQL 密碼政策功能。如需這些政策的詳細資訊，請參閱 [MySQL 密碼管理文件](https://dev.mysql.com/doc/refman/8.4/en/password-management.html)。

### 密碼過期
<a name="AuroraMySQL.PasswordPolicies.expiration"></a>


**密碼過期參數**  

| 參數/子句 | 備註 | 
| --- | --- | 
| 叢集參數 `default_password_lifetime` | 適用於 Aurora MySQL 第 3 版 （與 MySQL 8.0 相容） 及更新版本。 | 
| 每個帳戶 DCL 子句 `PASSWORD EXPIRE INTERVAL N DAY` | 無 | 
| 每個帳戶 DCL 子句 `PASSWORD EXPIRE NEVER` | 無 | 
| 每個帳戶 DCL 子句 `PASSWORD EXPIRE DEFAULT` | 無 | 
| 叢集參數 `disconnect_on_expired_password` | 適用於 Aurora MySQL 8.4 版及更新版本。 | 

### 密碼重複使用限制
<a name="AuroraMySQL.PasswordPolicies.reuse"></a>


**密碼重複使用限制參數**  

| 參數/子句 | 備註 | 
| --- | --- | 
| 叢集參數 `password_history` | 適用於 Aurora MySQL 8.4 版及更新版本。 | 
| 叢集參數 `password_reuse_interval` | 適用於 Aurora MySQL 8.4 版及更新版本。 | 
| 每個帳戶 DCL 子句 `PASSWORD HISTORY N` | 無 | 
| 每個帳戶 DCL 子句 `PASSWORD REUSE INTERVAL N DAY` | 無 | 
| 每個帳戶 DCL 子句 `PASSWORD HISTORY DEFAULT` | 無 | 

### 目前的密碼驗證
<a name="AuroraMySQL.PasswordPolicies.current-verification"></a>


**目前的密碼驗證參數**  

| 參數/子句 | 備註 | 
| --- | --- | 
| 參數 `password_require_current` | 適用於 Aurora MySQL 8.4 版及更新版本。 | 
| 每個帳戶 DCL 子句 `PASSWORD REQUIRE CURRENT` | 無 | 
| 每個帳戶 DCL 子句 `PASSWORD REQUIRE CURRENT OPTIONAL` | 無 | 
| 每個帳戶 DCL 子句 `PASSWORD REQUIRE CURRENT DEFAULT` | 無 | 

### 雙密碼支援
<a name="AuroraMySQL.PasswordPolicies.dual-password"></a>


**雙密碼支援子句**  

| 參數/子句 | 備註 | 
| --- | --- | 
| 每個帳戶 DCL 子句 `RETAIN CURRENT PASSWORD` | 無 | 
| 每個帳戶 DCL 子句 `DISCARD OLD PASSWORD` | 無 | 

### 失敗的登入追蹤和臨時帳戶鎖定
<a name="AuroraMySQL.PasswordPolicies.failed-login"></a>


**失敗的登入追蹤子句**  

| 參數/子句 | 備註 | 
| --- | --- | 
| 每個帳戶 DCL 子句 `FAILED_LOGIN_ATTEMPTS N` | 無 | 
| 每個帳戶 DCL 子句 `PASSWORD_LOCK_TIME N` | 無 | 
| 每個帳戶 DCL 子句 `PASSWORD_LOCK_TIME UNBOUNDED` | 無 | 

## 使用 validate\_password 元件
<a name="AuroraMySQL.PasswordPolicies.validate-password"></a>

`validate_password` 元件是 MySQL 伺服器元件，可提供密碼強度驗證和強制執行功能。它會針對可設定的規則測試密碼，以確保密碼符合指定的安全要求，然後才會被接受。

啟用時，`validate_password`元件會在下列期間自動驗證密碼：
+ 使用者帳戶建立 (`CREATE USER`)
+ 密碼變更 (`ALTER USER`、`SET PASSWORD`)

這有助於組織在資料庫使用者之間維持強大的密碼衛生，並遵守安全政策和法規要求。

Aurora MySQL 8.4 版提供以參數為基礎的方法來啟用和管理`validate_password`元件，無需手動`INSTALL COMPONENT`和`UNINSTALL COMPONENT`命令。

### 啟用 validate\_password 元件
<a name="AuroraMySQL.PasswordPolicies.validate-password.enabling"></a>

若要在 Aurora MySQL 叢集中啟用密碼驗證，請使用叢集參數：

參數名稱：`aurora_enable_validate_password_component`

若要啟用：在您的資料庫叢集參數群組中將 `aurora_enable_validate_password_component`設定為 `true`（或 `1`)。

若要停用：在您的資料庫叢集參數群組中將 `aurora_enable_validate_password_component`設定為 `false`（或 `0`)。

**注意**  
您將無法使用 `validate_password`元件的`INSTALL/UNINSTALL COMPONENT`命令。

**注意**  
從 Aurora MySQL 8.4 版開始，`validate_password`元件不會列在`mysql.component`資料表中。您可以在資料庫叢集參數群組中或透過全域變數 來查看元件的狀態`aurora_enable_validate_password_component`：  

```
SELECT @@global.aurora_enable_validate_password_component;
```

### 支援的 validate\_password 元件參數
<a name="AuroraMySQL.PasswordPolicies.validate-password.parameters"></a>


**validate\_password 元件參數**  

| 參數名稱 | 備註 | 
| --- | --- | 
| `validate_password.check_user_name` | 適用於 Aurora MySQL 8.4 版及更新版本。 | 
| `validate_password.length` | 適用於 Aurora MySQL 8.4 版及更新版本。 | 
| `validate_password.mixed_case_count` | 適用於 Aurora MySQL 8.4 版及更新版本。 | 
| `validate_password.number_count` | 適用於 Aurora MySQL 8.4 版及更新版本。 | 
| `validate_password.policy` | 適用於 Aurora MySQL 8.4 版及更新版本。僅支援 LOW 和 MEDIUM 層級。 | 
| `validate_password.special_char_count` | 適用於 Aurora MySQL 8.4 版及更新版本。 | 

如需 MySQL validate\_password 參數的詳細資訊，請參閱 [MySQL 密碼驗證選項和變數文件](https://dev.mysql.com/doc/refman/8.4/en/validate-password-options-variables.html)。

### validate\_password 外掛程式和元件從 RDS for MySQL 或 Aurora MySQL 第 3 版遷移至 Aurora MySQL 第 8.4 版
<a name="AuroraMySQL.PasswordPolicies.validate-password.migration"></a>

從 Aurora MySQL 8.4 版開始，如果您先前已透過 `INSTALL PLUGIN`命令安裝`validate_password`外掛程式，您可以透過啟用 參數來遷移至`validate_password`元件，`aurora_enable_validate_password_component`然後在您的寫入器執行個體上透過 `UNINSTALL PLUGIN`命令移除外掛程式。

**注意**  
如果您同時安裝 外掛程式並`aurora_enable_validate_password_component`啟用 參數，`validate_password`元件將優先於 外掛程式。

如果您之前使用 手動安裝`validate_password`元件`INSTALL COMPONENT 'file://component_validate_password'`，請確保在升級時在目標資料庫叢集`aurora_enable_validate_password_component`參數群組中設定 參數。升級之後，元件將不再列在`mysql.component`資料表中。您可以使用 `aurora_enable_validate_password_component`全域變數來驗證元件的狀態。

在升級後的第一個資料庫引擎啟動上，如果您先前已手動安裝元件，您會在 MySQL 錯誤日誌中看到下列訊息：

```
Component 'file://component_validate_password' is being removed from mysql.component table.
validate_password component can be enabled/disabled through 'aurora_enable_validate_password_component' cluster parameter.
```

### 手動安裝限制
<a name="AuroraMySQL.PasswordPolicies.validate-password.restrictions"></a>

從 Aurora MySQL 8.4 版開始，不允許手動`validate_password`元件安裝和解除安裝命令：

```
mysql> INSTALL COMPONENT 'file://component_validate_password';
ERROR HY000: Cannot load component from specified URN: 'validate_password component can be
enabled/disabled through 'aurora_enable_validate_password_component' cluster parameter.'
```

### 監控元件狀態
<a name="AuroraMySQL.PasswordPolicies.validate-password.monitoring"></a>

Aurora MySQL 會記錄 MySQL 錯誤日誌的元件狀態變更：

啟用時：

```
Component 'validate_password' is enabled by parameter aurora_enable_validate_password_component
```

停用時：

```
Component 'validate_password' is disabled by parameter aurora_enable_validate_password_component
```

### 密碼驗證對主要使用者密碼的影響
<a name="AuroraMySQL.PasswordPolicies.validate-password.master-user"></a>

透過 `modify-db-cluster` API 重設主要使用者密碼時，如果新密碼不符合設定的密碼驗證規則，Aurora MySQL 將發出客戶可見的事件，指出失敗，而且您必須使用合規密碼重試操作。

### 密碼驗證對 Amazon RDS 受管主要使用者密碼的影響
<a name="AuroraMySQL.PasswordPolicies.validate-password.managed-password"></a>

對於使用存放於 中的 Amazon RDS 受管主要使用者憑證的叢集 AWS Secrets Manager，如果輪換期間自動產生的密碼不符合設定的驗證要求，輪換將會失敗。您需要調整密碼驗證參數，以允許輪換成功。我們建議不要同時使用 `validate_password`元件和受管主要使用者密碼。

## 相關文件
<a name="AuroraMySQL.PasswordPolicies.related"></a>
+ [Aurora MySQL 組態參數](AuroraMySQL.Reference.ParameterGroups.md)
+ [Amazon Aurora MySQL 的安全性](AuroraMySQL.Security.md)
+ [MySQL validate\_password 元件文件](https://dev.mysql.com/doc/refman/8.4/en/validate-password.html)
+ [Amazon Aurora 的參數群組](USER_WorkingWithParamGroups.md)