ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Server セキュリティ プロバイダの開発
11g リリース 1 (10.3.1)
B55527-01
 

目次
目次

戻る
戻る
 
次へ
次へ

8 裁決プロバイダ

裁決とは、複数の認可プロバイダがコンフィグレーションされている場合に発生するおそれのある認可上の衝突を、それぞれの認可プロバイダのアクセス決定の結果を比較検討することで解消する手続きです。WebLogic Server では、裁決プロバイダを使用して、複数のアクセス決定から返される結果を調停し、PERMITDENY の最終判定を下します。また、裁決プロバイダでは、単一の認可プロバイダのアクセス決定から ABSTAIN の回答が返されたときにどうすべきかを指定することもできます。

以下の節では、裁決プロバイダの概念と機能、およびカスタム裁決プロバイダの開発手順について説明します。

裁決プロセス

裁決プロバイダは認可プロセスの一部として使用されるので、使用方法は「認可プロセス」で説明されています。

カスタム裁決プロバイダを開発する必要があるか

WebLogic Server のデフォルト (つまりアクティブな) セキュリティ レルムには WebLogic 裁決プロバイダが含まれています。WebLogic 裁決プロバイダは、複数の認可プロバイダのアクセス決定から異なる結果が返された場合に裁決を行い、WebLogic リソースへのアクセスを許可するかどうかを最終的に判定します。

WebLogic 裁決プロバイダには、動作を制御する [完全一致の許可が必要] という属性があります。[完全一致の許可が必要] 属性は、デフォルトでは TRUE に設定されており、WebLogic 裁決プロバイダはその設定に従って次のように動作します。

[完全一致の許可が必要] 属性を FALSE に変更した場合、WebLogic 裁決プロバイダは次のように動作します。

上記の説明と異なる動作の裁決プロバイダが必要な場合、カスタム裁決プロバイダを開発する必要があります (裁決プロバイダでは、1 つの認可プロバイダのアクセス決定が ABSTAIN を返した場合に、指定したセキュリティ要件に基づいてどのように対処するかを指定することもできます)。

カスタム裁決プロバイダの開発方法

WebLogic 裁決プロバイダが開発者のニーズを満たさない場合、次の手順でカスタム裁決プロバイダを開発することができます。

  1. 適切な SSPI による実行時クラスの作成、または必要に応じてバルク認可プロバイダを使用

  2. WebLogic MBeanMaker による MBean タイプの生成

  3. Administration Console によるカスタム裁決プロバイダのコンフィグレーション

適切な SSPI による実行時クラスの作成

実行時クラスを作成する前に、以下の作業が必要です。

この情報を理解し、設計に関する判断を下したら、次の手順でカスタム裁決プロバイダの実行時クラスを作成します。

AdjudicationProviderV2 SSPI の実装

AdjudicationProviderV2 SSPI を実装するには、「「Provider」SSPI の目的について」で説明されているメソッドと以下のメソッドの実装を提供する必要があります。

  • getAdjudicator

    public AdjudicatorV2 getAdjudicator()
    

    getAdjudicator メソッドは、AdjudicatorV2 SSPI の実装を取得します。MyAdjudicationProviderImpl.java という 1 つの実行時クラスの場合、getAdjudicator メソッドの実装は次のようになります。

    return this;
    

    実行時クラスが 2 つの場合、getAdjudicator メソッドの実装は次のようになります。

    return new MyAdjudicatorImpl;
    

    これは、AdjudicationProviderV2 SSPI を実装する実行時クラスが、AdjudicatorV2 SSPI を実装するクラスを取得する場合のファクトリとして使用されるためです。

AdjudicationProviderV2 SSPI と getAdjudicator メソッドの詳細については、「WebLogic Server API リファレンス Javadoc」を参照してください。

AdjudicatorV2 SSPI の実装

AdjudicatorV2 SSPI を実装するには、以下のメソッドの実装を提供する必要があります。

  • initialize

    public void initialize(AuthorizerMBean[] accessDecisionClassNames)
    

    initialize メソッドは、「アクセスは許されるか」という質問への回答を得るために呼び出されるすべてのコンフィグレーション済み認可プロバイダのアクセス決定の名前を初期化します。accessDecisionClassNames パラメータは、裁決プロバイダの adjudicate メソッドで特定のアクセス決定による判定結果を支持するために使用することもできます。認可プロバイダとアクセス決定の詳細については、「認可プロバイダ」を参照してください。

  • adjudicate

    public boolean adjudicate(Result[] results, Resource resource,
                                ContextHandler handler)
    

    adjudicate メソッドは、コンフィグレーション済み認可プロバイダのアクセス決定から返された判定結果をすべて受け取り、「アクセスは許されるか」という質問への回答を決定します。

Adjudicator SSPI と initialize および adjudicate メソッドの詳細については、「WebLogic Server API リファレンス Javadoc」を参照してください。

バルク裁決プロバイダ

