ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Service Busコンセプトおよびアーキテクチャ
11gリリース1(11.1.1.6.2)
B61433-05
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

3 サービス統合

この章では、Oracle Service Busのサービス統合と適応的なメッセージングの概念、その高速で信頼できるサービス仲介とプロビジョニング機能について説明します。SOAにおいてサービスの構成を担当するITデプロイメントのスペシャリストを対象としています。

この章では、以下のトピックについて説明します。

3.1 適応的なメッセージング

Oracle Service Busには、アプリケーションをエンタープライズ・クラスのサービス(Webおよびレガシー)に拡張して統合する機能があります。また、インテリジェントなブローカリング機能による再利用のためにサービスの仲介と公開を容易にする機能も備わっています。

図3-1 Oracle Service Busの適応的なメッセージング

図3-1の説明が続きます
「図3-1 Oracle Service Busの適応的なメッセージング」の説明

Oracle Service Busを使用すると、サービス・プロバイダとクライアントが互いに直接メッセージを交換するかわりにプロキシ・サービスを仲介するようになるので、種類の異なる通信プロトコルやメッセージ・フォーマットにより生じる複雑さをなくすことができます。次のオペレーション機能を利用することで、高速で信頼できるサービスの仲介機能が提供されます。

Oracle Service Busは、Webサービスや従来のメッセージング・プロトコル、レガシーおよび専用の統合テクノロジとの互換性について、業界でも最高水準のサポートを行っており、理想的なサービス統合および適応的なメッセージング・ソリューションです。以下のトピックでは、Oracle Service Busを使用したサービス統合と適応的なメッセージングに関係する概念について説明します。

3.1.1 サービス

Oracle Service Busでは、サービス統合の関係は、ポリシーとプロキシ・サービスを構成することにより動的に実装されます。プロキシ・サービスとビジネス・サービスはどちらもプロキシ・サービスによって呼び出され、次の属性を持つサービスとして作成されます。

  • 「ポート」と呼ばれる一連の具象インタフェース(「エンドポイント」とも呼ばれます)。それぞれがトランスポート・アドレスと関連構成を持ちます。一連のポートは、ビジネス・サービスのロード・バランシングおよびフェイルオーバーの代替機能を果たします。プロキシ・サービスは、単一のポートしか持ちません。

  • 単一の抽象インタフェース(任意指定)。インタフェースのメッセージ部の構造が定義され、必要に応じて、オペレーション別に定義できます。オペレーションは、Javaインタフェースのメソッドと同等です。

  • 具象メッセージへの抽象インタフェースのメッセージ部のパッケージングを定義する単一のバインディング。

  • Webサービス・セキュリティ(WS-Security)のポリシー。

3.1.2 サービスのタイプ

Oracle Service Busは、従来のWebサービス(WSDLでXMLまたはSOAPバインディングを使用)から非XMLサービスや汎用サービスまで、多くのサービス・タイプに対応しています。サービス・タイプは、ビジネスおよびプロキシ・サービスが作成されるときにサービスの登録を行うことで個別に選択され、サービス・エンドポイントとの通信で使用できるプロトコルが定義されます。Oracle Service Busのサービス・タイプには次のものがあります。

  • SOAPサービス: SOAPメッセージは、<soap:Envelope>要素内のheader変数およびbody変数のコンテンツをラップすることで作成されます。body変数に参照XMLが格納されている場合、現状のまま送信されます。つまり、参照されているコンテンツはメッセージに追加されません。attachments変数で添付が定義されている場合は、メイン・メッセージと添付データからMIMEパッケージが作成されます。各添付部分のコンテンツの処理方法は、メッセージング・サービスのコンテンツの処理方法に類似しています。

  • XMLサービス(非SOAP): XMLベースのサービスへのメッセージはXMLですが、プロキシ・サービスの構成で許可された任意の型を使用できます。添付を含むメッセージの場合、そのコンテンツは、プライマリXMLペイロードをその一部として(通常は最初の部分、または最上位のContent-Typeヘッダーで指定される部分)含むMIMEパッケージです。

  • メッセージング・サービス: メッセージング・サービスは、あるデータ型のメッセージを受信し、レスポンスとして別のデータ型のメッセージを返すことができます。サポートされるデータ型には、XML、メッセージ・フォーマット言語(MFL)、テキスト、型なし、バイナリ、およびインタフェースがWSDLで記述されていない添付などがあります。

Oracle Service Busでは、HTTPとJMSの非同期転送プロトコルの双方向(リクエストとレスポンス)および一方向のパラダイムがサポートされます。基底のトランスポートが順序付きメッセージ配信に対応している場合、Oracle Service Busでも同様の拡張で対応できます。

3.1.3 転送プロトコル

