![]() ![]() ![]() ![]() |
裁決とは、複数の認可プロバイダがコンフィグレーションされている場合に発生するおそれのある認可上の衝突を、それぞれの認可プロバイダのアクセス決定の結果を比較検討することで解消する手続きです。WebLogic Server では、裁決プロバイダを使用して、複数のアクセス決定から返される結果を調停し、PERMIT
か DENY
の最終判定を下します。また、裁決プロバイダでは、単一の認可プロバイダのアクセス決定から ABSTAIN
の回答が返されたときにどうすべきかを指定することもできます。
以下の節では、裁決プロバイダの概念と機能、およびカスタム裁決プロバイダの開発手順について説明します。
裁決プロバイダは認可プロセスの一部として使用されるので、使用方法は「認可プロセス」で説明されています。
WebLogic Server のデフォルト (つまりアクティブな) セキュリティ レルムには WebLogic 裁決プロバイダが含まれています。WebLogic 裁決プロバイダは、複数の認可プロバイダのアクセス決定から異なる結果が返された場合に裁決を行い、WebLogic リソースへのアクセスを許可するかどうかを最終的に判定します。
WebLogic 裁決プロバイダには、動作を制御する [完全一致の許可が必要] という属性があります。[完全一致の許可が必要] 属性は、デフォルトでは TRUE
に設定されており、WebLogic 裁決プロバイダはその設定に従って次のように動作します。
[完全一致の許可が必要] 属性を FALSE
に変更した場合、WebLogic 裁決プロバイダは次のように動作します。
注意 : | [完全一致の許可が必要] 属性は、WebLogic 裁決プロバイダをコンフィグレーションするときに設定します。WebLogic 裁決プロバイダのコンフィグレーションの詳細については、『WebLogic Server のセキュリティ』の「WebLogic 裁決プロバイダのコンフィグレーション」を参照してください。 |
上記の説明と異なる動作の裁決プロバイダが必要な場合、カスタム裁決プロバイダを開発する必要があります (裁決プロバイダでは、1 つの認可プロバイダのアクセス決定が ABSTAIN
を返した場合に、指定したセキュリティ要件に基づいてどのように対処するかを指定することもできます)。
WebLogic 裁決プロバイダが開発者のニーズを満たさない場合、次の手順でカスタム裁決プロバイダを開発することができます。
この情報を理解し、設計に関する判断を下したら、次の手順でカスタム裁決プロバイダの実行時クラスを作成します。
AdjudicationProviderV2
SSPI を実装するには、「「Provider」SSPI の目的について」で説明されているメソッドと以下のメソッドの実装を提供する必要があります。
getAdjudicator
メソッドは、AdjudicatorV2
SSPI の実装を取得します。MyAdjudicationProviderImpl
.java
という 1 つの実行時クラスの場合、getAdjudicator
メソッドの実装は次のようになります。
return this;
getAdjudicator
メソッドの実装は次のようになります。
return new MyAdjudicatorImpl;
AdjudicationProviderV2
SSPI と getAdjudicator
メソッドの詳細については、WebLogic Server API リファレンス Javadoc を参照してください。
AdjudicatorV2
SSPI を実装するには、以下のメソッドの実装を提供する必要があります。
initialize
メソッドは、「アクセスは許されるか」という質問への回答を得るために呼び出されるすべてのコンフィグレーション済み認可プロバイダのアクセス決定の名前を初期化します。accessDecisionClassNames
パラメータは、裁決プロバイダの adjudicate
メソッドで特定のアクセス決定による判定結果を支持するために使用することもできます。認可プロバイダとアクセス決定の詳細については、「認可プロバイダ」を参照してください。
Adjudicator
SSPI と initialize
および adjudicate
メソッドの詳細については、WebLogic Server API リファレンス Javadoc を参照してください。
WebLogic Server のこのリリースには、以下に示すバルク アクセス バージョンの裁決プロバイダ SSPI インタフェースがあります。
バルク アクセス SSPI インタフェースを使用すると、裁決プロバイダにおいて 1 回の呼び出しで複数の判定要求を取得できます。これまでのように、たとえば「for
」ループで複数の呼び出しを実行する必要はありません。バルク SSPI バリアントの目的は、プロバイダ実装において内部的なパフォーマンスの最適化を利用できるようにすることです。たとえば、渡された Resource
オブジェクトの多くが同じポリシーで保護されていることを検出することで、それらの判定結果が同じになると推測できるようになります。
バルク バージョンでない SSPI インタフェースとバルク バージョンの SSPI インタフェースの使用方法には若干の違いがあります。
BulkAdjudicator.adjudicate()
メソッドは WebLogic Server の認可マネージャによって渡された Map (Resource, Result)
インスタンス群の List
を取り、これにはバルク アクセス決定の結果が含まれます。結果の順序は BulkAdjudicator.initialize()
メソッドに渡されたアクセス決定クラス名の順序と同じです。
BulkAdjudicator.adjudicate()
メソッドは Resource
オブジェクトの Set
を返すことにも注意が必要です。このセットに Resource
オブジェクトがある場合、そのオブジェクトへのアクセスが付与されていますが、そうでない場合にはアクセスは拒否されています。
カスタム セキュリティ プロバイダの MBean タイプを生成する前に、以下の作業が必要です。
この情報を理解し、設計に関する判断を下したら、次の手順でカスタム裁決プロバイダの MBean タイプを作成します。
注意 : | これらの手順の実行方法は、いくつかのサンプル セキュリティ プロバイダ (dev2dev Web サイトの「Code Samples」で入手可能) に示されています。 |
注意 : | この節で説明する手順はすべて、Windows 環境での作業を想定しています。 |
MBean 定義ファイル (MDF) を作成するには、次の手順に従います。
注意 : |
MDF を作成したら、WebLogic MBeanMaker を使用してそれを実行できます。WebLogic MBeanMaker は現在のところコマンドライン ユーティリティで、入力として MDF を受け取り、MBean インタフェース、MBean 実装、関連する MBean 情報ファイルなどの中間 Java ファイルをいくつか出力します。これらの中間ファイルが合わさって、カスタム セキュリティ プロバイダの MBean タイプになります。
MBean タイプの生成手順は、カスタム裁決プロバイダの設計に応じて異なります。必要な設計に合わせて適切な手順を実行してください。
カスタム裁決プロバイダの MDF にカスタム操作を含めない場合、次の手順に従います。
java -DMDF=
xmlfile -Dfiles=
filesdir -DcreateStubs=true weblogic.management.commo.WebLogicMBeanMaker
ここで、-DMDF
フラグは WebLogic MBeanMaker が MDF をコードに変換すべきであることを示し、xmlFile は MDF (XML MBean の記述ファイル)、filesdir は WebLogic MBeanMaker で作成された MBean タイプの中間ファイルが格納される場所を示します。
xmlfile が入力されるたびに、新しい出力ファイル群が生成されます。
-DcreateStubs=true
フラグを使用するたびに、既存の MBean 実装ファイルがすべて上書きされます。
注意 : | WebLogic MBeanMaker では MDF を一度に 1 つ処理します。そのため、MDF が複数ある (つまり裁決プロバイダが複数ある) 場合には、このプロセスを繰り返す必要があります。 |
カスタム裁決プロバイダの MDF にカスタム操作を含める場合、質問に答えながら手順を進めてください。
java -DMDF=
xmlfile -Dfiles=
filesdir -DcreateStubs=true weblogic.management.commo.WebLogicMBeanMaker
ここで、-DMDF
フラグは WebLogic MBeanMaker が MDF をコードに変換すべきであることを示し、xmlFile は MDF (XML MBean の記述ファイル)、filesdir は WebLogic MBeanMaker で作成された MBean タイプの中間ファイルが格納される場所を示します。
xmlfile が入力されるたびに、新しい出力ファイル群が生成されます。
-DcreateStubs=true
フラグを使用するたびに、既存の MBean 実装ファイルがすべて上書きされます。
注意 : | バージョン 9.0 以降の WebLogic Server では、-DMDFDIR <MDF directory name> オプションを使用して、複数の MDF を格納するディレクトリを指定することもできます。旧バージョンの WebLogic Server では、WebLogic MBeanMaker で一度に処理される MDF は 1 つだけです。したがって、MDF (つまり裁決プロバイダ) が複数ある場合には、このプロセスを繰り返す必要がありました。 |
java -DMDF=
xmlfile -Dfiles=
filesdir -DcreateStubs=true weblogic.management.commo.WebLogicMBeanMaker
ここで、-DMDF
フラグは WebLogic MBeanMaker が MDF をコードに変換すべきであることを示し、xmlFile は MDF (XML MBean の記述ファイル)、filesdir は WebLogic MBeanMaker で作成された MBean タイプの中間ファイルが格納される場所を示します。
xmlfile が入力されるたびに、新しい出力ファイル群が生成されます。
-DcreateStubs=true
フラグを使用するたびに、既存の MBean 実装ファイルがすべて上書きされます。
注意 : | バージョン 9.0 以降の WebLogic Server では、-DMDFDIR <MDF directory name> オプションを使用して、複数の MDF を格納するディレクトリを指定することもできます。旧バージョンの WebLogic Server では、WebLogic MBeanMaker で一度に処理される MDF は 1 つだけです。したがって、MDF (つまり裁決プロバイダ) が複数ある場合には、このプロセスを繰り返す必要がありました。 |
MBean インタフェース ファイルとは、実行時クラスまたは MBean 実装がコンフィグレーション データを取得するために使用する MBean のクライアントサイド API です。「「Provider」SSPI の目的について」で説明されているように、これは initialize メソッドで使用するのが一般的です。
WebLogic MBeanMaker では、作成済みの MDF から MBean タイプを生成するので、生成される MBean インタフェース ファイルの名前は、その MDF 名の後に「MBean」というテキストが付いたものになります。たとえば、WebLogic MBeanMaker で MyAdjudicator
MDF を実行すると、MyAdjudicatorMBean.java
という MBean インタフェース ファイルが生成されます。
WebLogic MBeanMaker で MDF を実行して中間ファイルを作成し、MBean 実装ファイルを編集して適切なメソッドの実装を提供したら、カスタム裁決プロバイダの MBean ファイルと実行時クラスを MBean JAR ファイル (MJF) にパッケージ化する必要があります。このプロセスも、WebLogic MBeanMaker によって自動化されます。
カスタム裁決プロバイダの MJF を作成するには、次の手順に従います。
java -DMJF=
jarfile -Dfiles=
filesdir weblogic.management.commo.WebLogicMBeanMaker
ここで、-DMJF
フラグは WebLogic MBeanMaker が新しい MBean タイプを含む JAR ファイルを構築すべきであることを示し、jarfile は MJF の名前、filesdir は WebLogic MBeanMaker で MJF に JAR 化する対象ファイルが存在する場所を示します。
この時点でコンパイルが行われるので、エラーが発生するおそれがあります。jarfile が指定されていて、エラーが発生しなかった場合には、指定された名前の MJF が作成されます。
注意 : | カスタム セキュリティ プロバイダの JAR ファイルを作成する際には、一連の XML バインディング クラスと 1 つのスキーマも生成されます。そのスキーマに関連付けるネームスペースを選択できます。それにより、使用しているカスタム クラスと BEA のカスタム クラスとの衝突を防ぐことができます。ネームスペースのデフォルトは vendor です。-targetNameSpace 引数を WebLogicMBeanMaker または関連する WLMBeanMaker ant タスクに渡すと、このデフォルトを変更できます。既存の MJF を更新する場合は、MJF を削除して再生成するだけです。WebLogic MBeanMaker にも -DIncludeSource オプションがあり、それを指定すると、生成される MJF にソース ファイルを含めるかどうかを制御できます。ソース ファイルには、生成されたソースと MDF そのものがあります。デフォルトは false です。このオプションは、-DMJF を使用しない場合には無視されます。 |
生成された MJF は、自らの WebLogic Server 環境にインストールすることも、顧客に配布してそれぞれの WebLogic Server 環境にインストールしてもらうこともできます。
MBean タイプを WebLogic Server 環境にインストールするには、MJF を WL_HOME\server\lib\mbeantypes
ディレクトリにコピーします。ここで、WL_HOME は WebLogic Server の最上位のインストール ディレクトリです。このインストール コマンドによって、カスタム裁決プロバイダが「デプロイ」されます。つまり、カスタム裁決プロバイダを WebLogic Server Administration Console から管理できるようになります。
注意 : | MBean タイプをインストールするデフォルトのディレクトリは、WL_HOME\server\lib\mbeantypes です。初めて使用するバージョンが 9.0 の場合、セキュリティ プロバイダは ...\domaindir\lib\mbeantypes からもロードできます。ただし、追加ディレクトリで MBean タイプを検索する必要がある場合は、サーバを起動するときに -Dweblogic.alternateTypesDirectory= <dir> コマンドライン フラグを使用します。<dir> は、ディレクトリ名のカンマ区切りのリストです。このフラグを使用する場合、WebLogic Server は常に最初に WL_HOME\server\lib\mbeantypes から MBean タイプをロードします。その後で、追加ディレクトリにあるすべての有効なアーカイブを検索して、ロードします。このとき拡張子は考慮されません。たとえば、-Dweblogic.alternateTypesDirectory = dirX,dirY の場合、WebLogic Server は最初に WL_HOME\server\lib\mbeantypes から MBean タイプをロードしてから、dirX および dirY にある有効なアーカイブをロードします。WebLogic Server に追加ディレクトリで MBean タイプを検索するように指示する際に Java セキュリティ マネージャを使用している場合は、weblogic.policy ファイルを更新して、MBean タイプ (その結果としてカスタム セキュリティ プロバイダ) に対する適切なパーミッションを付与することも必要になります。詳細については、『WebLogic Security プログラマーズ ガイド』の「Java セキュリティ マネージャを使用しての WebLogic リソースの保護」を参照してください。 |
カスタム裁決プロバイダをコンフィグレーションすることによって (「Administration Console によるカスタム裁決プロバイダのコンフィグレーション」を参照) MBean タイプのインスタンスを作成して、GUI、他の Java コード、または API からそれらの MBean インスタンスを使用できます。たとえば、WebLogic Server Administration Console を使用して、属性を取得/設定したり操作を呼び出したりすることもできますし、他の Java オブジェクトを開発して、そのオブジェクトで MBean をインスタンス化し、それらの MBean から提供される情報に自動的に応答させることもできます。なお、これらの MBean インスタンスをバックアップしておくことをお勧めします。
カスタム裁決プロバイダをコンフィグレーションするということは、裁決サービスを必要とするアプリケーションがアクセス可能なセキュリティ レルムにカスタム裁決プロバイダを追加するということです。
カスタム セキュリティ プロバイダのコンフィグレーションは管理タスクですが、カスタム セキュリティ プロバイダの開発者が行うこともできます。WebLogic Server Administration Console を使用してカスタム裁決プロバイダをコンフィグレーションする手順は、『WebLogic Server のセキュリティ』の「WebLogic セキュリティ プロバイダのコンフィグレーション」で説明されています。
![]() ![]() ![]() |