セキュリティ ガイド

     前  次    新しいウィンドウで目次を開く     
ここから内容

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

メッセージレベルのセキュリティでは、Web サービス クライアントが AquaLogic Service Bus プロキシ サービスまたはビジネス サービスとの接続を確立した後、プロキシ サービスまたはビジネス サービスがこのメッセージを処理する前に SOAP メッセージに対してセキュリティ チェックが適用されます。メッセージレベルのセキュリティを提供するため、AquaLogic Service Bus は OASIS 標準で定義されている機能を Web サービス セキュリティ (WS-Security) に対して実装しています。

着信メッセージレベルのセキュリティは、クライアントと AquaLogic Service Bus プロキシ サービス間のメッセージに適用されます。このセキュリティは、クライアントからの要求およびクライアントに返される応答メッセージの両方に適用されます。発信メッセージレベルのセキュリティは、AquaLogic Service Bus プロキシ サービスと SOAP-HTTP ビジネス サービス間のメッセージ、または AquaLogic Service Bus プロキシ サービスと SOAP-JMS ビジネス サービス間のメッセージに適用されます。また、このセキュリティは要求と応答の両方に適用されます。

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

 


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

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

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

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

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

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

プロキシ サービスからクライアントへの応答では、プロセス全体が逆方向に繰り返されます。

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

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

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

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

 


着信メッセージレベルのセキュリティのコンフィグレーション

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

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

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

  1. テキスト エディタまたは IDE で、プロキシ サービスを定義する WSDL ドキュメントを作成します。プロキシ サービスのメッセージレベルのセキュリティ要件を指定するには、WSDL ドキュメントに 1 つまたは複数の Web サービス ポリシー (WS-Policy) ステートメントを追加します。
  2. WS-Policy ステートメントは、メッセージレベルのセキュリティ要件 (アサーション) を表す XML ステートメントです。たとえば、ある WS-Policy ステートメントに、クライアントにデジタル署名を要求するアサーションを含めることができます。AquaLogic Service Bus には、使用できる一連の WS-Policy ステートメントがあります。

    AquaLogic Service Bus WS-Policy ステートメントがセキュリティのニーズを満たしていない場合は、自分で書いた WS-Policy ステートメント (カスタム WS-Policy ステートメント) を AquaLogic Service Bus WS-Policy リポジトリにインポートできます。

    Web サービス ポリシーを使用した着信メッセージレベルのセキュリティの指定」を参照してください。

  3. AquaLogic Service Bus Console で、WSDL ドキュメントを AquaLogic Service Bus WSDL リポジトリにインポートし、すべての WSDL の依存関係を解決します。
  4. 『AquaLogic Service Bus Console の使い方』の「WSDL」にある「WSDL の追加」を参照してください

  5. AquaLogic Service Bus をサポートするように WebLogic Security フレームワークをまだコンフィグレーションしていない場合は、クライアントからプロキシ サービスへの要求を保護する WS-Policy ステートメントが WSDL ドキュメントに含まれるかどうかに応じて、次の処理 (1 つまたは複数) を行います。
  6. AquaLogic Service Bus Console で、プロキシ サービスからクライアントへの応答を保護する WS-Policy ステートメントが WSDL ドキュメントに含まれるかどうかに応じて、次の処理 (1 つまたは複数) を行います。
    • 操作の応答ポリシーでデジタル署名を要求する場合は、デジタル署名資格を持つプロキシ サービス プロバイダをコンフィグレーションする。暗号化とデジタル署名の両方の資格を持つ 1 つのプロキシ サービス プロバイダを作成できます。『AquaLogic Service Bus Console の使い方』の「プロキシ サービス プロバイダ」を参照してください。
    • 操作の応答ポリシーで暗号化を指定する場合、クライアントは要求時に証明書をプロキシ サービスに送信する必要がある。プロキシ サービスはクライアントの公開鍵を使用して応答を暗号化します。クライアントの証明書は、プロキシ サービスの暗号化証明書と異なることが必要です
  7. AquaLogic Service Bus Console で、手順 1 でインポートした WSDL からプロキシ サービスを作成します。プロキシ サービスの作成時に、次のようにします。
    • [全般的なコンフィグレーション] ページで、手順 4 で作成したプロキシ サービス プロバイダを指定する。
    • [Web サービス セキュリティ コンフィグレーション] ページで、[WS-Security ヘッダの処理] チェック ボックスを選択する。
    • 『AquaLogic Service Bus Console の使い方』の「プロキシ サービス」を参照してください

  8. AquaLogic Service Bus Console で、ユーザ、グループ、またはロールが保護された操作を呼び出すことができる条件を指定する、プロキシ サービスのデフォルトのメッセージレベルでのアクセス制御ポリシーを変更します。『AquaLogic Service Bus Console の使い方』の「セキュリティ コンフィグレーション」にある「メッセージレベルのアクセス ポリシーの編集」を参照してください。

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

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

  1. プロキシ サービスが、処理されていない SOAP メッセージを渡すビジネス サービスを作成します。このビジネス サービスは、WS-Policy ステートメントを含む Web サービスである必要があります。
  2. 発信メッセージレベルのセキュリティのコンフィグレーション : 主な手順」を参照してください。

  3. AquaLogic Service Bus Console で、WSDL ドキュメントからプロキシ サービスを作成します。手順 1 で作成したビジネス サービスで使用した WSDL ドキュメントと同じドキュメントを使用できます。
  4. プロキシ サービスの作成時に、次のようにします。

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

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

  5. AquaLogic Service Bus Console で、ユーザ、グループ、またはロールがプロキシ サービスを使用してビジネス サービスにルーティングできる条件を指定する、プロキシ サービスのデフォルトのメッセージレベルでのアクセス制御ポリシーを変更します。『AquaLogic Service Bus Console の使い方』の「セキュリティ コンフィグレーション」にある「メッセージレベルのアクセス ポリシーの編集」を参照してください。

 


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

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

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

  1. AquaLogic Service Bus Console で、Web サービスの WSDL ドキュメントを AquaLogic Service Bus WSDL リポジトリにインポートし、すべての WSDL の依存関係を解決します。
  2. 『AquaLogic Service Bus Console の使い方』の「WSDL」にある「WSDL の追加」を参照してください

    WSDL ドキュメントは、1 つまたは複数の Web サービス ポリシー (WS-Policy) ステートメントでメッセージレベルのセキュリティ要件を表す必要があります。Web サービスでデジタル暗号化が必要な場合は、暗号化証明書を埋め込んだカスタム WS-Policy ステートメントを作成する必要があります。また、この WS-Policy ステートメントを Web サービスの WSDL ドキュメントに入れる必要があります (参照として含めることはできません)。

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

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

発信メッセージレベルのセキュリティの無効化

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

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

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

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

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


  ページの先頭       前  次