ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Serverセキュリティ・プロバイダの開発
11gリリース1(10.3.6)
B61623-04
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

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. 管理コンソールによるカスタム裁決プロバイダの構成

適切な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メソッドで特定のアクセス決定による判定結果を支持するために使用することもできます。認可プロバイダとアクセス決定の詳細は、第7章「認可プロバイダ」を参照してください。

  • 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タイプをインストールする


    注意:

    この手順の実行方法を説明するサンプル・セキュリティ・プロバイダ(Oracle Technology Network Webサイトのhttps://codesamples.samplecode.oracle.com/servlets/tracking?id=S224から入手可能)がいくつか用意されています。

    この節で説明する手順はすべて、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管理コンソールから管理できるようになります。


注意:

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 WebLogic Serverセキュリティのプログラミング』のJavaセキュリティを使用したWebLogicリソースの保護に関する項を参照してください。


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

管理コンソールによるカスタム裁決プロバイダの構成

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

カスタム・セキュリティ・プロバイダの構成は管理タスクですが、カスタム・セキュリティ・プロバイダの開発者が行うこともできます。WebLogic Server管理コンソールを使用してカスタム裁決プロバイダを構成する手順は、『Oracle WebLogic Serverの保護』のWebLogicセキュリティ・プロバイダの構成に関する項で説明されています。