この項では、Oracle Web Services Manager Gatewayを使用してデータを暗号化する手順を説明します。
SOA Order Bookingアプリケーションでは、保護されていない機密データがビジネス・プロセスによって処理されます。これは、プロセス・フロー内でのデータの送信方法を確認することで、これらの機密データを検証できるためです。
データの送信方法を確認する手順は、次のとおりです。
図10-24に示すように、SOA Order Bookingアプリケーションのプロセス・フローを確認するには、Oracle BPEL Process Manager Consoleを使用します。
図10-25に示すように、下にスクロールしてCreditServiceフローを確認します。
図10-26に示すように、「InvokeCreditService」をクリックして、メッセージの詳細を表示します。
Oracle BPEL Process Managerによって、ユーザーのクレジット・カード詳細が、クリアテキストで、検証のために与信検証サービスに送信されます。
このデータのクリアテキストによる送信を回避するには、Oracle BPEL Process Managerプロセスから与信検証サービスに送信するデータを暗号化するために、Oracle Web Services Manager Gatewayを設定して使用できます。 Oracle Web Services Manager Agentによって、ユーザーが認証され、メッセージが復号化されてパートナ・リンクに渡されます。
注意: ゲートウェイの使用は、このタスクをOracle Web Services Managerで実行するための1つの方法です。 エージェントとゲートウェイの比較については、第10.2.1項「エージェントまたはゲートウェイを使用する場合」を参照してください。 |
図10-27に、SOA Order BookingアプリケーションでのOracle Web Services Manager Gatewayの利用方法を示します。 このゲートウェイでは、クライアントがWebサービスに送信するデータが暗号化されます。
Oracle Web Services Managerによる暗号化を完了する手順は、次のとおりです。
Oracle Web Services Manager Gatewayを登録します。
WebサービスのWSDLを検索します。
ゲートウェイで保護するサービスのポリシーを登録します。
Webサービス・クライアントをゲートウェイにリダイレクトします。
証明書キーストアを作成します。
暗号化と復号化のポリシー・ステップを定義します。
メッセージの暗号化をテストします。
Oracle Web Services Manager Gatewayは仲介要素として機能し、Webサービス・リクエストのルーティングで経由するプロキシの役割を果たします。
ゲートウェイを登録する手順は、次のとおりです。
Oracle Web Services ManagerのWeb Services Manager Control Consoleにログインします。
「新規コンポーネントの追加」をクリックします。
図10-28に、BPEL Gatewayという新規のコンポーネントを示します。
「コンポーネント・タイプ」が「ゲートウェイ」であること、「コンポーネントURL」がOracle Enterprise Managerに常駐しているゲートウェイ・アプリケーションのURLと一致していることに注意してください。
「登録」をクリックします。 図10-29に、表示される確認ページを示します。
コンポーネントIDをメモし、「OK」をクリックします。
テキスト・エディタを使用して、次の場所に配置されているゲートウェイの構成ファイルを開きます。
Oracle_Home/owsm/config/gateway/gateway-config-installer.properties
gateway.component.idの値を、手順3で生成されたゲートウェイIDに置き換えます。
ファイルを保存して閉じます。
wsmadmin
コマンドライン・ツールを使用して、ゲートウェイを起動します。
この手順によって、Oracle Web Services Manager内にゲートウェイが作成されます。 ただし、この段階ではこのゲートウェイに添付されたポリシー・ステップはありません。
ゲートウェイを登録すると、Oracle Web Services Managerによって、そのゲートウェイがサーバー・システム・レジストリに追加されます。 また、一意のコンポーネントID番号がゲートウェイに割り当てられます。このIDによって、デプロイ全体にわたるすべてのアクション、およびゲートウェイから収集されたメトリック内のすべてのアクションに対するコンポーネントが識別されます。
すべてのコンポーネントに対して体系化されたネーミング規則が作成されます。 コンポーネントが次の詳細とともにわかりやすい名前で記録されます。
コンポーネントID
製品のバージョン番号
コンポーネントの説明
そのポリシーの実行点に関連するコンポーネント固有の追加詳細
前述したように、ゲートウェイは、保護対象のサービスを指定し、各サービスに実装するセキュリティ・ポリシーを定義するまでは機能しません。
Webサービスに対してOracle Web Services Managerポリシーを作成するためには、そのサービスのWSDLの場所を認識する必要があります。 サービスのWSDLはBPELに存在しないため、この情報は、UDDIレジストリやOC4Jなどの別のソースから取得する必要があります。
次の手順では、アプリケーション・サーバーからSOA Order Bookingアプリケーションの与信検証サービスに対するWSDLを取得する例を示します。
サービスのWSDLを検索する手順は、次のとおりです。
Oracle Enterprise Manager 10g Application Server Control Consoleにログインします。
「ホーム」を開きます。
WSDLの情報が必要なアプリケーションをクリックします。 この例では、SOADEMO-CREDITSERVICE-CreditService-WSというWebサービスです。
このサービスのアプリケーション・ホームページで、「Webサービス」をクリックします。
サービスのリストが表示されます。 この例でリストされているサービスは、ValidateCreditCardServiceSoapHttpのみです。 「サービスのテスト」をクリックします。
「Webサービスのテスト」をクリックします。 図10-30に示すように、このWebサービスのホームページが表示されます。
ホームページには、Webサービスで使用可能な操作のリストが表示されます。また、このホームページは、WebサービスのWSDLとそのサービスのJavaScriptスタブにリンクします。
「サービスの説明」リンクをクリックし、WebサービスのWSDLを開きます。 図10-31に、与信検証サービスに関するサービスの説明ページを示します。
ブラウザのアドレス・バーには、WSDLの場所のURLが表示されます。 このアドレスに注意してください。 次の項では、このWSDLアドレスを使用して、Oracle WSM GatewayにWebサービスを登録します。
以前に、Oracle Web Services ManagerのOracle Web Services Manager Gatewayを、クライアント・アプリケーションとWebサービス間の相互作用を保護するための最初のステップとして構成しました。
1つのゲートウェイで複数のWebサービスのセキュリティ・ポリシーを処理できます。 ここで、ゲートウェイのOracle Web Services Managerが保護するWebサービスを指定する必要があります。
ゲートウェイにWebサービスを登録する手順は、次のとおりです。
Web Services Manager Control Consoleを起動します。
「ポリシー管理」をクリックし、次に「サービスの登録」をクリックします。 使用可能なゲートウェイが表示されます。
リストで該当するゲートウェイを検索し、対応する「サービス」リンクをクリックします。
ゲートウェイに対するWebサービスのリストが表示されます。 現在、この例のBPELGatewayに定義されているサービスはありません。 「新規サービスの追加」をクリックします。
次の情報を入力してサービスを登録します。
フィールド | 値 |
---|---|
サービス名 | Gateway Service |
サービスのバージョン | 1.0 |
サービスの説明 | BPEL Gateway Service |
WSDL URL | 「サービスのWSDLの検索方法」の手順8で保存したWSDL URL |
サービス・プロトコル | Http(S) |
他のフィールドについては、デフォルトの値をそのまま使用します。
図10-32に、与信検証サービスに対して定義されたサービス詳細を示します。
「次へ」をクリックします。 2番目のページが表示され、サービス・プロトコルのパラメータが表示されます。
デフォルトをそのまま使用し、「終了」をクリックします。
確認ページが表示され、サービスが追加されたことが示されます。 「OK」をクリックします。
ゲートウェイで定義されたサービスのリストが表示されます。 このサービスは、「コミット」リンクをクリックしてコミットする必要があります。
ポリシーがコミットされたことを確認した後、「OK」をクリックします。
注意: コミット処理によって、ゲートウェイは新規サービスの詳細を使用して更新されましたが、セキュリティ・ポリシー・ステップはまだ構成されていません。 ゲートウェイでのサービスに対する暗号化ポリシー・ステップの構成、およびサーバー・エージェントでの復号化ポリシー・ステップの構成については、第10.4.8項「暗号化と復号化のポリシー・ステップの定義方法」を参照してください。 |
ゲートウェイで定義されたサービスのリストから、該当するゲートウェイ・サービスの「詳細の表示」アイコンをクリックします。 図10-33に示すように、サービスの詳細ページが表示されます。
サービスのWSDL URLをメモします。 このWSDLは、次の手順で、与信評価サービスのクライアントをゲートウェイにリダイレクトするために使用します。
Oracle Web Services ManagerのOracle Web Services Manager Gatewayを使用してWebサービスを保護するには、そのサービスが直接起動できないことを確認する必要があります。 このためには、サービスのWSDLを更新して、ゲートウェイを指し示すようにする必要があります。
たとえば、与信検証サービスのWSDLを変更して、前の手順(「ゲートウェイの登録方法」を参照)で作成したゲートウェイを指し示すようにできます。
注意: セキュリティは、元のURLを無効化することで拡張できます。 新規の保護されたURLをUniversal Description, Discovery, and Integration(UDDI)レジストリに公開すると、サービス検出が簡素化され、他のアプリケーションによる呼出しに使用できます。 |
クライアントをゲートウェイにリダイレクトする手順は、次のとおりです。
JDeveloperを起動します。
アプリケーション・ナビゲータで、アプリケーション・ファイルを検索して開きます(SOADEMO/SOAOrderBookingなど)。
「インテグレーション・コンテンツ」を開きます。
.bpelファイル(SOAOrderBooking.bpelなど)をダブルクリックします。
パートナ・リンクまで下にスクロールします。 目的のサービスを開きます。 サービスのアイコンを右クリックし、「編集」を選択します。
「パートナ・リンクの編集」ダイアログで、サービスのWSDLファイルの場所をメモします。
Oracle JDeveloper(または任意のテキスト・エディタ)でWSDLファイルを開きます。 Oracle JDeveloperのWSDLエディタでファイルを表示するには、「パートナ・リンクの編集」ダイアログで「WSDL設定」の下にある「ローカル・ファイルシステムからWSDLファイルを参照」アイコンをクリックし、ファイルを特定して「オープン」をクリックします。
図10-34に、与信検証サービスのWSDLファイルの一部を示します。
importタグのlocation属性には、WebサービスのWSDL URLが含まれています。 このURLをゲートウェイ・サービスのWSDL URLに置き換えます。
ゲートウェイ・サービスのWSDL URLは、Web Services Manager Control Consoleで、「ポリシー管理」をクリックし、次に「サービスの登録」をクリックして取得できます。 関連のゲートウェイに対する「サービス」をクリックし、そのサービスの「詳細の表示」をクリックします。
図10-35に、与信検証サービスを保護するゲートウェイのURLの例を示します。
このサービスのWSDL URLをコピーして、サービスのWSDLファイルの「location
」フィールドに貼り付けます。 図10-36に、URLを更新した後のファイルを示します。
ファイルを保存します。 プロセスをコンパイルして再デプロイします。
Oracle Web Services Managerで暗号化および復号化を実行するために、Oracle Web Services Managerキーストアには、ゲートウェイおよびエージェントの両方の証明書が含まれています。 この項では、Javaのkeytool
ユーティリティを起動して、必要なキーストアを生成します。
証明書キーストアを作成する手順は、次のとおりです。
コマンド・プロンプトを開きます。 BPEL Developer Promptである必要はありません。任意のコマンド・ウィンドウでかまいません。
JAVA_HOME
/bin
ディレクトリに移動します。
キーストアの作成に必要なパラメータを使用して、keytool
コマンドを実行します。 図10-37に示すように、このコマンドは複数行にわたりますが、改行や区切りのない1行です。
注意: keytool コマンドをパラメータなしで実行すると、コマンド・オプションを表示できます。 |
-keystore
パラメータ値を使用してキーストアの場所を指定する場合は、パスを指定できます。特定のパス要件はなく、キーストアはシステム上の任意の場所に配置できます。
図10-37の例では、カレント・ディレクトリのC:\Demo
に、orderbooking.jks
というキーストアが作成されています。
一連の質問が表示されます。 キーストアは、これらの質問に答えた後に作成されます。
コマンド・ラインおよび後続のダイアログに入力した情報をメモします。これは、この情報が後でゲートウェイのポリシー・ステップを定義するときに必要になるためです。
コマンド・ウィンドウを閉じます。
キーストアの前述の説明では、ゲートウェイ(クライアント側)に対する単一のキーストアの設定について説明しました。 実際のシナリオでは、証明書キーストアは、クライアント側とサーバー側の両方に必要です。
メッセージ・セキュリティを実装する処理によって、特定の構成詳細が生成されます。 柔軟性のために、Oracle Web Services Managerには、様々なポリシー・ステップが用意されています。 たとえば、メッセージの暗号化と署名はそれぞれ個別のポリシー・ステップで実行できます。この場合、復号化および署名の検証は、逆の順序で個別に実行する必要があります。
詳細は、次のマニュアルを参照してください。
『Oracle Web Services Manager管理者ガイド』。 付録の「Oracle Web Services Managerのポリシー・ステップ」では、特定の暗号化、復号化および署名の各ステップの使用方法とコンテキストに関する詳細について説明しています。
『Oracle Web Services Managerデプロイメント・ガイド』。 Oracle Business Process Execution Languageとの統合に関する章では、証明書をインストールして、暗号化と復号化および署名と検証を容易にする方法について説明しています。
ポリシー・ステップの設定は、1)Oracle BPEL Process ManagerクライアントからOracle WSM Gatewayに送信されたOracle Web Services Managerのメッセージを暗号化するために必要であり、2)Oracle WSM Server Agent(SOA Order Bookingアプリケーションでは、このエージェントによって与信検証サービスがラップされます)が受け取るメッセージを復号化するために必要です。
暗号化ポリシー・ステップを定義する手順は、次のとおりです。
Oracle Web Services ManagerのWeb Services Manager Control Consoleにログインします。
「ポリシー管理」を選択し、次に「サービスの登録」をクリックして、ゲートウェイを表示します。
目的のゲートウェイに対する「サービス」リンクをクリックします。 ゲートウェイに対するサービスのリストが表示されます。
目的のサービスの「編集」アイコンをクリックします。 サービスの詳細が表示されます。
第10.4.1項「ゲートウェイの登録方法」で設定したBPEL Gatewayで構成されたサービスは、BPEL Gatewayサービスのみです。
「サービス・ポリシー」で、「ポリシーの変更」をクリックします。 ポリシー・パイプラインのページが表示されます。
該当するポリシーのリクエスト・パイプラインおよびレスポンス・パイプラインには、デフォルトで、「ログ」ステップが含まれています。このステップを使用すると、SOAPメッセージをポリシー実行点で記録できます。 リクエスト・パイプラインの「パイプラインの開始」で「以下にステップを追加」を選択し、「ログ」ステップの下に新規ステップを追加します。
図10-38に示すように、「新規ステップ」ダイアログ・ボックスが表示されます。 リストから「XML暗号化」を選択します。
ダイアログ・ボックスで「OK」をクリックします。 暗号化ステップが、リクエスト・パイプラインに表示されます。
作成した「XML暗号化」ステップに対する「構成」リンクをクリックします。 図10-39に示すように、パイプライン・ステップの構成詳細ページが表示されます。
このページに入力する必要のある情報は、次のとおりです。
キーストアの場所(キーストアの作成時に指定した場所)
暗号化キーストア・タイプ(この例ではjks
)
キーストア・パスワード
復号化機能の公開鍵の別名
暗号化されたコンテンツ(BODY)
暗号化に関する追加詳細
「OK」をクリックします。
これによって、Oracle BPEL Process ManagerクライアントからWebサービスに送信するコンテンツを暗号化するためのステップが完了しました。
復号化ポリシー・ステップを定義する手順は、次のとおりです。
Web Services Manager Control Consoleで、「ポリシー管理」をクリックし、次に「ポリシーの管理」をクリックしてコンポーネント・リストを表示します。
Oracle Web Services Managerコンポーネントのリストから、目的のWebサービスに関連付けられているサーバー・エージェントを検索します。 たとえば、Authentication Agentは、与信検証サービスを保護するサーバー・エージェントです。
「ポリシー」をクリックし、デフォルトのポリシーに対応する「編集」アイコンをクリックします。
エージェント・ポリシーが表示されます。 リクエスト・パイプラインまで下にスクロールし、「パイプラインの開始」で「以下にステップを追加」をクリックし、「ログ」ステップの上に新規ステップを追加します。
「新規ステップ」リストから「XML復号化」を選択し、ダイアログ・ボックスの下にある「OK」を押します。
作成した「XML復号化」ステップに対する「構成」リンクをクリックします。 図10-40に示すように、パイプライン・ステップの構成詳細ページが表示されます。
このページに入力する必要のある情報は、次のとおりです。
キーストアの場所
復号化キーストア・タイプ(jks
)
キーストア・パスワード
復号化機能の秘密鍵の別名
復号化機能の秘密鍵のパスワード
暗号化の実施(true
)
「OK」をクリックしてから「次へ」をクリックし、次に「保存」をクリックします。
ポリシー・セット・ページで、ページ上部にある「コミット」をクリックします。
これによって、Webサービス・エンド・ポイントで受信するメッセージを復号化するステップが完了しました。
コンテンツの暗号化と復号化は、Oracle BPEL Process ManagerプロセスとWebサービス間のメッセージ・フローとして、TCPトンネリングを開いてメッセージ・トラフィックを監視することで観察できます。
注意: Oracle JDeveloperのHTTPアナライザを使用すると、プロキシがWebサービスに接続し、そのサービスがレスポンスを戻すときに渡されるSOAPメッセージのコンテンツを確認することもできます。 第5.4項「JDeveloperでのWebサービスのデバッグ、テストおよび分析」を参照してください。 |
メッセージ・トラフィックを観察する手順は、次のとおりです。
Windowsの「スタート」メニューからBPEL Developer Promptを開きます。 次に例を示します。
「スタート」メニューから、「すべてのプログラム」→「Oracle BPEL Process Manager 10.1.2」→「Developer Prompt」の順にクリックします。
Developer Promptで、次のコマンドを入力します。
obtunnel
これによって、TCPトンネリングが開始されます。
TCPMonitor Consoleで、「ポート」フィールドおよび「ホスト」フィールドに適切な値が設定されていることを確認します。たとえば、「1234
」および「8888
」などです。 値が設定されていない場合は、「停止」をクリックし、値を設定して「開始」をクリックします。
アプリケーションを実行して、メッセージ・フローを開始します。 たとえば、SOA Order Bookingアプリケーションを実行して顧客注文を発行します。 このフローは、「進行中のBPELプロセス・インスタンス」の下にあるOracle BPEL Process Manager Consoleフロー・ビューアで観察できます。
TCPトンネリング・ウィンドウを再度参照します。 上部のウィンドウは、メッセージ本文が暗号化されたことを示します。 メッセージは、このように暗号化されてネットワーク間を移動しました。 相手側のOracle Web Services Manager Server Agentでは、このメッセージがWebサービス用に復号化されます。