Oracle Service Busでは、以下のサービス・トランスポートプロトコルがサポートされます。

  • EJB/RMI

  • 電子メール(POP/SMTP/IMAP)

  • ファイル

  • (S)FTP

  • HTTP(S)

  • JCA

  • JEJB

  • JMS (JMSを使用したMQおよびJMS/XAを含む)

  • ローカル(ESB間通信用にOracleが独自開発)

  • MQ (WebSphere MQ)

  • SB (RMIサポート)

  • SOA-DIRECT (Oracle SOA Suite)

  • Tuxedo (Oracle Tuxedo)

  • WS (WSRM、Web Services Reliable Messaging)

選択したサービス・タイプによってサービス・エンドポイントとの通信で使用されるプロトコルが定義されます。次の表にサービス・タイプとサポートされるトランスポートを示します。

サービス・タイプ 転送プロトコル

SOAP WSDLまたはXMLnic

HTTP(S)、JCA、JMS、ローカル、SB、SOA-DIRECT、WS

JMSリクエストとJMSレスポンスは、WS-Securityが有効になっているとサポートされません。

SOAP (WSDLなし)

HTTP(S)、JMS、ローカル、SB

JMSリクエストとJMSレスポンスは、WS-Securityが有効になっているとサポートされません。

トランスポート・タイプ

EJB、Flow (分割結合)、JEJB

XML (WSDLなし)

電子メール、ファイル、FTP、HTTP(S)、JMS、ローカル、MQ、SB、SFTP、Tuxedo

HTTP GETは、WSDLがないXMLだけでサポートされます。

メッセージ・タイプ(バイナリ、テキスト、MFL、XML)

電子メール、ファイル、FTP、HTTP(S)、JMS、ローカル、MQ、SFTP、Tuxedo


Oracle Service Busでは、ネイティブのカスタム接続オプションを追加するために、トランスポートSDKも用意されています。

Oracle Service Bus管理コンソールを使用して、プロキシ・サービスのトランスポートを構成する方法については、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のプロキシ・サービスの作成および管理に関する項を参照してください。

Oracle Service Bus管理コンソールを使用して、ビジネス・サービスのトランスポートを構成する方法については、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のビジネス・サービスの作成および管理に関する項を参照してください。

3.1.4 サービス・インタフェース

Oracle Service Busは、Webサービスの正式な記述の部分ではWSDLに依存します。Webサービスの場合、WSDLにはWebサービスのインタフェース、場所、および呼出し方法が記述されます。Oracle Service BusではWSDLに関する以下の2つの性質を考慮して、プロキシ・サービスおよびビジネス・サービスが定義されます。

  • インタフェース内のオペレーション、およびオペレーションのシグネチャのメッセージ部のタイプを定義する抽象WSDLインタフェース

  • メッセージ部のメッセージへのバインディング(パッケージング)、およびメッセージのトランスポートへのバインディングを定義するバインディングWSDLインタフェース

WSDLは、Oracle Service Bus管理コンソールを使用してWSDLリポジトリにインポートできます。WSDL内の参照が解決されるようにOracle Service Bus管理コンソールを使用して、すべてのスキーマとWSDLが正しくリンクされていることを確認できます。WSDLのリポジトリへの格納が終了すると、プロキシ・サービスおよびビジネス・サービスの追加時に使用できるようになります。Oracle Service Busではメッセージング・サービスに対して、独自のインタフェース表現が使用されます。

Oracle Service Bus管理コンソールを使用して、WSDLをインポートおよび解決する方法については、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のWSDLの追加に関する項を参照してください。

3.1.5 メッセージング・モデル

Oracle Service Busには複数のメッセージング・パラダイムが採用されており、次の種類の通信をサポートします。

  • 同期リクエスト/レスポンス

  • 非同期パブリッシュ1対1

  • 非同期パブリッシュ1対多

  • 非同期リクエスト/レスポンス(同期と非同期のブリッジング)

同期と非同期のブリッジングでは、同期クライアントが非同期プロバイダにリクエストを発行します。このパターンの場合、Oracle Service Busにはレスポンスをリスニングするときのタイムアウト値を使用して1つ目のJMSでメッセージをパブリッシュし、2つ目のJMSのレスポンス・キューを構成する機能があります。このタイプのサービスは、サービス・コンシューマからは同期サービスに見えます。非同期リクエスト/レスポンス・メッセージを使用すると、次のような利点があります。

  • 多数のブロックされているリクエスト/レスポンスの呼出しによって発生する可能性のあるスレッド管理の問題が解消され、リクエスト・スレッドによるブロッキングがなくなります。

  • メッセージングの信頼性が向上します。

3.1.6 メッセージ・フォーマット

Oracle Service Busでは、次のメッセージ・フォーマットがサポートされます。

  • 電子メール(添付ファイルなしまたは添付ファイル付き)

  • ヘッダー付きJMS

  • MFL (メッセージ・フォーマット言語)

  • 生データ(既知のスキーマを持たない不明確な非XMLデータ(MFLファイルなし))

  • テキスト

  • SOAPおよび添付ファイル付きSOAP (WSDLで記述されたSOAPまたは記述されないSOAP)

  • XMLおよび添付ファイル付きXML (WSDLまたはスキーマで記述されたXMLまたは記述されないXML)

