IBM Data Server Driver for JDBC and SQLJ 使用時のセキュリティー

IBM® Data Server Driver for JDBC and SQLJ を使用する際には、 securityMechanism、 ConnectionDataSource プロパティ、または db2.jcc.securityMechanism グローバル構成プロパティの値を指定して、セキュリティメカニズムを選択します。

重要: 認証タイプ「DATA_ENCRYPT」は非推奨であり、将来のリリースで削除される可能性があります。 クライアントと Db2 on Linux®、UNIX、および Windows システムデータベース間で転送中のデータを暗号化するには、 Db2 on Linux、UNIX、および Windows システムデータベース システムの Secure Sockets Layer (SSL) サポートを使用することをお勧めします。
以下の方法のいずれかを使用して securityMechanism プロパティーを設定できます。
  • DriverManager インターフェースを使用している場合は、 java.util.Properties パラメータを含む getConnection メソッドのフォームを呼び出す前に、 java.util.Properties オブジェクトに securityMechanism を設定してください。
  • DataSource インターフェースを使用しており、独自の DataSource オブジェクトを作成およびデプロイしている場合、DataSource オブジェクトを作成した後で DataSource.setSecurityMechanism メソッドを呼び出します。

DB2Connection.getDB2SecurityMechanism メソッドを呼び出すことにより、接続に有効なセキュリティー・メカニズムを判別できます。

以下の表は、サポートされているセキュリティメカニズムと、 IBM Data Server Driver for JDBC and SQLJ サポートするセキュリティメカニズムと、それらのセキュリティメカニズムをサポートするデータソースを

表 1. データサーバーのセキュリティメカニズムのサポート IBM Data Server Driver for JDBC and SQLJ セキュリティメカニズム
セキュリティー・メカニズム Linux、UNIX、Windowsシステム上の Db2 でサポートされています 支援を受けている Db2 for z/OS® 支援を受けている IBM Informix® Db2 for IBM i でサポート
ユーザー ID およびパスワード はい はい はい はい
ユーザー ID のみ はい はい はい はい
ユーザーIDと暗号化されたパスワード 1 はい はい はい はい4
暗号化されたユーザー ID 1 はい2 はい いいえ いいえ
暗号化されたユーザーIDと暗号化されたパスワード 1 はい はい 第5 はい4
暗号化されたユーザーIDおよび暗号化されたセキュリティ上重要なデータ1 いいえ はい いいえ いいえ
暗号化されたユーザーID、暗号化されたパスワード、暗号化されたセキュリティ上重要なデータ1 はい はい いいえ いいえ
Kerberos3 はい はい いいえ はい
プラグイン3 はい いいえ いいえ いいえ
証明書認証 3 いいえ はい いいえ いいえ
トークン認証 はい いいえ いいえ いいえ
注:
  1. これらのセキュリティメカニズムは、DRDA暗号化を使用しています。 DRDA 暗号化は、セキュアでないネットワーク上 (インターネットなど) でパスワードやデータの機密性と保全性を提供することを意図してはいません。 DRDA 暗号化では匿名鍵交換の Diffie-Hellman を使用します。これにはサーバーとクライアントの認証が備えられていません。 DRDA 暗号化は、中間者攻撃に対して脆弱です。
  2. Linux、UNIX、および Windows システム上の Db2 への接続の場合、暗号化されたユーザー ID のセキュリティー メカニズムは、信頼できる接続でのユーザーの切り替えに対してのみサポートされます。
  3. IBM Data Server Driver for JDBC and SQLJ タイプ4接続のみ利用可能。
  4. データ ソースのバージョンは、 Db2 for IBM i V6R1 以降である必要があります。
  5. 接続については、 IBM Informix、暗号化されたユーザーIDおよび暗号化されたパスワードのセキュリティはサポートされていません。 代わりにユーザーIDとパスワードのセキュリティを使用してください。

次の表は、 IBM Data Server Driver for JDBC and SQLJ がサポートするセキュリティー・メカニズムと、 securityMechanism 各セキュリティ メカニズムを指定するためのプロパティ。

重要:
バージョン 4.34 から、 IBM Data Server Driver for JDBC and SQLJ、タイプ4の接続性については、 Db2 for z/OS または Linux 上の Db2、UNIX、Windowsシステム
  • セキュリティメカニズムを ENCRYPTED_USER_AND_PASSWORD_SECURITY (9)に明示的に設定し、代替のセキュリティメカニズムによる再試行プロセスが定義されていない場合、ドライバは CLEAR_TEXT_PASSWORD_SECURITY (3)を使用して接続を再試行しません。 ドライバーは Reason: Security mechanism not supported で例外をスローします。
  • データサーバーが稼働している z/OS システム上でICSFまたは暗号プロセッサが有効になっていない場合、 Db2 for z/OS データサーバーが実行されている Reason: Local security service non-retryable error システム上で、ICSFまたは暗号プロセッサが有効になっていない場合、ドライバは とともにエラーを返します。 ドライバーは、 CLEAR_TEXT_PASSWORD_SECURITY (3) を使用して新しいソケットを開くことで、接続を再試行します。
  • Java ランタイム環境または Java SDK で FIPS 140-3 暗号化セキュリティが有効になっており、データサーバーへの接続にデフォルトで ENCRYPTED_USER_AND_PASSWORD_SECURITY (9) が使用されている場合、ドライバーは Caused by: java.lang.ExceptionInInitializerError の例外をスローします。 ドライバーは CLEAR_TEXT_PASSWORD_SECURITY (3)で接続を再試行します。
  • Javaランタイム環境またはJava SDKのバージョンが8以下の場合、ポリシーファイルが期限切れとなり、データサーバーへの接続に ENCRYPTED_USER_AND_PASSWORD_SECURITY (9)がデフォルトで使用されると、ドライバーが java.security.InvalidKeyException をスローします。 ドライバーは CLEAR_TEXT_PASSWORD_SECURITY (3)で接続を再試行します。
  • Db2 for z/OS または Db2 on Linux、UNIX、Windowsシステムデータサーバーへの接続でSSLが使用される場合、接続では CLEAR_TEXT_PASSWORD_SECURITY (3)デフォルト。 セキュリティメカニズムを明示的に別の値に設定した場合、ドライバは明示的に設定された値を使用します。
