セキュリティ ガイド

     前  次    目次     
ここから内容

Web サービスのメッセージレベルでのセキュリティのコンフィグレーション

メッセージレベルのセキュリティでは、Web サービス クライアントが Oracle Service Bus プロキシ サービスまたはビジネス サービスとの接続を確立した後、プロキシ サービスまたはビジネス サービスがこのメッセージを処理する前に SOAP メッセージに対してセキュリティ チェックが適用されます。

メッセージレベルのセキュリティは、次のように分類されます。

以下の節では、プロキシ サービスまたはビジネス サービスのメッセージレベルでのセキュリティのコンフィグレーションについて説明します。

注意 : メッセージレベルのセキュリティの実装には、メッセージレベルのカスタム認証 (カスタム トークンまたはユーザ名/パスワード) でコンフィグレーションされているプロキシ サービスが含まれます。

この節で説明するメッセージレベルのセキュリティ メカニズムは、単独で、または「カスタム認証のコンフィグレーション」で説明するメッセージレベルのカスタム認証と組み合わせて機能します。両方のセキュリティのタイプについては、「WS-Security およびカスタム ユーザ名/パスワードとトークンの組み合わせ」を参照してください。

 


メッセージレベルのセキュリティについて

Oracle Service Bus では、HTTP (HTTPS 含む) または JMS プロトコル経由で送信される SOAP メッセージに対し、メッセージレベルのセキュリティをサポートします。通常、これらのプロトコルで提供される転送レベルのセキュリティに加えて、メッセージレベルのセキュリティを使用します。転送レベル、メッセージレベル、または両方のレベルで資格を提供するように Web サービス クライアントに要求できます。両方のレベルで資格を提供するようにクライアントに要求する場合、Oracle Service Bus はプロキシ サービスの認証および認可に対してメッセージレベルの資格を使用します。

Web サービスであるプロキシ サービスまたはビジネス サービスのメッセージレベルのセキュリティ要件を指定するには、Web サービス ポリシー (WS-Policy) フレームワークを使用します。Web サービス ポリシー (WS-Policy) フレームワークについては、「Web サービスのメッセージレベルでのセキュリティのコンフィグレーション」で説明しています。

メッセージレベルのセキュリティでは、プロキシ サービスまたはビジネス サービスが、保護される操作、および Web サービス クライアントが SOAP メッセージ (操作を呼び出す要求を含む) に適用する必要がある次のセキュリティ対策を指定します。

これらのセキュリティ対策のすべてで、SOAP メッセージのセキュリティ トークンをコード化することがクライアントに要求されます。プロキシ サービスまたはビジネス サービスは、SOAP メッセージでのコード化を要求するセキュリティ トークンのタイプを指定します。

Oracle Service Bus では、次の WS-Security トークン プロファイルがサポートされます。

メッセージレベルのセキュリティの一連のアクションのサンプル

メッセージレベルのセキュリティを要求するプロキシ サービスに SOAP メッセージを送信するために、以下のアクションが発生します。

  1. Web サービス クライアントが SOAP ヘッダを生成し、そのヘッダを SOAP メッセージ エンベロープに追加します。そのヘッダには、デジタル署名、セキュリティ トークン、および他の構成要素が含まれます。
  2. プロキシ サービスは、保護されたエンベロープを処理するときに、メッセージを復号化して、セキュリティ ヘッダを削除します。
  3. 次に、メッセージがセキュリティ要件に準拠していることを確認します。たとえば、必要なメッセージ部分が署名または暗号化 (またはその両方) されているかどうか、また必要なトークンが必要なクレームと共に存在するかどうかをプロキシ サービスが確認します。
  4. プロキシ サービスからクライアントへの応答では、プロセス全体が逆方向に繰り返されます。

WS-Security (メッセージレベルのセキュリティを定義する OASIS 標準) の詳細については、『Web Services Security: SOAP Message Security 1.0 (WS-Security 2004)』を参照してください。URL は次のとおりです。
http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf

 


プロキシ サービスのメッセージレベルのアクセス制御ポリシー

メッセージの整合性とメッセージの機密性によってメッセージが仲介で参照または改ざんされていないことが保証され、メッセージ認証によってクライアントは既知のユーザであるという立証を要求されますが、これはどの既知のユーザがプロキシ サービス操作を呼び出すことを許可 (認可) されているかを指定するものではありません。