3.1.7 メッセージ・コンテキスト

プロキシ・サービスによって送受信されるすべてのメッセージは、プロキシ・サービスの内部で一連のプロパティによって定義されます。これらのプロパティは、メッセージ・データや、そのメッセージに関連するメタデータを保持していますこの一連のプロパティは、メッセージ・コンテキスト(コンテキスト)と呼ばれ、コンテキスト変数を使用して実装されます。メッセージ・コンテキストはXMLスキーマによって定義されます。各コンテキスト変数は異なるプロパティに関連します。コンテキスト変数には、事前定義された変数とユーザー定義の変数があります。プロキシ・サービスの中核となるのが「コンテキスト」です。メッセージ・フローで使用されるメッセージ・コンテキストおよびコンテキスト変数の詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』の「メッセージ・コンテキスト」を参照してください。

あらかじめ定義されたコンテキスト変数には、メッセージに関する情報、トランスポート・ヘッダー、セキュリティ・プリンシパル、現在のプロキシ・サービスのメタデータ、およびプロキシ・サービスから呼び出されるプライマリ・ルーティング・サービスとパブリッシュ・サービスのメタデータが含まれます。通常は、XQuery式を使用して、メッセージ・フローのコンテキスト変数を操作します。変換およびインプレース更新アクションを使用してコンテキスト変数を変更することもできます。

メッセージ関連のコンテキスト変数である$header$bodyおよび$attachmentsは、メッセージ・フロー内のメッセージの標準書式を表します。これらはSOAPヘッダー要素、SOAP本体要素、およびMIME添付を含むラッパー変数です。コンテキストによって、すべてのメッセージがSOAPメッセージであり、非SOAPメッセージがこのパラダイムにマップされるように見えます。次の表に、メッセージ・タイプごとのマッピングを示します。

表3-1 メッセージのマッピング

メッセージ・タイプ 説明

XML

$bodyBody要素にXMLドキュメントが含まれます。添付は$attachmentsに含まれます。

バイナリ

$bodyBody要素に参照XMLドキュメントが含まれます。

添付は$attachmentsに含まれます。

MFL

ドキュメントは、XMLとの相互変換が透過的に行われ、$bodyBody要素ではXMLドキュメントとして表示されます。

添付は$attachmentsに含まれます。

テキスト

$bodyBody要素にテキストが含まれます。

添付は$attachmentsに含まれます。

ファイル、FTP、および電子メール

参照渡しドキュメントの場合、$bodyBody要素に含まれる参照XMLドキュメントは、トランスポートによってファイル・システムに格納されたドキュメントのURIを参照します。

添付は$attachmentsに含まれます。

SOAP

$bodyBody要素にSOAP本体が含まれます。$headerHeader要素にSOAPヘッダーが含まれます。

添付は$attachmentsに含まれます。


各添付の$attachmentsには、次のものが含まれます。

  • 添付ファイル:添付ファイルがXMLの場合

  • 参照XML :添付ファイルがバイナリの場合

  • テキスト:添付ファイルがテキストの場合

3.1.8 コンテンツ・タイプ

Oracle Service Busでは、種類の異なるエンドポイントとの相互運用性をサポートするために、サービスの構成で、使用するコンテンツ・タイプ、JMSタイプ、およびエンコーディングを制御できます。外部クライアントやサービスで必要になるものについては仮定を行わず、かわりにこの目的のために構成されているサービス定義の情報を使用します。Oracle Service Busのアウトバウンド・メッセージのコンテンツ・タイプは、サービス・タイプとインタフェースから派生し、次の仕様を使用します。

  • XMLまたはSOAPの場合(WSDLの有無を問わない)、コンテンツ・タイプはtext/XML

  • インタフェースがMFLまたはバイナリのメッセージングの場合、コンテンツ・タイプはbinary/octet-stream

  • インタフェースがテキストのメッセージングの場合、コンテンツ・タイプはtext/plain

  • インタフェースがXMLのメッセージングの場合、コンテンツ・タイプはtext/XML

サービスを呼び出すプロキシ・サービスのアウトバウンド・コンテキスト変数($outbound)のコンテンツ・タイプ、およびプロキシ・サービス・リクエストのインバウンド・コンテキスト変数($inbound)のコンテンツ・タイプはオーバーライドできます。さらに、サービスが管理コンソールで定義される場合に構成できるJMSタイプ(バイトまたはテキスト)があります。すべてのアウトバウンド・メッセージのエンコーディングも、サービス定義で明示的に構成します。

3.2 Oracle Service Busのリソース