WebLogic Server のこのリリースには、以下に示すバルク アクセス バージョンの裁決プロバイダ SSPI インタフェースがあります。

  • BulkAdjudicationProvider

  • BulkAdjudicator

バルク アクセス SSPI インタフェースを使用すると、裁決プロバイダにおいて 1 回の呼び出しで複数の判定要求を取得できます。これまでのように、たとえば「for」ループで複数の呼び出しを実行する必要はありません。バルク SSPI バリアントの目的は、プロバイダ実装において内部的なパフォーマンスの最適化を利用できるようにすることです。たとえば、渡された Resource オブジェクトの多くが同じポリシーで保護されていることを検出することで、それらの判定結果が同じになると推測できるようになります。

バルク バージョンでない SSPI インタフェースとバルク バージョンの SSPI インタフェースの使用方法には若干の違いがあります。

BulkAdjudicator.adjudicate() メソッドは WebLogic Server の認可マネージャによって渡された Map (Resource, Result) インスタンス群の List を取り、これにはバルク アクセス決定の結果が含まれます。結果の順序は BulkAdjudicator.initialize() メソッドに渡されたアクセス決定クラス名の順序と同じです。

BulkAdjudicator.adjudicate() メソッドは Resource オブジェクトの Set を返すことにも注意が必要です。このセットに Resource オブジェクトがある場合、そのオブジェクトへのアクセスが付与されていますが、そうでない場合にはアクセスは拒否されています。

WebLogic MBeanMaker による MBean タイプの生成

カスタム セキュリティ プロバイダの MBean タイプを生成する前に、以下の作業が必要です。

この情報を理解し、設計に関する判断を下したら、次の手順でカスタム裁決プロバイダの MBean タイプを作成します。

  1. MBean 定義ファイル (MDF) の作成

  2. WebLogic MBeanMaker を使用して MBean タイプの生成

  3. WebLogic MBeanMaker を使用して MBean JAR ファイル (MJF) の作成

  4. WebLogic Server 環境に MBean タイプのインストール


    注意 :

    この節で説明する手順はすべて、Windows 環境での作業を想定しています。

MBean 定義ファイル (MDF) の作成

MBean 定義ファイル (MDF) を作成するには、次の手順に従います。

  1. サンプル認証プロバイダの MDF をテキスト ファイルにコピーします。


    注意 :

    サンプル認証プロバイダの MDF は、SampleAuthenticator.xml です。(現在、サンプル裁決プロバイダはありません)。

  2. MDF で <MBeanType> 要素と <MBeanAttribute> 要素の内容をカスタム裁決プロバイダに合わせて修正します。

  3. カスタム属性および操作 (つまり、<MBeanAttribute> および <MBeanOperation> 要素) を MDF に追加します。

  4. ファイルを保存します。


    注意 :

    MDF 要素の構文についての詳細なリファレンスは、「A MBean 定義ファイル (MDF) 要素の構文」に収められています。

WebLogic MBeanMaker を使用して MBean タイプの生成

MDF を作成したら、WebLogic MBeanMaker を使用してそれを実行できます。WebLogic MBeanMaker は現在のところコマンドライン ユーティリティで、入力として MDF を受け取り、MBean インタフェース、MBean 実装、関連する MBean 情報ファイルなどの中間 Java ファイルをいくつか出力します。これらの中間ファイルが合わさって、カスタム セキュリティ プロバイダの MBean タイプになります。

MBean タイプの生成手順は、カスタム裁決プロバイダの設計に応じて異なります。必要な設計に合わせて適切な手順を実行してください。

カスタム操作を追加しない場合

カスタム裁決プロバイダの MDF にカスタム操作を含めない場合、次の手順に従います。

  1. 新しい DOS シェルを作成します。

  2. 次のコマンドを入力します。

    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 が複数ある (つまり裁決プロバイダが複数ある) 場合には、このプロセスを繰り返す必要があります。

  3. WebLogic MBeanMaker を使用して MBean JAR ファイル (MJF) の作成」に進みます。

カスタム操作を追加する場合

カスタム裁決プロバイダの MDF にカスタム操作を含める場合、質問に答えながら手順を進めてください。

MBean タイプを作成するのは初めてですか。初めての場合は、次の手順に従ってください。

  1. 新しい DOS シェルを作成します。

  2. 次のコマンドを入力します。

    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 (つまり裁決プロバイダ) が複数ある場合には、このプロセスを繰り返す必要がありました。

  3. MDF のすべてのカスタム操作に対して、メソッド スタブを使用してメソッドを実装します。

  4. ファイルを保存します。

  5. WebLogic MBeanMaker を使用して MBean JAR ファイル (MJF) の作成」に進みます。

