JP2005327239A - セキュリティ関連プログラミング・インターフェース - Google Patents

セキュリティ関連プログラミング・インターフェース Download PDF

Info

Publication number
JP2005327239A
JP2005327239A JP2004322692A JP2004322692A JP2005327239A JP 2005327239 A JP2005327239 A JP 2005327239A JP 2004322692 A JP2004322692 A JP 2004322692A JP 2004322692 A JP2004322692 A JP 2004322692A JP 2005327239 A JP2005327239 A JP 2005327239A
Authority
JP
Japan
Prior art keywords
security
engines
new
policy
security engine
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.)
Granted
Application number
JP2004322692A
Other languages
English (en)
Other versions
JP4676744B2 (ja
Inventor
Steven W Townsend
ダブリュ.タウンゼント スティーブン
Thomas F Fakes
エフ.フェイクス トーマス
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 JP2005327239A publication Critical patent/JP2005327239A/ja
Application granted granted Critical
Publication of JP4676744B2 publication Critical patent/JP4676744B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • 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/55Detecting local intrusion or implementing counter-measures
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)
  • Exchange Systems With Centralized Control (AREA)
  • Air Bags (AREA)

Abstract

【課題】 コンピューティング・システムのセキュリティを強化するために、イベントや他の情報の処理に関連付けられるインターフェースを提供すること。
【解決手段】 プログラミング・インターフェースは、新しいセキュリティ・ポリシーを複数のセキュリティ・エンジンに伝達することに関連付けられた第1の機能グループを含む。複数のセキュリティ・エンジンのそれぞれは、既存のセキュリティ・ポリシーをその新しいセキュリティ・ポリシーに置き換えるように構成される。さらに、このプログラミング・インターフェースは、各セキュリティ・エンジンが新しいセキュリティ・ポリシーを実装する準備が整ったことを示すインジケーションを伝達することに関連付けられた第2の機能グループを含む。
【選択図】 図7

Description

