ロールおよびポリシーによる WebLogic リソースの保護

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

Web アプリケーションおよび EJB リソースの保護のオプション

Java EE プラットフォームでは、以前から Web アプリケーションと EJB を保護するための標準モデルが提供されています。この標準モデルでは、ロール マッピングやポリシーを Web アプリケーションまたは EJB のデプロイメント記述子に定義します。

環境によってはこの Java EE 標準では柔軟性に欠けることもあるので、WebLogic Server には Java EE 標準以外の選択肢としてさらに柔軟性の高いモデルも用意されています。

注意 : JACC (JSR 115 で定義されている Java Authorization Contract for Containers) を使用したセキュリティを実装する場合は、Java EE 標準モデルを使用する必要があります。その他の WebLogic Server モデルは使用できず、その Web アプリケーションおよび EJB 用のセキュリティ機能は Administration Console では無効になります。『WebLogic Security プログラマーズ ガイド』の「Java Authorization Contract for Containers の使用」を参照してください。

セキュリティ モデルは Web アプリケーションまたは EJB をデプロイするたびに選択し、選択結果はそのデプロイメントの有効期間中には変えられません。別のモデルを使用する場合は、その Web アプリケーションまたは EJB を削除してから再デプロイする必要があります。

以下の節では、Web アプリケーションや EJB (Enterprise Java Bean) リソースを保護するためのオプションについて説明します。

注意 : この節で説明されている EJB リソースに対する手順は、メッセージ駆動型 Bean (MDB) にも適用できます。

 


Web アプリケーション、EJB 用のセキュリティ モデルの比較

各セキュリティ モデルでは、Web アプリケーションおよび EJB の保護に関して 2 種類の動作、すなわち、どこに定義されているロールとポリシーを使用するか、およびどのような URL パターンや EJB メソッドに対して Security サービスがトリガされ、セキュリティ チェックが実行されるかが決まっています。表 4-1 で、それぞれのモデルを比較します。

表 4-1 セキュリティ モデルの動作
モデル
使用するロールとポリシーの場所
セキュリティ チェックの実施方式
デプロイメント記述子のみ (Java EE 標準)
デプロイメント記述子 web.xmlweblogic.xmlejb-jar.xmlweblogic-ejb-jar.xml
Web アプリケーションまたは EJB を含むアプリケーションに対してロールが定義されている場合、すべてのロールが論理 OR 演算子で結合される。
クライアントから、デプロイメント記述子内のポリシーで保護されている URL または EJB メソッドが要求されたときにのみ実施。
カスタム ロール
このモデルでは、セキュリティ レルムにコンフィグレーションされたロール マッピング プロバイダによるロール マッピングが使用される。プロバイダのコンフィグレーションは Administration Console から可能。デプロイメント記述子のロール マッピングはすべて無視される。
このモデルでは、web.xml デプロイメント記述子と ejb-jar.xml デプロイメント記述子に定義されているポリシーが使用される。
クライアントから、デプロイメント記述子内のポリシーで保護されている URL または EJB メソッドが要求されたときにのみ実施。
カスタム ロールおよびポリシー
セキュリティ レルムにコンフィグレーションしたロール マッピング プロバイダおよび認可プロバイダ。プロバイダのコンフィグレーションは Administration Console から可能。
デプロイメント記述子のロール マッピングやポリシーはすべて無視される。
すべての URL と EJB メソッドに対して実施。
詳細
コンフィグレーション可能。
このモデルでは、デプロイメント記述子からのセキュリティ データのみを使用する、セキュリティ プロバイダからのデータのみを使用する、または基準とするセキュリティ データをデプロイメント記述子からセキュリティ プロバイダのデータベースにインポートしてさらに変更を加える、といった動作にコンフィグレーション可能。
コンフィグレーション可能。

各モデルについて

以下の節では、各モデルについて説明し、それぞれに適したシナリオを提示します。

デプロイメント記述子 (Deployment Descriptor : DD) のみモデル

これは標準の Java EE モデルで、Web アプリケーションおよび EJB に対して宣言型セキュリティを追加するための広く知られた方法です。このモデルでは、開発者によって Java EE デプロイメント記述子 (DD) および WebLogic Server DD に定義されたロールおよびポリシーのみが使用されます。デプロイメント記述子のセキュリティ プリンシパル (グループやユーザ) が存在し、セキュリティ レルムに適切にマップされているかどうかについて、セキュリティ管理者による確認が必要になります。

注意 : このモデルは、EAR に適用するアプリケーション スコープのロールに影響を与えます。このモデルでは、Security サービスは WebLogic Server DD に定義されたアプリケーション スコープのロールのみを使用します。

開発者がデプロイメント記述子のロールやポリシーを変更すると、その変更は Web アプリケーション、EJB、または EAR を再デプロイした直後に認識されます。

