プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle WebLogic Serverセキュリティ・プロバイダの開発
12c (12.2.1)
E69979-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

8 裁決プロバイダ

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

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

この章の内容は次のとおりです。

裁決プロセス

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

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

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

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

  • すべての認可プロバイダのアクセス決定がPERMITを返した場合、最終的な判定としてTRUEを返します(つまりWebLogicリソースへのアクセスは許可されます)。

  • 一部の認可プロバイダのアクセス決定がPERMITを返し、その他がABSTAINを返した場合、FALSEを返します(つまりWebLogicリソースへのアクセスは拒否されます)。

  • いずれかの認可プロバイダのアクセス決定がABSTAINまたはDENYを返した場合、最終的な判定としてFALSEを返します(つまりWebLogicリソースへのアクセスは拒否されます)。

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

  • すべての認可プロバイダのアクセス決定がPERMITを返した場合、最終的な判定としてTRUEを返します(つまりWebLogicリソースへのアクセスは許可されます)。

  • 一部の認可プロバイダのアクセス決定がPERMITを返し、その他がABSTAINを返した場合、最終的な判定としてTRUEを返します(つまりWebLogicリソースへのアクセスは許可されます)。

  • いずれかの認可プロバイダのアクセス決定がDENYを返した場合、最終的な判定としてFALSEを返します(つまりWebLogicリソースへのアクセスは拒否されます)。


    注意:

    「完全一致の許可が必要」属性は、WebLogic裁決プロバイダを構成するときに設定します。WebLogic裁決プロバイダの構成の詳細は、『Oracle WebLogic Serverセキュリティの管理12c (12.2.1)』のWebLogic裁決プロバイダの構成に関する項を参照してください。

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

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

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

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

  2. 付録B「WebLogic MBeanMakerを使用してMBeanタイプを生成する」で説明されている手順を実行してカスタム裁決プロバイダの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メソッドの詳細は、Oracle WebLogic Server Java APIリファレンスを参照してください。

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メソッドの詳細は、Oracle WebLogic Server Java APIリファレンスを参照してください。

バルク裁決プロバイダ

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 Server管理コンソールを使用してカスタムの裁決プロバイダを構成する手順は、『Oracle WebLogic Serverセキュリティの管理12c (12.2.1)』のWebLogicセキュリティ・プロバイダの構成に関する項を参照してください。