本願明細書で説明するシステムと方法は、コンピューティング・システムに関し、詳細には、セキュリティ関連イベントなどのイベントの処理や他の情報の処理に関連付けられるインターフェースに関する。
コンピュータ・システムは、普及の拡大が進んでおり、しばしば、ローカル・エリア・ネットワーク(LAN)やインターネットなどのネットワークを経由して他のコンピュータ・システムと相互接続されている。電子メール(Eメール)、インスタント・メッセージング、オンライン・エンターテインメントなどの機能は、ネットワークに接続してのコンピュータ・システムの利用を促進する。これらの機能は、ユーザーが、たとえば、他のユーザーと通信したり、オーディオおよび/またはビデオのコンテンツを取り出したり、オンライン・ソースから商品やサービスを購入したりすることを可能にする。
このコンピュータ・システムの相互接続の増加は、悪意のあるユーザーによるコンピュータ・システムへの攻撃の可能性を増大させる。これらの攻撃には、(たとえば、他のユーザーのコンピュータを動作不能にしようとしたり、他のユーザーのコンピュータから情報を取得しようとしたり、他のコンピュータへの攻撃を開始しようとしたりする)悪意のあるプログラムを他のユーザーのコンピュータにインストールすることが含まれる。また、攻撃には、(たとえば、コンピュータに対して送信される要求の連続ストリームを生成することによって、)そのコンピュータの性能を大幅に低下させて、使用不能に追い込むことも含まれる。こうした攻撃は、コンピュータ・ユーザーにとって迷惑行為であり、結果として、データを損失したり、データを破損したり、コンピュータから機密データがコピーされたり、コンピュータが動作不能になったりする可能性がある。
そのような攻撃の被害(severity)を防止したり、最小限に抑えたりするために、各種のセキュリティ・プログラムやセキュリティ・サービスが開発されている。これらのプログラムやサービスは、コンピュータ・システム上で実行され、そのコンピュータ・システムを悪意ある攻撃から保護する。そのようなプログラムの例として、アンチ・ウィルス・プログラムやファイア・ウォール・プログラムなどがある。通常、このようなプログラムやサービスは、特定タイプの攻撃を防ぐことを目的としている。たとえば、アンチ・ウィルス・プログラムはコンピュータ・ウィルスのロードおよび/または実行を防ぎ、ファイア・ウォール・プログラムは、コンピュータへの外部ユーザーの不正アクセス(許可されていないアクセス)を防ぐ。
これらの異なるプログラム同士は互いに通信しないのが普通である。たとえば、アンチ・ウィルス・プログラムは、通常、ウィルスを検出した事実をファイア・ウォール・プログラムに伝えない。したがって、コンピュータ・システム内の各種セキュリティ・プログラムは、そのコンピュータ・システムに対して特定の攻撃があったことを知ることができない。そこで、コンピュータ・システム内の各種のコンポーネントやセキュリティ・プログラムの間で、セキュリティ・ポリシーやイベント情報を伝達し合うことを可能にするインターフェースを提供することが望ましいことになる。
本願明細書で説明するシステムと方法は、コンピューティング・システムのセキュリティを強化するために、イベントや他の情報の処理に関連付けられるインターフェースを提供する。
特定の実施形態では、プログラミング・インターフェースは、新しいセキュリティ・ポリシーを複数のセキュリティ・エンジンに伝達することに関連付けられた第1の機能グループを含む。複数のセキュリティ・エンジンのそれぞれは、既存のセキュリティ・ポリシーをその新しいセキュリティ・ポリシーに置き換えることができる。さらに、このプログラミング・インターフェースは、各セキュリティ・エンジンの、新しいセキュリティ・ポリシーを実装する準備ができていることのインジケーションを伝達することに関連付けられた第2の機能グループを含む。
複数の図面を通して使用した類似の参照符号は、同様のコンポーネントおよび/または機能を参照している。
本願明細書で説明するシステムと方法は、1つまたは複数のプログラムやサービスで生成されるイベントなど、種々の情報を処理する。さらに、コンピューティング・システム内の種々のコンポーネントおよびプログラムの間でセキュリティ関連情報などの情報を伝達し合うことを可能にするインターフェースについて説明する。このコンピューティング・システムは、セキュリティ・エンジンや他のコンピューティング・システムなど、複数のソースイベントや他の情報を受け取るイベント・マネージャを含む。セキュリティ・エンジンの例として、アンチ・ウィルス・エンジン、ファイア・ウォール・エンジン、侵入(intrusion)検知エンジンなどがある。イベント・マネージャは、特定のソースから受け取ったイベント情報を、その情報を利用する可能性のある1つまたは複数のセキュリティ・エンジンに伝達して、コンピューティング・システムのセキュリティ・レベルを向上させる。
本願明細書で説明する特定の例はセキュリティ関連イベントや他のセキュリティ関連情報を参照するが、代替実施形態は任意のタイプのイベントや情報を処理できる。この情報には、ホスト・コンピュータ内のセキュリティ関連コンポーネントで利用される可能性のあるあらゆる情報が含まれる。代替実施形態は、ホスト・コンピュータのセキュリティに必ずしも関連していない情報を受取、処理し、配布することができる。本願明細書では、「インターフェース」、「プログラム・インターフェース」、「アプリケーション・プログラム・インターフェース(API)」の各用語を区別なく使用している。
イベント処理
図1は、種々のイベントが生成および処理される環境100の一例を示している。イベントの例としては、コンピュータ・ウィルスの検出、機密データへのアクセス試行の検出、コンピュータ・ウィルスを破壊したことの通知、特定のアプリケーション・プログラムが停止していることや実行を妨げられていることの通知、システム状態情報の変更、などがある。ホスト・コンピュータ102は、ネットワーク108を経由して複数のサーバー104および106に接続される。ホスト・コンピュータ102とサーバー104および106には、図9を参照して後述する装置など、任意のタイプのコンピューティング装置を使用できる。ネットワーク108には、ローカル・エリア・ネットワーク(LAN)、ワイドエリア・ネット・ワーク(WAN)、インターネットなど、任意のタイプのデータ通信ネットワークを使用できる。図1は2台のサーバー104および106に接続されたホスト・コンピュータ102を示しているが、ホスト・コンピュータ102は、ホスト・コンピュータとの通信が可能な任意の数のサーバーや他の装置に接続できる。
環境100は、家庭、企業、学校、研究所などにおけるネットワーク設定のように種々の設定(setting)のどれでも表すことができる。たとえば、サーバー104は企業内LAN上のサーバー装置であることが可能であり、ホスト・コンピュータ102は企業内LAN上のデスクトップまたはポータブルのコンピューティング装置であることが可能である。また、別の例として、サーバー104はインターネット上のサーバー装置であることが可能であり、ホスト・コンピュータ102は、ユーザーの家庭のデスクトップ・コンピューティング装置であることも可能である。
ホスト・コンピュータ102は、ホスト・コンピュータ102に対する攻撃の監視、検出、対応など、各種のセキュリティ関連機能を実行するセキュリティ・モジュール110を含む。セキュリティ・モジュール110は、3つのセキュリティ・エンジン114、116および118に接続されたイベント・マネージャ112を含む。セキュリティ・エンジンには、悪意のあるユーザーおよび/または悪意のあるプログラムからの保護を支援する任意のサービスがあてはまる。セキュリティ・エンジン114〜118は、ソフトウェア、ハードウェアまたはソフトウェアとハードウェアの組合せとして実装できる。個々のセキュリティ・エンジンは、アンチ・ウィルス・プログラムや侵入検知プログラムなどのセキュリティ関連アプリケーション・プログラムである。セキュリティ・エンジン114〜118を「サービス」と呼ぶこともできる。ある特定のセキュリティ・モジュール110は、イベント・マネージャ112に接続された任意の数のセキュリティ・エンジンを含むことができる。さらにセキュリティ・モジュール110は、セキュリティ関連ポリシー・リーダーや他のポリシー・ハンドリング・メカニズムなど、他のモジュール、コンポーネントまたはアプリケーション・プログラム(図示せず)も含むことができる。
セキュリティ・モジュール110は、システム状態情報120およびシステム構成情報122にも接続される。システム状態情報120は、ホスト・コンピュータ102の現在の動作状態または動作モードに関する情報を含む。システム構成情報122は、ホスト・コンピュータ102の構成に関する情報を含む。システム状態情報120およびシステム構成情報122は、メモリ装置やハードディスク・ドライブなどの不揮発性ストレージ装置に格納できる。一実施形態では、イベント・マネージャ112およびセキュリティ・エンジン114〜118は、システム状態情報120とシステム構成情報122を受け取ることができる。
さらにホスト・コンピュータ102は、ホスト・コンピュータ102や他の装置にある各種のコンポーネントやプログラムの間でセキュリティ・ポリシーやイベント情報を伝達し合うことを可能にするアプリケーション・プログラム・インターフェース(API)124を含む。たとえば、API124は、コンポーネントやプログラムがセキュリティ・エンジン114〜118やイベント・マネージャ112と通信してセキュリティ関連情報をやりとりすることを可能にする。API124はさらに、たとえば、新しいセキュリティ・エンジンのロード、既存のセキュリティ・エンジンのアンロード、セキュリティ・エンジンへのセキュリティ・ポリシーの送付、セキュリティ・エンジンへのデータ変更の伝達、ユーザーとセキュリティ・エンジンとの対話、セキュリティ・エンジンの集中化した構成管理、などを促進する。API124に関しては後で詳細に説明する。
図1には示していないが、さらに別のデータ・ソースやデータ・プロバイダがセキュリティ・モジュール110およびイベント・マネージャ112に情報やイベントを伝達できる。この別のデータは、たとえば、IIS(Internet Information Service)に関連する構成情報、システム管理アプリケーションから提供されるデータ、システム・レジストリに格納されているデータ、ユーザーまたはシステム管理者から提供される情報などである。
各セキュリティ・エンジン114〜118は、悪意のあるユーザーやアプリケーション・プログラムから、ホスト・コンピュータ102を安全にするのを支援するために、特定のセキュリティ関連機能を実行する。これらの悪意のあるユーザーやアプリケーション・プログラムは、ホスト・コンピュータ102またはホスト・コンピュータ102の機能を動作不能にしようとしたり、ホスト・コンピュータ102からデータ(たとえば、パスワードなどの機密情報)を取得しようとしたり、ホスト・コンピュータ102を使用(他のコンピュータ・システムへの攻撃を支援するなど)しようとしたりする可能性がある。たとえば、セキュリティ・エンジン114はコンピュータ・ウィルスを検出し、セキュリティ・エンジン116はファイア・ウォール保護を提供し、セキュリティ・エンジン118は1つまたは複数のユーザー特権または特性に基づいて特定アプリケーション・プログラムの実行を阻止(block)する。この例では、セキュリティ・エンジン114は、コンピュータ・ウィルス(computer viruses)、ワーム(worms)、トロイの木馬(Trojan horses)などの感染からホスト・コンピュータ102を保護する。また、ファイア・ウォール保護には、ネットワーク接続経由での他の装置からのアクセスからホスト・コンピュータ102を保護することが含まれる。特定アプリケーション・プログラムの実行阻止には、適切な特権を持たないユーザーがホスト・コンピュータ102上でアプリケーション・プログラムを実行するのを防ぐことが含まれる。さらに、ネットワークへの不正なアクセスやストレージ装置への不正なアクセスなどの不正な動作を検出した場合に、アプリケーション・プログラムの実行を阻止できる。
他の実施形態では、1つまたは複数のセキュリティ・エンジンが侵入検知や脆弱性分析を実行できる。侵入検知には、たとえば、悪意のあるアプリケーション・プログラムおよび/またはユーザーがホスト・コンピュータ102にいつアクセスしたかを識別することや、適切なアクションにより、ユーザーや管理者に通知したり、悪意のあるアプリケーション・プログラムを動作不能にしたり、悪意のあるユーザーのアクセスを停止させたりすることが含まれる。脆弱性分析には、たとえば、正しくインストールまたは更新されていないセキュリティ・エンジンあるいはコンポーネント、正しく構成されていないセキュリティ・エンジンあるいはコンポーネント、インストールされていないパッチやホット・フィックス、長さや使用文字の要件を満たしていないパスワード、などに起因する、ホスト・コンピュータ102の脆弱性を検出することを試みることが含まれる。個々のセキュリティ・エンジン114〜118は、イベント・マネージャ112に接続されている他のセキュリティ・エンジンの存在や機能を認識しなくてよい。
各セキュリティ・エンジン114〜118は、イベント(たとえば、コンピュータ・ウィルスの検出、ホスト・コンピュータ102からデータを取得する試行の検出、ユーザーによるアプリケーション・プログラムの実行の防止など)をイベント・マネージャ112に伝達する。これらのイベントには、セキュリティ・エンジンが収集した情報、セキュリティ・エンジンが実行したアクション、イベント・マネージャが1つまたは複数のデータ・ソースから収集したデータ、などが含まれる。情報の例として、特定のインストールにおいてインスタンス化されたすべての仮想サーバーのリストが含まれる。イベント・マネージャ112は、これらのイベントを処理し、個々のイベントに含まれる情報を、その情報から恩恵を得る可能性がある他のセキュリティ・エンジン114〜118に伝達する。
セキュリティ・モジュール110は、さらに、1つまたは複数のルールおよび各種データを含むセキュリティ関連ポリシーを受け取る。イベント・マネージャ112は、そのルールを適切なセキュリティ・エンジン114〜118に配布し、必要に応じてデータをセキュリティ・エンジンに提供する。各セキュリティ・エンジン114〜118は、イベント・マネージャ112から受け取ったこれらのルールおよびデータを格納する。セキュリティ・モジュール110、イベント・マネージャ112およびセキュリティ・エンジン114〜118の動作については、後で詳細に説明する。
図2は、データおよびルールを含むセキュリティ・ポリシー200の一例を示している。一実施形態では、セキュリティ・ポリシー200はセキュリティ・モジュール110に格納される。特定のセキュリティ・モジュールは、任意の数の様々なデータ・ソースから任意の数の様々なセキュリティ・ポリシー200を受取、格納することができる。あるいは、セキュリティ・ポリシー200を、ホスト・コンピュータ102内にある別のモジュールまたはコンポーネントに格納できる。図2の例では、セキュリティ・ポリシー200のデータ部分202は、1つまたは複数のデータ要素を含む。図2に示すように、これらの要素は、変数に割り当てられた値を含む(たとえば、変数「A」には値「1」が割り当てられ、変数「B」には値「4」が割り当てられている)。代替実施形態では、図2に示すデータの代わりに、あるいは図2に示すデータに加えて、他のタイプのデータを含めることもできる。セキュリティ・ポリシー200に含まれるデータは、たとえば、セキュリティ・ポリシー200に含まれる1つまたは複数のルールで使用されたり、1つまたは複数の他のセキュリティ・ポリシーに含まれる1つまたは複数のルールで使用されたりする。
また、セキュリティ・ポリシー200は、複数のルールを収容するルール部分204も含む。セキュリティ・ポリシー200に含まれるルールは、1つまたは複数のセキュリティ・エンジンに関連付けることができる。たとえば、特定のルールを、特定のセキュリティ・エンジンにのみ適用されるようにできる。これらのルールは、各ルールが関連付けられるセキュリティ・エンジンに基づいてセキュリティ・ポリシー200内に配置することができる。あるいは、各ルールに関連付けられた識別子によって、そのルールを適用できるセキュリティ・エンジンを識別することができる。特定の実施形態では、1つのルールを任意の数のセキュリティ・エンジンに関連付けることができる。他の実施形態では、特定のルールを適用するセキュリティ・エンジンをホスト・コンピュータに含めないことも可能である。この状況では、そのルールはどのセキュリティ・エンジンにも関連付けられない。
図2の例では、これらのルールは、IF−THEN構造を使用して定義されている。これ以外に、ルールのセットは様々な異なる形式をとることができる。図2に示すIF−THEN構造を使用すると、ルールは、特定の条件(複数)と、対応する特定のアクション(複数)または結果(複数)を定義する。ルールの執行中にその特定の条件が検出されると、それに対応する特定のアクションまたは結果が実行される。ルールは、様々な異なる条件とそれに対応するアクションまたは結果を特定することができる。条件の例として、リソース(たとえば、メモリ・ロケーション、ネットワーク・アドレスまたはポート、他のプログラム、ストレージ装置内のファイルなど)に対するアクセス試行、特定ロケーション(たとえば、メモリ内の特定ロケーション、ストレージ装置内の特定ロケーションなど)に対するデータ書き込み試行、特定プログラムの実行試行、ホスト・コンピュータ102の現在の動作状態の各種態様、などがある。結果の例として、リソースへのアクセスの防止、特定ロケーションへのデータ書き込みの防止、プログラムの実行防止、ルールにある条件の発生が検出されたことの通知の生成(たとえば、その発生をログに記録する、ユーザーや他のコンピュータにメッセージを送る)、などがある。特定の結果が、防止でなく、性質として許可である場合もある。たとえば、結果は、ホスト・コンピュータ102によってルールにある条件が満たされた場合のみ特定のリソースまたはロケーションにアクセスできることを示したり、ホスト・コンピュータ102によってルールにある条件が満たされた場合のみ特定のプログラムを実行できることを示したりできる。
さらにルールの例として、特定のディレクトリまたはフォルダにあるデータ・ファイルの更新を特定のアプリケーション・プログラムまたはサービスに許可すること、FTP(ファイル転送プロトコル)が有効な場合にポート21でのトラフィックの受信を可能にすること、特定のウィルス・シグネチャが検出された場合にウィルス警告メッセージを生成すること、などがある。他の例として、特定のアプリケーション・プログラムが特定のリビジョン・レベルにアップグレードされていない場合にイベントを生成すること、そのアプリケーション・プログラムが最低限のリビジョン・レベルにもアップグレードされていない場合にネットワークにアクセスするのを防ぐこと、ホスト・コンピュータがネットワークポート35経由でデータを受信するのを防ぐこと、などがある。
図3は、各種セキュリティ・エンジンから要求されるデータに関して、セキュリティ・モジュールによって保持されるテーブル300の一例を示す図である。一実施形態では、テーブル300は、セキュリティ・モジュール110に格納される。あるいは、テーブル300を、ホスト・コンピュータ102内にある別のモジュールまたはコンポーネントに格納できる。セキュリティ・エンジンがセキュリティ・モジュールにデータを要求するたびに、セキュリティ・モジュールは、テーブルを更新して(必要な場合)、そのデータ要求を取り込む。テーブル300の第1列302は、特定のデータ要素、変数などの識別子や情報など、を示している。テーブル300の第2列304は、そのデータ要素を以前に要求したセキュリティ・エンジンを示している。たとえば、テーブル300は、データ要素「A」が以前にセキュリティ・エンジン「1」から要求されたことを示している。同様に、データ要素「D」は、以前にセキュリティ・エンジン「1」、「4」、および「6」から要求されている。後で詳細に説明するように、テーブル300に格納される情報は、更新されたデータをどのセキュリティ・エンジンが受け取るべきかを指定するために、セキュリティ・モジュールによって使用される。
図4は、セキュリティ・ポリシーのルールおよびデータを取得して配布する手続400の一実施形態を示すフロー図である。手続400は、たとえば、ホスト・コンピュータの初期化直後に実行することができる。最初にセキュリティ・モジュールが、そのホスト・コンピュータ用のセキュリティ・ポリシーを取得する(ブロック402)。イベント・マネージャが、そのセキュリティ・ポリシーの中で、各セキュリティ・エンジンに関連するルールを識別する(ブロック404)。イベント・マネージャは次に、そのルールを、該当するセキュリティ・エンジンに伝達する(ブロック406)。
各セキュリティ・エンジンが、関連付けられたルールを適用するために必要なデータを、たとえば、セキュリティ・エンジンが適用するルールに含まれるデータ要素を識別することによって、識別する(ブロック408)。各セキュリティ・エンジンは次に、識別したデータをイベント・マネージャに要求する(ブロック410)。イベント・マネージャは、セキュリティ・エンジンからデータ要求を受け取った後、要求されたデータ要素を、今後の参照のために、テーブル(たとえば、図3のテーブル300)または他のデータ構造に記録する(ブロック412)。最後にイベント・マネージャが、要求されたデータを探し出し、要求しているセキュリティ・エンジンにそのデータを提供する(ブロック414)。このように、イベント・マネージャは、すべてのデータをすべてのセキュリティ・エンジンに提供するのではなく、要求されたデータを、要求している各セキュリティ・エンジンに提供する。
図5は、更新されたセキュリティ・ポリシー・データを処理する手続500の一実施形態を示すフロー図である。最初にセキュリティ・モジュールが、更新されたデータを受け取る(ブロック502)。たとえば、更新されたデータは、既存の変数の更新値を含む場合がある。セキュリティ・モジュールは、更新されたデータを以前に要求していた、1つまたは複数のセキュリティ・エンジンを識別する(ブロック504)。一実施形態では、セキュリティ・モジュールは、図3に示すテーブル300のようなテーブルを使用してこれらのセキュリティ・エンジンを識別する。セキュリティ・モジュールは、該当するセキュリティ・エンジンを識別した後、識別した各セキュリティ・エンジンに更新されたデータを提供する(ブロック506)。最後にセキュリティ・エンジンが、更新されたデータでセキュリティ・エンジンのデータ要素を更新する(ブロック508)。手続500は、更新されたデータをセキュリティ・モジュールが受け取るたびに、繰り返される。別の実施形態では、セキュリティ・モジュールが定期的に、データが更新されているかどうか、各種データ・ソースをチェックする。データが更新されていたら、セキュリティ・モジュールがその更新されたデータを取得し、手続500に従ってそのデータを配布する。
一実施形態では、ルールが更新されると、セキュリティ・モジュールが、そのルールに関連付けられたセキュリティ・エンジンを識別し、その識別したセキュリティ・エンジンに、更新されたルールを配布する。セキュリティ・モジュールは、新しいルールを受け取ると、その新しいルールを使用する可能性があるセキュリティ・エンジンを識別し、該当するセキュリティ・エンジンにその新しいルールを配布する。同様に、既存のルールが削除されると、セキュリティ・モジュールは、そのルールに関連付けられたすべてのセキュリティ・エンジンからそのルールを削除する。別の実施形態では、ルールが更新されると、セキュリティ・モジュールが、(更新されたルールを含む)新しいルール・セットを作成し、この新しいルール・セットをセキュリティ・エンジンに配布する。これによって、セキュリティ・エンジンにある既存のルールが置き換えられる。
図6は、1つまたは複数のセキュリティ・エンジンに、情報(イベント情報やシステム状態情報など)を配布する処理を行う手続600の一実施形態を示すフロー図である。最初にイベント・マネージャが、セキュリティ・エンジンからイベントを受け取る(ブロック602)。イベント・マネージャは次に、そのイベントに含まれる情報、イベント・タイプやそのイベントを引き起こした攻撃の性質など、を識別する(ブロック604)。さらにイベント・マネージャは、そのイベントに含まれる情報を利用する可能性のある他のセキュリティ・エンジンを識別する(ブロック606)。種々のセキュリティ・エンジン同士の関係は、たとえば、ホスト・コンピュータが受け取るセキュリティ・ポリシーの中で指定される。これらの関係は、セキュリティ・ポリシーの作成時にシステム管理者または他のシステム・オペレータが、全体として、または部分的に定義できる。
イベント・マネージャは次に、そのイベントに含まれる情報を、識別したセキュリティ・エンジンに提供する(ブロック608)。識別されたセキュリティ・エンジンは次に、受け取った情報を適用する(ブロック610)。このようなイベント情報の共有(または相互依存)により、悪意のある攻撃に対してホスト・コンピュータによって提供されるセキュリティのレベルを強化する。イベント情報の共有は、個々のセキュリティ・エンジンがホスト・コンピュータ内の他のセキュリティ・エンジンのことを認識する必要がないように、イベント・マネージャによって管理される。本願明細書で説明するセキュリティ関連情報は中央ロケーションに格納できるので、他の装置、コンポーネント、およびアプリケーション・プログラムなどからその情報にアクセスすることが可能である。たとえば、他のセキュリティ・エンジンやコンピューティング・システムが、その格納されているセキュリティ関連情報にアクセスできる。
手続600の一例では、アンチ・ウィルス・セキュリティ・エンジンが、特定のポートを経由して繰り返されるネットワークへのアクセス試行を検出する。このアンチ・ウィルス・セキュリティ・エンジンは、この情報(たとえば、アクセス試行の日時やアクセス試行に使用されたポート)をイベント・マネージャに報告する。この例では、アンチ・ウィルス・セキュリティ・エンジンは、そのようなアクセス試行に反応する役目を負っていない。イベント・マネージャは、アンチ・ウィルス・セキュリティ・エンジンから情報を受取、侵入検知セキュリティ・エンジンとファイアウォール・セキュリティ・エンジンがそのような情報を使用できることを決定する。侵入検知セキュリティ・エンジンとファイアウォール・セキュリティ・エンジンは、その情報を受け取った後、受け取った情報に基づいてそれぞれの動作を調整することができる。たとえば、侵入検知セキュリティ・エンジンは、侵入者をチェックする頻度を高めることができる。また、ファイアウォール・セキュリティ・エンジンは、そのアクセス試行に使用されたポートを一時的に無効にすることができる。このように、複数のセキュリティ・エンジンがセキュリティ関連イベントに関する共有情報に基づいてそれぞれの動作を調整できるようにすることで、攻撃に対するホスト・コンピュータの全体的なセキュリティが高まる。
手続600の別の例では、脆弱性セキュリティ・エンジン(vulnerability security engine)が、ホスト・コンピュータに特定のパッチがインストールされているかどうかを調べる。そのパッチがインストールされていない場合は、脆弱性セキュリティ・エンジンが、そのパッチがインストールされていないことを示すイベントを生成する。ホスト・ファイアウォール・セキュリティ・エンジンとビヘイビア・ブロック・セキュリティ・エンジン(behavioral blocking security engine)は、そのパッチがインストールされていない場合の通知を、イベント・マネージャに登録する。ホスト・ファイアウォール・セキュリティ・エンジンとビヘイビア・ブロック・セキュリティ・エンジンは、パッチがインストールされていないという通知を受け取ると、パッチが施されていないアプリケーション・プログラムの機能を制限するルール(または実行させないようにするルール)を執行する。
別の実施形態では、セキュリティ・モジュール内の各種コンポーネント間(たとえば、イベント・マネージャと複数のセキュリティ・エンジンとの間))でシステム状態情報が共有される。システム状態情報は、種々のデータ・ソースから提供を受けることができる。システム状態情報の例として、現在のネットワーク状態、ネットワーク接続が有線か無線かの情報、ホスト・コンピュータがアクセスしているのは企業内ネットワークか未知のネットワークかの情報、ホスト・コンピュータの構成情報などがある。このように、1つのセキュリティ・エンジンが特定のシステム状態情報を識別すると、その識別した情報を、他のセキュリティ・エンジンおよびホスト・コンピュータ内の他のコンポーネントやモジュールとの間で共有できる。
特定の実施形態では、各種コンポーネントによって収集されたシステム状態情報が中央ロケーションに格納される。これによって、他の装置、コンポーネント、アプリケーション・プログラムなどからその情報にアクセスできるようになる。たとえば、あるセキュリティ・エンジンが収集したシステム状態情報には、他のセキュリティ・エンジン、セキュリティ・モジュールおよびコンピューティング・システムからアクセスできる。
セキュリティ・ポリシーの更新
前述のとおり、セキュリティ・ポリシーを使用して、たとえばセキュリティ・エンジンやセキュリティ・プロバイダによって適用されるルールを記述することができる。セキュリティ・ポリシーに変更が加えられると、更新されたルールが各種セキュリティ・エンジンに供給され、これらの各種セキュリティ・エンジンはほぼ同時に、更新されたルールの使用を開始するように切り替わる。
図1を参照して説明したコンポーネント、プログラムおよびモジュールのほかに、ホスト・コンピュータ102は、1つまたは複数のソース装置(サーバー104および106など)からセキュリティ・ポリシーを受け取る。このセキュリティ・ポリシーは、ホスト・コンピュータ102上の各種セキュリティ・エンジンがどのように動作すべきかを記述している。図1ではホスト・コンピュータ102を1台だけ示しているが、複数のホスト・コンピュータ102が同じソース装置からセキュリティ・ポリシーを取得できることを理解されたい。
ソース装置の例として、デスクトップ(ワークステーション)コンピューティング装置、サーバー・コンピューティング装置、ポータブル(ハンドヘルド)コンピューティング装置、ゲーム・コンソール、ネットワーク機器、携帯電話、携帯情報端末(PDA)、ネットワーキング装置(たとえば、ルーター、ゲートウェイ、ファイア・ウォール、無線アクセス・ポイントなど)などがある。
ホスト・コンピュータ102は、さらに、ポリシー・リーダー・モジュール、ルール・マネージャ、ルール・セット・ジェネレータ・モジュールおよびダイナミック・ルール・データ・ストアを含むことができる。これらのモジュールの1つまたは複数を結合して単一モジュールにしたり、かつ/またはこれらのモジュールの1つまたは複数を分割して2つまたはそれ以上のモジュールにしたりできることを理解されたい。
一般に、セキュリティ・エンジン114〜118が執行しているセキュリティ・ポリシーを更新するには、まず、ポリシー・リーダー・がソース装置からセキュリティ・ポリシーを取得する。ルール・セット・ジェネレータが、その新しく取得したセキュリティ・ポリシーを使用して、各種セキュリティ・エンジンのそれぞれに向けて、1つまたは複数のルールのセットと関連データを生成する。これらのルール・セットは次に、各種セキュリティ・エンジンに伝達され、関連データはダイナミック・ルール・データ・ストアに格納される。関連データもセキュリティ・エンジンに伝達することができる。各セキュリティ・エンジンは、1つまたは複数のルールのセットを受け取るとすぐに、その新しいルール・セットを処理して、その新しいルール・セットを使用する準備を整える。ただし、各セキュリティ・エンジンは、新しいルール・セットに切り替えるよう指示されない限り、現在のルール・セットを使用し続ける。ルール・マネージャが、各セキュリティ・エンジンから、各セキュリティ・エンジンが新しいルール・セットに切り替える準備が整ったことのインジケーションを受信すると、ルール・マネージャは、すべてのセキュリティ・エンジンに対し、新しいルール・セットに切り替えるよう指示する。
特定の実施形態では、ルール・マネージャが、ホスト・コンピュータ102におけるセキュリティ・ポリシーの更新を調整する。ルール・マネージャは、種々のセキュリティ・エンジンが新しいルール・セットに切り替える準備を整えたことのインジケーションをそのセキュリティ・エンジンから受信し、新しいルール・セットの使用を開始すべきときに、そのセキュリティ・エンジンにインジケーション(指示)を渡す。
ポリシー・リーダー・モジュールは、新しいセキュリティ・ポリシーをソース装置から取得する。ポリシー・リーダー・モジュールは、新しいセキュリティ・ポリシーがソースにおいて使用可能になっているかどうかを、定期的に、または不定期にチェックするよう構成できる。あるいは、ポリシー・リーダー・モジュールは、他のあるコンポーネント(たとえば、ルール・マネージャ、ソース装置、または図1に示されていない他のある装置)から、新しいセキュリティ・ポリシーをソースから取得するよう指示(indication)を受けることができる(または、新しいセキュリティ・ポリシーがソースにおいて使用可能になっているかどうかをチェックするよう指示を受けることができる)。ポリシー・リーダーは、取得しようとする特定のセキュリティ・ポリシーをソースに対して指定できる。あるいは単に、そのホスト・コンピュータ向けの最も新しいセキュリティ・ポリシーをソースに対して要求できる。最も新しいセキュリティ・ポリシーがホスト・コンピュータ上で既に執行されているかどうかを判別するために、ホスト・コンピュータで現在使用しているセキュリティ・ポリシーと、最も新しいセキュリティ・ポリシーとを比較することができる。このような比較は、ソース、ポリシー・リーダー、あるいは他のコンポーネントで行うことができる。
ソースから新しいセキュリティ・ポリシーが取得されると、ルール・セット・ジェネレータが、個々のセキュリティ・エンジン114〜118のそれぞれに向けてルール・セットを生成する。ホスト・コンピュータ102でセキュリティ・ポリシーが執行されているときには、個々のセキュリティ・エンジンはそれぞれ異なるルールを使用できる。たとえば、あるセキュリティ・エンジン114がファイア・ウォールであり、別のセキュリティ・エンジン116がアンチウィルス・コンポーネントである場合がある。セキュリティ・ポリシーは、アンチ・ウィルス・エンジン専用のルールを識別でき(したがって、ファイア・ウォール・エンジンはそれらを無視してよい)、また、ファイア・ウォール・エンジン専用のルールも識別できる(したがって、アンチ・ウィルス・エンジンはそれらを無視してよい)。
特定の実施形態では、セキュリティ・ポリシー自体がルールのリストと関連データになる。また、セキュリティ・ポリシーは、どのルールとデータがどのセキュリティ・エンジン向けかの指定を含むこともでき、一方、(たとえば、どのルールがどのセキュリティ・エンジン向けかの判別をホスト・コンピュータにゆだねることにより)そのような指定を含まないことも可能である。このセキュリティ・ポリシーは、設計者が、ホスト・コンピュータの保護に関与するすべてのルールを、異なるセキュリティ・エンジンごとに、異なるレコードまたはファイルにルールを振り分けることなく、単一のレコードまたはファイルにまとめることを可能にする。
さらに、設計者は、本願明細書で説明する技法を使用して、特定の攻撃から保護する役割をあるセキュリティ・エンジンから別のセキュリティ・エンジンにシフトする新しいセキュリティ・ポリシーを、用意することができる。たとえば、特定タイプの攻撃からの保護を、あるセキュリティ・ポリシーではアンチ・ウィルス・プログラムによって実施し、新しいセキュリティ・ポリシーではファイア・ウォール・プログラムによって実施するように変更することができる。設計者は、本願明細書で説明する技法を使用することにより、この役割シフトがすべてのセキュリティ・エンジンにおいてほぼ平行して行われるようにでき、これによって、シフト中の攻撃に対するホスト・コンピュータの脆弱性を低減することができる。
ルール・セット・ジェネレータは、どのルールと関連データ(もしあれば)がどのセキュリティ・エンジンで使用されるかを、セキュリティ・ポリシーに基づいて識別する。ルール・セット・ジェネレータは、セキュリティ・エンジンごとに、そのセキュリティ・エンジン向けのルール・セットを生成し、その生成したルール・セットをそのセキュリティ・エンジンが使用できるようにする(たとえば、ルール・セットをセキュリティ・エンジンに送信したり、セキュリティ・エンジンに、生成したルール・セットを取得できるメモリ内のロケーションを通知したりすることができる)。この生成は、様々な異なる方法で行うことができる。たとえば、セキュリティ・エンジンで執行されている現在のルールに関係なく、新しいルール・セットをルール・セット・ジェネレータで生成できる。また、別の例として、現在のルール・セットと新しいルール・セットの相違点を取り込むように、現在のルール・セットを修正または変更できる。また、ルール・セット・ジェネレータは、セキュリティ・ポリシーからルールを単純にコピーしたり、ルールを記述しているセキュリティ・ポリシーの情報に基づいてルールを生成したりすることができる。
特定の実施形態では、セキュリティ・ポリシーは、どのルールをどのセキュリティ・エンジンに配布すべきかを特定する。たとえば、各ルールをある特定のラベルまたは識別子(たとえば、「Security Engine 1」や「Antivirus engine」など)に関連付けることができる。ルール・セット・ジェネレータは、各種セキュリティ・エンジン向けのルール・セットを生成する際に、これらの識別子を使用できる。代替実施形態では、ルール・セット・ジェネレータは、どのルールをどのセキュリティ・エンジンに配布すべきかを推測できる。他の実施形態では、これらの技法を組み合わせて使用できる(たとえば、一部のルールについては、セキュリティ・ポリシーが割当て先のセキュリティ・エンジンを特定することが可能でありし、他のルールについては、ルール・セット・ジェネレータが割当て先のセキュリティ・エンジンを推測することが可能である)。
ルール・セット・ジェネレータで生成されたルール・セットは、様々な異なる形式をとることができる。特定の実施形態では、これらのルールは、前述したif−then構造に従う。この構造を使用すると、ルールは、特定の条件と、対応する特定のアクションまたは結果を定義する。ルールの執行中にその特定の条件が検出されると、それに対応する特定のアクションまたは結果が実行される。様々な条件および対応する結果のすべてが、ルールによって識別できる。個々の条件の例として、特定リソース(たとえば、メモリ・ロケーション、ネットワーク・アドレスまたはポート、他のプログラム、ストレージ装置内のファイルなど)に対するアクセス試行、特定ロケーション(たとえば、メモリ内の特定ロケーション、ストレージ装置内の特定ロケーションなど)に対するデータ書き込み試行、特定プログラムの実行試行、ホスト・コンピュータの現在の動作状態の各種態様(たとえば、リソース使用可能、プログラム実行中など)などがある。個々の結果の例として、リソースへのアクセスを防止すること、特定ロケーションへのデータ書き込みを防止すること、プログラムの実行を防止すること、ルールにある条件の発生が検出されたことの通知を生成すること(たとえば、その発生をログに記録する、ユーザーや他のコンピュータにメッセージを送るなど)、がある。個々の結果が、性質として防止でなく許可である場合もある。たとえば、結果は、ホスト・コンピュータによりルールにある条件が満たされた場合のみ特定のリソースまたはロケーションにアクセスできることを示したり、ホスト・コンピュータによりルールにある条件が満たされた場合のみ特定のプログラムを実行できることを示したりすることができる。
特定の実施形態では、ホスト・コンピュータ102は、セキュリティ・エンジンによって執行されている各種ルールに関連付けられたデータであるダイナミック・ルール・データ・ストアを含む。特定の実施形態では、ダイナミック・ルール・データ・ストアは、2つのデータ・セットを含むことができる。1つのセットは、セキュリティ・エンジンによって執行されている現在のルールに使用されているセットであり、もう1つのセットは新しいルールのセットであり、執行しようとしてセキュリティ・エンジンが更新されているルールのセットである。新しいセキュリティ・ポリシーが受け取られると、ルール・セット・ジェネレータが、セキュリティ・エンジンに渡された新しいルール・セットに関連付けられたデータを使用して、ダイナミック・ルール・データ・ストアを更新する。
各セキュリティ・エンジンは、ルール・セット・ジェネレータから1つまたは複数のルールのセットを受け取るルール変更モジュールを含む。ルールに関連付けられたデータは、ルールとともにルール・セット・ジェネレータから受け取ることができる。あるいはルール変更モジュールが、必要なデータをダイナミック・ルール・データから取得できる。また、ルール・セット・ジェネレータがセキュリティ・ポリシーに基づいて各セキュリティ・エンジン向けのルール・セットを生成することを既に説明したが、そのほかに、各セキュリティ・エンジンが、ルール・セット・ジェネレータからルール・セットを受け取る代わりに、セキュリティ・ポリシー全体(またはセキュリティ・ポリシーの大部分)を受取、独自のルール・セットを生成することができる点に注意されたい。
ルール変更モジュールは、新しいポリシーを執行する新しい内部ルールを生成するために、必要に応じて新しいルール・セットを処理する。新しい内部ルールを生成するための新しいルール・セットの処理とは、新しいルール・セットをセキュリティ装置によって執行できる状態にするために、セキュリティ・エンジンが実行しなければならないすべてのアクションを指す。たとえば、この処理には、新しいルール・セットを内部フォーマットに変換すること、ルールをメモリ内の特定ロケーションに格納すること、ルールを特定の配列または順序に整理することなどが含まれる。ルール変更モジュールは、様々な方法で新しいルールを生成できる。たとえば、ルールを、ルール・セット・ジェネレータから受け取ったときと同じフォーマットで保管したり、セキュリティ・エンジンで使用する内部フォーマットに変換したりできる。
新しいルールがどのように生成されるかにかかわらず、各セキュリティ・エンジンは、これまでのホスト・コンピュータ用セキュリティ・ポリシー(更新されるセキュリティ・ポリシー)を執行する現在のルール・セットを保持する。新しいルールの生成中および新しいルールが生成された後でも、セキュリティ・エンジンは現在のルールを執行し続ける。セキュリティ・エンジンは、(たとえば、ルール・マネージャによって)新しいルールを執行するよう指示されない限り、新しいルールの執行を開始しない。
ルール変更モジュールは、新しいルールの生成を終了した後、ルール・マネージャに対して、新しいルールの生成を終了したことと、新しいルールを使用する切替え準備が整ったこと(したがって、新しいセキュリティ・ポリシーの執行を開始すること)を知らせる。ルール・マネージャは、そのような知らせをすべてのセキュリティ・エンジンから受け取った後、各セキュリティ・エンジンに対し、新しいルールの使用を開始するように指示する。ルール・マネージャがすべてのセキュリティ・エンジンから知らせを受け取るまで、ルール・マネージャは、各セキュリティ・エンジンに対して新しいルールの使用を開始するよう指示するのを待つ。各セキュリティ・エンジンは、開始するように指示されると、新しいルールの使用を開始する。セキュリティ・エンジンは、新しいルールの使用を開始するとすぐに、それまで使用していたルールを削除することができるようになる。
状況によっては、セキュリティ・エンジンが新しいルールの処理に失敗する可能性がある。その場合、セキュリティ・エンジンは、その失敗の知らせをルール・マネージャに返す。あるいは、ルール・マネージャは、セキュリティ・エンジンからの応答に制限時間を課すことができる。その制限時間内に、新しいルールの使用を開始する準備が整ったことを知らせる応答を、すべてのセキュリティ・エンジンがしない場合、ルール・マネージャは、1つまたは複数のセキュリティ・エンジンが新しいルールの処理に失敗したと見なすことができる。
ルール・マネージャは、1つまたは複数のセキュリティ・エンジンが新しいルールの処理に失敗したことを識別した場合には、どのセキュリティ・エンジンにも新しいルールの使用開始を指示しない。逆に、ルール・マネージャは、新しいルールへの切替えを中止するよう指示を送る(このことをロール・バックと呼ぶ場合もある)。その中止またはロール・バックの指示は、各セキュリティ・エンジンに対し、ルール・セット・ジェネレータから受け取った新しいルールおよびその処理の結果であるすべての新しいルールを無視し、現在のルールを使用し続けるよう伝える。特定の実施形態では、セキュリティ・エンジンが、そのような中止またはロール・バックの指示に応答して、生成した(または生成しつつある)新しいルールを安全に削除できる。
特定の実施形態では、各セキュリティ・エンジンは、新しいルールの使用を開始できることがほぼ確実になってから、新しいルールの使用を開始する準備が整ったことをルール・マネージャに伝える。言い換えると、セキュリティ・エンジンは、新しいルールの執行を開始するよう指示されたときに新しいルールの執行開始に失敗することはほぼありえないという、新しいルールの処理上のポイントにセキュリティ・エンジンがなるまで、ルール・マネージャに対して、新しいルールの使用を開始する準備が整ったことを伝えることを待つ。特定の実施形態では、これは、新しいルール・セットを生成し、使用するいずれかのルール・セット(古いルールか新しいルール)にポインタを保持するセキュリティ・エンジンによって達成される。セキュリティ・エンジンは、新しいルール・セットを生成した後、ルール・マネージャに対し、新しいルール・セットの使用を開始する準備が整ったことを伝える。その後、新しいルール・セットの使用を開始するよう指示されると、セキュリティ・エンジンは、単にそのポインタを古いルール・セットから新しいルール・セットに切り替えるだけでよい。セキュリティ・エンジンは、ほぼ確実に、セキュリティ・エンジンが、そのポインタを切り替えて新しいルールの使用を開始することができる、ことを保証する。「ほぼ確実」とは、失敗は絶対ありえないという100%の保証を求めるものではないことを理解されたい。「ほぼ確実」であっても失敗につながる特定の状況が発生する可能性はある(たとえば、ポインタの切替えを妨げる停電やウィルス攻撃など)。しかしながら、そうした失敗の可能性が非常に小さいことも理解されたい。
ルール・マネージャは、様々な異なる方法のうちの任意の方法で、セキュリティ・エンジンに対し、新しいルール・セットの使用を開始する(「新しいルール・セットに切り替える」とも言う)よう指示できる。ただし、使用する方法は、すべてのセキュリティ・エンジンがほぼ同時に(本願明細書では「ほぼ平行して」とも言う)新しいルール・セットの使用を開始できるように、すべてのセキュリティ・エンジンにほぼ同時に通知するよう動作しなければならない。すべてのセキュリティ・エンジンに、ほぼ同時に新しいルール・セットの使用を開始させることにより、ルールの切替えに起因するホスト・コンピュータの脆弱性は軽減される。一般に、各セキュリティ・エンジンがそれぞれの新しいルール・セットの使用を開始するタイミングが近接するほど、新しいルール・セットへの切替え中の脆弱性は小さくなる。ルール・マネージャが複数のセキュリティ・エンジンに対してほぼ同時に、新しいルール・セットの使用を開始するよう指示を出す方法の、いくつかの例を以下に挙げる。
ルール・マネージャが複数のセキュリティ・エンジンに対して新しいルール・セットの使用を開始するよう指示を出す方法の1つは、すべてのセキュリティ・エンジンに対して一度に発行できるイベント・オブジェクトを使用する方法である。たとえば、各セキュリティ・エンジンは、ルール・セット・ジェネレータから新しいルールを受け取った後、(ホスト・コンピュータを保護している通常の動作中に)ルールがアクセスされるたびに特定イベントのポーリングを開始する内部フラグを立てる。そこで、ルール・マネージャは、セキュリティ・エンジンに対し、(セキュリティ・エンジンがポーリングしているのと同じ)イベントを発行することにより、新しいルール・セットの使用を開始するよう指示できる。したがって、そのイベントが発行された後に行われるポーリングによって必ず、イベントが発行されていることが検出され、それによって、ポーリングをしているセキュリティ・エンジンに、新しいルール・セットを使用すべきであることが伝えられる。たとえば、発行されているイベントの検出に応答して、セキュリティ・エンジン内のポインタを、新しいルール・セットをポイントするよう切り替えることができる。
イベントをポーリングするほかに、イベントに対して待機するスレッドをセキュリティ・エンジンで実行することもできる。イベントが発行されると、このスレッドが発行を検出し、それによってセキュリティ・エンジンに、新しいルール・セットを使用すべきであることが伝えられる。たとえば、イベントが発行されていることを検出したスレッドに応答して、セキュリティ・エンジン内のポインタを、新しいルール・セットをポイントするよう切り替えることができる。
イベントが発行され、新しいルール・セットが使用されると、セキュリティ・エンジンはイベントのポーリングを終了できる。また、イベントに対して待機するスレッドをセキュリティ・エンジンが実行していれば、そのスレッドを終了させることができる。
ルール・マネージャが複数のセキュリティ・エンジンに対して新しいルール・セットの使用を開始するよう指示する別の方法は、各セキュリティ・エンジンによって公開(expose)されている関数(たとえば、「switch(切替え)」関数)を呼び出す方法である。セキュリティ・エンジンのそのような関数を呼び出すことが、そのセキュリティ・エンジンに対し、新しいルール・セットの使用を開始するよう指示することになる。たとえば、セキュリティ・エンジンに対して呼び出されているそのような関数に応答して、セキュリティ・エンジンはそのポインタを、新しいルール・セットをポイントするよう切り替える。
ルール・マネージャが複数のセキュリティ・エンジンに対して新しいルール・セットの使用を開始するよう指示する別の方法は、各セキュリティ・エンジンがアクセスできる共有データ構造を各セキュリティ・エンジンに通知する方法である。ルール・マネージャは、たとえば、各セキュリティ・エンジンに対して関数(たとえば、「identify data structure(データ構造識別)」関数)を呼び出したり、新しいルールがセキュリティ・エンジンに渡される際に共有データ構造を特定したりすることによって、様々なタイミングで各セキュリティ・エンジンに共有データ構造を知らせることができる。共有データ構造は、様々な異なる形式の中から任意の形式をとることができる。それらの形式には、メモリ内(たとえば、RAM(ランダム・アクセス・メモリ)内やフラッシュ・メモリなどの不揮発性メモリ内)のロケーションや、ローカルまたはリモート・ストレージ装置に格納されたファイル、などがある。
各セキュリティ・エンジンは、(たとえば、(ホスト・コンピュータを保護している通常の動作中に)ルールがアクセスされるたびに)この共有データ構造をチェックしてその値を求める。ルール・マネージャは、共有データ構造に格納される値を変えることにより、各セキュリティ・エンジンに対し、新しいルール・セットの使用を開始するよう指示できる。たとえば、共有データ構造は、最初に、値「previous(前)」または値0を格納して、現在のルール・セットを使用すべきであると示すことができ、新しいルール・セットの使用を開始するよう切り替えるタイミングになると、ルール・マネージャが共有データ構造に値「new(新)」または値「switch(切替え)」または値1を書き込んで、新しいルール・セットを使用すべきであることを指示することができる。
前述したように、ダイナミック・ルール・データ・ストアは、セキュリティ・エンジンによって執行されている各種ルールに関連付けられたデータを格納する。したがって、ホスト・コンピュータが新しいポリシーの執行を開始するよう更新されると、セキュリティ・エンジンで使用されるデータも変化する可能性がある。このデータは、ホスト・コンピュータの動作中も変化する可能性がある(たとえば、後からセキュリティ・エンジンがダイナミック・ルール・データ・ストアにデータを要求したり、ダイナミック・ルール・データ・ストアにデータを格納したりする可能性がある)。適切なデータがセキュリティ・エンジンに対して使用可能になるようにするために、ダイナミック・ルール・データ・ストアは、セキュリティ・ポリシーの更新時に、セキュリティ・エンジンと同様に動作することができる。すなわち、2つのルール・セット・データが保持され、1つのセットが切替え前に使用され、もう1つのセットが切替え後に使用される。その新しいほうのデータがダイナミック・ルール・データ・ストアに格納され、ダイナミック・ルール・データ・ストアは、新しいデータ・セットの使用を開始する準備が整ったときにルール・マネージャに通知を返す。そしてダイナミック・ルール・データ・ストアは、新しいデータ・セットの使用を開始するようルール・マネージャから指示を受けるまで、前のデータ・セットを使用し続ける。
ホスト・コンピュータ内の各種コンポーネントを、ホスト・コンピュータ上で実行される同じアプリケーション・プロセス内に実装できることに注目されたい。たとえば、ポリシー・リーダー、ルール・マネージャ、ダイナミック・ルール・データ、ルール・セット・ジェネレータおよびセキュリティ・エンジンをすべて、同じアプリケーション・プロセスに含めることができる。
あるいは、ホスト・コンピュータ内の異なるコンポーネントを、ホスト・コンピュータ上で実行される2つ以上のアプリケーション・プロセスに分けて実装することができる。たとえば、1つまたは複数のセキュリティ・エンジンを、他のセキュリティ・エンジンとも、ポリシー・リーダー、ルール・マネージャ、ダイナミック・ルール・データおよびルール・セット・ジェネレータとも別のプロセスで動作させることができる。異なるコンポーネントが異なるアプリケーション・プロセスで動作できるようにすると、たとえば、ホスト・コンピュータのセキュリティを強化するために、異なる開発者が異なるプラグイン・コンポーネント(たとえば、異なるプラグイン・セキュリティ・エンジン)を設計できるようになる。これらの追加プラグイン・コンポーネントは、他の非プラグイン・コンポーネントと同様に新しいポリシーを執行するようアップグレードされる。
複数のコンポーネントを複数のアプリケーション・プロセスに分ける場合、それらの各種コンポーネントが互いに通信できるようにするメカニズムが使用される。このような通信により、たとえば、新しいルール・セットとデータを異なる複数のプロセスにあるセキュリティ・エンジンに渡すことができ、データを異なる複数のプロセスにあるセキュリティ・エンジンからダイナミック・ルール・データに渡すことができ、新しいルール・セットの使用を開始させる指示を異なる複数のプロセスにあるセキュリティ・エンジンに渡すことができる。一例として、本願明細書で説明するコンポーネントは、COM(コンポーネント・オブジェクト・モデル)コンポーネントとして実装できる。COMアーキテクチャに関する詳細は、Microsoft Corporation of Redmond、Washingtonから入手できる。
本願明細書の説明では、各セキュリティ・エンジンは、新しいルール・セットの使用開始をルール・マネージャから指示されることに注意されたい。そうしない場合でも、各セキュリティ・エンジンが実質的に同時に新しいルール・セットの使用を開始することを可能にする別の方法で、この指示を実現することが可能である。たとえば、ルール・マネージャを使用せずに、各セキュリティ・エンジンに新しいルール・セットの使用を開始するよう指示する制御メカニズムを、各種セキュリティ・エンジンのすべてに配布することができる。これを達成する方法として、たとえば、各セキュリティ・エンジンが、新しいルール・セットの使用を開始する準備が整ったことを他の各セキュリティ・エンジンに通知することとし、すべてのセキュリティ・エンジンが、新しいルール・セットの使用を開始する準備が整ったことを他のすべてのセキュリティ・エンジンに通知しない限り、どのセキュリティ・エンジンも新しいルール・セットの使用を開始しないとすることが考えられる。
図7は、セキュリティ・ポリシーを更新するプロセス700の一例を示すフローチャートである。プロセス700は、ホスト・コンピュータ上でセキュリティ・ポリシーの更新を調整しているコンポーネント、本願明細書で説明しているルール・マネージャなど、によって実装される。プロセス700は、ソフトウェア、ハードウェア、ファームウェアまたはこれらの組合せで実行できる。
最初に、装置上で執行されるべき新しいポリシーを取得する(ブロック702)。ポリシーは「プル(pull)」方式で取得でき、この方式では、ホスト・コンピュータが新しいポリシーのソースにアクセスを開始し、新しいポリシーがそのソースから使用可能になっているかどうかをチェックする。また、ポリシーは「プッシュ(push)」方式でも取得でき、この方式では、新しいセキュリティ・ポリシーが使用可能であることについて、または新しいセキュリティ・ポリシーそのものについて(たとえば、メッセージあるいは他のインジケーションが)ホスト・コンピュータに通知される。
新しいポリシーをどのような方法で取得したかにかかわらず、いったん新しいポリシーを取得すると、その新しいポリシーに対する新しいルール・セットおよび/またはそのルールに関連付けられたデータを、各セキュリティ装置に提供する(ブロック704)。前述したように、各セキュリティ・エンジンに対して、新しいポリシーに基づく別々のルール・セットおよび/またはデータが生成されることになる。
次に、セキュリティ・エンジンから戻り値を受け取る(ブロック706)。特定の実施態様では、各セキュリティ・エンジンは、プロセス700を実装しているコンポーネントに対して、「成功」を意味する値か、「失敗」を意味する値を返す。セキュリティ・エンジンが「成功」を意味する値を返した場合は、セキュリティ・エンジンが、受け取ったルール・セットおよび/またはデータの処理を完了し、その新しいルール・セットおよび/またはデータの使用を開始する準備が整ったことを表す。このことは、セキュリティ・エンジンが新しいルール・セットおよび/またはデータを実装する準備が整ったと言うこともできる。この後は、たとえば、セキュリティ・エンジンがポインタを、前のルール・セットではなく新しいルール・セットをポイントするよう切り替えるだけである。一方、セキュリティ・エンジンが「失敗」を意味する値を返した場合は、セキュリティ・エンジンが、受け取ったルール・セットおよび/またはデータを処理できなかった(または、しなかった)ため、セキュリティ・エンジンは新しいルール・セットおよび/またはデータの使用を開始することができないということになる。さらに、前述したように、セキュリティ・エンジンからの応答に制限時間(タイム・アウト値または時間しきい値とも言う)を課すことができる。この制限時間内にセキュリティ・エンジンが「成功」または「失敗」を意味する値で応答しない場合、プロセス700を実装しているコンポーネントは、そのセキュリティ・エンジンを、「失敗」を意味する値を返したものとして扱う。
ルールを送ることと応答を受け取ること(ブロック704および706)は非同期プロセスであることを理解されたい。異なるセキュリティ・エンジンは、受け取ったルールおよび/またはデータの処理に要する時間も異なる場合があり、プロセス700は単純に、すべてのセキュリティ・エンジンがそれぞれの処理を終了するのを待つ(制限時間が課されている任意の時間まで待つ)。
プロセス700は、すべてのセキュリティ・エンジンが「成功(OK)」を意味する値を返したかどうかに基づいて先に進められる(ブロック708)。すべてのセキュリティ・エンジンが「成功」を意味する値を返した場合は、すべてのセキュリティ・エンジンが、新しいルール・セットの使用を開始する準備を整えており、したがって、すべてのセキュリティ・エンジンに、新しいルール・セットの使用を開始するよう指示する(ブロック710)。
一方、少なくとも1つのセキュリティ・エンジンが「成功」を意味する値を返さない場合は、各セキュリティ・エンジンに対してロール・バック呼出しを発行する(ブロック712)。このロール・バック呼出しは基本的に更新プロセスを中止させるので、どのセキュリティ・エンジンも(「成功」を意味する値を返したセキュリティ・エンジンであっても)、新しいルール・セットの使用を、依然として開始しないことになる。
図8は、セキュリティ・ポリシーを更新するプロセス800の別の例を示すフローチャートである。プロセス800は、装置上のセキュリティ・エンジン、図1のホスト・コンピュータ102上のセキュリティ・エンジン114〜118など、によって実装される。プロセス800は、ソフトウェア、ハードウェア、ファームウェアまたはこれらの組合せで実行できる。
最初に、執行されるべき新しいポリシーの新しいルール・セットおよび/またはデータを受け取る(ブロック802)。前述したように、これらのルールおよびデータは、ほぼ同時に受け取ることができ、あるいは、セキュリティ・エンジンが必要に応じてデータ・ストア(たとえば、本願明細書で説明しているダイナミック・ルール・データ・ストア)からデータを取得できる。次に、これらの新しいルールおよび/またはデータを処理する(ブロック804)。新しいルールおよび/またはデータを処理することは、新しいセキュリティ・ポリシーの執行時にセキュリティ・エンジンが従う内部ルール・セットを(たとえば、そのセキュリティ・エンジンの内部フォーマットで)作成する。
プロセス800は、ルールの処理が成功したかどうかに基づいて先に進められる(ブロック806)。セキュリティ・エンジンが、受け取ったルール・セットおよび/またはデータの処理を終了し、新しいルール・セットおよび/またはデータの使用を開始する準備を整えた場合は(たとえば、この後はセキュリティ・エンジンがポインタを、前のルール・セットではなく新しいルール・セットをポイントするよう切り替えるだけであれば)、処理は成功したことになる。そうでない場合は、処理が成功しなかったことになる。処理が成功した場合は、「成功」を意味する値が返される(ブロック808)。一方、処理が成功しなかった場合は、「失敗」を意味する値が返される(ブロック810)。ブロック808および810の戻り値は、ホスト・コンピュータ上でセキュリティ・ポリシーの更新を調整しているコンポーネント(たとえば、本願明細書で説明しているルール・マネージャ)に返される。
戻り値に関係なく、セキュリティ・エンジンは、ロール・バックを指示されるか、新しいルールの使用開始を指示されるまで、前の(古い)ルール・セットを使用し続ける(ブロック812)。新しいルールの使用を開始するよう指示された場合、セキュリティ・エンジンは、たとえば、ポインタを前のルール・セットから新しいルール・セットに切り替えることによって、新しいルールおよび/またはデータの使用を開始する(ブロック814)。新しいルールの使用開始の指示は、前述したように、セキュリティ・エンジンが、様々な方法のうちの任意の方法で取得できる。
一方、ロール・バックを指示された場合、セキュリティ・エンジンは、新しいルールおよび/またはデータを処理した結果をすべて破棄する(ブロック816)。この破棄は、セキュリティ・エンジンが、受け取った新しいルール・セットの処理を終了しているかどうかにかかわらず、実行できる。
したがって、図8からわかるように、セキュリティ・エンジンは、新しいルールに切り替える指示を受け取るまで、前のルール・セットを使用し続ける。そのような指示を受け取るまでに、セキュリティ・エンジンは新しいルールの使用を開始する準備を整えており、切替えにはほとんど時間を要しない。たとえば、セキュリティ・エンジンは、単にポインタを、前のルール・セットではなく新しいルール・セットをポイントするよう切り替えるだけでよい。
アプリケーション・プログラム・インターフェース(API)
図1を参照して前述したAPI124などのAPIは、ホスト・コンピュータ内の各種コンポーネントおよびプログラム(たとえば、セキュリティ・エンジン)の間でセキュリティ・ポリシーやイベント情報を伝達し合うことを可能にする。一実施形態では、APIは、COM(コンポーネント・オブジェクト・モデル)を使用して定義される。APIは、セキュリティ・エンジンをロードおよびアンロードしたり、セキュリティ・ポリシーをセキュリティ・エンジンに送付したり、セキュリティ・ポリシー・データの変更内容を当該セキュリティ・エンジンに伝達したり、ポリシーで指定される特定の動作を許可または拒否する意志決定時にホスト・ユーザーがセキュリティ・エンジンと対話することを可能にしたり、セキュリティ・エンジンの集中構成管理を行ったり、するメソッドをサポートする。
本願明細書で説明するシステムと手順(procedures)は、個々のコンピューティング・システムやコンピューティング・システムのグループをセキュリティ・ポリシーの対象にすることによって、コンピューティング・システムのセキュリティを集中管理することを可能にするものである。また、これらのシステムと方法は、それらのコンピューティング・システムや他のデータ・ソースによって生成されるイベントや他の情報(セキュリティ関連イベントなど)を収集し、相互に関係付ける。
一実施形態では、本インターフェースは、認証された安全なプロトコルによって、セキュリティ・ポリシーやイベント・データベースへのクライアント・アクセスをサポートする。本インターフェースは、各種コンポーネント間の通信、またはアプリケーション・プログラムと1つまたは複数のセキュリティ・エンジンの間の通信、を可能にする。さらに本インターフェースは、セキュリティ・エンジン同士が通信したり、セキュリティ・エンジンと他の装置、コンポーネント、サービスまたはプログラムが通信したりする方法を定義する。
一実施形態では、本インターフェースは、カスタム・ローダを使用して、攻撃者がCOMレジストリ値を変更してセキュリティ・エンジンを攻撃者自身のコードと取り替える可能性を減らす、COMインターフェースとして定義される。
一実施例では、本APIでサポートされる関数呼出しは次のとおりである。
エージェントからセキュリティ・エンジンへの関数呼出し(Agent-to-Security Engine Function Calls)
・Initialize
・Shutdown
・PreparePolicy
・CommitPolicy
・RollbackPolicy
・WriteData
・WriteConfig
これら7つの関数呼出しを「ISecurityEngineインターフェース」と呼ぶ。
セキュリティ・エンジンからエージェントへの関数呼出し(Security Engine-to-Agent Function Calls)
・ReadAndRegisterNotifyData
・WriteSEData
・UnRegisterNotifyData
・GetDataAttribute
・ReadAndRegisterNotifyConfig
・UnRegisterNotifyConfig
・QueryUser
・Complete
上記の最初の7つの関数呼出しを「ISecurityAgentインターフェース」と呼び、最後の関数呼出し(Complete)を「IAgentCallbackインターフェース」と呼ぶ。
関数呼出しは、「呼出し」、「メソッド」、「関数」または「サービス」とも呼ばれる。これらの関数呼出しの詳細については、後述する。代替実施形態では、追加の関数呼出しを使用したり、かつ/または本願明細書で説明する関数呼出しの1つまたは複数を省いたりできる。
一実施形態では、イベント・マネージャやセキュリティ・エージェントなどのエージェントがAPIを介してセキュリティ・エンジンと通信する。エージェントは、「マネージャ」とも呼ばれる。特定の実施形態では、未処理のままになっているAPI呼出しがある場合、エージェントは特定のセキュリティ・エンジンを呼び出さない。非同期のAPI呼出しについては、このルールに例外がある。これらの場合、許可されるエージェントアクションは、後述の状態テーブルで定義される。
Initialize関数呼出し(Initialize Function Call)
このメソッドは、エージェントに知られているセキュリティ・エンジンごとに1回ずつ呼び出される。このメソッドは、エージェントの起動中に呼び出される。Initialize関数呼出しは、セキュリティ・エンジンをロードし、そのセキュリティ・エンジンが初期化動作を実行することを可能にする。
このメソッドは、エージェントによってセキュリティ・エンジンごとに次々に非同期に呼び出され、コール・バックは受け取られた際に処理される。エージェントは、すべてのコール・バックが完了するまで待機してから、先に進む。
このメソッドは次のように定義される。
HRESULT Initialize(
[in] ISecurityAgent *pAgent,
[in] IAgentCallback *pCallback);
pAgentは、セキュリティ・エンジンがエージェントにコール・バックするために使用できるCOMインターフェースである。
pCallbackは、後で定義するコール・バック・オブジェクトである。
Initialize関数呼出しが失敗したか、所定時間内に戻らなかった場合は、Shutdownが呼び出されることになる。予想される競合条件のために、セキュリティ・エンジンは、Initializeが戻る前にShutdown処理を行う。
Shutdown関数呼出し(Shutdown Function Call)
このメソッドは、エージェントによって初期化(Initialize)するために呼び出されたセキュリティ・エンジンごとに1回ずつ呼び出される。このメソッドは、セキュリティ・エンジンが自らのシャット・ダウン処理を開始するのを可能にする。Initializeが失敗した場合でも、エージェントはShutdownを呼び出して、セキュリティ・エンジンが、割り当てられていたすべてのリソースを閉じることを可能にする。たとえば、このメソッドは、DLL_PROCESS_DETACH処理中には実行できない複雑なシャット・ダウンをセキュリティ・エンジンが実行することを可能にする。
このメソッドは、完了までかなりの時間を要することがあるので、シャット・ダウン処理が完了したことを、コール・バック・オブジェクトを使用して知らせる。このメソッドがイン・プロセス・システムのシャット・ダウンの結果として呼び出された場合は、処理を完了するために使用できる時間が限られ、コール・バックが完了する前にシステムがエージェントを強制終了する場合がある。
このメソッドは次のように定義される。
typedef enum tagSHUTDOWN_TYPE
{
SHUTDOWN_NORMAL=0,
SHUTDOWN_SYSTEM
} SHUTDOWN_TYPE;