このモデルを使用する場合、EJB および URL パターンは、よりスコープの広いロールおよびポリシー (Web アプリケーション全体をスコープとするポリシーなど) によっては保護されません。EJB または URL パターンが DD 内のロールまたはポリシーで保護されていない場合、これらはまったく保護されず、誰でもアクセスできることになります。たとえば、EAR に対してアプリケーション スコープのポリシーを作成し、EAR が EJB を含む場合、EJB はアプリケーション スコープのポリシーによって保護されません。

このモデルは、Web アプリケーションまたは EJB の初回のデプロイ時や後の再デプロイ時に、開発者とセキュリティ管理者が作業を綿密に調整できる場合に適しています。表 4-2 に、一般的なシナリオを示します。

表 4-2 デプロイメント記述子 (DD のみ) : 一般的なシナリオ
企業 A、開発者
企業 A、管理者/デプロイ担当者
  • Java EE DD のロールに EJB または Web URL をマップする。
  • WebLogic Server DD のプリンシパルにロールをマップする。
  • アプリケーションを管理者/デプロイ担当者に引き継ぐ。
  • WebLogic Server Administration Console を使用して、必ずグループが存在して適切にユーザにマップされているようにする。

カスタム ロール モデル

このセキュリティ モデルでは Java EE DD に定義されたポリシーが使用され、WebLogic Server DD のプリンシパルのマッピングは無視されます。セキュリティ管理者が Administration Console を使用してロール マッピングを完了します。

このモデルを使用すると、開発チームのメンバーがそれぞれの専門分野に集中できます。Web アプリケーションや EJB の開発者は、どの URL パターンや EJB メソッドを保護するかを宣言するだけで済みます。セキュリティ管理者はその後で、所定のレルムに対する既存のロールとプリンシパルの階層に適したロール マッピングを作成します。

開発者がデプロイメント記述子のポリシーを変更すると、その変更は Web アプリケーションまたは EJB を再デプロイした直後に認識されます。開発者がロール マッピングを変更すると、その変更は再デプロイしなくても即座に有効になります。

このモデルは、開発者と管理者が作業を綿密に調整できない場合、またはロール マッピングが頻繁に変更される場合に適しています。表 4-3 に、一般的なシナリオを示します。

表 4-3 カスタム ロールのみ : 一般的なシナリオ
企業 A、
企業 B、開発者
企業 B、管理者/デプロイ担当者
  • EJB/URL を Java EE デプロイメント記述子のロールにマップする。
  • アプリケーションを管理者/デプロイ担当者に引き継ぐ。
  • WebLogic Server Administration Console を使用してセキュリティ ロールを定義する。

カスタム ロールおよびポリシー モデル

このセキュリティ モデルを使用すると、統合的で動的なセキュリティ管理を行えます。セキュリティ管理者が Administration Console で作成したロールとポリシーが使用され、デプロイメント記述子に定義されているロールとポリシーは無視されます。

組織のセキュリティ要件が変化した場合に、開発者が複数のデプロイメント記述子を変更する必要はなく、管理者が一元的なグラフィカル ユーザ インタフェースからすべてのセキュリティ コンフィグレーションを変更できます。ユーザ、グループ、セキュリティ ロール、およびセキュリティ ポリシーを、すべて Administration Console を使用して定義できます。その結果、更新されたセキュリティ要件に基づく変更のプロセスがより効率的になります。

このモデルは、Web アプリケーションまたは EJB の全体を保護するだけでよい場合に適しています。ただし、特定の URL パターンや EJB モジュールを大量かつ詳細に制御する必要がある場合にはあまり適していません。そうした詳細な制御を行うには、保護する URL パターンや EJB メソッドに関する詳細な情報を、開発者から管理者に提供する必要があります。詳細な制御が必要な場合には、カスタム ロール モデルの使用を検討してください (「カスタム ロール モデル」を参照)。

またこのモデルでは、クライアントからどの URL が要求され、どの EJB メソッドが呼び出されようとしているかに関わらず、パーミッションがチェックされるので、わずかなパフォーマンスの低下が見られます。

表 4-4 に、一般的なシナリオを示します。

表 4-4 カスタム ロールおよびポリシー : 一般的なシナリオ
企業 A、開発者
企業 A、管理者/デプロイ担当者
  • Java EE DD、WebLogic Server DD へのマッピングは行わない。
  • アプリケーションを管理者/デプロイ担当者に引き継ぐ。
  • WebLogic Administration Console を使用して、EJB および Web アプリケーションのロールおよびポリシーを定義する。

詳細モデル

このモデルは、主に 9.0 より前のリリースとの下位互換性のために提供されています。