Oracle Service Busのリソースとは、再利用可能なエンティティ定義またはエンティティ記述であり、通常はそれらのエンティティのメタデータが含まれています。リソースは複数のサービスで使用可能で、企業や部署全体で使用できるように標準化された定義または記述を持ちます。

Oracle Service Busのリソースおよびサービスは一連のプロジェクトとしてグループ化され、各プロジェクトはフォルダ構造を持ちます。リソースおよびサービスをプロジェクトにまとめることで、名前の競合を回避でき、ビジネス・カテゴリごとにリソースおよびサービスをまとめたり検索したりするのに便利です。

この項では、次のOracle Service Busのリソースについて説明します。

3.2.1 スキーマとデータ型

スキーマとは、基本データや構造化データのタイプを表すものです。XMLスキーマは、XMLビジネス・データが従う必要のあるルールを表すXML用語集です。XMLスキーマは、ドキュメントの構造、およびドキュメントに含まれる各要素と属性のデータ型を指定します。XMLスキーマには、他のXMLスキーマをインポートまたは含めることができます。Oracle Service Bus管理コンソールを使用してスキーマを作成する方法については、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のXMLスキーマの追加に関する項を参照してください。

Oracle Service Busでは、メッセージ・フォーマット言語(MFL)というメタデータ言語を使用して、型付きの非XMLデータの構造を記述します。Oracle Format Builderツールを使用すると、MFLドキュメントと呼ばれるデータ・ファイルとしてメタデータを作成および管理できます。MFLドキュメントの作成方法については、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』を参照してください。

3.2.1.1 タイプ・システム

Oracle Service Busには、設計時に使用できるタイプ・システムが組み込まれています。条件、インプレース更新アクション、または変換のそれぞれについてXQuery式を作成するとき、エディタで変数の型を任意に宣言できるため、XQueryの作成が容易になります。使用できる型は以下のとおりです。

  • XMLスキーマ型または要素

  • WSDL型または要素

  • MFLタイプ

3.2.2 変換マップ

変換マップは、2つの種類の異なるデータ型のソースと宛先サービス間のマッピングを記述したものです。Oracle Service Busは、XQueryまたはeXtensible Stylesheet Language Transformation (XSLT)標準のどちらかを使用したデータ・マッピングに対応しています。また、MFLで記述されたデータは自動的に同等のXMLに変換され、XQueryまたはXSLTでの変換で使用できます。ターゲット・サービスで必要な場合、結果のXMLは自動的にMFLに変換されます。

3.2.3 JAR

JAR (Java ARchive)ファイルとは、Javaクラスを含むzipファイルです。コンパイルされたJavaクラスと、プログラムを構成する関連メタデータの保存に使用します。JARはJavaコード要素用の呼出し可能なプログラム・ライブラリのように機能します(それぞれの要素に対して個別にバインディングを要求するのではなく、単一のコンピレーション・リンクが複数要素へのアクセスを提供)。

JARファイルは再使用可能なOracle Service Busリソースとして登録できます。Java終了メカニズムを提供するJavaコールアウト・アクション、EJBベースのビジネス・サービス、およびTuxedoベースのビジネス・サービスで使用されます。JARリソースの詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』の「JAR」を参照してください。

3.2.4 WSDL

WSDL (Web Service Definition Language)インタフェースは、SOAPサービスまたはXMLサービスのサービス・インタフェースを定義します。それは、インタフェース内のオペレーションを含むサービスの抽象インタフェース、およびオペレーションのシグネチャのメッセージ部の型を記述します。また、メッセージ部のメッセージへのバインディング(パッケージング)、およびメッセージのトランスポートへのバインディングを記述できます。さらに、WSDLでは、サービスの具象インタフェース(たとえば、トランスポートURL)を記述することもできます。

Oracle Service Bus管理コンソールを使用して、WSDLを構成する方法については、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のWSDLの追加に関する項を参照してください。

3.2.5 プロキシ・サービス

プロキシ・サービスは、Oracle Service Busのローカルにホストされた複数のビジネス・サービスにメッセージをルーティングするのに使用される仲介WebサービスのOracle Service Busでの定義です。プロキシ・サービスは汎用のサービスであり、インタフェースを使用してビジネス・サービスとは独立して構成できます。汎用のプロキシ・テンプレートを使用すると、プロキシ・サービスをインタフェース、メッセージ・フローの定義、およびポリシーの観点から定義することができ、コンテンツ・ベースのルーティング・ロジックに基づいてメッセージを適切なサービスに動的にルーティングします。プロキシ・テンプレートの詳細は、第5章「サービス・コンポジション」5.1.1.2項「ビジネス・サービス」を参照してください。

プロキシ・サービスは、メッセージ・データをエンドポイントのビジネス・サービスによって必要とされる適切なプロトコル形式にマップすることもでき、動的な実行時のプロトコルの切替えを実現しています。プロキシ・サービスで資格証明レベルの検証が必要な場合は、サービス・キー・プロバイダを作成して、Oracle Service Bus管理コンソールを使用したセキュリティ資格証明の管理が行えます。

