機能の概要
この機能は、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フォルダを作成し、そのフォルダに証明書と秘密鍵を配置する必要があります。
- 必要な証明書ファイルが準備されていない状態で認証を有効にすると、認証に失敗し、サービスが利用できなくなる可能性があるためご注意ください。
コマンドの実行
OceanBaseデータベースにsysテナントとしてログインし、以下のコマンドを順番に実行します。
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接続にのみ適用されます。既に接続されているクライアントを認証するには、ノードをバッチで再起動する必要があります。