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


MySQL 8.0 リファレンスマニュアル  /  ...  /  Secure Socket Layer (SSL) を使用したグループ通信接続の保護

18.5.2 Secure Socket Layer (SSL) を使用したグループ通信接続の保護

セキュアソケットは、グループのメンバー間のグループ通信接続に使用できます。 Group Replication システム変数 group_replication_ssl_mode は、グループ通信接続の SSL の使用をアクティブ化し、接続のセキュリティモードを指定するために使用されます。 デフォルト設定は、SSL が使用されないことを意味します。 このオプションには、次の値を指定できます:

表 18.2 group_replication_ssl_mode 構成値

説明

DISABLED

暗号化されていない接続を確立します (デフォルト)。

REQUIRED

サーバーがセキュアな接続をサポートしている場合は、セキュアな接続を確立します。

VERIFY_CA

REQUIRED と似ていますが、さらに、構成された認証局 (CA) 証明書に対してサーバー TLS 証明書を検証します。

VERIFY_IDENTITY

VERIFY_CA と似ていますが、さらに、サーバー証明書が接続が試行されるホストと一致することを確認します。


グループレプリケーショングループ通信接続の残りの構成は、サーバー SSL 構成から取得されます。 サーバー SSL を構成するオプションの詳細は、暗号化接続のコマンドオプション を参照してください。 グループレプリケーショングループの通信接続に適用されるサーバー SSL オプションは、次のとおりです:

表 18.3 SSL オプション

サーバー構成

説明

ssl_key

PEM 形式の SSL 秘密キーファイルのパス名。 クライアント側では、これはクライアント秘密キーです。 サーバー側では、これはサーバーの秘密キーです。

ssl_cert

PEM 形式の SSL 公開キー証明書ファイルのパス名。 クライアント側では、これはクライアント公開キー証明書です。 サーバー側では、これはサーバー公開キー証明書です。

ssl_ca

PEM 形式の認証局 (CA) 証明書ファイルのパス名。

ssl_capath

PEM 形式の信頼できる SSL 認証局 (CA) 証明書ファイルを含むディレクトリのパス名。

ssl_crl

PEM 形式の証明書失効リストを含むファイルのパス名。

ssl_crlpath

PEM 形式の証明書失効リストファイルを含むディレクトリのパス名。

ssl_cipher

暗号化された接続に許可される暗号のリスト。

tls_version

サーバーが暗号化された接続に対して許可する TLS プロトコルのリスト。

tls_ciphersuites

サーバーが暗号化された接続に対して許可する TLSv1.3 暗号スイート。


重要
  • TLSv1.3 プロトコルのサポートは、MySQL 8.0.16 の MySQL Server で使用できます (MySQL が OpenSSL 1.1.1 以上を使用してコンパイルされている場合)。 グループレプリケーションは、MySQL 8.0.18 からの TLSv1.3 をサポートしています。 MySQL 8.0.16 および MySQL 8.0.17 では、サーバーが TLSv1.3 をサポートしている場合、プロトコルはグループ通信エンジンではサポートされず、Group Replication では使用できません。

  • tls_version システム変数で指定された TLS プロトコルのリストで、指定されたバージョンが連続していることを確認します (たとえば、TLSv1,TLSv1.1,TLSv1.2)。 プロトコルのリストにギャップがある場合 (たとえば、TLSv1,TLSv1.2 を指定し、TLS 1.1 を省略した場合)、Group Replication はグループ通信接続を確立できない可能性があります。

  • MySQL 8.0.18 では、TLSv1.3 を分散リカバリ接続のグループレプリケーションで使用できますが、group_replication_recovery_tls_version および group_replication_recovery_tls_ciphersuites システム変数は使用できません。 したがって、ドナーサーバーでは、セクション6.3.2「暗号化された接続 TLS プロトコルおよび暗号」 にリストされているように、デフォルトで有効になっている TLSv1.3 暗号スイートを少なくとも 1 つ使用できる必要があります。 MySQL 8.0.19 から、オプションを使用して、必要に応じてデフォルト以外の暗号スイートのみを含む任意の暗号スイートのクライアントサポートを構成できます。