認可されたユーザにアクセスを制限するには、Oracle Service Bus Console を使用してメッセージレベルのアクセス制御ポリシーを作成します。これらのポリシーにより、認可されたクライアントからの SOAP メッセージのみをプロキシ サービスで処理できます。

 


プロキシ サービスのメッセージレベルのセキュリティのコンフィグレーション

着信メッセージレベルのセキュリティ用に次のいずれかの方法をサポートするように、プロキシ サービスをコンフィグレーションできます。

アクティブな仲介プロキシ サービスの作成 : 主な手順

アクティブな仲介として動作するようにプロキシ サービスを作成するには

  1. テキスト エディタまたは IDE で、プロキシ サービスを定義する WSDL ドキュメントを作成します。
    • ポリシーをコンソールから直接バインドする場合は、WSDL にポリシー ステートメントを含める必要はありません。
    • ポリシーを WSDL ベースにする場合は、WSDL ドキュメントに、定義済みのポリシーなどの、1 つまたは複数の Web サービス ポリシー (WS-Policy) ステートメントを追加します。
  2. Oracle Service Bus Console で、WSDL ドキュメントを Oracle Service Bus WSDL リポジトリにインポートし、すべての WSDL の依存関係を解決します。
  3. 『Oracle Service Bus Console の使い方』の「WSDL」にある「WSDL の追加」を参照してください。

  4. Oracle Service Bus をサポートするように WebLogic Security フレームワークをまだコンフィグレーションしていない場合は、クライアントからプロキシ サービスへの要求を保護するセキュリティ ポリシー アサーションが、プロキシ サービスのいずれかの操作の WS-Policy に含まれるかどうかに応じて、次の処理 (1 つまたは複数) を行います。
  5. Oracle Service Bus Console で、プロキシ サービスからクライアントへの応答を保護するセキュリティ ポリシー アサーションが、プロキシ サービスのいずれかの操作の WS-Policy に含まれるかどうかに応じて、次の処理 (1 つまたは複数) を行います。
    • 操作の応答ポリシーでデジタル署名を要求する場合は、デジタル署名資格を持つサービス キー プロバイダをコンフィグレーションする。1 つで暗号化とデジタル署名の両方の資格を持つサービス キー プロバイダを作成できます。『Oracle Service Bus Console の使い方』の「サービス キー プロバイダ」にある「サービス キー プロバイダの追加」を参照してください。
    • 操作の応答ポリシーで暗号化を指定する場合、クライアントは要求時に証明書をプロキシ サービスに送信する必要がある。プロキシ サービスはクライアントの公開鍵を使用して応答を暗号化します。クライアントの証明書は、プロキシ サービスの暗号化証明書と異なることが必要です
  6. Oracle Service Bus Console で、手順 1 でインポートした WSDL からプロキシ サービスを作成します。変更をアクティブ化します。
  7. WSDL ドキュメントに WS-Policy 添付ファイルが含まれておらず、それらを追加する場合、または、WSDL に含まれるものとは別の WS-Policy を指定する場合は、作成したプロキシ サービスを編集して、[ポリシー] タブで以下を行います。
    1. [カスタム ポリシー バインディング] を選択します。
    2. サービス全体に適用するポリシーを指定するには、サービス名エントリを展開します。[追加] をクリックして、ポリシーを検索し、選択します。
    3. 操作またはその操作の要求/応答に適用するポリシーを指定するには、操作名エントリを展開します。[追加] をクリックして、ポリシーを検索し、選択します。
    4. ポリシー バインディングを更新します。

  8. 作成したプロキシ サービスを編集して、[セキュリティ] タブから以下を行います。
    1. 手順 4 で作成したサービス キー プロバイダを指定します。
    2. [WS-Security ヘッダの処理] チェック ボックスを選択します。
    3. (省略可能) ユーザ、グループ、またはロールが保護された操作を呼び出すことができる条件を指定する、プロキシ サービスのデフォルトのメッセージレベルでのアクセス制御ポリシーを変更します。『Oracle Service Bus Console の使い方』の「セキュリティ コンフィグレーション」にある「メッセージレベルのアクセス ポリシーの編集」を参照してください。
    4. (省略可能) プロキシ サービスのメッセージレベルでのカスタム認証設定を変更します。『Oracle Service Bus Console の使い方』の「セキュリティ コンフィグレーション」にある「メッセージレベルのアクセス ポリシーの編集」を参照してください。

パススルー プロキシ サービスの作成 : 主な手順

