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


MySQL 8.0 リファレンスマニュアル  /  ...  /  暗号化接続を使用するためのレプリケーションの設定

17.3.1 暗号化接続を使用するためのレプリケーションの設定

レプリケーション中に必要なバイナリログの転送に暗号化された接続を使用するには、ソースサーバーと複製サーバーの両方が暗号化されたネットワーク接続をサポートしている必要があります。 いずれかのサーバーが暗号化された接続をサポートしていない場合 (それらに対してコンパイルまたは構成されていないため)、暗号化された接続を介したレプリケーションはできません。

レプリケーション用の暗号化された接続の設定は、クライアント/サーバー接続の場合と同様です。 ソースで使用できる適切なセキュリティ証明書と、各レプリカで (同じ認証局から) 同様の証明書を取得 (または作成) する必要があります。 適切なキーファイルも取得する必要があります。

暗号化された接続のためのサーバーおよびクライアントの設定の詳細は、セクション6.3.1「暗号化接続を使用するための MySQL の構成」 を参照してください。

ソースで暗号化された接続を有効にするには、適切な証明書およびキーファイルを作成または取得し、必要に応じてファイル名を変更して、ソース my.cnf ファイルの[mysqld]セクション内のソース構成に次の構成パラメータを追加する必要があります:

[mysqld]
ssl_ca=cacert.pem
ssl_cert=server-cert.pem
ssl_key=server-key.pem

ファイルへのパスは相対パスまたは絶対パスである可能性があります。この目的には、常に完全なパスを使用することをお薦めします。

構成パラメータは次のとおりです:

  • ssl_ca: 認証局 (CA) 証明書ファイルのパス名。(ssl_capath は類似していますが、CA 証明書ファイルのディレクトリのパス名を指定します。)

  • ssl_cert: サーバー公開キー証明書ファイルのパス名。 この証明書はクライアントに送信し、クライアントが持っている CA 証明書に対して認証できます。

  • ssl_key: サーバー秘密キーファイルのパス名。

