文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man 頁面 (TGZ) - 258.2Kb
Man 頁面 (Zip) - 365.3Kb
資訊 (Gzip) - 4.0Mb
資訊 (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  安全性  /  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 v1.3 協定和密碼套件,以及其他已支援的 TLS 協定。但是,您無法為 MySQL 啟用 FIPS 模式。

    • 使用具有 OpenSSL 1.0.2 和所需 FIPS 物件模組的系統。在這種情況下,如果您使用使用 OpenSSL 1.0.2 編譯的二進制發行版,或從原始碼使用 OpenSSL 1.0.2 編譯 MySQL,則可以為 MySQL 啟用 FIPS 模式。在這種情況下,您無法使用 TLS v1.3 協定或密碼套件,這需要 OpenSSL 1.1.1 或 3.0。此外,您應該注意 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 本身除了指定 OpenSSL 的 FIPS 模式值外,沒有其他 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 OpenSSL 支援的平台。

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

注意

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

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

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

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