HRESULT Shutdown(
[in] SHUTDOWN_TYPE eType,
[in] IAgentCallback *pCallback);
eTypeは、SHUTDOWN_NORMALまたはSHUTDOWN_SYSTEMの列挙型である。
pCallbackは、後で定義するコール・バック・オブジェクトである。
DLL Unloadは、Shutdownコール・バックが行われた後(またはタイム・アウトが発生した後)に発生することになる。コール・バックは非同期に行うことができるので、エージェントは、セキュリティ・エンジンDLLのアンロードに進む前に、コール・バックを行ったスレッドが終了するまで、待機せざるを得ない場合がある。これにより、コール・バック・スタック・フレームは、アンロードされることになるDLLの外側のポイントまでアンワインド(unwind)でき、プロセス内の例外を回避できる。コール・バックがShutdown呼出し中に行われた場合は、セキュリティ・エンジン・スレッドがシャット・ダウンされると見なされるので、この余分なステップは不要になる。
エラーは動作中のイベントとしてログ記録されるが、エラー以外は無視される。これは、エージェント(Agent)がまさにクローズ・ダウンされかかっているためである。
PreparePolicy関数呼出し(PreparePolicy Function Call)
このメソッドは、エージェントが更新されたポリシーを受け取ったときに、エージェントによって呼び出される。その結果としてポリシーがマージされ、各RuleSetが作成されて正しいセキュリティ・エンジンに渡される。XMLデータはIStreamオブジェクトとして渡される。IStreamオブジェクトは、MSXML(Microsoft XML)(DOM(Document Object Model)またはSAX(Simple API for XML))がXMLデータを読み取るために使用できる。このメソッドは次のように定義される。
HRESULT PreparePolicy(
[in] IStream *pstreamRuleset,
[in] IAgentCallback *pCallback);
pstreamRulesetは、XML Rule Setの読み取りを可能にするStreamオブジェクトに対するCOMインターフェースである。このIStreamは、マシンに対してローカルであり、ネットワークを介してアクセスするデータではない、と見なすことができる。
pCallbackは、後で定義するコール・バック・オブジェクトである。
この呼出しがエラーを返した場合、セキュリティ・エンジンは、前に適用したポリシー(ブート時のポリシーの可能性がある)の実行を続けると見なされる。エージェントは、PreparePolicyが成功しているすべてのセキュリティ・エンジンに対してRollbackPolicyを呼び出すが、失敗しているセキュリティ・エンジンに対しては呼び出さない。このプロセスは、いずれかのセキュリティ・エンジンがエラーを返すと、ただちに開始される。さらに、PreparePolicyコール・バックが所定時間内に到達しない場合、エージェントはこれをそのセキュリティ・エンジンの一部の障害として扱う。したがって、セキュリティ・エンジンは、PreparePolicy呼出しが返される前にエージェントがRollbackPolicyを呼び出す可能性があることを想定している。
CommitPolicy関数呼出し(CommitPolicy Function Call)
このメソッドは、PreparePolicy呼出しに対してすべてのセキュリティ・エンジンが成功を返したときに、エージェントによって呼び出される。この呼出しにより、セキュリティ・エンジンは新しいポリシーに切り替わる。このメソッドは次のように定義される。
HRESULT CommitPolicy(void);
この呼出しは同期的であり、エージェントは、1つの呼出しが完了してから次の呼出しを行う。一実施形態では、ポリシーの更新に失敗する可能性のある操作はすべてPreparePolicy呼出しで実行されるており、CommitPolicy呼出しは古いポリシーデータ構造から新しいポリシーデータ構造への単純な切替えである、との前提条件がある。
CommitPolicyメソッドは、セキュリティ・エンジンのUser部分とKernel部分の間の通信障害などのような、破局的な障害を返す。万一この呼出しがエラーを返した場合、エージェントは前のポリシーをリロードして再適用しようと試みる。エラーが存在しているため、この試みは機能しない可能性があり、ポリシーの執行は不明の状態で放置されることになる。CommitPolicyが失敗した場合の動作中のエラーは、エージェントによってログ記録されることになる。
RollbackPolicy関数呼出し(RollbackPolicy Function Call)
このメソッドは、セキュリティ・エンジンがそのPreparePolicy呼出しに対してエラーを返した場合に、エージェントによって呼び出される。この呼出しは、エージェントが、更新を中止して、実施中のポリシーに復帰するように他のすべてのセキュリティ・エンジンに対して指示することを引き起こす。このメソッドは次のように定義される。
HRESULT RollbackPolicy(void);
この呼出しは、セキュリティ・エンジンでの予想されるロール・バック処理が、大量であり、PreparePolicyの処理のほぼミラーリングであるという理由で、非同期である。セキュリティ・エンジンは、この呼出しの処理を完了すると、Completeを呼び出して、ロール・バックのステータスを知らせる。
ポリシーがロール・バックされると、PreparePolicyに従って登録されていたデータがすべて、エージェントによって登録解除され、システムは、各セキュリティ・エンジンが登録していた前のデータ・セットにロール・バックされる。この理由から、セキュリティ・エンジンは、エージェントからCommitPolicy呼出しを受け取るまで、不要になるデータのローカル・コピーを破棄しない。エージェントは、ポリシーのロール・バック中にセキュリティ・エンジンからのReadAndRegisterData呼出しが到着するタイミング・ウインドウ(時間窓)を管理する役割がある。
RollbackPolicyとCompleteコール・バックは、破局的な障害を返す場合がある。セキュリティ・エンジンは、ロール・バックがサポートされるようなPreparePolicyを実装することが求められる。RollbackPolicyが失敗した場合は、動作中のエラーがエージェントによってログ記録される。これが発生した後の、そのセキュリティ・エンジンおよび協力しているセキュリティ・エンジンによるポリシーの執行の状態については、何の想定もできない。その後の更新されたポリシーは、そのセキュリティ・エンジンに送られ続けることになる。
WriteData関数呼出し(WriteData Function Call)
このメソッドは、セキュリティ・エンジンが以前にReadAndRegisterNotifyDataを呼び出した対象のデータの一片が変化したときに、エージェントによって呼び出される。パラメータは、メモリの所有権がエージェントに属することを除き、ReadAndRegisterNotifyData呼出しとほぼ同じであるので、セキュリティ・エンジンは、いったん処理されたアイテムを削除してはならない。
セキュリティ・エンジンがエージェントから新しいポリシーを受け取る処理の間、たとえば、PreparePolicy呼出しと、CommitPolicy呼出しまたはRollbackPolicy呼出しとの間)は、WriteDataは呼び出されない。このときにエージェントが検出したデータ変更は、新しいポリシーがコミットまたはロール・バックされたときに、一括処理されて、当該セキュリティ・エンジンに送られる。保留中の更新のキューは、同じデータ片に対して複数の変更を連続して伝達することをできるだけ避けるよう、エージェントによって最適化される。WriteDataメソッドは次のように定義される。
#define DF_DYNAMIC 0x1
#define DF_COLLECTION 0x2
#define DF_BOOLEAN 0x4
#define DF PERSISTED 0x8

