(57)【要約】  通信ネットワーク（例えばインターネット）を介したウェブサービスの標準セットと、ウェブサービスの標準セットを拡張して１つまたは複数の拡張ウェブサービスを実行するための機構とを含む、１つまたは複数のコンピュータ動作環境を提供する。これらの拡張ウェブサービスは、確認または信用されないソース（例えばサードパーティソフトウェア開発者）によって作成された場合があるので、本発明によるコンピュータ動作環境は、拡張ウェブサービスを、ウェブサービスの標準セットおよび通信ネットワークから隔離する。さらに、各拡張ウェブサービスは、他のサービスとの通信能力が制限された隔離されたプロセス（ｉｓｏｐｒｏｃ）である。具体的には、各ｉｓｏｐｒｏｃの通信能力は、各ｉｓｏｐｒｏｃが通信する明白な許可を有する関連する定義済み通信チャネルを介してのみに制限される。
2008547114.tif 000002
【特許請求の範囲】
【請求項１】
１つまたは複数のプロセッシングコアと１つまたは複数のメモリサブシステムとを有し、１つまたは複数の隔離プロセス（ｉｓｏｐｒｏｃ）のコンピュータ実行可能命令を実行するように構成されたホストコンピューティングシステムであって、前記各ｉｓｏｐｒｏｃが通信する明白な許可を有する定義済み通信チャネルを介してのみに当該各ｉｓｏｐｒｏｃの通信能力が制限されるホストコンピューティングシステムと、
１つまたは複数の定義済み通信チャネルを介して通信する明白な許可を１つまたは複数のｉｓｏｐｒｏｃに選択的に与えるように構成された通信チャネルレギュレータと
を備えることを特徴とする１つまたは複数のコンピュータ動作環境。
【請求項２】
ホストコンピューティングシステム上で実行されるｉｓｏｐｒｏｃは、ハードウェア隔離プロセス（ＨＩＰ）、ファームウェア隔離プロセス（ＦＩＰ）、およびソフトウェア隔離プロセス（ＳＩＰ）からなるグループから選択されることを特徴とする請求項１に記載の１つまたは複数のコンピュータ動作環境。
【請求項３】
前記通信チャネルレギュレータによって与えられる前記明白な許可は、定義済み通信チャネルの通信プロパティを定義することを特徴とする請求項１に記載の１つまたは複数のコンピュータ動作環境。
【請求項４】
前記通信チャネルレギュレータによって与えられる前記明白な許可は、対象ｉｓｏｐｒｏｃの定義済み通信チャネルの通信プロパティを定義し、
前記プロパティは、
対象ｉｓｏｐｒｏｃが他のどのｉｓｏｐｒｏｃと通信することが可能か、
前記ｉｓｏｐｒｏｃがチャネルを介してアクセス可能な前記システム上のリソース、
前記ｉｓｏｐｒｏｃが対話可能な前記システム上の他のプロセス、
通信機構（例えばＴＣＰやウェブプロトコル）にアクセスして他のシステムと通信する能力、
特定のシステムと通信する能力、
通信のタイプ、
通信の速度、量、および時間
のうちの１つまたは複数を含むことを特徴とする請求項１に記載の１つまたは複数のコンピュータ動作環境。
【請求項５】
複数のｉｓｏｐｒｏｃを介した通信を仲介するように構成されたメディエータをさらに備えることを特徴とする請求項１に記載の１つまたは複数のコンピュータ動作環境。
【請求項６】
前記１つまたは複数のコンピュータ動作環境は、ウェブサービスであることを特徴とする請求項１に記載の１つまたは複数のコンピュータ動作環境。
【請求項７】
前記１つまたは複数のコンピュータ動作環境は、大規模マルチユーザ分散ゲームまたはシミュレータであることを特徴とする請求項１に記載の１つまたは複数のコンピュータ動作環境。
【請求項８】
前記１つまたは複数のコンピュータ動作環境は、超多人数プレーヤオンラインゲームであることを特徴とする請求項１に記載の１つまたは複数のコンピュータ動作環境。
【請求項９】
前記通信チャネルレギュレータはさらに、実行中の対象ｉｓｏｐｒｏｃが他の実行中ｉｓｏｐｒｏｃの実行に直接に影響を及ぼすのを防止するように構成されたことを特徴とする請求項１に記載の１つまたは複数のコンピュータ動作環境。
【請求項１０】
前記通信チャネルレギュレータはさらに、実行中の対象ｉｓｏｐｒｏｃが他の実行中ｉｓｏｐｒｏｃの定義済みセットを除いた他の実行中ｉｓｏｐｒｏｃと通信するのを防止するように構成されたことを特徴とする請求項１に記載の１つまたは複数のコンピュータ動作環境。
【請求項１１】
前記通信チャネルレギュレータはさらに、実行中の対象ｉｓｏｐｒｏｃが他の実行中ｉｓｏｐｒｏｃの定義済みセットを除いた他の実行中ｉｓｏｐｒｏｃのリソースにアクセスするのを防止するように構成されたことを特徴とする請求項１に記載の１つまたは複数のコンピュータ動作環境。
【請求項１２】
前記通信チャネルレギュレータはさらに、実行中の対象ｉｓｏｐｒｏｃが通信ネットワークを介して他のコンピューティングシステムと通信することが明白に許可されない限り、当該実行中の対象ｉｓｏｐｒｏｃが当該通信をするのを防止するように構成されたことを特徴とする請求項１に記載の１つまたは複数のコンピュータ動作環境。
【請求項１３】
１つまたは複数のｉｓｏｐｒｏｃと通信ネットワークとを介した通信を仲介するように構成されたメディエータをさらに備え、前記ネットワークは前記ホストコンピューティングシステムの外部にあることを特徴とする請求項１に記載の１つまたは複数のコンピュータ動作環境。
【請求項１４】
前記ホストコンピューティングシステム上で実行する１つまたは複数のｉｓｏｐｒｏｃからデータを隠蔽するように構成されたクローキングまたはフィルタリング機構をさらに備えることを特徴とする請求項１に記載の１つまたは複数のコンピュータ動作環境。
【請求項１５】
コンピュータ実行可能命令を有する１つまたは複数のコンピュータ可読媒体であって、前記コンピュータ実行可能命令は、コンピュータによって実行されたとき、
１つまたは複数の隔離プロセス（ｉｓｏｐｒｏｃ）の定義済み標準セットの命令を実行することであって、前記各ｉｓｏｐｒｏｃが通信する明白な許可を有する関連する定義済み通信チャネルを介してのみに当該各ｉｓｏｐｒｏｃの通信能力が制限されること、
前記標準セットの一部ではない拡張ｉｓｏｐｒｏｃの命令を実行することであって、前記拡張ｉｓｏｐｒｏｃは前記標準セットの１つまたは複数の定義済みメンバと通信する明白な許可を有し、したがって前記標準セットの他のメンバとは通信できないこと
を含む方法を実行することを特徴とする１つまたは複数のコンピュータ可読媒体。
【請求項１６】
１つまたは複数のｉｓｏｐｒｏｃの前記定義済み標準セットは超多人数プレーヤオンラインゲーム（ＭＭＯＧ）を表し、前記拡張ｉｓｏｐｒｏｃは前記ＭＭＯＧに対する「ｍｏｄ」であることを特徴とする請求項１５に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１７】
前記拡張ｉｓｏｐｒｏｃの命令を実行することはさらに、外部通信ネットワークと通信する前記拡張ｉｓｏｐｒｏｃの能力が、仲介ｉｓｏｐｒｏｃを介して通信する明白な許可によって提供されることを特徴とする請求項１５に記載の１つまたは複数のコンピュータ可読媒体。
【請求項１８】
コンピュータ実行可能命令を有する１つまたは複数のコンピュータ可読媒体であって、前記コンピュータ実行可能命令は、コンピュータによって実行された際に、
通信ネットワークを介してウェブサービスの標準セットを提供すること、
前記ウェブサービスの標準セットを拡張して１つまたは複数の拡張プロセスを実行するための機構を提供すること、および
前記拡張プロセスを前記ウェブサービスの標準セットおよび前記通信ネットワークから隔離すること
を含む方法を実行することを特徴とする１つまたは複数のコンピュータ可読媒体。
【請求項１９】
前記１つまたは複数の拡張プロセスの各々が前記ウェブサービスのメンバおよび他の拡張プロセスと通信する能力は、拡張プロセスが通信する明白な許可を有する定義済み通信チャネルを介してのみに制限されることを特徴とする請求項１８に記載の１つまたは複数のコンピュータ可読媒体。
【請求項２０】
前記ウェブサービスの標準セットのメンバ、および前記１つまたは複数の拡張プロセスはそれぞれ、ハードウェア隔離プロセス（ＨＩＰ）、ファームウェア隔離プロセス（ＦＩＰ）、およびソフトウェア隔離プロセス（ＳＩＰ）からなるグループから選択されることを特徴とする請求項１８に記載の１つまたは複数のコンピュータ可読媒体。
【請求項２１】
前記隔離する動作は、前記拡張プロセスが前記ウェブサービスの標準セットまたはそのいずれかのメンバになりすますのを防止することを特徴とする請求項１８に記載の１つまたは複数のコンピュータ可読媒体。
【請求項２２】
前記隔離する動作は、拡張プロセスが他のどのプロセスと通信できるかを定義し、当該プロセス間の当該通信を統制することを特徴とする請求項１８に記載の１つまたは複数のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ウェブサービスに対するサードパーティ拡張のセキュアで安定したホスティングに関する。
【背景技術】
【０００２】
いくつかの主要な商業ウェブサービス（例えば電子小売店や検索エンジンなど）は、そのウェブアプリケーションを構築するために組み合わされる多数のサービス（例えば２００個を超える）からなるプラットフォームを有する。これらの商業ウェブサービスは、ソフトウェア開発者キット（ＳＤＫ）を作成して、サードパーティがこれらのサービスを（ウェブプロトコルを介して）使用して新しいアプリケーションを作り出せるようにする。サードパーティが新しいアプリケーションを作りだすことは、トラフィック、広告、および／または販売を商業ウェブサービスへと駆り立てるので、商業ウェブサービスは、サードパーティにそのようにして欲しいと望む。サードパーティは、販売を駆り立てる度に商業ウェブサービスから金銭を受け取るので、これらのアプリケーションを構築したいと望む。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
問題は、商業ウェブサービスが、そのプラットフォーム内でサードパーティのコードをホストする良い方法を持たないことである。既存の技術では、サードパーティが彼ら自身のウェブサイトをホストする。これはサードパーティにとって良くない。というのは、サードパーティはウェブサイトを構築し、サーバおよびネットワーク接続を獲得し、自己のサーバを管理および運用しなければならない（たとえ誰かに代金を支払って自己のサーバをホストさせるとしても）からである。具体的なシナリオによっては、これは、ネットワーキング、セキュリティ、分散システム、システムスケーリングなどの専門知識を必要とする非常に複雑なタスクとなる可能性がある。この状況は、新しいサードパーティが商業ウェブサービスのプラットフォームに対する拡張を開発する気をなくさせるという障壁を生み出すので、商業ウェブサービスにとって良くない。
【０００４】
商業ウェブサービスは、サードパーティのコードをホストするための安価でセキュアな方法がないので、サードパーティのコードをホストしない。サードパーティコードをホストするための商業ウェブサービスの従来の選択肢は、基本的に、サードパーティコードを彼ら自身のサーバ上に配置すること（非常に高価）、ＶＭＷａｒｅ（登録商標）やＶｉｒｔｕａｌ  Ｓｅｒｖｅｒのような仮想マシンモニタ（ＶＭＭ）を使用してサードパーティコードを彼ら自身のソフトウェアベースの仮想マシン上に配置すること（かなり高価）、またはサードパーティコードを信用すること（セキュアでない）である。
【０００５】
最初の２つの選択肢を用いた場合ですら、サードパーティのコードは、ネットワークスタック全体へのアクセス権を有する。したがって商業ウェブサービスは、サードパーティコードの周りにファイアウォール（場合によっては、高価なステートフルファイアウォール）を配置して、サードパーティコードがサービスのサーバと不適切に通信しないようにしたり、未承諾のスパムを外界に送信するなどの不適切なアクションを実施しないようにしたりしなければならない。もう１つの実際的でない解決法は、商業ウェブサービスが、ＳｕｎのＪａｖａ（登録商標）  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ（ＪＶＭ）や．ＮＥＴ  ＡｐｐＤｏｍａｉｎｓなど、言語ベースの仮想マシンでサードパーティコードを実行することである。物理ハードウェアまたはＶＭＭによる解決法よりはずっと安価だが、言語ベースのＶＭによる解決法はフレキシブルでなく、安全に実行できるサードパーティコードの構造を厳しく制限する。また、言語ベースのＶＭによる解決法は、脆弱性の面を拡大することにより、またリソース使用を適切に制約できないため、セキュリティを犠牲にする。
【０００６】
商業ウェブサービスは、サービスの運用の専門知識を用いてそのデータセンタ中でサードパーティコードを安価かつセキュアにホストできるようにする従来手法を有さない。独立系ソフトウェアベンダ（ＩＳＶ）は、その設計ニーズによって指示されたように新しい拡張を書き、容易にそれを商業ウェブサービスのサーバにセキュアかつ安価に投入するためのフレキシビリティをもたらす従来手法を有さない。
【０００７】
利用可能な従来手法のみを使用する場合、既存のウェブアプリケーションをコードで作成または拡張する開発者は、データセンタの運用の専門知識に精通しなければならない。開発者は、サーバ調達、サーバ管理、パッチング、運用プランニング、サービス展開、負荷平衡、バックアップなどの厄介事に耐えなければならない。
【０００８】
例えば、ホープソフトウェアコーポレーション（ＨＳＣ）と呼ぶことにする架空の会社が、ワールドマッピングウェブサービス（ＷＭＷＳ）と呼ばれるサービスを拡張したかったとする。ＨＳＣは、様々なウェブサイトおよびマルチプルリスティングサービス（ＭＬＳ）不動産リストからの家を、ＷＭＷＳからの衛星地図上にプロットすることによって、ＷＭＷＳサービスを拡張したい。このアプリケーションを構築するのに必要なアプリケーションプログラミングインタフェース（ＡＰＩ）をＷＭＷＳが公開していると仮定すると、ＨＳＣはそれでもなお、ウェブアプリケーションであることによって課される運用負担に対処しなければならない。例えばＨＳＣのアプリケーションは本当に人気があり、極めて人気のあるウェブサイトで特集されたとする。この場合ＨＳＣは、自己のアプリケーションが、およそ数時間のうちに発生する可能性のある特別な負荷に対処するようスケーラブルであることを確実にしなければならない。ＨＳＣは、そのマシンの１つが動かなくなった場合にそのアプリケーションが滞りなくフェイルオーバすることを確実にしなければならない。ＨＳＣは、その顧客に毎日２４時間サービスできなければ、他の誰かがすることになるとわかっている。
【０００９】
家庭により近い別の例として、シェアリングドキュメントウェブサービス（ＳＤＷＳ）と呼ばれるサービスをボブが修正するとする。ボブは、自己の作業グループ中で承認を求めて文書を回覧するための小さなワークフローロジックで、ＳＤＷＳを修正する。ボブの作業グループは今や、小さな追加カスタマイズだけのために、サーバの取得、オペレーティングシステムおよびＳＤＷＳの展開、パッチング、そのバックアップなどの厄介事を気にしなければならない。また、ＩＴ部門は、いずれにしても完全に責任を免れてはいない。今や、企業内に漂うＳＤＷＳの１回限りの展開がもう１つあり、このサーバの管理で過失があれば、それは余分なセキュリティリスクおよびサポートコストを課す。
【００１０】
さらに別の例で、Ｅｖｅｒｑｕｅｓｔ（登録商標）やＷｏｒｌｄ  ｏｆ  Ｗａｒｃｒａｆｔ（登録商標）などの超多人数プレーヤオンラインゲーム（ＭＭＯＧ、ｍａｓｓｉｖｅｌｙ  ｍｕｌｔｉｐｌａｙｅｒ  ｏｎｌｉｎｅ  ｇａｍｅ）をＨＳＣが修正（ここでは「ｍｏｄ」）できるとする。このようにする際、ＨＳＣは、それ特有のゾーン、モンスター、および人工知能（ＡＩ）を作り出す。クライアント側ゲームに対するｍｏｄの大きな成功にもかかわらず、ＭＭＯＧに対するｍｏｄはどこにも見られない。何故なら、ＭＭＯＧオペレータは、ＭＭＯＧサーバ上にｍｏｄを隔離するためのセキュアで信頼できる機構を有さないからである。
【００１１】
開発者が既存のウェブサービスを拡張したいというシナリオの数は、無限にある。ウェブサービスへのネットワークベースのインタフェースが公開されているときであっても、拡張を開発するプログラマは、コードを開発することに加えてサービスプロバイダになることを余儀なくされるので、ウェブサービスの拡張は高価で困難である。
【００１２】
当然、サードパーティが管理付きサーバを賃借して自己のコードを実行することのできる、ホストされるデータセンタもある。しかしこの場合、サードパーティは本質的にはハードウェアボックスを得るだけである。サードパーティが、オンライン広告、コラボレーション、ビジネス処理、ゲーミング等のためのウェブサービスなど、既存のウェブサービスを拡張することにはならない。サードパーティは依然として、サービス展開、負荷平衡、バックアップなどを気にする必要がある。また、関連するコストもやはり存在する。ＨＳＣがアイデアを試してみたいだけであっても、ホスティングのためのコストだけで、サービスプロバイダを使用するのに１年で千ドル近くなる可能性がある。
【００１３】
ここまで、インターネットのシナリオについてのみ述べた。ここに述べる技法は幅広い計算シナリオに適用可能であることを明示的に指摘しておくことは価値がある。例えば、拡張する必要のある「ウェブサービス」は、実際、移動電話デバイスやパーソナルコンピュータなどの任意の計算ノードであってよい。ピアツーピアやグリッドネットワークなどの任意の計算システムとすることさえできる。無線信号を分析するためのＳＥＴＩ＠ｈｏｍｅ分散処理システムのようなプロジェクトを考えてみる。この構成では、参加する各ＰＣの各所有者は、ＳＥＴＩ＠ｈｏｍｅソフトウェアが悪意のないものであることを「信用」する必要がある。しかし、このソフトウェアは比較的固定されている。すなわち、任意の天文学者が、例えばこれら数千台のコンピュータのリソースを素早く使用して新たな無線信号分析アルゴリズムを評価することは不可能である。
【００１４】
このシナリオは、先に述べたウェブサービスのシナリオにちょうど似ており、ただこの場合は「商業ウェブサービス」が実際には分散計算グリッドであるというだけである。いずれにしても、拡張を必要とするウェブサービスとしてモデル化することができる。
【課題を解決するための手段】
【００１５】
ここでは、サードパーティ拡張が誰とどのように対話または通信する許可を有するかを明白に定義および制限しながら、サードパーティ拡張をウェブサービスの他のコンポーネントから隔離する技法について述べる。ここでは、通信ネットワーク（例えばインターネット）を介したウェブサービスの標準セットと、ウェブサービスの標準セットを拡張して１つまたは複数の拡張ウェブサービスを実行するための機構とを含む、１つまたは複数のコンピュータ動作環境について述べる。これらの拡張ウェブサービスは、確認または信用されないソース（例えばサードパーティソフトウェア開発者）によって作成された場合があるので、述べるコンピュータ動作環境は、拡張ウェブサービスを、ウェブサービスの標準セットおよび通信ネットワークから隔離する。さらに、各拡張ウェブサービスは、他のサービスとの通信能力が制限された、隔離されたプロセス（ｉｓｏｐｒｏｃ）である。具体的には、各ｉｓｏｐｒｏｃの通信能力は、各ｉｓｏｐｒｏｃが通信する明白な許可を有する関連する定義済み通信チャネルを介してのみに制限される。
【００１６】
この概要は、詳細な記載でさらに後述する概念から選出したものを、単純化した形で紹介するために提供する。この概要は、特許請求される主題のキーとなる特徴または本質的な特徴を識別するものではなく、特許請求される主題の範囲を決定する際の助けとして使用されるものでもない。
【発明を実施するための最良の形態】
【００１７】
ここでは、サードパーティ拡張が誰と（およびどのように）対話および通信する許可を有するかを明白に定義および制限しながら、サードパーティ開発者（独立系ソフトウェアベンダ、ＩＳＶとも呼ばれる）によって書かれた拡張をウェブサービスの他のコンポーネントから隔離する技法について述べる。信用されないサードパーティコードを（セキュリティ、安定性、および信頼性に関して）懸念なく実行できるように、サードパーティ拡張は他のアプリケーションおよびサービスから隔離される。
【００１８】
ここでは、サードパーティソフトウェアを実行するための維持し易くセキュアなホスティング環境を提供するコンピュータ動作環境（例えばウェブサーバのオペレーティングシステム）の１つまたは複数の実装形態について述べる。典型的なコンピュータ動作環境は、通信ネットワーク（例えばインターネット）を介したウェブサービスの標準セットと、通常なら確認または信用されないソース（例えばサードパーティソフトウェア開発者）がこのウェブサービスの標準セットに拡張を追加するための機構とを含む。
【００１９】
セキュリティを保証するために、述べるコンピュータ動作環境は、拡張ウェブサービスをウェブサービスの標準セットおよび通信ネットワークから隔離する。さらに、各拡張ウェブサービスは、他のサービスとの通信能力が制限された、隔離されたプロセス（ｉｓｏｐｒｏｃ）である。具体的には、各隔離プロセスの通信能力は、各隔離プロセスが通信する明白な許可を有する関連する定義済み通信チャネルを介してのみに制限される。
（コンテキストおよび例示的シナリオ）
ここに述べる例示的な実施形態は、多くのソフトウェア会社によって提供される既存のウェブサービス、および外部パーティによって提供されるウェブサービスに対して相補的である。例示的な実施形態は、「背景技術」セクションで紹介したボブやホープソフトウェアコーポレーション（ＨＳＣ）のような開発者を対象とする。これらの開発者は、サービス運用を気にすることなく、既存のサービスを拡張したいかまたは新しいサービスを生み出したいと思っている。
【００２０】
例えば、ＨＳＣが、彼がシアトルで興味あるいくつかの地域であるＱｕｅｅｎ  ＡｎｎｅおよびＬｅｓｃｈｉで購入する家を探していると仮定する。ＨＳＣは、１日に４５分近くかけて、様々なウェブベースの不動産リスティングサービス上における販売中の家のリストをくまなく探している。ＨＳＣは、ワールドマッピングウェブサービス（ＷＭＷＳ）を見て、ＷＭＷＳ中の地図上にプロットされた販売中の家を見ることができればどんなに素晴らしいだろうと思う。これは、ＨＳＣがその空き時間に行う副次的プロジェクトにすぎない。
【００２１】
ＨＳＣは、様々なウェブベースの不動産リスティングサービスからのデータをＷＭＷＳ上に表示するための、自己のコードを書く。この場合、自己の友人も使用できるようにＨＳＣがこの解決法を「公開」するのは些細なことである。というのは、ＨＳＣは、それをどこでホスティングするか、それにどれくらいのコストがかかるか、サーバの購入などについて考える必要はまったくないからである。ＨＳＣの解決法の人気が増すにつれて、ＨＳＣは、犯罪統計、販売中アイテム、より多くの都市、移動デバイスアクセス、およびアラートなど、より多くの機能を追加し始める。ＨＳＣは、トラフィックを自己のアプリケーションに駆り立てるために、ドメイン名ならびに様々な検索エンジンキーワードを購入する。ウェブサービス（ここに述べる例示的な実施形態の少なくとも１つを利用する）は、今や何百万人に達する自己のユーザ基盤に対して、自己の解決法を実行し続ける。
【００２２】
このシナリオでは、ウェブサービスは、例示的な実施形態の少なくとも１つで実行するマシンのクラスタをホストし、これらのマシンのクラスタ上で、ＩＳＶが、既存のインフラストラクチャの側に自己のアプリケーションを構築する。１つの考えは、既存のウェブサービスを取り込み、このウェブサービスを、例示的な実施形態の少なくとも１つを利用するそのデータセンタ中のサーバで増補することである。どんなサードパーティ拡張可能性コードも、ここに述べる例示的な実施形態の少なくとも１つによって提供される隔離境界内で実行される。データを得るためには、コードは単に、標準的なウェブサービスＡＰＩを使用して既存のサービスインフラストラクチャにアクセスする。
【００２３】
例示的な実施形態は、超多人数プレーヤオンラインゲーム（ＭＭＯＧ）のためのプラットフォームとすることができる。エンドユーザがそのＭＭＯＧエクスペリエンスを修正（「ｍｏｄ」）できるようにすることは、エンドユーザのエクスペリエンスを改善することになり、加入者チャーン（ｃｈｕｒｎ）を減少させる可能性が高い。ＭＭＯＧは、大規模マルチユーザ分散ゲームまたはシミュレータの例である。
【００２４】
週に４０時間以上をプレイに費やすことのあるハードコアゲーマは、通常、ＭＭＯＧをプレイする。ＭＭＯＧ産業におけるチャーンの大きな原因の１つは、退屈から生じるが、このときユーザは、ゲームが提供しなければならないすべての挑戦をマスターしたと感じ、ゲームの世界で１年またはそれ以上費やした後で次に移る。典型的なユーザは、ゲームをプレイするのに約２年かける。加入者基盤の減少は、明らかに収入を大きく落ち込ませる可能性がある。
【００２５】
加入者チャーンを最小限に抑える方法の１つは、新しいレベル、技術、キャラクタなどでゲームを絶えず向上させることである。１人称シュータゲームは、ユーザのコミュニティを利用して「ｍｏｄ」を生み出すのに著しく成功した。これらのｍｏｄは、洗練された新しい技術、改定されたゲームエンジン、新しいレベル、新しいテーマ、新しいキャラクタなどを含む。一方で、ＭＭＯＧは、ユーザ貢献の報いを得ることができていない。
【００２６】
ここに述べる例示的な一実施形態は、ゲームスタジオと共にｍｏｄツールキットを提供することができる。このようにすれば、ユーザはｍｏｄを生み出す能力を有することになり、ＭＭＯＧは、これらのｍｏｄが安全かつセキュアに実行されると確信することができる。
【００２７】
ここに述べる例示的な実施形態を使用した手法が呈示する、キーとなる４つの望ましい特徴は、セキュリティ、スケーラビリティ、信頼性、および低コストである。
【００２８】
セキュリティの教義は、主要な駆動特徴である。セキュリティとは、システムが、オペレーティングシステム自体、データセンタ、または他のプログラムを破損する恐れなしに、任意の未知のコードを取り込んでそれを安全に実行できることを意味する。ここで、少なくとも２つの興味深いケースがある。すなわち、
拡張ベースのアドインがバグまたは悪意あるコードを持っていたので、悪影響を受ける。悪影響とは、例えば、サービスを遮断しなければならないこと、データ破損、サービスのなりすましなどを意味する可能性がある。
【００２９】
信頼性に関しては、実際に２つの観点がある。すなわち、解決法自体の信頼性、およびデータセンタの信頼性である。データセンタは、バグのあるサードパーティコードによる使用不能または他の信頼性問題と格闘すべきではない。同様に、正しいコードの作者は、データセンタ中の故障（例えばハードドライブ故障）が自己のコードに影響を及ぼすのを望まない。
【００３０】
加えて、例示的な実施形態は、データを拡張から隠蔽するように意図された「クローキング機構」を利用することができる。例えば、例示的な実施形態は、ウェブサービスの顧客の購入注文を処理することができるが、ウェブサービスは、機密情報のいくらかを拡張に提供したくない場合がある。そうではなくウェブサービスは、機密情報を拡張に提供するとき、この情報をダミーまたは置換情報で置き換える。したがって、拡張はこの機密情報を発見することはない。
（隔離プロセス（ＩｓｏＰｒｏｃ））
図１に、１つまたは複数のプロセッシングコア（例えばプロセッサや関連ハードウェア）と、１つまたは複数のメモリサブシステムとを有する、典型的なホストコンピューティングシステム１００を示す。ホストコンピューティングシステム１００は、単一のコンピュータであってもよく、あるいは協働している複数の相互接続されたコンピュータであってもよい。
【００３１】
図１に示すように、ホストコンピューティングシステム１００は、２つの異なるメモリサブシステム、すなわちメモリ１１０およびハードウェア／ファームウェア１５０を有する。メモリ１１０は、ソフトウェアを記憶することのできる典型的なメモリサブシステムの例である。メモリ１１０は、ホストコンピューティングシステム１００からアクセス可能な任意の利用可能なプロセッサ可読媒体であってよい。メモリ１１０は、揮発性と不揮発性のいずれかの媒体であってよい。加えて、取外し可能と取外し不可能のいずれかの媒体であってよい。ハードウェア／ファームウェア１５０は、コンピュータ実行可能命令を記憶することのできる典型的なハードウェア（例えばＲＯＭ）またはファームウェアの例である。
【００３２】
図１で、メモリ１１０およびハードウェア／ファームウェア１５０は、これらの異なる性質を強調するために２つの別々の領域として示されているが、実際面では、高水準オペレーティングシステムがこれらをあまり区別しない場合もある。実際、ハードウェア／ファームウェア１５０に記憶された実行可能命令は、メモリ１１０のアドレス指定可能なメモリ範囲の一部であってもよい。
【００３３】
ホストコンピューティングシステム１００は、オペレーティングシステム（メモリ１１０中のＯＳカーネル１２０で表す）を有し、オペレーティングシステムは、ＳＩＰ１３０やＳＩＰ１４０などのソフトウェア隔離プロセス（ＳＩＰ、ｓｏｆｔｗａｒｅ  ｉｓｏｌａｔｅｄ  ｐｒｏｃｅｓｓ）の使用のためのアーキテクチャを提供する。ホストコンピューティングシステム１００中では、このＯＳ中の非カーネルコードがＳＩＰ中で実行される。ＳＩＰは、強く型付けされた（ｓｔｒｏｎｇｌｙ  ｔｙｐｅｄ）通信チャネルを介して、相互に、ＯＳと、および通信ネットワーク１８０と通信する。より具体的には、ＳＩＰは、明白な使用許可（ＯＳからの）を有する通信チャネルを介してしか、他のプロセスおよびカーネルと通信することができない。この許可は、ＳＩＰが他のプロセス、ＯＳ、および通信ネットワーク１８０と通信する際に誰とどのように通信するかを定義する。
【００３４】
図１に示すように、ハードウェア／ファームウェア１５０は、ハードウェア隔離プロセス１５０（ＨＩＰ、ｈａｒｄｗａｒｅ  ｉｓｏｌａｔｅｄ  ｐｒｏｃｅｓｓ）およびファームウェア隔離プロセス１６０（ＦＩＰ、ｆｉｒｍｗａｒｅ  ｉｓｏｌａｔｅｄ  ｐｒｏｃｅｓｓ）の例を示す。これらは事実上、そのコードが作業１次メモリ（メモリ１１０のような）に記憶されないことを除いては、ＳＩＰと同一である。
【００３５】
専門用語に含まれるものとして、ここでは、用語「隔離プロセス」およびその短縮表現「ｉｓｏｐｒｏｃ」を使用する。これは「隔離プロセス」として定義され、その例はＳＩＰ、ＨＩＰ、およびＦＩＰを明白に含む。したがって、コンテキストが特にはっきりと示していない限り、ここでの「ｉｓｏｐｒｏｃ」への言及は、ＳＩＰ、ＨＩＰ、および／またはＦＩＰの概念を含む。
【００３６】
ｉｓｏｐｒｏｃは、従来のＯＳプロセスとは少し異なる。ｉｓｏｐｒｏｃは、強力な隔離境界を有する（隔離の点ではＶＭに良く似ている）。あるｉｓｏｐｒｏｃは、型付けされた（ｔｙｐｅｄ）チャネルを介した通信の外では、通信することができず、あるいは別のｉｓｏｐｒｏｃの状態を変更することができない。すなわち、共有メモリ概念などはない。この隔離境界は、それだけでセキュリティモデルにおける強力で重要な層である。実際、ｉｓｏｐｒｏｃは、このような通信に使用する明白な許可を有する通信チャネルを介してしか、通信することができない。
【００３７】
ＯＳによって与えられる明白な許可は、対象ｉｓｏｐｒｏｃの、関連する定義済み通信チャネルの通信プロパティを定義する。このようなプロパティは、以下の１つまたは複数を含む。
・対象ｉｓｏｐｒｏｃが他のどのｉｓｏｐｒｏｃと通信することが可能か
・ｉｓｏｐｒｏｃがチャネルを介してアクセス可能なシステム上のリソース
・ｉｓｏｐｒｏｃが対話可能なシステム上の他のプロセス
・通信機構（例えばＴＣＰやウェブプロトコル）にアクセスして他のシステムと通信する能力
・特定のシステムと通信する能力
・通信のタイプ
・通信の速度、量、および時間
【００３８】
ＯＳは各ｉｓｏｐｒｏｃ中で厳密にどんなコードが実行されているかを知っているので、セキュリティモデルはさらに強化される。ｉｓｏｐｒｏｃ中のコードは、周知の記述可能な通信特性を備えた、別個の隔離領域で実行される。さらに、ソフトウェアベースの各ｉｓｏｐｒｏｃ中で実行されるコードは、メモリ安全性を保証すること、またどんなハードウェア特権的な命令も含まないことが検証される。複数のｉｓｏｐｒｏｃを、同じハードウェア保護領域で、またＯＳカーネル１２０のハードウェア保護領域でも、実行することができる。ＯＳカーネル１２０の同じハードウェア保護領域で実行することにより、別々のｉｓｏｐｒｏｃ中のコードを呼び出すコストは極めて低い。
【００３９】
次の米国特許出願が、参照によりここに組み込まれる。
・出願番号１１／１１８６８４「Ｉｎｔｅｒ−Ｐｒｏｃｅｓｓ  Ｉｎｔｅｒｆｅｒｅｎｃｅ  Ｅｌｉｍｉｎａｔｉｏｎ」  出願日  ２００５年４月２９日
・出願番号１１／００７６５５「Ｉｎｔｅｒ−Ｐｒｏｃｅｓｓ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  Ｅｍｐｌｏｙｉｎｇ  Ｂｉ−ｄｉｒｅｃｔｉｏｎａｌ  Ｍｅｓｓａｇｅ  Ｃｏｎｄｕｉｔｓ」  出願日  ２００４年１２月７日
・出願番号１１／００７８０８「Ｓｅｌｆ−Ｄｅｓｃｒｉｂｉｎｇ  Ａｒｔｉｆａｃｔｓ  ａｎｄ  Ａｐｐｌｉｃａｔｉｏｎ  Ａｂｓｔｒａｃｔｉｏｎｓ」  出願日  ２００４年１２月７日
【００４０】
ここに述べる実施形態は、上記の参照によってここに組み込まれる記載の技法を利用する。具体的には、プロセス間干渉除去およびプロセス間通信のための技法をｉｓｏｐｒｏｃに利用する。言い換えれば、これらの技法を利用して、サードパーティ拡張が誰と通信する許可を有するかを明白に定義しながら、サードパーティ拡張をウェブサービスの他のコンポーネントから隔離する。
【００４１】
（例示的な環境）
図２に、ｉｓｏｐｒｏｃをサポートおよび実現するオペレーティングシステム（ＯＳカーネル２１０で表す）を含むホストコンピューティング環境２００（ウェブサーバなど）を示す。ホストコンピューティング環境２００は、拡張ｉｓｏｐｒｏｃ２２０などのサードパーティコードを実行するための、安価でセキュアなホスティング環境を提供する。サードパーティ（例えばソフトウェアまたはウェブサービス開発者）は、コードがホストコンピューティング環境２００中のそれ自体のｉｓｏｐｒｏｃ中で実行されるように、自己の拡張ｉｓｏｐｒｏｃ２２０を書く。
【００４２】
ＯＳ２１０は、通信チャネルレギュレータ２１２を備える。これは、通信チャネルを使用する許可をｉｓｏｐｒｏｃに明白に与える、ＯＳのコンポーネントである。この許可は、定義済み通信チャネルの通信プロパティを定義する。通信チャネルレギュレータ２１２からの明白な許可なしには、拡張ｉｓｏｐｒｏｃ２２０は文字どおり、宇宙のどこにある他のどんなコードとも（ＯＳネットワークスタックまたはＯＳファイルシステムですら）、通信することができない。
【００４３】
この例示的な実施形態では、拡張ｉｓｏｐｒｏｃ２２０は、通信チャネル２３２を介して、ネットワークサービスｉｓｏｐｒｏｃ２３０からの入来要求を受け取る。ネットワークサービスｉｓｏｐｒｏｃ２３０は、拡張ｉｓｏｐｒｏｃ２２０と、インターネットなど外部通信ネットワーク２６０との間のプロキシとしての働きをする。ネットワークサービスｉｓｏｐｒｏｃ２３０は、拡張ｉｓｏｐｒｏｃ２２０と外界（例えばインターネット２６０）との間の通信を扱うことを担う。他の一実施形態では、拡張ｉｓｏｐｒｏｃ２２０が静的にチェックされて、外部通信ネットワークに対してどんな禁じられた動作も実行しないことが検証されたときは、ネットワークサービスｉｓｏｐｒｏｃ２３０を外部通信ネットワーク２６０への直接接続で置き換えることができる。
【００４４】
拡張ｉｓｏｐｒｏｃ２２０は、ＯＳによって提供されるプロセス横断通信チャネル２４２を使用して、ホストコンピューティングシステム上のウェブサービスプロキシｉｓｏｐｒｏｃ２４０に通信する。ウェブサービスプロキシｉｓｏｐｒｏｃ２４０は、拡張ｉｓｏｐｒｏｃ２２０と、ワールドマッピングウェブサービスのための地図を含むデータベースシステムなど、他の内部ウェブサービス２５０との間のプロキシとしての働きをする。ウェブサービスプロキシｉｓｏｐｒｏｃ２４０は、拡張ｉｓｏｐｒｏｃ２２０からの要求を扱うこと、およびウェブサービスサーバ２５０と通信することを担う。こうするために、ＳＯＡＰなど、任意の効果的で利用可能なプロトコルを利用することができる。他の一実施形態では、ウェブサービスプロキシｉｓｏｐｒｏｃ２４０のコードのフィルタリング機能が拡張ｉｓｏｐｒｏｃ２２０のコードに検証可能に挿入されたときは、ウェブサービスプロキシｉｓｏｐｒｏｃ２４０を置き換えることができる。
【００４５】
図示されているように、チャネル２３２および２４２の２つのみが、拡張ｉｓｏｐｒｏｃ２２０が明白な使用許可を有する、ＯＳによって提供されるプロセス横断通信チャネルである。
【００４６】
ネットワークサービスｉｓｏｐｒｏｃ２３０およびウェブサービスプロキシｉｓｏｐｒｏｃ２４０は、「メディエータ（ｍｅｄｉａｔｏｒ）」と総称することができる。というのは、これらは、拡張ｉｓｏｐｒｏｃ２２０と、ウェブサービスサーバ２５０やインターネット２６０など他のデータソースとの間で、プロキシまたは仲介者としての働きをするからである。
【００４７】
各ｉｓｏｐｒｏｃは、ＯＳカーネルへの別個かつ異質のインタフェース（一般的にはアプリケーションプログラミングインタフェース（ＡＰＩ）またはアプリケーションバイナリインタフェース（ＡＢＩ）と呼ばれる）を有する。このインタフェースを介して、各ｉｓｏｐｒｏｃは、新しい実行スレッドを作成するなど、計算リソースをＯＳに要求することができるが、いずれかの他のｉｓｏｐｒｏｃの状態に直接に影響を及ぼすことはできない。このインタフェースにより、拡張ｉｓｏｐｒｏｃ２２０は、それ自体の実行を制御することができるが、他のｉｓｏｐｒｏｃの実行に影響を及ぼすことはできない。意図的にこのインタフェースをプロセス横断通信のための機構に覆すことはできない。カーネルへのｉｓｏｐｒｏｃのインタフェースは、ｉｓｏｐｒｏｃの開発者の明示的な許可なしには、インターセプトすること、修正すること、あるいはその内容を覗くことはできない。
【００４８】
この例示的な環境では、
・拡張ｉｓｏｐｒｏｃ２２０は、ネットワークサービスｉｓｏｐｒｏｃ２３０やウェブサービスプロキシｉｓｏｐｒｏｃ２４０などのメディエータとしか通信することができない。
・メディエータがすべての分散コンピューティング問題を扱うときは、拡張ｉｓｏｐｒｏｃ２２０の作者は分散コードを書く必要はない。ウェブサービス開発者は通常、既知の分散コンピューティングソリューションをどのように使用して自己のウェブサービスの利用可能性をより高めるかをすでに決定しているので、このことは望ましい。ウェブサービス開発者は、これらと同じ技法をメディエータ中で再使用することができる。
・拡張ｉｓｏｐｒｏｃ２２０は、完全に特定された、静的に検証可能な契約を介して、両方のメディエータ（および任意の他のｉｓｏｐｒｏｃ）と通信する。
移動電話デバイスやパーソナルコンピュータなどの任意の計算ノード。ピアツーピアやグリッドネットワークなどの任意の計算システムとすることさえできる。
【００４９】
無線信号を分析するためのＳＥＴＩ＠ｈｏｍｅ分散処理システムのようなプロジェクトを考えてみる。この構成では、参加する各パーソナルコンピュータの各所有者は、ＳＥＴＩ＠ｈｏｍｅソフトウェアが悪意のないものであることを「信用」する必要がある。しかし、この信用レベルを保証するために、このＳＥＴＩ＠ｈｏｍｅソフトウェアは比較的固定されており変更不可能である。したがって、任意の天文学者が、例えばこれら数千台のコンピュータのリソースを素早く使用して新たな無線信号分析アルゴリズムを評価することは不可能である。ここに述べる技法を使用すれば、ソフトウェアは、修正可能でありながらも信用されるものとすることができる。
【００５０】
このシナリオは、先に述べたウェブサービスのシナリオに似ており、ただこの場合は「商業ウェブサービス」が実際には分散計算グリッドであるというだけである。いずれにしても、拡張を必要とするウェブサービスとしてモデル化することができる。
（方法論的な実装形態）
図３に、隔離されたウェブサービス拡張のための、セキュアで安定しており信頼性がありスケーラブルなコンピューティング動作環境を提供する方法３００を示す。この方法３００は、図１および／または図２に示した様々なコンポーネントの１つまたは複数によって実施される。さらに、この方法３００は、ソフトウェア、ハードウェア、ファームウェア、またはこれらの組合せにおいて実施することができる。
【００５１】
理解を容易にするために、この方法を独立したブロックとして表されている別々のステップとして図３に描く。しかしながら、これらの別々に描かれたステップは、その実施に必ずしも順序が依存すると解釈されるべきではない。加えて、考察の目的で、方法３００について図１および／または図２を参照して述べる。同様に考察の目的で、特定のコンポーネントを特定の機能を実施するものとして示す。しかしながら、他のコンポーネント（またはコンポーネントの組合せ）が特定の機能を実施してもよい。
【００５２】
図３の３１０では、コンピュータ動作環境（ウェブサービスホストコンピューティング環境２００など）が、通信ネットワーク（インターネット２６０など）を介してウェブサービスの標準セットを提供する。
【００５３】
３２０では、コンピュータ動作環境は、ウェブサービスの標準セットを拡張して１つまたは複数の拡張プロセスを実行するための機構を提供する。
【００５４】
図３の３３０では、コンピュータ動作環境は、拡張プロセス（「拡張ｉｓｏｐｒｏｃ」）をウェブサービスの標準セットおよび通信ネットワークから隔離する。ウェブサービスは他のｉｓｏｐｒｏｃである。各ｉｓｏｐｒｏｃの通信能力は、各ｉｓｏｐｒｏｃが明白な許可を有する定義済み通信チャネルを介してのみに制限される。
【００５５】
（結び）
ここに述べた技法は、プログラムモジュール、汎用および専用コンピューティングシステム、ネットワークサーバおよび機器、専用電子機器およびハードウェアを含めて（ただしこれらに限定されない）、また１つまたは複数のコンピュータネットワークの一部として、多くの方式で実施することができる。ここに述べた技法は、実施することができる。
【００５６】
１つまたは複数の前述の実装形態を、構造上の特徴および／または方法論的ステップに特有の言語で述べたが、述べた特定の特徴またはステップを用いずに他の実装形態を実施することもできることを理解されたい。むしろこれらの特定の特徴およびステップは、１つまたは複数の実装形態の好ましい形として開示する。
【図面の簡単な説明】
【００５７】
【図１】本明細書に述べる一実装形態のブロック図である。
【図２】本明細書に述べる一実装形態のブロック図である。
【図３】本明細書に述べる方法論的な一実装形態を示すフロー図である。
【図１】
2008547114.tif 000003
【図２】
2008547114.tif 000004
【図３】
2008547114.tif 000005
【国際調査報告】
2008547114.tif 000006