このモデルでは以下の動作をコンフィグレーションできます (「[ロール マッピングの組み合わせを有効化] 設定について」を参照)。

このモデルのコンフィグレーションを変更すると、このモデルを使用するすべての Web アプリケーションおよび EJB にその変更が適用されます。たとえば、詳細モデルをコンフィグレーションしてすべての URL とメソッドに対してセキュリティ チェックを実施するようにしてから、複数の EJB をデプロイして詳細モデルを使用するようにコンフィグレーションするとします。この場合、クライアントでどの EJB のどのメソッドを呼び出そうとした場合にも、毎回 EJB コンテナによってセキュリティ チェックが要求されます。その後、詳細モデルを変更してデプロイメント記述子で保護されている EJB メソッドにのみセキュリティ チェックを実施するようにすると、EJB コンテナでは即座に、複数の EJB において保護されているメソッドにのみセキュリティ チェックが要求されるようになります。

 


詳細セキュリティ モデルについて

注意 : この節の内容は、詳細セキュリティ モデルを使用する Web アプリケーションおよび EJB のみに適用されるものです。

詳細モデルは、Administration Console の [ロールとポリシーのチェック]、[Web アプリケーションまたは EJB のデプロイ時]、および [ロール マッピングの組み合わせを有効化] という 3 つの設定でコンフィグレーションします。これらの設定を理解していないと、セキュリティ データが不適切なものになったり、失われたりすることがあります。

このモデルのコンフィグレーションを変更すると、このモデルを使用するすべての Web アプリケーションおよび EJB にその変更が適用されます。

以下の節では、詳細セキュリティ モデルの設定について説明します。

[ロールとポリシーのチェック] 設定について

[ロールとポリシーのチェック] の設定では、Security サービスによってすべての URL と EJB モジュールに対してセキュリティ チェックが実施されるのか、デプロイメント記述子で保護されたものに対してのみ実施されるのかを決定します。

[ロールとポリシーのチェック] の値は以下のように設定します。

[Web アプリケーションまたは EJB のデプロイ時] 設定について

[Web アプリケーションまたは EJB のデプロイ時] の設定では、Security サービスでデプロイメント記述子のロールおよびポリシーのデータを無視するか、Web アプリケーションや EJB をデプロイするたびに、ロール マッピング プロバイダや認可プロバイダのデータベースにデータをインポートするかを決定します。

注意 : この設定は [ロールとポリシーのチェック] で [すべての Web アプリケーションと EJB] を設定した場合にのみ有効です。

[Web アプリケーションまたは EJB のデプロイ時] の値は以下のように設定します。

[ロールとポリシーのチェック] と [Web アプリケーションまたは EJB のデプロイ時] の相互作用

表 4-5 に、[ロールとポリシーのチェック] と [Web アプリケーションまたは EJB のデプロイ時] の設定値をさまざまに組み合わせて、WebLogic Security サービスで希望する動作を行う方法を示します。

表 4-5 [ロールとポリシーのチェック] と [Web アプリケーションまたは EJB のデプロイ時] の相互作用
セキュリティを制御する対象
Web アプリケーションおよび EJB リソースに対するセキュリティの設定
[ロールとポリシーのチェック] の設定値
[Web アプリケーションまたは EJB のデプロイ時] の設定値
すべての Web アプリケーションおよび EJB リソース
Administration Console のみを使用する。
[すべての Web アプリケーションと EJB]
[デプロイメント記述子のロールとポリシーを無視]
すべての Web アプリケーションおよび EJB リソース
Web アプリケーションまたは EJB リソースのデプロイ時に、セキュリティ データをデプロイメント記述子からコンフィグレーション済みの認可プロバイダおよびロール マッピング プロバイダのデータベースにコピーするか再初期化して、その後、セキュリティ ロールとセキュリティ ポリシーの変更をその他の方法で行う。

注意 : Web アプリケーションまたは EJB リソースがデプロイされるたびに、セキュリティ データはコピーまたは再初期化される。

[すべての Web アプリケーションと EJB]
[デプロイメント記述子のロールとポリシーを初期化]
デプロイメント記述子で指定されている Web アプリケーションおよび EJB のメソッドのみ (デフォルト コンフィグレーション)
デプロイメント記述子のみを使用する。
[デプロイメント記述子で保護された Web アプリケーションと EJB]
--

[ロール マッピングの組み合わせを有効化] 設定について

[ロール マッピングの組み合わせを有効化] の設定では、エンタープライズ アプリケーション、Web アプリケーション、および EJB コンテナ内のロール マッピングがどのように相互作用するかを決定します。

