文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 39.9Mb
PDF (A4) - 40.0Mb
手冊頁 (TGZ) - 258.5Kb
手冊頁 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  安全性  /  FIPS 支援

8.8 FIPS 支援

當主機系統上提供支援的 OpenSSL 程式庫和 FIPS 物件模組時,MySQL 支援 FIPS 模式。

伺服器端的 FIPS 模式適用於伺服器執行的密碼編譯作業。這包括在伺服器內執行的複寫(來源/複本和群組複寫)和 X 外掛程式。FIPS 模式也適用於用戶端嘗試連線至伺服器的情況。

以下章節說明 FIPS 模式以及如何在 MySQL 中利用它

FIPS 概觀

聯邦資訊處理標準 140-2 (FIPS 140-2) 說明一種安全性標準,聯邦(美國政府)機構可能會要求使用此標準,以保護敏感或有價值的資訊。若要被視為可接受此類聯邦用途,密碼編譯模組必須通過 FIPS 140-2 認證。如果旨在保護敏感資料的系統缺少適當的 FIPS 140-2 憑證,則聯邦機構無法購買該系統。

OpenSSL 等產品可以在 FIPS 模式下使用,儘管 OpenSSL 程式庫本身未通過 FIPS 驗證。相反地,OpenSSL 程式庫會與 OpenSSL FIPS 物件模組一起使用,使基於 OpenSSL 的應用程式能夠在 FIPS 模式下運作。

如需有關 FIPS 及其在 OpenSSL 中實作的一般資訊,這些參考資料可能有所幫助

重要

FIPS 模式會對密碼編譯作業施加條件,例如限制可接受的加密演算法或對較長金鑰長度的要求。對於 OpenSSL,確切的 FIPS 行為取決於 OpenSSL 版本。

MySQL 中 FIPS 模式的系統需求

為了使 MySQL 支援 FIPS 模式,必須滿足以下系統需求

  1. MySQL 必須使用通過 FIPS 認證的 OpenSSL 版本進行編譯。OpenSSL 1.0.2 和 OpenSSL 3.0 已通過認證,但 OpenSSL 1.1.1 並未通過。 近期版本的 MySQL 二進制發行版在某些平台上是使用 OpenSSL 3.0 編譯的,這表示它們未通過 FIPS 認證。這意味著您有以下選項,具體取決於系統和 MySQL 配置:

    • 使用具有 OpenSSL 3.0 和所需 FIPS 物件模組的系統。在這種情況下,如果您使用以 OpenSSL 3.0 編譯的二進制發行版,或者從原始碼使用 OpenSSL 3.0 編譯 MySQL,則可以啟用 MySQL 的 FIPS 模式。

      有關升級至 OpenSSL 3.0 的一般資訊,請參閱 OpenSSL 3.0 遷移指南

    • 使用具有 OpenSSL 1.1.1 或更高版本的系統。在這種情況下,您可以使用二進制套件安裝 MySQL,並且除了其他已支援的 TLS 協定外,還可以使用 TLS v1.3 協定和加密套件。但是,您無法啟用 MySQL 的 FIPS 模式。

    • 使用具有 OpenSSL 1.0.2 和所需 FIPS 物件模組的系統。在這種情況下,如果您使用以 OpenSSL 1.0.2 編譯的二進制發行版,或者從原始碼使用 OpenSSL 1.0.2 編譯 MySQL,則可以啟用 MySQL 的 FIPS 模式。在這種情況下,您無法使用需要 OpenSSL 1.1.1 或 3.0 的 TLS v1.3 協定或加密套件。此外,您應該注意 OpenSSL 1.0.2 已於 2019 年終止支援,而所有嵌入 OpenSSL 1.1.1 的作業平台將於 2024 年終止支援。

  2. 在執行階段,OpenSSL 程式庫和 OpenSSL FIPS 物件模組必須以共享 (動態連結) 物件的形式提供。

在 MySQL 中啟用 FIPS 模式

若要判斷 MySQL 是否在啟用 FIPS 模式的系統上執行,請使用 SQL 陳述式 (例如 SHOW VARIABLES LIKE '%fips%'SELECT @@ssl_fips_mode) 檢查 ssl_fips_mode 伺服器系統變數的值。如果此變數的值為 1 (ON) 或 2 (STRICT),則表示已啟用 OpenSSL 的 FIPS 模式;如果為 0 (OFF),則表示 FIPS 模式不可用。

重要

一般而言,STRICTON 施加更多的限制,但 MySQL 本身除了指定 FIPS 模式值給 OpenSSL 之外,沒有其他 FIPS 特定程式碼。ONSTRICT 的 FIPS 模式的確切行為取決於 OpenSSL 版本。如需詳細資訊,請參閱 fips_module 手冊頁(請參閱 FIPS 概述)。

伺服器端的 FIPS 模式適用於伺服器執行的加密操作,包括 MySQL 複寫 (包括群組複寫) 和在伺服器內執行的 X Plugin 所執行的加密操作。

FIPS 模式也適用於用戶端嘗試連線至伺服器的情況。啟用後,無論在用戶端或伺服器端啟用,都會限制可選用的受支援加密密碼。然而,啟用 FIPS 模式並不表示必須使用加密連線,或必須加密使用者憑證。例如,如果啟用 FIPS 模式,則需要更強大的加密演算法。特別是,MD5 受到限制,因此嘗試使用 RC4-MD5 等加密密碼建立加密連線將無法運作。但是,FIPS 模式不會阻止建立未加密的連線。(若要執行此操作,您可以對特定使用者帳戶使用 CREATE USERALTER USERREQUIRE 子句,或設定 require_secure_transport 系統變數以影響所有帳戶。)

如果需要 FIPS 模式,建議使用包含它的作業平台;如果您的作業平台包含 FIPS,您就可以 (也應該) 使用它。如果您的平台未包含 FIPS,您有兩個選項:

  • 移轉到具有 FIPS OpenSSL 支援的平台。

  • 使用 fips_module 手冊頁中的說明,從原始碼建置 OpenSSL 程式庫和 FIPS 物件模組(請參閱 FIPS 概述)。

注意

如果 OpenSSL FIPS 物件模組不可用,則 ssl_fips_mode--ssl-fips-mode 的唯一允許值為 OFF。嘗試將 FIPS 模式設定為不同的值時會發生錯誤。

如果需要 FIPS 模式,建議使用包含它的作業平台;如果您的作業平台包含 FIPS,您就可以 (也應該) 使用它。如果您的平台未包含 FIPS,您有兩個選項:

  • 移轉到具有 FIPS OpenSSL 支援的平台。

  • 使用 fips_module 手冊頁中的說明,從原始碼建置 OpenSSL 程式庫和 FIPS 物件模組(請參閱 FIPS 概述)。