WebLogic リソース アダプタ プログラマーズ ガイド

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

セキュリティ

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

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

 


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

リソース アダプタはエンタープライズ情報システム (EIS) への発信接続を行うときに、有効なセキュリティ資格を使用してサインオンする必要があります。J2CA 1.5 仕様に従って、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 仕様では、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 とパスワードの機密性を保持しながらユーザを認証することができます。詳細については、『WebLogic Server のセキュリティ』の「SSL のコンフィグレーション」を参照してください。

資格マッピング

資格マッピングは発信リソース アダプタに固有のものです。資格マッピングをコンフィグレーションするには、WebLogic Server Administration Console を使用します。資格マッピングをコンフィグレーションする前に、リソース アダプタを正常にデプロイしておく必要があります。リソース アダプタを最初にデプロイしたとき、資格マッピングはコンフィグレーションされていません。資格マッピングがコンフィグレーションされるまで、初期接続は失敗します。

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

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

  1. 接続ファクトリ レベルの特定のマッピング。
  2. グローバル レベルの特定のマッピング。
  3. 接続ファクトリ レベルのデフォルトのマッピング。
  4. グローバル レベルのデフォルトのマッピング。

たとえば、次のような 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

コード リスト 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 でデフォルト マッピングがないか検索し、デフォルト マッピングを見つけます。

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

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

 


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

セキュリティ ポリシーは、権限のないアクセスから WebLogic リソースを保護するための、WebLogic リソースと 1 つまたは複数のユーザ、グループ、セキュリティ ロールとの関連付けです。J2CA 1.5 仕様では、アプリケーション サーバで実行されるリソース アダプタのデフォルト セキュリティ ポリシーを定義しています。リソース アダプタが、デフォルトをオーバーライドする独自のセキュリティ ポリシーを提供する方法も定義されています。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 仕様の第 18 章「Security Permissions」を参照してください。セキュリティ ポリシーと WebLogic セキュリティ フレームワークの詳細については、『ロールおよびポリシーによる WebLogic リソースの保護』の「セキュリティ ポリシー」を参照してください。

 


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

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

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

コード リスト 8-2 リソース アダプタのすべてのセキュリティ ID のコンフィグレーション
<weblogic-connector xmlns="http://www.bea.com/ns/weblogic/90">
   <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-3 は、<default-principal-name> 要素を使用して、リソース アダプタのすべてのタスクを実行する 1 つのデフォルト プリンシパルのセキュリティ ID をコンフィグレーションする方法を示しています。

コード リスト 8-3 リソース アダプタの 1 つのデフォルト プリンシパル ID のコンフィグレーション
<weblogic-connector xmlns="http://www.bea.com/ns/weblogic/90"> 
   <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 がないのと同じことになります)。

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

コード リスト 8-4 定義済みの WebLogic Server 名の使用
<security>
   <default-principal-name>
      <principal-name>system</principal-name>
   </default-principal-name>
</security>

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

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

コード リスト 8-6 定義済みの WebLogic Server 名の使用
<security>
   <manage-as-principal-name>
      <principal-name>system</principal-name>
   </manage-as-principal-name>
</security>

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

コード リスト 8-7 匿名 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 通りのいずれかで設定できます。

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 通りのいずれかで設定できます。

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

要求の呼び出し側の ID を使用して作業を実行するには、run-work-as-principal-name 要素を次のように指定します。

コード リスト 8-8 要求の呼び出し側の 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 デプロイメント記述子で値を指定するとオーバーライドできます。それにより、これらの設定を、すべての接続ファクトリではなく、特定の接続ファクトリに適用することができます。「authentication-mechanism」および「reauthentication-support」を参照してください。


ページの先頭       前  次