MySQL 8.0 リファレンスマニュアル


6.8 FIPS のサポート

OpenSSL 1.0.2 を使用してコンパイルされた場合、MySQL は FIPS モードをサポートし、OpenSSL ライブラリおよび FIPS オブジェクトモジュールを実行時に使用できます。

サーバー側の FIPS モードは、サーバーによって実行される暗号化操作に適用されます。 これには、サーバー内で実行されるレプリケーション (ソース/レプリカおよびグループレプリケーション) および X プラグインが含まれます。 FIPS モードは、クライアントによるサーバーへの接続試行にも適用されます。

次の各セクションでは、FIPS モードと、MySQL 内で FIPS モードを利用する方法について説明します:

FIPS の概要

Federal Information Processing Standards 140-2 (FIPS 140-2) では、機密情報または貴重な情報を保護するために使用される暗号化モジュールのために連邦政府 (US Government) 機関で必要とされるセキュリティ標準について説明します。 このような連邦政府で使用できるとみなされるには、FIPS 140-2 で暗号化モジュールが動作保証されている必要があります。 機密データを保護するシステムに適切な FIPS 140-2 証明書がない場合、連邦政府機関はそれを購入できません。

OpenSSL などの製品は FIPS モードで使用できますが、OpenSSL ライブラリ自体は FIPS に対して検証されません。 かわりに、OpenSSL ライブラリを OpenSSL FIPS オブジェクトモジュールとともに使用して、OpenSSL ベースのアプリケーションが FIPS モードで動作できるようにします。

FIPS と OpenSSL でのその実装に関する一般的な情報については、次の参考資料を参照してください:

重要

FIPS モードでは、許容される暗号化アルゴリズムの制限や長いキー長の要件などの暗号化操作に条件が適用されます。 OpenSSL の場合、FIPS の正確な動作は OpenSSL のバージョンによって異なります。 詳細は、OpenSSL FIPS User Guide を参照してください。

MySQL での FIPS モードのシステム要件

MySQL で FIPS モードをサポートするには、次のシステム要件を満たす必要があります:

  • ビルド時に、MySQL は OpenSSL を使用してコンパイルする必要があります。 コンパイルで OpenSSL とは異なる SSL ライブラリが使用されている場合、FIPS モードは MySQL では使用できません。

    また、FIPS での使用が動作保証されている OpenSSL バージョンで MySQL をコンパイルする必要があります。 OpenSSL 1.0.2 は認定されていますが、OpenSSL 1.1.1 は認定されていません。 最新バージョンの MySQL のバイナリディストリビューションは、一部のプラットフォームでは OpenSSL 1.1.1 を使用してコンパイルされます。つまり、FIPS に対して動作保証されていません。 これにより、システムおよび MySQL の構成に応じて、使用可能な MySQL 機能がトレードオフされます:

    • OpenSSL 1.0.2 および必要な FIPS オブジェクトモジュールを備えたシステムを使用します。 この場合、OpenSSL 1.0.2 を使用してコンパイルされたバイナリ配布を使用するか、OpenSSL 1.0.2 を使用してソースから MySQL をコンパイルすると、MySQL の FIPS モードを有効にできます。 ただし、この場合、TLSv1.3 プロトコルまたは暗号スイート (OpenSSL 1.1.1 が必要) は使用できません。 さらに、2019 年末に End of Life ステータスに達した OpenSSL バージョンを使用しています。

    • OpenSSL 1.1.1 以上のシステムを使用します。 この場合、バイナリパッケージを使用して MySQL をインストールでき、すでにサポートされている他の TLS プロトコルに加えて、TLSv1.3 プロトコルおよび暗号スイートを使用できます。 ただし、MySQL で FIPS モードを有効にすることはできません。

  • 実行時に、OpenSSL ライブラリおよび OpenSSL FIPS オブジェクトモジュールが共有 (動的にリンクされた) オブジェクトとして使用可能である必要があります。 静的にリンクされた OpenSSL オブジェクトは構築できますが、MySQL では使用できません。

FIPS モードは、EL7 上の MySQL に対してテストされていますが、他のシステムでも動作する可能性があります。

プラットフォームまたはオペレーティングシステムで OpenSSL FIPS オブジェクトモジュールが提供されている場合は、それを使用できます。 それ以外の場合は、ソースから OpenSSL ライブラリおよび FIPS オブジェクトモジュールをビルドできます。 OpenSSL FIPS ユーザーガイド (FIPS の概要 を参照) の手順を使用します。

MySQL での FIPS モードの構成

MySQL では、サーバー側とクライアント側で FIPS モードを制御できます:

  • ssl_fips_mode システム変数は、サーバーが FIPS モードで動作するかどうかを制御します。

  • --ssl-fips-mode クライアントオプションは、特定の MySQL クライアントが FIPS モードで動作するかどうかを制御します。

ssl_fips_mode システム変数および --ssl-fips-mode クライアントオプションでは、次の値が許可されます:

  • OFF: FIPS モードを無効にします。

  • ON: FIPS モードを有効にします。

  • STRICT: strict FIPS モードを有効にします。

サーバー側では、ssl_fips_mode の数値 0、1 および 2 は OFFON および STRICT と同等です。

重要

一般に、STRICT には ON よりも多くの制限がありますが、MySQL 自体には FIPS モード値を OpenSSL に指定する以外に FIPS 固有のコードはありません。 ON または STRICT の FIPS モードの正確な動作は、OpenSSL のバージョンによって異なります。 詳細は、OpenSSL FIPS ユーザーガイド (FIPS の概要 を参照) を参照してください。

注記

OpenSSL FIPS オブジェクトモジュールが使用できない場合、ssl_fips_mode および --ssl-fips-mode で許可される値は OFF のみです。 FIPS モードを別の値に設定しようとすると、エラーが発生します。

サーバー側の FIPS モードは、サーバーによって実行される暗号化操作に適用されます。 これには、サーバー内で実行されるレプリケーション (ソース/レプリカおよびグループレプリケーション) および X プラグインが含まれます。

FIPS モードは、クライアントによるサーバーへの接続試行にも適用されます。 有効にすると、クライアント側またはサーバー側のいずれかで、サポートされている暗号化方式のどれを選択できるかが制限されます。 ただし、FIPS モードを有効にする場合、暗号化された接続を使用する必要はありません。また、ユーザー資格証明を暗号化する必要もあります。 たとえば、FIPS モードが有効になっている場合は、より強力な暗号化アルゴリズムが必要です。 特に、MD5 は制限されているため、RC4-MD5 などの暗号化暗号を使用して暗号化された接続を確立しようとしても機能しません。 ただし、FIPS モードには、暗号化されていない接続の確立を妨げるものはありません。 (これを行うには、特定のユーザーアカウントに対して CREATE USER または ALTER USERREQUIRE 句を使用するか、すべてのアカウントに影響するように require_secure_transport システム変数を設定します。)


関連キーワード:  FIPS, モード, サーバー, サポート, 認証, パスワード, ユーザー, アカウント, 接続, リファレンス