JP2012510679A - サンドボックス化したプラグインの実行 - Google Patents

サンドボックス化したプラグインの実行 Download PDF

Info

Publication number
JP2012510679A
JP2012510679A JP2011539542A JP2011539542A JP2012510679A JP 2012510679 A JP2012510679 A JP 2012510679A JP 2011539542 A JP2011539542 A JP 2011539542A JP 2011539542 A JP2011539542 A JP 2011539542A JP 2012510679 A JP2012510679 A JP 2012510679A
Authority
JP
Japan
Prior art keywords
auxiliary code
execution
plug
isolation
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2011539542A
Other languages
English (en)
Inventor
ヨーゲーシュ シャー ニラブ
ジェミーソン スティーブ
ランジャン シャシ
エフ.ハーフェズプール アレン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2012510679A publication Critical patent/JP2012510679A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1425Traffic logging, e.g. anomaly detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/161Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • G06F8/4442Reducing the number of cache misses; Data prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

正しくない振る舞いをするプラグイン(意図的にまたは非意図的に)を隔離し、特定してシステムの中断および障害を防止するサンドボックスアーキテクチャが提供される。プラグインのエラーに基づき、このアーキテクチャはペナルティポイントシステムを通して不良プラグイン(bad plug-in)の登録を自動的に使用禁止にし、阻止する。不良プラグインのパブリッシャはその不良プラグインを使用禁止にし、そのパブリッシャをアンセーフ(unsafe)リストに登録することによって制御される。隔離(isolation)は、マシン隔離、プロセス隔離、アクセス権が制限されたセキュアアカウント、およびローカルセキュリティメカニズムを使用したプロセス内のアプリケーションドメイン隔離のように、複数のレベルで提供することができる。複数レベルの隔離を組み合わせると、ハイレベルのセキュリティが達成される。隔離を行なうと、他のプラグインの実行から分離され、ファイルシステムおよびネットワークIPのようなシステムリソースが制限される。さらに、このアーキテクチャは、プラグインの実行のための高度にスケーラブルで、ステートレスの低水準管理アーキテクチャであり、このアーキテクチャは、事前の構成なしで追加のサンドボックスサーバをオンザフライ(on-the-fly)で追加または削除することによってスケーリングすることができる。

Description