パススルー プロキシ サービスを作成するには

  1. プロキシ サービスが、処理されていない SOAP メッセージを渡すビジネス サービスを作成します。コンフィグレーションの方法には、以下の 2 通りがあります。
  2. WSDL ドキュメントに WS-Policy 添付ファイルが含まれておらず、それらを追加する場合、または、WSDL に含まれるものとは別の WS-Policy を指定する場合は、作成したビジネス サービスを編集して、[ポリシー] タブから以下を行います。
    1. [カスタム ポリシー バインディング] を選択します。
    2. サービス全体に適用するポリシーを指定するには、サービス名エントリを展開します。 [追加] をクリックして、ポリシーを検索し、選択します。
    3. 操作またはその操作の要求/応答に適用するポリシーを指定するには、操作名エントリを展開します。 [追加] をクリックして、ポリシーを検索し、選択します。
    4. ポリシー バインディングを更新します。

  3. Oracle Service Bus Console で、WSDL ドキュメントからプロキシ サービスを作成します。手順 1 で作成したビジネス サービスで使用した WSDL ドキュメントと同じドキュメントを使用できます。変更をアクティブ化します。
  4. 作成したプロキシ サービスを後で編集する場合は、[セキュリティ] タブの [WS-Security ヘッダの処理] チェック ボックスを選択しないでください
  5. 手順 1 で作成したビジネス サービスにルーティングするように、プロキシ サービスをコンフィグレーションします。
  6. クライアントの SOAP メッセージが呼び出しを要求する操作に基づいてビジネス サービスにルーティングする場合は、SOAP 本体のアルゴリズム以外の操作選択アルゴリズムを指定するようにルーティングをコンフィグレーションする必要があります。プロキシ サービス パイプラインのアクションによって、署名または暗号化された WS-Security ヘッダまたは SOAP エンベロープの部分が変更されないことを確認します。デジタル署名されたクリアテキストのメッセージ部分を変更すると、ほとんどの場合、デジタル署名は壊れます。これは、後で署名を検証できないためです。

    『Oracle Service Bus Console の使い方』の「プロキシ サービス」を参照してください。

 


ビジネス サービスのメッセージレベルのセキュリティのコンフィグレーション : 主な手順

発信メッセージレベルのセキュリティは、Oracle Service Bus プロキシ サービスと SOAP-HTTP ビジネス サービス間のメッセージ、または Oracle Service Bus プロキシ サービスと SOAP-JMS ビジネス サービス間のメッセージに適用されます。また、このセキュリティは要求と応答の両方に適用されます。

