IBM Support

[Db2] Db2 クライアントのデフォルト認証タイプ (SERVER_ENCRYPT) によるパフォーマンス上の考慮点

Troubleshooting


Problem

Db2 クライアントはデータベース・カタログで AUTHENTICATION オプションを明示しない場合、暗号化ライブラリーの初期化による CPU の使用や、認証タイプの交渉による追加の通信が発生し、パフォーマンスに影響を与えることがあります。

Cause

Db2 クライアントは認証オプションを明示指定しない場合、デフォルトの認証タイプとして SERVER_ENCRYPT を使用します。

Authentication considerations for remote clients
> The authentication type is not required. If it is not specified the client will try to connect using the SERVER_ENCRYPT authentication type first. 

デフォルトでは無条件に暗号化を試行するため、cryptContextRealInit などによって暗号化ライブラリーの初期化が行われ、セキュリティ・メカニズムの交渉で SECMEC=SERVER_ENCRYPT (9) を指定します。ここでたとえば Db2 サーバー側の認証タイプが SERVER (デフォルト) の場合、SERVER_ENCRYPT は SECMEC_MISMATCH で拒否され、SECMEC=SERVER (3) で再認証が行われます。
デフォルトの認証設定 (クライアント:SERVER_ENCRYPT、サーバー:SERVER) における認証例は以下の通りです。
TIME         DRDA_FLOW                       FUNCTION
------------ ------------------------------- ----------------------------------------------------------------
15.640842000                                 sqljrDrdaArConnect entry
15.641530000                                 | | | | | cryptContextRealInit entry
15.813805000                                 | | | | | cryptContextRealInit exit
15.813946000                                 | | sqljrDrdaArAuthenticate entry
15.816658000    EXCSAT/ACCSEC SECMEC(9) ->   | | | sqljcSend entry        
15.816701000                                 | | | sqljcSend exit 
15.816702000 <- EXCSATRD/ACCSECRD SECMEC(3)  | | | sqljcReceive entry     
15.819114000                                 | | | sqljcReceive exit
15.819195000                                 | | sqljrDrdaArAuthenticate exit [rc = SQLJR_SECMEC_MISMATCH]
15.819260000                                 | | sqljrDrdaArAuthenticate entry
15.819386000    ACCSEC SECMEC(3)/ACCRDB ->   | | | sqljcSend entry        
15.819432000                                 | | | sqljcSend exit
15.819433000 <- ACCSECRD/ACCRDBRM            | | | sqljcReceive entry     
16.272792000                                 | | | sqljcReceive exit
16.273686000                                 | | sqljrDrdaArAuthenticate exit
16.274679000                                 sqljrDrdaArConnect exit

Environment

  • すべてのバージョンおよびフィックスパックの非 Java クライアント
  • Db2 11.5.9 以降の Java クライアント (Jcc 4.33 以降)
    Db2 11.5.9 で変更された機能
    > IBM Data Server Driver for JDBC and SQLJ securityMechanism 構成キーワードおよびプロパティーの新しいデフォルト設定

Resolving The Problem

サーバーの認証タイプが SERVER の場合、クライアントの認証タイプを明示的に SERVER (3) と設定する運用を検討してください。
例1:Data Server Client のデータベース・カタログで認証タイプを明示指定。
  1. Data Server Client にインスタンス・オーナーとしてログインします。
  2. 既存のデータベース・カタログを確認後にアンカタログし、認証タイプを明示して再カタログします。
    $ db2 list db direstory
    Database 1 entry:
     Database alias                       = TESTDB
     Database name                        = TESTDB
     Node name                            = DB2SRV
    
    $ db2 uncatalog db TESTDB
    $ db2 catalog db TESTDB at node DB2SRV authentication SERVER
例2:DriverManager インターフェースを使用する JDBC アプリケーションで、securityMechanism を明示指定
  1. 接続 URL に securityMechanism=3 を指定します。
    jdbc:db2:<host>:<port>/<db_name>:securityMechanism=3;
運用上の考慮点
関連情報
 
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート

Document Location

Worldwide

[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m500000008PmmAAE","label":"Security and Plug-Ins-\u003EAuthentication"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]

Document Information

Modified date:
18 December 2023

UID

ibm17095459