Oracle Service Bus管理コンソールを使用して、プロキシ・サービスを構成する方法については、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のプロキシ・サービスの作成および管理に関する項を参照してください。

3.2.6 サービス・キー・プロバイダ

サービス・キー・プロバイダ・リソースには、プロキシ・サービスがインバウンドSOAPメッセージの復号化、アウトバウンド認証およびデジタル署名に使用する公開鍵インフラストラクチャ(PKI)資格証明情報が含まれます。PKI資格証明とは、デジタル署名や暗号化(Webサービス・セキュリティ)、およびアウトバウンドSSL認証に使用できる証明書とペアになった秘密鍵です。この証明書には、秘密鍵に対応する公開鍵が含まれています。Oracle Service Bus管理コンソールを使用して、サービス・キー・プロバイダを構成する方法については、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のサービス・キー・プロバイダの追加に関する項を参照してください。

3.2.7 アラート宛先

アラート宛先リソースは、Oracle Service Busからのアラート通知を受信できる受信者のリストを取り込みます。このリストは、メッセージ・フローで設定されたアラート・アクション、およびSLAアラート・ルールで使用されます。アラート宛先には、1つまたは複数の宛先のタイプ(レポート・データ・ストリーム、SNMPトラップ、電子メール、JMSキュー、JMSトピック)を含めることができます。電子メールおよびJMS宛先の場合は、宛先リソースに電子メール・アドレスまたはJMS URIのリストをそれぞれ含めることができます。アラート宛先は、サービスのアラート構成全体で再利用できます。

アラート宛先リソースの詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のアラート宛先に関する項を参照してください。

3.2.8 JNDIプロバイダ

Oracle Service BusのJNDIプロバイダはグローバルに使用可能なリソースで、JNDI名のオブジェクトへのアクセスに必要な接続および認証の詳細を提供します。たとえば、EJBの起動に使用されるビジネス・サービスで、エンドポイントURIにJNDIプロバイダ・リソースの名前を含めます。ビジネス・サービスが起動すると、Oracle Service Busでは参照されたJNDIプロバイダ・リソースの詳細を使用して、JNDIプロバイダへの初期接続が行われます。

JNDIプロバイダは高度な柔軟性を備えています。JNDI接続が変更された場合、修正する必要があるのはJNDIプロバイダ・リソースのみで、JNDIプロバイダを参照するそれ以外の要素は、更新された構成を自動的に使用します。

JNDI プロバイダの詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のJNDI プロバイダの追加に関する項を参照してください。

3.2.9 SMTPサーバー

SMTPサーバー・リソースは、電子メール宛先、ポート番号、および認証資格証明(必要な場合)に対応するSMTPサーバーのアドレスを指定します。それは、Oracle Service Busドメインにあるプロジェクト間で、アラート宛先リソースで使用されるグローバル・リソースです。

SMTPサーバー・リソースの詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のSMTPサーバーの追加に関する項を参照してください。

3.2.10 JCAバインディング

Oracle Service BusのJCAバインディング・リソースを使用すると、Oracle SOA Suite JCAアダプタを介して外部サービスと相互作用するビジネス・サービスとプロキシ・サービスを作成できます。JCAバインディングはサービスWSDLとOracle JDeveloperで作成された対応する.jcaファイルで構成されます。

詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のJCAバインディングに関する項を参照してください。

3.3 Oracle Service Busのセキュリティ

Oracle Service Busでは、実績のあるOracle Service BusのOracle WebLogicセキュリティ・フレームワークを使用して、より高度なセキュリティ・サービスを構成します。これには、認証、IDアサーション、認可、ロール・マッピング、監査、資格証明マッピングなどが含まれます。Oracle WebLogic Serverのセキュリティを構成した後、コンソールを使用してセキュリティを構成できます。

コンソールには事前定義されたルールがあります。これによりOracle WebLogic Serverセキュリティ・プロバイダの使用がオペレーションのいくつかの異なるレベルにおいて簡素化されます。サポートされるセキュリティ・レベルの詳細は、3.3.4項「セキュリティ・レベル」を参照してください。

Oracle Service Busのセキュリティ機能の詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のセキュリティに関する項を参照してください。

3.3.1 Oracle Web Services Manager

Oracle Service BusサービスとともにOracle Web Services Managerのポリシーを使用することで、サービスを保護できます。Oracle Web Services Managerは、Oracle SOA Suite環境およびアプリケーションを一元的に管理および制御するランタイム・フレームワークである、Oracle Enterprise Manager Fusion Middleware Controlのコンポーネントです。

詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のOracle Web Services ManagerでのOracle Service Busの保護に関する項を参照してください。

3.3.2 WS-Policy

