ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Server リソース アダプタ プログラマーズ ガイド
11g リリース 1 (10.3.1)
B55541-01
  目次
目次

戻る
戻る
 
次へ
次へ
 

8 セキュリティ

リソース アダプタは外部システムとの接続を確立する必要があるため、認証および接続の確立に必要なその他の情報をコンフィグレーションする必要があります。以下の節では、発信通信における WebLogic Server リソース アダプタのセキュリティについて説明します。

WebLogic セキュリティの詳細については、『Oracle Fusion Middleware Oracle WebLogic Server Security の紹介』および『Oracle Fusion Middleware Oracle WebLogic Server ロールおよびポリシーによるリソースの保護』を参照してください。

コンテナ管理およびアプリケーション管理によるサインオン

リソース アダプタはエンタープライズ情報システム (EIS) への発信接続を行うときに、有効なセキュリティ資格を使用してサインオンする必要があります。J2CA 1.5 仕様 (http://java.sun.com/j2ee/connector/) に従って、WebLogic Server では、発信接続に関するコンテナ管理およびアプリケーション管理によるサインオンをサポートしています。実行時に Weblogic Server は、呼び出し側クライアント コンポーネントのデプロイメント記述子、またはリソース アダプタ デプロイメント記述子の res-auth 要素で指定された情報に基づいて、選択されたサインオン メカニズムを判断します。リソース アダプタのデプロイメント記述子で指定されたサインオン メカニズムは、呼び出し側クライアント コンポーネントのデプロイメント記述子で指定されたメカニズムに優先します。コンテナ管理によるサインオンを使用する場合でも、クライアント コンポーネントで明示的に指定されたセキュリティ情報があれば、接続を取得する呼び出しの際に提示されます。

WebLogic Server J2EE 1.5 コネクタ アーキテクチャの実装で、クライアント コンポーネントが要求しているサインオン メカニズムを判断できない場合、コネクタ コンテナはコンテナ管理によるサインオンを試行します。

アプリケーション管理によるサインオン

アプリケーション管理によるサインオンの場合、クライアント コンポーネントは、EIS に接続するための呼び出しを実行するときに、必要なセキュリティ資格 (通常はユーザ名とパスワード) を提示します。この場合、アプリケーション サーバは、接続要求でこの情報を渡す以外にセキュリティ関連の処理を行いません。

コンテナ管理によるサインオン

WebLogic Server と EIS はそれぞれ独立したセキュリティ レルムを保持しています。コンテナ管理によるサインオンの目的は、ユーザに WebLogic Server へのサインオンを許可することと、EIS に別にサインオンしなくても、リソース アダプタを介して EIS にアクセスするアプリケーションを使用できるようにすることです。Weblogic Server のコンテナ管理によるサインオンでは、資格マッピングを使用します。資格マッピングとは、WebLogic セキュリティ プリンシパル (認証を受ける個々のユーザまたはクライアント アプリケーション) の資格 (ユーザ名とパスワードのペアまたはセキュリティ トークン) を、EIS へのアクセスに必要な、対応する資格にマップしたものです。デプロイ済みのリソース アダプタに対して、適切なセキュリティ プリンシパルの資格マッピングをコンフィグレーションできます。関連情報については、「資格マッピング」を参照してください。

パスワード資格マッピング

J2CA 1.5 仕様 (http://java.sun.com/j2ee/connector/) では、javax.security.auth.Subject で資格を格納することを求めています。資格は ManagedConnectionFactory オブジェクトの createManagedConnection() または matchManagedConnection() メソッドに渡されます。資格マッピング情報は WebLogic Server の組み込み LDAP ストレージに格納されます。資格マッピングは発信リソース アダプタに固有のものです。

認証メカニズム

WebLogic Server ユーザは、保護されている WebLogic Server リソースへのアクセスを要求する場合、必ず認証を受けなければなりません。このため、各ユーザは資格 (ユーザ名/パスワードの組み合わせまたはデジタル証明書) を WebLogic Server に提示する必要があります。

パスワード認証は、WebLogic Server がデフォルトでサポートしている唯一の認証メカニズムです。パスワード認証は、ユーザ ID とパスワードから成ります。コンフィグレーション済みのマッピングに基づいて、ユーザがリソース アダプタへの接続を要求すると、そのユーザの適切な資格がリソース アダプタに提供されます。

SSL (または HTTPS) プロトコルを使用すると、パスワード認証にさらに高度なレベルのセキュリティを提供できます。SSL プロトコルは、クライアントと WebLogic Server との間で転送されるデータを暗号化するので、ユーザ ID とパスワードはクリア テキストでは転送されません。SSL を使用すると、WebLogic Server は、ユーザの ID とパスワードの機密性を保持しながらユーザを認証することができます。詳細については、『Oracle Fusion Middleware Oracle WebLogic Server のセキュリティ』の「SSL のコンフィグレーション」を参照してください。

資格マッピング

資格マッピングは発信リソース アダプタに固有のものです。資格マッピングをコンフィグレーションするには、WebLogic Server Administration Console を使用します。資格マッピングをコンフィグレーションする前に、リソース アダプタを正常にデプロイしておく必要があります。


注意 :

リソース アダプタを最初にデプロイしたとき、資格マッピングはコンフィグレーションされていません。資格マッピングがコンフィグレーションされるまで、初期接続は失敗します。

このため、リソース アダプタが資格を要求し、デプロイ時に接続を作成するようコンフィグレーションされている (つまり weblogic-ra.xml 内の initial-capacity 要素が 0 より大きな値に設定されている) 場合、初期接続が失敗することがあります。初期接続の失敗を回避するには、このリソース アダプタの初期インストールおよびデプロイメント時には、接続プールの initial-capacity 要素を 0 に設定することをお勧めします。リソース アダプタが初回にデプロイされるときに、initial-capacity 要素の値が変更できます。詳細については、「initial-capacity : ManagedConnection の初期数の設定」を参照してください。

資格マッピングは、個々の発信接続プールに対して、またはリソース アダプタのすべての接続プールに対してコンフィグレーションできます。リソース アダプタが接続要求を受信すると、WebLogic Server は、特定の接続プールに対してコンフィグレーションされている資格マッピングを検索してから、リソース アダプタに対してグローバルにコンフィグレーションされているマッピングをチェックします。

以下の状況を参照してください。

非初期接続 : アプリケーションの要求に応じて、アダプタからの ManagedConnection が必要

WebLogic Server は、アプリケーションの要求に応じて、アダプタからの ManagedConnection が必要です。たとえば、アプリケーションはプールからの接続を必要となりますが、ManagedConnection がプールにない場合、WebLogic Server は、アダプタに新しい ManagedConnection を作成するように要求する必要があります。


注意 :

コンテナ管理によるサインオンにのみ適用されます。

サーバは以下の順序でマッピングを検索します。

  1. 接続ファクトリ レベルの特定のマッピング (または、未認証の場合、匿名マッピング)。

  2. グローバル レベルの特定のマッピング (または、未認証の場合、匿名マッピング)。

  3. 接続ファクトリ レベルのデフォルトのマッピング。

  4. グローバル レベルのデフォルトのマッピング。

たとえば、コード リスト 8-1 に、次のような 2 つの接続プールと資格マッピングがあるとします。

コード リスト 8-1 資格マッピングの例

poolA
   system user name: admin
   system password: adminpw
   default user name: guest1
   default password: guest1pw1

poolB
   wlsjoe user name: harry
   wlsjoe password: harrypw

global
   system user name: sysman
   system password: sysmanpw
   wlsjoe user name: scott
   wlsjoe password: tiger
   default user name: viewer
   default password: viewerpw
   anonymous user name: foo
   anonymous password: bar

コード リスト 8-1 の例の場合に、あるアプリケーションが system として認証を受け、poolA に対して接続要求をします。poolA では system に対する特定の資格マッピングが定義されているので、リソース アダプタはこのマッピング (admin/adminpw) を使用します。

アプリケーションが system として、同じ要求を poolB に対して行うと、system に対する特定の資格マッピングがありません。そのため、サーバはグローバル レベルで資格マッピングを検索して、マッピング (sysman/sysmanpw) を見つけます。

別のアプリケーションが wlsjoe として認証を受け、poolA に対して要求を行った場合、poolA には wlsjoe に対して定義されたマッピングがないことがわかります。そこで、グローバル レベルで検索して、wlsjoe に対するマッピング (scott/tiger) を見つけます。poolB に対して要求を行った場合、このアプリケーションは poolB に対して定義されたマッピング (harry/harrypw) を見つけます。

アプリケーションが user1 として認証を受け、poolA に対して要求を行った場合、poolA には user1 に対して定義されたマッピングがないことがわかります。次のシーケンスが発生します。

  1. アプリケーションはグローバル レベルで検索します。グローバル レベルでも user1 に対するマッピングはありません。

  2. アプリケーションは poolA でデフォルト マッピングがないか検索し、デフォルト マッピングを見つけます。

アプリケーションは WLS に認証されていなくても poolA に対して要求を行った場合、poolA には匿名ユーザに対して定義されたマッピングがないことがわかります。グローバル レベルで検索して、匿名ユーザ (foo/bar) に対するマッピングを見つけます。

初期接続 : アプリケーションの要求がない場合、アダプタからの ManagedConnection が必要

WebLogic Server は、アプリケーションの要求がない場合のアダプタからの ManagedConnection が必要です。これは、WebLogic Server は、デプロイメント時に初期接続を作成する (つまり weblogic-ra.xml 内の initial-capacity 要素が 0 より大きな値に設定されている)、または WebLogic は特に XA 回復のために ManagedConnection を取得する必要がある場合にできます。


注意 :

コンテナ管理によるサインオンおよびアプリケーション管理によるサインオンに適用されます。

サーバは以下の順序でマッピングを検索します。

  1. 接続ファクトリ レベルの初期マッピング。

  2. グローバル レベルの初期マッピング。

  3. 接続ファクトリ レベルのデフォルトのマッピング。

  4. グローバル レベルのデフォルトのマッピング。

初期マッピングとデフォルト マッピングのどちらも定義していない場合、WebLogic Server は、ManagedConnection を作成するためにアダプタを呼び出す時に、Subject として null を使用します。

たとえば、次のような 2 つの接続プールと資格マッピングがあるとします。

コード リスト 8-2 資格マッピングの例

poolA
   initial user name: admin
   initial password: adminpw

poolB
   wlsjoe user name: harry
   wlsjoe password: harrypw

global
   system user name: sysman
   system password: sysmanpw

コード リスト 8-2 で示したように、WebLogic Server は、poolA の XA 回復し、poolA に対して接続リクエストをします。poolA では system に対する特定の資格マッピングが定義されているので、リソース アダプタはこのマッピング (admin/adminpw) を使用します。

WebLogic Server は poolB に対しても同じリクエストを行うと、poolB に対応する初期の資格マッピングはありません。WebLogic Server はグローバル レベルで初期の資格マッピングを検索して、マッピング (sysman/sysmanpw) を見つけます。

特殊なユーザ

リソース アダプタで使用できる 3 つの特殊なユーザが提供されます。

  • 初期ユーザ (初期接続を作成するユーザ) - このユーザに対してマッピングを定義すると、指定した資格は以下の状態で作成された初期接続のために使用します。

    • このリソース アダプタ用の接続プールの起動

    • 接続プール用の XA トランザクションの回復

    プールの InitialCapacity パラメータは、初期接続の数を指定します。このユーザに対して、マッピングを定義しない場合は、デフォルトのマッピング (提供している場合) が使用されます。それ以外の場合、初期接続に対して資格は提供されません。

  • 匿名ユーザ (認証されていない WLS ユーザ) - このユーザに対してマッピングを定義すると、リソース アダプタ上の接続要求のためにユーザが認証していない場合、特別な資格が使用されます。

  • デフォルトのユーザ - このユーザに対してマッピングを定義すると、以下の状態で指定した資格を使用します。

    • その他のマッピングは現在のユーザに対して適用されません。

    • 認証済みユーザがない場合、匿名のマッピングは提供されていません。

コンソールを使用した資格マッピングの作成

WebLogic Server Administration Console を使用して資格マップを作成できます。WebLogic 資格マッピング プロバイダを使用する場合、資格マップは組み込み LDAP サーバに格納されます。資格マッピングの作成方法については、『Oracle Fusion Middleware Oracle WebLogic Server Administration Console ヘルプ』の「資格マッピングの作成」を参照してください。

セキュリティ ポリシーの処理

セキュリティ ポリシーは、権限のないアクセスから WebLogic リソースを保護するための、WebLogic リソースと 1 つまたは複数のユーザ、グループ、セキュリティ ロールとの関連付けです。J2CA 1.5 仕様 (http://java.sun.com/j2ee/connector/) では、アプリケーション サーバで実行されるリソース アダプタのデフォルト セキュリティ ポリシーを定義しています。リソース アダプタが、デフォルトをオーバーライドする独自のセキュリティ ポリシーを提供する方法も定義されています。WebLogic Server に同梱されている weblogic.policy ファイルでは、J2CA 1.5 仕様に従ってデフォルト セキュリティ ポリシーを規定しています。

リソース アダプタで固有のセキュリティ ポリシーを定義していない場合、WebLogic Server は、weblogic.policy ファイルで指定されたデフォルト セキュリティ ポリシーを使用して、リソース アダプタの実行時環境を確立します。weblogic.policy ファイルは J2CA 1.5 仕様で規定されたデフォルトに準拠しています。リソース アダプタで固有のセキュリティ ポリシーが定義されている場合、Weblogic Server は、リソース アダプタのデフォルト セキュリティ ポリシーとリソース アダプタに定義された固有のポリシーを併用して、リソース アダプタの実行時環境を確立します。リソース アダプタの固有のセキュリティ ポリシーを定義するには、ra.xml デプロイメント記述子ファイルの security-permission-spec 要素を使用します。

セキュリティ ポリシーの処理の要件については、J2CA 1.5 仕様の「実行時環境」のセクション「Security Permissions」を参照してください。セキュリティ ポリシーと WebLogic セキュリティ フレームワークの詳細については、『ロールおよびポリシーによる WebLogic リソースの保護』の「セキュリティ ポリシー」を参照してください。

リソース アダプタのセキュリティ ID のコンフィグレーション

この節では、weblogic-ra.xml デプロイメント記述子で WebLogic Server リソース アダプタのさまざまなセキュリティ ID をコンフィグレーションする方法について説明します。セキュリティ ID によって、リソース アダプタの特定の機能を実行できるセキュリティ プリンシパルが決まります。WebLogic リソース アダプタでは、1 つのセキュリティ ID ですべての機能を実行することも、機能の個々のクラスごとに別々の ID を使用することもできます。次の 4 種類のセキュリティ ID を weblogic-ra.xml デプロイメント記述子に定義できます。

コード リスト 8-3 は、weblogic-ra.xml デプロイメント記述子の抜粋です。さまざまなリソース アダプタのタスクを実行するためにこれらの 4 つのセキュリティ ID をすべてコンフィグレーションする方法を示しています。

コード リスト 8-3 リソース アダプタのすべてのセキュリティ ID のコンフィグレーション

<weblogic-connector xmlns="http://xmlns.oracle.com/weblogic/weblogic-connector">
   <jndi-name>900blackbox-notx</jndi-name> 
   <security>
      <default-principal-name>
         <principal-name>system</principal-name>
      </default-principal-name>
      <run-as-principal-name>
         <principal-name>raruser</principal-name>
      </run-as-principal-name>
      <run-work-as-principal-name>
         <principal-name>workuser</principal-name>
      </run-work-as-principal-name> 
      <manage-as-principal-name>
         <principal-name>raruser</principal-name>
      </manage-as-principal-name>
   </security> 
</weblogic-connector>

コード リスト 8-4 は、<default-principal-name> 要素を使用して、リソース アダプタのすべてのタスクを実行する 1 つのデフォルト プリンシパルのセキュリティ ID をコンフィグレーションする方法を示しています。

コード リスト 8-4 リソース アダプタの 1 つのデフォルト プリンシパル ID のコンフィグレーション

<weblogic-connector xmlns="http://xmlns.oracle.com/weblogic/weblogic-connector"> 
   <jndi-name>900blackbox-notx</jndi-name> 
   <security>
      <default-principal-name>
         <principal-name>system</principal-name>
      </default-principal-name>
   </security> 
</weblogic-connector>

セキュリティ ID のプロパティの設定の詳細については、「security」を参照してください。

default-principal-name : デフォルト ID

default-principal-name 要素を使用して、リソース アダプタのすべての目的に使用できる 1 つのセキュリティ ID を定義できます。run-as-principal-namemanage-as-principal-name、および run-work-as-principal-name に値が指定されていない場合、default-principal-name に設定した値がデフォルトになります。

default-principal-name の値は、system などの定義済みの WebLogic Server ユーザ名を設定することも、匿名の ID を使用するように設定することもできます (匿名 ID の場合は、セキュリティ ID がないのと同じことになります)。

たとえば、次のコード リスト 8-6 で示すように、デフォルトの system ID を使用して、WebLogic Server からリソース アダプタへのすべての呼び出しを行い、リソース アダプタのすべての管理タスクを行う、1 つのセキュリティ ID を作成することができます。

コード リスト 8-5 定義済みの WebLogic Server 名の使用

<security>
   <default-principal-name>
      <principal-name>system</principal-name>
   </default-principal-name>
</security>

次のように、default-principal-name 要素を anonymous に設定できます。

コード リスト 8-6 匿名 ID の設定

<security>
   <default-principal-name>
      <use-anonymous-identity>true</use-anonymous-identity>
   </default-principal-name>
</security>

manage-as-principal-name : 管理タスク実行用の ID

manage-as-principal-name 要素を使用して、起動、停止、テスト、縮小、トランザクション管理などの、リソース アダプタのさまざまな管理タスクの実行に使用される管理 ID を定義できます。

default-principal-name と同様に、manage-as-principal-name の値は、system などの定義済みの WebLogic Server ユーザ名を設定することも、匿名の ID を使用するように設定することもできます (匿名 ID の場合は、セキュリティ ID がないのと同じことになります)。manage-as-principal-name 要素の値を設定しない場合、default-principal-name で設定された値がデフォルトになります。default-principal-name に値が設定されていない場合、匿名 ID がデフォルトになります。

コード リスト 8-7 は、リソース アダプタが、WebLogic Server で定義されたユーザ名 system を使用して管理呼び出しを実行するようにコンフィグレーションする方法を示しています。

コード リスト 8-7 定義済みの WebLogic Server 名の使用

<security>
   <manage-as-principal-name>
      <principal-name>system</principal-name>
   </manage-as-principal-name>
</security>

コード リスト 8-8 は、リソース アダプタが匿名の ID を使用して管理呼び出しを実行するようにコンフィグレーションする方法を示しています。

コード リスト 8-8 匿名 ID の設定

<security>
   <manage-as-principal-name>
      <use-anonymous-identity>true</use-anonymous-identity>
   </manage-as-principal-name>
</security>

run-as-principal-name : コネクタ コンテナからリソース アダプタへの接続呼び出しに使用される ID

run-as-principal-name 要素では、接続要求時にコネクタ コンテナからリソース アダプタ コードへのすべての呼び出しで使用されるプリンシパル名を定義できます。このプリンシパル名は、たとえば、ManagedConnectionFactory などのリソース アダプタ オブジェクトがインスタンス化されるときに使用されます。つまり、WebLogic Server コネクタ コンテナがリソース アダプタに呼び出しを行うときに、run-as-principal-name 要素で定義された ID が使用されます。この呼び出しには、着信または発信の要求や設定に含まれる呼び出しや、着信または発信リソース アダプタの初期化に含まれる呼び出し (ResourceAdapter.start() など) があります。

run-as-principal-name 要素の値は、次の 3 通りのいずれかで設定できます。

  • 定義済みの WebLogic Server 名を設定する

  • 匿名の ID を使用する

  • 呼び出し側コードのセキュリティ ID を使用する

run-as-principal-name 要素の値が定義されていない場合は、default-principal-name 要素の値がデフォルトになります。default-principal-name 要素が定義されていない場合は、要求の呼び出し側の ID がデフォルトになります。

run-work-as-principal-name : リソース アダプタの管理タスクを実行するための ID

着信リソース アダプタの場合は、Work インスタンスを使用して着信要求を実行することをお勧めします。リソース アダプタによって起動される Work インスタンスのセキュリティ ID を設定するには、run-work-as-principal-name 要素を使用して値を指定します。ただし、Work インスタンスは、発信要求を実行するために、発信リソース アダプタの一部として作成されることもあります。アダプタで着信要求を処理するために Work インスタンスを使用しない場合、着信要求は、セキュリティ コンテキストを確立せずに (匿名で) 実行されます。または、リソース アダプタが WebLogic Server 固有の呼び出しを行って、WebLogic Server ユーザとして認証を受けることもできます。その場合は、WebLogic Server ユーザのセキュリティ コンテキストが使用されます。

run-work-as-principal-name 要素の値は、次の 3 通りのいずれかで設定できます。

  • 定義済みの WebLogic Server 名を設定する

  • 匿名の ID を使用する

  • 呼び出し側コードのセキュリティ ID を使用する

run-work-as-principal-name 要素の値が定義されていない場合は、default-principal-name 要素の値がデフォルトになります。default-principal-name 要素が定義されていない場合は、要求の呼び出し側の ID がデフォルトになります。

要求の呼び出し側の ID を使用して作業を実行するには、run-work-as-principal-name 要素を コード リスト 8-9 に示すように指定します。

コード リスト 8-9 要求の呼び出し側の ID の使用

<security>
   <run-work-as-principal-name>
      <use-caller-identity>true</use-caller-identity>
   </run-work-as-principal-name>
</security>

接続ファクトリに固有の認証および再認証メカニズムのコンフィグレーション

J2EE 標準リソース アダプタのデプロイメント記述子 ra.xml で、リソース アダプタの認証および再認証メカニズムを指定できます。この設定はすべての発信接続ファクトリに適用されます。

ra.xml デプロイメント記述子の authentication-mechanismreauthentication-support の値は、weblogic-ra.xml デプロイメント記述子で値を指定するとオーバーライドできます。それにより、これらの設定を、すべての接続ファクトリではなく、特定の接続ファクトリに適用することができます。「表 A-13 default-connection-properties の下位要素」の「authentication-mechanism」および「reauthentication-support」を参照してください。