機能の概要
この機能は、RPC通信のセキュリティを向上させることを目的としています。RPC接続認証を有効にすると、認証を通過したクライアントのみがOBServerノードとRPC接続を確立できます。この措置により、攻撃者による悪意のあるRPCパケットを効果的に遮断し、OBServerノードによって実行されるのを防ぐことで、OceanBaseデータベースのセキュリティ防御能力を強化します。
互換性の観点から、本ソリューションはグレースケールアップグレードのプロセスをサポートしており、段階的かつスムーズにアップグレードできるため、業務プロセスに影響を与えません。アップグレード中は、高バージョンと低バージョンのOBServerノードは相互に互換性があります。つまり、高バージョンをクライアントとして使用する場合は低バージョンのサーバーに接続でき、同様に低バージョンをクライアントとして使用する場合も高バージョンのサーバーに接続できます。アップグレード後は、デフォルトでRPC接続認証は有効になっていないため、手動で有効にする必要があります。
制限事項
OceanBase データベース V4.2.0 の RPC 接続認証機能は、pkt-nio ネットワークフレームワークが有効な場合にのみ使用できます。つまり、RPC 接続認証を有効にする前に、_enable_pkt_nio 構成パラメータを True に設定しておく必要があります。
説明
_enable_pkt_nio は RPC ネットワークフレームワーク pkt-nio の有効化と無効化を制御します。デフォルト値は True です。
使い方
認証の有効化
現在、OBServerノードはSSLハンドシェイクに基づくRPC接続認証を提供しています。有効化方法は以下のとおりです。
SSL証書の準備
インストールディレクトリにwalletフォルダを作成し、証書と秘密鍵のファイルをそのフォルダに配置する必要があります。証書と秘密鍵のファイルには、ルート証書(ca.pem)、証書(server-cert.pem)、秘密鍵(server-key.pem)の3つのファイルが含まれます。
説明
- デフォルトのインストールディレクトリパス:/home/admin/oceanbase
- walletフォルダおよびその下のファイル名は変更できません。
- 複数のサーバーを所有している場合、各サーバーのインストールディレクトリにwalletフォルダを作成し、そのフォルダに証書と秘密鍵を配置する必要があります。
- 認証を有効にする前に、必要な証書ファイルが準備されていることを確認してください。そうでない場合、認証に失敗し、サービスが利用できなくなる可能性があります。
コマンドの実行と有効化
sysテナントとしてOceanBaseデータベースにログインし、以下のコマンドを順番に実行します。
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接続を有効にします。SSL接続を有効にする方法の詳細については、ssl_client_authenticationを参照してください。
ALTER SYSTEM SET ssl_client_authentication=True;クライアントの認証方式を
SSL_NO_ENCRYPTに設定します。クライアント認証の詳細については、rpc_client_authentication_methodを参照してください。ALTER SYSTEM SET rpc_client_authentication_method = 'SSL_NO_ENCRYPT';サーバー側の認証方式を
SSL_NO_ENCRYPTに設定します。サーバー側認証の詳細については、rpc_server_authentication_methodを参照してください。ALTER SYSTEM SET rpc_server_authentication_method = 'SSL_NO_ENCRYPT';注意
サーバー側の認証方式を
ALL(すなわちALTER SYSTEM SET rpc_server_authentication_method = 'ALL';)に設定することで認証を有効にすることもできますが、これはサーバー側がクライアントの認証なしでの直接接続を許可することを意味し、重大なセキュリティリスクが伴います。そのため、本番環境ではこの方法の使用は推奨されません。
認証の無効化
クライアント側の認証方式を
NONEに設定します。ALTER SYSTEM SET rpc_client_authentication_method = 'NONE';サーバー側の認証方式を
NONEまたはALLに設定します。ALTER SYSTEM SET rpc_server_authentication_method = 'NONE'; --または ALTER SYSTEM SET rpc_server_authentication_method = 'ALL';
注意点
- 後から認証方式を変更する必要がある場合は、設定を再度変更するだけで済みます。
- 認証を有効にした後も、既存の接続には影響せず、新規に作成されるRPC接続にのみ適用されます。既に接続されているクライアントを認証するには、ノードをバッチ処理で再起動する必要があります。