機能概要
この機能は、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接続にのみ適用されます。既に接続されているクライアントを認証するには、ノードをバッチで再起動する必要があります。