HRESULT WriteData(
[in] REFGUID guidDataID,
[in] DWORD dwFlags,
[in] DWORD dwDataSize,
[in] VARIANT varData,
[in] DWORD dwKeySize,
[in] byte *pbKeyValue);
キー(Key)を渡すためのパラメータ(dwKeySize、pbKeyValue)は、前のクエリに関連付けられたコンテクストをセキュリティ・エンジンに戻すときに使用される。セキュリティ・エンジンは、このコンテクストを使用して、クエリの結果と、エージェントに対して発行した、前のQueryUser呼出しとを相互に関連付ける。この追加データが必要なのは、同じルール内の異なるコンテクストに対して特定のクエリが複合的に発生する場合があるからである(たとえば、アプリケーションXがレジストリ値の変更を許容するかどうかをユーザーに尋ねた後、アプリケーションYについて同じ質問をする場合がある)。
エラーはOperational Eventsとしてログ記録されるが、それ以外は無視される。同じデータ片に対するその後の更新は、失敗しているセキュリティ・エンジンにも引き続き通知されることになる。セキュリティ・エンジンは、これを防ぎたい場合、そのデータ片に対してUnRegisterNotifyDataを呼び出すことができる。
WriteConfig関数呼出し(WriteConfig Function Call)
このメソッドは、エージェントが構成データを当該セキュリティ・エンジンに配布することを可能にする。セキュリティ・エンジンがReadAndRegisterNotifyConfigメソッドを使用して構成データを読み取ると、このメソッドを呼び出しているエージェントがそのデータに対する変更をセキュリティ・エンジンに知らせる。このメソッドは次のように定義される。
HRESULT WriteConfig(
[in] WCHAR *wszDataName,
[in] VARIANT varData);
wszDataNameは、書き込まれる構成データ・アイテムのテキスト(Text)名であり、このデータのレジストリで使用される名前である。
varDataは、その名前で表される単一データ・アイテムを格納するバリアント構造である。このデータは、レジストリにあるそのデータの型に応じて、様々なデータ型になる。エージェントではデータ型をチェックしないが、セキュリティ・エンジンでは、データ型が必要なので、コンテクストに従ってデータ型をチェックすることが求められる。
エラーはOperational Eventsとしてログ記録されるが、それ以外は無視される。同じ構成パラメータデータに対するその後の更新は、失敗しているセキュリティ・エンジンにも引き続き通知されることになる。セキュリティ・エンジンは、これを防ぎたい場合、そのデータ片に対してUnRegisterNotifyConfigを呼び出さなければならない。
エージェントからのAPI呼出しが未処理のままになっている間は、特定のセキュリティ・エンジンがそのエージェントを呼び出すことはあまりない。エージェントはこれをエラーとして扱い、2つ目の呼出しを無視する。
ReadAndRegisterNotifyData関数呼出し(ReadAndRegisterNotifyData Function Call)
このメソッドは、セキュリティ・エンジンが、ルールの処理で使用するために、ダイナミック・ルール・データ・サブシステムからデータを読み取ることを可能にする。いったんセキュリティ・エンジンがそのデータを読み取ると、そのデータに対する変更は、エージェントが、ISecurityEngineインターフェースのWriteDataメソッドを呼び出して、セキュリティ・エンジンに通知する。このメソッドは次のように定義される。
HRESULT ReadAndRegisterNotifyData(
[in] REFGUID guidDataID,
[out] DWORD *pdwFlags,
[out] DWORD *pdwDataSize,
[out] VARIANT *pvarData);
guidDataIDは、取得するデータ・アイテムのGUIDである。
pdwFlagsは、データ・アイテムを説明するフラグ・セットである。値の例として、DYNAMICまたはSTATIC、ならびにCOLLECTIONまたはBOOLEANなどがある。
pdwDataSizeは、バリアント・データで返される配列にあるデータ・アイテム(Data Items)の全体サイズである。
pvarDataは、データ・アイテムの配列への参照か、Booleanデータ型のデータ・アイテム値、を格納するバリアント構造である。バリアントは入力では空である。
もはやポリシー内にはないデータをセキュリティ・エンジンが要求するとエラーになる。エージェントは、あらゆるエラーに対してOperational Eventを生成する。この場合、影響を受けるデータがセキュリティ・エンジンとエージェントとで矛盾のない表示(view)になっているという保証はない。
WriteSEData関数呼出し(WriteSEData Function Call)
このメソッドは、(存続のため、または他のセキュリティ・エンジンが使用するために)セキュリティ・エンジンが所有し、公開しているデータの一片が変化したときに、セキュリティ・エンジンによって呼び出される。パラメータは、メモリの所有権がセキュリティ・エンジンに属することを除き、WriteData呼出しとほぼ同じであるので、エージェントは、いったん処理されたアイテムを削除してはならない。このメソッドは次のように定義される。
HRESULT WriteSEData(
[in] REFGUID guidDataID,
[in] DWORD dwDataSize,
[in] VARIANT varData);
このメソッドは、いずれかのスレッドで別のWriteSEData呼出しが未処理のままである間も含めて、いつでも呼び出すことができる。必要に応じてシリアル化(serialization)を保証するのはエージェントの役割である。
データ・アイテムの所有者は、コレクション定義内で、所有者を定義するGUIDによって識別される。これは、セキュリティ・エンジンのGUID、エージェントの識別子のGUID、あるいは別のコンシューマの識別子のGUIDである可能性がある。
セキュリティ・エンジンがその所有するコレクションを定義する場合、データはこのAPIを介してエージェントに公開されると見なされる。
エージェントはあらゆるエラーをOperational Eventとしてログ記録する。セキュリティ・エンジンは、エラーがあった後も更新の提供を続けるかどうかを決定できる。エラーがあった後は、そのデータのエージェント側のバージョンとセキュリティ・エンジン側の表示(view)とに矛盾がないという保証はない。
UnRegisterNotifyData関数呼出し(UnRegisterNotifyData Function Call)
このメソッドは、セキュリティ・エンジンが、関係のなくなったデータ・アイテムに関するWriteData通知の受取を中止することを可能にする。このメソッドは次のように定義される。
HRESULT UnRegisterNotifyData(
[in] REFGUID guidDataID);
guidDataIDは、セキュリティ・エンジンにとって関係がなくなった変更通知の対象であるデータ・アイテムを識別するGUIDである。セキュリティ・エンジンは、ヌルGUID{00000000−0000−0000−000000000000}を渡すことによって、現在の通知をすべて登録解除する意志を示すことができる。
エージェントはあらゆるエラーをOperational Eventとしてログ記録する。これには、データがエージェントに認識されていないケースが含まれ、ポリシー管理のトラブルの診断に役立つ。
GetDataAttribute関数呼出し(GetDataAttribute Function Call)
このメソッドは、セキュリティ・エンジンが、データ・アイテムに関連付けられた特定の属性を取得することを可能にする。属性名は、テキストの場合も含め、Policy XMLにある名前と同じである。属性値は、ポリシーが変更された場合のみ変更される可能性があるので、このデータについては、通知システムは不要である。このメソッドは次のように定義される。
HRESULT GetDataAttribute(
[in] REFGUID guidDataID,
[in] WCHAR *wszAttributeName,
[out] VARIANT *pvarAttributeValue);
このメソッドはいつでも呼び出すことができる。
guidDataIDは、属性を取得するデータ・アイテムを識別するGUIDである。
wszAttributeNameは、属性の名前であり、ポリシー・ドキュメント内にあるとおりである。
pvarAttributeValueは、バリアント(Variant)としての属性値である。通常の出力パラメータ割当てルールが適用される。エージェントは、新しいバリアント(Variant)に情報を割り当てる。これを後で解放するのは呼出し側の役割である。
ReadAndRegisterNotifyConfig関数呼出し(ReadAndRegisterNotifyConfig Function Call)
このメソッドは、セキュリティ・エンジンがエージェントから構成データを読み取るのを可能にする。いったんセキュリティ・エンジンが構成データを読み取ると、そのデータに対する変更は、エージェントが、ISecurityEngineインターフェースのWriteConfigメソッドを呼び出して、セキュリティ・エンジンに通知する。
エージェントとエージェントがホストするセキュリティ・エンジンの構成データは、共通ルートの下に配置できる。このメソッドは次のように定義される。
HRESULT ReadAndRegisterNotifyConfig(
[in] WCHAR *wszDataName,
[out] VARIANT *pvarData);
wszDataNameは、取得する構成データ・アイテムのテキスト(Text)名であり、このデータのレジストリで使用される名前である。これは、共通エージェント・ルートを基準として個々のアイテムを識別する。先頭の「\」文字は不要である。この値の大文字と小文字は区別されないが、空白文字には意味がある。
pvarDataは、その名前で表される単一データ・アイテムを格納するバリアント構造である。このデータは、レジストリにあるそのデータの型に応じて、様々なデータ型になる。エージェントではデータ型をチェックしないが、セキュリティ・エンジンでは、データ型が必要なので、コンテクストに従ってデータ型をチェックすることが求められる。
エージェントはあらゆるエラーをOperational Eventとしてログ記録する。
UnRegisterNotifyConfig関数呼出し(UnRegisterNotifyConfig Function Call)
このメソッドは、セキュリティ・エンジンが、関係のなくなったデータ・アイテムに関するWriteConfig通知の受取を中止することを可能にする。このメソッドは次のように定義される。
HRESULT UnRegisterNotifyConfig(
[in] WCHAR *wszDataName);
wszDataNameは、セキュリティ・エンジンにとって関係がなくなった変更通知の対象である構成データ・アイテムを識別するテキスト(Text)名である。
エージェントはあらゆるエラーをOperational Eventとしてログ記録する。これには、データがエージェントに認識されていないケースが含まれ、構成管理のトラブルの診断に役立つ。
QueryUser関数呼出し(QueryUser Function Call)
このメソッドは、セキュリティ・エンジンがエージェントに要求して、特定のメッセージをユーザーに向けて表示させ、ユーザーが選択した答えを返させることを可能にする。エージェントはさらにこの答えをキャッシュすることが可能であり、エージェントが再起動してもその値を保持することができる。ユーザーに提示された質問には、そのユーザーにこの質問が向けられた理由に関する具体的な情報を含めることができる。この情報はセキュリティ・エンジンによって提供され、このメソッドが呼び出されるたびに異なるものにすることができる。この質問が以前に尋ねられたものかどうか、およびその答えは何かについて、エージェントがどのように結論付けるかは、セキュリティ・エンジンが提供するキー情報(Key Information)によって決まる。
この呼出しはただちにセキュリティ・エンジンに戻る。その後セキュリティ・エンジンは、応答の通知があるまで、このクエリをトリガしたセッション/スレッドの動作を一時停止する。通知が行われるのは、ユーザーが応答をキー入力したときか、クエリ(Query)がタイム・アウトになったときである。タイム・アウト処理はエージェントによって行われる。この時点で、エージェントはキー入力された応答またはデフォルトの応答で関連データ・アイテムを更新し、その結果とそれに関連するコンテクストをセキュリティ・エンジンに通知する。
そのようなクエリに対する応答を取得することはタイム・クリティカルなので、このAPIは、クエリの発行を必要とするルールを執行しているセキュリティ・エンジンによっていつでも呼び出すことができる。このメソッドは次のように定義される。
HRESULT QueryUser(
[in] REFGUID guidQueryItem,
[in] DWORD dwKeySize,
[in] byte *pbKeyValue,
[in] SAFEARRAY(VARIANT) pvarQueryParams);
guidQueryItemは、ユーザーに質問をし、その質問に対する可能な答えを提示することに使用される基本文字列を格納するデータ・アイテムのGUIDである。
dwKeySizeは、キー値(Key Value)の長さ(バイト単位)である。
pbKeyValueは、このクエリの一意のキーを定義するバイト・セットである。
pvarQueryParamsは、ユーザーに向けて表示されるクエリ・テキストに代入されるクエリ・パラメータを格納する、バリアント(Variants)のSafearrayである。そのパラメータの順序と構文は、このQueryUserアクションが関連付けられたルール・タイプによって定義される。
データ・アイテムが識別不能の場合は、エージェントがエラーを返す。クエリの実行中のエラーは、Operational Eventsとしてログ記録される。その場合は、デフォルトのアクションがセキュリティ・エンジンに返される。
Complete関数呼出し(Complete Function Call)
このメソッドは、先の、エージェントからセキュリティ・エンジンへの非同期呼出しに関連付けられた処理をそのセキュリティ・エンジンが完了したことを、エージェントに通知する。特定のセキュリティ・エンジンが、エージェントからの複数の非同期呼出しを未処理のままにしておくことが、潜在的に可能だが、エージェントは各セキュリティ・エンジンの内部状態を、特定のCompleteコール・バックのコンテクストがあいまいであるように管理する。このメソッドは次のように定義される。
HRESULT Complete(
[in] HRESULT hrCompletionCode);
hrCompletionCodeは、エージェントが以前にこのセキュリティ・エンジンに対して行った非同期呼出しのリターン・コードである。
インターフェースの使用法(Interface Usage)
ここでは、これらのAPIを使用して1つまたは複数のセキュリティ・エンジンと対話する方法に関する制約の例について説明する。
セキュリティ・エンジンは、ある特定の時点では、エージェントとの対話に関して、ある特定の状態にある。次のリストは、セキュリティ・エンジンのとりうる各状態を特定する。
Figure 2005327239
エージェントとセキュリティ・エンジンの間で許容される対話は、セキュリティ・エンジンが特定の状態にあるときに各エンティティが呼び出すことのできるAPIと、結果としてセキュリティ・エンジンがとるべき状態変化または他のアクション・ニーズを定義する一組のテーブルとして形式化することができる。エージェントの動作状態は重要でないと見なされ、セキュリティ・エンジンは、セキュリティ・エンジンがメモリにロードされている間、エージェントがずっと定常状態であると見なすことができる。
状態テーブルは、セキュリティ・エンジンのライフ・サイクルの以下のフェーズをカバーする。
・初期化
・エージェントからのポリシー更新
・シャット・ダウン
これらのテーブルでカバーされていない、API呼出しとセキュリティ・エンジンの状態の組合せは、APIの誤用と見なすことができる。そのような誤用を避けるのは、APIの呼出し側の責任である。
次の状態テーブルは、セキュリティ・エンジンの初期化中に許容されるAPIのシーケンスを定義する。セキュリティ・エンジンの状態は、エージェントからの入力に応じて変化する。セキュリティ・エンジンの初期化に関連付けられた状態のリストにおいて、許容された入力としてリストされていないAPIの呼出しは、呼出し側のエンティティにおけるプロトコル・エラーということを意味している。
Figure 2005327239
次の状態テーブルは、ポリシーの更新中に許容されるAPIのシーケンスを定義し、関連するセキュリティ・エンジンの状態が変化する。ポリシーの更新に関連付けられた状態のリストにおいて、ここで許容される入力としてリストされていないAPIの呼出しは、呼出し側のエンティティにおけるプロトコル・エラーということを意味する。
Figure 2005327239
Figure 2005327239
ホスト対象のセキュリティ・エンジンが複数あることを考慮した、ポリシー更新の全体のシーケンスの例を以下に示す。
1.各セキュリティ・エンジンのPreparePolicyが呼び出される。
2.各セキュリティ・エンジンがComplete(成功)またはComplete(失敗)を呼び出すのを、エージェントが待つ。
3.いずれかのセキュリティ・エンジンが失敗を報告した場合、他のすべてのセキュリティ・エンジンに対してRollbackPolicyメソッドが呼び出されることになる。
4.失敗を報告するセキュリティ・エンジンがない場合は、各セキュリティ・エンジンに対してCommitPolicyメソッドが呼び出される。
5.さらに失敗が見つかった場合、またはCommitPolicyメソッドが呼び出される前にShutdownが必要になった場合は、各セキュリティ・エンジンに対してRollbackPolicyメソッドが呼び出される。
次の状態テーブルは、セキュリティ・エンジンのシャット・ダウン中に可能なAPIのシーケンスを定義する。セキュリティ・エンジンの状態は、エージェントからの入力に応じて変化する。セキュリティ・エンジンのシャット・ダウンに関連付けられた状態のリストにおいて、ここで可能な入力としてリストされていないAPIの呼出しは、呼出し側のエンティティにおけるプロトコル・エラーということを意味する。
Figure 2005327239
以下にリストしたのは、エージェントがサポートするコレクション・タイプの例と、各コレクションがReadAndRegisterNotifyDataメソッド呼出しとWriteDataメソッド呼出しによって動的データとして渡される方法に関する説明である。
以下で説明するデータ・アイテムの多くは、単一のBSTR文字列を渡すことによって、あるいは符号なし整数をLONGバリアント型またはLONGLONGバリアント型にパッキングすることによって、処理できる。このモデルに容易には適合しないアイテムは、DirectorySet、ProtocolSetおよびIPv4AddressSetである。これらの各タイプに対しては、データをBSTR文字列にパッキングしてSafeArrayで容易に転送できるようにするパッキング・システムが提案されている。
FileSet
各アイテムに対して渡されるデータ:
Filename(ファイル名)−文字列

