コンポジットビジネスアプリケーション(または「コンポジットアプリケーション」)は、複数のコンポーネントやサービス(たとえば、個々の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に示されている。
例示的なビジネスプロセス仕様において、タスク:GET_CARRIER_LIST()を実行することにより、セキュリティポリシーとセキュリティ機能の観点で資格のある輸送業者のリストが返される。このビジネスプロセスによって定義されたコンポジットアプリケーションには、輸送業者に対する少なくとも2つのインタラクション、すなわちさまざまな輸送業者の料金を検索するGETRATE(SHIPMENT_DATA)と、輸送を行う輸送業者を予約するBOOKCARRIER(SHIPMENTID)が含まれる。輸送業者はその機能をWebサービスとして提供しており、使用する適切な輸送業者の選択は、ICARRIERと候補となる輸送業者が互いにセキュリティポリシーとセキュリティ機能を満足するかどうかによっても決まる。
3つの候補となる輸送業者のセキュリティポリシーとセキュリティ機能が以下の表2に示されている。
この例では、たとえば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に示されている。
このビジネスプロセス仕様を使用すると、セキュリティを保証された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に示されている。
更新されたセキュリティポリシーとセキュリティ機能も、以下の表5に示すように調整される。
この変更されたセキュリティスキームに従うと、資格のある輸送業者として識別される唯一の輸送業者は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は、候補となる輸送業者から資格のある輸送業者(自動車輸送業者など)を選択して予約する合理化されたプロセスを示すビジネスプロセス仕様の別の例を提供している。参照しやすいように、ビジネスプロセス仕様の各行には番号が付けられている。
選択プロセスは、発行された出荷要求の輸送業者の送料に基づいて実行され、逐次的に実行される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は、セキュリティパターンの抜粋を示している。
一般に、セキュリティパターンはインテンションを実施するための技術的な詳細(たとえば、特定のセキュリティの問題をどう実施すべきか)を提供するために使用される。こうしたパターンは、コンテナプロバイダで記述された汎用のセキュリティコンポーネントとして、または他の特定のパーティーによってパターンライブラリまたはアプリケーションインフラストラクチャと送達できるパターンリポジトリの一部によって提供できる。アプリケーションに固有のセキュリティインテンションがまだ定義されていない場合は、あらかじめ構成されたパターン実装を拡張または抽出することができる。セキュリティパターン用ドメイン固有言語を使用することによって、パターン実装はモジュールで構成され、効果的である。パターン内の実施コードは、スクリプト言語で記述することもできる。
表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つのツールセットを使用してできるだけシームレスに定義して配備することができる。これで、ビジネスプロセス開発者に、さまざまなソフトウェア開発フェーズの間にたびたび使用されるさまざまなツールや抽象概念を使用する必要のない開発および実行環境が提供される。
さまざまな実装について説明してきた。しかしながら、本開示の精神および範囲を逸脱することなくさまざまな変更が可能であることは理解されるであろう。したがって、他の実装は添付の請求項の範囲を逸脱しない。