

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

# 從 Aurora MySQL 第 3 版升級至第 8.4 版的安全性考量事項
<a name="AuroraMySQL.Upgrade-v3-v84-security"></a>

從 Aurora MySQL 第 3 版 (MySQL 8.0 相容） 遷移至 Aurora MySQL 第 8.4 版時，需要仔細規劃和考量幾項重要的安全相關變更。本指南概述關鍵安全性變更，並提供順暢遷移的建議。

**Topics**
+ [身分驗證政策 (8.4 的新功能）](#AuroraMySQL.Upgrade-v3-v84-security.auth-policy)
+ [主要使用者行為](#AuroraMySQL.Upgrade-v3-v84-security.master-user)
+ [加密和 TLS 變更](#AuroraMySQL.Upgrade-v3-v84-security.tls)
+ [密碼驗證元件遷移](#AuroraMySQL.Upgrade-v3-v84-security.validate-password)
+ [新的動態權限](#AuroraMySQL.Upgrade-v3-v84-security.new-privileges)
+ [的受保護使用者強制執行 `rdsproxyadmin`](#AuroraMySQL.Upgrade-v3-v84-security.rdsproxyadmin)

## 身分驗證政策 (8.4 的新功能）
<a name="AuroraMySQL.Upgrade-v3-v84-security.auth-policy"></a>

Aurora MySQL 第 3 版 （與 MySQL 8.0 相容） 使用 `default_authentication_plugin` 參數來設定建立資料庫使用者時使用的預設身分驗證外掛程式。在 Aurora MySQL 8.4 版中，此參數會取代為 `authentication_policy` 參數，`*:caching_sha2_password`預設為 。

Aurora MySQL 中支援的值：
+ `*:caching_sha2_password` （預設值。 允許任何單一因素身分驗證外掛程式，`caching_sha2_password`若未指定，請使用 )
+ `*:mysql_native_password` （允許任何單一因素身分驗證外掛程式，`mysql_native_password`若未指定，請使用 )

**注意**  
Aurora MySQL 8.4 版不支援多重要素驗證組態。

如果您的來源叢集`default_authentication_plugin`已設定為 ，升級預先檢查[deprecatedDefaultAuth](AuroraMySQL.upgrade-prechecks.descriptions.md#deprecatedDefaultAuth) 會發出警告`mysql_native_password`。檢閱此警告，並在升級時設定目標叢集`authentication_policy`參數群組上的 參數。

## 主要使用者行為
<a name="AuroraMySQL.Upgrade-v3-v84-security.master-user"></a>

### 新叢集
<a name="AuroraMySQL.Upgrade-v3-v84-security.master-user.new-clusters"></a>

主要使用者是在叢集建立時，使用 `authentication_policy` 參數設定的身分驗證外掛程式來建立。如果您使用預設參數群組，則會使用`caching_sha2_password`身分驗證外掛程式建立主要使用者。如果您使用自訂參數群組，並將 `authentication_policy` 參數設為 `*:mysql_native_password`，則會使用`mysql_native_password`身分驗證外掛程式建立主要使用者。

### 主要使用者密碼重設
<a name="AuroraMySQL.Upgrade-v3-v84-security.master-user.password-reset"></a>

當您透過 AWS 管理主控台、CLI (`modify-db-cluster --master-user-password`) 或 API 重設主要使用者密碼時，Aurora 會使用重設時 `authentication_policy` 參數定義的目前預設外掛程式。

### Secrets Manager 和密碼輪換
<a name="AuroraMySQL.Upgrade-v3-v84-security.master-user.secrets-manager"></a>

使用 AWS Secrets Manager 管理您的主要使用者密碼時，如果您更新 `authentication_policy` 參數的值，下一次密碼輪換會將主要使用者的身分驗證外掛程式設定為符合新的`authentication_policy`參數值。

### 升級後建立的資料庫使用者
<a name="AuroraMySQL.Upgrade-v3-v84-security.master-user.new-users"></a>

使用`mysql_native_password`身分驗證外掛程式的現有資料庫使用者在升級後會繼續運作。您在升級後建立但未指定 `IDENTIFIED WITH`子句的資料庫使用者會使用 `authentication_policy` 參數定義的身分驗證外掛程式。當 參數的預設值為 時`*:caching_sha2_password`，會使用`caching_sha2_password`身分驗證外掛程式建立新的使用者。

若要變更所有新使用者的預設身分驗證外掛程式，請更新 的值`authentication_policy`。如需支援值的詳細資訊，請參閱 [身分驗證政策 (8.4 的新功能）](#AuroraMySQL.Upgrade-v3-v84-security.auth-policy)。

若要使用與預設不同的身分驗證外掛程式建立使用者，請在 `CREATE USER`陳述式中明確指定它：

```
CREATE USER '{{username}}'@'{{host}}' IDENTIFIED WITH {{authentication-plugin}} BY '{{password}}';
```

## 加密和 TLS 變更
<a name="AuroraMySQL.Upgrade-v3-v84-security.tls"></a>

若要針對 Aurora MySQL 資料庫叢集的所有使用者連線要求 TLS，請使用`require_secure_transport`資料庫叢集參數。根據預設，此參數在 Aurora MySQL 8.4 版`ON`中設定為 。

Aurora MySQL 8.4 版強制執行更嚴格的密碼編譯標準，以符合 `ssl_ciphers`(TLS 1.2) 和 `tls_ciphersuites`(TLS 1.3) 資料庫叢集參數的最新安全要求。如需詳細資訊，請參閱[Amazon Aurora MySQL 的安全性](AuroraMySQL.Security.md)。

為了防止連線中斷，請在遷移之前驗證 MySQL 用戶端和目標資料庫叢集的 TLS 組態。

## 密碼驗證元件遷移
<a name="AuroraMySQL.Upgrade-v3-v84-security.validate-password"></a>

Aurora MySQL 8.4 版推出`aurora_enable_validate_password_component`叢集參數來啟用或停用`validate_password`元件，無需手動安裝或解除安裝。如果您之前已安裝 `validate_password` 外掛程式，並在升級後啟用元件，則只有元件有效 – 會忽略該外掛程式。

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

如果您之前使用 手動安裝`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.
```

如果`validate_password`外掛程式安裝在來源叢集上，升級預先檢查 [auroraValidatePasswordPluginCheck](AuroraMySQL.upgrade-prechecks.descriptions.md#auroraValidatePasswordPluginCheck) 會發出警告。此警告不會封鎖升級，但您應該計劃在升級後轉換至元件。

## 新的動態權限
<a name="AuroraMySQL.Upgrade-v3-v84-security.new-privileges"></a>

Aurora MySQL 8.4 版支援下列新權限：
+ `ALLOW_NONEXISTENT_DEFINER`
+ `FLUSH_PRIVILEGES`
+ `OPTIMIZE_LOCAL_TABLE`
+ `SET_ANY_DEFINER`

升級時，這些權限會自動授予主要使用者帳戶[主要使用者帳戶權限](UsingWithRDS.MasterAccounts.md)的 。

## 的受保護使用者強制執行 `rdsproxyadmin`
<a name="AuroraMySQL.Upgrade-v3-v84-security.rdsproxyadmin"></a>

從 Aurora MySQL 8.4.7 版開始， `rdsproxyadmin` 是受保護的使用者。引擎`rdsproxyadmin`拒絕在任何主機對 執行 `CREATE`、`DROP``RENAME`、`REVOKE`、、 和 `GRANT``SET PASSWORD`操作。如需拒絕操作的完整清單和範例錯誤，請參閱 [Aurora MySQL 中的預留使用者](AuroraMySQL.Security.md#AuroraMySQL.Security.ReservedUsers)。

Aurora MySQL 第 3 版不會保留`rdsproxyadmin`名稱。如果您在版本 3 `rdsproxyadmin` 中建立了名為 的資料庫使用者 （而不是在註冊代理目標時讓系統建立），請在升級至版本 8.4 之前檢閱本節。

### 升級前：
<a name="AuroraMySQL.Upgrade-v3-v84-security.rdsproxyadmin.before-upgrade"></a>

如果您在第 3 版叢集中建立了 `rdsproxyadmin`使用者，請在升級至 8.4 版之前重新命名或捨棄帳戶。您可以使用第 3 版連線來執行下列其中一個陳述式：

```
-- Rename the existing account to a non-reserved name
RENAME USER 'rdsproxyadmin'@'{{host}}' TO '{{new_user}}'@'{{host}}';

-- Or drop the account if it is no longer needed
DROP USER 'rdsproxyadmin'@'{{host}}';
```

在開始升級之前，更新參考舊使用者名稱的任何應用程式或預存登入資料。

### 如果您在升級之前未重新命名或捨棄使用者
<a name="AuroraMySQL.Upgrade-v3-v84-security.rdsproxyadmin.after-upgrade"></a>

如果您升級的叢集已有您建立`rdsproxyadmin`的使用者，則升級會成功完成。帳戶會保留其現有的密碼和權限，而且您仍然可以使用原始密碼`rdsproxyadmin`像 一樣連線到叢集。

不過，升級之後，您無法修改帳戶。如果您嘗試捨棄、重新命名、變更 的權限或變更 的密碼`rdsproxyadmin`，陳述式會傳回錯誤。

如果您想要在升級之後移除帳戶，或回收 RDS Proxy 要使用`rdsproxyadmin`的名稱，請聯絡 [AWS Support](https://aws.amazon.com/premiumsupport/)。 AWS 支援可以從第 3 版移除轉送的預先存在`rdsproxyadmin`使用者。