SOAP-HTTP または SOAP-JMS Web サービスを表すビジネス サービスに対して発信メッセージレベルのセキュリティをコンフィグレーションするには

  1. テキスト エディタまたは IDE で、ポリシーを定義する WSDL ドキュメントを作成します。
  2. Oracle Service Bus Console で、Web サービスの WSDL ドキュメントを Oracle Service Bus WSDL リポジトリにインポートし、すべての WSDL の依存関係を解決します。
  3. 『Oracle Service Bus Console の使い方』の「WSDL」にある「WSDL の追加」を参照してください。

  4. Oracle Service Bus Console で、プロキシ サービスからビジネス サービスへの要求を保護する WS-Policy ステートメントが WSDL ドキュメントに含まれるかどうかに応じて次の処理 (1 つまたは複数) を行います。
    • いずれかの操作の要求ポリシーに、サポートされるトークンのタイプの 1 つとして WS-Security ユーザ名トークンによる ID アサーションが含まれる場合は、ビジネス サービスに対するサービス アカウントをコンフィグレーションする。このサービス アカウントで、プロキシ サービスがビジネス サービスに送信するユーザ名とパスワードを提供します。このビジネス サービスにルーティングするプロキシ サービスは、このサービス アカウントからユーザ名とパスワードを取得します。『Oracle Service Bus Console の使い方』の「 サービス アカウント」とビジネス サービスを参照してください。
    • いずれかの操作の要求ポリシーでパスワード ダイジェストを使用した WS-Security ユーザ名/パスワード トークンによる認証を要求する場合は、必ずパスワード ダイジェストを有効にする。「WebLogic Security フレームワークのコンフィグレーション : 主な手順」の手順 5 を参照してください。
    • 操作の要求ポリシーでデジタル署名を要求する場合は、デジタル署名資格を持つサービス キー プロバイダをコンフィグレーションする。1 つで暗号化とデジタル署名の両方の資格を持つサービス キー プロバイダを作成できます。『Oracle Service Bus Console の使い方』の「サービス キー プロバイダ」にある「サービス キー プロバイダの追加」を参照してください。
  5. ビジネス サービスの操作の応答ポリシーで暗号化を要求する場合 (つまり、ビジネス サービスがプロキシ サービスの暗号化公開鍵によって応答を暗号化する場合)、サービス キー プロバイダをコンフィグレーションして、そのサービス キー プロバイダに暗号化資格を割り当てます。『Oracle Service Bus Console の使い方』の「サービス キー プロバイダ」にある「サービス キー プロバイダの追加」を参照してください。
  6. 注意 : 暗号化されるバックエンドの応答メッセージ : ビジネス サービスの応答ポリシーで暗号化を指定する場合、プロキシ サービスは要求時に暗号化証明書をビジネス サービスに送信します。ビジネス サービスは、プロキシ サービスの公開鍵を使用して応答を暗号化します。プロキシ サービスの暗号化資格は、ビジネス サービスの暗号化資格と異なることが必要です。
  7. ビジネス サービスのポリシーが SAML アサーションの使用を指定している場合は、WebLogic SAML 資格マッピング プロバイダ V2 のアサーション側をコンフィグレーションします。詳細については、「SAML 資格マッピングのコンフィグレーション : 主な手順」を参照してください。
  8. Oracle Service Bus Console で、手順 2 でインポートした WSDL からビジネス サービスを作成します。変更をアクティブ化します。
  9. 『 Oracle Service Bus Console の使い方』のビジネス サービスを参照してください。

  10. ポリシーをサービスに直接付加する場合は、作成したビジネス サービスを編集して、[ポリシー] タブで以下を行います。
    1. [カスタム ポリシー バインディング] を選択します。
    2. サービス全体に適用するポリシーを指定するには、サービス名エントリを展開します。 [追加] をクリックして、ポリシーを検索し、選択します。
    3. 操作またはその操作の要求/応答に適用するポリシーを指定するには、操作名エントリを展開します。 [追加] をクリックして、ポリシーを検索し、選択します。
    4. [更新] をクリックして、ビジネス サービスを更新します。

  11. SOAP メッセージをビジネス サービスにルーティングするプロキシ サービスを作成します。アクティブな仲介プロキシ サービスまたはパススルー プロキシ サービスを使用できます。
  12. アクティブな仲介プロキシ サービスの作成 : 主な手順」を参照してください。

 


カスタム WS-Policy ステートメントの例

以下の節では、WS-Policy 仕様に基づき、Oracle 独自のセキュリティ ポリシー スキーマを使用して記述されたカスタム WS-Policy ステートメントの例を示します。

例 : SOAP 本体およびヘッダ部分の暗号化

SOAP メッセージの本文全体ではなく、特定の部分を暗号化またはデジタル署名するように指定する必要がある場合は、カスタム WS-Policy ファイルを作成する必要があります。

コード リスト 7-1 は、以下を実行する抽象 WS-Policy ステートメントです。

このポリシーは抽象的であるため、ビジネス サービスでは使用できません。KeyInfo 要素には、暗号化で使用する証明書が含まれません。代わりに、この WS-Policy ステートメントを使用するプロキシ サービスのアクティブ化時に、Oracle Service Bus は WS-Policy ステートメントを、プロキシ サービスと関連付けたサービス キー プロバイダの暗号化証明書とバインドします。『Oracle Service Bus Console の使い方』の「サービス キー プロバイダ」を参照してください。

図 7-1 抽象ポリシーへの証明書のバインディング

抽象ポリシーへの証明書のバインディング

また、コード リスト 7-1 では、以下も行います。

例 : ビジネス サービスの暗号化ポリシー

ビジネス サービスへのメッセージを暗号化する場合は、カスタム WS-Policy を作成する必要があります。ポリシーは具象的 (サービス キー プロバイダの証明書を使用するのではなく、暗号化証明書を含む必要があります) であること、および参照によって含めるのではなく、WSDL ドキュメントに直接記述することが必要です。

通常、ビジネス サービスへのメッセージを送信するプロキシ サービスがパススルー プロキシ サービスである場合は、ビジネス サービスへのメッセージを暗号化する必要があります。つまり、クライアントからメッセージを受信するプロキシ サービスは、SOAP メッセージを処理しません。代わりに、プロキシ サービスはメッセージをビジネス サービスにルーティングし、ビジネス サービスが Web サービス セキュリティを確保します。「プロキシ サービスのメッセージレベルのアクセス制御ポリシー」を参照してください。