実装:
BSTR

DirectorySet
各アイテムに対して渡されるデータ:
Directory Name(ディレクトリ名)−文字列
Recursive(再帰)−フラグ

実装:
パッキングされたBSTR −“再帰フラグ:文字列”

再帰フラグは単一文字−
「R」−再帰
「F」−フラット

RegistrySet
各アイテムに対して渡されるデータ:
Registry Key Name(レジストリキー名)−文字列

実装:
パッキングされたBSTR −“再帰フラグ:文字列”

再帰フラグは単一文字−
「R」−再帰
「F」−フラット

Protocol
各アイテムに対して渡されるデータ:
Primary / Secondary(プライマリまたはセカンダリ)−文字列または列挙
IP Type(IPタイプ)−文字列または列挙
Direction(方向)−文字列または列挙
Port(ポート)またはPort Range(ポート範囲)−1つまたは2つの整数(16ビットの符号なし整数)

実装:
パッキングされたLONGLONG:
1バイト−プライマリ/セカンダリ
1バイト−IPタイプ(TCP/UDP)
1バイト−方向(入力/出力/入出力)
1バイト−未使用
2バイト−ポート範囲の終了(またはゼロ)
2バイト−ポート範囲の開始(またはポート)

ProcessSet
各アイテムに対して渡されるデータ:
Process Name(プロセス名)またはPath(パス)−文字列

実装:
BSTR

NetworkPortSet
各アイテムに対して渡されるデータ:
Port(ポート)またはPort Range(ポート範囲)−1つまたは2つの整数(16ビットの符号なし整数)

