ポリシー・セットを使用すると、ある範囲に含まれる同じタイプのエンドポイントに対して、ポリシーをグローバルにアタッチできます。この章では、Oracle Enterprise Manager Fusion Middleware Controlおよびコマンドライン・インタフェースWebLogic Scripting Tool (WLST)を使用して、ポリシー・セットを管理および作成する方法について説明します。ポリシー・サブジェクトにポリシーを直接添付する場合の詳細は、第8章「Webサービスへのポリシーの添付」を参照してください。
この章では次の項について説明します。
注意: この章の手順は、Oracle Infrastructure Web Servicesにのみ適用されます。 この章に記載されているWLSTコマンドのヘルプを表示するには、サーバーの実行中のインスタンスに接続し、「 |
エンドポイントにポリシーを直接アタッチすることに加えて、デプロイメントの状態に関係なく、同タイプの一連のエンドポイントにポリシーをグローバルにアタッチすることを可能にするポリシー・セットを作成できます。Fusion Middleware ControlおよびWebLogic Scripting Tool(WLST)の両方を使用して、ポリシー・セットを作成および管理できます。この章では、両方の方法について説明します。WLSTコマンドの参照情報は、『WebLogic Scripting Toolコマンド・リファレンス』のWebサービスのカスタムWLSTコマンドに関する項で提供されています。
ポリシー・セットを使用してポリシーをグローバルにアタッチすることによって、開発者、アセンブラまたはデプロイヤがアタッチするポリシーを明示的に指定しなかった状況において、管理者は、すべてのサブジェクトが確実に保護されるようにできます。たとえば、開発者が注釈内にポリシーを指定しなかった場合、またはデプロイメント・ディスクリプタにポリシー参照を含めなかった場合、デプロイヤはポリシーをアタッチする必要があり、このようにしないと、潜在的なセキュリティ・リスクが発生します。タイプ別のサブジェクトのセットに対してポリシーをグローバルにアタッチすることによって、管理者はデプロイメントに関係なく(かつデプロイメント前に)、すべてのサブジェクトがデフォルトで保護されるようにできます。たとえば、管理者はあるドメイン内のすべてのWebサービス・エンドポイントに対してセキュリティ・ポリシーをアタッチするポリシー・セットを定義できます。この場合、ドメインに追加されるすべての新規サービスには、ポリシー・セットに定義されたセキュリティ構成が自動的に継承されます。詳細は、「エンドポイントのセキュア・ステータスの決定」を参照してください。
また、ポリシー・セットを使用してグローバルにアタッチされたポリシーにより、次のことが可能になります。
参照されたポリシーに対する構成のオーバーライドを指定できます。このオーバーライドは、ポリシー・セットのスコープが設定されたすべてのエンドポイントに適用されます。オーバーライドの構成の詳細は、「グローバルにアタッチされたポリシーの構成プロパティのオーバーライド」を参照してください。
実行時制約を指定できます。この制約によってそのポリシー・セットが関連するコンテキストが決定されます。たとえば、セキュリティ保護されていない公衆回線でメッセージが送信される可能性があるため、外部クライアントと通信する場合にのみ、サービスでメッセージ保護を使用するように指定できます。ただし、信頼できるネットワークで内部クライアントと通信するときは、メッセージ保護を要求しない場合もあります。詳細は、「ポリシー・セットの実行時制約の指定」を参照してください。
Fusion Middlewareインストールに含まれるいかなる動作も強制しない事前定義済ポリシーを使用して、特定のエンドポイントまたはエンドポイントの範囲に対して、グローバルにアタッチされたポリシーを無効にできます。特定のエンドポイントに対して、または下位のスコープで、こうしたポリシーのいずれかをアタッチすると、上位のスコープでグローバルにアタッチされたポリシーの動作が無効になります。詳細は、「グローバルにアタッチされたポリシーの無効化」を参照してください。
ポリシー・セット定義は、別個のXMLドキュメントとして、Oracle WSMリポジトリの/policysets/global
ディレクトリに保存されます。
ポリシー・セットをアタッチできるポリシー・サブジェクトには、SOAコンポーネント、SOAサービス・エンドポイント、SOA参照、Webサービス・エンドポイント、Webサービス・クライアント、Webサービス・コネクションおよび非同期コールバック・クライアントなどが含まれます。ポリシー・セットは、次のスコープでアタッチできます。
ドメイン - ドメイン内の指定されたタイプのすべてのポリシー・サブジェクト
アプリケーションまたはパーティション: アプリケーションまたはSOAパーティション内の指定されたタイプのすべてのポリシー・サブジェクト
アプリケーション・モジュールまたはSOAコンポジット: アプリケーション・モジュールまたはSOAコンポジット内の指定されたタイプのすべてのポリシー・サブジェクト
サービスまたは参照: SOAサービスまたは参照内の指定されたタイプのすべてのポリシー・サブジェクト
ポートまたはコンポーネント: ポートまたはSOAコンポーネント内の指定されたタイプのすべてのポリシー・サブジェクト
詳細は、「リソースのタイプおよびスコープの定義」を参照してください。
次に、ポリシーのグローバルなアタッチが役立つ一般的なシナリオをいくつか示します。
指定タイプのすべてのサブジェクトについて、それぞれデフォルトの構成を使用して、同じポリシー・セットにより保護する必要がある場合。たとえば、(SAMLまたはユーザー名トークンを使用して)認証およびWSS11メッセージ保護によりドメイン内のすべてのサービスを保護する必要があります。ドメイン内のすべてのサービスに適切なポリシーをアタッチするためにポリシー・セットを作成できます。
サブジェクトのサブセットを同じポリシー・セットにより保護する必要がありますが、こうしたポリシーがドメイン全体のデフォルトとは異なる場合。たとえば、(SAMLまたはユーザー名トークンを使用して)認証によりすべてのサービスを保護する必要がありますが、一般元帳アプリケーションではより強力なWSS11メッセージ保護も必要です。このような場合、すべてのサービスに認証ポリシーをアタッチする1つのポリシー・セットと、一般元帳アプリケーションにより強力なメッセージ保護ポリシーをアタッチする第2のポリシー・セットを作成します。
現セットのグローバル・ポリシー・アタッチメントがまだ適用されていないカテゴリのポリシーによって単一のサブジェクトを保護する必要があり、さらに両方のポリシーを適用する必要がある場合。たとえば、機密性の高い財務に基づくサービス・エンドポイントでは、必要な認証およびメッセージ保護に加えて、クライアントがアクセスするための権限を必要とします。このような場合は、財務に基づくサービス・エンドポイントに認可ポリシーを直接アタッチします。ダイレクト・アタッチメントとグローバルにアタッチされたポリシーを組み合せることで、両方のポリシーが強制されます。
アプリケーションが設計時のポリシー・アタッチメントによりデプロイされており、グローバル・ポリシー・アタッチメントを使用するように変換する必要がある場合。このアタッチメントを移行するために、migrateAttachments
WLSTコマンドを使用できます。詳細は、「グローバル・ポリシー・アタッチメントへのダイレクト・ポリシー・アタッチメントの移行」を参照してください。
ポリシー・セットは、「ポリシー・セット・サマリー」ページからドメイン・レベルで管理できます。このページでは、ポリシー・セットを表示、作成、コピー、編集および削除できます。
「ポリシー・セット・サマリー」ページに移動するには:
ナビゲータ・ペインで「WebLogicドメイン」を開きます。
ポリシー・セットを管理するドメインを選択します。
「WebLogicドメイン」メニューから、「Webサービス」、 「ポリシー・セット」の順に選択します。
図9-1に示すように、「ポリシー・セット・サマリー」ページが表示されます。
リポジトリ内のポリシー・セットのリストを表示するには:
「WebサービスのカスタムWLSTコマンドへのアクセス」の説明に従って、WebLogic Serverの実行中のインスタンスに接続します。
リポジトリ内のポリシー・セットのリストを表示するために、listPolicySets
コマンドを使用します。
listPolicySets ([type=None])
特定のタイプのポリシー・サブジェクト・リソース・タイプに適用されるポリシー・セットのみを含めるように表示を制限できます。サブジェクトのタイプを指定するには、表9-1「ポリシー・サブジェクト・リソース・タイプ」で指定された略語を使用する必要があります。
たとえば、Webサービス・エンドポイントに適用されるポリシー・セットのリストを表示するには、次のコマンドを使用します。
wls:/jrfserver_domain/serverConfig>listPolicySets('ws-service')
Global Policy Sets in Repository:
app-only-web-service-policies
all-domains-default-web-service-policies
このWLSTコマンドについての詳細は、WebLogic Scripting Toolコマンド・リファレンスのWebサービスのカスタムWLSTコマンドに関する項を参照してください。
次の項では、Fusion Middleware Controlまたはコマンドライン・インタフェースWebLogic Scripting Tool (WLST)のいずれかを使用してポリシー・セットを表示する方法について説明します。
ポリシー・セットを表示するには:
「「ポリシー・セット・サマリー」ページへの移動」の説明に従って、「ポリシー・セット・サマリー」ページに移動します。
「ポリシー・セット・サマリー」ページで、表からポリシー・セットを選択し、「表示」をクリックします。
ポリシー・セットを参照し終わったら、「ポリシー・セットに戻る」をクリックします。
リポジトリ内の特定のポリシー・セットの構成を表示するには:
「WebサービスのカスタムWLSTコマンドへのアクセス」の説明に従って、WebLogic Serverの実行中のインスタンスに接続します。
指定のポリシー・セットの構成を表示するために、displayPolicySet
コマンドを使用します。
displayPolicySet ([name=None])
リポジトリ・セッションの外側でこのコマンドを実行した場合、name
引数を使用してポリシー・セットの構成を表示できます。ポリシー・セットが存在しない場合、エラー・メッセージが表示されます。
リポジトリ・セッションでポリシー・セットを作成または変更している場合は、name
引数を指定する必要はありません。現在のポリシー・セットがデフォルトで使用されます。ポリシー・セットを変更した場合は、変更後のバージョンが表示されます。それ以外の場合は、リポジトリの最新バージョンが表示されます。
たとえば、次のようにします。
wls:/jrfserver_domain/serverConfig>displayPolicySet('int-only-web-service-policies')
Policy Set Details:
-------------------
Name: int-only-web-services-policies
Type of Resources: Web Service Endpoint
Scope of Resources: Domain("*")
Constraint: !HTTPHeader("VIRTUAL_HOST_TYPE","external")
Description: Policies for non-external client requests
Enabled: true
Policy Reference: security : oracle/wss_saml_or_username_token_service_policy, enabled=true
reference.priority=1
management : oracle/log_policy, enabled=true
このWLSTコマンドについての詳細は、WebLogic Scripting Toolコマンド・リファレンスのWebサービスのカスタムWLSTコマンドに関する項を参照してください。
ポリシー・セットの作成、変更および削除を行うためにWLSTを使用する場合、リポジトリ・セッションのコンテキストでコマンドを実行する必要があります。各リポジトリ・セッションは、単一のポリシー・セットにのみ適用されます。
リポジトリを変更するセッションを作成するには、beginRepositorySession
コマンドを使用します。ポリシー・セットの作成、変更または削除のための必要なコマンドを入力した後、commitRepositorySession
コマンドを使用してリポジトリへのセッション・コンテンツの書込みを行います。
現在のセッションのコンテンツを示すには、describeRepositorySession
コマンドを使用します。
リポジトリへのコンテンツの書込みを行わないでリポジトリ・セッションを終了するには、abortRepositorySession
コマンドを使用します。
これらのコマンドの例は、以降の項で示します。詳細は、『WebLogic Scripting Toolコマンド・リファレンス』のWebサービスのカスタムWLSTコマンドに関する項を参照してください。
次の項では、Fusion Middleware Controlまたはコマンドライン・インタフェースWebLogic Scripting Tool (WLST)のいずれかを使用してポリシー・セットを作成する方法について説明します。
ポリシー・セットを作成するには、次のコマンドを実行します。
「「ポリシー・セット・サマリー」ページへの移動」の説明に従って、「ポリシー・セット・サマリー」ページに移動します。
「ポリシー・セット・サマリー」ページで、「作成」をクリックします。
ポリシー・セットを作成するウィザードの最初のページが表示されます。
図9-3に示すように、「一般情報の入力」ページで、ポリシー・セットの名前を入力します。
ポリシー・セットを有効にする場合は、「有効」チェック・ボックスを選択します。
「リソース・タイプ」フィールドで、ポリシーをアタッチするポリシー・サブジェクトのタイプを選択します。次のページで、ポリシー・セットを適用するリソース・スコープを定義します。選択できるポリシー・サブジェクトのタイプは次のとおりです。
RESTリソース
SOAコンポーネント
SOAサービス
SOA参照
Webサービス接続
Webサービス・エンドポイント
Webサービス・クライアント
非同期コールバック・クライアント
必要に応じて、ポリシー・セットの説明を追加し、「次へ」をクリックします。
「リソース・スコープの入力」ページで、前の手順で選択したリソース・タイプのスコープを定義する少なくとも1つのパターン文字列を入力します。次のリソース・スコープがサポートされます。
ドメイン
サーバー・インスタンス
注意: 信頼できない結果が発生する可能性があるため、サーバー・インスタンス・スコープの使用はお薦めできません。 |
SOAパーティション
アプリケーション
アプリケーション・モジュール
SOAコンポジット
SOAサービス
SOA参照
SOAコンポーネント
ポート
注意: リソース・スコープを指定するには、このページで少なくとも1つの「パターン」フィールドにパターン文字列を入力する必要があります。 |
使用可能なリソース・スコープのリストは、前のページで選択したリソース・タイプによって決定します。たとえば、Webサービス・エンドポイントを選択した場合、使用可能なリソース・スコープは、ドメイン名、サーバー・インスタンス名、アプリケーション名、アプリケーション・モジュール名、SOAサービスまたはWebサービスのエンドポイント/名前/ポート名です。SOAサービス・リソース・タイプでは、使用可能なリソース・スコープは、ドメイン名、サーバー・インスタンス名、SOAパーティション名、SOAコンポジット名、SOAサービスまたはWebサービス・エンドポイント名/ポート名です。
たとえば、ドメイン内のすべてのWebサービス・エンドポイントにポリシーをアタッチするには、そのドメインの名前のみを示すパターン文字列を入力します。他のフィールドに記入する必要はありません。より詳細なスコープ、たとえばアプリケーション・レベルまたはアプリケーション・モジュール・レベルでポリシーをアタッチするには、「パターン」フィールドにアプリケーションまたはモジュールの名前を示すパターン文字列を入力します。該当位置で任意の数の文字に一致するワイルドカード文字としてアスタリスク(*)を文字列内の任意の場所で使用できます。また、文字列内で複数のワイルドカードを指定できます。ドメインに対してアスタリスクのワイルドカードのみを使用した場合、そのスコープ・レベルによりエンタープライズ内のすべてのドメインが影響を受けることに注意してください。
ドメイン名やアプリケーションなど、複数のリソース・スコープのパターン文字列を指定した場合、フィルタリング条件はANDで結合されます(例: Domain("myDomain*")
AND Application("*myApp*")
)。リソース・タイプとスコープの指定の詳細、および複数のリソース・スコープを指定する例は、「リソースのタイプおよびスコープの定義」を参照してください。
「次へ」をクリックします。
「制約の入力」ページで、必要に応じて、ポリシー・セットが関連するコンテキストを決定するためにポリシー・セットに適用される制約を入力します。たとえば、セキュリティ保護されていない公衆回線でメッセージが送信される可能性があるため、外部クライアントと通信する場合に、サービスでメッセージ保護を使用するように指定できます。ただし、信頼できるネットワークで内部クライアントと通信するときは、メッセージ保護を要求しない場合もあります。
制約を指定するには、このページの「制約式詳細」セクションで「有効」チェック・ボックスを選択し、「HTTPヘッダー名」フィールドおよび「HTTPヘッダー値」フィールドでヘッダーの名前および値を指定したうえで、必要に応じて制約を反転する「!(NOT)」演算子を選択し、「制約の更新」をクリックします。次に「次へ」をクリックします。
制約の指定の詳細は、「ポリシー・セットの実行時制約の指定」を参照してください。
「ポリシー参照の追加」ページで、「使用可能なポリシー」リストからポリシーを選択し、「アタッチ」をクリックします。
ポリシーの詳細を表示するには、ポリシーを選択して、「詳細の表示」アイコンをクリックします。ポップアップ・ウィンドウに、ポリシーの読取り専用の詳細説明とそのポリシーに含まれるアサーションのリストが表示されます。ポリシーの詳細を確認し終わったら、「OK」をクリックします。
ポリシーの選択と添付を続行します。完了したら、「検証」をクリックして、選択されたポリシーの組合せが有効であることを確認します。
「次へ」をクリックし、「ポリシー・セット・サマリー」ページを表示します。
ポリシー・セット・サマリー情報を確認します。満足のいくポリシー・セットが得られた場合は「保存」をクリックします。
検証が失敗した場合でも、ポリシー・セットは依然として保存されていますが、無効モードになることに注意してください。
WLSTを使用してポリシー・セットを作成するには、次の手順に従います。
「WebサービスのカスタムWLSTコマンドへのアクセス」の説明に従って、WebLogic Serverの実行中のインスタンスに接続します。
beginRepositorySession
コマンドを使用してリポジトリ・セッションを開始します。
リポジトリを変更するセッションを作成するために、beginRepositorySession
コマンドを使用します。すべての作成、変更または削除のコマンドは、セッションのコンテキストで実行する必要があります。セッションは、単一のドキュメントにのみ作用できます。
たとえば、次のようにします。
wls:/jrfserver_domain/serverConfig> beginRepositorySession()
Repository session begun.
新しい空のポリシー・セットを作成するためにcreatePolicySet
コマンドを使用します。name
、type
およびattachTo
引数が必要です。
createPolicySet(name, type, attachTo, [description=None], [enable='true'])
この場合:
name
は、新しい空のポリシー・セットの名前を表します。
type
は、新しいポリシー・セットが適用されるポリシー・サブジェクトのタイプを表します。
attachTo
は、ポリシー・セットをアタッチするリソースのスコープを表します。この引数では、サポートされた形式で有効なリソース・スコープを定義するサポートされた式を使用する必要があります。詳細は、「リソースのタイプおよびスコープの定義」を参照してください。
リソース・スコープに正確なドメイン名を入力する必要はありません。次の例に示すように、ワイルドカードを使用できます。詳細は、「リソースのタイプおよびスコープの定義」を参照してください。
description
は、ポリシー・セットの説明を提供するオプションの引数を表します。
enable
は、ポリシー・セットが有効か無効かを指定します。この引数はオプションです。
たとえば、必要な引数のみを使用して、ドメイン内のすべてのサービスに対するポリシー・セットを作成できます。
wls:/jrfserver_domain/serverConfig> createPolicySet('all-domains-default-web-service-policies', 'ws-service', 'Domain("*")')
Description defaulted to "Global policy attachments for Web Service Endpoint resources."The policy set was created successfully in the session.
コマンドラインで説明が指定されなかったのでデフォルトの説明が提示されたことに注意してください。
このコマンドの引数の詳細は、『WebLogic Scripting Toolコマンド・リファレンス』のWebサービスのカスタムWLSTコマンドに関する項を参照してください。
setPolicySetDescription
コマンドを使用して説明を指定します。
setPolicySetDescription(description)
たとえば、「Default policies for web services in any domain」という説明を設定するには、次のコマンドを使用します。
wls:/jrfserver_domain/serverConfig> setPolicySetDescription('Default policies for web services in any domain')
Description updated.
現在のポリシー・セットにポリシーをアタッチするには、attachPolicySetPolicy
コマンドを使用します。uri
引数を使用して指定したURIによって識別されるポリシーは、ポリシー・セット内の指定したエンドポイントにアタッチされます。必要なすべてのポリシーをポリシー・セットにアタッチするために、必要に応じてこのコマンドを繰り返すことができます。
attachPolicySetPolicy(uri)
たとえば、ポリシー・セット内の指定したサブジェクトにポリシー「'oracle/wss11_saml_or_username_token_with_message_protection_service_policy'
」をアタッチするには、次のコマンドを入力します。
wls:/jrfserver_domain/serverConfig>attachPolicySetPolicy('oracle/wss11_saml_or_username_token_with_message_protection_service_policy')
Policy reference added.
必要に応じて、構成のオーバーライドまたは実行時制約を指定します。詳細は、次のトピックを参照してください。
必要に応じて、displayPolicySet
コマンドを使用して、現在のリポジトリ・セッション中のポリシー・セットの構成を表示します。
displayPolicySet(name=None)
リポジトリ・セッション内でこのコマンドを実行する場合、name
引数を指定する必要はないことに注意してください。現在のポリシー・セットがデフォルトで使用されます。ポリシー・セットを変更した場合は、変更後のバージョンが表示されます。それ以外の場合は、リポジトリの最新バージョンが表示されます。
たとえば、次のようにします。
wls:/jrfserver_domain/serverConfig>displayPolicySet()
Policy Set Details:
-------------------
Name: all-domains-default-web-service-policies
Type of Resources: Web Service Endpoint
Scope of Resources: Domain("*")
Description: Default policies for web services in any domain
Enabled: true
Policy Reference: security : oracle/wss11_saml_or_username_token_with_message_protection_service_policy, enabled=true
validatePolicySet
コマンドを使用してポリシー・セットを検証します。
validatePolicySet(name=None)
このコマンドは、名前を指定しない場合、現在のセッション中に作成または変更されるポリシー・セットを検証します。また、リポジトリ・セッションの外側でこのコマンドを実行できることに注意してください。この場合、name
引数が必要です。
たとえば、次のようにします。
wls:/jrfserver_domain/serverConfig> validatePolicySet()
The policy set all-domains-default-web-service-policies is valid.
commitRepositorySession
コマンドを使用して、リポジトリに対して、現在のリポジトリ・セッションのコンテンツの書込みを行います。
wls:/jrfserver_domain/serverConfig> commitRepositorySession()
The policy set all-domains-default-web-service-policies is valid.
Creating policy set all-domains-default-web-service-policies in repository.
Repository session committed successfully.
また、セッション中にリポジトリに加えたすべての変更を破棄するabortRepositorySession
コマンドを使用することにより、すべての変更を取り消すことができます。
WLSTコマンドおよびその引数の詳細は、WebLogic Scripting Toolコマンド・リファレンスのWebサービスのカスタムWLSTコマンドに関する項を参照してください。
新しいポリシー・セットのベースとして既存のポリシー・セットを使用できます。次の項では、Fusion Middleware Controlまたはコマンドライン・インタフェースWebLogic Scripting Tool (WLST)のいずれかを使用して既存のポリシー・セットから新しいポリシー・セットを作成する方法について説明します。
既存のポリシー・セットからポリシー・セットを作成すると、すべての値とアタッチメントが新規のポリシー・セットにコピーされることに注意してください。新規のポリシー・セットのリソース・スコープとポリシー・アタッチメントは変更できますが、適用されるリソースのタイプは変更できません。
既存のポリシー・セットを使用してポリシー・セットを作成するには:
「「ポリシー・セット・サマリー」ページへの移動」の説明に従って、「ポリシー・セット・サマリー」ページに移動します。
「ポリシー・セット・サマリー」ページで、コピーするポリシー・セットを選択し、「類似作成」をクリックします。
「一般情報の入力」ページで、ポリシー・セットの新しい名前および説明を入力します。
次の事項に注意してください。
ベース・ポリシー・セット名に「_Copy」を追加したデフォルトの新しいポリシー・セット名が作成されます。たとえば、ベース・ポリシー・セットの名前がall-domains-default-web-service-policiesである場合、表示されるコピーの名前はall-domains-default-web-service-policies_Copyになります。
「リソース・タイプ」フィールドは読取り専用です。ポリシー・セットのクローンを作成する場合、スコープを変更することはできますが、ポリシー・セットをアタッチするリソースのタイプは変更できません。
「有効」チェック・ボックスを選択するか、その選択を解除して、ポリシー・セットを有効または無効にします。
「次へ」をクリックします。
「リソース・スコープの入力」ページで、必要に応じてスコープを変更し、「次へ」をクリックします。
注意: リソース・スコープを指定するには、このページで少なくとも1つの「パターン」フィールドにパターン文字列を指定する必要があります。 |
「制約の入力」ページで、必要に応じて制約を指定するか、または既存の制約を変更します。「制約の更新」をクリックし、「次へ」をクリックします。
詳細は、「ポリシー・セットの実行時制約の指定」を参照してください。
「ポリシー参照の追加」ページで、必要に応じてポリシー・アタッチメントを変更します。完了したら、「検証」をクリックして、選択されたポリシーの組合せが有効であることを確認します。
「次へ」をクリックし、「ポリシー・セット・サマリー」ページを表示します。
ポリシー・セット・サマリー情報を確認します。満足のいくポリシー・セットが得られた場合は「保存」をクリックします。
既存のポリシー・セットからポリシー・セットを作成するには:
「WebサービスのカスタムWLSTコマンドへのアクセス」の説明に従って、WebLogic Serverの実行中のインスタンスに接続します。
beginRepositorySession
コマンドを使用してリポジトリ・セッションを開始します。
たとえば、次のようにします。
wls:/jrfserver_domain/serverConfig> beginRepositorySession()
Repository session begun.
clonePolicySet
コマンドにより、既存のポリシー・セットを使用してポリシー・セットを作成します。
clonePolicySet(name, source, [attachTo=None,] [description=None], [enable='true'])
この場合:
name
は、新しいクローンのポリシー・セットの名前を表します。
source
は、クローンを作成するポリシー・セットの名前を指定します。
attachTo
は、ポリシー・セットをアタッチするリソースのスコープを表します。この引数を指定する場合、サポートされた形式で有効なリソース・スコープを定義するサポートされた式を使用する必要があります。リソース・スコープに正確な名前を入力する必要はありません。次の例に示すように、ワイルドカードを使用できます。詳細は、「リソースのタイプおよびスコープの定義」を参照してください。
この引数を指定しない場合、リソース・スコープの識別のためにソース・ポリシー・セットで使用されている式が保持されます。また、手順5に従って、attachPolicySet
コマンドを使用してリソース・スコープを変更することもできます。
description
は、クローンのポリシー・セットの説明を提供するオプションの引数を表します。
enable
は、ポリシー・セットが有効か無効かを指定します。この引数はオプションです。
たとえば、ポリシー・セットのクローンを作成するには、次のようにします。
wls:/jrfServer_domain/serverConfig>clonePolicySet ('app-only-web-service-policies','all-domains-default-web-service-policies', None, 'Default policies for application jaxws-sut') The policy set was cloned successfully in the session.
この例では、attachTo
引数が指定されていないことに注意してください。
このコマンドの引数の詳細は、『WebLogic Scripting Toolコマンド・リファレンス』のWebサービスのカスタムWLSTコマンドに関する項を参照してください。
必要に応じて、displayPolicySet
コマンドを使用してポリシー・セットの構成を表示します。
たとえば、次のようにします。
wls:/jrfServer_domain/serverConfig> displayPolicySet()
Policy Set Details:
-------------------
Name: app-only-web-service-policies
Type of Resources: Web Service Endpoint
Scope of Resources: Domain("jrfServer_domain")
Description: Default policies for application jaxws-sut
Enabled: true
Policy Reference: security : oracle/wss11_saml_or_username_token_with_message_protection_service_policy, enabled=true
アタッチメントのリソース・スコープを変更するには、attachPolicySet
コマンドを使用します。
attachPolicySet(expression)
この場合:
expression
は、ポリシー・セットで定義されたリソース・タイプに有効であるリソース・スコープをサポートされた形式で定義するサポートされた式です。たとえばSOAリソース・タイプでは、アプリケーションとなるリソース・スコープを定義できません。SOAリソース・タイプでサポートされるリソース・スコープは、ドメイン、サーバーおよびコンポジットです。
注意: 信頼できない結果が発生する可能性があるため、サーバー・スコープの使用はお薦めできません。 |
詳細は、「リソースのタイプおよびスコープの定義」を参照してください。
たとえば、jaxws-sut
という名前のアプリケーションにのみポリシー・セット内のポリシーをアタッチするには、次のコマンドを入力します。
wls:/jrfServer_domain/serverConfig> attachPolicySet('Application("jaxws-sut")')
Scope of resources updated.
必要に応じて、構成のオーバーライドまたは実行時制約を指定します。詳細は、次のトピックを参照してください。
必要に応じて、displayPolicySet
コマンドを使用してクローンのポリシー・セットの構成を表示します。
たとえば、次のようにします。
wls:/jrfserver_domain/serverConfig>displayPolicySet()
Policy Set Details:
-------------------
Name: app-only-web-service-policies
Type of Resources: Web Service Endpoint
Scope of Resources: Application("jaxws-sut")
Description: Default policies for application jaxws-sut
Enabled: true
Policy Reference: security : oracle/wss11_saml_or_username_token_with_message_protection_service_policy, enabled=true
commitRepositorySession
コマンドを使用して、リポジトリに対して、現在のリポジトリ・セッションのコンテンツの書込みを行います。
たとえば、次のようにします。
wls:/jrfserver_domain/serverConfig>commitRepositorySession()
The policy set app-only-web-service-policies is valid.
Creating policy set app-only-web-service-policies in repository.
Repository session committed successfully.
また、セッション中にリポジトリに加えたすべての変更を破棄するabortRepositorySession
コマンドを使用することにより、すべての変更を取り消すことができます。
WLSTコマンドおよびその引数の詳細は、WebLogic Scripting Toolコマンド・リファレンスのWebサービスのカスタムWLSTコマンドに関する項を参照してください。
次の項では、Fusion Middleware Controlまたはコマンドライン・インタフェースWebLogic Scripting Tool (WLST)のいずれかを使用して既存のポリシー・セットを編集する方法について説明します。
既存のポリシー・セットを編集するには:
「「ポリシー・セット・サマリー」ページへの移動」の説明に従って、「ポリシー・セット・サマリー」ページに移動します。
「ポリシー・セット・サマリー」ページで、編集するポリシー・セットを選択し、「編集」をクリックします。
「一般情報の入力」ページで、「有効」チェック・ボックスを選択するか、その選択を解除して、ポリシー・セットを有効または無効にします。また、ポリシー・セットの説明を編集できます。
「名前」フィールドおよび「リソース・タイプ」フィールドが読取り専用であることに注意してください。
「次へ」をクリックします。
「リソース・スコープの入力」ページで、必要に応じてスコープを変更し、「次へ」をクリックします。
「制約の入力」ページで、必要に応じて制約を指定するか、または既存の制約を変更します。「制約の更新」をクリックし、「次へ」をクリックします。
制約の指定の詳細は、「ポリシー・セットの実行時制約の指定」を参照してください。
「ポリシー参照の追加」ページで、必要に応じてポリシー・アタッチメントを変更します。完了したら、「検証」をクリックして、選択されたポリシーの組合せが有効であることを確認します。
「次へ」をクリックし、「ポリシー・セット・サマリー」ページを表示します。
ポリシー・セット・サマリー情報を確認します。満足のいくポリシー・セットが得られた場合は「保存」をクリックします。
ポリシー・セットを編集するには:
「WebサービスのカスタムWLSTコマンドへのアクセス」の説明に従って、WebLogic Serverの実行中のインスタンスに接続します。
beginRepositorySession
コマンドを使用してリポジトリ・セッションを開始します。
たとえば、次のようにします。
wls:/jrfserver_domain/serverConfig> beginRepositorySession()
Repository session begun.
modifyPolicySet
コマンドを使用して、編集する既存のポリシー・セットを選択します。
modifyPolicySet(name)
名前付きポリシー・セットの最新バージョンが現在のセッションにロードされます。たとえば、ポリシーを追加するためにポリシー・セットを編集するには、次のコマンドを使用します。
wls:/jrfServer_domain/serverConfig> modifyPolicySet('all-domains-default-web-service-policies')
The policy set is ready for modification in the session.
必要応じて、ポリシー・セットを編集します。たとえば、次のようにします。
ポリシー・セットにポリシーを追加するには、attachPolicySetPolicy
コマンドを使用して、uri
引数で指定するURIによりポリシーを識別します。
attachPolicySetPolicy(uri)
oracle/wss_saml_or_username_token_service_policy
ポリシーおよびoracle/log_policy
ポリシーをポリシー・セットに追加するには、次のコマンドを入力します。
wls:/jrfServer_domain/serverConfig> attachPolicySetPolicy('oracle/wss_saml_or_username_token_service_policy') Policy reference added. wls:/jrfServer_domain/serverConfig>attachPolicySetPolicy('oracle/log_policy') Policy reference added.
ポリシー・セットからポリシーを削除するには、detachPolicySetPolicy
コマンドを使用して、uri
引数で指定するURIによりポリシーを識別します。
detachPolicySetPolicy(uri)
ポリシー・セットからoracle/wss11_saml_or_username_token_with_message_protection_service_policy
を削除するには、次のように入力します。
wls:/jrfServer_domain/serverConfig> detachPolicySetPolicy('oracle/wss11_saml_or_username_token_with_message_protection_service_policy')
Policy reference removed.
ポリシー・セット内でポリシー・アタッチメントを有効または無効にするには、enablePolicySetPolicy
コマンドを使用して、uri
引数で指定するURIによりポリシーを識別します。
enablePolicySetPolicy(uri,[enable=true])
デフォルトはtrue
です。
oracle/log_policy
を無効にするには、次のように入力します。
wls:/jrfServer_domain/serverConfig> enablePolicySetPolicy('oracle/log_policy',false)
Policy reference disabled.
必要に応じて、構成のオーバーライドまたは実行時制約を指定します。詳細は、次のトピックを参照してください。
ValidatePolicySet
コマンドを使用してポリシー・セットを検証します。
たとえば、次のようにします。
wls:/jrfServer_domain/serverConfig> validatePolicySet()
The policy set app-only-web-service-policies is valid.
必要に応じて、displayPolicySet
コマンドを使用して、変更後のポリシー・セットを表示します。
wls:/jrfServer_domain/serverConfig>displayPolicySet()
Policy Set Details:
-------------------
Name: all-domains-default-web-service-policies
Type of Resources: Web Service Endpoint
Scope of Resources: Domain("*")
Description: Default policies for web services in any domain
Enabled: true
Policy Reference: security : oracle/wss_saml_or_username_token_service_policy, enabled=true
management : oracle/log_policy, enabled=false
リポジトリに対して、現在のリポジトリ・セッションのコンテンツの書込みを行うために、commitRepositorySession
コマンドを使用します。
wls:/jrfServer_domain/serverConfig> commitRepositorySession()
The policy set all-domains-default-web-service-policies is valid.
Updating policy set all-domains-default-web-service-policies in repository.
Repository session committed successfully.
また、セッション中にリポジトリに加えたすべての変更を破棄するabortRepositorySession
コマンドを使用することにより、すべての変更を取り消すことができます。
WLSTコマンドおよびその引数の詳細は、WebLogic Scripting Toolコマンド・リファレンスのWebサービスのカスタムWLSTコマンドに関する項を参照してください。
リソース・タイプ(つまり、サブジェクト・タイプ)は、ポリシー・セットが適用されるエンドポイントのタイプを識別します。これは、ポリシー・セットのappliesTo
属性にマッピングされます。
リソース・スコープ式は、ポリシー・セットがアタッチされるポリシー・サブジェクト・セットを識別します(0個、1個または多数個が可能です)。これは、ポリシー・セットのattachTo
属性にマッピングされ、複数のポリシー・セットが存在する場合に競合の解決に使用されます。ポリシー・セットでの競合の解決に関する詳細は、「ポリシーの有効セットの計算方法」を参照してください。
リソース・セット全体でグローバルにポリシーをアタッチするには、ポリシー・セットが適用されるポリシー・サブジェクトのタイプ、およびエンタープライズのトポロジ内のリソース・スコープを指定する必要があります。
Fusion Middleware Controlで、ポリシー・セットを作成しているときに、メニューからリソース・タイプを選択します。WLSTを使用してポリシー・セットを作成する場合、こうしたリソース・タイプに対応する特定の略語を使用する必要があります。表9-1に、Fusion Middleware Controlで選択したリソースのタイプ、WLSTで必要な略語および各リソース・タイプに有効なリソース・スコープをリストします。
注意: サーバー・インスタンス・スコープを使用すると信頼できない結果が発生する可能性があるため、特にクラスタを含む複数サーバーにターゲット指定されたアプリケーションではお薦めしません。 |
表9-1 ポリシー・サブジェクトのリソース・タイプ
Fusion Middleware Control |
WLST | 有効なリソース・スコープ |
---|---|---|
RESTfulリソース |
rest-resource |
注意: サーバー・インスタンスは、RESTfulリソースの有効なリソース・スコープではありません。 |
SOAコンポーネント |
sca-component |
|
SOA参照 |
sca-reference |
|
SOAサービス |
sca-service |
|
Webサービス・エンドポイント |
ws-service |
|
Webサービス・クライアント |
ws-client |
|
Webサービス接続 |
ws-connection |
|
非同期コールバック・クライアント |
ws-callback |
|
Fusion Middleware Controlで、リソース・スコープに関連付けられている名前を表すパターン文字列を入力することにより、スコープを指定します。たとえば、ドメイン内のすべてのWebサービス・エンドポイントにポリシー・セットをアタッチするには、「ドメイン名」フィールドにドメインの名前を表すパターンを入力します。WLSTでリソース・スコープを指定する場合、各スコープについてサポートされる式を使用する必要があります。サポートされる式は、表9-2を参照してください。こうした式は、次の引数で必要になります。
createPolicySet
コマンドおよびclonePolicySet
コマンドのattachTo
引数
attachPolicySet
コマンドのexpression
引数
Fusion Middleware ControlおよびWLSTの両方について、名前全体またはワイルドカードを使用した部分値を入力できます。該当位置で任意の数の文字に一致するワイルドカード文字としてアスタリスク(*)を文字列内の任意の場所で使用できます。また、文字列内の任意の位置で複数のワイルドカードを指定できます。たとえば、ドメイン名jrf_domain
に対しては、jrf*、*rf*domain、または任意の個数の組合せを入力できます。1つのスコープについて1つのパターンのみを提供する必要があります。リソース・スコープについてパターン文字列を指定しない場合、アスタリスク(*)が想定されます。一重引用符または二重引用符を使用できます。複数の値を指定した場合、ポリシー・サブジェクトにアタッチすることが考慮されているポリシー・セットにすべての式が一致する必要があります。
次に、リソース・スコープについてサポートされる式のリストを示します。
表9-2 リソース・スコープについてサポートされる式
サポートされる式 | 説明 |
---|---|
Domain("expression") |
この値は、デプロイされた管理ドメインに基づくポリシー・サブジェクトに一致します。 |
Server("expression") |
この値は、デプロイされたサーバー・インスタンスに基づくポリシー・サブジェクトに一致します。 注意: このスコープを使用すると信頼できない結果が発生する可能性があるため、特にクラスタを含む複数サーバーにターゲット指定されたアプリケーションではお薦めしません。 |
Application("expression") |
この値は、配置されたアプリケーションの名前に基づくポリシー・サブジェクトに一致します。 |
Partition('expression") |
この値は、配置されたパーティションの名前に基づくポリシー・サブジェクトに一致します。 |
Module("expression") |
この値は、配置されたアプリケーション・モジュールの名前に基づくポリシー・サブジェクトに一致します。 |
Composite("expression") |
この値は、配置されたSOAコンポジットの名前に基づくポリシー・サブジェクトに一致します。 注意: コンポジットの場合、式ではコンポジットの名前のみを使用すべきです。次に例を示します。
式には、SOAパーティションまたはコンポジット・リビジョン番号を含めないでください。 |
Reference("expression") |
この値は、配置された参照の名前に基づくポリシー・サブジェクトに一致します。 |
Service("expression") |
この値は、配置されたサービスの名前に基づくポリシー・サブジェクトに一致します。 注意: Webサービス・エンドポイントおよびWebサービス・クライアントのリソース・タイプ(ws-serviceおよびws-client)では、式にネームスペースおよびサービス名を含める必要があります。次に例を示します。
PS5の前にアセンブルされたアプリケーションでは、 |
Component("expression") |
この値は、配置されたコンポーネントの名前に基づくポリシー・サブジェクトに一致します。 |
Port("expression") |
この値は、配置されたポートの名前に基づくポリシー・サブジェクトに一致します。 |
PS5の前にアセンブルされたアプリケーションでは、WLSTコマンドの出力またはサービス名が表示されるFusion Middleware Controlにネームスペースが表示されません。Webサービス・エンドポイントおよびWebサービス・クライアントのリソース・タイプ(ws-serviceおよびws-client)のリソース・スコープとしてサービスを指定するには、サービス名にネームスペースを含める必要があります。WebサービスのWSDLドキュメントからサービスのネームスペースを決定できます。これを行うには、次の手順を実行します。
「WebサービスWSDLドキュメントの表示」の説明に従って、Webサービス・エンドポイントのWSDLドキュメントを表示します。
WSDLドキュメントで、サービスのターゲット・ネームスペースを含むwsdl:definitions
要素を特定します。
たとえば、TestService WSDLで、次のようにします。:
http://host:7001/jaxws-service/TestService?WSDL
次のwsdl:definitions
要素が含まれます。
<wsdl:definitions name="TestService"targetNamespace="http://service.jaxws.wsm.oracle/">
完全なサービス名を指定するには、ネームスペースとサービス名を組み合せます。前記の例では、完全なサービス名は次のようになります。
{http://service.jaxws.wsm.oracle/}TestService
次の例では、様々なリソース・タイプおよびスコープを使用してポリシー・セットを作成する方法を示しています。
例9-1では、非同期コールバック・クライアント(ws-callback)リソース・タイプのポリシー・セットを作成しています。この例では、ポリシー・セットが特定のアプリケーション・スコープにアタッチされ、フィルタ条件(Domain
AND Application
)を満たすすべてのサービスに適用されます。
例9-1 非同期コールバック・クライアント・リソース・タイプのポリシー・セット
beginRepositorySession() createPolicySet('Async callback client', 'ws-callback', 'Domain('FinancialDomain') and Application('Expense*')', 'Global policy for asynchronous callback client', true) attachPolicySetPolicy('oracle/wss10_saml_token_client_policy') validatePolicySet() commitRepositorySession() displayPolicySet('Async callback client')
例9-2では、Webサービス接続(ws-connection)リソース・タイプのweb_connection_cost_serviceという名前のポリシー・セットを作成しています。この例では、ポリシー・セットが特定のアプリケーション・モジュール・スコープにアタッチされ、フィルタ条件(Domain
AND Application
AND Module
)を満たすすべてのサービスに適用されます。
例9-2 Webサービス接続リソース・タイプのポリシー・セット
beginRepositorySession() createPolicySet('web_connection_cost_service', 'ws-connection', 'Domain("SCMDomain") and and Application("ScmCst*") and Module("*Costs")', enable=true) attachPolicySetPolicy('oracle/wss10_saml_token_client_policy') validatePolicySet() commitRepositorySession() displayPolicySet('web_connection_cost_service')
ポリシー・セットの検証では、ポリシー・セットが「ポリシー・サブジェクトの検証」に記載されたルールに準拠するかどうかの検証に加えて、次のチェックも実行されます。
定義されたリソース・タイプおよびスコープがポリシー・セットに対して有効であること。
リソース・スコープに対して入力された値に、サポートされる形式でサポートされる式が含まれていること。
参照されたすべてのポリシーが使用可能であり、相互に互換性があること。たとえば、ポリシーのカテゴリが相互に競合しない場合、ポリシーには互換性があります。
注意: ポリシー・アタッチメント間に競合が存在しないことを確認するために、Fusion Middleware ControlおよびWLSTコマンドを使用して、Webサービス・エンドポイントに有効でセキュアな構成が含まれるかどうかを判断できます。詳細は、「エンドポイントのセキュア・ステータスの決定」を参照してください。 トラブルシューティングの詳細は、「WLSTを使用したポリシー・アタッチメントの問題の診断」を参照してください。 |
ポリシー・セットで参照されたポリシーにオーバーライド可能プロパティが含まれる場合、Fusion Middleware ControlまたはWLSTのいずれかを使用して、該当ポリシー・セットのプロパティの既存値をオーバーライドできます。
ポリシー・セットで参照されたポリシーの構成プロパティをオーバーライドするには:
「「ポリシー・セット・サマリー」ページへの移動」の説明に従って、「ポリシー・セット・サマリー」ページに移動します。
「ポリシー・セット・サマリー」ページから、オーバーライドを構成するポリシーを含むポリシー・セットを選択します。
オーバーライド可能プロパティを含むポリシーをポリシー・セットで参照している場合、図9-7に示すように、「ポリシー構成のオーバーライド」ボタンが表示されます。
「ポリシー構成のオーバーライド」を選択します。
図9-8に示すように、「ポリシー構成のオーバーライド」ページが表示されます。
「ポリシー参照」表で、構成プロパティをオーバーライドするポリシーを選択します。ポリシーにオーバーライド可能プロパティが含まれる場合、「ポリシー構成のオーバーライド」ボタンが表示されます。
「ポリシー構成のオーバーライド」を選択します。「セキュリティ構成の詳細」ページに、選択したポリシーでオーバーライドできる構成プロパティのリストが表示されます。
図9-9に、oracle/wss11_saml_or_username_token_with_message_protection_service_policy
のオーバーライド可能プロパティを示します。
プロパティの「値」フィールドにオーバーライド値を入力し、「適用」をクリックします。
ポリシー・セットが適用されるすべてのエンドポイントで、プロパティがオーバーライドされます。
構成オーバーライドおよびオーバーライドできるプロパティの詳細は、次の項を参照してください。
setPolicySetPolicyOverride
コマンドを使用して、ポリシー・セットで参照されているポリシー内の構成オーバーライドを指定できます。このコマンドは、リポジトリ・セッションのコンテキストでポリシー・セットの作成または変更中にのみ使用できます。次の手順は、既存のポリシー・セットの編集中に構成のオーバーライドを指定する方法ですが、新しいポリシー・セットを作成するか、既存のポリシー・セットからポリシー・セットを作成するときにリポジトリ・セッションでこのコマンドを使用することもできます。
beginRepositorySession
コマンドを使用してリポジトリ・セッションを開始します。
たとえば、次のようにします。
wls:/jrfserver_domain/serverConfig> beginRepositorySession()
Repository session begun.
modifyPolicySet
コマンドを使用して、編集する既存のポリシー・セットを選択します。
modifyPolicySet(name)
名前付きポリシー・セットの最新バージョンが現在のセッションにロードされます。たとえば、次のコマンドを入力します。
wls:/jrfServer_domain/serverConfig> modifyPolicySet('all-domains-default-web-service-policies')
The policy set is ready for modification in the session.
必要に応じて、displayPolicySet
コマンドを使用してポリシー・セットの構成を表示します。
たとえば、次のようにします。
wls:/jrfserver_domain/serverConfig>displayPolicySet()
Policy Set Details:
-------------------
Name: all-domains-default-web-service-policies
Type of Resources: Web Service Endpoint
Scope of Resources: Domain("*")
Description: Default policies for web services in any domain
Enabled: true
Policy Reference: security : oracle/wss_saml_or_username_token_service_policy, enabled=true
management : oracle/log_policy, enabled=false
setPolicySetPolicyOverride
コマンドを使用して、構成オーバーライドを指定します。
たとえば、reference.priority
プロパティの構成オーバーライドを指定するには、次のコマンドを入力します。
wls:/jrfserver_domain/serverConfig>setPolicySetPolicyOverride('oracle/wss_saml_or_username_token_service_policy', 'reference.priority','1') The configuration override property "reference.priority" having value "1" has been added to the reference to policy with URI "oracle/wss_saml_or_username_token_service_policy".
必要に応じて、ポリシー・セットの構成を表示します。
たとえば、次のようにします。
wls:/jrfserver_domain/serverConfig>displayPolicySet() Policy Set Details: ------------------- Name: all-domains-default-web-service-policies Type of Resources: Web Service Endpoint Scope of Resources: Domain("*") Description: Default policies for web services in any domain Enabled: true Policy Reference: security : oracle/wss_saml_or_username_token_service_policy, enabled=true reference.priority=1 management : oracle/log_policy, enabled=false
reference.priority
構成オーバーライドが出力に表示されるようになったことに注意してください(前記の例の太字の部分)。
ValidatePolicySet
コマンドを使用してポリシー・セットを検証します。
たとえば、次のようにします。
wls:/jrfServer_domain/serverConfig> validatePolicySet()
The policy set all-domains-default-web-service-policies is valid.
リポジトリに対して、現在のリポジトリ・セッションのコンテンツの書込みを行うために、commitRepositorySession
コマンドを使用します。
wls:/jrfServer_domain/serverConfig> commitRepositorySession()
The policy set all-domains-default-web-service-policies is valid.
Updating policy set all-domains-default-web-service-policies in repository.
Repository session committed successfully.
アプリケーションは、外部および内部の両方のクライアントに同じサービスを公開する環境にデプロイできます。こうした環境では多くの場合、クライアントの場所に基づいて様々なセキュリティ動作を強制することが適切です。
たとえば、Webサービスをホストする単一のFusion Middlewareサーバー(WebLogic Server)から構成される環境では、2つの別個のネットワークからのHTTPリクエストをリスニングするために、フロント・エンドでOracle HTTP Serverが構成されます。この一方のネットワークはすべてのプライベート内部リクエストを転送するために使用され、他方のネットワークはすべての外部リクエストを転送するために使用されます。外部ネットワークによるアクセスは、ファイアウォールを経由します。内部ネットワークに対する物理アクセスは高度に制限されるので、このネットワークからのリクエストはすでに保護されています。したがって、認証および認可を強制することのみが必要です。メッセージ保護を強制しないことによって、サーバー上の負荷が軽減され、パフォーマンスが向上します。しかし、外部ネットワークからのすべてのリクエストは、誰でもアクセスできる可能性があるので、保護されていないものとみなされます。この場合、認証と認可に加えて、メッセージ保護(機密保護と整合性)を強制する必要があります。こうしたリクエストのパフォーマンスは低下しますが、それに代わる結果(データ・リーク、リプレイ攻撃など)はさらに悪いために、容認できるものとみなされます。
管理者は、外部ネットワークに対してポリシー・セットの適切な適用を確実に行うために、ポリシー・セットが評価される制約式を指定する必要があります。この式の値は、ポリシー・セットが関連する実行時のコンテキストを示します。
制約式では、有効なヘッダー名および値を指定する必要があります。このリリースでは、次の式が動作することが確認されています。
HTTPHeader("VIRTUAL_HOST_TYPE","External")
—外部としての制約を設定し、Oracle HTTP Serverを通じて受信するすべての外部リクエストにポリシー・セットを適用すべきであることを示します。
!HTTPHeader("VIRTUAL_HOST_TYPE","External")
—非外部としての制約を設定し、内部ネットワークからのリクエストなど、Oracle HTTP Serverを経由していないすべての受信リクエストにポリシー・セットを適用すべきであることを示します。
注意: 実行時制約関数 |
制約を指定する場合は、次のルールが適用されます。
複数のポリシー・セットで同じ制約を指定している場合、標準の有効なポリシー計算ルールが適用されます。標準の有効なポリシー・ルールの詳細は、「有効なポリシー・セットの計算方法」を参照してください。
複数のポリシー・セットで様々な制約を指定する場合、各タイプの制約に対して有効なポリシー・セットが独立して計算されます。つまり、すべての外部リクエストについて有効なポリシー・セットが評価され、すべての非外部リクエストについて別個の有効なポリシー・セットが評価されます。
ポリシー・セットで実行時制約を指定しない場合、すべてのリクエスト、つまり外部および非外部のリクエストに適用されます。
図9-10は、3つの異なるポリシー・セットで制約を使用して決定された外部および非外部のリクエストに対して有効なポリシーを示しています。
ポリシー・セット・ウィザードを使用してポリシー・セットの作成、編集またはクローンの作成を行う場合に、実行時制約を指定できます。ポリシー・セットのスコープを指定した後、「制約の入力」ページが表示されます。指定の制約を含むポリシー・セットを編集しているか、またはそのクローンを作成している場合、 図9-11に示すように、ポリシー・セットで現在構成されている制約が表示されます。新しいポリシー・セットを作成している場合は、これらのフィールドは空白になります。
制約を指定するには:
ページ上の「制約式詳細」セクションで、「有効」チェック・ボックスを選択して制約を有効にします。
必要に応じて、制約を反転するために「! (NOT)演算子」を選択します。
「HTTPヘッダー名」フィールドおよび「HTTPヘッダー値」フィールドにそれぞれ、HTTPHeader制約関数のヘッダー名およびヘッダー値を入力します。制約が有効である場合、「HTTPヘッダー名」フィールドが必要です。
たとえば、図9-11に示すように、外部クライアントにのみ適用される制約を指定するには、「HTTPヘッダー名」フィールドに「VIRTUAL_HOST_TYPE
」と入力し、「HTTPヘッダー値」フィールドに「External
」と入力します。
「制約の更新」をクリックします。
制約式が「制約」フィールドに表示されます(例: HTTPHeader('VIRTUAL_HOST_TYPE','External')
など)。
setPolicySetConstraint
コマンドを使用して、ポリシー・セット内の制約を指定できます。このコマンドは、リポジトリ・セッションのコンテキストでポリシー・セットの作成または変更中にのみ使用できます。
次の手順は、新しいポリシー・セットの作成中に実行時制約を指定する方法ですが、既存のポリシー・セットを編集するか、既存のポリシー・セットから新しいポリシー・セットを作成するときにリポジトリ・セッションでsetPolicySetConstraint
コマンドを使用することもできます。
beginRepositorySession
コマンドを使用してリポジトリ・セッションを開始します。
たとえば、次のようにします。
wls:/jrfServer_domain/serverConfig> beginRepositorySession()
Repository session begun.
新しいポリシー・セットを作成するためにcreatePolicySet
コマンドを使用します。
たとえばこのために、ドメイン・スコープで外部クライアントに認証およびメッセージ保護を提供するポリシー・セットを作成するには、次のようにします。
wls:/jrfServer_domain/serverConfig>createPolicySet('domainExternal', 'ws-service','Domain("*")','Authentication and message protection at domain scope for external clients') The policy set was created successfully in the session.
WLSTを使用してポリシー・セットを作成する場合の詳細は、「ポリシー・セットの作成」の「WLSTの使用」を参照してください。
attachPolicySetPolicy
コマンドを使用して、現在のポリシー・セットにポリシーをアタッチします。
たとえば、ポリシー・セットで指定されたサブジェクトにポリシー'oracle/wss10_message_protection_service_policy'
をアタッチするには、次のコマンドを入力します。
wls:/jrfServer_domain/serverConfig>attachPolicySetPolicy('oracle/wss11_saml_or_username_token_with_message_protection_service_policy
Policy reference added.
setPolicySetConstraint(constraint)
コマンドを使用して、実行時制約を指定します。constraint
引数では、サポートされた形式で有効な実行時制約を定義するサポートされた式を使用する必要があります。このリリースでは、次の式が動作することが確認されています。
HTTPHeader("VIRTUAL_HOST_TYPE","External")
!HTTPHeader("VIRTUAL_HOST_TYPE","External")
たとえば、外部クライアントにのみ適用される制約を指定するには、次のコマンドを入力します。
wls:/jrfServer_domain/serverConfig>setPolicySetConstraint('HTTPHeader("VIRTUAL_HOST_TYPE","External")')
Constraint updated.
必要に応じて、displayPolicySet
コマンドを使用して、現在のリポジトリ・セッション中のポリシー・セットの構成を表示します。
たとえば、次のようにします。
wls:/jrfServer_domain/serverConfig>displayPolicySet()
Policy Set Details:
-------------------
Name: domainExternal
Type of Resources: Web Service Endpoint
Scope of Resources: Domain("em_domain")
Constraint: HTTPHeader("VIRTUAL_HOST_TYPE","External")
Description: Authentication and message protection at domain scope for external clients
Enabled: true
Policy Reference: security : oracle/wss11_saml_or_username_token_with_message_protection_service_policy, enabled=true
commitRepositorySession
コマンドを使用して、リポジトリに対して、現在のリポジトリ・セッションのコンテンツの書込みを行います。
wls:/jrfServer_domain/serverConfig> commitRepositorySession()
The policy set domainMsgExternal is valid.
Creating policy set domainMsgExternal in repository.
Repository session committed successfully.
特定のエンドポイントに対してグローバルにアタッチされたポリシーを無効にする場合のために、いかなる動作も強制しない事前定義済ポリシーがFusion Middlewareインストールに含まれています。無効にするポリシーと同じカテゴリのアサーションを含むこうした事前定義済ポリシーのいずれかをアタッチすることによって、グローバルにまたは外部からアタッチされたポリシーを無効にできます。エンドポイントに直接、またはグローバルに、アプリケーションやモジュール・レベルなどの下位のスコープで、動作無効ポリシーをアタッチできます。デフォルトでは、直接アタッチされたポリシーは、グローバルにアタッチされたポリシーよりも優先され、下位のスコープでグローバルにアタッチされたポリシーは、上位のスコープでグローバルにアタッチされたポリシーよりも優先されます。詳細は、「ポリシーの有効セットの計算方法」を参照してください。
たとえば、ドメイン内のすべてのサービス・エンドポイントに認証ポリシーがグローバルにアタッチされている場合、エンドポイントに直接oracle/no_authentication_service_policy
をアタッチすることにより、特定のWebサービス・エンドポイントについて認証ポリシーを無効にできます。また、ドメイン内のアプリケーションについてのみ認証ポリシーを無効にするために、アプリケーション内のサービス・エンドポイントにのみoracle/no_authentication_service_policy
をアタッチするポリシー・セットを作成できます。
注意: 無効にしているグローバルにアタッチされたポリシーに他のアサーションが含まれる場合、それらのアサーションもまた無効になります。たとえば、無効にするグローバル・ポリシーが |
エンドポイントへの直接的なポリシーのアタッチに関する詳細は、「単一のサブジェクトへのポリシーの添付」を参照してください。動作無効ポリシーの詳細は、「動作無効ポリシー」を参照してください。
注意: こうした動作無効ポリシーは削除しないでください。これらのポリシーは、いずれも同じno_behaviorアサーションを使用します。アサーション・テンプレートは提供されていないので、これらのポリシーを削除した場合、手動で再作成する方法はありません。誤って削除した場合、リストアする唯一の方法はリポジトリを再構築することです。詳細は、「Oracle WSMリポジトリの再構築」を参照してください。 |
次の項では、Fusion Middleware Controlまたはコマンドライン・インタフェースWebLogic Scripting Tool (WLST)のいずれかを使用してポリシー・セットを有効または無効にする方法について説明します。
Fusion Middleware Controlを使用してポリシー・セットを有効または無効にするには、「ポリシー・セットの編集」の説明に従ってポリシー・セットを編集します。ポリシー・セットが無効な場合にそれを有効にするには、「有効」チェック・ボックスを選択します。ポリシー・セットを無効にするには、「有効」チェック・ボックスの選択を解除します。
残る手順では「次へ」をクリックし、「保存」をクリックして更新されたポリシー・セットを保存します。
ポリシー・セットを有効または無効にするには:
「WebサービスのカスタムWLSTコマンドへのアクセス」の説明に従って、WebLogic Serverの実行中のインスタンスに接続します。
beginRepositorySession
コマンドを使用してリポジトリ・セッションを開始します。
たとえば、次のようにします。
wls:/jrfserver_domain/serverConfig> beginRepositorySession()
Repository session begun.
modifyPolicySet
コマンドを使用して、変更するポリシー・セットを指定します。
たとえば、次のようにします。
wls:/jrfServer_domain/serverConfig> modifyPolicySet('all-domains-default-web-service-policies')
The policy set is ready for modification in the session.
enablePolicySet
コマンドを使用して、ポリシー・セットを有効または無効にします。
enablePolicySet([enable=true])
ポリシー・セットが無効な場合に、ポリシー・セットを有効にするために、enable
引数をtrue
に設定します。デフォルトはtrue
です。ポリシー・セットを無効にするには、enable
引数をfalse
に設定します。
たとえば、ポリシー・セットを無効にするには、次のようにします。
wls:/jrfServer_domain/serverConfig> enablePolicySet(false)
Policy set disabled.
ValidatePolicySet
コマンドを使用してポリシー・セットを検証します。
たとえば、次のようにします。
wls:/jrfServer_domain/serverConfig> validatePolicySet()
The policy set app-only-web-service-policies is valid.
リポジトリに対して、現在のリポジトリ・セッションのコンテンツの書込みを行うために、commitRepositorySession
コマンドを使用します。
wls:/jrfServer_domain/serverConfig> commitRepositorySession()
The policy set all-domains-default-web-service-policies is valid.
Updating policy set all-domains-default-web-service-policies in repository.
Repository session committed successfully.
また、セッション中にリポジトリに加えたすべての変更を破棄するabortRepositorySession
コマンドを使用することにより、すべての変更を取り消すことができます。
WLSTコマンドおよびその引数の詳細は、WebLogic Scripting Toolコマンド・リファレンスのWebサービスのカスタムWLSTコマンドに関する項を参照してください。
次の項では、Fusion Middleware Controlまたはコマンドライン・インタフェースWebLogic Scripting Tool (WLST)を使用してポリシー・セットを削除する方法について説明します。
ポリシー・セットを削除するには:
「「ポリシー・セット・サマリー」ページへの移動」の説明に従って、「ポリシー・セット・サマリー」ページに移動します。
「ポリシー・セット・サマリー」ページで、表からポリシー・セットを選択し、「削除」をクリックします。
削除の確認を要求するダイアログ・ボックスが表示されます。「OK」をクリックします。
リポジトリ内のポリシー・セットを削除するために、次のコマンドを使用できます。
deletePolicySet
—リポジトリ・セッションのコンテキスト内で個別のポリシー・セットを削除します。
deleteAllPolicySets
—リポジトリ内で選択したポリシー・セットまたはすべてのポリシー・セットを削除します。このコマンドは、リポジトリ・セッションの内部または外部で使用できます。
リポジトリ・セッション内で個別のポリシー・セットを削除するには:
「WebサービスのカスタムWLSTコマンドへのアクセス」の説明に従って、WebLogic Serverの実行中のインスタンスに接続します。
beginRepositorySession
コマンドを使用してリポジトリ・セッションを開始します。
たとえば、次のようにします。
wls:/jrfserver_domain/serverConfig> beginRepositorySession()
Repository session begun.
必要に応じて、listPolicySets
コマンドを使用してリポジトリ内のポリシー・セットをリストします。
wls:/jrfServer_domain/serverConfig> listPolicySets()
Global Policy Sets in Repository:
app-only-web-service-policies
all-domains-default-web-service-policies
deletePolicySet
コマンドを使用して目的のポリシー・セットを削除します。
deletePolicySet (name)
たとえば、次のようにします。
wls:/jrfServer_domain/serverConfig> deletePolicySet('app-only-web-service-policies')
The policy set was deleted successfully in the session.
リポジトリに対して、現在のリポジトリ・セッションのコンテンツの書込みを行うために、commitRepositorySession
コマンドを使用します。
wls:/jrfServer_domain/serverConfig> commitRepositorySession()
Deleting policy set app-only-web-service-policies from repository.
Repository session committed successfully.
また、セッション中にリポジトリに加えたすべての変更を破棄するabortRepositorySession
コマンドを使用することにより、すべての変更を取り消すことができます。
リポジトリ内のすべてのポリシー・セットまたは選択したポリシー・セットを削除するには:
「WebサービスのカスタムWLSTコマンドへのアクセス」の説明に従って、WebLogic Serverの実行中のインスタンスに接続します。
必要に応じて、listPolicySets
コマンドを使用してリポジトリ内のポリシー・セットをリストします。
wls:/jrfServer_domain/serverConfig> listPolicySets()
Global Policy Sets in Repository:
all-domains-default-web-service-policies
ws-1
ws-2
deleteAllPolicySets()
コマンドを使用して目的のポリシー・セットを削除します。(force
引数を使用して)すべてのポリシー・セットの削除を強制するか、削除する個別のポリシー・セットを選択するプロンプトを表示するかを指定できます。このコマンドのデフォルトはprompt
モードです。
deleteAllPolicySets(mode)
たとえば、削除するポリシー・セットを指定するには、次のようにします。
wls:/jrfServer_domain/serverConfig> deleteAllPolicySets()
Starting Operation deleteAllPolicySets ...
Policy Set Name: ws-2
Select "ws-2" for deletion (yes/no/cancel)? yes
Policy Set Name: all-domains-default-web-service-policies
Select "all-domains-default-web-service-policies" for deletion (yes/no/cancel)? no
Policy Set Name: ws-1
Select "ws-1" for deletion (yes/no/cancel)? yes
All the selected policy sets were deleted successfully from repository.
deleteAllPolicySets Operation Completed.
すべてのポリシー・セットの削除を強制するには:
wls:/jrfServer_domain/serverConfig> deleteAllPolicySets('force')
Starting Operation deleteAllPolicySets ...
All policy sets were deleted successfully from repository.
deleteAllPolicySets Operation Completed.
WLSTコマンドおよびその引数の詳細は、WebLogic Scripting Toolコマンド・リファレンスのWebサービスのカスタムWLSTコマンドに関する項を参照してください。
ダイレクト(ローカル)ポリシー・アタッチメントを外部グローバル・ポリシー・アタッチメントに移行するために(両者が同じである場合)、migrateAttachments
WLSTコマンドを使用できます。同じポリシー・アタッチメントを移行することにより、メンテナンスする必要のある物理的なアタッチメントの数が減少し、管理性が向上します。ダイレクト・ポリシー・アタッチメントのURIがグローバル・ポリシー・アタッチメントによって提供されるURIと同じであり、構成オーバーライドがない場合は、両者は同じです。次の移行はできません。
プログラム的なポリシー・アタッチメント
SOAコンポーネントに対するダイレクトまたはグローバルなポリシー・アタッチメント
注意: スコープのないオーバーライドを含むダイレクト・アタッチメントは移行されますが、スコープのあるオーバーライドを含むアタッチメントは移行されません。これは、たとえいくつかのポリシーがグローバルにアタッチされていても、 |
ポリシー・アタッチメントを移行するには:
「WebサービスのカスタムWLSTコマンドへのアクセス」の説明に従って、WebLogic Serverの実行中のインスタンスに接続します。
migrateAttachments
コマンドを使用してアタッチメントを移行します。移行を強制するか(force
)、各移行の前に確認のためのプロンプトを表示するか(prompt
)、または実行される移行を単純にリストするか(preview
)を指定できます。モードが指定されていない場合、デフォルトはprompt
です。
migrateAttachments(mode=None)
たとえば、考えられる各アタッチメントの移行について確認のためのプロンプトをデフォルトで表示するには、次のコマンドを入力します。出力には、jaxws-sut
アプリケーションについて移行可能な同じグローバル・ポリシー・アタッチメントとダイレクト・ポリシー・アタッチメントがあることに注意してください。
wls:/jrfServer_domain/serverConfig> migrateAttachments()
--------------------------------------------------------------------------------
Application Path: /jrfServer_domain/jrfServer/jaxws-sut-no-policy
Web Service Name: TestService
Module Type: web
Module Name: jaxws-service
Port: TestPort
--------------------------------------------------------------------------------
Application Path: /jrfServer_domain/jrfServer/jaxws-sut
Web Service Name: TestService
Module Type: web
Module Name: jaxws-sut-service
Port: TestPort
Policy Reference: management : oracle/log_policy, enabled=true
security : oracle/wss_username_token_service_policy, enabled=true
(global) /policysets/global/migrate_example : oracle/wss_username_token_service_policy
Migrate "oracle/wss_username_token_service_policy" (yes/no/cancel)? yes
"oracle/wss_username_token_service_policy" was migrated successfully.
このコマンドの引数の詳細は、『WebLogic Scripting Toolコマンド・リファレンス』のWebサービスのカスタムWLSTコマンドに関する項を参照してください。
インストールで提供されている事前定義済ポリシーには構成のオーバーライド(reference.priority
)が含まれており、これによって管理者はポリシー・アタッチメントを使用するプリファレンスを指示できます。デフォルトでは、他の値が指定されていない場合、アタッチされたポリシーは0
のreference.priority
を持ちます。
たとえば管理者は、ドメインのスコープでグローバルにポリシーをアタッチし、1以上のリファレンス優先度を指定することによって、ダイレクト・アタッチメントを変更する必要なく、直接アタッチされたポリシーよりも優先させることができます。管理者が特定のダイレクト・アタッチメントを例外にする場合は、そのアタッチメントのリファレンス優先度を指定し、グローバル・ポリシー・アタッチメント以上の優先度に昇格させることができます。reference.priority
について最大の整数値を持つポリシー・アタッチメントは、それが直接または外部からアタッチされたかどうか、またはそのスコープにかかわりなく、有効なポリシー計算で優先されます。
reference.priority
には、次の値を指定できます。
文字列値"true"
、"yes"
および"on"
これらの文字列値は、整数値1と等価です。その他の文字列値は、整数値0として扱われます。
次の範囲の整数値
MAX_VALUE = 2147483647または(231 - 1)
MIN_VALUE = -2147483648または(-231)
詳細は、次の各項を参照してください。
グローバル・ポリシー・アタッチメントでは、開発者、アセンブラまたはデプロイヤがアタッチするポリシーを明示的に指定しなくても、すべてのサブジェクトが保護される「デフォルトでセキュア」の方針に準拠する機能を提供しています。つまり、管理者はポリシー・セットを使用することによって、ポリシーが明示的にアタッチされていない場合でも、1つ以上のポリシーが自動的に適用されることを確認できます。
管理者は、WLSTおよびFusion Middleware Controlの両方を使用して、ドメイン内のすべてのサブジェクトが保護されているかどうか、およびエンドポイント構成が有効であるかどうかを判断できます。
次の事項に注意してください。
エンドポイントは、(直接またはグローバルに)アタッチされたポリシーで認証、認可またはメッセージ保護操作が強制される場合にセキュアであると判断されます。無効なポリシーまたはポリシー内の無効なアサーションでは何も強制されません。
有効なポリシー計算セットに従って、アタッチされたポリシーの組合せに競合がない場合に、エンドポイントは有効な構成を持ちます。詳細は、「ポリシーの有効セットの計算方法」を参照してください。
「ポリシー・アタッチメントの優先度の指定」の説明に従って、グローバルにまたは直接アタッチされたポリシーの優先度を指定できるので、直接アタッチされたポリシーの「有効」フィールドはエンドポイントに対してそのポリシーが有効であるかどうかを示します。エンドポイントの管理を簡素化するために、有効であるかどうかに関係なく、すべての直接添付されたポリシーが出力に表示されます。対照的に、グローバルにアタッチされたポリシーは、エンドポイントに対して有効であるもののみが表示されます。
Fusion Middleware Controlを使用することにより、構成が有効であるかどうか、「Webサービス・エンドポイント」ページでエンドポイントが保護されているかどうかを確認できます。図9-13に、セキュアなエンドポイントを含む有効な構成を示します。
WLSTを使用することで、WLSTコマンドlistWebServices
およびlistWebServiceClients
により、エンドポイントとそのセキュア・ステータスのリストを生成できます。例9-3に示すように、detail引数をtrue
に設定した場合、こうしたコマンドからの出力には、ドメイン内のすべてのアプリケーションおよびコンポジットに対するエンドポイントおよびポリシーの詳細、エンドポイントのセキュア・ステータス、構成のオーバーライドおよび制約が含まれます(エンドポイントに有効な構成がある場合)。
例9-3 有効でセキュアなエンドポイント構成を含むlistWebServicesOutput
wls:/jrfServer_domain/serverConfig> listWebServices(detail='true')
/jrfServer_domain/jrfServer_admin/jaxws-sut :
moduleName=jaxws-sut-service, moduleType=web, serviceName={http://namespace/}TestService
enableTestPage: true
enableWSDL: true
TestPort http://host.example.com:9315/jaxws-sut-service/TestService
enable: true
enableREST: false
enableSOAP: true
maxRequestSize: -1
loggingLevel: NULL
management : oracle/log_policy, enabled=true
security : oracle/wss_username_token_service_policy , enabled=true , effective=false
Constraint: No Constraint
(global) security : oracle/wss_saml_or_username_token_service_policy, enabled=true
/policysets/global/all-domains-default-web-service-policies : Domain("*")
reference.priority=1
Constraint: HTTPHeader('VIRTUAL_HOST_TYPE','external')
(global) security : oracle/wss10_message_protection_service_policy, enabled=true
/policysets/global/domainExternal : Domain("*")
Attached policy or policies are valid; endpoint is secure.
これらのWLSTコマンドの使用に関する詳細は、「WLSTを使用したドメインのWebサービスの表示」を参照してください。
Oracle WSMでは、ポリシーに含まれるアサーションのカテゴリに基づいてサブジェクトにアタッチ可能なポリシーの数が制限されます。ほとんどの場合、同じアサーション・カテゴリを含む複数のポリシーをアタッチすることは禁止されます。たとえば、認証アサーションを含む2つのポリシーを1つのポリシー・サブジェクトにアタッチすることはできませんが、認証アサーションを含む1つのポリシーと認可アサーションを含む1つのポリシーを同じサブジェクトにアタッチすることはできます。同じアサーション・カテゴリを含む複数のポリシーがサブジェクトにアタッチされており、アサーションが競合する場合、構成は無効であると判断されます。サブジェクトにアタッチできるポリシーの数および組合せに関する詳細は、「ポリシー・サブジェクトの検証」を参照してください。
ポリシーのアタッチメントを直接および外部(グローバル)の両方でサポートするために、サブジェクトに対して有効なポリシー・セットの決定で、各ポリシー内のアサーションのカテゴリが考慮されます。直接アタッチされたポリシーは、ポートまたはコンポーネントのスコープでアタッチされることに注意してください。デフォルトでは、指定のカテゴリのアサーションを含むポートまたはコンポーネントのスコープ(直接アタッチされたポリシーなど)でアタッチされたポリシーがサブジェクトにある場合、次のようにreference.priority
構成オーバーライドが設定されていなければ、上位のスコープで外部ポリシー・セットによって参照されている同じカテゴリの競合アサーションを含むポリシーは、サブジェクトに対して有効なポリシー・セットから除外されます。このプロセスは、各サブジェクト・スコープで繰り返されます。狭い/下位のスコープが広い/上位のスコープよりも優先されます。スコープによって決定されるポリシー・アタッチメントの降順の優先順位は次のとおりです。
ポート(スコープ:1)
コンポーネント(スコープ:1)
サービス(スコープ:2)
参照(スコープ:2)
コンポジット(スコープ:3)
モジュール(スコープ:3)
パーティション(スコープ:4)
アプリケーション(スコープ:4)
サーバー(スコープ:5)
ドメイン(スコープ:6)
たとえば、モジュール・スコープでアタッチされたかまたは直接アタッチされたポリシーと同じカテゴリの競合アサーションがアプリケーション・スコープでのポリシー・アタッチメントに含まれる場合、そのポリシー・アタッチメントはサブジェクトに対して有効なポリシー・セットから除外されます。 リソース・スコープの詳細は、「リソースのタイプおよびスコープの定義」を参照してください。
管理者は、reference.priority
構成オーバーライドを使用することによって、スコープによって決定されたデフォルトの優先度をオーバーライドし、使用されるポリシー・アタッチメントのプリファレンスを指定できます。最も高い優先度を持つポリシー・アタッチメントがそのスコープにかかわらず優先されます。
reference.priority
オーバーライドを使用する場合は、次のルールが適用されます。
最も高い優先度(最高の整数値)を持つポリシー・アタッチメントがスコープにかかわらず優先されます。
アタッチメントに同じカテゴリの競合アサーションが含まれており、同じ優先度が指定されている場合は、より固有のスコープが優先されます。
アタッチメントに同じカテゴリ、優先度およびスコープの競合アサーションが含まれる場合、構成は無効です。
ポリシー・セットに実行時制約が適用される場合、次のルールが該当します。
それぞれの一意の制約により、独立したポリシー・セットが作成されます。有効なポリシー計算は、同じ制約を含むポリシー・セット上でのみ実行されます。
ポリシー・セットで制約が指定されていない場合(デフォルト)、このポリシー・セット内のポリシー参照は別個の各制約からのポリシー・セットとマージされます。次に、各制約について有効なポリシー・セットを決定するために、各ポリシー・セット上で有効なポリシー計算が実行されます。
実行時制約の詳細は、「ポリシー・セットの実行時制約の指定」を参照してください。
ポリシー計算の有効セットでは、各ポリシー・アタッチメントのステータスが考慮されます。ポリシー、ポリシー・セット内のポリシー参照またはポリシー・セットが無効である場合、サブジェクトに対する有効なポリシー・セットから削除されます。
no reference.priority
オーバーライドを指定した場合、グローバルにアタッチされたポリシーは、下位のスコープ(たとえば、ダイレクト・アタッチメントによるポートまたはコンポーネントのスコープ)で同じカテゴリのアサーションを含むポリシーをアタッチすることによりオーバーライドできます。この特別な例として、特定のサブジェクトに対して、どのような動作も強制しない同じカテゴリのアサーションを含むポリシーをアタッチすることにより、グローバルにアタッチされたポリシーを実質的に無効にできます。どのような動作も強制しないポリシーの詳細は、「動作無効ポリシー」を参照してください。
次の例では、有効なポリシー計算の結果を示しています。
ダイレクト・アタッチメント: oracle/wss_username_token_service_policy
外部アタッチメント: oracle/wss_saml_or_username_token_service_policy @ Domain('*')
結果: 下位スコープによるダイレクト・アタッチメント— oracle/wss_username_token_service_policy
ダイレクト・アタッチメント: oracle/wss_username_token_service_policy
外部アタッチメント: oracle/wss_saml_or_username_token_service_policy @ Domain('*')
、reference.priority
=1
結果: 高優先度による外部アタッチメント—oracle/wss_saml_or_username_token_service_policy @ Domain('*')
外部アタッチメント: oracle/wss_username_token_service_policy @ Application('*')
外部アタッチメント: oracle/wss_saml_or_username_token_service_policy @ Domain('*')
結果: 下位スコープによる外部アタッチメント—oracle/wss_username_token_service_policy @ Application('*')
外部アタッチメント: oracle/wss_username_token_service_policy @ Application('*')
外部アタッチメント: oracle/wss10_message_protection_service_policy @ Domain('*')
結果: アサーション・カテゴリが競合しないために、両アタッチメントが有効です—oracle/wss_username_token_service_policy @ Application('*')
およびoracle/wss10_message_protection_service_policy @ Domain('*')
外部アタッチメント: oracle/wss_username_token_service_policy @ Domain('*')
外部アタッチメント: oracle/wss_saml_or_username_token_service_policy @ Domain('*')
結果: 無効。同じスコープで指定された競合アサーション・カテゴリを含むポリシー。
ダイレクト・アタッチメント: oracle/wss11_saml_token_with_message_protection_service_policy
外部アタッチメント: oracle/wss11_username_token_with_message_protection_service_policy @ Port('TestPort')
結果: 無効。同じスコープで指定された競合アサーション・カテゴリを含むポリシー。
ダイレクト・アタッチメント: oracle/wss11_saml_token_with_message_protection_service_policy
外部アタッチメント: oracle/wss11_username_token_with_message_protection_service_policy @ Port('TestPort')
、reference.priority="true"
結果: 高優先度のスコープによる外部アタッチメント—oracle/wss11_username_token_with_message_protection_service_policy @ Port('TestPort')
注意: グローバル・ポリシー・アタッチメントが有効になるまでにかかる時間は、Oracle WSMポリシー・アクセッサおよびポリシー・キャッシュ・プロパティ設定によって決定されます。デフォルトでは、この遅延は最大で11分です。この遅延量を削減するために、次のキャッシュ・プロパティ設定をチューニングできます。
これらのプロパティの調整の詳細は、「プラットフォーム・ポリシー・プロパティの構成」を参照してください。 |