レプリカで暗号化された接続を有効にするには、(MySQL 8.0.23 の) CHANGE REPLICATION SOURCE TO ステートメントまたは (MySQL 8.0.23 の前の) CHANGE MASTER TO ステートメントを使用します。 レプリカ my.cnf ファイルの[client]セクションで、暗号化された接続に必要なレプリカ証明書および SSL 秘密キーファイルに名前を付けることも、CHANGE REPLICATION SOURCE TO | CHANGE MASTER TO ステートメントを使用してその情報を明示的に指定することもできます。

  • オプションファイルを使用してレプリカ証明書およびキーファイルに名前を付けるには、レプリカ my.cnf ファイルの[client]セクションに次の行を追加し、必要に応じてファイル名を変更します:

    [client]
    ssl-ca=cacert.pem
    ssl-cert=client-cert.pem
    ssl-key=client-key.pem
  • レプリカがソースに接続しないようにするには、--skip-slave-start オプションを使用してレプリカサーバーを再起動します。 CHANGE REPLICATION SOURCE TO | CHANGE MASTER TO を使用してソース構成を指定し、暗号化を使用して接続するための MASTER_SSL オプションを追加します:

    mysql> CHANGE MASTER TO
        -> MASTER_HOST='source_hostname',
        -> MASTER_USER='repl',
        -> MASTER_PASSWORD='password',
        -> MASTER_SSL=1;
    
    Or from MySQL 8.0.23:
    mysql> CHANGE REPLICATION SOURCE TO
        -> SOURCE_HOST='source_hostname',
        -> SOURCE_USER='repl',
        -> SOURCE_PASSWORD='password',
        -> SOURCE_SSL=1;

    レプリケーション接続用の SOURCE_SSL=1 | MASTER_SSL=1 を設定し、それ以上の SOURCE_SSL_xxx | MASTER_SSL_xxx オプションを設定しないことは、暗号化接続のコマンドオプション で説明されているように、クライアント用の --ssl-mode=REQUIRED の設定に対応します。 SOURCE_SSL=1 | MASTER_SSL=1 では、暗号化された接続を確立できる場合にのみ接続が成功します。 レプリケーション接続は暗号化されていない接続にフォールバックしないため、レプリケーションの --ssl-mode=PREFERRED 設定に対応する設定はありません。 SOURCE_SSL=0 | MASTER_SSL=0 が設定されている場合、これは --ssl-mode=DISABLED に対応します。

  • CHANGE REPLICATION SOURCE TO | CHANGE MASTER TO ステートメントを使用してレプリカ証明書および SSL 秘密キーファイルに名前を付けるには、レプリカ my.cnf ファイルで指定していない場合は、適切な SOURCE_SSL_xxx | MASTER_SSL_xxx オプションを追加します:

        -> MASTER_SSL_CA = 'ca_file_name',
        -> MASTER_SSL_CAPATH = 'ca_directory_name',
        -> MASTER_SSL_CERT = 'cert_file_name',
        -> MASTER_SSL_KEY = 'key_file_name',

    これらのオプションは、暗号化接続のコマンドオプション で説明されている同じ名前の --ssl-xxx オプションに対応しています。 これらのオプションを有効にするには、MASTER_SSL=1 も設定する必要があります。 レプリケーション接続の場合、 MASTER_SSL_CA または MASTER_SSL_CAPATH のいずれかの値を指定するか、レプリカ my.cnf ファイルでこれらのオプションを指定すると、--ssl-mode=VERIFY_CA の設定に対応します。 接続試行は、指定された情報を使用して有効な一致する認証局 (CA) 証明書が見つかった場合にのみ成功します。

  • ホスト名アイデンティティ検証をアクティブ化するには、MASTER_SSL_VERIFY_SERVER_CERT オプションを追加します:

        -> MASTER_SSL_VERIFY_SERVER_CERT=1,

    このオプションは、MySQL 5.7 から非推奨になり、MySQL 8.0 で削除された --ssl-verify-server-cert オプションに対応します。 レプリケーション接続の場合、暗号化接続のコマンドオプション で説明されているように、MASTER_SSL_VERIFY_SERVER_CERT=1 の指定は --ssl-mode=VERIFY_IDENTITY の設定に対応します。 このオプションを有効にするには、MASTER_SSL=1 も設定する必要があります。 ホスト名アイデンティティ検証は、自己署名証明書では機能しません。

  • 証明書失効リスト (CRL) チェックをアクティブ化するには、MASTER_SSL_CRL または MASTER_SSL_CRLPATH オプションを追加します:

        -> MASTER_SSL_CRL = 'crl_file_name',
        -> MASTER_SSL_CRLPATH = 'crl_directory_name',

    これらのオプションは、暗号化接続のコマンドオプション で説明されている同じ名前の --ssl-xxx オプションに対応しています。 指定しない場合、CRL チェックは行われません。

  • レプリケーション接続のレプリカで許可される暗号、暗号スイートおよび暗号化プロトコルのリストを指定するには、MASTER_SSL_CIPHERMASTER_TLS_VERSION および MASTER_TLS_CIPHERSUITES オプションを使用します:

        -> MASTER_SSL_CIPHER = 'cipher_list',
        -> MASTER_TLS_VERSION = 'protocol_list',
        -> MASTER_TLS_CIPHERSUITES = 'ciphersuite_list',
    • MASTER_SSL_CIPHER オプションは、レプリケーション接続のレプリカで許可される暗号のコロン区切りリストを指定します。

    • MASTER_TLS_VERSION オプションは、レプリケーション接続のレプリカで許可される TLS 暗号化プロトコルのコンマ区切りリストを、tls_version サーバーシステム変数と同様の形式で指定します。 接続手順では、ソースとレプリカの両方で許可されている最上位 TLS バージョンの使用をネゴシエーションします。 接続できるようにするには、レプリカにソースと共通の TLS バージョンが少なくとも 1 つ必要です。

    • MASTER_TLS_CIPHERSUITES オプション (MySQL 8.0.19 から使用可能) は、TLSv1.3 が接続に使用されている場合にレプリケーション接続のレプリカで許可される暗号スイートのコロン区切りリストを指定します。 TLSv1.3 の使用時にこのオプションが NULL に設定されている場合 (オプションを設定しない場合のデフォルト)、デフォルトで有効になっている暗号スイートが許可されます。 オプションを空の文字列に設定した場合、暗号スイートは許可されないため、TLSv1.3 は使用されません。

    これらのリストで指定できるプロトコル、暗号および暗号スイートは、MySQL のコンパイルに使用される SSL ライブラリによって異なります。 フォーマット、許可される値、およびオプションを指定しない場合のデフォルトの詳細は、セクション6.3.2「暗号化された接続 TLS プロトコルおよび暗号」 を参照してください。

    注記

    8.0.18 を介した MySQL 8.0.16 では、MySQL は TLSv1.3 をサポートしていますが、MASTER_TLS_CIPHERSUITES オプションは使用できません。 これらのリリースでは、ソースとレプリカ間の接続に TLSv1.3 を使用する場合、デフォルトで有効になっている少なくとも 1 つの TLSv1.3 暗号スイートの使用をソースで許可する必要があります。 MySQL 8.0.19 から、オプションを使用して、デフォルト以外の暗号スイートのみを含め、任意の暗号スイートの選択を指定できます。

  • ソース情報が更新されたら、レプリカでレプリケーションプロセスを開始します:

    mysql> START SLAVE;
    Or from MySQL 8.0.22:
    mysql> START REPLICA;

    SHOW REPLICA | SLAVE STATUS ステートメントを使用して、暗号化された接続が正常に確立されたことを確認できます。

  • レプリカで暗号化された接続を要求しても、ソースがレプリカからの暗号化された接続を必要とすることは保証されません。 ソースが暗号化された接続を使用して接続するレプリカのみを受け入れるようにするには、REQUIRE SSL オプションを使用してソースにレプリケーションユーザーアカウントを作成し、そのユーザーに REPLICATION SLAVE 権限を付与します。 例:

    mysql> CREATE USER 'repl'@'%.example.com' IDENTIFIED BY 'password'
        -> REQUIRE SSL;
    mysql> GRANT REPLICATION SLAVE ON *.*
        -> TO 'repl'@'%.example.com';

    ソースに既存のレプリケーションユーザーアカウントがある場合は、次のステートメントを使用して REQUIRE SSL を追加できます:

    mysql> ALTER USER 'repl'@'%.example.com' REQUIRE SSL;

関連キーワード:  接続, MASTER, ソース, 暗号, 設定, SOURCE, サーバー, ステートメント, 構成, バイナリ