実装:
パッキングされたLONG: 開始=下位ワード、終了=上位ワード。
ポート範囲でない場合、上位ワードはゼロ。

NetworkIPv4AddressSet
各アイテムに対して渡されるデータ:
以下のいずれか:
IPv4 Address(IPv4アドレス)−文字列(ワイルドカードを含むことができる)
IPv4 Address Range(IPv4アドレス範囲)−2つの文字列
FQDN−文字列
Hostname(ホスト名)−文字列

実装:
パッキングされたBSTR:“T:文字列1:文字列2”
T−タイプ(アドレス、アドレス範囲、ホスト名またはFQDNを表す1文字)
文字列1−アドレス、開始アドレス、ホスト名またはFQDN
文字列2−アドレス範囲の終了アドレス

UserSet
各アイテムに対して渡されるデータ:
User Account Name(ユーザー・アカウント名)−文字列

実装:
BSTR

UserGroupSet
各アイテムに対して渡されるデータ :
User Group Name(ユーザー・グループ名)−文字列

実装:
BSTR

FileOpSet
各アイテムに対して渡されるデータ:
File Operation(ファイル操作)−文字列(または列挙)

実装:
BSTR

DirOpSet
各アイテムに対して渡されるデータ:
Directory Operation(ディレクトリ操作)−文字列(または列挙)

実装:
BSTR

ProcessOpSet
各アイテムに対して渡されるデータ:
Process Operation(プロセス操作)−文字列(または列挙)

実装:
BSTR

RegKeyOpSet
各アイテムに対して渡されるデータ:
Registry Key Operation(レジストリキー操作)−文字列(または列挙)

実装:
BSTR

RegValueOpSet
各アイテムに対して渡されるデータ:
Registry Value Operation(レジストリ値操作)−文字列(または列挙)

実装:
BSTR

UserOpSet
各アイテムに対して渡されるデータ:
User Account Operation(ユーザー・アカウント操作)−文字列(または列挙)

実装:
BSTR

UserGroupOpSet
各アイテムに対して渡されるデータ:
User Group Operation(ユーザー・グループ操作)−文字列(または列挙)

実装:
BSTR

JobOpSet
各アイテムに対して渡されるデータ:
Job Operation(ジョブ操作)−文字列(または列挙)

実装:
BSTR

Generic
各アイテムに対して渡されるデータ:
Value(値)−文字列

実装:
BSTR

QuerySet
QuerySetは、セキュリティ・エンジンに対しては、ユーザーへのクエリの結果を格納する単一アイテム・コレクションとして動作する。関連するコンテクストが、別個のパラメータとしてセキュリティ・エンジンに渡される。セキュリティ・エンジンにとっては、必要なのはコンテクストとクエリ結果だけであり、QuerySetの内部構造は通常、必要とされない。

Boolean(boolDefine)
単一アイテムに対して渡されるデータ:
Boolean(ブーリアン、ブール型、論理型)−真または偽

実装:
LONG −偽=0、真=1
図9は、本願明細書で説明している技法を実装できる、一般的なコンピュータ環境900を示している。コンピュータ環境900は、コンピューティング環境の一例に過ぎず、コンピュータおよびネットワークのアーキテクチャの使用または機能の範囲に関して制限を示唆しようとするものではまったくない。コンピュータ環境900は、この例のコンピュータ環境900に示したコンポーネントの任意の1つまたは組合せに関して依存性も必要条件も有しないことを理解されたい。
コンピュータ環境900は、コンピュータ902の形態の中に複数の汎用コンピューティング装置を含む。コンピュータ902は、1つまたは複数のメディア・プレーヤ・アプリケーションを実行できる。コンピュータ902のコンポーネントとして、(必要に応じて暗号プロセッサやコプロセッサを含む)1つまたは複数のプロセッサ(処理ユニット)904、システム・メモリ906、プロセッサ904を含む各種システム・コンポーネントをシステム・メモリ906に接続するシステム・バス908などがあるが、これだけに限られない。
システム・バス908は1つまたは複数の、いくつかのタイプのバス構造を表し、これには、メモリ・バスまたはメモリ・コントローラ、ポイント・ツー・ポイント接続、スイッチング・ファブリック、ペリフェラル・バス、高速グラフィックス・ポート、様々なバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスなどが含まれる。そのようなバス・アーキテクチャの例として、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカル・バス、Mezzanineバスとしても知られるPCI(Peripheral Component Interconnects)バスなどがある。
通常、コンピュータ902は、コンピュータでの読み取りが可能な様々なメディアを含む。そのようなメディアとして、コンピュータ902からのアクセスが可能な任意の市販メディアを使用でき、これには、揮発性メディアと不揮発性メディアの両方、リムーバブル・メディアと非リムーバブル・メディアの両方が含まれる。
システム・メモリ906には、RAM(ランダム・アクセス・メモリ)910のような揮発性メモリおよび/またはROM(読み出し専用メモリ)912のような不揮発性メモリの形態で、コンピュータでの読み取りが可能なメディアが含まれる。BIOS(基本入出力システム)914は、起動時などにコンピュータ902内の各要素間の情報転送を支援する基本ルーチンを含み、ROM912に格納される。RAM910は一般に、処理ユニット904からのダイレクトにアクセスすることができ、かつ/または処理ユニット904によって現在操作されているデータおよび/またはプログラム・モジュールを含む。
さらにコンピュータ902は、他のリムーバブル、非リムーバブル、揮発性または不揮発性のコンピュータ・ストレージ・メディアを含むことができる。例として、図9では、非リムーバブルで不揮発性の磁気メディア(図示せず)の読み取りおよび書き込みを行うハードディスク・ドライブ916、リムーバブルで不揮発性の磁気ディスク920(たとえば、「フロッピー(登録商標)ディスク」)の読み取りおよび書き込みを行う磁気ディスク・ドライブ918、リムーバブルで不揮発性の光ディスク924(CD−ROM、DVD−ROMなどの光メディア)の読み取りおよび/または書き込みを行う光ディスク・ドライブ922などを示している。ハードディスク・ドライブ916、磁気ディスク・ドライブ918および光ディスク・ドライブ922は、それぞれ、1つまたは複数のデータ・メディア・インターフェース925によってシステム・バス908に接続される。あるいは、ハードディスク・ドライブ916、磁気ディスク・ドライブ918および光ディスク・ドライブ922は、1つまたは複数のインターフェース(図示せず)によってシステム・バス908に接続できる。
各ディスク・ドライブとそれに対応する、コンピュータでの読み取りが可能なメディアは、コンピュータでの読み取りが可能な命令、データ構造、プログラム・モジュールおよび他のコンピュータ902用データの不揮発性ストレージを提供する。この例ではハードディスク916、リムーバブル磁気ディスク920およびリムーバブル光ディスク924を示しているが、コンピュータからアクセスできるデータを格納できる、コンピュータでの読み取りが可能な他のタイプのメディア(磁気カセットや他の磁気ストレージ装置、フラッシュ・メモリカード、CD−ROM、DVD(デジタル多用途ディスク)または他の光ストレージ、RAM(ランダム・アクセス・メモリ)、ROM(読み出し専用メモリ)、EEPROM(電気的消去が可能かつ書き込み可能なROM)など)も、この例のコンピューティング・システムおよび環境の実装のために利用できることを理解されたい。
ハードディスク916、磁気ディスク920、光ディスク924、ROM912および/またはRAM910には、例としてオペレーティング・システム926、1つまたは複数のアプリケーション・プログラム928、他のプログラム・モジュール930およびプログラム・データ932をはじめとする任意の数のプログラム・モジュールを格納できる。そのようなオペレーティング・システム926、1つまたは複数のアプリケーション・プログラム928、他のプログラム・モジュール930およびプログラム・データ932(またはこれらによる何らかの組合せ)のそれぞれは、分散ファイル・システムをサポートする常駐コンポーネントのすべてまたは一部を実装することができる。
ユーザーは、キーボード934やポインティング装置936(たとえば「マウス」)などの入力装置を介してコマンドや情報をコンピュータ902に入力できる。他の入力装置938(具体的には図示せず)として、マイクロホン、ジョイスティック、ゲーム・パッド、パラボラ・アンテナ、シリアル・ポート、スキャナなども使用できる。これらの入力装置や他の入力装置は、システム・バス908に接続された入出力インターフェース940を介して処理ユニット904に接続されるが、他のインターフェースやバス構造(パラレル・ポート、ゲーム・ポート、USB(ユニバーサル・シリアル・バス))で接続することもできる。
モニタ942や他のタイプのディスプレイ装置も、ビデオ・アダプタ944などのインターフェースを介してシステム・バス908に接続できる。モニタ942に加え、他の出力ペリフェラル装置として、入出力インターフェース940を介してコンピュータ902に接続できるスピーカ(図示せず)やプリンタ946などのコンポーネントも使用できる。
コンピュータ902は、リモート・コンピューティング装置948などの、1つまたは複数のリモート・コンピュータとの論理接続を使用する、ネットワーク接続された環境で動作できる。リモート・コンピューティング装置948としては、たとえば、パーソナルコンピュータ、ポータブル・コンピュータ、サーバー、ルーター、ネットワーク・コンピュータ、ピア装置や他の共通ネットワーク・ノード、ゲーム・コンソールなどを使用できる。リモート・コンピューティング装置948は、コンピュータ902を基準に本願明細書で説明している要素および機能の多くまたはすべてを含むことのできるポータブル・コンピュータとして図示されている。
コンピュータ902とリモート・コンピュータ948の論理接続は、LAN(ローカル・エリア・ネットワーク)950および一般のWAN(ワード・エリア・ネットワーク)952として表される。そのようなネットワーキング環境は、事務所、企業内コンピュータ・ネットワーク、イントラネット、インターネットなどではごく普通のものである。
LANネットワーキング環境に実装された場合、コンピュータ902は、ネットワーク・インターフェースまたはアダプタ954を介してローカル・ネットワーク950に接続される。WANネットワーキング環境に実装された場合、コンピュータ902は、通常、広域ネットワーク952を経由する通信を確立するためにモデム956や他の手段を含む。モデム956は、コンピュータ902に内蔵または外付けすることができ、入出力インターフェース940または他の適切なメカニズムを介してシステム・バス908に接続できる。図示したネットワーク接続は例示的なものであることと、コンピュータ902および948の間の通信リンクを確立するために他の手段を用いることが可能であることを理解されたい。
コンピューティング環境900を用いて図示したような、ネットワーク接続された環境では、コンピュータ902と関連するものとして表されたプログラム・モジュールまたはその一部は、リモート・メモリ・ストレージ装置に格納できる。一例として、リモート・アプリケーション・プログラム958は、リモート・コンピュータ948のメモリ装置に常駐する。図示するために、本願明細書では、アプリケーション・プログラムや、オペレーティング・システムなどの他の実行可能プログラム・コンポーネントを別個のブロックとして表したが、そのようなプログラムやコンポーネントは、様々な時点でコンピューティング装置902の種々のストレージ・コンポーネントに常駐し、そのコンピュータのデータ・プロセッサによって実行されることが理解される。
各種のモジュールや技法は、本願明細書において、1つまたは複数のコンピュータや他の装置で実行されるプログラム・モジュールのような、コンピュータで実行可能な命令群の一般的なコンテクストで説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行したり、特定の抽象データ型を実装したりするルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。一般に、プログラム・モジュールの機能は、必要に応じて結合または分散され、様々な実施形態で使用できる。
これらのモジュールや技法の実装を、コンピュータでの読み取りが可能な、何らかの形式のメディアに格納したり、そのようなメディアで転送したりできる。コンピュータでの読み取りが可能なメディアには、コンピュータからのアクセスが可能な任意の市販メディアを使用できる。一例として(これに限るものではない)、コンピュータでの読み取りが可能なメディアは、「コンピュータ・ストレージ・メディア」と「通信メディア」を含むことができる。
「コンピュータ・ストレージ・メディア」には、コンピュータでの読み取りが可能な命令群、データ構造、プログラム・モジュール、その他のデータなどの情報の記憶のための任意の方法や技法において実装される、揮発性または不揮発性で、リムーバブルまたは非リムーバブルのメディアが含まれる。コンピュータ・ストレージ・メディアには、RAM、ROM、EEPROM、フラッシュ・メモリなどのメモリ技術、CD−ROM、DVD(デジタル多用途ディスク)などの光ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージなどの磁気ストレージ装置、あるいはその他の、必要情報を格納でき、コンピュータからのアクセスが可能な任意のメディアが含まれ、これらだけには限定されない。
「通信メディア」は一般に、コンピュータでの読み取りが可能な命令群、データ構造、プログラム・モジュール、または他のデータを、搬送波や他の伝送メカニズムなどの変調データ信号で具体化する。通信メディアはさらに、任意の情報配信メディアを含む。「変調データ信号」という用語は、その1つまたは複数の特性を、信号内の情報をエンコードするように設定するか変化させた信号を意味する。一例として(これに限るものではない)、通信メディアには、有線ネットワークや直接有線接続などの有線メディアと、音波、RF、赤外線などの無線メディアとが含まれる。これらの任意の組合せも、コンピュータでの読み取りが可能なメディアの範囲に含まれる。
概念的には、プログラミング・インターフェースは、一般に、図10または図11に示すように、一般的に表すことができる。図10では、インターフェースInterface1を、第1のコード・セグメントと第2のコード・セグメントの間の通信で使用する管路(conduit)として示している。図11では、インターフェースを、インターフェース・オブジェクトI1およびI2を含むものとして表している(I1およびI2は、第1および第2のコード・セグメントの一部であってもなくてもよい)。このインターフェースは、システムの第1のコード・セグメントと第2のコード・セグメントが媒体Mを介して通信することを可能にする。図11の見方として、インターフェース・オブジェクトのI1とI2を同じシステムの別々のインターフェースと見なすことができ、また、オブジェクトI1およびI2と媒体Mとでインターフェースを構成すると見なすこともできる。図10および11では、両方向のフローとそのフローのそれぞれの側にあるインターフェースを示しているが、特定の実施態様では、片方向の情報フローだけを有すること(あるいは後述のように、情報フローを有しないこと)や、一方の側にのみインターフェース・オブジェクトを有することが可能である。一例として(これに限るものではない)、API(アプリケーション・プログラミング・インターフェース(またはアプリケーション・プログラム・インターフェース))、エントリ・ポイント、メソッド、関数、サブ・ルーチン、リモート・プロシージャ・コール、COM(コンポーネント・オブジェクト・モデル)インターフェースなどの用語は、プログラミング・インターフェースの定義の中に包含されている。
そのようなプログラミング・インターフェースの態様には、第1のコード・セグメントが情報(ここでは「情報」を最も広い意味で使用しており、データ、コマンド、要求などを含む)を第2のコード・セグメントに伝達するメソッド、第2のコード・セグメントがその情報を受け取るメソッド、およびその情報の構造、シーケンス、構文、編成、スキーマ、タイミング、内容(content)を含めることができる。この点に関しては、インターフェースで定義される方式で情報が伝送される限り、媒体が有線であれ、無線であれ、有線と無線の組合せであれ、土台となる伝送媒体自体はインターフェースの動作にとっては重要でないと考えられる。状況によっては、情報転送が別のメカニズム(たとえば、コード・セグメント間の情報フローとは別に、バッファやファイルなどに置かれた情報)で行われる場合、あるいは第2のコード・セグメントが実行する機能に第1のコード・セグメントが単純にアクセスする場合のような、情報転送が存在しない場合のように通常の意味において、情報が片方向または両方向で渡されない場合がある。ある特定の状況、たとえば、コード・セグメントが、疎結合または密結合された構成のシステムの一部かどうかに依存する場合、では、これらの態様のいずれかまたはすべてが重要になる可能性があり、したがって、このリストは例示であり、非限定的であると考えなければならない。
このプログラミング・インターフェースの概念は、当業者には既知であり、本発明の前述の詳細な説明から明らかである。ただし、プログラミング・インターフェースの実装には別の方法があり、明確に除外しない限り、それらも本発明の特許請求の範囲に包含される。そのような他の方法は、図10および11の過度に単純化した表現より緻密または複雑な表現になる可能性があるが、それにもかかわらず、同様な機能を実行し、同じ全体的な結果を達成する。以下では、プログラミング・インターフェースのいくつかの説明に役立つ代替の実装例について簡単に説明する。
ファクタリング(Factoring;要素への分解)
あるコード・セグメントから別のコード・セグメントへの通信は、その通信を複数の別々の通信に分割することによって間接的に達成できる。これを図12および13で概略的に示す。図に示すように、複数のインターフェースを、分割可能な機能セットの項目(terms of divisible sets of functionality)で表すことができる。そこで、図10および11のインターフェース機能は、ちょうど、数学的に、24を、あるいは2×2×3×2を提供するように、同じ結果を達成するために、要素に分解することができる。したがって、図12に示すように、インターフェースInterface1で実現される機能を細分して、そのインターフェースの通信を複数のインターフェースInterface1A、Interface1B、Interface1Cなどに変換し、同じ機能を達成することができる。また、図13に示すように、インターフェースI1で実現される機能を、複数のインターフェースI1a、I1b、I1cなどに細分して、同じ結果を達成することができる。同様に、第1のコード・セグメントから情報を受け取る第2のコード・セグメントのインターフェースI2を、複数のインターフェースI2a、I2b、I2cなどに、ファクタリングできる。ファクタリングを行う場合、第1のコード・セグメントに含まれるインターフェースの数と、第2のコード・セグメントに含まれるインターフェースの数は同じである必要はない。図12、図13のいずれの場合でも、インターフェースInterface1およびI1の機能的意味(functional spirit)は、それぞれ図10および11の場合と同じままである。インターフェースのファクタリングはさらに、結合(associative)、交換(commutative)、その他の数学的特性に従うことができ、それによって、そのファクタリングをわかりにくくすることができる。たとえば、操作の順序が重要でない場合があり、その場合は、インターフェースで実行されるある機能を、そのインターフェースに到達するかなり前に実行したり、別のコードまたはインターフェースの一部で実行したり、そのシステムの別のコンポーネントで実行したりできる。さらに、プログラミング分野の当業者であれば、同じ結果を達成する、異なる関数呼出しを作成する方法が多岐にわたっていることを理解されよう。
再定義(Redefinition)
場合によっては、意図した結果を達成しながら、プログラミング・インターフェースの特定の態様(たとえば、パラメータ)を無視、追加または再定義することができる。これを図14および15に示す。たとえば、図10のインターフェースInterface1が、3つのパラメータinput、precisionおよびoutputを含む関数呼出しSquare(input、precision、output)を含み、この呼出しが第1のコード・セグメントから第2のコード・セグメントに発行される、と仮定する。ある特定の条件下で中間のパラメータprecisionが、図14に示すように、無用な場合は、このパラメータを無視したほうが好都合で有る場合があり、あるいは(この状況では)meaninglessパラメータに置き換えることもできる。さらに、関係のないadditionalパラメータを追加することもできる。いずれの場合も、第2のコード・セグメントによって入力が2乗(square)された後に出力が返される限り、2乗の機能は達成できる。precisionは、コンピューティング・システムのある程度下流や他の部分で十分意味を持つパラメータである場合があるが、2乗を計算するという狭い用途でいったん不要と認識されると、置き換えられるか無視される可能性がある。たとえば、有効なprecision値を渡す代わりに、誕生日などの無意味な値を渡しても結果に悪影響を及ぼさないと考えられる。同様に、図15に示すように、インターフェースI1はインターフェースI1’に置き換えられ、パラメータを無視するか、そのインターフェースにパラメータを追加するよう再定義される。インターフェースI2は同様にインターフェースI2’として再定義され、不要なパラメータや他の場所で処理される可能性のあるパラメータを無視するよう再定義される。ここでのポイントは、プログラミング・インターフェースが特定の用途には不要である可能性がある、パラメータなどの、アスペクトを含む場合があるケースでは、したがって、それらを無視したり、再定義したり、他の用途のために別の場所で処理したりできる、ということである。
インライン・コーディング
さらに、別々の2つのコード・モジュールのある機能またはすべての機能を結合して、それらの間の「インターフェース」の形態を変えることが便利である場合がある。たとえば、図10および11の機能を、それぞれ図16および17の機能に変換できる。図16では、図10にあった第1および第2のコード・セグメントが、その両方を含む1つのモジュールにマージされている。この場合、それらのコード・セグメントは引き続き互いに通信しているが、そのインターフェースは、単一モジュールにとってより適した形態に変更することができる。したがって、たとえば、形式的なCall文とReturn文は不要になっても、インターフェースInterface1に準拠する同様の処理や応答が引き続き有効になる場合がある。同様に、図17に示すように、図11のインターフェースI2の一部(またはすべて)をインターフェースI1とインラインでコーディングして、インターフェースI1”を形成することができる。図に示すように、インターフェースI2はI2aとI2bに分割され、インターフェース部分I2aはインターフェースI1とインラインでコーディングされて、インターフェースI1”が形成されている。具体例として、図11のインターフェースI1が関数呼出しsquare(input,output)を実行し、これをインターフェースI2が受取、その後、(2乗すべき)inputとして渡された値が第2のコード・セグメントによって処理され、2乗した結果がoutputとして戻されるとする。このような場合、第2のコード・セグメントで実行される処理(inputの2乗)は、インターフェースを呼び出すことなく、第1のコード・セグメントで実行できる。
ディボース(Divorce)
あるコード・セグメントから別のコード・セグメントへの通信は、その通信を複数の別々の通信に分割する(breaking)ことによって間接的に達成できる。これを図18および19で概略的に示す。図18に示すように、第1のインターフェースInterface1上の通信を、異なるインターフェース(ここではインターフェースInterface2A、Interface2BおよびInterface2C)に準拠するよう変換するために、1つまたは複数個のミドルウェア(機能および/またはインターフェース機能をオリジナルのインターフェースから完全に分離するので、「ディボース(divorce)インターフェース」、)が提供される。こうしたことを行うのは、たとえば、Interface1プロトコルに従って、たとえばオペレーティング・システムと通信するよう設計された、複数のアプリケーションのインストールされたベースがある場合であり、しかしこの場合、オペレーティング・システムは、別のインターフェース(ここではインターフェースInterface2A、Interface2BおよびInterface2C)を使用するように変更される。このポイントは、第2のコード・セグメントで使用しているオリジナルのインターフェースを、第1のコード・セグメントで使用しているインターフェースと互換性のないものに変換することであり、そのために、媒介手段を用いて古いインターフェースと新しいインターフェースの互換をとることである。同様に、図19に示すように、第3のコード・セグメントを導入し、インターフェースI1からの通信を完全分離インターフェースDI1で受取、完全分離インターフェースDI2から、たとえば、DI2と動作するよう再設計されたインターフェースI2aおよびI2bにインターフェース機能を伝達して、機能的に同じ結果を実現することができる。同様に、DI1およびDI2は、連係動作により、図11のインターフェースI1およびI2の機能を新しいオペレーティング・システム向けに変換し、かつ、機能的に同一もしくは同等の結果を実現することができる。
リライティング(Rewriting)
さらにまた別の可能な変種(variant)として、コードを動的にリライト(rewrite)して、インターフェース機能を別の何かに置き換え、全体としては同じ結果を達成することができる。たとえば、中間言語(たとえば、Microsoft IL,Java(登録商標) ByteCodeなど)で表されたコード・セグメントを、実行環境(たとえば、.Netフレームワーク、Java(登録商標)ランタイム環境、または他の同様なランタイム・タイプの環境で提供される実行環境)でJIT(Just-in-Time)コンパイラまたはインタープリタにかけるシステムが考えられる。JITコンパイラは、第1のコード・セグメントから第2のコード・セグメントへの通信を動的に変換するように書くことができる、つまり、通信を、第2のコード・セグメント(オリジナルの第2のコード・セグメントか、別の第2のコード・セグメント)で要求される可能性のある異なるインターフェースに準拠させるように書くことができる。これを図20および21に示す。図20からわかるように、この方式は、前述したディボース方式(Divorce scenario)とよく似ている。これは、たとえば、複数のアプリケーションがインストールされたベースが、Interface1プロトコルに従ってオペレーティング・システムと通信するよう設計されている場合であり、そのために、オペレーティング・システムが、別のインターフェースを使用するよう変更される場合である。JITコンパイラは、インストールされたベース・アプリケーションからの通信を、オペレーティング・システムの新しいインターフェースに、直ちに(on the fly)準拠させることができる。図21に示すように、この、インターフェースを動的にリライティングする方式は、インターフェースの動的なファクタリング(factoring)やその他の動的な変換にも同様に適用できる。
さらに、代替実施形態を用いて同一または同等のインターフェースとしての結果を達成する前述の方式が、直列および/または並列に、あるいは他の媒介コードを使用して、様々に組み合わせることができる点にも注意されたい。したがって、前述の各代替実施形態は、相互に排他的ではなく、図10および11で示した一般的な方式と同一または同等の方式を作り出すために、混在させ、整合させ、および結合させることができる。さらに、ほとんどのプログラミング構造物と同様に、本願明細書では説明できないが、本発明の趣旨および範囲によって表現される、同一または同等のインターフェース機能を達成する他の同様な方法があることに注意されたい。つまり、本願明細書で説明した方法は、インターフェースの価値の根底を成す、インターフェースによって表される機能性、およびインターフェースによって可能になる有益な結果の少なくとも一部であることに注意されたい。
これまでの説明では、構造的な特徴および/または方法論的な動作(act)に特有の言い回し(language)を使用したが、特許請求の範囲で定義される本発明は、説明した特定の特徴または動作(act)に限定されるものではないことを理解されたい。むしろ、この特定の特徴および動作(act)は、本発明の実装の例示的形態として開示したものである。
種々のイベントが生成および処理される環境の一例を示す図である。 データおよびルールを含むセキュリティ・ポリシーの一例を示す図である。 各種セキュリティ・エンジンから要求されるデータに関して、セキュリティ・モジュールによって保持されるテーブルの一例を示す図である。 セキュリティ・ポリシーのルールおよびデータを取得して配布する手続の一実施形態を示すフロー図である。 更新されたセキュリティ・ポリシー・データを処理する手続の一実施形態を示すフロー図である。 1つまたは複数のセキュリティ・エンジンに、情報を配布する処理を行う手続の一実施形態を示すフロー図である。 セキュリティ・ポリシーを更新する手続の一実施形態を示すフロー図である。 セキュリティ・ポリシーを更新する手続の別の実施形態を示すフロー図である。 一般的なコンピュータ環境を示す図である。 プログラミング・インターフェースの種々の実装例の1つを示す図である。 プログラミング・インターフェースの種々の実装例の1つを示す図である。 プログラミング・インターフェースの種々の実装例の1つを示す図である。 プログラミング・インターフェースの種々の実装例の1つを示す図である。 プログラミング・インターフェースの種々の実装例の1つを示す図である。 プログラミング・インターフェースの種々の実装例の1つを示す図である。 プログラミング・インターフェースの種々の実装例の1つを示す図である。 プログラミング・インターフェースの種々の実装例の1つを示す図である。 プログラミング・インターフェースの種々の実装例の1つを示す図である。 プログラミング・インターフェースの種々の実装例の1つを示す図である。 プログラミング・インターフェースの種々の実装例の1つを示す図である。 プログラミング・インターフェースの種々の実装例の1つを示す図である。
符号の説明
100 種々のイベントが生成および処理される環境
102 ホスト・コンピュータ
104 サーバー
106 サーバー
108 ネットワーク
110 セキュリティ・モジュール
112 イベント・マネージャ
114 セキュリティ・エンジン
116 セキュリティ・エンジン
118 セキュリティ・エンジン
120 システム状態情報
122 システム構成情報
124 アプリケーション・プログラム・インターフェース(API)
200 セキュリティ・ポリシー
202 データ
204 ルール
300 セキュリティ・モジュールによって保持されるテーブル
302 データ要素
304 セキュリティ・エンジン
900 一般的なコンピュータ環境
902 コンピュータ
904 処理ユニット
906 システム・メモリ
908 システム・バス
910 RAM(ランダム・アクセス・メモリ)
912 ROM(読み出し専用メモリ)
914 BIOS(基本入出力システム)
916 ハードディスク・ドライブ
918 磁気ディスク・ドライブ
920 リムーバブルで不揮発性の磁気ディスク
922 光ディスク・ドライブ
924 リムーバブルで不揮発性の光ディスク
925 データ・メディア・インターフェース
926 オペレーティング・システム
928 アプリケーション・プログラム
930 他のプログラム・モジュール
932 プログラム・データ
934 キーボード
936 マウス
938 他の装置
940 入出力インターフェース
942 モニタ
944 ビデオ・アダプタ
946 プリンタ
948 リモート・コンピューティング装置
950 LAN(ローカル・エリア・ネットワーク)
952 インターネット
954 ネットワーク・アダプタ
956 モデム
958 リモート・アプリケーション・プログラム

