セキュアソケットは、グループのメンバー間のグループ通信接続に使用できます。 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 オプション
サーバー構成 |
説明 |
---|---|
|
PEM 形式の SSL 秘密キーファイルのパス名。 クライアント側では、これはクライアント秘密キーです。 サーバー側では、これはサーバーの秘密キーです。 |
|
PEM 形式の SSL 公開キー証明書ファイルのパス名。 クライアント側では、これはクライアント公開キー証明書です。 サーバー側では、これはサーバー公開キー証明書です。 |
|
PEM 形式の認証局 (CA) 証明書ファイルのパス名。 |
|
PEM 形式の信頼できる SSL 認証局 (CA) 証明書ファイルを含むディレクトリのパス名。 |
|
PEM 形式の証明書失効リストを含むファイルのパス名。 |
|
PEM 形式の証明書失効リストファイルを含むディレクトリのパス名。 |
|
暗号化された接続に許可される暗号のリスト。 |
|
サーバーが暗号化された接続に対して許可する TLS プロトコルのリスト。 |
|
サーバーが暗号化された接続に対して許可する 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 オプションが使用されます。