4.33 バージョンから IBM Data Server Driver for JDBC and SQLJ
  • デフォルトのセキュリティー・メカニズムは ENCRYPTED_USER_AND_PASSWORD_SECURITYです。 データサーバーが ENCRYPTED_USER_AND_PASSWORD_SECURITY をサポートしていないが、 CLEAR_TEXT_PASSWORD_SECURITY をサポートしている場合、ドライバーはセキュリティメカニズムを CLEAR_TEXT_PASSWORD_SECURITY に変更し、データサーバーへの接続を試みます。
    CLEAR_TEXT_PASSWORD_SECURITY を使用してドライバーが接続を再試行すると、パフォーマンスが低下する可能性があります。 パフォーマンスへの影響を最小限に抑えるには、以下のいずれかの操作を行ってください
    • クライアント側でセキュリティメカニズムを CLEAR_TEXT_PASSWORD_SECURITY に明示的に設定します。
    • ENCRYPTED_USER_AND_PASSWORD_SECURITYをサポートするようにデータサーバーの設定を変更します。

    CLEAR_TEXT_PASSWORD_SECURITYENCRYPTED_USER_AND_PASSWORD_SECURITY 以外のリクエスト側とデータサーバー側でセキュリティメカニズムのサポートに不一致がある場合、エラーが発生します。

  • サブシステムまたはデータ共有グループへの接続は、 Db2 for z/OSENCRYPTED_USER_AND_PASSWORD_SECURITY (9)のデフォルトのセキュリティメカニズムを使用するサブシステムまたはデータ共有グループへの接続は、 z/OS 統合暗号サービス機能(ICSF)が、各サブシステムまたはデータ共有メンバーがインストールされている z/OS システム上で有効になっている場合にのみ成功します。 ICSFは、ユーザーIDとパスワードの復号化に必要です。 ICSFがインストールされていない場合は、セキュリティメカニズムを CLEAR_TEXT_PASSWORD_SECURITY (3)に設定する必要があります。

バージョン 4.33 より前の IBM Data Server Driver for JDBC and SQLJ、デフォルトのセキュリティメカニズムは CLEAR_TEXT_PASSWORD_SECURITY (3)です。 データサーバーが CLEAR_TEXT_PASSWORD_SECURITY (3) をサポートせず、 ENCRYPTED_USER_AND_PASSWORD_SECURITY (9) をサポートしている場合、ドライバーはセキュリティメカニズムを ENCRYPTED_USER_AND_PASSWORD_SECURITY (9) に変更し、データサーバーへの接続を試みます。 リクエスト側とデータサーバー側でセキュリティメカニズムのサポートにその他の不一致がある場合、エラーが発生します。

表 2. サポートされているセキュリティメカニズム IBM Data Server Driver for JDBC and SQLJ
セキュリティー・メカニズム securityMechanismプロパティー値
ユーザー ID およびパスワード DB2BaseDataSource.CLEAR_TEXT_PASSWORD_SECURITY (3)
ユーザー ID のみ DB2BaseDataSource.USER_ONLY_SECURITY (4)
ユーザーIDと暗号化されたパスワード 1 DB2BaseDataSource.ENCRYPTED_PASSWORD_SECURITY (7)
暗号化されたユーザー ID 1 DB2BaseDataSource.ENCRYPTED_USER_ONLY_SECURITY (16)
暗号化されたユーザーIDと暗号化されたパスワード1, 2 DB2BaseDataSource.ENCRYPTED_USER_AND_PASSWORD_SECURITY (9)
暗号化されたユーザーIDおよび暗号化されたセキュリティ上重要なデータ1 DB2BaseDataSource.ENCRYPTED_USER_AND_DATA_SECURITY (12)
暗号化されたユーザーID、暗号化されたパスワード、暗号化されたセキュリティ上重要なデータ1 DB2BaseDataSource.ENCRYPTED_USER_PASSWORD_AND_DATA_SECURITY (13)
Kerberos DB2BaseDataSource.KERBEROS_SECURITY (11)
プラグイン DB2BaseDataSource.PLUGIN_SECURITY (15)
証明書認証 DB2BaseDataSource.TLS_CLIENT_CERTIFICATE_SECURITY (18)
トークン認証 DB2BaseDataSource.TOKEN_SECURITY (19)
注:
  1. DRDA 暗号化は、セキュアでないネットワーク上 (インターネットなど) でパスワードやデータの機密性と保全性を提供することを意図してはいません。 DRDA 暗号化では匿名鍵交換の Diffie-Hellman を使用します。これにはサーバーとクライアントの認証が備えられていません。 DRDA 暗号化は、中間者攻撃に対して脆弱です。
  2. データサーバーへの接続には、暗号化されたユーザーIDおよび暗号化されたパスワードのセキュリティはサポートされていません。 IBM Informix データサーバーへの接続には対応していません。 代わりにユーザーIDとパスワードのセキュリティ(DB2BaseDataSource.CLEAR_TEXT_PASSWORD_SECURITY (3))を使用してください。