この設定は、8.x バージョンとの下位互換性のために提供されています。バージョン 9.x で初めからデプロイされたすべてのアプリケーションにおいて、この設定のデフォルト値は「true」(有効) です。以前バージョン 8.1 でデプロイして 9.x にアップグレードしたアプリケーションにおけるこの設定のデフォルト値は「false」(無効) です。以下のどちらかに当てはまる場合、[ロール マッピングの組み合わせを有効化] のデフォルト値を変更することを検討してください。

表 4-6 で、この設定が Web アプリケーションと EJB に与える影響について比較します。

表 4-6 ロール マッピングの組み合わせの設定が Web アプリケーションと EJB のセキュリティに与える影響
ロール マッピングの組み合わせが無効
ロール マッピングの組み合わせが有効
各コンテナのロール マッピングは、<externally-defined> 記述子要素で定義されていない限り、他のコンテナに対して排他的なものとなる。
アプリケーションのロール マッピングが EJB および Web アプリケーションのマッピングと組み合わせられることで、すべてのプリンシパル マッピングが含まれるようになる。セキュリティ サービスでは、ロール マッピングが論理 OR 演算子と組み合わせられる。
web.xml ファイル内の 1 つまたは複数のポリシーで、weblogic.xml ファイル内にロール マッピングが存在しないロールが指定されている場合、Web アプリケーション コンテナは未定義のロールがプリンシパルの名前であると想定する。そのため、想定されたプリンシパルがロール名にマップされる。たとえば、web.xml ファイルのポリシーの 1 つに以下のようなスタンザがあり、
<auth-constraint> <role-name>PrivilegedUser</role-name> </auth-constraint>
weblogic.xml ファイルには PrivilegedUser に対するロール マッピングがないとする。この場合、Web アプリケーション コンテナによって、以下のスタンザに相当するマッピングがメモリ上に作成される。
<security-role-assignment> <role-name>PrivilegedUser</role-name> <principal-name>
  PrivilegedUser
</principal-name> </security-role-assignment>
web.xml ファイル内の 1 つまたは複数のポリシーで、weblogic.xml ファイル内にマッピングが存在しないロールが指定されている場合、Web アプリケーション コンテナでは未定義のロールに対して空のマップを作成する (つまり、ロールはプリンシパルを含まないものとして明示的に定義される)。したがって、そのようなポリシーで保護される URL パターンにはアクセスできない。
EJB メソッドのロール マッピングは、weblogic-ejb-jar.xml ファイルで定義する必要がある。その他のコンテナで定義されたロール マッピングは、<externally-defined> 記述子要素で定義されていない限り、使用されない。
ejb-jar.xml ファイル内の 1 つまたは複数のポリシーで、weblogic-ejb-jar.xml ファイル内にマッピングが存在しないロールが指定されている場合、EJB コンテナは未定義のロールに対して空のマップを作成する (つまり、ロールはプリンシパルを含まないものとして明示的に定義される)。したがって、そのようなポリシーで保護されるメソッドにはアクセスできない。

使用例

以下の例で、ロール マッピングの組み合わせが有効な場合と無効な場合におけるロール マッピングの動作の違いについて示します。

EAR、WAR、および EJB の例

MyAppEar に MyAppWAR が含まれ、MyAppWAR に MyEJB が含まれます。プリンシパル マッピングへのロール (p1 および p2) は以下のとおりです。

組み合わせたロール マッピングが有効になっている場合、ロール マッピングは以下のようになります。

組み合わせたロール マッピングが無効になっている場合、ロール マッピングは以下のようになります。

EAR および WAR の例

MyAppEar に MyAppWAR が含まれます。ロールからプリンシパルへのマッピングは以下のとおりです。

組み合わせたロール マッピングが有効になっている場合、ロール マッピングは以下のようになります。

注意 : 組み合わせたロールの動作なので、このマッピングは同じになります。

組み合わせたロール マッピングが無効になっている場合、ロール マッピングは以下のようになります。

注意 : Web アプリケーションにマッピングが定義されていない場合、このマッピングは同じになります。EAR マッピングが WAR マッピングにコピーされます。

 


Web アプリケーション、EJB の保護

セキュリティ モデルは Web アプリケーションまたは EJB をデプロイするたびに選択し、選択結果はそのデプロイメントの有効期間中には変えられません。別のモデルを使用する場合は、その Web アプリケーションまたは EJB を削除してから再デプロイする必要があります。

Administration Console を使用してのアプリケーションのデプロイ、セキュリティ モデルの選択、ロールやポリシーの変更、および他の関連タスクの実行については、Administration Console オンライン ヘルプの「Web アプリケーションおよび EJB のセキュリティの管理」を参照してください。

デプロイメント記述子を使用して Web アプリケーションまたは EJB リソースを保護する場合は、『WebLogic Security プログラマーズ ガイド』の「Web アプリケーションでの宣言によるセキュリティの使用」または「EJB での宣言によるセキュリティの使用」を参照してください。


ページの先頭       前  次