レプリケーショングループでは、OpenSSL は、すべてのメンバーでサポートされている最上位 TLS プロトコルの使用をネゴシエーションします。 TLSv1.3 (tls_version=TLSv1.3) のみを使用するように構成された結合メンバーは、既存のメンバーが TLSv1.3 をサポートしていないレプリケーショングループに参加できません。その場合、グループメンバーは TLS プロトコルバージョンが低いためです。 メンバーをグループに参加させるには、参加メンバーを構成して、既存のグループメンバーでサポートされている下位 TLS プロトコルバージョンの使用も許可する必要があります。 逆に、参加メンバーが TLSv1.3 をサポートしていないが、既存のグループメンバーが相互の接続にそのバージョンをすべて使用している場合、既存のグループメンバーがすでに適切な下位 TLS プロトコルバージョンの使用を許可しているか、それを許可するように構成すると、メンバーは参加できます。 この状況では、OpenSSL は、各メンバーから参加メンバーへの接続に TLS プロトコルの下位バージョンを使用します。 他の既存のメンバーへの各メンバー接続では、両方のメンバーがサポートする使用可能な最高のプロトコルが引き続き使用されます。

MySQL 8.0.16 から、実行時に tls_version システム変数を変更して、サーバーで許可されている TLS プロトコルバージョンのリストを変更できます。 Group Replication の場合、コンテキストを定義するシステム変数の現在の値からサーバー TLS コンテキストを再構成する ALTER INSTANCE RELOAD TLS ステートメントは、Group Replication の実行中に Group Replication グループ通信接続の TLS コンテキストを変更しないことに注意してください。 これらの接続に再構成を適用するには、STOP GROUP_REPLICATION の後に START GROUP_REPLICATION を実行して、tls_version システム変数を変更したメンバーでグループレプリケーションを再起動する必要があります。 同様に、グループのすべてのメンバーが上位または下位の TLS プロトコルバージョンを使用するように変更する場合は、許可された TLS プロトコルバージョンのリストを変更した後に、メンバーでグループレプリケーションのローリング再起動を実行して、ローリング再起動の完了時に OpenSSL が上位 TLS プロトコルバージョンの使用をネゴシエートできるようにする必要があります。 実行時に許可される TLS プロトコルバージョンのリストを変更する手順については、セクション6.3.2「暗号化された接続 TLS プロトコルおよび暗号」and サーバー側のランタイム構成および暗号化された接続の監視 を参照してください。

次の例は、サーバーで SSL を構成し、グループレプリケーショングループ通信接続の SSL をアクティブ化する my.cnf ファイルのセクションを示しています:

[mysqld]
ssl_ca = "cacert.pem"
ssl_capath = "/.../ca_directory"
ssl_cert = "server-cert.pem"
ssl_cipher = "DHE-RSA-AEs256-SHA"
ssl_crl = "crl-server-revoked.crl"
ssl_crlpath = "/.../crl_directory"
ssl_key = "server-key.pem"
group_replication_ssl_mode= REQUIRED
重要

コンテキストを定義するシステム変数の現在の値からサーバー TLS コンテキストを再構成する ALTER INSTANCE RELOAD TLS ステートメントは、Group Replication の実行中に Group Replication グループ通信接続の TLS コンテキストを変更しません。 これらの接続に再構成を適用するには、STOP GROUP_REPLICATION を実行してから START GROUP_REPLICATION を実行し、Group Replication を再起動する必要があります。

分散リカバリのために結合メンバーと既存のメンバーの間で行われた接続は、前述のオプションではカバーされません。 これらの接続では、セクション18.5.3.2「分散リカバリのための Secure Socket Layer (SSL) 接続」 で説明されているグループレプリケーション専用分散リカバリ SSL オプションが使用されます。


関連キーワード:  グループ, 接続, メンバー, サーバー, プロトコル, 構成, リカバリ, バージョン, TLSv, 分散