(57)【特許請求の範囲】
【請求項１】
データ処理装置によってセキュリティフレームワークを使用してコンポジットアプリケーションのセキュリティをモデル化するステップであって、前記セキュリティフレームワークは、
コンポジットアプリケーションのセキュリティオブジェクティブを識別する定義フェーズと、
前記識別されたセキュリティオブジェクティブを実現するセキュリティパターンを実装する実現フェーズと、
前記セキュリティパターンに基づく前記コンポジットアプリケーション内のセキュリティアノテーションを使用して前記識別されたセキュリティオブジェクティブを実装する宣言フェーズと
を備えるステップと、
外部のポリシーネゴシエーションを実行し、前記セキュリティフレームワークの適用に基づいて前記コンポジットアプリケーションと外部のサービスの間で共通のポリシーをデータ処理装置によって指定するステップと、
前記コンポジットアプリケーションと前記外部のサービスとのインタラクションのそれぞれについて前記共通のポリシーをデータ処理装置によって実施するステップと、
前記セキュリティオブジェクティブに基づいて前記外部のサービスからローカルサービスおよびローカルオブジェクトへのアクセスをデータ処理装置によって規制するステップと
を備え、
前記定義フェーズは、
セキュリティリスク分析を実行するセキュリティリスク分析コンポーネントと、
セキュリティソリューションキャストをセキュリティパターンとして準備するセキュリティパターン定義コンポーネントと、
前記セキュリティパターンを組み合わせることによってセキュリティインテンションを定義するセキュリティインテンション定義コンポーネントと
をさらに備える方法。
【請求項２】
前記セキュリティリスク分析を実行するステップは、
ビジネスプロセスにおける脅威を分析するステップと、
前記ビジネスプロセスにおいて関連のリスクを識別するステップと
をさらに備える請求項１に記載の方法。
【請求項３】
前記セキュリティリスク分析を実行するステップは、
ビジネスプロセスに関連するサービスインタラクションメカニズムを識別するステップと、
前記識別されたサービスインタラクションメカニズムの脅威分析を実行するステップと
をさらに備える請求項１に記載の方法。
【請求項４】
前記セキュリティソリューションキャストを準備するステップは、セキュリティオブジェクティブの統一された定義を可能にするインテンションオントロジーを提供するステップをさらに備える請求項１に記載の方法。
【請求項５】
前記実現フェーズは、
ドメインに依存しないパターンを特定のコンテクストに結合し、それによって前記セキュリティパターンを実装するセキュリティパターン実装コンポーネントと、
前記実装されたセキュリティパターンをパターンリポジトリに格納するセキュリティパターンプロビジョニングコンポーネントと
をさらに備える請求項１に記載の方法。
【請求項６】
前記宣言フェーズは、
前記コンポジットアプリケーションが従うセキュリティインテンションを宣言するアプリケーションレベルのインテンション宣言コンポーネントと、
前記コンポジットアプリケーションをサービスとして公開する前にローカルコンポーネントへのセキュリティインテンションを定義するサービスレベルのインテンション宣言コンポーネントと
をさらに備える請求項２に記載の方法。
【請求項７】
認可ポリシーを生成するステップと、
ポリシー更新プロトコルを使用して欠落するポリシーをバックエンドポリシーデータベースに挿入するステップと
をさらに備える請求項1に記載の方法。
【請求項８】
前記セキュリティインテンションは、タスクの実行を許可されるロールまたは前記タスクが実行される順序を指定する請求項1に記載の方法。
【請求項９】
前記セキュリティアノテーションはポリシードメイン固有言語を使用して表現される請求項1に記載の方法。
【請求項１０】
前記セキュリティインテンションは、外部のWebサービスを使用する場合に外部の実施ポリシーを宣言し、呼び出されたビジネスプロセスをWebサービスとして公開する場合にポリシーを宣言し、前記タスクが人的インタラクションを必要とする場合にタスクベースの認可要件を宣言し、さらに前記タスクが実行される順序を指定するタスクベースの認可制約を宣言する請求項1に記載の方法。
【請求項１１】
コンピュータ読み取り可能な記録媒体であって、マシンで読み込まれた場合に、データ処理装置が、セキュリティフレームワークを使用してコンポジットアプリケーションのセキュリティをモデル化し、前記セキュリティフレームワークは、
コンポジットアプリケーションのセキュリティオブジェクティブを識別する定義フェーズと、
前記識別されたセキュリティオブジェクティブを実現するセキュリティパターンを実装する実現フェーズと、
前記セキュリティパターンに基づく前記コンポジットアプリケーション内のセキュリティアノテーションを使用して前記識別されたセキュリティオブジェクティブを実装する宣言フェーズと
を備えており、
外部のポリシーネゴシエーションを実行し、前記セキュリティフレームワークの適用に基づいて前記コンポジットアプリケーションと外部のサービスの間で共通のポリシーを指定し、
前記コンポジットアプリケーションと前記外部のサービスとのインタラクションのそれぞれについて前記共通のポリシーを実施し、さらに
前記セキュリティオブジェクティブに基づいて前記外部のサービスからローカルサービスおよびローカルオブジェクトへのアクセスを規制する結果となるように動作する命令を実行させるためのプログラムを記録し、
前記定義フェーズは、
セキュリティリスク分析を実行するセキュリティリスク分析コンポーネントと、
セキュリティソリューションキャストをセキュリティパターンとして準備するセキュリティパターン定義コンポーネントと、
前記セキュリティパターンを組み合わせることによってセキュリティインテンションを定義するセキュリティインテンション定義コンポーネントと
をさらに備えるコンピュータ読み取り可能な記録媒体。
【請求項１２】
セキュリティフレームワークを使用してコンポジットアプリケーションのセキュリティをモデル化し、前記セキュリティフレームワークは、
コンポジットアプリケーションのセキュリティオブジェクティブを識別する定義フェーズと、
識別されたセキュリティオブジェクティブを実現するセキュリティパターンを実装する実現フェーズと、
前記セキュリティパターンに基づく前記コンポジットアプリケーション内のセキュリティアノテーションを使用して前記識別されたセキュリティオブジェクティブを実装する宣言フェーズと
を備えており、
外部のポリシーネゴシエーションを実行し、前記セキュリティフレームワークの適用に基づいて前記コンポジットアプリケーションと外部のサービスの間で共通のポリシーを指定し、
前記コンポジットアプリケーションと前記外部のサービスとのインタラクションのそれぞれについて前記共通のポリシーを実施し、さらに
前記セキュリティオブジェクティブに基づいて前記外部のサービスからローカルサービスおよびローカルオブジェクトへのアクセスを規制するように設定されたエンタープライズを備え、
前記定義フェーズは、
セキュリティリスク分析を実行するセキュリティリスク分析コンポーネントと、
セキュリティソリューションキャストをセキュリティパターンとして準備するセキュリティパターン定義コンポーネントと、
前記セキュリティパターンを組み合わせることによってセキュリティインテンションを定義するセキュリティインテンション定義コンポーネントと
をさらに備え、
前記エンタープライズは、
前記エンタープライズのセキュリティオブジェクティブを格納するエンタープライズポリシーリポジトリと、
前記エンタープライズのセキュリティ機能を格納するエンタープライズセキュリティ機能カタログと、
開発中のコンポジットビジネスプロセス用に新しく作成されたセキュリティポリシーとセキュリティ機能を格納するポリシー設定サーバーと、
適合するサービスプロバイダを識別するサービスブローカーと、
前記適合するサービスプロバイダを識別するプロセスを支援するためのすでに登録されたサービスプロバイダに関する情報を格納するサービスレジストリと
を備えるシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般にセキュリティを保証されたコンピューティングに関する。
【背景技術】
【０００２】
コンポジットアプリケーションは、サービス指向アプリケーションプラットフォームによってWebサービスとして提供されるデータや機能、および既存のパッケージアプリケーションやカスタムビルトアプリケーションを利用するアプリケーションである。コンポジットアプリケーションは、独自のビジネスロジックとユーザーインターフェイスによってサポートされており、こうしたWebサービスを組み合わせて利用中心のプロセスおよびビューを生成する。この点において、コンポジションは、既存のコンポーネントを絶え間なく進化するコンポジットアプリケーションに再編成することによって、こうしたコンポーネントを再利用できるようにする。したがって、コンポジットアプリケーションにより、ビジネスシナリオおよび/またはユーザーに固有のプロセスは複数の機能エリア(functional areas)にまたがることができる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
コンポジットアプリケーション開発者向けにモデル駆動型のセキュアなコンポジションフレームワークが提供されており、たとえば、基盤となるセキュリティポリシー、セキュリティオブジェクティブ、またはセキュリティインフラストラクチャの詳細を要約することにより、セキュリティオブジェクティブをスクリプトを使用した軽量のコンポジットアプリケーションに容易に統合することができる。
【課題を解決するための手段】
【０００４】
1つの一般的な実装によると、コンピュータに実装された方法には、ビジネスプロセスの仕様にアクセスするステップが含まれており、こうした仕様には、セキュリティインテンションを定義するセキュリティアノテーションと、ビジネスプロセスの少なくとも一部を定義し、外部のサービスをコールするタスクが含まれている。セキュリティアノテーションに関連付けられたセキュリティパターンが呼び出され、呼び出されたセキュリティパターンに基づいてセキュリティインテンションを満足する外部のサービスに関連付けられたサービスプロバイダが識別される。識別されたサービスプロバイダを使用して、ビジネスプロセスが呼び出される。
【０００５】
実装には、次に示す1つまたは複数の機能を含めることができる。たとえば、セキュリティアノテーションはポリシードメイン固有言語を使用して表現することができる。セキュリティアノテーションは解析することができる。セキュリティポリシーデータベースは、セキュリティアノテーションに基づいて更新することができる。識別されたサービスプロバイダを使用してビジネスプロセスを呼び出すステップには、セキュリティインテンションに基づいて識別されたサービスプロバイダ向けのセキュアサービスプロキシを生成するステップがさらに含まれており、このセキュアサービスプロキシは外部のサービスへのセキュアサービスコールオペレーションを管理し、セキュアサービスプロキシを使用して外部のサービスをコールする。セキュアサービスプロキシは、暗号化して格納することができる。格納されたセキュアサービスプロキシを取得し、このセキュアサービスプロキシに関連付けられたセキュアサービスコールオペレーションを呼び出すことができる。外部のサービスから応答を受信し、セキュアサービスプロキシを使用して処理することができる。
【０００６】
別の例では、サービスプロバイダを識別するステップには、サービスプロバイダリストのサービスアクセス情報にアクセスするステップであって、このサービスアクセス情報にはサービスのエンドポイントとサービスのオペレーション署名が含まれるステップと、サービスプロバイダのリストに含まれるサービスプロバイダのそれぞれについて格納されたセキュリティオブジェクティブおよび格納されたセキュリティ機能にアクセスするステップと、サービスプロバイダのそれぞれについて格納されたセキュリティオブジェクティブおよび格納されたセキュリティ機能をセキュリティインテンションに関連付けられたセキュリティオブジェクティブおよびセキュリティ機能と比較するステップとをさらに含めることができる。サービスプロバイダを識別するステップには、サービスプロバイダのそれぞれについて格納されたセキュリティオブジェクティブおよび格納されたセキュリティ機能を比較するステップに基づいて選択されたサービスプロバイダを選択するステップと、この選択されたサービスプロバイダを識別されたサービスプロバイダとして知識ベースに格納するステップと、選択されたサービスプロバイダを格納するステップに基づいてサービスプロバイダ選択プロセスが完了したことを示すイベントを生成するステップとをさらに含めてもよい。
【０００７】
その他の例では、サービスはバックエンドエンタープライズサービス、外部のビジネスツービジネスサービスまたはローカルサービスのいずれでもよい。セキュリティアノテーションには、セキュリティインテンションを表現する変数を含めることができる。ただし、セキュリティパターンはこの変数を使用して呼び出される。セキュリティインテンションは、外部のWebサービスを使用する場合に外部の実施ポリシーを宣言でき、呼び出されたビジネスプロセスをWebサービスとして公開する場合にポリシーを宣言でき、タスクが人的インタラクションを必要とする場合にタスクベースの認可要件を宣言でき、さらにタスクが実行される順序を指定するタスクベースの認可制約を宣言できる。セキュリティインテンションは、タスクの実行を許可されるロールを指定することができる。
【０００８】
さらに、他の例では、セキュリティインテンションはタスクが実行される順序を指定することもできる。ビジネスプロセスを呼び出すステップには、タスクを実行するステップをさらに含めてもよい。セキュリティパターンには、サービスプロバイダが識別される前にセキュリティインテンションの実施をトリガするために使用される第1のエントリポイントと、タスクが実行される前にセキュリティインテンションの実施をトリガするために使用される第2のエントリポイントと、タスクが実行された後にセキュリティインテンションの実施をトリガするために使用される第3のエントリポイントとを含めることができる。ビジネスプロセスを呼び出すステップには、サービスプロバイダがまだ識別されていない場合に第1のエントリポイントを選択するステップと、タスクがまだ実行されていない場合に第2のエントリポイントを選択するステップと、タスクが実行された場合に第3のエントリポイントを選択するステップとをさらに含めることができる。サービスプロバイダを識別するステップには、サービス要求を生成するステップと、セキュリティパターンに基づいてサービス要求のセキュリティを強化するステップを含めてもよい。セキュリティインテンションは、メッセージの機密性、暗号化のセキュリティインテンション、整合性インテンション、ロールの割り当てインテンション、またはタスクの実行順序インテンションを定義することができる。
【０００９】
別の一般的な実装によると、コンピュータプログラム製品はマシン可読媒体内に明白に具体化される。コンピュータプログラム製品には、マシンで読み込まれた場合に、データ処理装置がビジネスプロセスの仕様にアクセスする結果となるように動作する命令が含まれており、こうした仕様には、セキュリティインテンションを定義するセキュリティアノテーションと、ビジネスプロセスの少なくとも一部を定義し、外部のサービスをコールするタスクが含まれる。本プログラム製品には、さらにデータ処理装置がセキュリティアノテーションに関連付けられたセキュリティパターンを呼び出し、呼び出されたセキュリティパターンに基づいてセキュリティインテンションを満足する外部のサービスに関連付けられたサービスプロバイダを識別し、識別されたサービスプロバイダを使用してビジネスプロセスを呼び出す結果となるように動作する命令も含まれる。
【００１０】
別の一般的な実装によると、デバイスには記憶媒体とプロセッサが含まれる。記憶媒体には、ビジネスプロセスの仕様が格納されており、こうした仕様には、セキュリティインテンションを定義するセキュリティアノテーションと、ビジネスプロセスの少なくとも一部を定義し、外部のサービスをコールするタスクが含まれる。プロセッサは、セキュリティアノテーションに関連付けられたセキュリティパターンを呼び出し、呼び出されたセキュリティパターンに基づいてセキュリティインテンションを満足する外部のサービスに関連付けられたサービスプロバイダを識別し、識別されたサービスプロバイダを使用してビジネスプロセスを呼び出すように設定されている。
【００１１】
別の一般的な実装によると、1つの方法にはビジネスプロセスにセキュリティフレームワークを適用するステップが含まれており、このセキュリティフレームワークは、コンポジットアプリケーションのセキュリティオブジェクティブを識別する定義フェーズと、識別されたセキュリティオブジェクティブを実現するセキュリティパターンを実装する実現フェーズと、セキュリティパターンに基づくコンポジットアプリケーション内のセキュリティアノテーションを使用して識別されたセキュリティオブジェクティブを実施する宣言フェーズを備えている。本方法には、外部のポリシーネゴシエーションを実行し、セキュリティフレームワークの適用に基づいてコンポジットアプリケーションと外部のサービスの間で共通のポリシーを指定するステップと、コンポジットアプリケーションと外部のサービスとのインタラクションのそれぞれについてこの共通のポリシーを実施するステップと、セキュリティオブジェクティブに基づいて外部のサービスからローカルサービスおよびローカルオブジェクトへのアクセスを規制するステップとがさらに含まれる。
【００１２】
実装には、次に示す1つまたは複数の機能を含めることができる。たとえば、定義フェーズには、セキュリティリスク分析を実行するセキュリティリスク分析コンポーネントと、セキュリティソリューションキャストをセキュリティパターンとして準備するセキュリティパターン定義コンポーネントと、セキュリティパターンを組み合わせることによって実現されるセキュリティインテンションを定義するセキュリティインテンション定義コンポーネントとをさらに含めることができる。セキュリティリスク分析を実行するステップには、ビジネスプロセスにおける脅威を分析するステップと、ビジネスプロセスにおいて関連のリスクを識別するステップとをさらに含めることができる。セキュリティリスク分析を実行するステップには、ビジネスプロセスに関連するサービスインタラクションメカニズムを識別するステップと、識別されたサービスインタラクションメカニズムの脅威分析を実行するステップとをさらに含めることができる。セキュリティソリューションを準備するステップは、セキュリティオブジェクティブの統一された定義を可能にするインテンションオントロジーを提供するステップをさらに備えている。
【００１３】
実現フェーズには、ドメインに依存しないパターンを特定のコンテクストに結合し、それによってセキュリティパターンを実装するセキュリティパターン実装コンポーネントと、実装されたセキュリティパターンをパターンリポジトリに格納するセキュリティパターンプロビジョニングコンポーネントを含めることができる。宣言フェーズには、コンポジットアプリケーションが従うセキュリティインテンションを宣言するアプリケーションレベルのインテンション宣言コンポーネントと、コンポジットアプリケーションをサービスとして公開する前にローカルコンポーネントへのセキュリティインテンションを定義するサービスレベルのインテンション宣言コンポーネントとをさらに含めることができる。本方法には、認可ポリシーを生成するステップと、ポリシー更新プロトコルを使用して欠落するポリシーをバックエンドポリシーデータベースに挿入するステップとをさらに含めることができる。セキュリティインテンションでは、タスクの実行を許可されるロールまたはタスクが実行される順序を指定することができる。セキュリティアノテーションは、ポリシードメイン固有言語を使用して表現することができる。セキュリティインテンションでは、外部のWebサービスを使用する場合に外部の実施ポリシーを宣言でき、呼び出されたビジネスプロセスをWebサービスとして公開する場合にポリシーを宣言でき、タスクが人的インタラクションを必要とする場合にタスクベースの認可要件を宣言でき、さらにタスクが実行される順序を指定するタスクベースの認可制約を宣言できる。
【００１４】
別の一般的な実装によると、コンピュータプログラム製品はマシン可読媒体内に明白に具体化されており、本コンピュータプログラム製品には、マシンで読み込まれた場合に、データ処理装置がビジネスプロセスにセキュリティフレームワークを適用する結果となるように動作する命令が含まれており、本セキュリティフレームワークにはコンポジットアプリケーションのセキュリティオブジェクティブを識別する定義フェーズと、識別されたセキュリティオブジェクティブを実現するセキュリティパターンを実装する実現フェーズと、セキュリティパターンに基づくコンポジットアプリケーション内のセキュリティアノテーションを使用して識別されたセキュリティオブジェクティブを実装する宣言フェーズが含まれる。本コンピュータプログラム製品には、マシンで読み込まれた場合に、データ処理装置が外部のポリシーネゴシエーションを実行し、セキュリティフレームワークの適用に基づいてコンポジットアプリケーションと外部のサービスの間で共通のポリシーを指定し、コンポジットアプリケーションと外部のサービスとのインタラクションのそれぞれについてこの共通のポリシーを実施し、さらにセキュリティオブジェクティブに基づいて外部のサービスからローカルサービスおよびローカルオブジェクトへのアクセスを規制する結果となるように動作する命令もさらに含まれる。
【００１５】
別の一般的な実装によると、1つのシステムにはビジネスプロセスにセキュリティフレームワークを適用するように設定されたエンタープライズが含まれており、本セキュリティフレームワークにはコンポジットアプリケーションのセキュリティオブジェクティブを識別する定義フェーズと、識別されたセキュリティオブジェクティブを実現するセキュリティパターンを実装する実現フェーズと、セキュリティパターンに基づくコンポジットアプリケーション内のセキュリティアノテーションを使用して識別されたセキュリティオブジェクティブを実装する宣言フェーズが含まれる。本エンタープライズは、外部のポリシーネゴシエーションを実行し、セキュリティフレームワークの適用に基づいてコンポジットアプリケーションと外部のサービスの間で共通のポリシーを指定し、コンポジットアプリケーションと外部のサービスとのインタラクションのそれぞれについてこの共通のポリシーを実施し、さらにセキュリティオブジェクティブに基づいて外部のサービスからローカルサービスおよびローカルオブジェクトへのアクセスを規制するようにさらに設定されている。
【００１６】
1つまたは複数の実装の詳細は、以下で添付の図面と説明において示されている。本開示のその他の機能と利点の可能性については、説明と図面から、また特許請求の範囲から明らかになるであろう。
【００１７】
全体を通して類似の参照番号は対応するコンポーネントを表している。
【発明を実施するための最良の形態】
【００１８】
コンポジットビジネスアプリケーション(または「コンポジットアプリケーション」)は、複数のコンポーネントやサービス(たとえば、個々のWebサービスまたは出力がWebサービスとしてパッケージ化された他のアプリケーションまたはシステム全体の範囲内から選択された機能)を組み合わせることによって構築される。コンポジットビジネスアプリケーションは、ローカルアプリケーションロジックの編成を組み込むことによって、コンポジットWebサービス同士がいつ、どのようにしてインタラクションを行い、新しく抽出された機能を生成するかを制御することができる。このように、コンポジットアプリケーションの機能はサービス指向アーキテクチャ(SOA:service-oriented architecture)内のさまざまなソースから定義されている。
【００１９】
セキュリティは、ミッションクリティカルなサービス指向型コンポジットアプリケーションを開発する上で重要な問題の1つであるため、1つの一般的な実装によると、複数のサービスを安全な方法で組み合わせることによって堅牢なコンポジットアプリケーションを作成することができる。ビジネス駆動型アプリケーションのセキュリティアプローチに従って、ビジネスアプリケーションのセキュリティ要件(または「セキュリティインテンション」)は、ビジネスプロセス仕様レベルのセキュリティアノテーションとして表現され、このセキュリティアノテーションに対応するセキュリティ要件を満たすための関連のセキュリティインフラストラクチャが自動的に生成される。
【００２０】
こうしたセキュリティアノテーションは、ビジネスアプリケーションのセキュリティオブジェクティブを表しているが、セキュリティに関してトレーニングを受けたビジネスプロセス開発者によってビジネスプロセス仕様内で表現することができる。アノテーションは、セキュリティパターンリポジトリから選択され、ドメイン固有言語を使用することによって特定のアプリケーション向けにインスタンス化されてもよい。
【００２１】
ビジネスプロセス開発者がアプリケーションを配備する場合に、セキュリティオブジェクティブの実装に関連付けられたオペレーションプロセス(たとえば、サービスの選択、サービスの結合、およびセキュリティインフラストラクチャの生成)は、自動的に実行される。たとえば、サービスプロバイダの選択は、コンポジットビジネスプロセスとサービスプロバイダの両方のセキュリティ要件とセキュリティ機能の間のマッチメイキングプロセスを使用して実行することができる。ビジネスプロセス開発者は、専任のセキュリティ開発者が関わることなく、このようにして実行時のセキュリティオブジェクティブを宣言することができる。この点において、サービスプロバイダからのサービス(たとえばWebサービス)の選択は、コンポジットアプリケーションの希望するセキュリティオブジェクティブをサービスプロバイダの現在のセキュリティ機能とマッチングし、さらにサービスプロバイダの希望するセキュリティオブジェクティブをコンポジットアプリケーションの現在のセキュリティ機能とマッチングすることによって実行できる。
【００２２】
したがって、独立したビジネスプロセスとセキュリティポリシーは、抽象的な方法で設計でき、容易に実装できる。ビジネスプロセス仕様の設計は、多くの場合にビジネス分析技術者またはソフトウェア技術者によって実行されるため、ソフトウェアアノテーションはカスタマイズ可能なパターンからモデル化されており、場合によっては関連のビジネスプロセスを熟知していないセキュリティ開発者が有するセキュリティについての高レベルの知識やトレーニングを必要としない。
【００２３】
セキュリティアノテーションを使用すると、コンポジットアプリケーションはセキュリティオブジェクティブとセキュリティ設定とのギャップを手動で埋める必要がないため、セキュリティ違反の可能性が低下する。さらに、ビジネスプロセスモデルと関連のセキュリティアノテーションとを緊密に結合することにより、ビジネスプロセスの変更はより確実にセキュリティオブジェクティブに結合する。このようにして、抽象的なビジネス駆動型のセキュリティオブジェクティブは、ビジネスプロセス仕様レベルで定義されるオブジェクティブを使用して、明白なセキュリティポリシーとセキュリティ実装にマップされるのが効果的である。
【００２４】
手短に言えば、本明細書で説明するセキュリティフレームワークにより、ビジネスプロセス開発者は高度なセキュリティインテンションまたはセキュリティオブジェクティブをビジネスプロセス仕様に追加でき、こうしたセキュリティフレームワークにより、セキュリティの設定と実施のプロセスの自動生成が促進される。このようなセキュリティオブジェクティブには、たとえば、ビジネスプロセスの認可要件、Webサービスの保護品質(QoP:Quality of Protection)に関する要件、またはその他のセキュリティインテンションを含めることができる。
【００２５】
コンポジットアプリケーション開発者向けにモデル駆動型のセキュアコンポジションフレームワークが提供されており、たとえば、基盤となるセキュリティポリシー、セキュリティオブジェクティブ、またはセキュリティインフラストラクチャの詳細を要約することによって、セキュリティオブジェクティブを、スクリプトを使用した軽量のコンポジットアプリケーションに容易に統合することができる。コンポジションで使用するサービスは、Webサービスとして完成された企業内部のビジネス機能、サプライヤおよびその他のビジネスパートナーが提供する外部のWebサービス、または完全にローカルなサービスのいずれでもよいが、それによって組織間にまたがるコンポジットアプリケーションのセキュリティを保証するソリューションを提供する。
【００２６】
図1は、調整された順序で実行される一連のタスクまたはアクティビティを含む例示的なビジネスプロセス100を示している。タスクはアトミックなビジネスプロセスコンポーネントであり、アクティビティを説明し、またはプロセスの制御フローを変更する(たとえば、プロセスフローを分割しまたは結合する)。たとえば、例示的なビジネスプロセス100には、開始専用のタスク101、逐次的に実行される第1のタスク102("タスク1")、第2のタスク104("タスク2")、および第3のタスク105("タスク3")が含まれており、それぞれ終了専用のタスク106の前に実行される。特定のタスク(たとえば第1のタスク102または第3のタスク105)の実行では、ビジネスパートナーまたはサプライヤのビジネス機能を提供する外部のWebサービスの呼び出しを要求してもよい。他のタスク(たとえば第2のタスク104)の実行では、特定のロールを割り当てられた人物の介入を要求してもよい。
【００２７】
図2は、セキュリティアノテーションを使用してコンポジットアプリケーションを実装する例示的なシステムアーキテクチャ200を示すブロック図である。具体的には、システムアーキテクチャ200には、コンポジットアプリケーション("comp-app")を呼び出すエンタープライズ201、第1のサービスプロバイダ203("sp")、第2のサービスプロバイダ204、および第3のサービスプロバイダ205が含まれる。エンタープライズ201とサービスプロバイダ203〜205は、ネットワーク206を介して接続されている。
【００２８】
エンタープライズには、セキュリティアノテーションを使用するコンポジットアプリケーションを実装するデバイス208と、エンタープライズポリシーリポジトリ(EPR:enterprise policy repository)209、エンタープライズセキュリティ機能カタログ(ESCC:enterprise security capabilities catalog)210、ポリシー設定サーバー(PCS:policy configuration server)211、サービスブローカー(SB:service broker)212、およびサービスレジストリ(SR:service registry)214が含まれる。一般に、エンタープライズポリシーリポジトリ209にはエンタープライズ201のセキュリティポリシー、セキュリティオブジェクティブ、またはセキュリティゴール("comp-app-sg")がビジネスプロセス開発者によって取得されるために格納されており、エンタープライズセキュリティ機能カタログ210にはエンタープライズ201のセキュリティ機能("comp-app-cap")がビジネスプロセス開発者によって取得されるために格納されており、ポリシー設定サーバー211には開発中のコンポジットビジネスプロセス用に新しく作成されたセキュリティポリシーとセキュリティ機能が格納されており、サービスブローカー212は適合するサービスプロバイダを識別し、さらに、サービスレジストリ214には適合するサービスプロバイダを識別するプロセスを支援するためのすでに登録されたサービスプロバイダに関する情報が格納されている。
【００２９】
エンタープライズのセキュリティポリシーcomp-app-sgは、アクセス制御の指定と実施、QoPの宣言と実施、およびビジネスプロセスレベル、ビジネスプロセスタスクレベル、およびサービスレベルを含むさまざまなレベルで必要とされ得る分散ポリシー管理の問題に関連付けることができる。たとえば、このようなポリシーは、個々のビジネスプロセスタスクに関する認可の指定と実施、ビジネスプロセスに関する認可制約(たとえば職務の分離)の指定と実施、またはWebサービス(たとえば、ローカルサービス、コンポジットサービス、バックエンドサービス、外部サービス)に関するQoP要件(すなわちセキュリティ機能とセキュリティポリシー)の指定と実施に関連付けることができる。QoP要件には、セキュリティまたはプライバシーに関する要件(たとえば、特定の暗号化アルゴリズム)、または技術的なセキュリティ機能(たとえば、Webサービスセキュリティポリシー(WS-SecurityPolicy))における結合、またはセキュリティアサーションマークアップ言語(SAML:security assertion markup language)を定義できる。
【００３０】
さらに、セキュリティポリシーには、バックエンドサービスとのインタラクションを行う場合に自動化されたポリシー設定メカニズムを使用すべきであることを指定できる。ビジネスプロセス開発者は、コンポジットアプリケーションからバックエンドアプリケーションサービスに対して発行されたサービス要求を認可するポリシーがバックエンドシステムのポリシーデータベースに含まれていない場合に、必要なポリシーが生成され、バックエンドシステムのポリシーデータベースに格納されることを保証する必要がある。ポリシーには、外部のサービスとのインタラクションを行う場合に動的なポリシーネゴシエーションとポリシー実施を使用すべきであることをさらに指定できる。コンポジットアプリケーション実行の一部のステージでは、サプライヤまたは取引先が所有する外部のWebサービスにアクセスしてもよい。このような環境では、要求された個々のサービスインタラクションは、コンポジットアプリケーションと要求された外部のサービスのセキュリティオブジェクティブが実現された場合または満足された場合に実行することができる。
【００３１】
さらに、セキュリティポリシーには動的なポリシー管理を使用してオペレーションフェーズにおけるポリシーの変更に対処する必要があること、たとえば、コンポジットで使用するサービスのポリシーの変更は、アプリケーションを再起動せずに適用されることを指定してもよい。分散環境で相互運用性をサポートするために使用される標準に準拠したセキュリティサービス(たとえば、セキュリティトークンサービス)とセキュリティポリシー(たとえば、拡張可能なアクセス制御マークアップ言語(XACML:eXtensible Access Control Markup Language)互換のポリシー)をセキュリティポリシーとして記述することもできる。そうする上で、セキュリティポリシーによって、低レベルのWebサービスセキュリティ標準の抽象化を可能にするセキュリティAPI、セキュリティ対応のすべてのアプリケーションに対してエンタープライズレベルの保護を提供するセキュリティメカニズムの一貫した使い方、ビジネスプロセスとセキュリティポリシーの一貫した設計、および組織間にまたがるサービスインタラクションをサポートする信頼性の高い管理インフラストラクチャを提供できる。
【００３２】
1つの例として、セキュリティポリシーcomp-app-sgはすべてのビジネスツービジネス(B2B:business-to-business)接続が機密であることを要求できる。セキュリティ機能の例comp-app-capは、エンタープライズがセキュリティアサーションマークアップ言語(SAML)トークンを使用したトークンベースのアクセス制御をサポートすることを指定してもよい。
【００３３】
デバイス208には、ビジネスプロセス仕様のインスタンスを作成し、ビジネスプロセスの関連タスクをプロセスシーケンスに指定されたとおりに実行するビジネスプロセスエンジン(BPE:business process engine)215と、適切なサービスプロキシをインスタンス化して調整するイベントマネージャ(EM:event manager)216と、イベントマネージャ216によって取得されるためにサービスプロキシを格納するサービスプロキシレジストリ(SPI:service proxy registry)217と、ビジネスプロセスエディタ219と、コンポジットビジネスプロセス仕様言語(BPEL:business process specification language)220と、セキュリティアノテーションを解析するポリシードメイン固有言語(DSL:domain specific language)エンジン(PDSLE:policy DSL engine)221と、サービスプロバイダへのセキュアサービスコールを管理し、セキュリティオペレーション(たとえば、暗号化、検証、トークンの取得)を処理するためのオペレーションを提供するセキュアサービスプロキシ(SSP:secure service proxy)222と、SSPコードを格納するSSPレジストリ(SSPR:SSP registry)224と、セキュリティポリシーパターンを格納するポリシーパターンリポジトリ(PPR:policy pattern repository)225とがさらに含まれる。集合的に、ビジネスプロセスエンジン215、イベントマネージャ216、およびサービスプロキシレジストリ217は設計時コンポーネントと呼ばれており、ビジネスプロセスエディタ218とコンポジットビジネスプロセス仕様言語220は実行時コンポーネントと呼ばれている。
【００３４】
そのセキュリティ関連の機能を実装するために、セキュアサービスプロキシ222は、証明書を発行する属性サーバー、暗号化機能を提供する暗号サーバー、アクセス制御要求を評価するポリシー決定エンジン、証明書を検証する証明書エンジン、および/またはパブリックキーとプライベートキーを格納するセキュアキーエンジンを含むかまたはこれらにアクセスすることができる。
【００３５】
第1のサービスプロバイダ203には、Webサービス226と、第1のサービスプロバイダのセキュリティオブジェクティブまたはセキュリティポリシー("sp-pol")およびセキュリティ機能("sp-cap")を格納するセキュリティ機能レジストリ227が含まれる。サービス226は、ビジネス機能を提供し、少なくともサービス(またはオペレーション)名と入力および出力パラメータを含む説明を伴うWebサービスとして実装される。セキュリティポリシーsp-polはこのサービスにアクセスするために必要な証明書を説明するアクセスポリシーを指定でき、セキュリティ機能sp-capはサービス226のサポートされるセキュリティ機能を指定できる。
【００３６】
コンポジットアプリケーション環境には、コンポジットアプリケーションレイヤとサービスプロバイダレイヤが含まれる。コンポジットアプリケーションとサービスプロバイダは、いずれも実行時のインタラクションの間に発生するサービスコールの方向によってサービスコンシューマとサービスプロバイダのロールで動作できる。図示されていないが、第2のサービスプロバイダ204と第3のサービスプロバイダ205にもサービスおよびセキュリティ機能レジストリが関連付けられている。
【００３７】
1つの実装によると、コンポジットアプリケーションは設計時プロセスと実行時プロセスとを使用して生成される。設計時プロセスでは、開発者はプロセスエディタ219を使用してビジネスプロセスを指定し、このプロセスを配備する。実行時プロセスで、ビジネスプロセスエンジン215はプロセス仕様のインスタンスを作成し、プロセスシーケンスに指定されたとおりにタスクを実行する。外部のWebサービス呼び出しを行うタスクのそれぞれについて、ビジネスプロセスエンジン215はイベントマネージャ216をコールし、サービス要求をイベントマネージャ216に渡す。
【００３８】
イベントマネージャは、この要求に基づいてサービスプロキシレジストリから適切なサービスプロキシを選択し、このサービスプロキシをインスタンス化する。インスタンス化された各サービスプロキシは、結合された外部のWebサービスをコールし、コールの結果をイベントマネージャに返し、さらにイベントマネージャはビジネスプロセスエンジンに応答を転送する。ビジネスプロセスエンジンは、すべての外部のサービスコールからの応答を収集し、返されたデータに関するコンポジションオペレーションを実行してコンポジット出力を作成し、それによってコンポジットビジネスプロセスを配備する。
【００３９】
図3は、コンポジットアプリケーションレイヤで自動的なセキュアアプリケーションコンポジションを実装する例示的なプロセス300を示している。手短に言えば、コンピュータで実装するプロセス300には、ビジネスプロセスの仕様にアクセスするステップが含まれており、こうした仕様には、セキュリティインテンションを定義するセキュリティアノテーションと、ビジネスプロセスの少なくとも一部を定義し、外部のサービスをコールするタスクが含まれる。プロセス300には、セキュリティアノテーションに関連付けられたセキュリティパターンを呼び出すステップと、呼び出されたセキュリティパターンに基づいてセキュリティインテンションを満足する外部のサービスに関連付けられたサービスプロバイダを識別するステップと、識別されたサービスプロバイダを使用してビジネスプロセスを呼び出すステップもさらに含まれる。
【００４０】
より詳細には、プロセス300が開始され(S301)、ビジネスプロセスの仕様にアクセスする。ただし、こうした仕様には、セキュリティインテンションを定義するセキュリティアノテーションと、ビジネスプロセスの少なくとも一部を定義し、外部のサービスをコールするタスクが含まれる(S302)。
【００４１】
以上を簡単に参照すると、図4は設計時にビジネスプロセス開発者が行うビジネスプロセス仕様の準備を示すスイム図である。設計中のコンポジットアプリケーションのタイプは実施する必要のあるセキュリティポリシーを左右する可能性があるため、ビジネスプロセス開発者は、ポリシー管理ツール401を使用してエンタープライズポリシーリポジトリ402からエンタープライズのセキュリティポリシーcomp-app-sgを取得する。ビジネスプロセス開発者は、少なくともエンタープライズのセキュリティポリシーと同等に強固なアプリケーション固有のセキュリティポリシーをさらに定義することもできる。
【００４２】
さらに、ビジネスプロセス開発者は、エンタープライズセキュリティ機能カタログ405からセキュリティ機能comp-app-capを取得する。ビジネスプロセス開発者は、取得したセキュリティポリシーのそれぞれについて、ポリシーパターンリポジトリ404から適切なセキュリティポリシーパターンを選択し、選択されたポリシーパターンをコンポジットビジネスプロセスに実装されるようにカスタマイズする。カスタマイズされたポリシーパターンはポリシーアノテーションとしてビジネスプロセス仕様407に挿入される。ただし、アノテーションはポリシードメイン固有言語を使用して表現できる。
【００４３】
さらに、ビジネスプロセス開発者は、エンタープライズセキュリティ機能カタログ405から取得したセキュリティ機能を使用してポリシー設定サーバー406を更新する。コンポジットアプリケーションのそれぞれは、特定のコンポジットビジネスプロセスに関連付けられたセキュリティポリシーとセキュリティ機能を格納および参照するサービスを提供するポリシー設定サーバーに関連付けられる。
【００４４】
図4のスイム図に示すプロセスは、コンポジットアプリケーションレイヤで実行される。逆に、サービスプロバイダレイヤでWebサービスの説明と関連のセキュリティポリシーおよびセキュリティ機能が生成され、サービスとそれに関連するメタデータ(たとえばセキュリティポリシーやセキュリティ)がサービスレジストリに登録される。
【００４５】
以下でより詳細に説明するように、サービスは、バックエンドエンタープライズサービス、外部のビジネスツービジネスサービス、またはローカルサービスのいずれでもよい。セキュリティアノテーションには、セキュリティインテンションを表現する変数を含めることができる。ただし、セキュリティパターンはこの変数を使用して呼び出される。セキュリティインテンションでは、外部のWebサービスを使用する場合に外部の実施ポリシーを宣言でき、呼び出されたビジネスプロセスをWebサービスとして公開する場合にポリシーを宣言でき、タスクが人的インタラクションを必要とする場合にタスクベースの認可要件を宣言でき、またはタスクが実行される順序を指定するタスクベースの認可制約を宣言できる。セキュリティインテンションは、タスクの実行を許可されるロールを指定することができる。
【００４６】
さらに、セキュリティインテンションにはタスクが実行される順序を指定してもよい。ビジネスプロセスを呼び出すステップには、タスクを実行するステップをさらに含めてもよい。セキュリティパターンには、サービスプロバイダが識別される前にセキュリティインテンションの実施をトリガするために使用される第1のエントリポイントと、タスクが実行される前にセキュリティインテンションの実施をトリガするために使用される第2のエントリポイントと、タスクが実行された後にセキュリティインテンションの実施をトリガするために使用される第3のエントリポイントとを含めることができる。セキュリティインテンションでは、メッセージの機密性、暗号化のセキュリティインテンション、整合性インテンション、ロールの割り当てインテンション、またはタスクの実行順序インテンションを定義することができる。
【００４７】
セキュリティアノテーションに関連付けられたセキュリティパターンが呼び出される(S304)。図5のスイム図500に示すように、実行時に、セキュリティアノテーションを含むビジネスプロセスエンジン501はビジネスプロセス仕様のインスタンスを作成する。セキュリティアノテーションを実行するためまたは呼び出すために、ビジネスプロセスエンジン501はセキュリティアノテーションを解析するポリシードメイン固有言語エンジン502をコールする。
【００４８】
ポリシードメイン固有言語エンジン502で解析されると、作成された現在のコンポジットプロセスのセキュリティポリシーcomp-app-sgを使用してポリシー設定サーバー505が更新される。ポリシー設定サーバーには、こうして作成されたセキュリティポリシーcomp-app-sgの他に、コンポジットプロセスのセキュリティ機能comp-app-capも格納される。前述のように、機能comp-app-capは設計時にポリシー設定サーバー505にアップロードされている。
【００４９】
セキュリティインテンションを満足する外部のサービスに関連付けられたサービスプロバイダは、呼び出されたセキュリティパターンに基づいて識別される(S305)。図5に示すように、ポリシードメイン固有言語エンジン502は、適合するサービスプロバイダ511を識別するために、サービスブローカー507のトリガ、コール、実行、あるいは呼び出しを行う。ただし、候補となるサービスプロバイダのリストはサービスレジストリ510に登録されている。
【００５０】
サービスブローカー507は、候補となるすべてのサービスプロバイダ511に関するサービスアクセス情報をサービスレジストリ510から取得する。このサービスアクセス情報には、アドレスまたはWebサービスのエンドポイント(たとえば、URLやWebサービスのオペレーション署名)が含まれる。このようなWebサービスのオペレーション署名には、オペレーションの名前と入力または出力パラメータを含めることができる。
【００５１】
マッチング機能を実行するために、サービスブローカー507は登録された候補となるサービスプロバイダ511のそれぞれを呼び出し、そのそれぞれのセキュリティポリシーsp-polとセキュリティ機能sp-capを取得する。サービスブローカー507は、ポリシー設定サーバー505からコンポジットアプリケーションのセキュリティポリシーcomp-app-sgとセキュリティ機能comp-app-capも取得する。
【００５２】
コンポジットアプリケーションとサービスプロバイダのセキュリティポリシーとセキュリティ機能を取得すると、サービスブローカー507は少なくとも2つのテストを実行する。たとえば、サービスブローカーは、サービスプロバイダ511がコンポジットアプリケーションのセキュリティポリシーcomp-app-sgに適合するかそれを満足するセキュリティ機能sp-capを提供するかどうかを判定できる。さらに、サービスブローカー507はコンポジットアプリケーションがサービスプロバイダ511のセキュリティポリシーsp-polに適合するかそれを満足するセキュリティ機能comp-app-capを提供するかどうかを判定する。
【００５３】
両方のテストが成功した場合は、サービスプロバイダ511とコンポジットアプリケーションが相互にセキュアな通信を行う資格を持っているため、サービスプロバイダ511をセキュアコンポジットアプリケーションに使用できる。登録された候補となるサービスプロバイダ511のそれぞれについてこうしたテストを実行した後に、サービスブローカー507は識別された資格のある候補となるサービスプロバイダ511のセットを知識ベースに格納し、プロバイダの選択が完了したことと、サービスプロバイダが適切にフィルタされたことを示すイベントを生成する。
【００５４】
識別されたサービスプロバイダを使用してビジネスプロセスが呼び出され(S306)、これによってプロセス300が終了する(S307)。ビジネスプロセスエンジン501は、セキュリティアノテーションを解析し、サービスプロバイダを識別した後で、ビジネスプロセスに含まれるタスクを実行するかまたは呼び出す。ただし、少なくとも1つのタスクはセキュアサービスプロキシを使用して外部のWebサービスを呼び出す。イベントマネージャ504によって管理される内部と外部のサービスのコールは、ビジネスプロセスエンジン501によってトリガされる。
【００５５】
イベントマネージャ504は、外部のWebサービスコールのそれぞれについて、識別された資格のあるすべてのサービスプロバイダのリストをサービスブローカー507から取得し、コンポジットアプリケーションと識別された各サービスプロバイダ511の間のセキュアな通信を確立するために利用できる任意の情報にアクセスする。こうした情報には、サービスアクセス情報(たとえばエンドポイント情報)、コンポジットアプリケーションのセキュリティポリシーcomp-app-sgとセキュリティ機能comp-app-cap、サービスプロバイダのセキュリティポリシーsp-polとセキュリティ機能sp-cap、識別された資格のあるサービスプロバイダのリスト、およびパターン実装カタログに格納された適切なセキュリティ実装の参照を含めることができる。
【００５６】
ここで、イベントマネージャ504は、呼び出される個々のサービスプロバイダ511のセキュアサービスプロキシ506の実装を生成する。セキュアサービスプロキシ506の実装を内部の攻撃(たとえばコード修正)から保護するために、イベントマネージャ504はセキュアサービスプロキシ506のコードと、セキュアサービスプロキシレジストリ509内のセキュアサービスプロキシ506のコードを暗号化する。セキュアサービスプロキシ506は、サービスプロバイダ511へのセキュアサービスコールを管理し、セキュリティオペレーション(たとえば、暗号化、トークンの検証、またはトークンの取得)を処理するオペレーションを提供するタイプのサービスプロキシである。
【００５７】
セキュアサービスアクセスのそれぞれについて、イベントマネージャ504はセキュアサービスプロキシレジストリ509から暗号化されたセキュアサービスプロキシ506のコードを取得し、コードを復号化した後に、セキュアサービスプロキシ506をインスタンス化する。イベントマネージャ504は、セキュアサービスプロキシ506によって提供されるサービスオペレーションを呼び出し、これにより、セキュリティオペレーション(たとえば、要求にセキュリティトークンを添付することまたは要求を暗号化することによる)を適用し、外部のWebサービスオペレーションをコールする。
【００５８】
識別されたサービスプロバイダ511の各Webサービスは、コールを受信し、関連のセキュリティオペレーション(たとえば、トークンを検証することまたは復号化を実行することによる)を実行し、さらに着信するメッセージ要求を処理する。サービスプロバイダ511は、ここで、セキュアサービスプロキシ506への応答を生成し、この応答に適切なセキュリティオペレーション(たとえば、応答に署名することによる)を適用し、さらにセキュリティを保証された応答をセキュアサービスプロキシ506に送信する。
【００５９】
セキュアサービスプロキシ506は、セキュリティを保証された結果を受信し、応答に関連のセキュリティオペレーション(たとえば、署名を検証することによる)を適用し、さらに処理された応答をイベントマネージャ504に返す。次に、イベントマネージャ504は結果をビジネスプロセスエンジン501に転送し、これはビジネスプロセスに処理された応答を提供する。
【００６０】
以下は、輸送業のコンテクストで、識別されたサービスプロバイダを使用してビジネスプロセスを呼び出す例である。この簡単な例で、ICARRIERと呼ばれるコンポジットアプリケーションでは、自動車メーカーから新車の販売店まで自動車を輸送する資格のある輸送業者を選択するビジネスロジックが使用されている。
【００６１】
1つの例示的なプロセス仕様は、ICARRIERアプリケーション用のドメイン固有言語を使用して定義されており、以下の表1に示されている。
【００６２】
【表１】
0005139220.tif 000002
【００６３】
例示的なビジネスプロセス仕様において、タスク:GET_CARRIER_LIST()を実行することにより、セキュリティポリシーとセキュリティ機能の観点で資格のある輸送業者のリストが返される。このビジネスプロセスによって定義されたコンポジットアプリケーションには、輸送業者に対する少なくとも2つのインタラクション、すなわちさまざまな輸送業者の料金を検索するGETRATE(SHIPMENT_DATA)と、輸送を行う輸送業者を予約するBOOKCARRIER(SHIPMENTID)が含まれる。輸送業者はその機能をWebサービスとして提供しており、使用する適切な輸送業者の選択は、ICARRIERと候補となる輸送業者が互いにセキュリティポリシーとセキュリティ機能を満足するかどうかによっても決まる。
【００６４】
3つの候補となる輸送業者のセキュリティポリシーとセキュリティ機能が以下の表2に示されている。
【００６５】
【表２】
0005139220.tif 000003
【００６６】
この例では、たとえばICARRIER Webサービスは、LOOKUP_MYPOLICIES()またはLOOKUP_MYCAPABILITIES()サービスオペレーションを使用して、こうしたポリシーと機能を取得するオペレーションを提供する。
【００６７】
自動車メーカーのセキュリティポリシーは、既存のアプリケーションのすべてのB2B接続が機密性を保証する必要があることを示している。このポリシーを満足するために、ICARRIERは機密性を保証するセキュリティ機能を提供する輸送業者のみを選択する必要がある。しかし、同時に、ICARRIERは輸送業者(すなわちサービスプロバイダ)のセキュリティポリシーを満足するセキュリティ機能を提供する必要がある。
【００６８】
ビジネスプロセス仕様を準備する上で、ICARRIERビジネスプロセス開発者は以下に示す'B2Bconfidentiality'セキュリティパターンを取得する。B2Bconfidentialityは、すべてのB2B接続で機密性が保証されることを指定する。
PATTERN: ENFORCE "B2BCONFIDENTIALITY" DURING PROCESS <PROCESS_NAME>
【００６９】
他のセキュリティパターンと同様に、このパターンは特定のプロセスのそれぞれがインスタンス化されるテンプレートとして使用される。ビジネスプロセス開発者は、このパターンをカスタマイズして、ポリシードメイン固有言語を使用して表1に示すICARRIERビジネスプロセス仕様に以下のアノテーションを挿入する。
ENFORCE "B2BCONFIDENTIALITY" DURING PROCESS ICARRIER
【００７０】
アノテーションを挿入したプロセス仕様には、プロセスドメイン固有言語とポリシードメイン固有言語の組み合わせが含まれている。これは以下の表3に示されている。
【００７１】
【表３】
0005139220.tif 000004
【００７２】
このビジネスプロセス仕様を使用すると、セキュリティを保証されたICARRIERは資格のある輸送業者としてA-Transのみを選択するであろう。詳細には、A-TransはRSA暗号化および復号化機能(セキュアチャネル通信を実現するように使用される)を提供するため、さらにRSA暗号化および復号化機能はICARRIER自体によってサポートされるため(ICARRIERのセキュリティ機能リストに反映されている)、A-TransはICARRIERの「メッセージの機密性"message-confidentiality"」セキュリティポリシーを満足する。さらに、ICARRIERはRSA暗号化および復号化機能(セキュアチャネル通信を実現するように使用される)を提供するため、さらにRSA暗号化および復号化機能はA-Transによってサポートされるため(A-Transのセキュリティ機能リストに反映されている)、ICARRIERはA-Transの「メッセージの機密性"message-confidentiality"」セキュリティポリシーを満足する。
【００７３】
さらに、ICARRIERはX509証明書セキュリティ機能(メンバーシップロールなどの証明書エンコード属性に基づいてアクセス制御の決定に必要である)を提供するため、さらに同じX509証明書セキュリティ機能または処理機能はA-Transによってもサポートされるため(A-Transのセキュリティ機能リストに反映されている)、iCarrierはA-Transの"service-conf dentiality::certificate-based-access-control"セキュリティポリシーも満足する。こうした適合に基づいて、ICARRIERは要求されたセキュリティ機能が実行時に実装されることを保証するセキュリティプロキシを自動的に作成する。たとえば、サービスコールGETRATEとBOOKCARRIERの実装はセキュリティが保証される。輸送業者B-TransとC-TransはiCarrierのセキュリティポリシーを満足せず、そのため、資格のある輸送業者としては識別されない。
【００７４】
自動者メーカーがその独自のB2B接続セキュリティポリシーを変更する場合に、ビジネスプロセス開発者はiCarrierビジネスプロセス仕様に含まれるセキュリティアノテーションを容易に変更し、新しいセキュリティポリシーを反映するようにコンポジットアプリケーションを再配備することができる。たとえば、B2B接続で接続の機密性を保証する必要がないことを新しいセキュリティポリシーが示している場合は、ビジネスプロセス開発者がプロセスエディタを使用して古いアノテーション"B2Bconfidentiality"を"noB2Bsecurity"で置き換え、セキュリティ機能要件を除去することができる。この変更されたビジネスプロセス仕様は、以下の表4に示されている。
【００７５】
【表４】
0005139220.tif 000005
【００７６】
更新されたセキュリティポリシーとセキュリティ機能も、以下の表5に示すように調整される。
【００７７】
【表５】
0005139220.tif 000006
【００７８】
この変更されたセキュリティスキームに従うと、資格のある輸送業者として識別される唯一の輸送業者はC-Transである。この点において、このプロセスはドメインに固有のセキュリティアノテーションを使用することによって自動的に制御され、アノテーションで表現される高レベルのセキュリティインテンションを満足するために要求されたセキュリティオペレーションを実行する保護されたセキュリティプロキシを生成する。
【００７９】
次に、このセキュアサービスプロキシの特定の例示的な実装について説明する。セキュアサービスプロキシの1つの主要なタスクは、ビジネスプロセス仕様に含まれるセキュリティアノテーションに関連付けられたセキュリティポリシーを満足するために実行されるセキュリティ関連タスクを処理することである。このように、生成されたセキュアサービスプロキシによって"B2B confidentiality"セキュリティポリシーを実装するために実行されるプロセスについて、以下でより詳細に説明する。
【００８０】
この例では、ICARRIERとA-Transに関連付けられたセキュリティポリシーとセキュリティ機能は、表2に示されているように、「変更されていない」状態のものである。このように、指定されたセキュリティポリシーを満足するために、セキュアサービスプロキシを使用してタスクを実行する。
【００８１】
iCarrierからA-Transへの通信に関連して、属性サーバーからセキュアサービスプロキシはICARRIERの証明書を受信する。ただし、証明書はICARRIERの適格性を証明するために使用するICARRIERの属性をエンコードする(たとえばGOLDDHLPARTNER証明書)。また、セキュアサービスプロキシは、ICARRIERの公開鍵ストアからA-Transの公開鍵を取得し、A-Trans Webサービスハンドルにアクセスする。ICARRIERの秘密鍵ストアからICARRIERの秘密鍵がロードされ、A-Transの出荷要求が暗号化される。暗号化された出荷要求とICARRIERの証明書は、A-Trans Webサービスから提供されるWebサービスオペレーションを呼び出すことによって送信される。
【００８２】
A-Transの観点から見ると、A-Trans Webサービスは送信された証明書を検証し、証明書内でエンコードされたICARRIERの属性に基づいてアクセス制御に関する決定を行う。アクセスが許可されると、A-Transは送信された要求を復号化して処理し、証明書から抽出された公開鍵を使用して結果を暗号化する。暗号化された結果はセキュアサービスプロキシに送信され、ここでICARRIERの秘密鍵を使用して結果を復号化する。このように、A-Transは、結果をICARRIERに送信する前に暗号化することによって、ICARRIERのメッセージの機密性ポリシーを満足する。
【００８３】
この結果は、ICARRIERのセキュアサービスプロキシによって実施され、ここで結果が実際に暗号化されるかどうかを検査し、判定する。出荷要求と対応する結果が暗号化されるため、メッセージの機密性はこのようにして満足される。さらに、ICARRIERの証明書はA-Trans Webサービスから提供されるWebサービスオペレーションを呼び出すことによって送信されるため、service confidentiality::certificate-based-access-controlポリシーが満足される。
【００８４】
図6は、コンポジットアプリケーション開発フレームワーク600によってコールすることができるサービスのカテゴリを示すブロック図である。前述のように、たとえば、第1の企業602のコンポジットアプリケーション601によって呼び出されたタスクは、第2の企業605の外部のWebサービス604をコールすることができる。さらに、コンポジットアプリケーションは、バックエンドエンタープライズアプリケーション(たとえば、エンタープライズリソース計画アプリケーション)からも、コンポジットアプリケーション内にローカルコンポーネントとして構築されるローカルサービス607からも、バックエンドサービス606をコールすることができる。
【００８５】
ローカルサービス607が使用されるのは、多くの場合にビジネスプロセス開発者は1つまたは複数の既存のサービスによって完全にはキャプチャされない何らかのビジネスロジックを実装できるためである。ローカルサービスは、コンポジットアプリケーション開発者によって作成されても、その他のコンポーネントプロバイダからインポートされてもよい。ローカルサービス607は、他のコンポジットアプリケーションからアクセスできるように、Webサービスとして公開することもできる。
【００８６】
強化されたフレームワーク600は、特定の開発タスクを定義することによってコンポジットアプリケーションの開発を支援し、コンポジットアプリケーションのセキュリティを効率的に指定する。また、フレームワーク600は、さまざまな参加者が開発プロセスにおいて関与する他のパーティーとどの情報およびセキュリティ製品を交換するかに関する設計時プロトコルも定義する。開発タスク間の依存関係を定義するのは、設計プロセスを体系化する上で助けになる。
【００８７】
図7と8は、強化されたフレームワーク600を使用してコンポジットアプリケーションの開発のさまざまなフェーズを示している。たとえば、図7で、セキュリティをモデル化するプロセス全体には、セキュリティオブジェクティブが識別される定義フェーズ701と、識別されたセキュリティオブジェクティブを達成するためのメカニズムが提供される実現フェーズ702と、添付されたアノテーションを使用してコンポジットアプリケーションのセキュリティオブジェクティブまたはサービスが選択される宣言フェーズ704が含まれる。
【００８８】
定義フェーズ701で、セキュリティチームはセキュリティリスク分析705を実行することによって、ビジネスシナリオと関連のビジネスプロセスにおける脅威を分析し、それに伴うリスクを識別する。このような体系化された分析は、サービス指向のビジネスアプリケーションにおいてサービスインタラクションメカニズムを識別することによって、また、個々のサービスインタラクションメカニズムの脅威分析を実行することによって実行できる。
【００８９】
リスクを軽減するために、製品のセキュリティチームはセキュリティパターン定義706を準備し、セキュリティパターン内でキャストできるセキュリティソリューションを提示する。セキュリティパターンの定義によって、ソリューションは異なるコンポジットアプリケーション間で再利用可能になる。そうする上で、セキュリティを必要とする他のアプリケーションに及ぶセキュリティメカニズムの統一された使い方を準備できる。
【００９０】
また、定義フェーズ701で、製品のセキュリティチームはセキュリティインテンション定義707を準備し、セキュリティパターンの組み合わせを使用して実現できる高レベルのセキュリティインテンションのセットを定義する。セキュリティインテンション定義707は、アプリケーション開発ライフサイクルに関与する他のチームにまたがるセキュリティオブジェクティブの統一された定義を可能にするために役立つインテンションオントロジーを提供する。
【００９１】
実現フェーズ702で、セキュリティ開発者はセキュリティパターンの実装709を提供し、ドメインに依存しないパターンを特定のコンテクストに結合する。ドメインに依存しないパターンを再利用する場合は、セキュリティ開発チームは企業に固有のルールに従ってさまざまな実装を適応させる。セキュリティパターンプロビジョニング710を提供する上で、実装されたパターンはパターンリポジトリを介して使用できるようになる。
【００９２】
宣言フェーズ704で、コンポジットアプリケーション開発者はアプリケーションレベルのインテンション宣言711を準備し、コンポジットアプリケーションが従うべきセキュリティインテンションを宣言する。アプリケーションレベルのインテンション宣言711は、コンポジットアプリケーションのセキュリティインテンションをキャプチャするために使用され、コンポジットアプリケーションがコンポジットアプリケーションの構成要素(たとえば、ローカルコンポーネント、プロセスタスク、外部のWebサービス)とのインタラクションのセキュリティを保証するために適用するインテンションを定義する。
【００９３】
サービスレベルのインテンション宣言712を実行することによって、コンポジット開発チームはコンポジットアプリケーションまたはローカルコンポーネントをサービスとして公開できる。このようにして、コンポジットアプリケーションとローカルコンポーネントに公開の前にセキュリティインテンションを追加することによってQoP要件を定義できる。
【００９４】
図8で、コンポジットアプリケーションの安全な実行を保証するために使用されるプロセス全体には、起動フェーズ801と実施フェーズ802が含まれる。起動フェーズ801で使用するプロトコルは、実施フェーズ802で使用するプロトコルの基盤を保証する。
【００９５】
起動フェーズ801で、セキュリティ設定804はコンポジットアプリケーションを実行する前に行われる。たとえば、割り当てられたアプリケーションレベルのセキュリティインテンションがロードされ、実行時に実施されるように内部的に設定される。バックエンドサービスとのインタラクションで、サービスがバックエンドで実行される前に十分な認可が行われるように、対応するセキュリティ設定がセットアップされる。ポリシー更新プロトコルは、このように認可ポリシーを生成し、欠落するポリシーをバックエンドポリシーデータベースに挿入するために使用される。外部のサービスとのインタラクションでは、認証属性と認可属性を交換することによって信頼を確立できる。
【００９６】
外部のポリシーネゴシエーション805は、コンポジットアプリケーションで外部のサービス(たとえば、さまざまなセキュリティドメインに関連付けられたサービス)を使用する場合に行われる。コンポジットアプリケーション(たとえばサービスコンシューマとして)と外部のサービス(たとえばサービスプロバイダとして)は、それぞれのセキュリティポリシーとセキュリティ機能を、たとえばトークンのタイプ、暗号化のアルゴリズムや使用されるメカニズムに関して定義できる。インタラクションを実行する前に、コンポジットアプリケーションと外部のサービスの両方は共通のポリシーを指定する一致(agreement)に到達する。こうして到達した一致は、さまざまなソースのポリシーのマージをサポートするポリシーネゴシエーションプロセスによって達成される。
【００９７】
実施フェーズ802で、外部ポリシーの実施806は両パーティー間のインタラクションのそれぞれについて、共通のポリシーの実施に対処する。外部ポリシーの実施806は、交換されたメッセージが、たとえばメッセージにセキュリティトークンを追加することによって変更されるように要求することができる。ローカルセキュリティの実施807では、強化されたフレームワークはローカルサービスやローカルオブジェクトへのアクセスを規制するアクセス制御メカニズムを提供する。そうする上で、アプリケーションセキュリティポリシーの効率的な指定をサポートするとともに、こうしたポリシーの実施と管理に使用される実行時コンポーネントもサポートするドメイン固有言語のファミリが提供される。
【００９８】
前述のように、ビジネスプロセス仕様にインテンションを添付することによって、セキュリティポリシーが指定される。ビジネススクリプト言語は、コンポジットアプリケーションの機能要素を効率的に定義し、複数のタスクを含むプロセスを定義するように設計されている(さらに、タスクには複数のアクティビティを含めることができる)。タスクは、ローカルサービスを使用し、ローカルデータを変数として格納し、さらに外部のWebサービスまたはバックエンドシステムを呼び出すことができる。
【００９９】
少し先に進めると、図16は自動的なセキュアアプリケーションコンポジションを実装する別のプロセス1600を示している。手短に言えば、プロセス1600が開始されると(S1601)、ビジネスプロセスにセキュリティフレームワークが適用され、このセキュリティフレームワークはコンポジットアプリケーションのセキュリティオブジェクティブを識別する定義フェーズと、識別されたセキュリティオブジェクティブを実現するセキュリティパターンを実装する実現フェーズと、セキュリティパターンに基づくコンポジットアプリケーション内のセキュリティアノテーションを使用して識別されたセキュリティオブジェクティブを実装する宣言フェーズを備えている(S1602)。外部のポリシーネゴシエーションが実行され、セキュリティフレームワークの適用に基づいてコンポジットアプリケーションと外部のサービスとの共通のポリシーを指定する(S1604)。コンポジットアプリケーションと外部のサービスとのインタラクションのそれぞれについて、共通のポリシーが実施される(S1605)。外部のサービスからローカルサービスとローカルオブジェクトへのアクセスは、セキュリティオブジェクティブに基づいて規制され(S1606)、それによってプロセス1600は終了する(S1607)。
【０１００】
以下に示す表6は、候補となる輸送業者から資格のある輸送業者(自動車輸送業者など)を選択して予約する合理化されたプロセスを示すビジネスプロセス仕様の別の例を提供している。参照しやすいように、ビジネスプロセス仕様の各行には番号が付けられている。
【０１０１】
【表６】
0005139220.tif 000007
【０１０２】
選択プロセスは、発行された出荷要求の輸送業者の送料に基づいて実行され、逐次的に実行される4つのタスク(18〜20行目)を含んでいる。GET_CARRIERSタスクは、出荷要求の詳細に基づいて輸送業者の適格性をチェックした後に、輸送業者レジストリから輸送業者を選択する。GET_RATEタスクは、輸送業者ごとに見積もり要求(RFQ:request for quote)を生成し、その結果、各輸送業者はRFQを評価して提案書で応答する。HUMAN TASKタスクは、ユーザー(人間)が輸送業者を手動で選択する機能を実装する。さらに、BOOK_CARRIERタスクは選択された輸送業者の予約を実行する。
【０１０３】
セキュリティオブジェクティブは、ビジネスプロセス仕様内でセキュリティインテンションの形で表現される。たとえば、図9はビジネスプロセスにおいてセキュリティを指定するために使用するモデル900を示す図である。定義フェーズは特定のセキュリティインテンション(たとえばセキュリティインテンション902)のインテンションオントロジー901を定義し、実現フェーズはパターン(たとえばパターン905)のパターンリポジトリ904を実現する。パターン905はセキュリティインテンション902を実装するため、セキュリティインテンション902はパターン905に関連付けられる。
【０１０４】
セキュリティインテンションは、ビジネスプロセス仕様にセキュリティアノテーションを挿入することによって実装される。たとえば、プロセス906はビジネスプロセス仕様に添付されたセキュリティアノテーション907を使用することによって実施されるセキュリティインテンションのコンポジットセットを宣言できる。セキュリティアノテーションの3つの例には、サービスインタラクションセキュリティアノテーション909(たとえば、実施セキュリティアノテーション910または公開セキュリティアノテーション911)、割り当てセキュリティアノテーション912、または制約セキュリティアノテーション914が含まれる。
【０１０５】
サービスインタラクションアノテーション909は、Webサービスを使用する場合、たとえばメッセージを送信するときにメッセージを暗号化する必要がある場合に、外部の実施セキュリティポリシーを宣言するために使用される。実施アノテーション910(enforce <サービス使用インテンション表現(service usage intention expression)>)ステートメントは、コンポジットアプリケーションで使用するWebサービスとのインタラクションのポリシーを宣言する。たとえば、表6の5行目で、B2BConfidentiality and B2Blntegrityが実施され、SOAP(Simple Object Access Protocol)メッセージは強制的に暗号化され、署名される。したがって、タスク915(WebサービスをコールするタスクGET_RATEまたはBOOK_CARRIERでもよい)を実行する場合は、SOAPメッセージが送信される前に暗号化され、署名される。
【０１０６】
公開セキュリティアノテーション911(expose <サービス使用インテンション表現>)ステートメントは、コンポジットアプリケーションまたはローカルコンポーネントをWebサービスとして公開する場合に使用するセキュリティポリシーを宣言する。たとえば、表6の6行目では、コンポジットアプリケーションがWebサービスとして公開され、公開されたサービスを呼び出す任意のサービスコンシューマとの暗号化通信を要求する。
【０１０７】
割り当てセキュリティアノテーション912(assign <ロール割り当てインテンション表現(role assignment intention expression)>)ステートメントは、所与のタスクの実行を許可されるロールを指定する。たとえば、ビジネスプロセス開発者は、表6の7行目で、タスクSELECT_CARRIERが"manager(管理者)"のロールを持つユーザーによって実行されるべきであるインテンションを宣言している。
【０１０８】
制約セキュリティアノテーション914(constraint <実行順序インテンション表現(execution order intention expression)>)は、タスクが実行される順序または順番を指定する。たとえば、表6の8行目によると、タスクBOOK_CARRIERはタスクSELECT_CARRIERが完了した後、つまり管理者が輸送業者を選択した後に実行されるべきである。その他の制約のタイプ、たとえば、職務の分離、職務の結合、ロールの年功などを追加したり置き換えたりすることができる。
【０１０９】
本明細書で説明する強化されたフレームワークは、セキュリティインテンション(またはセキュリティオブジェクティブ)は定義されたパターンに関連付けられており、こうしたパターンによって実装されるため、セキュリティポリシーを実装するためのパターン指向のアプローチを採用する。このことにより、セキュリティインテンションは、そのセキュリティインテンションを説明するセキュリティアノテーションに関連付けられたパターンによって実装することができる。コンポジットアプリケーションを実行する場合に、コンテナは特定のセキュリティインテンションに対応するパターンを検出し、このパターンの実装に従ってアプリケーションのセキュリティを保証する。以下の表7は、セキュリティパターンの抜粋を示している。
【０１１０】
【表７】
0005139220.tif 000008
【０１１１】
一般に、セキュリティパターンはインテンションを実施するための技術的な詳細(たとえば、特定のセキュリティの問題をどう実施すべきか)を提供するために使用される。こうしたパターンは、コンテナプロバイダで記述された汎用のセキュリティコンポーネントとして、または他の特定のパーティーによってパターンライブラリまたはアプリケーションインフラストラクチャと送達できるパターンリポジトリの一部によって提供できる。アプリケーションに固有のセキュリティインテンションがまだ定義されていない場合は、あらかじめ構成されたパターン実装を拡張または抽出することができる。セキュリティパターン用ドメイン固有言語を使用することによって、パターン実装はモジュールで構成され、効果的である。パターン内の実施コードは、スクリプト言語で記述することもできる。
【０１１２】
表6に示す抜粋されたパターンにおいて、このパターンは複数のエントリポイントを備えるモジュールと見なすことができ、こうしたエントリポイントからパターンを呼び出すことによってセキュリティを実施できる。さまざまなタイプのエントリポイントを使用して、パターンによって実装された実施の特定の部分をトリガすることができる。たとえば、BEFORESERVICESELECTIONは、サービスレジストリが要求される前に指定されたコードが実行されるエントリポイントである。
【０１１３】
図10は、コンポジットアプリケーションを開発するための設計および実行環境を提供するセキュリティモニタ1001を示すブロック図である。セキュリティポリシーの実施は、セキュリティモニタ1001を使用して実行され、セキュリティモニタはコンポジットアプリケーションコンテナ1000に統合されている。コンテナは、統合された設計時1003を提供し、ビジネススクリプト言語でのコンポジットアプリケーションを開発する。
【０１１４】
ビジネスプロセス仕様(または「スクリプト」または「説明」)が保存され、スクリプトパーサー1002で解析されることによって、ビジネスプロセス仕様は実行エンジン1004が実行可能な形式で配置される。実行中に、基盤となるビジネスプロセスはコンテナサービス1005(サービスレジストリ1006、メッセージングサービス1007、またはその他のサービス1009を含めることができる)を使用する。人的タスクを実行する場合に、制御はタスクリストユーザーインターフェイス(UI:user interface)1010に渡され、UIを使用して手動のタスクを完了できる。
【０１１５】
スクリプトパーサー1002は、ビジネスプロセス仕様におけるセキュリティインテンションの宣言をサポートするように拡張されている。コンテナ1000のコンポーネントによって、セキュリティモニタ1001は、ビジネスプロセスの実行を監視でき、適切な場合は干渉またはインタラクションを行うことができる。
【０１１６】
セキュリティモニタ1001は、他のコンテナコンポーネント(たとえば、スクリプトパーサー1002またはメッセージングサービス1007)の状態および/または挙動を調査し、変更することができる。挙動は、そのコンポーネントによって生成されたイベントにアクセスすることによって監視される。状態は、イベントのコンテクストによって監視される。このようにして、セキュリティモニタ1001は、ビジネスプロセス仕様とセキュリティアノテーションにアクセスし、どのタイプのセキュリティを実施すべきかを判定することができる。同様に、セキュリティモニタ1001はパターンリポジトリにアクセスし、セキュリティアノテーション内で表現されたインテンションをどのように実施すべきかを判定する。
【０１１７】
セキュリティモニタ1001は、実行エンジン1004内に導入されたフックを使用してビジネスプロセスの実行を監視する。このように、セキュリティモニタ1001は、総合的な調停の概念に従っており、ビジネスプロセスの実行におけるセキュリティに関連するすべてのイベントはセキュリティモニタ1001によって傍受される。モニタは、実際にイベントが発生する前に、選択されたパターンを呼び出し、実際の状態をチェックして更新し、傍受されたイベントの結果を変更することによってセキュリティを実施することができる。これを効果的に実現するために、実行エンジン1004はイベントを生成するアクティビティを認識している。さらに、セキュリティモニタ1001は、この特定のビジネスプロセスに使用するセキュリティインテンションのセットにアクセスする必要がある。
【０１１８】
実行されたビジネスプロセスの各タスクは、1つまたは複数の特定のタイプのセキュリティ関連イベントを生成する。タスクを実行する間に、実行エンジン1007は実行時イベントを生成する。このイベントのタイプは、現在タスクで何が行われているかに対応する。生成されたイベントが有効になる前に、イベントは遅延されてセキュリティモニタ1001に配信され、セキュリティモニタは実行時プロトコルを実行でき(図8を参照)、さらに、イベントのタイプに対応するエントリポイントで選択されたパターンを呼び出すこともできる。
【０１１９】
イベントのタイプには、プロセスモデル変更イベント、サービス選択イベント、サービスコール前イベント、サービスコール後イベント、人的タスク実行イベント、または別のイベントを含めることができる。プロセスモデル変更イベントは、ビジネスプロセス仕様またはそのセキュリティインテンションが変更され、保存された場合に、統合された設計時に生成される。統合された設計時がないシステムでは、開発時にアナログイベントを生成できる。コンテナ1000は、セキュリティ設定プロトコルを実行する。このイベントの場合は、呼び出される関連のパターンエントリポイントタイプは存在しない。
【０１２０】
サービス選択イベントは、タスクがサービスレジストリ1006を使用して特定のカテゴリのサービスを選択する場合に生成される。このイベントによって、選択されたセキュリティポリシーに基づき、サービスプロバイダのフィルタが実行される。たとえば、コンテナ1000はBEFORESERVICESELECTIONエントリポイントをトリガし、コンポジットアプリケーションのコンポジットポリシーを生成し、さらにこのポリシーを使用してサービスを選択する。また、コンテナ1000は、選択されたカテゴリで使用可能なサービスプロバイダのリストを取得し、リスト内のサービスプロバイダごとにポリシーネゴシエーションプロトコルを使用する。特定のサービスプロバイダでポリシーの一致が見つからない場合に、このサービスプロバイダは使用可能なサービスプロバイダのリストから削除される。識別された資格のあるサービスプロバイダのフィルタされたリストがビジネスプロセスに返される。
【０１２１】
サービスプロバイダへのコールが発生すると、イベントが生成され、送信されるメッセージを含むコンテクストがセットアップされる。コンテナはパターン内のBEFORESERVICECALLエントリポイントをトリガし、メッセージがコンテナ1000によって送信される前に、メッセージの内容を変更できる。同様に、サービスプロバイダがメッセージを返すと、イベントが生成され、受信したメッセージを含むコンテクストがセットアップされる。コンテナはパターン内のAFTERSERVICECALLエントリポイントをトリガし、メッセージに含まれるデータがビジネスプロセス内でさらに使用される前に、メッセージを変換する。
【０１２２】
人的タスクが実行される前に、人的タスク実行イベントが生成される。セキュリティモニタ1001は、ユーザーがタスクを実行するための十分な許可を持っているかどうかを判定する。実施はイベントがトリガされたときに開始されるため、実施はセキュリティモニタでどんな種類のイベントがキャプチャされるかによって限定できる。このように、セキュリティモニタ1001は、新しいタイプのイベントに対応するように容易にカスタマイズしたり拡張したりすることができる。
【０１２３】
図11は、セキュリティサービス間の例示的な関係を示すブロック図である。コンポジットアプリケーション環境では、各サービスはコンシューマサービスおよびプロバイダサービスとして動作できる。各サービスは、さまざまなセキュリティ要件に対処できるように、一連のセキュリティサービス1101を使用しており、そのそれぞれは適切に定義されたセキュリティ機能を提供する。
【０１２４】
図11で、バックエンドポリシージェネレータ1102はバックエンドポリシー実施で使用する認可ポリシーを生成するために使用される。バックエンドポリシーアップデータ1104は、特定のポリシーがバックエンドポリシーデータベース内に存在するかどうかをチェックするために使用され、該当する場合はポリシーを挿入するために使用される。ポリシージェネレータ1105は、サービスインタラクションセキュリティアノテーションからWS-Security Policyポリシー1106を生成するために使用される。ポリシーマッチャ1107は、2つのWS-Securityポリシー間の互換性のあるアサーションをマッチングすることによって一致したポリシー1109を導出し、ポリシーレジストリ1110は、外部のサービスインタラクションのポリシーを格納し、取得するために使用される。
【０１２５】
トークンエンジン1111は、SOAPメッセージにトークンを埋め込むために使用され、さらにトークン署名検証機能を提供するために使用される。セキュリティトークンサービス1112は、SAMLトークン1114を生成するために使用される。暗号化エンジン1115は、暗号化と復号化、およびSOAPメッセージの署名と検証の機能を提供し、ポリシー決定点1116は、XACMLにエンコードされたアクセス制御ポリシー1117を実施するために使用される。
【０１２６】
プロセスモデル変更イベントが発生すると、ビジネスプロセス仕様の認可要件に基づいてバックエンドセキュリティポリシーとローカルポリシーが更新される。詳細には、ビジネスプロセス仕様から認可セキュリティインテンションが抽出されてバックエンドポリシージェネレータ1102に渡され、ここで対応するXACMLポリシー1117が生成される。バックエンドシステムは、その認可設定を管理するための個別の「認可ポリシーアップデータ"authorization policy updater"」Webサービスインターフェイスを提供する。
【０１２７】
バックエンドポリシージェネレータ1102は、バックエンドシステムによって個別の認可ポリシーアップデータWebサービスとして提供されるバックエンドポリシーアップデータ1107に生成されたXACMLポリシー1117を渡す。バックエンドポリシーアップデータ1104は、ポリシー1117をXACML要求に埋め込み、次にこの要求がバックエンドポリシー決定点1116に送信される。ポリシー決定点1116は、受信したポリシー1117が存在するかどうかによって、XACML PERMIT応答またはDENY応答のいずれかを返す。ポリシーが存在しない場合は、バックエンドポリシーアップデータ1104によってポリシーデータベースにポリシーが挿入される。1つの実装例では、バックエンドポリシーアップデータ1104はJAVA(登録商標)プログラミング言語を使用して実装されており、ポリシー決定点1116はSUN(登録商標) XACMLマークアップ言語を使用して実装される。
【０１２８】
ローカルポリシー更新プロセスは、ポリシーがローカルポリシーデータベース内で更新されることを除いて、バックエンドセキュリティポリシー更新プロセスと同様である。このようなローカルポリシーは、ユーザーインターフェイスレベルで認可を実施するために使用できる。
【０１２９】
セキュリティイベント処理を行うセキュリティモニタの部分は、コンテナのさまざまなコンポーネントに含まれる。たとえば、設計時はプロセスモデル変更イベントを認識して処理し、バックエンドセキュリティ設定1119をトリガする。サービスレジストリは、サービス選択イベントを処理し、ポリシーネゴシエーション1120をトリガする。メッセージングサービスは、SOAPメッセージを送信するときにサービスコール前イベントを処理し、結果を受信するときにサービスコール後イベントを処理する。サービスコールイベントは、外部のポリシー実施1121をトリガすることによって処理される。ローカルサービスとローカルデータにアクセスする場合、およびユーザーインターフェイスが人的タスク実行イベントを処理する場合は、ローカルサービス実施1122がトリガされる。
【０１３０】
図12は、表6に示す例示的なビジネスプロセスの実行時の実施を示している。このプロセスには、サービスインタラクションセキュリティアノテーション"enforce B2BConfidentiality and B2Blntegrity"と、割り当てセキュリティアノテーション"assign roles [manager] to select carrier"が含まれる。前者のセキュリティアノテーションは、B2B Webサービスインタラクションは交換されるSOAPメッセージに対して暗号化とデジタル署名によってセキュリティを保証する必要があることを示している。後者のアノテーションは、"manager(管理者)"のロールで動作しているユーザーのみが輸送業者の選択を許可されることを示している。
【０１３１】
このようなセキュリティアノテーションを実施するために、実行エンジン1201はビジネスプロセスの各タスクを実行する間にイベントをトリガする。トリガされたイベントは、セキュリティモニタ1202に報告され、ここで適切なセキュリティ実施アクティビティに対処する。
【０１３２】
セキュリティ実施の観点から、GET_CARRIERSタスク1204の実行には輸送業者の選択が含まれており、これに関して出荷プロセスと輸送業者のサービスとの相互の一致がある。これは、出荷ビジネスプロセスのセキュリティインテンション"B2Bconfidentiality"と"B2Bintegrity"は選択された各輸送業者のセキュリティ機能を満足する必要があることを意味する。
【０１３３】
ポリシーネゴシエーション1205は、WS-Policy仕様に従ってポリシーマッチャで実行できる。具体的に、セキュリティアノテーションで説明されている高レベルのセキュリティインテンションを反映するWS-Policyポリシーが生成される。実行時に呼び出されたサービスのセキュリティポリシーの変更に対応するために、適切な場合は輸送業者のポリシーがポリシーレジストリ1206内で更新される。
【０１３４】
次に、生成されたポリシーと選択された輸送業者(すなわちサービスプロバイダ)の他のWS-Policyポリシーとの共通集合が得られる。ポリシーの共通集合は、WS-Policyにおけるネゴシエーションプロセスの中心的な機能である。共通集合は、出荷ビジネスプロセスとサービスプロバイダの両方のセキュリティポリシーに含まれる互換性のある代替的ポリシーを識別する。共通集合は、可換の結合関数であり、複数のセキュリティポリシーを比較し、WS-SecurityPolicyで要求されるように、すべての有効な代替に関してクリアする必要のあり得るポリシーを返す。
【０１３５】
資格のあるセキュリティポリシーは、一致したポリシーと呼ばれており、すべての有効で資格のある代替ポリシーから選択される。ポリシーマッチャは、サービスレジストリから使用可能なサービスを要求し、ここで非空の一致したポリシーが生成されたサービスを選択する。
【０１３６】
WS-SecurityPolicy仕様に関しては、非空ポリシーには機密性のアサーションと整合性のアサーションが含まれる。さらに、一致したポリシーには輸送業者サービスの認可要件を指定するSAMLトークンアサーションが含まれる。1つの実装例では、ポリシーマッチャはJAVA(登録商標)プログラミング言語を使用し、Apache WS-Commonsポリシーを使用して実装できる。
【０１３７】
GET_RATEタスク1207の実行では、それぞれ対応する一致ポリシーに基づいて規制できるWebサービス呼び出しを使用する。外部のWebサービス1209に要求を送信する前に、セキュリティモニタはサービスインタラクションセキュリティアノテーションに含まれるセキュリティインテンションのそれぞれに対応するパターンを取得する。セキュリティモニタは、ここで、BEFORESERVICECALLエントリポイントを呼び出すことによって、セキュリティアノテーションで指定された順序でパターンを実行する。
【０１３８】
パターンコードは、実際のSOAPメッセージ(SOAPメッセージング1210を介して通信する)をメッセージの暗号化と署名によってセキュアメッセージに変換し、セキュリティインテンションで表されるセキュリティオブジェクティブを実現する。一致したセキュリティポリシーに従って、パターンコードは一致ポリシーによって要求されるように要求にSAMLトークンも追加する。さらに、セキュリティモニタはWS-SecurityにエンコードされたSOAPメッセージの形で要求を輸送業者サービスプロバイダに送信する。
【０１３９】
輸送業者サービスプロバイダは、サービス要求を受信すると、SOAPメッセージの暗号化オペレーションを実行し、SAMLトークンを検証する。輸送業者サービスプロバイダのポリシー決定点は、ここでトークンの情報に基づいてサービス要求を評価する。サービス要求が肯定的に評価される場合は、料金が計算され、SOAPメッセージに料金が記載される。このSOAPメッセージは、暗号化され、署名されてから、出荷要求者に返送される。呼び出されたサービスプロバイダの応答を受信した後に、セキュリティモニタはAFTERSERVICECALLエントリポイントのパターン実施コードを実行する。この呼び出しによって署名が検証され、コンテンツが復号化される。
【０１４０】
セキュリティ実施の観点から、SELECT_CARRIERタスク1214の実行によって、指定したロール割り当てインテンションに基づいて承認が行われる結果となる。また、SELECT_CARRIERタスク1214の実行には、ユーザーインターフェイスにおける輸送業者アクティビティの選択と、バックエンド1212における選択結果アクティビティの継続も含まれる。このようにして、2つのアクティビティの実行によって2フェーズのアクセス制御プロトコルを呼び出す。
【０１４１】
ユーザーインターフェイス内でのセキュリティの実施により、"manager"のロールで活動するユーザーによってのみ、輸送業者選択タスクが出力され、完了する。選択結果を格納するには、バックエンドシステム内で特別な許可が必要になり得る。前述のように、許可がすでに更新されていると仮定すると、バックエンドポリシー実施によってSAMLアサーショントークンがSOAPメッセージに追加され、次にこのメッセージがバックエンドシステム1215に送信される。SAMLトークンは、ユーザーのロール"manager"をエンコードする。バックエンドシステム1215のトークンマネージャは、SOAPメッセージとトークンを含むサービス要求を受信すると、トークンを検証し、ロールの情報を抽出する。
【０１４２】
最終的に、BOOK_CARRIERタスク1215は、GET_RATEタスクで実行したのと同様にポリシー実施を行うことによって、前に選択した輸送業者サービスをコールする。
【０１４３】
図13は、別の例示的なビジネスプロセスの実行時の実施を示している。このプロセスには、サービスインタラクションセキュリティアノテーション"enforce confidentiality and integrity"と、割り当てセキュリティアノテーション"assign roles [manager] to select carrier"が含まれる。製品セキュリティチーム1301は、少なくとも1つの機密性パターン1302と少なくとも1つの整合性パターン1304をパターンリポジトリ1305に追加する。その他のパターンを(たとえばベンダーまたはコンテナプロバイダのパターンライブラリ1306から)パターンリポジトリ1305に追加することもできる。
【０１４４】
設計時に、ビジネスプロセス開発者1307は、サービスインタラクションセキュリティアノテーション"enforce confidentiality and integrity"1309と割り当てセキュリティアノテーション"assign roles [manager] to select_carrier"1310をビジネスプロセス仕様に追加する。
【０１４５】
GETCARRIERSタスク1311は、ビジネスプロセス仕様が実行されるときに呼び出され、これによってポリシーマッチャ1312はコンポジットアプリケーションポリシー1314とパートナーサービスポリシー1315を取得する。コンポジットアプリケーションポリシー1314はコンポジットポリシー生成1316に基づいて取得され、パートナーサービスポリシー1315はWebサービスプロバイダ1317の呼び出しに基づいて取得される。ポリシーマッチャ1312は、共通集合関数を使用して一致ポリシー1319を出力し、GETRATEタスク1320の実行中にSOAPメッセージング1322を使用した輸送業者のWebサービス1317とのメッセージング実施1321のため、およびSELECTCARRIERタスク1324の実行中にバックエンド1326による認可実施1325のために使用される。
【０１４６】
図14は、別の一般的な実装に従ってコンポジットアプリケーションを実装する例示的なシステム1400の外観を示している。手短に言えば、システム1400には、コンポジットアプリケーションを呼び出すデバイス1401とWebサービスを提供するWebサービスプロバイダ1402が含まれる。以下でより詳細に説明するように、デバイス1401には特に記憶媒体とプロセッサが含まれる。記憶媒体には、ビジネスプロセスの仕様が格納されており、こうした仕様には、セキュリティインテンションを定義するセキュリティアノテーションと、ビジネスプロセスの少なくとも一部を定義し、外部のサービスをコールするタスクが含まれる。プロセッサは、セキュリティアノテーションに関連付けられたセキュリティパターンを呼び出し、呼び出されたセキュリティパターンに基づいてセキュリティインテンションを満足する外部のサービスに関連付けられたサービスプロバイダを識別し、識別されたサービスプロバイダを使用してビジネスプロセスを呼び出すように設定されている。
【０１４７】
代替として、デバイス1401はビジネスプロセスにセキュリティフレームワークを適用するように構成されており、このセキュリティフレームワークにはコンポジットアプリケーションのセキュリティオブジェクティブを識別する定義フェーズと、識別されたセキュリティオブジェクティブを実現するセキュリティパターンを実装する実現フェーズと、セキュリティパターンに基づくコンポジットアプリケーション内のセキュリティアノテーションを使用して識別されたセキュリティオブジェクティブを実装する宣言フェーズが含まれる。エンタープライズは、外部のポリシーネゴシエーションを実行し、セキュリティフレームワークの適用に基づいてコンポジットアプリケーションと外部のサービスの間で共通のポリシーを指定し、コンポジットアプリケーションと外部のサービスとのインタラクションのそれぞれについてこの共通のポリシーを実施し、さらにセキュリティオブジェクティブに基づいて外部のサービスからローカルサービスおよびローカルオブジェクトへのアクセスを規制するようにさらに設定されている。
【０１４８】
より詳細には、デバイス1401のハードウェア環境には、ユーザーにテキストやイメージを表示するためのディスプレイモニタ1408、デバイス1401にテキストデータやユーザーコマンドを入力するためのキーボード1409、ディスプレイモニタ1408上に表示されるオブジェクトのポインティング、選択、調整を行うためのマウス1410、固定ディスクドライブ1411、取り外し可能なディスクドライブ1412、テープドライブ1414、ハードコピー出力デバイス1415、コンピュータネットワーク接続1416、およびビデオおよびオーディオ検出器(video and audio detector)1417が含まれる。
【０１４９】
ディスプレイモニタ1408には、デバイス1401で使用するソフトウェアアプリケーションおよびデバイス1401を操作するために必要なオペレーティングシステムプログラムの表示を含むグラフィックス、イメージ、およびテキストが表示される。ユーザーはキーボード1409を使用してコマンドやデータを入力し、コンピュータのオペレーティングシステムプログラム、Webブラウザ、および/またはコンポジットアプリケーションを操作し、制御する。ユーザーは、デバイス1401およびデバイス1401上で動作するアプリケーションとのインタラクションおよびそれらの制御の一環として、マウス1410を使用してディスプレイモニタ1408上に表示されるグラフィックスやテキストのオブジェクトを選択および調整する。マウス1410は、任意のタイプのポインティングデバイスであり、ジョイスティック、トラックボール、タッチパッド、またはその他のポインティングデバイスのいずれでもよい。
【０１５０】
ビデオおよびオーディオ検出器1417は、デバイス1401がデジタルイメージおよび/またはオーディオをキャプチャできるようにし、スキャナ、デジタルカメラ、デジタルビデオカメラ、マイクロフォン、またはその他のデジタル入力デバイスのいずれでもよい。コンポジットアプリケーションプラットフォームを提供するために使用されるソフトウェアは、コンピュータ可読の記憶媒体(たとえば固定ディスクドライブ1411)にローカルに格納される。
【０１５１】
さらなる実装において、固定のディスクドライブ1411は、それ自体が多くの物理ドライブユニットを含んでいてもよい(たとえば、"RAID")。あるいは、物理的に別のコンピューティングユニット内に配置されたディスクドライブファームまたはディスクアレイでもよい。こうしたコンピュータ可読の記憶媒体により、デバイス1401は取り外し可能および不可能の記憶媒体に格納されたコンピュータで実行可能なプロセスステップ、アプリケーションプログラムなどにアクセスできる。
【０１５２】
無線または有線のコンピュータネットワーク接続1416は、モデム接続、Ethernet(登録商標)を含むローカルエリアネットワーク("LAN")接続、またはデジタル加入者回線("DSL")などのブロードバンドワイドエリアネットワーク("WAN") 接続、ケーブルによる高速インターネット接続、ダイヤルアップ接続、T-1回線、T-3回線、光ファイバ接続、または衛星回線のいずれでもよい。ネットワーク1406は、LANネットワーク、企業または政府のWANネットワーク、インターネット、またはその他のネットワークの1つまたは複数でもよい。
【０１５３】
コンピュータネットワーク接続1416は、有線または無線のコネクタを使用する。無線コネクタの例には、たとえば、INFRARED DATA ASSOCIATION(登録商標)("IrDA(登録商標)")無線コネクタ、光無線コネクタ、INSTITUTE OF ELECTRICAL AND ELECTRONICS ENGINEERS(登録商標)("IEEE(登録商標)")標準802.11無線コネクタ、BLUETOOTH(登録商標)無線コネクタ、近距離通信("NFC":near field communication)コネクタ、直交周波数分割多重("OFDM":orthogonal frequency division multiplexing)超広域帯("UWB":ultra wide band)無線コネクタ、時間変調超広域帯("TM-UWB":time-modulated ultra wide band)無線コネクタ、またはその他の無線コネクタが含まれる。有線コネクタの例には、たとえば、IEEE(登録商標)-1394 FIREWIRE(登録商標)コネクタ、ユニバーサルシリアルバス("USB":Universal Serial Bus)コネクタ、シリアルポートコネクタ、パラレルポートコネクタ、またはその他の有線コネクタが含まれる。
【０１５４】
取り外し可能なディスクドライブ1412は、デバイス1401からデータをダウンロードしたり、デバイス1401にデータをアップロードしたりするために使用される取り外し可能なストレージデバイスである。取り外し可能なディスクドライブ1412は、フロッピー（登録商標）ディスクドライブ、IOMEGA(登録商標) ZIP(登録商標)ドライブ、"CD-ROM"(compact disk-read only memory)ドライブ、"CD-R"(CD-Recordable)ドライブ、"CD-RW"(CD-Rewritable)ドライブ、フラッシュメモリ、USBフラッシュドライブ、外付けのハードディスクドライブ、サムドライブ(thumb drive)、ペンドライブ、キードライブ、"HD-DVD"(High-Density Digital Versatile Disc)光ディスクドライブ、Blu-Ray光ディスクドライブ、ホログラフィックデジタルデータストレージ"HDDS"(Holographic Digital Data Storage)光ディスクドライブ、あるいは、"DVD-R"または"DVD+R"(DVD-Recordable)、"DVD-RW"または"DVD+RW"(DVD-Rewritable)、またはDVD-RAMなどの書き込み可能または書き換え可能なさまざまなデジタル多用途ディスク("DVD":digital versatile disc)ドライブのいずれでもよい。ディスクに格納されるオペレーティングシステムプログラム、アプリケーション、およびさまざまなデータファイルは、固定ディスクドライブ1411、または取り外し可能なディスクドライブ1412の取り外し可能な媒体に格納される。
【０１５５】
テープドライブ1414は、デバイス1401からデータをダウンロードしたり、デバイス1401にデータをアップロードしたりするために使用されるテープストレージデバイスである。テープドライブ1414は、1/4インチカートリッジ("QIC")、4mmデジタルオーディオテープ("DAT")、8mm "DLT"(digital linear tape)ドライブ、または他のタイプのテープのいずれでもよい。
【０１５６】
ハードコピー出力デバイス1415は、オペレーティングシステムプログラムやアプリケーションに出力機能を提供する。ハードコピー出力デバイス1415は、プリンタでもテキストまたはイメージデータあるいはテキストまたはイメージデータのグラフィック表現を含む実際の出力オブジェクトを生成する任意の出力デバイスでもよい。ハードコピー出力デバイス1415は、デバイス1401に直接接続されているように図示されているが、必ずしもそうでなくてもよい。たとえば、ハードコピー出力デバイス1415は有線または無線のネットワークなどのネットワークインターフェイスを経由してデバイス1401に接続されてもよい。
【０１５７】
さらに、図14ではデバイス1401はデスクトップPCとして示されているが、他の実装ではデバイス1401はラップトップ、ワークステーション、ミッドレンジコンピュータ、メインフレーム、埋め込みシステム、電話、ハンドヘルドまたはタブレットコンピュータ、PDA、または他のタイプのコンピュータのいずれでもよい。
【０１５８】
図15は、図14に示す1台のコンピュータの内部アーキテクチャを示すブロック図である。コンピューティング環境には、オペレーティングシステムまたはアプリケーションを含むコンピュータ命令が処理されるコンピュータの中央処理装置("CPU")1501、グラフィックス、イメージ、およびテキストをディスプレイモニタ1408上にレンダリングするための通信インターフェイスと処理機能を提供するディスプレイインターフェイス1502、キーボード1409への通信インターフェイスを提供するキーボードインターフェイス1504、マウス1410または同等のポインティングデバイスへの通信インターフェイスを提供するポインティングデバイスインターフェイス1505、ビデオおよびオーディオ検出器1417への通信インターフェイスを提供するデジタル入力インターフェイス1506、ハードコピー出力デバイス1415への通信インターフェイスを提供するハードコピー出力デバイスインターフェイス1508、コンピュータCPU 1501で処理されるコンピュータ命令とデータが揮発性のメモリデバイスに格納されるランダムアクセスメモリ("RAM")1510、基本的な入力および出力("I/O")、起動、またはキーボード1409からのキーストロークの受信などの基本的なシステム機能を実現する不変の低レベルのシステムコードまたはデータが不揮発性のメモリデバイスに格納される読み取り専用メモリ("ROM")1511、オペレーティングシステム1521、アプリケーションプログラム1522(Webブラウザアプリケーション1523、コンポジットアプリケーション1524、および必要に応じてその他のアプリケーション1525を含む)、およびデータファイル1526が格納されるストレージ1520またはその他の適切なタイプのメモリ(たとえば、ランダムアクセスメモリ("RAM")、読み取り専用メモリ("ROM")、プログラム可能ROM("PROM")、消去可能PROM("EPROM")、電気的消去可能PROM("EEPROM")、磁気ディスク、光ディスク、フロッピー（登録商標）ディスク、ハードディスク、取り外し可能なカートリッジ、フラッシュドライブなど)、およびコンピュータネットワーク接続1416を経由してネットワーク1406への通信インターフェイスを提供するコンピュータネットワークインターフェイス1516が含まれる。構成要素となるデバイスとコンピュータCPU 1501は、コンピュータバス1527を経由して相互に通信する。
【０１５９】
手短に言えば、コンピュータプログラム製品はマシン可読記憶媒体すなわちディスク1520に明白に具体化される。コンピュータプログラム製品には、マシンで読み込まれた場合に、データ処理装置がビジネスプロセスの仕様にアクセスする結果となるように動作する命令が含まれており、こうした仕様には、セキュリティインテンションを定義するセキュリティアノテーションと、ビジネスプロセスの少なくとも一部を定義し、外部のサービスをコールするタスクが含まれる。本コンピュータプログラム製品には、データ処理装置がセキュリティアノテーションに関連付けられたセキュリティパターンを呼び出し、呼び出されたセキュリティパターンに基づいてセキュリティインテンションを満足する外部のサービスに関連付けられたサービスプロバイダを識別し、識別されたサービスプロバイダを使用してビジネスプロセスを呼び出す結果となるように動作する命令も含まれる。
【０１６０】
代替として、コンピュータプログラム製品はディスク1520に明白に具体化されており、本コンピュータプログラム製品には、マシンで読み込まれた場合に、データ処理装置がビジネスプロセスにセキュリティフレームワークを適用する結果となるように動作する命令が含まれており、このセキュリティフレームワークにはコンポジットアプリケーションのセキュリティオブジェクティブを識別する定義フェーズと、識別されたセキュリティオブジェクティブを実現するセキュリティパターンを実装する実現フェーズと、セキュリティパターンに基づくコンポジットアプリケーション内のセキュリティアノテーションを使用して識別されたセキュリティオブジェクティブを実装する宣言フェーズが含まれている。本コンピュータプログラム製品には、マシンで読み込まれた場合に、データ処理装置が外部のポリシーネゴシエーションを実行し、セキュリティフレームワークの適用に基づいてコンポジットアプリケーションと外部のサービスの間で共通のポリシーを指定し、コンポジットアプリケーションと外部のサービスとのインタラクションのそれぞれについてこの共通のポリシーを実施し、さらにセキュリティオブジェクティブに基づいて外部のサービスからローカルサービスおよびローカルオブジェクトへのアクセスを規制する結果となるように動作する命令もさらに含まれている。
【０１６１】
RAM 1510は、コンピュータバス1527とインターフェイスすることによって、ソフトウェアプログラム(オペレーティングシステムアプリケーションプログラム、およびデバイスドライバなど)の実行中にRAMストレージをコンピュータCPU 1501に迅速に提供する。より具体的に言えば、コンピュータCPU 1501はソフトウェアプログラムを実行するために、コンピュータ実行可能プロセスステップを固定ディスクドライブ1411またはその他の媒体からRAM 1510の領域にロードする。データはRAM 1510に格納され、データは実行中にコンピュータCPU 1501からアクセスされる。
【０１６２】
図15にも示すように、デバイス1401には、オペレーティングシステム1521、およびアプリケーションプログラム1522(ワードプロセッサ、スプレッドシート、プレゼンテーション、ゲーム、Webブラウザ、Java（登録商標）Scriptエンジン、またはその他のアプリケーション)のコンピュータ実行可能コードが格納される。前述の実装を使用してコンポジットアプリケーションを提供できるが、本開示による機能をダイナミックリンクライブラリ("DLL")として、または他のアプリケーションプログラム(たとえば、APPLE(登録商標) SAFARI(登録商標)WebブラウザまたはMICROSOFT(登録商標) INTERNET EXPLORER(登録商標)WebブラウザなどのインターネットWebブラウザ)へのプラグインとして実装することもできる。
【０１６３】
コンピュータCPU 1501は、多くの高パフォーマンスコンピュータプロセッサ(INTEL(登録商標)またはAMD(登録商標)プロセッサ、POWERPC(登録商標)プロセッサ、MIPS(登録商標) "RISC"(reduced instruction set computer)プロセッサ、SPARC(登録商標)プロセッサ、ACORN RISC Machine("ARM(登録商標)")アーキテクチャプロセッサ、HP ALPHASERVER(登録商標)プロセッサ、またはメインフレーム専用のコンピュータプロセッサを含む)の1つである。その他の編成において、コンピュータCPU 1501は、高パフォーマンスワークステーションおよびサーバーに見られる複数CPU 構成、またはメインフレームに見られる複数の拡張可能プロセシングユニットを含む複数のプロセッシングユニットである。
【０１６４】
オペレーティングシステム1521は、INTEL(登録商標)およびPOWERPC(登録商標)ベースのワークステーションおよびサーバー向けのAPPLE(登録商標) MAC OS X(登録商標)、MICROSOFT(登録商標) WINDOWS(登録商標) NT/WINDOWS(登録商標) 2000/WINDOWS(登録商標) XP Workstation、MICROSOFT(登録商標) WINDOWS(登録商標) VISTA(登録商標)/WINDOWS(登録商標) NT/WINDOWS(登録商標) 2000/WINDOWS(登録商標) XP Server、さまざまなUNIX(登録商標)系の(-flavored)オペレーティングシステム(IBM(登録商標)ワークステーションおよびサーバー向けのAIX(登録商標)、SUN(登録商標)ワークステーションおよびサーバー向けのSUNOS(登録商標)、INTEL(登録商標) CPUベースのワークステーションおよびサーバー向けのLINUX(登録商標)、HP(登録商標)ワークステーションおよびサーバー向けのHP UX WORKLOAD MANAGER(登録商標)、SGI(登録商標)ワークステーションおよびサーバー向けのIRIX(登録商標)、Digital Equipment Corporationコンピュータ向けのVAX/VMS、HP ALPHASERVER(登録商標)ベースのコンピュータ向けのOPENVMS(登録商標)、SYMBIAN OS(登録商標)、NEWTON(登録商標)、IPOD(登録商標)、WINDOWS(登録商標) MOBILEまたはWINDOWS(登録商標) CE、PALM(登録商標)、NOKIA(登録商標) OS("NOS")、OSE(登録商標)、あるいはモバイルデバイス用EPOC(登録商標)、またはコンピュータまたは埋め込みシステム専用のオペレーティングシステムのいずれでもよい。オペレーティングシステム1521用のアプリケーション開発プラットフォームまたはフレームワークは、BINARY RUNTIME ENVIRONMENT FOR WIRELESS(登録商標)("BREW")、Java（登録商標） Platform, Micro Edition ("Java（登録商標） ME")またはJava（登録商標） 2 Platform, Micro Edition ("J2ME(登録商標)")、PYTHONTM、FLASH LITE(登録商標)、またはMICROSOFT(登録商標) .NET Compactのいずれでもよい。
【０１６５】
図14および15は、コンポジットアプリケーションの呼び出しを実現するように設定されたプログラムコード、あるいはプログラムまたはプロセスステップを実行するコンピューティングシステムとして考えられる1つの実装を示しているが、他のタイプのコンピュータを使用することもできる。
【０１６６】
形式的な問題に関しては、「ユーザー」という用語は、こうしたプロセスとのインタラクションを行う実体を説明するために一貫して使用されており、こうした一般化は、さまざまな重複または非重複の状態でこうしたプロセスとのインタラクションを行う関連または非関連の生物または自動の実体または存在を説明することも意図されている。同様にして、「選択」という用語は、人による手動の選択、人以外による自動の選択、または両方の組み合わせを表すように意図されている。最後に、簡潔にするために、全体を通じて、"Java（登録商標）Script"という用語はSUN MICROSYSTEMS(登録商標) JAVA（登録商標）SCRIPTプログラミング言語を表すように意図されており、"XML"という用語は'eXtensible Markup Language'を表すように意図されている。
【０１６７】
前述の強化されたフレームワークは、ビジネス駆動型アプリケーションのセキュリティアプローチに従っており、これによってビジネスアプリケーションのセキュリティ要件はビジネスプロセス仕様レベルのセキュリティアノテーションとして表現され、表現されたセキュリティ要件を満たすために必要なセキュリティインフラストラクチャを自動的に生成できる。
【０１６８】
具体的に、このフレームワークは、直感的なドメイン固有セキュリティ言語を使用することによってコンポジットプロセスレベルでセキュリティポリシーのパターンベースのアノテーションを提供し、セキュリティポリシーとセキュリティ機能とのマッチメイキングを実行することによってコンポジットアプリケーションとサービスプロバイダの間の自動的な調停をもたらし、コンポジットアプリケーションとサービスプロバイダの間のセキュアな通信を管理する保護されたセキュアサービスプロキシを自動的に生成する。
【０１６９】
このように、コンポジットアプリケーションのスクリプトフレームワークは、より多くのビジネス指向開発者が既存または新規のビルディングブロックまたはサービスから新しいアプリケーションを容易に構築できるようにする統合モデル化環境とスクリプト言語を提供する。このフレームワークは、コンポジットアプリケーションの完全な仕様を統合モデルの形でサポートするモデルベースのスクリプトアプローチに従っている。このモデルの要素は、データモデル全体、サービスコールの編成、イベント管理、ユーザーインターフェイスなどを内部のドメイン固有言語として記述する。
【０１７０】
このように、コンポジットアプリケーションのエンドツーエンドの開発は、ドメイン固有言語のファミリを提供することによってサポートされる。このように、コンポジットアプリケーションをサポートするすべての関連のロジックと設定は、1人のビジネスプロセス開発者がたった1つのツールセットを使用してできるだけシームレスに定義して配備することができる。これで、ビジネスプロセス開発者に、さまざまなソフトウェア開発フェーズの間にたびたび使用されるさまざまなツールや抽象概念を使用する必要のない開発および実行環境が提供される。
【０１７１】
さまざまな実装について説明してきた。しかしながら、本開示の精神および範囲を逸脱することなくさまざまな変更が可能であることは理解されるであろう。したがって、他の実装は添付の請求項の範囲を逸脱しない。
【図面の簡単な説明】
【０１７２】
【図１】調整された順序で実行される一連のタスクまたはアクティビティを含む例示的なビジネスプロセスを示す図である。
【図２】セキュリティアノテーションを使用してコンポジットアプリケーション(composition applications)を実装する例示的なシステムアーキテクチャを示すブロック図である。
【図３】セキュリティアノテーションを使用してコンポジットアプリケーションを実装する例示的なプロセスを示す図である。
【図４】設計時にビジネスプロセス開発者が行うビジネスプロセス仕様の準備を示すスイム図(swim diagram)である。
【図５】ビジネスプロセスの呼び出しを示すスイム図である。
【図６】コンポジットアプリケーション開発フレームワークによってコールできるサービスのカテゴリを示すブロック図である。
【図７】強化されたフレームワークを使用したコンポジットアプリケーションの開発のさまざまなフェーズを示す図である。
【図８】強化されたフレームワークを使用したコンポジットアプリケーションの開発のさまざまなフェーズを示す図である。
【図９】ビジネスプロセスにおいてセキュリティを指定するために使用するモデルを示す図である。
【図１０】コンポジットアプリケーションを開発するための設計および実行環境を提供するセキュリティモニタを示すブロック図である。
【図１１】セキュリティサービス間の例示的な関係を示すブロック図である。
【図１２】例示的なビジネスプロセスの実行時の実施を示す図である。
【図１３】例示的なビジネスプロセスの実行時の実施を示す図である。
【図１４】例示的なシステムの外観を示す図である。
【図１５】図14に示すデバイスの内部アーキテクチャを示すブロック図である。
【図１６】セキュリティアノテーションを使用してコンポジットアプリケーションを実装する例示的なプロセスを示す図である。
【符号の説明】
【０１７３】
100    ビジネスプロセス
101    開始専用タスク
102    第1のタスク
104    第2のタスク
105    第3のタスク
106    終了専用タスク
200    システムアーキテクチャ
201    エンタープライズ
203    第1のサービスプロバイダ
204    第2のサービスプロバイダ
205    第3のサービスプロバイダ
206    ネットワーク
208    デバイス
209    エンタープライズポリシーリポジトリ(EPR)
210    エンタープライズセキュリティ機能カタログ(ESCC)
211    ポリシー設定サーバー(PCS)
212    サービスブローカー(SB)
214    サービスレジストリ(SR)
215    ビジネスプロセスエンジン(BPE)
216    イベントマネージャ(EM)
217    サービスプロキシレジストリ(SPI)
219    ビジネスプロセスエディタ
220    コンポジットビジネスプロセス仕様言語(BPEL)
221    ポリシードメイン固有言語エンジン(PDSLE)
222    セキュアサービスプロキシ(SSP)
224    SSPレジストリ(SSPR)
225    ポリシーパターンリポジトリ(PPR)
226    Webサービス
227    セキュリティ機能レジストリ
300    コンポジットアプリケーションレイヤで自動的なセキュアアプリケーションコンポジションを実装する例示的なプロセス
S301    開始
S302    ビジネスプロセスの仕様にアクセス。仕様には、セキュリティインテンションを定義するセキュリティアノテーションと、ビジネスプロセスの少なくとも一部を定義し、外部のサービスをコールするタスクが含まれる
S304    セキュリティアノテーションに関連付けられたセキュリティパターンを呼び出す
S305    呼び出されたセキュリティパターンに基づいてセキュリティインテンションを満足する外部のサービスに関連付けられたサービスプロバイダを識別
S306    識別されたサービスプロバイダを使用してビジネスプロセスを呼び出す
S307    終了
401    ポリシー管理ツール
402    エンタープライズポリシーリポジトリ
404    ポリシーパターンリポジトリ
405    エンタープライズセキュリティ機能カタログ
406    ポリシー設定サーバー
407    ビジネスプロセス仕様
501    ビジネスプロセスエンジン
502    ポリシードメイン固有言語エンジン
504    イベントマネージャ
505    ポリシー設定サーバー
506    セキュアサービスプロキシ
507    サービスブローカー
509    セキュアサービスプロキシレジストリ
510    サービスレジストリ
511    適合するサービスプロバイダ
600    コンポジットアプリケーション開発フレームワーク
601    コンポジットアプリケーション
602    第1の企業
604    外部のWebサービス
605    第2の企業
606    バックエンドサービス
607    ローカルサービス
701    定義フェーズ
702    実現フェーズ
704    宣言フェーズ
705    セキュリティリスク分析
706    セキュリティパターン定義
707    セキュリティインテンション定義
709    セキュリティパターン実装
710    セキュリティパターンプロビジョニング
711    アプリケーションレベルのインテンション宣言
712    サービスレベルのインテンション宣言
801    起動フェーズ
802    実施フェーズ
804    セキュリティ設定
805    外部のポリシーネゴシエーション
806    外部ポリシー実施
807    ローカルセキュリティ実施
900    セキュリティを指定するために使用するモデル
901    インテンションオントロジー
902    セキュリティインテンション
904    パターンリポジトリ
905    パターン
906    プロセス
907    セキュリティアノテーション
909    サービスインタラクションセキュリティアノテーション
910    実施セキュリティアノテーション
911    公開セキュリティアノテーション
912    割り当てセキュリティアノテーション
914    制約セキュリティアノテーション
915    タスク
1000    コンポジットアプリケーションコンテナ
1001    セキュリティモニタ
1002    スクリプトパーサー
1003    統合された設計時
1004    実行エンジン
1005    コンテナサービス
1006    サービスレジストリ
1007    メッセージングサービス
1009    その他のサービス
1010    タスクリストユーザーインターフェイス(UI)
1101    一連のセキュリティサービス
1102    バックエンドポリシージェネレータ
1104    バックエンドポリシーアップデータ
1105    ポリシージェネレータ
1106    WS-Security Policyポリシー
1107    ポリシーマッチャ
1109    一致したポリシー
1110    ポリシーレジストリ
1111    トークンエンジン
1112    セキュリティトークンサービス
1114    SAMLトークン
1115    暗号化エンジン
1116    ポリシー決定点
1117    アクセス制御ポリシー、XACMLポリシー
1119    バックエンドセキュリティ設定
1120    ポリシーネゴシエーション
1121    外部のポリシー実施
1122    ローカルサービス実施
1201    実行エンジン
1202    セキュリティモニタ
1204    GET_CARRIERSタスク
1205    ポリシーネゴシエーション
1206    ポリシーレジストリ
1207    GET_RATEタスク
1209    外部のWebサービス
1210    SOAPメッセージング
1212    バックエンド
1214    SELECT_CARRIERタスク
1215    バックエンドシステム
1215    BOOK_CARRIERタスク
1301    製品セキュリティチーム
1302    機密性パターン
1304    整合性パターン
1305    パターンリポジトリ
1306    ベンダーまたはコンテナプロバイダのパターンライブラリ
1307    ビジネスプロセス開発者
1309    サービスインタラクションセキュリティアノテーション"enforce confidentiality and integrity"
1310    割り当てセキュリティアノテーション"assign roles [manager] to select carrier"
1311    GETCARRIERSタスク
1312    ポリシーマッチャ
1314    コンポジットアプリケーションポリシー
1315    パートナーサービスポリシー
1316    コンポジットポリシー生成
1317    Webサービスプロバイダ、輸送業者のWebサービス
1319    一致ポリシー
1320    GETRATEタスク
1321    メッセージング実施
1322    SOAPメッセージング
1324    SELECTCARRIERタスク
1325    認可実施
1326    バックエンド
1400    システム
1401    デバイス
1402    Webサービスプロバイダ
1408    ディスプレイモニタ
1409    キーボード
1410    マウス
1411    固定ディスクドライブ
1412    取り外し可能なディスクドライブ
1414    テープドライブ
1415    ハードコピー出力デバイス
1416    コンピュータネットワーク接続
1417    ビデオおよびオーディオ検出器
1501    コンピュータの中央処理装置("CPU")
1504    キーボードインターフェイス
1505    ポインティングデバイスインターフェイス
1506    デジタル入力インターフェイス
1508    ハードコピー出力デバイスインターフェイス
1510    ランダムアクセスメモリ("RAM")
1511    読み取り専用メモリ("ROM")
1516    コンピュータネットワークインターフェイス
1520    ストレージ、ディスク
1521    オペレーティングシステム
1522    アプリケーションプログラム
1523    Webブラウザアプリケーション
1524    コンポジットアプリケーション
1525    その他のアプリケーション
1526    データファイル
1527    コンピュータバス
1600    自動的なセキュアアプリケーションコンポジションを実装する別のプロセス
S1601    開始
S1602    ビジネスプロセスにセキュリティフレームワークを適用。セキュリティフレームワークには定義フェーズと、実現フェーズと、宣言フェーズが含まれる
S1604    外部のポリシーネゴシエーションを実行し、セキュリティフレームワークの適用に基づいてコンポジットアプリケーションと外部のサービスとの共通のポリシーを指定
S1605    コンポジットアプリケーションと外部のサービスとのインタラクションのそれぞれについて共通のポリシーを実施
S1606    外部のサービスからローカルサービスとローカルオブジェクトへのアクセスをセキュリティオブジェクティブに基づいて規制
S1607    終了
【図１】
0005139220.tif 000009
【図２】
0005139220.tif 000010
【図３】
0005139220.tif 000011
【図４】
0005139220.tif 000012
【図５】
0005139220.tif 000013
【図９】
0005139220.tif 000014
【図１４】
0005139220.tif 000015
【図１５】
0005139220.tif 000016
【図１６】
0005139220.tif 000017
【図６】
0005139220.tif 000018
【図７】
0005139220.tif 000019
【図８】
0005139220.tif 000020
【図１０】
0005139220.tif 000021
【図１１】
0005139220.tif 000022
【図１２】
0005139220.tif 000023
【図１３】
0005139220.tif 000024