コード リスト 7-2 は、具象ポリシーを含む WSDL ドキュメントです。この例では、以下に注意してください。

例 : カスタム SOAP ヘッダの暗号化

コード リスト 7-3 は、CreditCardNumber というカスタム ヘッダを暗号化する抽象 WS-Policy ステートメントです。

SOAP メッセージの本文全体ではなく、特定の部分を暗号化またはデジタル署名するように指定する必要がある場合は、カスタム WS-Policy ファイルを作成する必要があります。

このポリシーは抽象的であるため、ビジネス サービスでは使用できません。KeyInfo 要素には、暗号化で使用する証明書が含まれません。代わりに、この WS-Policy ステートメントを使用するプロキシ サービスのアクティブ化時に、Oracle Service Bus は WS-Policy ステートメントを、プロキシ サービスと関連付けたサービス キー プロバイダの暗号化証明書とバインドします。『Oracle Service Bus Console の使い方』の「サービス キー プロバイダ」を参照してください。

また、コード リスト 7-3 では、以下も行います。

例 : メッセージ本体とヘッダの署名

コード リスト 7-4 は、SOAP メッセージの次の内容へのアクセスにデジタル署名を要求する WS-Policy ステートメントです。

例 : SAML Holder-of-Key による SOAP 本体の署名

コード リスト 7-5 は、holder-of-key メソッドを使用してメッセージ本体に署名するよう SAML アサーション プロバイダに要求する WS-Policy ステートメントです。「holder-of-key」サブジェクト確認が指定された SAML トークンは、要求メッセージの整合性を確保するために、受信側で信頼されていない可能性のある X.509 証明書をサブジェクトで使用できるようにすることを目的としたものです。

2 つの SAML 確認メソッド (sender-vouches または holder-of-key) の詳細については、「WebLogic Web サービスでの SAML トークン プロファイルのサポート」を参照してください。

WebLogic Server セキュリティ ポリシー アサーションのリファレンスでは、ポリシー要素について詳細に説明しています。

この例では、以下に注意してください。

例 : SAML Sender-Vouches による SOAP 本体とヘッダの認証、署名、および暗号化

コード リスト 7-6 は、sender-vouches メソッドを使用してメッセージ本体とヘッダに署名するよう SAML アサーション プロバイダに要求する WS-Policy ステートメントです。

sender-vouches では、(サブジェクトとは異なる) アサーション側がサブジェクトの検証を保証します。受信側がアサーション側との信頼関係を確立している必要があります。

2 つの SAML 確認メソッド (sender-vouches または holder-of-key) の詳細については、「WebLogic Web サービスでの SAML トークン プロファイルのサポート」を参照してください。

WebLogic Server セキュリティ ポリシー アサーションのリファレンスでは、ポリシー要素について詳細に説明しています。

この例では、以下に注意してください。

 


ビジネス サービスのメッセージレベルのセキュリティの無効化

使用頻度の少ない設計パターンには、プロキシ サービスによる発信 WS-Security SOAP エンベロープの自動生成が回避され、XQuery 式を使用してエンベロープを作成できるものがあります。この設計パターンを使用する場合、プロキシ サービスによる発信 WS-Security SOAP エンベロープの自動生成を回避するには、$outbound メッセージ コンテキスト変数の ./ctx:security/ctx:doOutboundWss 要素の値を xs:boolean("false") に設定するアクションをプロキシ サービスのメッセージ フローに作成する必要があります。このアクションは、次のいずれかの場所で作成できます。

$outbound メッセージ コンテキスト変数については、Oracle Service Bus ユーザーズ ガイドの「メッセージ コンテキスト」を参照してください。

状況によっては、発信メッセージレベルのセキュリティを無効にしてプロキシ サービスを作成または変更したセッションをアクティブ化しようとすると、Oracle Service Bus Console に検証エラーが表示されます (エラーのあるセッションはコミットできません)。発信メッセージレベルのセキュリティを無効にしているためにセッションの検証エラーが表示される場合は、Oracle Service Bus の起動コマンドを変更して、次のシステム プロパティを true に設定します。
com.bea.wli.sb.security.wss.LaxOutboundWssValidation

次に、Oracle Service Bus を再起動します。このプロパティを true に設定すると、Oracle Service Bus Console にはエラーではなく警告が表示されます (警告メッセージが表示されるセッションはコミットできます)。

Oracle Service Bus の今後のリリースで、発信メッセージレベルのセキュリティの無効化を容易にする方法が提供される予定です。


  ページの先頭       前  次