Webサービス・ポリシー(WS-Policy)は、Webサービスのセキュリティ制約と要件を定義するための標準ベースのフレームワークです。それは、それぞれ1つまたは複数のアサーションを含む、ポリシーと呼ばれるXML文の集合でセキュリティ制約と要件を表します。Oracle Service Busでは、WS-Policyアサーションを使用して、デジタル署名や暗号化に対するWebサービスの要件、および必要なセキュリティ・アルゴリズムや認証メカニズムを指定します。

WS-PolicyポリシーはWSDLドキュメントに直接、または参照によって含まれます。WSDLドキュメントは、WS-Policyポリシーを含むか参照する他のWSDLドキュメントをインポートできます。これらのポリシーを含むXMLファイルは、複数のプロキシ・サービスまたはビジネス・サービスから使用できます。WebLogic Webサービス実行時環境では、2つのタイプのWS-Policy文を認識します。

  • 具象WS-Policy文では、認証、暗号化、およびデジタル署名のために使用されるセキュリティ・トークンを指定します。必要な認証のタイプ(X.509またはSAMLトークンの使用など)、暗号化やデジタル署名のために複数の秘密鍵と証明書のペアがキーストアから使用されることが、実行時にわかっている場合は、これらのWS-Policy文が作成されます。

  • 抽象WS-Policy文ではセキュリティ・トークンを指定しません。

抽象ポリシーが受け取るセキュリティ・トークンのタイプは、Oracle Service Busの実行時環境で決定します。実行時環境の構成については、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のOracle Service Busのプロキシ・サーバーとビジネス・サービスでのWS-Policyの使用を参照してください。

ポリシーはURIによって参照され、WSDL、HTTP URI、またはポリシーURIのいずれかに埋め込まれます(例: policy:myPolicy)。ポリシーURIでは組み込まれたポリシーを参照できます。WS-Policyの詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』を参照してください。

3.3.3 サービス・アカウント

サービス・アカウント・リソースは、ユーザー名とパスワードを提示します。このユーザー名とパスワードは、プロキシ・サービスとビジネス・サービスがアウトバウンド認証を行うとき、またはプロキシ・サービスとビジネス・サービスがFTPサーバーやJMSサーバーなどのローカルまたはリモート・リソースを認証するときに使用します。たとえば、ビジネス・サービスがWebサービスによるトランスポート・レベルの認証でユーザー名とパスワードを提示する必要がある場合、サービス・アカウントを作成してユーザー名とパスワードを指定できます。次にビジネス・サービスを構成して、サービス・アカウントの資格証明がアウトバウンド・リクエストに含まれるようにします。1つのサービス・アカウントを複数のビジネス・サービスおよびプロキシ・サービスに使用できます。サービス・アカウント・リソースの詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』の「サービス・アカウント」を参照してください。

3.3.4 セキュリティ・レベル

Oracle Service Busには、次の種類のセキュリティ機能が用意されています。

  • 認証

  • IDアサーション

  • 認可

  • 監査

  • 資格証明マッピング

次のトピックでは、Oracle Service Busのセキュリティ・モデルで使用できるセキュリティ機能について説明します。

3.3.4.1 インバウンド・セキュリティ

インバウンド・セキュリティによって、Oracle Service Busプロキシ・サービスは、認可されたクライアントからのリクエストのみを処理することが保証されます(デフォルトでは、すべての匿名ユーザーまたは認証ユーザーがプロキシ・サービスに接続できます)。また、クライアントからデータが送信されたときに、認可されていないユーザーがそのデータを参照または変更していないことが保証されます。

プロキシ・サービスは、サービス・コンシューマと他のプロキシ・サービスという2つのタイプのクライアントを持つことができます。インバウンド・セキュリティは、プロキシ・サービスの作成時に設定され、セキュリティ要件の変化によって決定されます。外向きのプロキシ・サービス(サービス・コンシューマからリクエストを受信します)の場合は、双方向SSL over HTTPSなどの厳密なセキュリティ要件が設定されます。他のOracle Service Busプロキシ・サービスからのみリクエストを受信することが保証されているプロキシ・サービスの場合は、これよりセキュリティの低いプロトコルが使用されます。プロキシ・サービスで、デジタル署名、暗号化、またはSSL認証に対して公開鍵インフラストラクチャ(PKI)テクノロジを使用する場合は、証明書とペアの秘密鍵を提供するサービス・キー・プロバイダを作成します。

