トラステッド・コンテキストおよびトラステッド接続
トラステッド・コンテキストとは、データベースと外部エンティティー (アプリケーション・サーバーなど) の間の接続における信頼関係を定義するデータベース・オブジェクトのことをいいます。
- システム許可 ID: データベース接続を確立するユーザーを表します
- IP アドレス (またはドメイン・ネーム): データベース接続を確立するホストを表します
- データ・ストリーム暗号化: データベース・サーバーとデータベース・クライアントの間のデータ通信のための暗号化設定がある場合にはそれを表します
接続をプロセス間通信 (IPC) を使用するローカル・データベースに対して行う場合、トラステッド接続は確立できません。
トラステッド接続を使用すると、このトラステッド接続の起動側では、トラステッド接続の有効範囲外では使用できない追加機能を取得することができます。 追加機能は、トラステッド接続が明示的であるか暗黙的であるかによって異なります。
- その接続の現行ユーザー ID を、認証のあるなしに関係なく別のユーザー ID に切り替える
- トラステッド・コンテキストのロール継承フィーチャーにより追加の特権を取得する
トラステッド・コンテキストを使用するとどのようにセキュリティーが向上するか
3 層アプリケーション・モデルは、クライアント・アプリケーションとデータベース・サーバーの間に中間層を置くことにより、標準的な 2 層クライアントおよびサーバー・モデルを拡張します。 ここ数年、特に Web ベース・テクノロジーと Java™ 2 Enterprise Edition (J2EE) プラットフォームの出現により、高い人気を得ています。 3 層アプリケーション・モデルをサポートするソフトウェア製品の例として、 IBM® WebSphere® Application Server (WAS) があります。
3 層アプリケーション・モデルでは、クライアント・アプリケーションを実行するユーザーの認証、およびデータベース・サーバーとの相互作用の管理は、中間層が処理します。 従来の方法では、データベース・サーバーとのすべての相互作用は、データベース・サーバーに対して中間層を識別するユーザー ID と資格情報の組み合わせを使用して、その中間層により確立されたデータベース接続を介して行われます。 つまり、データベース・サーバーは、中間層のユーザー ID に関連付けられたデータベース特権を使用して、すべてのデータベース・アクセスで行う必要がある許可検査および監査を行います。これには、ユーザーの代わりに中間層により実行されるアクセスも含まれます。
- ユーザー ID の消失
企業によっては、アクセス制御の目的で、データベースにアクセスしている実際のユーザーの ID を知りたい場合があります。
- ユーザーの説明責任の減少
監査による説明責任は、データベース・セキュリティーにおける基本原則です。 ユーザーの ID が不明であると、中間層の固有の目的のために中間層により実行されるトランザクションと、ユーザーのために中間層により実行されるトランザクションを区別することが難しくなります。
- 中間層の許可 ID に特権を付与しすぎる
中間層の許可 ID には、すべてのユーザーからのすべての要求を実行するために必要なすべての特権が含まれていなければなりません。 これには、特定の情報にアクセスする必要がないユーザーがアクセス権限を取得できてしまうというセキュリティー問題があります。
- 弱いセキュリティー
前述の特権の問題に加えて、現行方式では、接続するために中間層により使用される許可 ID には、ユーザー要求によりアクセスされる可能性があるすべてのリソースへの特権を付与する必要があります。 中間層の許可 ID の暗号漏えいが発生すると、それらすべてのリソースは公開されてしまいます。
- 同じ接続を使用するユーザー間で相互に影響を及ぼす
直前のユーザーによる変更が現行ユーザーに影響を与える場合があります。
- 特定の中間層では不適当。 多くの中間層サーバーには、接続を確立するために必要なユーザー認証資格情報がありません。
- パフォーマンス上のオーバーヘッド。 新しい物理接続を作成し、データベース・サーバーでユーザーを再認証することに関連した、パフォーマンス上の明らかなオーバーヘッドがあります。
- 保守上のオーバーヘッド。 一元的なセキュリティー・セットアップ、またはシングル・サインオンを使用していない状況では、2 つのユーザー定義 (1 つは中間層上、もう 1 つはサーバー上) を持つことによる保守上のオーバーヘッドがあります。 この状況では、異なる場所にあるパスワードを変更することが必要です。
パフォーマンスの向上
- 接続の現行ユーザー ID が切り替わる時に新規接続は確立されません。
- トラステッド・コンテキスト定義が切り替え先のユーザー ID の認証を必要としない場合には、データベース・サーバーで新規ユーザーを認証することに関連したオーバーヘッドは発生しません。
トラステッド・コンテキストの作成例
CREATE TRUSTED CONTEXT CTX1
BASED UPON CONNECTION USING SYSTEM AUTHID USER2
ATTRIBUTES (ADDRESS '192.0.2.1')
DEFAULT ROLE managerRole
ENABLE
ユーザー user1 が IP アドレス 192.0.2.1からトラステッド接続を要求すると、 Db2 データベース・システムは、トラステッド接続を確立できなかったことを示す警告 (SQLSTATE 01679、SQLCODE + 20360) を戻し、そのユーザー user1 は単に非トラステッド接続を取得します。 しかし、ユーザー user2 が IP アドレス 192.0.2.1 からトラステッド接続を要求した場合には、接続属性はトラステッド・コンテキスト CTX1 により条件が満たされるため、要求は受け入れられます。 ユーザー user2 はトラステッド接続を確立したため、そのユーザーはトラステッド・コンテキストのロール managerRole に関連付けられたすべての特権および権限を取得できます。 このトラステッド接続の有効範囲外では、ユーザー user2 はこれらの特権および権限を使用できません。