既存の MBean タイプの更新ですか。更新の場合は、次の手順に従ってください。

  1. WebLogic MBeanMaker によって現在のメソッドの実装が上書きされないように、既存の MBean 実装ファイルを一時ディレクトリにコピーします。

  2. 新しい DOS シェルを作成します。

  3. 次のコマンドを入力します。

    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 (つまり裁決プロバイダ) が複数ある場合には、このプロセスを繰り返す必要がありました。

  4. MDF を変更して元の MDF にはないカスタム操作を含めた場合、メソッド スタブを使用してメソッドを実装します。

  5. 完成した、つまりすべてのメソッドを実装した MBean 実装ファイルを保存します。

  6. この MBean 実装ファイルを、WebLogic MBeanMaker が MBean タイプの実装ファイルを配置したディレクトリにコピーします。このディレクトリは、手順 3 で filesdir として指定したものです。(手順 3 の結果として WebLogic MBeanMaker で生成された MBean 実装ファイルがオーバーライドされます)。

  7. WebLogic MBeanMaker を使用して MBean JAR ファイル (MJF) の作成」に進みます。

生成される MBean インタフェース ファイルについて

MBean インタフェース ファイルとは、実行時クラスまたは MBean 実装がコンフィグレーション データを取得するために使用する MBean のクライアントサイド API です。「「Provider」SSPI の目的について」で説明されているように、これは initialize メソッドで使用するのが一般的です。

WebLogic MBeanMaker では、作成済みの MDF から MBean タイプを生成するので、生成される MBean インタフェース ファイルの名前は、その MDF 名の後に「MBean」というテキストが付いたものになります。たとえば、WebLogic MBeanMaker で MyAdjudicator MDF を実行すると、MyAdjudicatorMBean.java という MBean インタフェース ファイルが生成されます。

WebLogic MBeanMaker を使用して MBean JAR ファイル (MJF) の作成

WebLogic MBeanMaker で MDF を実行して中間ファイルを作成し、MBean 実装ファイルを編集して適切なメソッドの実装を提供したら、カスタム裁決プロバイダの MBean ファイルと実行時クラスを MBean JAR ファイル (MJF) にパッケージ化する必要があります。このプロセスも、WebLogic MBeanMaker によって自動化されます。

カスタム裁決プロバイダの MJF を作成するには、次の手順に従います。

  1. 新しい DOS シェルを作成します。

  2. 次のコマンドを入力します。

    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 つのスキーマも生成されます。そのスキーマに関連付けるネームスペースを選択できます。それにより、使用しているカスタム クラスと Oracle のカスタム クラスとの衝突を防ぐことができます。ネームスペースのデフォルトは vendor です。-targetNameSpace 引数を WebLogicMBeanMaker または関連する WLMBeanMaker ant タスクに渡すことで、このデフォルトを変更できます。

    既存の MJF を更新する場合は、単純に MJF を削除して再生成します。WebLogic MBeanMaker にも -DIncludeSource オプションがあり、それを指定すると、生成される MJF にソース ファイルを含めるかどうかを制御できます。ソース ファイルには、生成されたソースと MDF そのものがあります。デフォルトは false。このオプションは、-DMJF を使用しない場合には無視されます。


生成された MJF は、自らの WebLogic Server 環境にインストールすることも、顧客に配布してそれぞれの WebLogic Server 環境にインストールしてもらうこともできます。

WebLogic Server 環境に MBean タイプのインストール

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 からもロードできます。ただし、サーバを起動するときに -Dweblogic.alternateTypesDirectory=<dir> コマンドライン フラグを使用すれば、WebLogic Server が追加ディレクトリで MBean タイプを検索します。<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 タイプ (その結果としてカスタム セキュリティ プロバイダ) に対する適切なパーミッションを付与することも必要になります。詳細については、『Oracle Fusion Middleware Oracle WebLogic Server Security プログラマーズガイド』の「Java セキュリティを使用しての WebLogic リソースの保護」を参照してください。

カスタム裁決プロバイダをコンフィグレーションすることによって (「Administration Console によるカスタム裁決プロバイダのコンフィグレーション」を参照) MBean タイプのインスタンスを作成して、GUI、他の Java コード、または API からそれらの MBean インスタンスを使用できます。たとえば、WebLogic Server Administration Console を使用して、属性を取得/設定したり操作を呼び出したりすることもできますし、他の Java オブジェクトを開発して、そのオブジェクトで MBean をインスタンス化し、それらの MBean から提供される情報に自動的に応答させることもできます。なお、これらの MBean インスタンスをバックアップしておくことをお勧めします。

Administration Console によるカスタム裁決プロバイダのコンフィグレーション

カスタム裁決プロバイダをコンフィグレーションするということは、裁決サービスを必要とするアプリケーションがアクセス可能なセキュリティ レルムにカスタム裁決プロバイダを追加するということです。

カスタム セキュリティ プロバイダのコンフィグレーションは管理タスクですが、カスタム セキュリティ プロバイダの開発者が行うこともできます。WebLogic Server Administration Console を使用してカスタム裁決プロバイダをコンフィグレーションする手順は、『Oracle Fusion Oracle WebLogic Server のセキュリティ』の「WebLogic セキュリティ プロバイダのコンフィグレーション」で説明されています。