各プロキシ・サービスに対し、次のインバウンド・セキュリティのチェックを構成できます。

  • トランスポート・レベルのセキュリティは、クライアントとプロキシ・サービス間の接続確立の一部としてセキュリティ・チェックを適用します。トランスポート・レベルのセキュリティによって適用できるセキュリティ要件は、プロキシ・サービスで使用するように構成するプロトコルによって異なります。サポートされる各プロトコルに対するトランスポート・レベルのセキュリティの構成については、「トランスポート・レベルのセキュリティの構成」を参照してください。詳細は、3.3.4.6項「トランスポート・レベルのセキュリティ」を参照してください。

  • カスタム認証は、メッセージ・レベルのセキュリティ用で、トランスポート・レベルおよびメッセージ・レベルのインバウンド・リクエストでのクライアント指定のカスタム認証資格証明のためのものです。カスタム認証資格証明は、カスタム・トークン、またはユーザー名とパスワードの形式になります。詳細は、3.3.5,項「カスタム・セキュリティ資格証明」を参照してください。

  • メッセージ・レベルのセキュリティは、Webサービスであるプロキシ・サービスのためのものです。これはWS-Security仕様の一部です。メッセージ・レベルのセキュリティでは、SOAPメッセージまたはSOAPメッセージの特定の部分を処理する前にセキュリティ・チェックを適用します。詳細は、3.3.4.7項「メッセージ・レベルのセキュリティ」を参照してください。

3.3.4.2 アウトバウンド・セキュリティ

アウトバウンド・セキュリティは、プロキシ・サービスとビジネス・サービス間の通信を保護します。プロキシ・サービスを構成するタスクの大半は、ビジネス・サービスが指定するトランスポート・レベルのセキュリティまたはメッセージ・レベルのセキュリティの要件に準拠しています。ビジネス・サービスでデジタル署名またはSSL認証のためにPKIテクノロジを使用する必要がある場合は、証明書とペアの秘密鍵を提供するサービス・キー・プロバイダが作成されます。詳細は、 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のサービス・キー・プロバイダに関する項を参照してください。

3.3.4.3 IDの伝播のオプション

IDの伝播のオプションでは、クライアントが提示するIDの伝播方法など、Oracle Service Busのセキュリティを設計するときの判断を行うことができます。Oracle Service Busの構成によって、次のことを実行できます。

  • クライアントが提供する資格証明を認証します。

  • 認可チェックを実行します。

  • クライアント資格証明を変更せずにビジネス・サービスに渡します。

  • ビジネス・サービスが認証および認可できる別の資格証明にクライアント資格証明をマップします。

  • セキュリティ・テクノロジ間を橋渡しします。

これらのOracle WebLogic Serverセキュリティ・プロバイダおよびOracle WebLogic Serverセキュリティ・アーキテクチャ全般の詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverセキュリティの理解』を参照してください。

Oracle Service Busセキュリティでは、WS-Policy仕様がサポートされます。WS-Policy仕様の詳細は、次の場所にあるWeb Services Policy Framework (WS-Policy)とWeb Services Policy Attachment (WS-PolicyAttachment)に関する記述を参照してください: http://specs.xmlsoap.org/ws/2004/09/policy/

Oracle Service Bus管理コンソールでは、サービスにセキュリティ・ポリシーを構成し、そのインタフェース内のメッセージにセキュリティ・ポリシーを適用できます。セキュリティ・ポリシーの適用対象として、サービスを指定することも、サービスのオペレーションに関連する個々のメッセージを指定することもできます。サービスに対してセキュリティ・ポリシーを指定した場合、そのサービスのすべてのメッセージにポリシーが適用されます。

Oracle Service Busでは、オペレーションのレベルごとに異なるOracle WebLogic Serverセキュリティ・プロバイダを使用できます。次のセキュリティのレベルがサポートされます。

セキュリティ・レベルの詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』を参照してください。

3.3.4.4 ユーザー管理

Oracle Service Busのユーザー管理は、Oracle WebLogic Serverの統合されたセキュリティ・フレームワークに基づいて作成されています。このフレームワークにより、Oracle Service Bus管理コンソールでは、任意のグループまたは個々のユーザーに割り当てられたロールに関連付けられているセキュリティ・ポリシーを基にしたタスク・レベルの認可がサポートされます。Oracle WebLogic Serverのセキュリティ・フレームワークの詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverセキュリティの理解』を参照してください。

Oracle Service Bus管理コンソールはOracle Service Busのユーザー、グループおよびロールの管理に使用されます。Oracle Service Bus管理コンソールを使用して、Oracle Service Busのユーザー、グループおよびロールを管理する方法については、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のセキュリティ構成に関する項を参照してください。

3.3.4.5 管理セキュリティ

プロキシ・サービスの作成などの管理機能にユーザーがアクセスできるようにするため、事前定義されたアクセス特権を持つ4つのセキュリティ・ロールのいずれかにユーザーを割り当てることができます。セキュリティ・ロールは、実行時に評価される条件に基づきユーザーまたはグループに動的に与えることのできるIDです。Oracle Service Bus管理セキュリティ・ロールのアクセス権限は変更できませんが、どのユーザーまたはグループをあるロールにするための条件は変更できます。

デフォルトでは、Oralce Service Busドメインで最初に作成されるユーザーはOracle WebLogic Server管理者です。このユーザーは、Oracle Service Busのすべてのオブジェクトおよび機能にアクセスでき、ユーザー管理タスクを実行してOracle Service Bus管理コンソールの機能へのアクセス制御を行うことができます。

