DB2 とのトラステッド接続
トラステッド接続を使用すると、アプリケーション・サーバーは、DB2® トラステッド・コンテキスト・オブジェクトを使用して、接続を開くためのクレデンシャルが DB2 サーバーによって信頼されているユーザーとの接続を確立することができます。 トラステッド・コンテキストを確立することによって、このユーザーは、再認証を行うことなく、DB2 サーバーでの他のユーザー ID の 表明に関して信頼されます。 また、単一ユーザーにすべての特権を割り当てる必要がなくなり、DB2 データベースのセキュリティーも強化されます。トラステッド接続を実装すると、クライアントの ID が伝搬し、接続プールの利点を生かして、接続を閉じて別の ID で再開する際のパフォーマンス負荷を削減することができます。
新規接続を確立するのにかかる膨大なコストを削減するために、接続マネージャーは接続プールを保持します。接続プール内では、元々接続を開くときに使用されたクレデンシャルによって各接続が追跡されます。アプリケーションで接続が必要になると、接続マネージャーはクレデンシャル・オブジェクトを使用して、接続プール内の空き接続にマッチングします。使用可能な空き接続がない場合は、接続の最大数に達していなければ、接続プール・マネージャーがそのクレデンシャル・オブジェクトを使用して新規接続を開きます。 この接続マッピングは、アプリケーション・サーバーが使用するデフォルトの接続マッピングです。通常は RunAs ID と異なるサブジェクト内のクレデンシャル・オブジェクトを使用して接続が開かれるため、この接続マッピングは多対 1 のクレデンシャル・マッピングと呼ばれます。このシンプルなマッピングでは単純接続プールがサポートされていますが、呼び出し元 ID はデータベース・サーバーに伝搬されません。
Java™ Authentication and Authorization Service (JAAS) ログイン・モジュールをプラグインすると、呼び出し元 ID をデータベース・サーバーに伝搬できます。この方式を使用して、アプリケーション・サーバー・ユーザーのクレデンシャルを、データベース・サーバーのセキュリティー・レルムに適したユーザー・クレデンシャルにマッピングします。 この方法では呼び出し元 ID が維持されますが、接続プールは使用されません。
デフォルト・マッピングまたは JAAS マッピングの代わりに、トラステッド接続を使用してデータ・ソースに接続します。トラステッド接続はクライアント ID の伝搬をサポートしており、また接続プールを使用することによって、接続を閉じて別の ID で再開する場合のパフォーマンス負荷も削減されます。 トラステッド接続は、DB2 トラステッド・コンテキスト・オブジェクトを使用します。
![[z/OS]](../images/ngzos.gif)
トラステッド接続を使用すると、DB2 トラステッド・コンテキストの独自のセキュア実装の追加をサポートするために必要なプラグイン・ポイントが得られます。トラステッド接続は、接続の確立に使用された ID を、バックエンド・サーバー・サービスにアクセスする ID から分離します。接続を開くためのクレデンシャルが DB2 サーバーによって 信頼されているユーザーが接続を確立します。このユーザーは、他のユーザーの ID の表明についても信頼されます。 また、この表明によって単一ユーザーにすべての権限を割り当てる必要がなくなり、データベース・セキュリティーの強化にも役立ちます。
アプリケーションがデータベースへの接続を要求すると、接続マネージャーはアイドル状態のトラステッド接続を検索して、バックエンド・サーバーにユーザー ID を表明します。バックエンド・サーバーで実行される操作はすべて、表明されたユーザー ID から行われます。バックエンド・サーバーが、アプリケーション・サーバーのユーザー・リポジトリーとは異なるユーザー・リポジトリーを使用している場合にも、ID マッピングの使用が必要になる場合もあります。
- このリソース・サブジェクトが表すリソース・プリンシパル・オブジェクト
- 秘密クレデンシャル・セット内の PasswordCredential オブジェクト
- プリンシパル・セット内の IdentityPrincipal オブジェクト