Claims (32)

  1. コンピュータでの読み取りが可能な1つまたは複数のメディアに関して実施されるプログラミング・インターフェースであって、
    既存のセキュリティ・ポリシーを新しいセキュリティ・ポリシーに置き換えるよう構成されている複数のセキュリティ・エンジンに、新しいセキュリティ・ポリシーを伝達することに関連付けられる第1の機能グループ、および
    前記新しいセキュリティ・ポリシーを実装する準備ができていることのインジケーションで、各セキュリティ・エンジンについてのインジケーションを伝達することに関連付けられた第2の機能グループ
    を備えることを特徴とするプログラミング・インターフェース。
  2. 前記第1の機能グループは、前記複数のセキュリティ・エンジンのそれぞれに前記新しいセキュリティ・ポリシーを削除するように指示するメソッドを含むことを特徴とする請求項1に記載のプログラミング・インターフェース。
  3. 前記第1の機能グループは、特定のセキュリティ・エンジンを初期化するメソッドを含むことを特徴とする請求項1に記載のプログラミング・インターフェース。
  4. 前記第1の機能グループは、前記複数のセキュリティ・エンジンのそれぞれに前記新しいセキュリティ・ポリシーを実装するように指示するメソッドを含むことを特徴とする請求項1に記載のプログラミング・インターフェース。
  5. 前記第1の機能グループは、既存のセキュリティ・ポリシーに関連付けられた新しいデータを前記複数のセキュリティ・エンジンの少なくとも1つに伝達するメソッドをさらに備えることを特徴とする請求項1に記載のプログラミング・インターフェース。
  6. 前記第1の機能グループは、構成情報を前記複数のセキュリティ・エンジンの少なくとも1つに伝達するメソッドをさらに備えることを特徴とする請求項1に記載のプログラミング・インターフェース。
  7. 前記第2の機能グループは、特定のセキュリティ・エンジンが前記新しいセキュリティ・ポリシーを実装したかどうかを示すメソッドを含むことを特徴とする請求項1に記載のプログラミング・インターフェース。
  8. 前記第2の機能グループは、特定のセキュリティ・ポリシーに関連付けられた更新されるデータを取得するメソッドをさらに含むことを特徴とする請求項1に記載のプログラミング・インターフェース。
  9. 前記第2の機能グループは、前記複数のセキュリティ・エンジンの1つが識別した新しいデータをセキュリティ・エージェントに伝達するメソッドをさらに備えることを特徴とする請求項1に記載のプログラミング・インターフェース。
  10. 前記第2の機能グループは、前記複数のセキュリティ・エンジンの1つが前記複数のセキュリティ・エンジンを含むシステムのユーザーに問い合わせを行うことを可能にするメソッドをさらに備えることを特徴とする請求項1に記載のプログラミング・インターフェース。
  11. 前記複数のセキュリティ・エンジンの少なくとも1つがアンチウィルス・サービスを実装することを特徴とする請求項1に記載のプログラミング・インターフェース。
  12. 前記複数のセキュリティ・エンジンの少なくとも1つがファイアウォール・アプリケーションを実装することを特徴とする請求項1に記載のプログラミング・インターフェース。
  13. すべてのセキュリティ・エンジンが前記新しいセキュリティ・ポリシーを実装する準備を整えたことを示した後に、前記複数のセキュリティ・エンジンが前記新しいセキュリティ・ポリシーを実装することを特徴とする請求項1に記載のプログラミング・インターフェース。
  14. 1つまたは複数のマイクロ・プロセッサと1つまたは複数のソフトウェア・プログラムを含むコンピュータ・システムであって、前記1つまたは複数のソフトウェア・プログラムはアプリケーション・プログラム・インターフェースを利用して複数のセキュリティ・エンジンにセキュリティ・ポリシーを実装し、前記アプリケーション・プログラム・インターフェースは、
    新しいセキュリティ・ポリシーを前記複数のセキュリティ・エンジンに伝達する第1の機能、
    前記複数のセキュリティ・エンジンのそれぞれが前記新しいセキュリティ・ポリシーを適用する準備を整えたかどうかを識別する第2の機能、および
    すべてのセキュリティ・エンジンが前記新しいセキュリティ・ポリシーを適用する準備を整えたことを確認した後に、前記複数のセキュリティ・エンジンのそれぞれに前記新しいセキュリティ・ポリシーを実装するよう指示する第3の機能
    を備えることを特徴とするコンピュータ・システム。
  15. 前記複数のセキュリティ・エンジンの少なくとも1つが前記新しいセキュリティ・ポリシーを適用できない場合に、前記複数のセキュリティ・エンジンのそれぞれに、前記新しいセキュリティ・ポリシーを削除させる第4の機能をさらに備えることを特徴とする請求項14に記載のコンピュータ・システム。
  16. 第1のセキュリティ・エンジンが識別したイベント情報をその他のセキュリティ・エンジンに伝達することに関連付けられた第4の機能をさらに備えることを特徴とする請求項14に記載のコンピュータ・システム。
  17. 第1のセキュリティ・エンジンが識別したセキュリティ関連情報をイベント・マネージャに伝達することに関連付けられた第4の機能をさらに備えることを特徴とする請求項14に記載のコンピュータ・システム。
  18. 前記イベント・マネージャは前記セキュリティ関連情報を前記複数のセキュリティ・エンジンの少なくとも1つに伝達することを特徴とする請求項17に記載のコンピュータ・システム。
  19. 前記複数のセキュリティ・エンジンの少なくとも1つが第1のタイプのセキュリティ攻撃に関連付けられていることを特徴とする請求項14に記載のコンピュータ・システム。
  20. 前記複数のセキュリティ・エンジンの少なくとも1つが第2のタイプのセキュリティ攻撃に関連付けられていることを特徴とする請求項19に記載のコンピュータ・システム。
  21. セキュリティ・ポリシーを第1のセキュリティ・エンジンに伝達することを容易にするために、1つまたは複数の第1の機能を呼び出すこと、
    前記第1のセキュリティ・エンジンが前記セキュリティ・ポリシーを適用したかどうかの決定を容易するために、1つまたは複数の第2の機能を呼び出すこと、および
    セキュリティ関連情報を前記第1のセキュリティ・エンジンから第2のセキュリティ・エンジンに伝達することを容易にするために、1つまたは複数の第3の機能を呼び出すこと
    を備えることを特徴とする方法。
  22. 前記セキュリティ関連情報はセキュリティ攻撃のタイプを識別することを特徴とする請求項21に記載の方法。
  23. 前記第1のセキュリティ・エンジンを含むシステムのユーザーと対話することを容易にするために、1つまたは複数の第4の機能を呼び出すことをさらに備えることを特徴とする請求項21に記載の方法。
  24. 構成情報を前記第1のセキュリティ・エンジンに伝達することを容易にするために、1つまたは複数の第4の機能を呼び出すことをさらに備えることを特徴とする請求項21に記載の方法。
  25. 前記第1のセキュリティ・エンジンと前記第2のセキュリティ・エンジンとに前記セキュリティ・ポリシーを実装することを指示することを容易にするために、1つまたは複数の第4の機能を呼び出すことをさらに備えることを特徴とする請求項21に記載の方法。
  26. 改訂したセキュリティ・ポリシーを前記第1のセキュリティ・エンジンに伝達することを容易にするために、1つまたは複数の第4の機能を呼び出すことをさらに備えることを特徴とする請求項21に記載の方法。
  27. セキュリティ関連イベントをイベント・マネージャに伝達する第1の機能を公開する手段、
    前記セキュリティ関連イベントに関連付けられた複数のセキュリティ・エンジンを識別する第2の機能を公開する手段、および
    前記セキュリティ関連イベントを前記識別されたセキュリティ・エンジンに伝達する第3の機能を公開する手段
    を備えることを特徴とするシステム。
  28. 新しいセキュリティ・ポリシーを前記複数のセキュリティ・エンジンに伝達する第4の機能を公開する手段、および
    既存のセキュリティ・ポリシーを前記新しいセキュリティ・ポリシーに置き換えることを前記複数のセキュリティ・エンジンに指示する第5の機能を公開する手段
    をさらに備えることを特徴とする請求項27に記載のシステム。
  29. 前記複数のセキュリティ・エンジンの少なくとも1つが前記新しいセキュリティ・ポリシーを実装できない場合に、前記新しいセキュリティ・ポリシーを削除することを、前記複数のセキュリティ・エンジンに指示する第6の機能を公開する手段をさらに備えることを特徴とする請求項28に記載のシステム。
  30. 前記セキュリティ関連イベントがウィルスの検出であることを特徴とする請求項27に記載のシステム。
  31. 前記セキュリティ関連イベントがストレージ装置に対する不正なアクセス試行であることを特徴とする請求項27に記載のシステム。
  32. 特定のセキュリティ・エンジンが別の関数呼出しの処理を完了したことを前記イベント・マネージャに通知する第4の機能を公開する手段をさらに備えることを特徴とする請求項27に記載のシステム。