Oracle Service Busユーザーに割り当てることのできるデフォルトのロールを次に示します。

  • IntegrationAdmin

  • IntegrationDeployer

  • IntegrationMonitor

  • IntegrationOperator

管理セキュリティの構成については、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』の「管理セキュリティの構成: 主な手順」を参照してください。

Oracle Service Bus管理コンソールを使用して、Oracle Service Busのユーザー、グループおよびロールを管理する方法については、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のセキュリティ構成に関する項を参照してください。

3.3.4.6 トランスポート・レベルのセキュリティ

Oracle Service Busでは、トランスポート・レベルの機密性、メッセージの整合性、および一方向のリクエストまたは双方向(リクエスト/レスポンス)の(クライアントからOracle Service Busへの)トランザクションでのクライアント認証がHTTPS経由でサポートされます。次のいずれかのクライアント認証を要求するように、HTTP(S)のプロキシ・サービスまたはビジネス・サービスを構成できます。

  • 基本(ユーザー名/パスワード)クライアント認証

  • クライアント証明書(双方向SSL)によるクライアント認証

  • クライアント認証なし

プロキシ・サービスがアクティブになると、シンWebアプリケーションが生成されます。Oracle Service Busは、セッション管理、クライアント証明書の検証および認証、信頼性の管理、およびサーバーのSSLキー/証明書の操作といったサーバー側SSLの部分でOracle WebLogic Serverに依存します。

Oracle Service Busでサポートされる、HTTP以外のトランスポート方式でのトランスポート・セキュリティは次のとおりです。

  • 電子メール・トランスポートおよびFTPトランスポートでは、FTPサーバーまたは電子メール・サーバー接続用の資格証明を使用したセキュリティが提供されます。

  • ファイル・トランスポートでは、ファイルが存在するマシンへのログイン・コントロールを使用したセキュリティが提供されます。

詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』を参照してください。

3.3.4.7 メッセージ・レベルのセキュリティ

Oracle Service Busでは、OASIS Web Services Security (WSS)1.0をサポートしています。WSS仕様の詳細は、次の場所にあるOASIS Web Services Security TCを参照してください: http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wss

WSSは、メッセージの機密性、整合性、およびSOAPメッセージでのセンダー認証を実現するためのフレームワークを定義します。Oracle Service BusでWSSを使用することにより、デジタル署名または暗号化、あるいはその両方を使用するメッセージを保護できます。WSSは、トランスポート・レベルのセキュリティとしては使用できませんが、エンド・ツー・エンドのメッセージで機密性および整合性を確保するのに適しています。

SOAPエンベロープの一部の要素のみに署名または暗号化、あるいはその両方を適用し、残りの要素には署名または暗号化を適用しないことが可能であるため、SSLよりも柔軟性に富んでいます。これは、Oracle Service Busの機能と結合されると、メッセージのコンテンツに基づいてデータのルーティングの決定およびデータの変換を行うための強力な機能になります。現在Oracle Service Busでは、HTTP/SおよびJMSを介したWSSがサポートされます。

3.3.5 カスタム・セキュリティ資格証明

Oracle Service BusのクライアントのIDを認証するには、基本認証、クライアント証明書(双方向SSL)、およびWebサービス・セキュリティという複数の方法があります。ビジネス・サービスおよびプロキシ・サービスに関連付けられたクライアント資格証明は、Oracle WebLogic Serverを使用して直接管理されます。トランスポート・レベルとメッセージ・レベルのインバウンド・リクエストに対するクライアント指定のカスタム認証資格証明もサポートされています。カスタム認証資格証明は、トークン、またはユーザー名とパスワードのトークンの組合せになります。

Oracle Service Busでは、以下の認証をサポートしています。

  • HTTPヘッダー、SOAPヘッダー(SOAPベースのプロキシ・サービスの場合)、またはペイロード(非SOAPプロキシ・サービスの場合)でプロキシ・サービスに渡されるカスタム・トークン。

  • SOAPヘッダー(SOAPベースのプロキシ・サービスの場合)またはペイロード(非SOAPプロキシ・サービスの場合)で渡されるユーザー名およびパスワード・トークン。

  • カスタム認証メカニズムは、単独で使用するか、またはWebサービスのメッセージ・レベル・セキュリティと組み合せて使用できます。

カスタム・セキュリティ資格証明の詳細は、『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のカスタム認証の構成に関する項を参照してください。

3.3.6 関連トピック

  • Oracle Service Busセキュリティに関するFAQ

  • 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のセキュリティ構成に関する項

  • 『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』のOracle Service Busのプロキシ・サービスとビジネス・サービスでのWS-Policyの使用に関する項

  • 『Oracle Fusion Middleware Oracle Service Bus開発者ガイド』の本番環境でのOracle Service Busの保護に関する項