本願は、コンピュータ実装プログラム管理に関する。
現在デプロイ(deploy)されている既存数のアプリケーションを使用して、ソフトウェアベンダは、新プロダクトの購入によるのではなく、カストマに価値を提供する他の方法を追及している。このことは、カスタムコードが通常のアプリケーション動作の一部として実行されるのを可能にする機能を提供することで応えることができる。カスタムコードはプラグイン(plug-in)、つまり、アプリケーション動作内の特定の個所で実行されるように構成可能である補助アプリケーション(auxiliary application)の形で追加されている。オンライン環境では、これは、コードがホストサーバ上で実行されるのに伴ってやりがいのある仕事になるため、コーディングエラーまたは悪意のコードが企業コンピュータシステムまたは企業ネットワークに障害を引き起こす原因になっている。
以下は、本明細書に記載されているいくつかの新規な実施形態の基本的な理解が得られるように簡略化した概要である。この概要は幅広い概観ではなく、またキーとなる要素または重要な要素を特定し、またはその範囲を限定するものでもない。その唯一の目的は、以後に提示されるより詳細な説明の序文としていくつかの概念(コンセプト)を簡略化して提示することである。
開示したアーキテクチャは、ソフトウェアプラグインを隔離して、コードが企業のホスト環境内で安全に実行され、しかも、その環境のために有用な機能を実行できるようにする機能を独自に組み合わせたものである。このアーキテクチャは、意図的であるか、非意図的であるかに関係なく、正しくない振る舞いをするプラグインを特定し、それから自身を保護し、エラーから回復し、ペナルティポイントシステム(penalty point system)を通して不良プラグイン(bad plug-in)の登録を自動的に防止し、阻止することを目的としたサンドボックス(sandbox)システムを含んでいる。このサンドボックスシステムは、同じ隔離されたシステム上で実行される他のプラグインからの保護も提供し、マシンネーム、IPアドレス、ファイルシステムなどのセンシティブ情報およびリソースへのアクセスを制限している。
隔離(isolation)は、マシン隔離、プロセス隔離、アクセス権が制限されたセキュアアカウント、およびアプリケーションドメイン隔離のように、ローカルセキュリティメカニズムを使用してプロセス内で、複数レベルで得ることができる。複数レベルの隔離を組み合わせると、ハイレベルのセキュリティが得られる。
さらに、このアーキテクチャは、プラグインの実行のための高度にスケーラブルで、ステートレスの低水準管理アーキテクチャであり、これは、追加のサンドボックスサーバを追加することによって、事前の構成なしでオンザフライ(on-the-fly)でスケーリングすることができる。
上述した目的および関連目的を達成するために、本明細書には、以下の説明と添付図面と関連付けていくつかの例示した側面が説明されている。これらの側面は、本明細書に開示した原理が実施されるのを可能にする種々の方法を示しており、これらの側面およびその同等側面のすべては、請求項に記載の主題の範囲に属するものである。その他の利点および新規な特徴は、以下の詳細説明を添付図面と関連付けて考慮することにより明らかにされる。
開示したアーキテクチャによるプログラム管理システムを示す図である。 正しくない振る舞いをする補助コードにペナルティを科すためのペナルティコンポーネントを含むより詳細なプログラム管理システムを示す図である。 例示のプログラム管理システムを示す図である。 サンドボックスサーバを使用したプログラム管理のための一般化したシステムを示す図である。 プログラムを管理する方法を示す図である。 ペナルティポイントに基づいて補助コードを管理する方法を示す図である。 ペナルティポイントに基づいて登録を管理する方法を示す図である。 正しくない振る舞いをする補助コードのパブリッシャを管理する方法を示す図である。 正しくない振る舞いをする補助コードに基づいて組織を管理する方法を示す図である。 負荷分散に基づいてサンドバックサーバを選択する方法を示す図である。 隔離されたプラグイン実行を開示したアーキテクチャに従って実行するように操作可能であるコンピューティングシステムを示すブロック図である。 プラグイン隔離のプログラム管理のためのコンピューティング環境を示す概略ブロック図である。
サンドボックスアーキテクチャは正しくない振る舞いをするプラグインを隔離し、特定して(意図的にまたは非意図的に)システムの中断および障害を防止する。プラグインがエラーを引き起こすと、このアーキテクチャは、ペナルティポイントシステムを通してその不良プラグインの登録を自動的に使用禁止にし、阻止する。隔離は、マシン隔離、プロセス隔離、アクセス権が制限されたセキュアアカウント、およびアプリケーションドメイン隔離(例:AppDomain)のように、ローカルセキュリティメカニズム(例:Net Code Access Secutiry)を使用してプロセス内で、複数レベルで得ることができる。複数レベルの隔離を組み合わせると、ハイレベルのセキュリティが得られる。
さらに、このアーキテクチャは、プラグインの実行のための高度にスケーラブルで、ステートレスの低水準管理アーキテクチャであり、これは、追加のサンドボックスサーバを追加することによって、事前の構成なしでオンザフライ(on-the-fly)でスケーリングすることができる。
次に、図面を参照して説明すると、類似の要素は、図全体を通して類似の参照符号を使用して示されている。以下の記載では、説明の便宜上、完全な理解が得られるように多数の具体例が説明されている。なお、明らかであるように、新規の実施形態はこれらの具体例がなくても実施することが可能である。その他の例では、その理解を容易にするために周知の構造およびデバイスがブロック図で示されている。その目的は、請求項に記載した主題の精神および範囲に属するすべての変更、等価および代替をカバーすることである。
図1は、開示したアーキテクチャによるプログラム管理システム100を示す図である。システム100は、アプリケーション106(例:サーバ)と共に実行するために補助コード104を受信するためのインタフェースコンポーネント102を含んでいる。インタフェースコンポーネント102は、例えば、アプリケーション106の一部であることも、別々のコード部分であることもある。あるいは、インタフェースコンポーネント102は、例えば、隔離コンポーネント108の一部にすることができる。
システム100は、隔離された環境内で1以上の隔離レベルを使用して補助コードを受信し、セキュアに隔離するための隔離コンポーネント108、および部分的に異常な実行振る舞いに基づいて隔離された環境内で補助コード104の実行を管理し、モニタリングするための管理コンポーネント112も含んでいる。
補助コード104は、サーバアプリケーションであるアプリケーション108と共に実行するために受信されたサードパーティプラグインにすることが可能であり、隔離コンポーネント108は補助コードが隔離された実行のために送信される先のサンドボックスサーバの一部にすることが可能である。1以上の隔離レベルには、マシン隔離レベル、プロセス隔離レベルまたはアプリケーションドメインアクセス隔離レベルの少なくとも1つが含まれている。代替の実現では、クライアント側でも、サーバ側でも別々に設計に従うことができる。言い換えれば、隔離されたプラグインはサーバ側で単独に処理される必要がない。
インタフェースコンポーネント102は、補助コード104からのコールが該当するアプリケーションに送られることを保証する。言い換えれば、プラグインを隔離して実行する複数のアプリケーションが存在する場合、インタフェースコンポーネント102は、プラグインからのコールを対応するサーバアプリケーションに正しくルーティングする。管理コンポーネント112は、隔離された環境108における補助コード104の実行を、その補助コード104を使用禁止にすることによって停止する。補助コード104の登録は、補助コード104がしきい値の回数を超えて使用禁止にされていたときは阻止される。
図2は、正しくない振る舞いをする補助コードにペナルティを科すためのペナルティコンポーネント202を含むより詳細なプログラム管理システム200を示す図である。システム200は、アプリケーション105〈例:サーバ〉と共に実行するために補助コード104を受信するためのインタフェースコンポーネント102、隔離された環境において補助コード104を受信して、1以上の隔離レベルを使用して補助コード104をセキュアに隔離するための隔離コンポーネント108、および隔離された環境において補助コード104の実行をモニタリングして、管理するための管理コンポーネント112を含んでいる。管理コンポーネント112は、使用禁止にされた補助コード104がペナルティシステムによって使用禁止にされているので、その実行を許可しないことになる。
ペナルティコンポーネント202は、個別の補助コード104を通して累積されたペナルティポイントを追跡し、しきい値を超えていれば、補助コード104を使用禁止にする。言い換えれば、正しくない振る舞いをする補助コード104に対してペナルティポイントが割り振られ、累積される。ペナルティコンポーネント202は構成可能なペナルティしきい値(penalty threshold)を含み、そのしきい値に違反すると、その補助コードの以後の実行が阻止されることになる。ペナルティしきい値に違反したときは、その同じ補助コード104の登録はアセンブリシグネーチャ(assembly signature)に基づいて阻止するができる。
アセンブリシグネーチャとしては、アセンブリネーム、アセンブリバージョン、パブリッシャ公開鍵トークン(publisher public key token)、およびアセンブリカルチャ情報(assembly culture information)がある。システムで使用禁止にされたアセンブリのヒストリは、どのパブリッシュ(publish)を使用禁止にすべきかを判断するデータとして潜在的に役立つことができる。
代替の実施形態では、アセンブリ登録はパブリッシャ鍵トークンを通して使用禁止にされることもあるが、このパブリッシャ鍵トークンは別の機能であり、ペナルティポイントシステムから独立して働く。
インタフェースコンポーネント102は、サーバマシン上にプリケーションと共に置いておくことができ、このアプリケーションはサーバアプリケーションにすることができる。同様に、管理コンポーネント112および/またはペナルティコンポーネント202はサーバマシン上にアプリケーション106と共に配置しておくこともできる。なお、これが必要条件でないのは、インタフェースコンポーネント102、管理コンポーネント112、およびペナルティコンポーネント202が隔離コンポーネント108と共に配置できるからであり、隔離コンポーネントは隔離サーバ(「サンドボックスサーバ」とも呼ばれる)にすることができる。
システム200は、負荷を複数の既存隔離コンポーネント間で平衡化するために、増加した実行負荷に基づいて1以上の既存隔離コンポーネントを選択するための負荷管理コンポーネント204を含むこともできる。言い換えれば、プラグイン(補助コード)を処理するための同じまたは異なるサーバからの複数のアプリケーションが存在することは本アーキテクチャの意図の範囲内である。プラグインは、実行の振る舞いに従って実行、モニタリングおよび管理のために隔離コンポーネントに送信される。正しくない振る舞いをするプラグインは対応するアプリケーション(およびサーバ)にも、例えば、同じネットワークに置かれた他のシステムにも脅威となることがない。
別の言い方をすると、プログラム管理システム200は、アプリケーション106と共に実行のために補助コード104を受信するためのインタフェースコンポーネント102を備え、補助コード104からのコールがアプリケーション106に送られることを保証する。隔離コンポーネント108は、マシン隔離レベル、プロセス隔離レベルまたはアプリケーションドメインコードアクセス隔離レベルの少なくとも1つを使用して、隔離された環境110において補助コード104を受信し、セキュアに隔離する。ペナルティコンポーネント202は個別補助コード104を通して累積されたペナルティポイントを追跡し、補助コード104の異常な実行振る舞いに応答してしきい値を超えていれば補助コード104を使用禁止にする。管理コンポーネント112は、ペナルティポイントに基づいて隔離された環境における補助コード104の実行をモニタリングし、管理する。
管理コンポーネント112は、使用禁止にされた補助コード104の実行を、異常な実行の振る舞いに応じて適用されたペナルティポイントの累積総計に基づいて拒否することによって補助コーお104の実行を阻止する。管理コンポーネント112、正しくない振る舞いをする補助コードを提供するパブリッシャのヒストリに基づいてパブリッシャの補助コードが実行されるのを阻止する。さらに、管理コンポーネント112は、すでに実行されたか、または実行中の組織からの既存補助コードにまたがって累積されたペナルティポイントに基づいて、新しい補助コードの登録を防止する。補助コード104は、サーバアプリケーションであるアプリケーション106と共に実行するために受信されたサードパーティプラグインであり、隔離コンポーネント108は、隔離された実行のために補助コード104が送信される先のサンドボックスサーバの一部になっている。
図3は例示のプログラム管理アーキテクチャ300を示す図である。プログラム管理アーキテクチャ300はスタンドアロンサンドボックスサーバマシン302の拡張機能(隔離環境の場合)を含んでいることもあれば、既存のプラットフォームサーバマシン304を含んでいることもある。このアーキテクチャ300は、プラットフォームサーバマシン304においては「サンドボックスサーバ」として定義されたサーバの「役割」を含んでいることもあるン。サンドボックスサーバマシン302は、「プラグイン」とも呼ばれる補助コード(AC)306を安全に実行する個別の専用サーバマシンにすることができる。なお、これが必要条件でないのは、サンドボックスサーバ機能がプラットフォームサーバマシン304上に配置できるからである。この実施形態においては、アーキテクチャ300は.Netフレームワークのコンテキストの中で説明されているが、他のオペレーティングシステムを使用するときは他の類似の実現が採用されることもある(.Netフレームワークは、一般に、Microsoft社によってオペレーティングシステムの中で適用されており、これは新しいアプリケーションとの相互運用性(interoperability)のための事前コード化ソリューションのライブラリを備える)。補助コード306は、明確に定義されたインタフェースをもつ.Netアセンブリ内に含まれる.Netコンポーネントにすることができる。
サンドボックスサーバマシン302は、「ホスト」(例えば、オペレーティングシステム(OS)サービスとして実現されている)および図示したホストプロセス308を含んでいる。ホストプロセス308は、例えば、シングルプロセスとして、「ワーカ(Worker)」で図示した1以上のワーカプロセス310を管理することができる。ワーカプロセス310は1以上のアプリケーションドメイン(AD)312(.Netワークフレーム内のAppDomainsと呼ばれる)を含むことができ、これはワーカプロセス310内の実行中コードを隔離するために使用される。従って、サンドボックス補助コード306は、マシン、プロセスおよびアプリケーションドメインの3つの隔離レベルをもつことができる。
アプリケーションドメインは.Netコードを「実行」特権のみに制限するように.Netメカニズムであるコードアクセスセキュリティ(CAS)を使用して限定することができる。CASは特定のアセンブリに関連付けられた識別子を使用する。補助コード306は限定されたアプリケーションドメイン312の1つ内でのみ実行される。ホストプロセス308とワーカプロセス310は、低い特権のアカウントの下で実行することが可能であり、これらのアカウントはサンドボックスサーバマシン302内の非常に制限された機能だけを実行することができる。
補助コード306は、登録コンポーネント318を使用してプラットフォームサーバデータベース314内に補助コード(AC)登録316として登録される。ただし、登録コンポーネント318による登録は、累積したペナルティポイントの数がしきい値を超えていれば許可されない。さらに、登録コンポーネント318は署名されたアセンブリのみの登録を許可する。登録コンポーネント318は、アンセーフ(unsafe)とマークされたパブリッシャからのアセンブリの登録を許可しない。アセンブリは、パブリッシャがセーフとマークされている場合は、隔離なしで実行することが許可される。実行されるために、補助コード306はプラットフォームサーバマシン304からサンドボックスサーバマシン302に送信される。
アセンブリキャッシュ320はサンドボックスサーバマシン302側で維持されている。アセンブリキャッシュ320は、各補助コードアセンブリ用の補助コードアセンブリファイル(「ACアセンブリファイル」と呼ばれる)をストアしている。補助コード306がサンドボックスサーバマシン302上で実行されるときは、アセンブリキャッシュ320がチェックされ、そのキャッシュ320が実行用の正しい補助コード306をすでに収めているかどうかが判断される。そうでなければ、その補助コード306はプラットフォームサーバデータベース314からフェッチされ、サンドボックスサーバマシン302に送信され、そこで補助コード306は補助コードアセンブリファイル322としてアセンブリキャッシュ320にストアされる。各補助コードアセンブリ322は、ユニックな識別子が付けられ、それによって、バージョン管理(versioning)が適用され、正しく働くことができる。
定期的に、古い補助コードアセンブリファイルはアセンブリキャッシュ320からクリーンアップされる。アセンブリキャッシュの総サイズの制限、組織当たりのアセンブルキャッシュの総存続時間の制限、アセンブリキャッシュ内のアセンブリの総存続時間の制限といったように、アセンブリキャッシュの周りには完全セットの管理機能が存在する。補助コードアセンブリファイルは、バージョンが古ければ、すなわち、アセンブリファイルが新しいものに更新されているか、またはアセンブリが許容時間を越えてキャッシュに存在していれば、古いと見なされる。
アセンブリキャッシュ320の実現は変化することがある。例えば、単純なファイルとしてストアするのではく、キャッシュ320はローカルデータベースと共におよびそこに置かれたアセンブリと共にインプリメントすることができる。アセンブリキャッシュ320は、コールごとに同じデータを通信チャネルにまたがって送信しないで済むようにする最適化ステップである。
補助コードが有用な作業を行なうのを可能にするために、補助コード306にはプラットフォームサーバマシンの機能を実行するためのインタフェースが与えられる。このインタフェースはワーカプロセス310によって管理され、補助コード306によるプラットフォームサーバマシン304へのすべてのコールが発生元プラットフォームサーバ(ここではプラットフォームサーバマシン304)に戻されることを保証する。これは、トランザクション完全性(transactional integrity)を保持したいときだけ採用することができる。同じサーバに戻すようにすると、設計の単純化が得られる。内側トランザクションプラグインと外側トランザクションプラグインの両方が存在している。外側トランザクションプラグインは異なるプラットフォームサーバに移ることができる。
これにより、戻されたトランザクションの識別子が発生元プラットフォームサーバ(プラットフォームサーバマシンマシン304)で認識することが可能になるので、プラットフォームサーバマシン304は、補助コード306によって実行される新しい作業を元のトランザクションと関連付けることができる。このことは、あるトランザクションでサンドボックス化された補助コード306によって実行される全作業が正しいトランザクションコンテキストで実行されるので、トランザクションを分散化する必要がないことを意味している。
サンドボックスサーバマシン302で補助コード306が予想外の例外を引き起こし、クラッシュし、過度のCPU時間またはメモリを使用すると、発生元プラットフォームサーバマシン304はこのことを認識し、ペナルティコンポーネント324を使用して、補助コード306を含む補助コードアセンブリに対してペナルティポイントを累積させることになる。補助コードアセンブリに対するペナルティポイントの数を超えていると、補助コードアセンブリは使用禁止にされ、そのアセンブリ内に収められた1以上の補助コードセットは実行されなくなる。
なお、この時点で、アセンブリは登録解除され、登録コンポーネント318を使用して再び登録されることができる。これに応じて、アセンブリが使用禁止にされた回数のカウントがとられる。それが定義したしきい値を超えていれば、アセンブリは管理的アクションが実行されるまで以後の登録が防止される。あるいは、使用禁止にされたアセンブリは単純に再び使用可能にすることができる。
さらに、ある組織のために登録されたすべての補助コードアセンブリに対するペナルティポイントの総数があらかじめ決めたしきい値を超えていれば、その組織に対する補助コードセットの以後の登録はなんらかの管理的アクションがとられるまで防止される。
さらに、過度のエラーまたはクラッシュ数に起因するパブリッシャの阻止を容易にする阻止されたパブリッシャのテーブルが維持されているので、パブリッシャIDを収めた関連補助コードアセンブリが登録されたり、再登録されたり、実行されたりすることがない。
アーキテクチャ300のトランザクション完全性は、オペレーションのために発生元プラットフォームサーバ304に戻ることによって異なるサンドボックスサーバマシン上の複数レベルのプラグイン実行を通して維持されている。
アセンブリがある時間の間正しく実行されていた場合にペナルティポイントをデクリメントする報酬(rewards)プロセスが存在することも可能である。これは、ある時間期間にわたってランダムな障害があっても、アセンブリが使用禁止にされないことを意味する。
図4は、サンドボックスサーバ402を使用したプログラム管理のためのより一般的なシステム400を示す図である。オペレーション時に、関連サンドボックスプラグインステップをもつプラットフォームサーバマシン406のプラットフォームサーバ404のオペレーションが実行されるとき、使用可能なサンドボックスサーバマシン(例:サンドボックスサーバ402)が構成されたサンドボックスサーバマシン408のリストから選択される。この選択プロセスは、負荷管理コンポーネント204の負荷分散アルゴリズム(load balancing algorism)に基づくことができる。サンドボックスサーバマシン408は定期的に負荷管理コンポーネント204によってクエリされて、使用可能性と負荷が確かめられる。負荷管理コンポーネント204は、例えば、プラットフォームサーバマシン410の1つの一部にすることができる。
実行リクエストはサンドボックスサーバマシン402側のホストプロセス412に転送される。ホストプロセス412はアセンブリがサンドボックスマシン402のアセンブリキャッシュに使用可能になっているかどうかを判断し、使用可能でなければ、オリジネータサーバ(プラットフォームサーバマシン406)にアセンブリを要求する。アセンブリがアセンブリキャッシュにあるときは、ホストプロセス412は使用可能プールからワーカプロセス(worker process)414を選択し、実行リクエストをそのワーカプロセス414に転送する。ホストプロセス412はワーカプロセスのプールを維持し、ワーカプロセスのリソース使用状況(例:メモリ、CPU使用状況など)をモニタリングし、限界値を超えていればワーカプロセスをシャットダウンする。
ワーカプロセスの選択は、ラウンドロビン、ランダム、またはある程度の類似性(affinity)がある異なるストラテジに従うことが可能である。リクエストがある組織に対するものであれば、その組織が稼働中のワーカプロセスによってサービスを受けているかどうかを判断するチェックが行なわれる。そうであれば、そのリクエストはそのワーカプロセスに送られる。そうでなければ、使用可能な空きワーカプロセスプールから新しいワーカプロセスが選択され、それが使用される。
ワーカプロセス414はワーカプロセス414内に該当CAS制限付きアプリケーションドメインを作成および/または選択し、望みのプラグインアセンブリとクラスをロードする。次に、ワーカプロセス414はそのプラグインで“Execute”をコールし、これを受けてプラグインは該当プラットフォームサーバマシン406に対して関連パラメータを指定してコールを行うが、このプラットフォームサーバマシンはプラグインがプラットフォームサーバオペレーションを実行できるようにするインタフェースを含んでいる。さらに、プラグインは、プラグインがトレーシング(tracing)を実行できるようにするインタフェースを含んでいる。プラグインが正しくない振る舞いをし、あらかじめ決めたペナルティしきい値を超える数のペナルティポイントを累積した場合は、プラグインは、プラットフォームサーバ404を通してデータベースを使用禁止にすることにより以後の実行が防止される。プラグインがしきい値を超える回数だけ使用禁止にされた場合は、そのアセンブリの以後の登録は使用禁止にされる。すべてのプラグインセットに渡る総使用禁止カウントが別のしきい値を超えた場合は、すべてのプラグイン登録はその組織に対して使用禁止にすることができる。プラグインインタフェースは拡張可能であるので、追加のサービスをプラグインに提供することができる。
本明細書には、開示したアーキテクチャの新規側面を実行する例示方法を表すフローチャートのセットが含まれている。説明の便宜上、例えば、フローチャートまたはフロー図の形で本明細書に示した1以上の方法は一連のアクトとして示され、記載されているが、当然に理解されるように、これら方法によれば、一部のアクトが本明細書に示され、記載されているのとは異なる順序で現れることもあれば、他のアクトと同時に現れることもあるので、これらの方法はアクトの順序によって制限されない。例えば、通常の知識者ならば理解されるように、方法は、ステート図におけるように一連の相互に関係するステートまたはイベントのとして表現されることもある。さらに、方法に例示したアクトは新規の実現ではすべてが必要であるとは限らない。
図5は、プログラムを管理する方法を示す図である。500において、補助コードが実行のために受信される。502において、補助コードが実行のために隔離環境に送信される。504において、補助コードが隔離環境で実行される。506において、補助コードの実行が異常な実行振る舞いであるかがモニタリングされる。508において、異常な実行振る舞いに基づいて補助コードの実行が管理される。
方法の追加側面には、メインオペレーションの一部として隔離実行のために補助コードをスケジューリングすることを含めることができる。さらに、504のあと、結果がプラットフォームに返送されることが可能であると、メインオペレーションが継続される。
図6はペナルティポイントに基づいて補助コードを管理する方法を示す図である。600において、補助コードが補助コードの異常な実行振る舞いについてモニタリングされる。602において、補助コードの異常な実行振る舞いのインスタンスに基づいてペナルティポイントが適用される。604において、あらかじめ決めたペナルティしきい値と突き合わせる比較のためにペナルティポイントが累積される。606において、あらかじめ決めたしきい値に対して補助コードの実行が中止される。
図7はペナルティポイントに基づいて登録を管理する方法を示す図である。700において、ペナルティポイントが適用され、累積され、ペナルティしきい値と突き合わせて比較される。702において、累積されたペナルティポイントの数によって判断されるように、過度の異常な振る舞いに基づいて補助コードの登録が防止される。704において、組織に対するプラグインの過度の異常な振る舞いに基づいて補助コードの登録が防止される。706において、アンセーフパブリッシャに基づいて補助コードの登録が防止される。
図8は正しくない振る舞いをする補助コードのパブリッシャを管理する方法を示す図である。800において、アンセーフパブリッシャがアンセーフパブリッシャリストに追加される。このリストからの除去は管理的アクションによることができる。802において、正しくない振る舞いをする補助コードを提供するパブリッシャおよびパブリッシャ識別子のテーブルが維持される。804において、パブリッシャ識別子をもつパブリッシャから補助コードが受信される。806において、パブリッシャからの補助コードの実行が阻止される。808において、パブリッシャからの補助コードの登録がテーブルおよび識別子に基づいて阻止される。
図9は、正しくない振る舞いをする補助コードに基づいて組織を管理する方法を示す図である。900において、1以上の補助コードの正しくない振る舞いをする実行に基づいて1以上の補助コードにペナルティポイントが適用される。902において、正しくない振る舞いをするセットの累積されたペナルティポイントがペナルティしきい値と突き合わせてテストされる。904において、正しくない振る舞いをするセットが使用禁止にされ、以前に使用禁止にされたセットが管理的アクションを使用して再使用可能にされることができる。906において、正しくない振る舞いをする1以上のセットの組織が特定される。908において、その組織による新しい補助コードの登録と既存コードの再登録が防止される。
図10は負荷分散に基づいてサンドバックスサーバを選択する方法を示す図である。1000において、補助コードが実行のために発生元プラットフォームサーバで受信される。1002において、負荷分散コンポーネントがアクセスされる。1004において、補助コードの実行リクエストがサブミットされる。1006において、複数のサンドボックスの1つが負荷分散コンポーネントによって隔離実行のために選択される。選択を行なうための異なるストラテジは、ラウンドロビン、ランダムのようにある程度の類似性(affinity)に基づいて採用することができる。1008において、補助コードの正しくない振る舞いがモニタリングされる。1010において、正しくない振る舞いの報告が発生元プラットフォームに戻され、ペナルティポイントが適用される。1012において、正しくない振る舞いをする補助コードの登録と実行がペナルティポイントに基づいて管理される。
本出願において用いられている「コンポーネント」と「システム」の用語は、ハードウェアであるか、ハードウェアとソフトウェアの組み合わせであるか、ソフトウェアであるか、実行中のソフトウェアであるかに関係なく、コンピュータに関係するエンティティを指すことを目的としている。例えば、コンポーネントは、プロセッサ上で実行されるプロセス、プロセッサ、ハードディスクドライブ、多重ストレージドライブ(光および/または磁気記憶媒体の)、オブジェクト、実行可能コード(executable)、実行スレッド、プログラム、および/またはコンピュータにすることができるが、これらに限定されない。例として、サーバ上で実行されるアプリケーションとサーバは共にコンポーネントにすることができる。1以上のコンポーネントはプロセスおよび/または実行スレッド内に置いておくことができ、コンポーネントは1つのコンピュータ上に置いておくことも、2またはそれ以上のコンピュータ間に分散させることもできる。「例示」の用語は、例(example)、インスタンス(instance)、または図例(illustration)を意味するために本明細書で用いられることがある。「例示」として記載されているどの側面または設計も、必ずしも、他の側面または設計よりも好ましいまたは優位であると解釈されない。
次に図11を参照して説明すると、図11は隔離されたプラグイン実行を開示したアーキテクチャに従って実行するように動作可能であるコンピューティングシステム1100を示すブロック図である。種々の側面に関する追加のコンテキストが得られるようにするために、図11および以下の解説は、種々の側面が実現可能である適当なコンピューティングシステム1100の概要を簡単に記載したものである。上記記載は、1以上のコンピュータ上で実行可能であるコンピュータ実行可能命令の一般的コンテキストの中で説明されているが、この分野の精通者ならば認識されるように、新規の実施形態が他のプログラムモジュールと関連付けて実現されることも、ハードウェアとソフトウェアの組み合わせとして実現されることも可能である。
種々の側面を実現するコンピューティングシステム1100は、1以上の処理ユニット1104、システムメモリ1106およびシステムバス1108を装備したコンピュータ1102に含んでいる。処理ユニット1104は、シングルコンピュータ、マルチコンピュータ、シングルコアユニットおよびマルチコアユニットのように商用化された種々のプロセッサのいずれかにすることができる。さらに、この分野の精通者ならば理解されるように、新規の本方法が他のコンピュータシステム構成と共に実施することが可能であり、コンピュータシステム構成としてはミニコンピュータ、マインフレームコンピュータのほかに、パーソナルコンピュータ(例:デスクトップ、ラップトップなど)、ハンドヘルドコンピューティングデバイス、マイクロプロセッサベースまたはプログラマブルコンシューマエレクトロニクスなどがあり、これらの各々は1以上の関連デバイスに動作可能に結合することが可能である。
システムメモリ1106は、揮発性(VOL)メモリ1110(例:ランダムアクセスメモリ(RAM))および不揮発性(NON−VOL)メモリ1112(例:ROM、EPROM、EEPROMなど)を含むことができる。基本入出力システム(BIOS)は不揮発性メモリ1112にストアしておくことができ、そこには、スタートアップ時のようにコンピュータ1102内のコンピュータ間でデータおよび信号をやりとりするのを容易にする基本的ルーチンが含まれている。揮発性メモリ1110は、キャッシングデータ用のスタティックRAMのような高速RAMを含むことも可能である。
システムバス1108は、システムコンポーネントのインタフェースとなるものであり、この中には1以上の処理ユニット1104とのメモリサブシステム1106が含まれるが、これに限定されない。システムバス1108は、メモリバス(メモリコントローラ付きまたは無し)にさらに相互接続可能である数種タイプのバス構造のいずれか、および種々の商用化バスアーキテクチャのいずれかを使用した周辺バス(例:PCI、PCIe、AGP、LPCなど)にすることができる。
コンピュータ1102は1以上のストレージサブシステム1114およびこれらのストレージサブシステム1114とシステムバス1108および他の望みのコンピュータコンポーネントとの間のインタフェースとなるストレージインタフェース1116をさらに含んでいる。ストレージサブシステム1114は、例えば、ハードディスクドライブ(HDD)、磁気フロッピディスクドライブ(FDD)および/または光ディスクストレージドライブ(例:CD−ROMドライブ、DVDドライブなど)の1以上を含むことができる。ストレージインタフェース1116は、例えば、EIDE、ATA、SATA、およびIEEE1394などのインタフェーステクノロジを含むことができる。
1以上のプログラムおよびデータは、メモリサブシステム1106、取り外し可能メモリサブシステム1118(例:フラッシュドライブ形体のファクタテクノロジ)、および/またはストレージサブシステム1114にストアしておくことができるが、その中にはオペレーティングシステム1120、1以上のアプリケーションプログラム1122、その他のプログラムモジュール1124およびプログラムデータ1126が含まれている。一般的に、プログラムには特定のタスクを実行または特定の抽象データ型を実現するルーチン、方法、データ構造、その他のソフトウェアなどが含まれている。コンピュータ1102がサーバマシン(例:プラットフォームサーバ、サンドボックスサーバ)である場合は、1以上のアプリケーションプログラム1122、その他のプログラムモジュール1124およびプログラムデータ1126は、例えば、図1のシステム100、図2のシステム200、図3のプログラム管理アーキテクチャ300、図5乃至図9の一般的システムおよび方法を含むことができる。
オペレーティングシステム1120、アプリケーション1122、モジュール1124および/またはデータ1126のすべてまたは一部は、例えば、揮発性メモリ1110のようなメモリにキャッシュしておくこともできる。当然に理解されるように、開示したアーキテクチャは種々の商用化オペレーティングシステムまたはオペレーティングシステムの組み合わせと共に実現することができる(例:バーチャルマシンとして)。
ストレージサブシステム1114およびメモリサブシステム(1106と1118)は、データ、データ構造、コンピュータ実行可能命令などを揮発的または不揮発的に収めているコンピュータ可読媒体の働きをする。コンピュータ可読媒体は、利用できる媒体ならば、コンピュータ1102によってアクセスできるどの媒体にすることも可能であり、その中には揮発性媒体と不揮発性媒体、取り外し可能媒体と取り外し不能媒体が含まれる。コンピュータ1102にとっては、媒体はデータを任意の適当なデジタルフォーマットでストアするのに適している。この分野の精通者ならば当然に理解されるように、zipドライブ、磁気テープ、フラッシュメモリカード、カートリッジなどのように、開示したアーキテクチャの新規方法を実行するためのコンピュータ実行可能命令をストアするために、他のタイプのコンピュータ可読媒体を採用することができる。
ユーザは、キーボードとマウスのような外部ユーザ入力デバイス1128を使用してコンピュータ1102、プログラムおよびデータとやりとりすることができる。その他の外部入力デバイスとして可能なものに、マイクロホン、IR(赤外線)リモートコントロール、ジョイスティック、ゲームパッド、カメラ認識システム、スタイラスペン、タッチスクリーン、ジェスチャシステム(例:目の動き、手の動きなど)などがある。ユーザは、タッチパッド、マイクロホン、キーボードなどのオンボードユーザ入力デバイス1130を使用してコンピュータ1102、プログラムおよびデータとやりとりすることができるが、そこではコンピュータ1102は、例えば、ポータブルコンピュータになっている。これらおよびその他の入力デバイスはシステムバス1108を経由した入出力(I/O)を通して処理ユニット1104に接続されているが、パラレルポート、IEEE1394シリアルポート、ゲームポート、USBポート、IRインタフェースなどの他のインタフェースによって接続することができる。I/Oデバイスインタフェース1132は、サウンドカードおよび/またはオンボードオーディオ処理機能のように、プリンタ、オーディオデバイス、カメラデバイスなどの出力周辺デバイス1134の使用も容易にしている。
1以上のグラフィックスインタフェース1136(一般にグラフィックス処理ユニット(GPU)とも呼ばれる)はコンピュータ1102と外部ディスプレイ1138(例:LCDプラズマ)および/またはオンボードディスプレイ1140〈例:ポータブルコンピュータの場合〉との間にグラフィックスとビデオ信号を提供する。グラフィックスインタフェース1136はコンピュータシステムボードの一部として製造することもできる。
コンピュータ1102は、ワイヤ/ワイヤレス通信サブシステム1142を介した1以上のネットワークおよび/または他のコンピュータとの論理コネクションを使用してネットワーク化環境(例:IP)で動作することができる。その他のコンピュータとして可能なものとしては、ワークステーション、サーバ、ルータ、パーソナルコンピュータ、マイクロプロセッサベースのエンターテインメントアプライアンス、ピアデバイスまたは他の共通ネットワークノードがあり、これらは、コンピュータ1102に関して説明した要素の多くまたはすべてを含んでいるのが代表的である。論理コネクションとして可能なものとしては、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、ホットスポットなどのワイヤ/ワイヤレス接続性がある。LANとWANネットワーキング環境はオフィスや会社で普及しており、イントラネットのような企業内コンピュータネットワークを容易化しており、そのすべてはインターネットのようなグローバル通信ネットワークに接続していることがある。
ネットワーキング環境で使用されるときは、コンピュータ1102はワイヤ/ワイヤレス通信サブシステム1142(例:ネットワークインタフェースアダプタ、オンボードトランシーバサブシステムなお)に接続して、ワイヤ/ワイヤレスネットワーク、ワイヤ/ワイヤレスプリンタ、ワイヤ/ワイヤレス入力デバイス1144などと通信している。コンピュータ1102はモデムを含むことが可能であるが、またはネットワーク上の通信を確立するための他の手段を含んでいることもある。ネットワーク化環境では、コンピュータ1102に関係するプログラムとデータは、分散システムと関連するようなリモートメモリ/ストレージデバイスにストアしておくことができる。以上から理解されるように、図示のネットワークコネクションは例示であり、コンピュータ間の通信リンクを確立する他の手段を使用することが可能である。
コンピュータ1102は、IEEExxファミリの標準などの無線(radio)テクノロジを使用してワイヤ/ワイヤレスデバイスまたはエンティティと通信するように動作可能であり、そのようなものとしては、例えば、プリンタ、スキャナ、デスクトップおよび/またはポータブルプリンタ、パーソナルデジタルアシスタント(PDA)、通信衛星、ワイヤレスに検出可能タグ(例:キオスク、ニューススタンド、レストルーム)と関連付けられた機器またはロケーションのいずれかの部分とのワイヤレス通信(例:IEEE802.11無線(over-the-air)で動作可能に配置されたワイヤレスデバイスなどがある。この中には、少なくとも、ホットスポット用のWi−Fi(つまりワイヤレス(Wireless Fidelity)、WiMax、およびBluetooth〈商標〉ワイヤレステクノロジが含まれている。従って、通信は、従来のネットワークまたは単純に少なくとも2つのデバイス間のアドホック(ad hoc)ネットワークとの通信のように事前定義の構造にすることができる。Wi−FiはIEEE802.11x(a、b、gなど)を使用して、セキュアで信頼性のある高速ワイヤレス接続性を提供している。Wi−Fiネットワークは、コンピュータを相互に、インターネットに、およびワイヤネットワーク(IEEE802.3に関係するメディアと機能を使用する)に接続するために使用することができる。
例示の側面は分散コンピューティング環境で実施されることも可能であり、そこではある種のタスクは、通信ネットワークを通してリンクされたリモート処理デバイスによって実行されている。分散コンピューティング環境では、プログラムモジュールはローカルおよび/またはリモートストレージおよび/またはメモリシステムに置いておくことができる。
次に図12を参照して説明すると、図12は、プラグイン隔離のプログラム管理のためのコンピューティング環境1200を示す概略ブロック図である。この環境は1以上のクライアント1202を含んでいる。クライアント1202はハードウェアおよび/またはソフトウェア〈例:スレッド、プロセス、コンピューティングデバイス〉にすることができる。クライアント1202は、例えば、クッキー(cookie)および/または関連コンテキスト情報を収容することができる。
この環境1200は1以上のサーバ1204も含んでいる。サーバ1204もハードウェアおよび/またはソフトウェア(例:スレッド、プロセス、コンピューティングデバイス)にすることができる。サーバ1204は、例えば、アーキテクチャを採用することにより変形(transformation)を実行するためのスレッドを収容することができる。クライアント1202とサーバ1204間の1つの可能な通信は、2またはそれ以上のコンピュータプロセス間で送信されるのに適したデータパケットの形体にすることができる。データパケットは、例えば、クッキーおよび/または関連コンテキスト情報を収めていることがある。この環境1200は、クライアント1202とサーバ1204間の通信を容易にするため採用できる通信フレームワーク1206(例:インターネットのようなグローバル通信ネットワーク)を含んでいる。
通信はワイヤ(光ファイバを含む)および/またはワイヤレステクノロジを通して容易にすることができる。クライアント1202は、クライアント1202にローカルである情報(例:クッキーおよび/または関連コンテキスト情報)をストアするために採用できる1以上のデータストアに動作可能に接続されている。同様に、サーバ1204は、サーバ1204にローカルである情報(例:クッキーおよび/または関連コンテキスト情報)をストアするために採用できる1以上のデータストアに動作可能に接続されている。
上述してきた説明の中には、開示したアーキテクチャのいくつかの例が含まれている。当然のことであるが、想到し得るすべてのコンポーネントおよび/または方法の組み合わせを記載することは不可能であるが、この分野の通常の知識者ならば認識されるように、さらに多くの組み合わせおよび置換(permutation)が可能である。従って、新規なアーキテクチャは請求項の精神および範囲に属するすべての変更、改良および変形を包含することを目的としている。さらに、「含む(includes)」の用語が詳細説明または請求項のどちらかで使用されている限りにおいて、この用語は「備える(comprising)」が請求項で移行語として使用されたときに解釈されるように「備える(comprising)」の用語と同じように包含的であることを目的としている。

Claims (15)

  1. コンピュータ実装プログラム管理システム(100)であって、
    アプリケーションと共に実行される補助コードを受信するためのインタフェースコンポーネント(102)と、
    隔離された環境において1以上の隔離レベルを使用して前記補助コードを受信し、セキュアに隔離するための隔離コンポーネント(108)と、
    部分的に異常な実行の振る舞いに基づいて、前記隔離された環境において前記補助コードの実行をモニタリングし、管理するための管理コンポーネント(112)と
    を備えることを特徴とするシステム。
  2. 前記補助コードは前記アプリケーションと共に実行されるために受信したサードパーティプラグインであり、前記アプリケーションはサーバアプリケーションであり、前記隔離コンポーネントは前記補助コードが隔離された実行のために送信される先のサンドボックスサーバの一部であることを特徴とする請求項1に記載のシステム。
  3. 前記1以上の隔離レベルは、マシン隔離レベル、プロセス隔離レベル、またはアプリケーションドメインコードアクセス隔離レベルの少なくとも1つを含むことを特徴とする請求項1に記載のシステム。
  4. 前記インタフェースコンポーネントは、前記補助コードからのコールが前記アプリケーションに送られることを保証することを特徴とする請求項1に記載のシステム。
  5. 前記管理コンポーネントは、前記異常な実行の振る舞いに応答して適用されたペナルティポイントの累積総計に基づいて前記補助コードを使用禁止にすることによって前記補助コードの実行を停止することを特徴とする請求項1に記載のシステム。
  6. 前記異常な実行の振る舞いに基づいて前記補助コードによって累積されたペナルティポイントをトラッキングするためのペナルティコンポーネントをさらに備えることを特徴とする請求項1に記載のシステム。
  7. 増加した実行負荷に基づいて1以上の既存隔離コンポーネントを選択するための負荷管理コンポーネントをさらに備えることを特徴とする請求項1に記載のシステム。
  8. プログラムを管理するコンピュータ実装方法であって、
    実行のために補助コードを受信するステップ(500)と、
    実行のために隔離された環境に前記補助コードを送信するステップ(502)と、
    前記隔離された環境において前記補助コードを実行するステップ(504)と、
    異常な実行の振る舞いについて前記補助コードの実行をモニタリングするステップ(506)と、
    前記異常な実行の振る舞いに基づいて前記補助コードの前記実行を管理するステップ(508)と
    を備えることを特徴とする方法。
  9. 前記異常な実行の振る舞いに基づいてペナルティポイントを適用し、累積するステップと、
    あらかじめ決めたペナルティポイントのしきい値に対して前記補助コードの実行を中止するステップと
    をさらに備えることを特徴とする請求項8に記載の方法。
  10. 前記ペナルティポイントは、前記補助コードの実行中のエラーに関係する異常な実行の振る舞いに基づくことを特徴とする請求項9に記載の方法。
  11. あらかじめ決めたペナルティポイントのしきい値に対して前記補助コードの登録を防止するステップをさらに備えることを特徴とする請求項8に記載の方法。
  12. 前記補助コードが使用禁止にされた回数に基づいて前記補助コードを管理するステップをさらに備えることを特徴とする請求項8に記載の方法。
  13. すでに実行されたまたは実行中の組織からの既存コードにわたって累積されたペナルティポイントに基づいて前記組織からの新しい補助コードの登録を防止するステップをさらに備えることを特徴とする請求項8に記載の方法。
  14. 正しくない振る舞いをする補助コードを提供するパブリッシャのヒストリに基づいて、前記パブリッシャからの補助コードが実行されるのを阻止するステップをされに備えることを特徴とする請求項8に記載の方法。
  15. 負荷分散データに基づいて複数のサンドボックスサーバからサンドボックスサーバを選択するステップをさらに備えることを特徴とする請求項8に記載の方法。
JP2011539542A 2008-12-02 2009-11-02 サンドボックス化したプラグインの実行 Withdrawn JP2012510679A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/326,114 US8745361B2 (en) 2008-12-02 2008-12-02 Sandboxed execution of plug-ins
US12/326,114 2008-12-02
PCT/US2009/062922 WO2010065222A1 (en) 2008-12-02 2009-11-02 Sandboxed execution of plug-ins

Publications (1)

Publication Number Publication Date
JP2012510679A true JP2012510679A (ja) 2012-05-10

Family

ID=42223846

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011539542A Withdrawn JP2012510679A (ja) 2008-12-02 2009-11-02 サンドボックス化したプラグインの実行

Country Status (12)

Country Link
US (3) US8745361B2 (ja)
EP (1) EP2356578A4 (ja)
JP (1) JP2012510679A (ja)
KR (1) KR101652135B1 (ja)
CN (1) CN102232217B (ja)
AU (1) AU2009322881B2 (ja)
BR (1) BRPI0920054A2 (ja)
CA (1) CA2742121A1 (ja)
IL (1) IL212332A0 (ja)
MX (1) MX2011005834A (ja)
RU (1) RU2011122280A (ja)
WO (1) WO2010065222A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017021773A (ja) * 2015-06-30 2017-01-26 エーオー カスペルスキー ラボAO Kaspersky Lab 望ましくないプログラムのインストール及び実行を予防するシステム及び方法
JP2017215923A (ja) * 2016-05-31 2017-12-07 エーオー カスペルスキー ラボAO Kaspersky Lab 分散ネットワークにおけるバーチャルマシン上の悪意のあるファイルを検出するシステム及び方法

Families Citing this family (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9418040B2 (en) * 2005-07-07 2016-08-16 Sciencelogic, Inc. Dynamically deployable self configuring distributed network management system
US8856782B2 (en) 2007-03-01 2014-10-07 George Mason Research Foundation, Inc. On-demand disposable virtual work system
US9098698B2 (en) 2008-09-12 2015-08-04 George Mason Research Foundation, Inc. Methods and apparatus for application isolation
US8745361B2 (en) 2008-12-02 2014-06-03 Microsoft Corporation Sandboxed execution of plug-ins
FR2940695B1 (fr) * 2008-12-30 2012-04-20 Eads Secure Networks Serveur passerelle a micronoyau
CN101510167B (zh) * 2009-03-31 2016-04-20 阿里巴巴集团控股有限公司 一种插件运行的方法、装置及系统
US9762701B1 (en) * 2009-04-10 2017-09-12 Open Invention Network Llc System and method for cached streaming application isolation
US8839422B2 (en) 2009-06-30 2014-09-16 George Mason Research Foundation, Inc. Virtual browsing environment
US20110154214A1 (en) * 2009-12-18 2011-06-23 Microsoft Corporation Offloading Content Retrieval And Decoding In Pluggable Content-Handling Systems
US9009697B2 (en) 2011-02-08 2015-04-14 International Business Machines Corporation Hybrid cloud integrator
US9063789B2 (en) 2011-02-08 2015-06-23 International Business Machines Corporation Hybrid cloud integrator plug-in components
US9053580B2 (en) 2011-02-25 2015-06-09 International Business Machines Corporation Data processing environment integration control interface
US9104672B2 (en) * 2011-02-25 2015-08-11 International Business Machines Corporation Virtual security zones for data processing environments
US8988998B2 (en) 2011-02-25 2015-03-24 International Business Machines Corporation Data processing environment integration control
US9128773B2 (en) 2011-02-25 2015-09-08 International Business Machines Corporation Data processing environment event correlation
CN102184356B (zh) * 2011-04-21 2014-04-02 奇智软件(北京)有限公司 利用沙箱技术进行防御的方法、装置及安全浏览器
CN103514401A (zh) * 2011-04-21 2014-01-15 北京奇虎科技有限公司 利用沙箱技术进行防御的方法、装置及安全浏览器
CN103942488B (zh) * 2011-04-21 2017-06-23 北京奇虎科技有限公司 利用沙箱技术进行防御的方法、装置及安全浏览器
US20130167028A1 (en) * 2011-06-01 2013-06-27 Adobe Systems Incorporated Restricting media content rendering
US8973158B2 (en) 2011-07-20 2015-03-03 Microsoft Technology Licensing Llc Trust level activation
WO2013082437A1 (en) 2011-12-02 2013-06-06 Invincia, Inc. Methods and apparatus for control and detection of malicious content using a sandbox environment
CN104021167B (zh) * 2011-12-28 2017-06-16 北京奇虎科技有限公司 一种浏览网页的方法及装置
CN102436507B (zh) * 2011-12-28 2014-07-16 奇智软件(北京)有限公司 一种浏览网页的方法及装置
CN104021168B (zh) * 2011-12-28 2017-06-16 北京奇虎科技有限公司 一种浏览网页的方法及装置
US9336061B2 (en) 2012-01-14 2016-05-10 International Business Machines Corporation Integrated metering of service usage for hybrid clouds
US8799988B2 (en) * 2012-01-25 2014-08-05 Microsoft Corporation Document communication runtime interfaces
CN103955468B (zh) * 2012-03-06 2017-12-19 北京奇虎科技有限公司 基于浏览器的文档展示方法及装置
CN102622439B (zh) * 2012-03-06 2014-06-11 北京奇虎科技有限公司 一种在浏览器中展示文档的方法及装置
CN102663283B (zh) * 2012-03-20 2016-02-10 浪潮电子信息产业股份有限公司 一种动态隔离计算机系统的方法
US8769059B1 (en) * 2012-05-23 2014-07-01 Amazon Technologies, Inc. Best practice analysis, third-party plug-ins
US9626710B1 (en) 2012-05-23 2017-04-18 Amazon Technologies, Inc. Best practice analysis, optimized resource use
US9219648B1 (en) 2012-05-23 2015-12-22 Amazon Technologies, Inc. Best practice analysis, automatic remediation
US10740765B1 (en) 2012-05-23 2020-08-11 Amazon Technologies, Inc. Best practice analysis as a service
US9003479B2 (en) * 2012-12-11 2015-04-07 International Business Machines Corporation Uniformly transforming the characteristics of a production environment
CN102982169B (zh) * 2012-12-12 2017-05-24 北京奇虎科技有限公司 用于隔离网页插件的浏览器和方法
US9197446B2 (en) * 2012-12-12 2015-11-24 Google Inc. Address pinning
CN103064709B (zh) * 2012-12-25 2016-11-09 北京奇虎科技有限公司 浏览器活动对象的执行方法、系统及浏览器
US9740390B2 (en) * 2013-03-11 2017-08-22 Spikes, Inc. Dynamic clip analysis
CN104063284B (zh) * 2013-03-18 2016-07-06 腾讯科技(深圳)有限公司 运行应用程序的方法和装置
CN105283846B (zh) * 2013-05-20 2017-06-13 三菱电机株式会社 监视控制装置
US9292525B2 (en) * 2013-06-19 2016-03-22 BlackBerry Limited; 2236008 Ontario Inc. Searching data using pre-prepared search data
CN103617092A (zh) * 2013-11-21 2014-03-05 北京奇虎科技有限公司 一种基于浏览器的插件运行方法和装置
US9697374B2 (en) * 2014-02-19 2017-07-04 Microsoft Technology Licensing, Llc Data proxy service
US9811393B2 (en) * 2014-05-29 2017-11-07 Apple Inc. Consistent extension points to allow an extension to extend functionality of an application to another application
CN104536776B (zh) * 2014-11-28 2018-11-23 百度在线网络技术(北京)有限公司 一种在宿主端插件运行环境中运行插件应用的方法与装置
CN105518693B (zh) * 2014-12-29 2018-12-07 华为技术有限公司 一种安全防护方法,及装置
US10230750B2 (en) * 2015-06-08 2019-03-12 Securboration, Inc. Secure computing environment
US11637866B2 (en) * 2015-10-28 2023-04-25 Qomplx, Inc. System and method for the secure evaluation of cyber detection products
CN105302563B (zh) * 2015-11-09 2019-09-17 歌尔股份有限公司 移动应用服务的插件化方法及系统
US10021120B1 (en) * 2015-11-09 2018-07-10 8X8, Inc. Delayed replication for protection of replicated databases
CN105760755B (zh) * 2016-02-24 2018-06-19 浪潮通用软件有限公司 一种Visual Studio扩展包的隔离方法
RU2638000C1 (ru) 2017-02-08 2017-12-08 Акционерное общество "Лаборатория Касперского" Способ контроля системы исполнения программируемого логического контроллера
US11423140B1 (en) * 2017-03-27 2022-08-23 Melih Abdulhayoglu Auto-containment of guest user applications
US10951644B1 (en) 2017-04-07 2021-03-16 Comodo Security Solutions, Inc. Auto-containment of potentially vulnerable applications
US20190138712A1 (en) * 2017-05-31 2019-05-09 Adnomus, Inc. Systems and methods for real-time data processing analytics engine with adaptive component services
CN107395650B (zh) * 2017-09-07 2020-06-09 杭州安恒信息技术股份有限公司 基于沙箱检测文件识别木马回连方法及装置
CN107968721B (zh) * 2017-11-02 2020-09-11 江苏神州信源系统工程有限公司 针对服务器主动放行的方法、网络管控系统及被管控终端
TWI683264B (zh) * 2017-11-23 2020-01-21 兆豐國際商業銀行股份有限公司 監控管理系統及同步訊息定義檔的方法
CN108647513B (zh) * 2018-03-22 2020-04-28 华中科技大学 一种基于TrustZone的共享库安全隔离方法及系统
US10908948B2 (en) * 2018-04-04 2021-02-02 Vmware, Inc Multiple application instances in operating systems that utilize a single process for application execution
CN109325345B (zh) * 2018-09-21 2022-10-28 百度在线网络技术(北京)有限公司 用于在沙盒环境中运行第三方代码的方法和装置
US10942945B2 (en) * 2018-10-19 2021-03-09 Oracle International Corporation Isolated hierarchical runtime environments for multi-tenant databases
CN110324486A (zh) * 2019-04-25 2019-10-11 维沃移动通信有限公司 一种应用程序控制方法及终端
US11321101B2 (en) * 2019-07-10 2022-05-03 Vmware, Inc. Deployment and isolation of plugins in a virtualized computing environment
EP3786826A1 (en) * 2019-08-30 2021-03-03 Barclays Execution Services Limited Secure validation pipeline in a third party cloud environment
US11886587B2 (en) 2020-10-13 2024-01-30 Kyndryl, Inc Malware detection by distributed telemetry data analysis
US11487870B1 (en) * 2021-04-30 2022-11-01 Snowflake Inc. Logging from user-defined functions
CN113486331A (zh) * 2021-07-21 2021-10-08 维沃移动通信(杭州)有限公司 Api调用请求处理方法、装置、电子设备及可读存储介质
CN113656092B (zh) * 2021-07-29 2024-04-19 浙江中控信息产业股份有限公司 一种基于插件式的scada系统驱动协议高效管理方法
US12050708B2 (en) 2022-03-11 2024-07-30 Oracle International Corporation Cardinal method for hierarchical phased secure access to system entities in isolated multi-tenant database for autonomous cloud environments
US12045335B2 (en) * 2022-03-29 2024-07-23 International Business Machines Corporation Software discovery within software packaging and deployment systems

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5974549A (en) * 1997-03-27 1999-10-26 Soliton Ltd. Security monitor
US6167522A (en) * 1997-04-01 2000-12-26 Sun Microsystems, Inc. Method and apparatus for providing security for servers executing application programs received via a network
US6275938B1 (en) * 1997-08-28 2001-08-14 Microsoft Corporation Security enhancement for untrusted executable code
US6836888B1 (en) * 2000-03-17 2004-12-28 Lucent Technologies Inc. System for reverse sandboxing
GB0007063D0 (en) * 2000-03-23 2000-05-10 Simsci Limited Mulitvariate statistical process monitors
US7461148B1 (en) 2001-02-16 2008-12-02 Swsoft Holdings, Ltd. Virtual private server with isolation of system components
EP1233333A1 (en) * 2001-02-19 2002-08-21 Hewlett-Packard Company Process for executing a downloadable service receiving restrictive access rights to al least one profile file
US7392546B2 (en) * 2001-06-11 2008-06-24 Bea Systems, Inc. System and method for server security and entitlement processing
US7228551B2 (en) * 2001-06-11 2007-06-05 Microsoft Corporation Web garden application pools having a plurality of user-mode web applications
DE50100101D1 (de) * 2001-06-26 2003-03-13 Aladdin Knowledge Systems Gmbh Verfahren zum Erweitern einer mittels eines Installationsprogramms zu installierenden Anwendung um eine Funktion und Computerprogrammprodukt
AU2002360691A1 (en) * 2001-12-19 2003-07-09 Netuitive Inc. Method and system for analyzing and predicting the behavior of systems
JP2006502465A (ja) 2002-01-11 2006-01-19 アカマイ テクノロジーズ インコーポレイテッド コンテンツ配信ネットワーク(CDN)で使用するためのJavaアプリケーションフレームワーク
US20040123117A1 (en) * 2002-12-18 2004-06-24 Symantec Corporation Validation for behavior-blocking system
US10110632B2 (en) * 2003-03-31 2018-10-23 Intel Corporation Methods and systems for managing security policies
US7493614B2 (en) * 2003-03-31 2009-02-17 Microsoft Corporation System architecture and related methods for dynamically adding software components to extend functionality of system processes
US7508532B2 (en) * 2003-05-20 2009-03-24 Microsoft Corporation Method and system for sandboxing printer drivers
US7415703B2 (en) * 2003-09-25 2008-08-19 International Business Machines Corporation Loading software on a plurality of processors
US7444678B2 (en) * 2003-10-28 2008-10-28 Aol Llc Securing resources from untrusted scripts behind firewalls
US20050177635A1 (en) * 2003-12-18 2005-08-11 Roland Schmidt System and method for allocating server resources
US7490268B2 (en) * 2004-06-01 2009-02-10 The Trustees Of Columbia University In The City Of New York Methods and systems for repairing applications
US7908653B2 (en) * 2004-06-29 2011-03-15 Intel Corporation Method of improving computer security through sandboxing
US7680758B2 (en) 2004-09-30 2010-03-16 Citrix Systems, Inc. Method and apparatus for isolating execution of software applications
US7630313B2 (en) * 2004-09-30 2009-12-08 Alcatel-Lucent Usa Inc. Scheduled determination of network resource availability
US7519809B2 (en) * 2005-04-07 2009-04-14 International Business Machines Corporation Operating system-wide sandboxing via switchable user skins
US20070118609A1 (en) 2005-11-23 2007-05-24 France Telecom Distributed computing architecture and associated method of providing a portable user environment
US7941813B1 (en) 2006-02-17 2011-05-10 Parallels Holdings, Ltd. System and method for using virtual machine for driver installation sandbox
US8381299B2 (en) * 2006-02-28 2013-02-19 The Trustees Of Columbia University In The City Of New York Systems, methods, and media for outputting a dataset based upon anomaly detection
US7849451B2 (en) 2006-03-02 2010-12-07 Oracle America Inc. Dynamic delegation chain for runtime adaptation of a code unit to an environment
US7725922B2 (en) * 2006-03-21 2010-05-25 Novell, Inc. System and method for using sandboxes in a managed shell
US8151323B2 (en) 2006-04-12 2012-04-03 Citrix Systems, Inc. Systems and methods for providing levels of access and action control via an SSL VPN appliance
US7747785B2 (en) * 2006-04-14 2010-06-29 Microsoft Corporation Instant messaging plug-ins
US7979891B2 (en) * 2006-05-09 2011-07-12 Oracle International Corporation Method and system for securing execution of untrusted applications
US20080016339A1 (en) * 2006-06-29 2008-01-17 Jayant Shukla Application Sandbox to Detect, Remove, and Prevent Malware
US8656461B2 (en) * 2006-07-28 2014-02-18 Microsoft Corporation Copy-paste trust system
US20080070665A1 (en) * 2006-09-19 2008-03-20 Cyberscan Technology, Inc. Regulated gaming - compartmented freelance code
US7845006B2 (en) * 2007-01-23 2010-11-30 International Business Machines Corporation Mitigating malicious exploitation of a vulnerability in a software application by selectively trapping execution along a code path
US8146109B2 (en) * 2007-02-15 2012-03-27 Microsoft Corporation Version resiliency for a host application and custom code
JP5081480B2 (ja) * 2007-03-28 2012-11-28 株式会社エヌ・ティ・ティ・ドコモ ソフトウェア挙動モデル化装置、ソフトウェア挙動モデル化方法、ソフトウェア挙動検証装置及びソフトウェア挙動検証方法
US7899762B2 (en) * 2007-05-17 2011-03-01 International Business Machines Corporation Apparatus, method, and computer program product providing improved identification of suspect entries in transaction data
US20090049547A1 (en) * 2007-08-13 2009-02-19 Yuan Fan System for real-time intrusion detection of SQL injection web attacks
US8316101B2 (en) * 2008-03-15 2012-11-20 Microsoft Corporation Resource management system for hosting of user solutions
US8424082B2 (en) 2008-05-08 2013-04-16 Google Inc. Safely executing an untrusted native code module on a computing device
US8214364B2 (en) * 2008-05-21 2012-07-03 International Business Machines Corporation Modeling user access to computer resources
US20090293121A1 (en) * 2008-05-21 2009-11-26 Bigus Joseph P Deviation detection of usage patterns of computer resources
US9098698B2 (en) * 2008-09-12 2015-08-04 George Mason Research Foundation, Inc. Methods and apparatus for application isolation
US8745361B2 (en) 2008-12-02 2014-06-03 Microsoft Corporation Sandboxed execution of plug-ins
US9003517B2 (en) 2009-10-28 2015-04-07 Microsoft Technology Licensing, Llc Isolation and presentation of untrusted data
US8621619B2 (en) 2009-12-03 2013-12-31 Google Inc. Dynamic code insertion for static analysis based sandboxes
US8479286B2 (en) 2009-12-15 2013-07-02 Mcafee, Inc. Systems and methods for behavioral sandboxing

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017021773A (ja) * 2015-06-30 2017-01-26 エーオー カスペルスキー ラボAO Kaspersky Lab 望ましくないプログラムのインストール及び実行を予防するシステム及び方法
JP2017215923A (ja) * 2016-05-31 2017-12-07 エーオー カスペルスキー ラボAO Kaspersky Lab 分散ネットワークにおけるバーチャルマシン上の悪意のあるファイルを検出するシステム及び方法

Also Published As

Publication number Publication date
KR101652135B1 (ko) 2016-08-29
EP2356578A4 (en) 2012-09-05
US20100138639A1 (en) 2010-06-03
MX2011005834A (es) 2011-06-21
EP2356578A1 (en) 2011-08-17
IL212332A0 (en) 2011-06-30
KR20110093816A (ko) 2011-08-18
US10542022B2 (en) 2020-01-21
CN102232217B (zh) 2015-02-04
US20140245437A1 (en) 2014-08-28
WO2010065222A1 (en) 2010-06-10
US8745361B2 (en) 2014-06-03
CA2742121A1 (en) 2010-06-10
AU2009322881A1 (en) 2010-06-10
RU2011122280A (ru) 2012-12-10
US9705905B2 (en) 2017-07-11
AU2009322881B2 (en) 2014-07-24
US20180027007A1 (en) 2018-01-25
BRPI0920054A2 (pt) 2015-12-15
CN102232217A (zh) 2011-11-02

Similar Documents

Publication Publication Date Title
US10542022B2 (en) Sandboxed execution of plug-ins
US8341722B2 (en) Load balancing and failover of gateway devices
KR101941728B1 (ko) 클러스터화된 클라이언트 장애 해결 기법
US8832819B2 (en) Load balancing and failover of gateway devices
CN116848528B (zh) 用于自动配置用于容器应用的最小云服务访问权限的技术
US20120005724A1 (en) Method and system for protecting private enterprise resources in a cloud computing environment
WO2015074512A1 (zh) 一种访问物理资源的方法和装置
US10353786B2 (en) Virtualization substrate management device, virtualization substrate management system, virtualization substrate management method, and recording medium for recording virtualization substrate management program
CN105074674A (zh) 计算机系统以及资源管理方法
US12099948B2 (en) Attachment and detachment of compute instances owned by different tenancies
US20240314133A1 (en) Restricted operations due to attachment of compute instances owned by different tenancies
US20100325738A1 (en) Dynamic dual permissions-based data capturing and logging
JP2023540894A (ja) クラウドインフラストラクチャシステムにおけるセキュリティゾーンポリシー施行
US9349012B2 (en) Distributed processing system, distributed processing method and computer-readable recording medium
JP5486038B2 (ja) サーバ切り替え方法、およびサーバシステム
US11777938B2 (en) Gatekeeper resource to protect cloud resources against rogue insider attacks
EP4392860A1 (en) Attachment and detachment of compute instances owned by different tenancies
JP5744259B2 (ja) サーバ切り替え方法、サーバシステム、及び管理計算機
US20220044255A1 (en) Risk mitigation for service delivery
JP6519411B2 (ja) ライセンス管理装置及びライセンス管理プログラム
EP4197134A1 (en) Cross-subscription multi-vnet homing
JP2011018295A (ja) システム、システム障害防止方法及びシステム障害防止プログラム

Legal Events

Date Code Title Description
A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20121005