JP2004322692A 2003-12-05 2004-11-05 セキュリティ関連プログラミング・インターフェース Expired - Fee Related JP4676744B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/729,823 US7430760B2 (en) 2003-12-05 2003-12-05 Security-related programming interface

Publications (2)

Publication Number Publication Date
JP2005327239A true JP2005327239A (ja) 2005-11-24
JP4676744B2 JP4676744B2 (ja) 2011-04-27

Family

ID=34523006

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004322692A Expired - Fee Related JP4676744B2 (ja) 2003-12-05 2004-11-05 セキュリティ関連プログラミング・インターフェース

Country Status (10)

Country Link
US (1) US7430760B2 (ja)
EP (1) EP1542426B1 (ja)
JP (1) JP4676744B2 (ja)
KR (1) KR101122787B1 (ja)
CN (1) CN1624657B (ja)
AU (1) AU2004218703B2 (ja)
BR (1) BRPI0403523A (ja)
CA (1) CA2485062A1 (ja)
MX (1) MXPA04011271A (ja)
RU (1) RU2377639C2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5482783B2 (ja) * 2009-03-05 2014-05-07 日本電気株式会社 セキュリティ管理装置、方法、及びプログラム、並びにセキュリティ分散システム
JP2014089741A (ja) * 2010-07-21 2014-05-15 Samsung Sds Co Ltd システムオンチップ基盤のアンチマルウェアサービスを提供できるデバイス及びその方法
JP2016053979A (ja) * 2010-07-28 2016-04-14 マカフィー, インコーポレイテッド 悪意のあるソフトウェアに対するローカル保護をするシステム及び方法

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8910241B2 (en) 2002-04-25 2014-12-09 Citrix Systems, Inc. Computer security system
US7533416B2 (en) * 2004-04-29 2009-05-12 Microsoft Corporation Framework for protection level monitoring, reporting, and notification
JP4341517B2 (ja) * 2004-06-21 2009-10-07 日本電気株式会社 セキュリティポリシー管理システム、セキュリティポリシー管理方法およびプログラム
US8561126B2 (en) * 2004-12-29 2013-10-15 International Business Machines Corporation Automatic enforcement of obligations according to a data-handling policy
US9606795B1 (en) * 2005-05-05 2017-03-28 Alcatel-Lucent Usa Inc. Providing intelligent components access to an external interface
US7832006B2 (en) * 2005-08-09 2010-11-09 At&T Intellectual Property I, L.P. System and method for providing network security
US20070174910A1 (en) * 2005-12-13 2007-07-26 Zachman Frederick J Computer memory security platform
US9172629B1 (en) * 2005-12-29 2015-10-27 Alcatel Lucent Classifying packets
US8190868B2 (en) * 2006-08-07 2012-05-29 Webroot Inc. Malware management through kernel detection
US8230505B1 (en) * 2006-08-11 2012-07-24 Avaya Inc. Method for cooperative intrusion prevention through collaborative inference
US8352998B1 (en) * 2006-08-17 2013-01-08 Juniper Networks, Inc. Policy evaluation in controlled environment
KR100791279B1 (ko) * 2007-02-05 2008-01-04 비앤비쏠루션주식회사 보조기억매체의 관리방법
KR100791278B1 (ko) * 2007-02-05 2008-01-04 비앤비쏠루션주식회사 보조기억매체의 관리방법
US8392981B2 (en) * 2007-05-09 2013-03-05 Microsoft Corporation Software firewall control
US8341723B2 (en) 2007-06-28 2012-12-25 Microsoft Corporation Filtering kernel-mode network communications
US8613084B2 (en) 2007-09-18 2013-12-17 Mcafee, Inc. System, method, and computer program product for detecting at least potentially unwanted activity based on execution profile monitoring
US8516539B2 (en) 2007-11-09 2013-08-20 Citrix Systems, Inc System and method for inferring access policies from access event records
US8990910B2 (en) 2007-11-13 2015-03-24 Citrix Systems, Inc. System and method using globally unique identities
US8739189B2 (en) 2008-01-24 2014-05-27 Mcafee, Inc. System, method, and computer program product for invoking an application program interface within an interception of another application program interface
US20090222292A1 (en) * 2008-02-28 2009-09-03 Maor Goldberg Method and system for multiple sub-systems meta security policy
US9240945B2 (en) 2008-03-19 2016-01-19 Citrix Systems, Inc. Access, priority and bandwidth management based on application identity
US8943575B2 (en) 2008-04-30 2015-01-27 Citrix Systems, Inc. Method and system for policy simulation
FR2933510B1 (fr) * 2008-07-04 2010-10-15 Oberthur Technologies Dispositif electronique portable comprenant une application portable et un module securise pouvant communiquer entre eux, et procede de communication associe
CN101727345B (zh) * 2008-10-29 2013-09-04 国际商业机器公司 控制动态链接库dll加载状态的方法和系统
US8990573B2 (en) 2008-11-10 2015-03-24 Citrix Systems, Inc. System and method for using variable security tag location in network communications
US8321938B2 (en) * 2009-02-12 2012-11-27 Raytheon Bbn Technologies Corp. Multi-tiered scalable network monitoring
US8613108B1 (en) * 2009-03-26 2013-12-17 Adobe Systems Incorporated Method and apparatus for location-based digital rights management
US11489857B2 (en) 2009-04-21 2022-11-01 Webroot Inc. System and method for developing a risk profile for an internet resource
US8397293B2 (en) * 2009-12-31 2013-03-12 International Business Machines Corporation Suspicious node detection and recovery in mapreduce computing
US8402106B2 (en) * 2010-04-14 2013-03-19 Red Hat, Inc. Asynchronous future based API
RU2449360C1 (ru) * 2011-03-28 2012-04-27 Закрытое акционерное общество "Лаборатория Касперского" Система и способ формирования антивирусных баз в соответствии с параметрами персонального компьютера
AU2012272509A1 (en) * 2011-06-21 2014-02-06 Jajoza Connected Solutions Pty Ltd A system and method for providing safety policies for communications and interaction
US8707434B2 (en) 2011-08-17 2014-04-22 Mcafee, Inc. System and method for indirect interface monitoring and plumb-lining
CN103428344A (zh) * 2012-05-17 2013-12-04 上海闻泰电子科技有限公司 一种在功能手机动态加载程序中实现待机运行的方法
RU2495487C1 (ru) * 2012-08-10 2013-10-10 Закрытое акционерное общество "Лаборатория Касперского" Система и способ для определения доверия при обновлении разрешенного программного обеспечения
JP6066750B2 (ja) 2013-01-31 2017-01-25 キヤノン株式会社 画像形成装置及びその制御方法、並びにプログラム
JP6066751B2 (ja) 2013-01-31 2017-01-25 キヤノン株式会社 情報処理システム及びその制御方法、並びにプログラム
US9172604B1 (en) 2013-02-25 2015-10-27 Google Inc. Target mapping and implementation of abstract device model
US9166912B2 (en) * 2013-02-25 2015-10-20 Google Inc. Translating network forwarding plane models into target implementation using sub models and hints
US10127379B2 (en) * 2013-03-13 2018-11-13 Mcafee, Llc Profiling code execution
US9258315B2 (en) * 2014-01-13 2016-02-09 Cisco Technology, Inc. Dynamic filtering for SDN API calls across a security boundary
CN106161373B (zh) * 2015-04-10 2020-11-06 腾讯科技(深圳)有限公司 一种安全防护信息提示方法、安全监控装置以及系统
US10599662B2 (en) * 2015-06-26 2020-03-24 Mcafee, Llc Query engine for remote endpoint information retrieval
WO2017122353A1 (ja) * 2016-01-15 2017-07-20 株式会社日立製作所 計算機システム及びその制御方法
CN105550030A (zh) * 2016-01-28 2016-05-04 浪潮电子信息产业股份有限公司 一种安全能力聚合系统
US10530812B2 (en) * 2016-03-31 2020-01-07 Hyland Software, Inc. Methods and apparatuses for providing configurable security models
CN106254346B (zh) * 2016-08-03 2019-04-19 广州品唯软件有限公司 安全策略更新方法及系统
CN106911462B (zh) * 2017-01-18 2020-03-24 南宁师范大学 基于基因表达式编程的无线路由器密码分析方法
US10033750B1 (en) 2017-12-05 2018-07-24 Redberry Systems, Inc. Real-time regular expression search engine
US9967272B1 (en) 2017-12-05 2018-05-08 Redberry Systems, Inc. Real-time regular expression search engine
CN108108210A (zh) * 2018-01-11 2018-06-01 上海有云信息技术有限公司 安全产品的管理方法、装置、服务器及存储介质
CN108549595B (zh) * 2018-04-18 2021-06-08 江苏物联网研究发展中心 一种计算系统状态信息动态采集方法及系统
US11212322B2 (en) * 2018-10-10 2021-12-28 Rockwelll Automation Technologies, Inc. Automated discovery of security policy from design data
US11671433B2 (en) * 2020-04-21 2023-06-06 Zscaler, Inc. Data loss prevention incident forwarding
CN112131014B (zh) * 2020-09-02 2024-01-26 广州市双照电子科技有限公司 决策引擎系统及其业务处理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003085139A (ja) * 2001-09-10 2003-03-20 Mitsubishi Electric Corp 侵入検知管理システム
JP2003203011A (ja) * 2001-10-16 2003-07-18 Microsoft Corp 仮想分散セキュリティシステム
WO2003096168A2 (en) * 2002-05-09 2003-11-20 Kavado Inc. Method for the automatic setting and updating of a security policy
JP2004220120A (ja) * 2003-01-09 2004-08-05 Nippon Telegr & Teleph Corp <Ntt> ネットワークセキュリティシステム、アクセス制御方法、認証機構、ファイアウォール機構、認証機構プログラム、ファイアウォール機構プログラム及びその記録媒体

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4104721A (en) 1976-12-30 1978-08-01 International Business Machines Corporation Hierarchical security mechanism for dynamically assigning security levels to object programs
US4970504A (en) 1987-05-26 1990-11-13 Chen Hai C Security system
US6006328A (en) 1995-07-14 1999-12-21 Christopher N. Drake Computer software authentication, protection, and security system
US6119236A (en) 1996-10-07 2000-09-12 Shipley; Peter M. Intelligent network security device and method
US6178173B1 (en) 1996-12-30 2001-01-23 Paradyne Corporation System and method for communicating pre-connect information in a digital communication system
US6173404B1 (en) 1998-02-24 2001-01-09 Microsoft Corporation Software object security mechanism
US6408391B1 (en) 1998-05-06 2002-06-18 Prc Inc. Dynamic system defense for information warfare
US7673323B1 (en) * 1998-10-28 2010-03-02 Bea Systems, Inc. System and method for maintaining security in a distributed computer network
US6158010A (en) * 1998-10-28 2000-12-05 Crosslogix, Inc. System and method for maintaining security in a distributed computer network
US6530024B1 (en) 1998-11-20 2003-03-04 Centrax Corporation Adaptive feedback security system and method
CA2287689C (en) * 1998-12-03 2003-09-30 P. Krishnan Adaptive re-ordering of data packet filter rules
US6301668B1 (en) 1998-12-29 2001-10-09 Cisco Technology, Inc. Method and system for adaptive network security using network vulnerability assessment
US20040139004A1 (en) 1999-04-08 2004-07-15 Aceinc Pty Ltd. Secure online commerce transactions
ATE326801T1 (de) 1999-06-10 2006-06-15 Alcatel Internetworking Inc Virtuelles privates netzwerk mit automatischer aktualisierung von benutzererreichbarkeitsinformation
US6910135B1 (en) 1999-07-07 2005-06-21 Verizon Corporate Services Group Inc. Method and apparatus for an intruder detection reporting and response system
US6789202B1 (en) * 1999-10-15 2004-09-07 Networks Associates Technology, Inc. Method and apparatus for providing a policy-driven intrusion detection system
US6684244B1 (en) 2000-01-07 2004-01-27 Hewlett-Packard Development Company, Lp. Aggregated policy deployment and status propagation in network management systems
DE60141695D1 (de) * 2000-04-07 2010-05-12 Network Appliance Inc Verfahren und gerät zur sicheren und skalierbaren übertragung von datendateien in verteilten netzwerken
US6884244B1 (en) * 2000-06-06 2005-04-26 Roger P. Jackson Removable medical implant closure for open headed implants
US20040003266A1 (en) 2000-09-22 2004-01-01 Patchlink Corporation Non-invasive automatic offsite patch fingerprinting and updating system and method
US6513721B1 (en) 2000-11-27 2003-02-04 Microsoft Corporation Methods and arrangements for configuring portable security token features and contents
US7010807B1 (en) 2001-04-13 2006-03-07 Sonicwall, Inc. System and method for network virus protection
KR20030003593A (ko) * 2001-07-03 2003-01-10 (주) 해커스랩 제한조건 동안 특정 보안정책을 적용할 수 있는 네트워크보안장치 및 네트워크 보안방법
KR20030016500A (ko) * 2001-08-20 2003-03-03 한국전자통신연구원 정책기반 네트워크 보안 시스템과 그를 이용한 보안 및보안정책 결정 방법
US20030065942A1 (en) 2001-09-28 2003-04-03 Lineman David J. Method and apparatus for actively managing security policies for users and computers in a network
US8776230B1 (en) * 2001-10-02 2014-07-08 Mcafee, Inc. Master security policy server
MXPA04006473A (es) 2001-12-31 2004-10-04 Citadel Security Software Inc Sistema de resolucion automatizado para vulnerabilidad de computadora.
US7093292B1 (en) * 2002-02-08 2006-08-15 Mcafee, Inc. System, method and computer program product for monitoring hacker activities
US7359962B2 (en) 2002-04-30 2008-04-15 3Com Corporation Network security system integration
KR100456622B1 (ko) * 2002-05-27 2004-11-10 한국전자통신연구원 정책기반의 네트워크 보안 관리 시스템에 있어서 시스템함수를 이용한 정책 제공 및 실행방법
US20030236994A1 (en) 2002-06-21 2003-12-25 Microsoft Corporation System and method of verifying security best practices
US20040015719A1 (en) 2002-07-16 2004-01-22 Dae-Hyung Lee Intelligent security engine and intelligent and integrated security system using the same
US20040064731A1 (en) 2002-09-26 2004-04-01 Nguyen Timothy Thien-Kiem Integrated security administrator
US7712133B2 (en) 2003-06-20 2010-05-04 Hewlett-Packard Development Company, L.P. Integrated intrusion detection system and method
US7346922B2 (en) 2003-07-25 2008-03-18 Netclarity, Inc. Proactive network security system to protect against hackers
US20050262362A1 (en) 2003-10-10 2005-11-24 Bea Systems, Inc. Distributed security system policies
US7661123B2 (en) 2003-12-05 2010-02-09 Microsoft Corporation Security policy update supporting at least one security service provider
US7657923B2 (en) * 2004-07-23 2010-02-02 Microsoft Corporation Framework for a security system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003085139A (ja) * 2001-09-10 2003-03-20 Mitsubishi Electric Corp 侵入検知管理システム
JP2003203011A (ja) * 2001-10-16 2003-07-18 Microsoft Corp 仮想分散セキュリティシステム
WO2003096168A2 (en) * 2002-05-09 2003-11-20 Kavado Inc. Method for the automatic setting and updating of a security policy
JP2005530223A (ja) * 2002-05-09 2005-10-06 カバドゥ・インク セキュリティポリシーの自動設定および更新のための方法
JP2004220120A (ja) * 2003-01-09 2004-08-05 Nippon Telegr & Teleph Corp <Ntt> ネットワークセキュリティシステム、アクセス制御方法、認証機構、ファイアウォール機構、認証機構プログラム、ファイアウォール機構プログラム及びその記録媒体

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5482783B2 (ja) * 2009-03-05 2014-05-07 日本電気株式会社 セキュリティ管理装置、方法、及びプログラム、並びにセキュリティ分散システム
JP2014089741A (ja) * 2010-07-21 2014-05-15 Samsung Sds Co Ltd システムオンチップ基盤のアンチマルウェアサービスを提供できるデバイス及びその方法
JP2016053979A (ja) * 2010-07-28 2016-04-14 マカフィー, インコーポレイテッド 悪意のあるソフトウェアに対するローカル保護をするシステム及び方法

Also Published As

Publication number Publication date
EP1542426A3 (en) 2011-12-14
EP1542426B1 (en) 2014-12-03
CA2485062A1 (en) 2005-06-05
KR20050054818A (ko) 2005-06-10
BRPI0403523A (pt) 2005-08-23
EP1542426A2 (en) 2005-06-15
US7430760B2 (en) 2008-09-30
KR101122787B1 (ko) 2012-03-21
US20050125687A1 (en) 2005-06-09
CN1624657A (zh) 2005-06-08
RU2377639C2 (ru) 2009-12-27
CN1624657B (zh) 2011-06-08
AU2004218703A1 (en) 2005-06-23
JP4676744B2 (ja) 2011-04-27
RU2004135454A (ru) 2006-05-10
MXPA04011271A (es) 2005-06-09
AU2004218703B2 (en) 2010-01-07

Similar Documents

Publication Publication Date Title
JP4676744B2 (ja) セキュリティ関連プログラミング・インターフェース
KR102419574B1 (ko) 컴퓨터 애플리케이션에서 메모리 손상을 교정하기 위한 시스템 및 방법
US10242186B2 (en) System and method for detecting malicious code in address space of a process
US7836504B2 (en) On-access scan of memory for malware
US8595170B2 (en) Stateful reference monitor
US7509493B2 (en) Method and system for distributing security policies
US7739720B2 (en) Method and system for merging security policies
US9111089B1 (en) Systems and methods for safely executing programs
US20050125694A1 (en) Security policy update supporting at least one security service provider
EP1622062A2 (en) Framework for a security system
US20110191453A1 (en) Applicability detection using third party target state
RU2724790C1 (ru) Система и способ формирования журнала при исполнении файла с уязвимостями в виртуальной машине
US20220108004A1 (en) Trusted execution environment (tee) detection of systemic malware in a computing system that hosts the tee
WO2022246437A1 (en) Automated interpreted application control for workloads
US8201253B1 (en) Performing security functions when a process is created
CN115362433A (zh) 用于动态代码的影子堆栈强制范围
JP2010205186A (ja) 情報処理装置と方法とプログラム
EP1944676A1 (en) Stateful reference monitor
US10997285B2 (en) Selectively blocking the loading of a privileged application
JP7255681B2 (ja) 実行制御システム、実行制御方法、及びプログラム
US11709937B2 (en) Inactivating basic blocks of program code to prevent code reuse attacks
US20240265084A1 (en) Selectively validating and enabling resource enablers of a secure workspace
RU2583709C2 (ru) Система и способ устранения последствий заражения виртуальных машин

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071030

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101005

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110105

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110125

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110128

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140204

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4676744

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees