OBServerノード、liboblog、obadminなどのコンポーネントの基盤となる通信はすべてLibeasyライブラリに依存しているため、サポートされている秘密鍵/証明書の読み込み方法もすべて同じです(ローカルファイルモード)。つまり、CA証明書、ユーザー証明書、秘密鍵をwalletフォルダに配置し、構成パラメータで有効にすると、このディレクトリから読み込んでロードします。
構成方法
OBServerの転送暗号化を有効にするには、複数の構成パラメータを組み合わせて使用します。
ユーザーrootでデータベースのsysテナントにログインします。
私設鍵/証明書/CA証明書の取得方法を指定します。
説明
OceanBaseデータベースCommunity Editionでは、OBServerの転送暗号化を構成する際はこのステップを無視してください。
ALTER SYSTEM SET ssl_external_kms_info = ' { "ssl_mode":"file" }';MySQLポートのSSL通信を構成します。
デフォルトでは、MySQLポートのSSL通信は無効です。まずSSLプロトコルのバージョン番号を指定してからSSL通信を有効にします。変更は即時に反映されます。
パラメータ
sql_protocol_min_tls_versionを使用して、SSLプロトコルのバージョン番号を指定できます。現在サポートされているSSLプロトコルのバージョン番号には、TLSv1、TLSv1.1、TLSv1.2、TLSv1.3が含まれます。バージョン番号を指定すると、指定したバージョン番号以上のバージョンプロトコルがサポートされます。SSL接続を有効にする詳細については、sql_protocol_min_tls_versionを参照してください。ALTER SYSTEM SET sql_protocol_min_tls_version = 'TLSv1.1';パラメータ
ssl_client_authenticationを使用して、SSL接続を有効にできます。SSL接続を有効にする詳細については、ssl_client_authenticationを参照してください。--TRUEに設定すると、MySQL通信のSSLが即時に有効になります ALTER SYSTEM SET ssl_client_authentication = 'TRUE';
RPC通信のSSLアローリストを構成します。OBServer間のTCP接続はすべて長時間接続であるため、RPC SSL暗号化通信を有効にするには、OBServerの再起動が必要です。
--rpc通信のSSLにはアローリストの設定が必要です --クラスタ全体で有効にします ALTER SYSTEM SET _ob_ssl_invited_nodes='ALL'; --指定されたIPアドレスのobserverでSSLを有効にします ALTER SYSTEM SET _ob_ssl_invited_nodes='135.xxx.xx.xx, 128.xxx.xx.xx';
OBServerでの通信暗号化の有効化をどのように確認するか
最も簡単な方法は、MySQLポートとRPCポートでパケットキャプチャを行い、暗号化が有効になっているかどうかを確認することです。また、以下の方法でも確認できます:
OBClient/MySQLクライアントを使用してOBServerにログインし、システムテナントで
oceanbase.GV$OB_SERVERSビューのssl_cert_expired_timeフィールドを照会して有効化されているかどうかを確認します。このフィールドは、現在のOBServerでSSLが有効になった際に使用されるSSL証明書の有効期限をUTC時間でマイクロ秒単位で記録します。
obclient> select svr_ip, svr_port,zone, ssl_cert_expired_time, from_unixtime(ssl_cert_expired_time/1000000) from oceanbase.GV$OB_SERVERS; +--------------+----------+-------+----------------------+---------------------------------------------+ | svr_ip | svr_port | zone | ssl_cert_expired_time | from_unixtime(ssl_key_expired_time/1000000) | +--------------+----------+-------+----------------------+---------------------------------------------+ | 100.xx.xx.xx | 13212 | zone1 | 1871860075 | 2029-04-26 09:07:55 | +--------------+----------+-------+----------------------+---------------------------------------------+ 1 row in set (0.00 sec)
MySQLポートでSSLが有効になっているかどうかを確認する
MySQLクライアント/OBClientを使用してログインし、\sコマンドを実行してSSLフィールドの例を確認します:
obclient> \s
--------------
obclient Ver 1.1.8 Distrib 5.7.24, for Linux (x86_64) using EditLine wrapper
Connection id: 3221506046
Current database: test
Current user: root@xx.xx.xx.39
SSL: Cipher in use is DHE-RSA-AES128-GCM-SHA256
Current pager: less
Using outfile: ''
Using delimiter: ;
Server version: 5.7.25 OceanBase 2.2.60 (r1-63cbd3084a3283523f09d6ba20795f77b95e046b) (Built Jun 30 2020 10:10:29)
Protocol version: 10
Connection: xx.xx.xx.189 via TCP/IP
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8mb4
Conn. characterset: utf8mb4
TCP port: 13213
Active --------------
RPCポートでSSLが有効になっているかどうかを確認する
OBServer.logファイル内のログを検索し、「rpc connection accept」というキーワードを含む行を見つけて、use_sslの値がTrueかFalseかを確認することで、RPC SSLが正常に有効になっているかどうかを判断します。
説明
RPC接続については、現在のところクラスタの再起動が必要です。または、クラスタを再起動せずに既存のRPC接続を切断することで有効になります。