図面および以下の説明は、単に例示として特定の実施形態を説明する。本明細書において示される構造および方法の代替的な実施形態が、本明細書において説明される原理を逸脱することなく採用されてよいことを、当業者は以下の説明から容易に理解するであろう。これ以降、いくつかの実施形態に参照が行われ、実施形態の例は添付の図面に示される。実施可能な限り、類似するかまたは同様の参照番号は、図面において使用されてよく、類似するかまたは同様の機能を示してよいことに留意されたい。
図1は、1つの実施形態に従った、管理ドメイン150のサーバ(物理または仮想)130を管理するための環境100を示す高レベルブロック図である。管理ドメイン150は、たとえば、サービスプロバイダ、法人、大学、または政府機関のような、企業に対応することができる。環境100は、企業自身によって、または企業によるそのサーバ130の管理を支援する第三者(たとえば、第2の企業)によって維持されてよい。図示されているように、環境100は、ネットワーク110、グローバルマネージャ120、複数の管理対象サーバ130、および複数の非管理対象デバイス140を含む。複数の管理対象サーバ130および複数の非管理対象デバイス140は、管理ドメイン150に関連付けられている。たとえば、これらは、企業によって、または企業の代行として第三者(たとえば、パブリッククラウドサービスプロバイダ)によって運用される。1つのグローバルマネージャ120、2つの管理対象サーバ130、および2つの非管理対象デバイス140は、明確にするために図1に示される実施形態において図示されるが、その他の実施形態は、異なる数のグローバルマネージャ120、管理対象サーバ130、および/または非管理対象デバイス140を有することができる。
ネットワーク110は、グローバルマネージャ120と、管理対象サーバ130と、非管理対象デバイス140との間の通信経路を表す。1つの実施形態において、ネットワーク110は、標準通信技術および/またはプロトコルを使用し、インターネットを含むことができる。もう1つの実施形態において、ネットワーク110上のエンティティは、カスタムおよび/または専用のデータ通信技術を使用することができる。
管理対象サーバ130は、管理ドメイン全体管理ポリシ330(図3に図示される)を実施するマシン(物理または仮想)である。1つの実施形態において、サーバは、オペレーティングシステムレベルの仮想化に従った仮想サーバ(場合によっては、コンテナ、仮想化エンジン、仮想プライベートサーバ、またはジェイル(jail)と称されることもある)のユーザスペースインスタンスであり、これはオペレーティングシステムのカーネルが1つのみのインスタンスの代わりに、複数の分離された(isolated)ユーザスペースインスタンスを可能にするサーバ仮想化の方法である。管理対象サーバ130が物理マシンである場合、管理対象サーバ130は、コンピュータまたはコンピュータの集合である。管理対象サーバ130が仮想マシンである場合、管理対象サーバ130は、コンピュータまたはコンピュータの集合上で実行する。管理ドメイン全体管理ポリシ330は、管理ドメイン150に関連付けられているエンティティがその他のエンティティにアクセスする(もしくはその他のエンティティによってアクセスされる)こと、またはサービスを消費(もしくは提供)することを許可されるかどうか、および/またはどのように許可されるかを指定する。たとえば、管理ドメイン全体管理ポリシ330は、セキュリティまたはリソース使用を指定する。セキュリティポリシは、アクセス制御、セキュア接続性、ディスク暗号化、および/または実行可能処理の制御を指定してよいが、リソース使用ポリシは、管理ドメインのコンピューティングリソース(たとえば、ディスク、周辺機器、および/または帯域幅)の使用を指定してよい。
管理対象サーバ130は、管理モジュール132、管理モジュール構成134、およびポリシ実施モジュール136を含む。管理モジュール132は、管理ドメイン全体管理ポリシ330を実施する。たとえば、セキュリティの場合、管理モジュール132は、オペレーティングシステムレベルのファイアウォール、インターネットプロトコルセキュリティ(IPsec)エンジン、もしくはネットワークトラフィックフィルタリングエンジン(たとえば、Windowsフィルタリングプラットフォーム(WFP)開発プラットフォームに基づく)のような低レベルのネットワークまたはセキュリティエンジンであってもよい。リソース使用の場合、管理モジュール132は、ディスク使用エンジンまたは周辺機器使用エンジンであってもよい。
管理モジュール構成134は、管理モジュール132の動作に影響を及ぼす。たとえば、セキュリティの場合、管理モジュール構成134は、ファイアウォールによって適用されるアクセス制御ルール、IPsecエンジン(たとえば、Linux(登録商標)オペレーティングシステムでiptablesエントリおよびipsetエントリとして具体化されている)によって適用されるセキュア接続性ポリシ、またはフィルタリングエンジンによって適用されるフィルタリングルールであってもよい。リソース使用の場合、管理モジュール構成134は、ディスク使用エンジンによって適用されるディスク使用ポリシ、または周辺機器使用エンジンによって適用される周辺機器使用ポリシであってもよい。
ポリシ実施モジュール136は、a)グローバルマネージャ120から受信した管理命令、およびb)管理対象サーバ130の状態に基づいて、管理モジュール構成134を生成する。管理命令は、部分的に、管理ドメイン全体管理ポリシ330に基づいて生成される。ポリシ実施モジュール136によって生成された管理モジュール構成134は、管理ドメイン全体管理ポリシ330を(ポリシが管理対象サーバ130に関与する範囲において)実施する。この2段階の処理(管理命令を生成するステップ、および管理モジュール構成134を生成するステップ)は、管理ポリシの「インスタンス化」と称される。ポリシ実施モジュール136はまた、管理対象サーバ130のローカル状態を監視し、グローバルマネージャ120にローカル状態情報を送信する。
1つの実施形態において、ポリシ実施モジュール136は、より大規模な専有(proprietary)モジュール(図示せず)の一部である。専有モジュールは、管理モジュール132および管理モジュール構成134を既に有するデバイス(または仮想デバイス)上にロードされて、それによりデバイス(または仮想デバイス)を非管理対象デバイス140から管理対象サーバ130に変換する。ポリシ実施モジュール136は、図4、図6、および図7を参照して以下においてさらに説明される。
非管理対象デバイス140は、ポリシ実施モジュール136を含まないコンピュータ(またはコンピュータの集合)である。非管理デバイス140は、管理ドメイン全体管理ポリシ330を実施しない。しかし、管理対象サーバ130と非管理対象デバイス140との間の対話は、管理ドメイン全体管理ポリシ330(管理対象サーバ130によって実施された)の影響を受けることがある。非管理対象デバイス140の1つの例は、管理ドメイン150によって使用されるネットワーク回路である。非管理対象デバイス140のもう1つの例は、個人によって使用されて管理ドメイン150に自身を認証させるデバイスである(たとえば、ノートブックもしくはデスクトップコンピュータ、タブレットコンピュータ、または携帯電話)。
グローバルマネージャ120は、管理対象サーバ130に対して管理命令を生成し、生成された管理命令をサーバに送信するコンピュータ(またはコンピュータの集合)である。管理命令は、a)管理ドメインのコンピュータネットワークインフラストラクチャ320の状態、およびb)管理ドメイン全体管理ポリシ330に基づいて生成される。管理ドメインのコンピュータネットワークインフラストラクチャ320の状態は、管理対象サーバ130の記述(descriptions)、および(オプションで)非管理対象デバイス140の記述を含む。グローバルマネージャ120はまた、管理対象サーバ130から受信したローカル状態情報を処理する。
管理ドメイン全体管理ポリシ330は、本明細書において「ラベル」と称されるそれらの高レベル特性に基づいて管理対象サーバ130を参照することができる論理管理モデルに基づく。ラベルは、「次元」(高レベル特性)および「値」(その高レベル特性の値)を含むペアである。この多次元スペースにおいて構築された管理ポリシは、単一特性のネットワーク/IPアドレスベースのポリシモデルに従って構築された管理ポリシよりもさらに意味を有する(expressive)。特に、「ラベル」の高レベル抽象概念(abstraction)を使用して管理ポリシを表現することで、人々は、管理ポリシをより深く理解し、視覚化し、かつ修正することができる。
論理管理モデル(たとえば、使用可能な次元の数およびタイプ、ならびにそれらの次元の取り得る値)は、構成可能である。1つの実施形態において、論理管理モデルは、表1に示されるように、後段の次元および値を含む。
論理管理モデルは、複数の管理対象サーバ130が、グループ内のすべての管理対象サーバ130を記述する1または複数のラベル(本明細書において「ラベルセット」と称される)を指定することによってグループ化されるようにすることができる。ラベルセットは、論理管理モデル内の次元に対してゼロの値または1の値のいずれかを含む。ラベルセットは、論理管理モデル内のすべての次元に対してラベルを含む必要はない。このようにして、論理管理モデルは、管理ドメインの管理対象サーバ130のセグメント化および分離、ならびに管理対象サーバ130の任意のグループ化の作成を可能にする。論理管理モデルはまた、単一の管理対象サーバ130が、複数の重複する集合(つまり、管理対象サーバの複数の重複するグループ)に存在することを許可する。論理管理モデルは、単一の管理対象サーバ130が、ネスト化された(nested)集合の階層に存在するよう限定することはない。
たとえば、セキュリティの場合、セグメント化は、特定のポリシの影響を受ける管理対象サーバ130のグループを定義するためにアクセス制御ポリシと共に使用されてもよい。同様に、セグメント化は、管理対象サーバ130のグループを定義するためのセキュア接続性ポリシ、ならびにグループ内通信およびグループ間通信に適用するポリシと共に使用されてもよい。したがって、管理対象サーバ130の第1のグループ(第1のラベルセットによって指定された)間の通信は、第1のセキュア接続設定(たとえば、セキュア接続は要求されない)に制限されることがあり、および管理対象サーバの第1のグループと管理対象サーバの第2のグループ(第2のラベルセットによって指定された)との間の通信は、第2のセキュア接続設定(たとえば、IPsecカプセル化セキュリティペイロード(Encapsulating Security Payload)(ESP)/認証ヘッダ(Authentication Header)(AH)高度暗号化標準(Advanced Encryption Standard)(AES)/セキュアハッシュアルゴリズム−2(Secure Hash Algorithm-2)(SHA−2))に制限されることがある。
環境100内の各管理対象サーバ130は、管理ドメイン全体管理ポリシ330を(ポリシが管理対象サーバ130に関与する範囲において)実施する。その結果、管理ドメイン全体管理ポリシ330は、管理ドメイン150全体にわたって分散方式で適用され、チョークポイントは存在しない。また、管理ドメイン全体管理ポリシ330は、管理ドメインの物理ネットワークトポロジーおよびネットワークアドレス指定スキームにはかかわりなく、論理レベルにおいて適用される。
グローバルマネージャ120、管理ドメインのコンピュータネットワークインフラストラクチャ320の状態、および管理ドメイン全体管理ポリシ330については、図3、図5、および図8〜図11を参照して、以下においてさらに説明される。
<コンピュータ>
図2は、1つの実施形態に従った、図1に示されるエンティティの1または複数として使用するコンピュータ200の例を示す高レベルブロック図である。示されているのは、チップセット204に結合された少なくとも1つのプロセッサ202である。チップセット204は、メモリコントローラハブ220、および入出力(I/O)コントローラハブ222を含む。メモリ206およびグラフィックスアダプタ212は、メモリコントローラハブ220に結合され、ディスプレイデバイス218は、グラフィックスアダプタ212に結合される。ストレージデバイス208、キーボード210、ポインティングデバイス214、およびネットワークアダプタ216は、入出力コントローラハブ222に結合される。コンピュータ200のその他の実施形態は、さまざまなアーキテクチャを有する。たとえば、メモリ206は、一部の実施形態において、プロセッサ202に直接結合される。
ストレージデバイス208は、ハードドライブ、コンパクトディスクリードオンリメモリ(CD−ROM)、DVD、またはソリッドステートメモリデバイスのような、1または複数の非一時的コンピュータ可読記憶媒体を含む。メモリ206は、プロセッサ202によって使用される命令およびデータを保持する。ポインティングデバイス214は、データをコンピュータシステム200に入力するために、キーボード210と組み合わせて使用される。グラフィックスアダプタ212は、ディスプレイデバイス218上に画像およびその他の情報を表示する。一部の実施態様において、ディスプレイデバイス218は、ユーザの入力および選択を受信するためのタッチスクリーン機能を含む。ネットワークアダプタ216は、コンピュータシステム200をネットワーク110に結合する。コンピュータ200の一部の実施形態は、図2に図示される実施形態とは異なるコンポーネントおよび/またはその他のコンポーネントを有する。たとえば、グローバルマネージャ120および/または管理対象サーバ130は、複数のブレードサーバで形成されて、ディスプレイデバイス、キーボード、およびその他のコンポーネントを備えていない場合もあり、非管理対象デバイス140は、ノートブックもしくはデスクトップコンピュータ、タブレットコンピュータ、または携帯電話であってもよい。
コンピュータ200は、本明細書において説明される機能を提供するためにコンピュータプログラムモジュールを実行するように適合される。本明細書において使用されるように、「モジュール」という用語は、指定された機能を提供するために使用されるコンピュータプログラム命令および/またはその他の論理を指す。したがって、モジュールは、ハードウェア、ファームウェア、および/またはソフトウェアにおいて実施され得る。1つの実施形態において、実行可能コンピュータプログラム命令で形成されるプログラムモジュールは、ストレージデバイス208に記憶され、メモリ206にロードされ、プロセッサ202によって実行される。
<グローバルマネージャ>
図3は、1つの実施形態に従った、グローバルマネージャ120の詳細な表示を示す高レベルブロック図である。グローバルマネージャ120は、リポジトリ300、および処理サーバ310を含む。リポジトリ300は、管理ドメインのコンピュータネットワークインフラストラクチャ320の状態、および管理ドメイン全体管理ポリシ330を記憶するコンピュータ(またはコンピュータの集合)である。1つの実施形態において、リポジトリ300は、要求に応じて、処理サーバ310に、管理ドメイン状態320および管理ポリシ330へのアクセスを提供するサーバを含む。
<管理ドメイン状態>
管理ドメインのコンピュータネットワークインフラストラクチャ320の状態は、管理対象サーバ130の記述、および(オプションで)非管理対象デバイス140の記述を含む。管理対象サーバ130の記述は、たとえば、一意の識別子(UID)、オンライン/オフラインインジケータ、1または複数の構成済み特性(オプション)、ネットワーク公開情報、サービス情報、および管理対象サーバ130を記述する1または複数のラベル(ラベルセット)を含む。
UIDは、管理対象サーバ130を一意に識別する。オンライン/オフラインインジケータは、管理対象サーバ130がオンラインまたはオフラインのいずれであるかを示す。「構成済み特性」は、管理対象サーバ130に関連付けられている値を記憶し、任意のタイプの情報であってもよい(たとえば、どのオペレーティングシステムが管理対象サーバ上で稼働しているかのインジケーション)。構成済み特性は、(以下において説明される)ルールの条件部分と併せて使用される。
ネットワーク公開情報は、管理対象サーバのネットワークインタフェースに関する。1つの実施形態において、ネットワーク公開情報は、管理対象サーバのネットワークインタフェースの各々について、ネットワークインタフェースが取り付けられる「双方向到達可能ネットワーク(bidirectionally-reachable network)」(BRN)の識別子、およびBRN内で動作するために使用されるゼロまたは1以上のIPアドレス(およびそれらのサブネット)を含む。BRNは、組織内または組織全体にわたるサブネットの集合であり、BRN内の任意のノードは、BRNの任意の他のノードとの通信を確立することができる。たとえば、BRN内のすべてのノードは、一意のIPアドレスを有する。言い換えれば、BRNは、NATを含んではいない。ネットワーク公開情報(たとえば、ネットワークインタフェースのBRN識別子)は、ルールの条件部分と併せて使用されてもよい。
もう1つの実施形態において、ネットワーク公開情報は、ルーティング情報および/または管理対象サーバがネットワークアドレストランスレータ(NAT)の後方にあるかどうか(さらにそれがNATの後方にある場合、NATのどのタイプ、1:1または1:Nであるか)を含む。グローバルマネージャ120は、管理対象サーバ130がネットワークアドレストランスレータ(NAT)の後方にあるかどうか(さらにそれがNATの後方にある場合、NATのどのタイプ、1:1または1:Nであるか)を判定することができる。たとえば、グローバルマネージャ120は、(a)グローバルマネージャとサーバとの間のTCP接続に従ったサーバのIPアドレスと、(b)サーバから受信したローカル状態情報に従ったサーバのIPアドレスとを比較することによって、グローバルマネージャ120と管理対象サーバ130との間にNATが存在するかどうかを判定する。(a)と(b)が異なる場合、グローバルマネージャ120と管理対象サーバ130との間にNATが存在する。NATが存在しない場合、グローバルマネージャ120は、データセンタ検出を実行することによって、NATのタイプ(1:1または1:N)を判定する。たとえば、グローバルマネージャ120は、データセンタのパブリックIPアドレスによりサーバのデータセンタを識別する。(あるいは、管理対象サーバは、サーバの外部であるがデータセンタの内部である情報にクエリを実行することによってデータセンタ検出を実行する。次いで、サーバは、その情報をローカルステータスの一部としてグローバルマネージャに送信する。)構成情報は、どのタイプのNATがどのデータセンタによって使用されるかを示す。NAT情報が特定のデータセンタに関連付けられていない場合、グローバルマネージャ120は、NATのタイプが1:Nであると仮定する。
サービス情報は、たとえば、処理情報および/またはパッケージ情報を含む。処理情報は、たとえば、管理対象サーバ130が稼働している処理の名前、それらの処理がリスンしているネットワークポートおよびネットワークインタフェース、それらの処理を開始したユーザ、それらの処理の構成、それらの処理のコマンドライン開始引数、およびそれらの処理の従属性(たとえば、それらの処理がリンクする共有オブジェクト)を含む。(それらの処理は、サービスを提供するか、またはサービスを使用する管理対象サーバ130に対応する。)パッケージ情報は、たとえば、どのパッケージ(実行可能ファイル、ライブラリ、またはその他のコンポーネント)が管理対象サーバ130にインストールされているか、それらのパッケージのバージョン、それらのパッケージの構成、およびそれらのパッケージのハッシュ値を含む。
非管理対象デバイス140の記述は、たとえば、ネットワーク公開情報(たとえば、非管理対象デバイス140のIPアドレス、および非管理対象デバイス140が接続されているBRNの識別子)を含む。非管理対象デバイス140は、「非管理対象デバイスグループ」(UDG)の一部である。UDGは、1または複数の非管理対象デバイス140を含む。たとえば、「Headquarters UDG」は、一次回路および管理ドメインの本部によって使用されるバックアップ回路を含む場合もあり、各回路はIPアドレスに関連付けられている。UDGは、一意の識別子(UID)に関連付けられている。UDGに関して管理ドメイン状態320に記憶されている情報は、UDGのUID、およびUDG内の非管理対象デバイス140に関する情報(たとえば、それらのネットワーク公開情報)を含む。
管理対象サーバ130および非管理対象デバイス140の記述は、グラフィカルユーザインタフェース(GUI)またはアプリケーションプログラミングインタフェース(API)を介してグローバルマネージャ120と対話することによってなど、さまざまな方法で管理ドメイン状態320にロードされてもよい。管理対象サーバ130の記述はまた、管理対象サーバから受信したローカルステータス情報に基づいて管理ドメイン状態320にロードされてもよい(以下において説明される)。
特に管理対象サーバのラベル(および、ある場合は構成済み特性)に関して、次元の値の割り当て(もしくは再割り当て)(または構成済み特性の値の設定)は、さらに多くの方法で実行されてもよい。たとえば、割り当て/設定は、管理対象サーバ130のプロビジョニング(provisioning)の一部として配備および構成ツールを使用して実行されてもよい。既成のサードパーティツール(たとえば、Puppet LabsのPuppetソフトウェア、OpscodeのChefソフトウェア、またはCFEngine ASのCFEngineソフトウェア)、および管理ドメイン150が有する場合もあるカスタムツールを含む、任意のそのようなツールが使用されてもよい。
もう1つの例として、割り当て/設定は、ラベルおよび/または構成済み特性(「CC」)値を算出する「ラベル/構成済み特性エンジン」(図示せず)によって実行されてもよい。1つの実施形態において、ラベル/CCエンジンは、ラベル/CC割り当てルールに基づいて、ラベル/CC値を算出する。ラベル/CC割り当てルールは、管理ドメイン状態320からデータにアクセスし、ラベルまたはCC値を割り当てる(またはラベルもしくはCC値の割り当てを提案する)機能である。ラベル/CC割り当てルールは、事前設定またはユーザ構成可能であってもよい。たとえば、グローバルマネージャ120は、事前定義済みルールのセットを含むが、エンドユーザは、それらのルールを修正および/または削除し、ユーザの各自のカスタム要件に基づいて新しいルールを追加することができる。ラベル/CC割り当てルールは、初期化処理の間に、管理対象サーバ130に対して評価されてもよい。次いで、ラベル/CC値提案(suggestion)は、任意の次元/CCについて実行されてもよく、エンドユーザは、それらの提案を受諾または拒否することができる。たとえば、管理対象サーバ130がPostgresデータベースまたはMySQLデータベースを実行している場合、提案されるラベルは<Role,Database>であってもよい。管理対象サーバがLinuxオペレーティングシステムを実行している場合、オペレーティングシステムCCについて提案される値は、「Linux」であってもよい。
もう1つの実施形態において、ラベル/CCエンジンは、クラスタ分析に基づいて、ラベル/CC値を算出する。たとえば、ラベル/CCエンジンは、連結グラフの、最小カット(min-cut)およびK平均法(K-means)アルゴリズムの組合せを、追加のヒューリスティックと共に使用して、高度に接続された管理対象サーバ130のクラスタを自動的に識別する。管理対象サーバ130のクラスタは、管理ドメイン150内の「アプリケーション」に対応してよい(表1を参照)。エンドユーザは、アプリケーション次元(または任意の他の次元)の値を、それらの管理対象サーバ130に全体として適用するよう選択することができる。
<管理ドメイン全体管理ポリシ>
管理ドメイン全体管理ポリシ330は、1または複数のルールを含む。大まかに言うと、「ルール」は、サービスの1または複数の提供者と、そのサービスの1または複数の消費者との間の関係を指定する。
ルール機能(rule function):関係は「ルール機能」に従い、これはルールの実質的な影響である。たとえば、セキュリティの場合、ルール機能は、アクセス制御、セキュア接続性、ディスク暗号化、または実行可能処理の制御であってもよい。アクセス制御機能を伴うルールは、消費者が提供者のサービスを使用してよいかどうかを指定する。1つの実施形態において、アクセス制御機能は、純粋な「ホワイトリスト」モデルを使用するが、これは許可可能な関係のみが表現され、すべての他の関係はデフォルトでブロックされることを意味する。セキュア接続性機能を伴うルールは、どのセキュアチャネル(たとえば、ポイントツーポイントのデータ暗号化を使用する暗号化ネットワークセッション)を介して消費者が提供者のサービスを使用してよいかを指定する。たとえば、セキュア接続性機能を伴うルールは、提供者がUSに位置し、消費者がEUに位置している場合に、提供者のサービスの使用が暗号化される必要があることを指定することができる。ディスク暗号化機能を伴うルールは、提供者がそのデータを暗号化ファイルシステム上に記憶する必要があるかどうかを指定する。実行可能処理制御機能を伴うルールは、処理が実行を許可されるかどうかを指定する。
リソース使用の場合、ルール機能は、ディスク使用または周辺機器使用であってもよい。ディスク使用機能を伴うルールは、消費者が提供者に記憶することができるデータの量を指定する。ルールが、アクセス制御、セキュア接続性、ディスク暗号化、実行可能処理の制御、ディスク使用、および周辺機器使用のみにとどまらず、その他のルール機能も指定できることに留意されたい。たとえば、ルール機能は、ネットワークトラフィックに適用する開放型システム間相互接続(OSI:Open Systems Interconnection)モデルレイヤ7サービス、セキュリティ分析のために収集するメタデータの量、または完全なネットワークパケットを取得ためのトリガを指定することができる。管理ポリシモデルは、適用され得るルール機能の任意の数をサポートする。
ルール機能は、ルールの実質的な影響に関する詳細を指定する1または複数の設定(本明細書において「機能プロファイル」と称される)に関連付けられてもよい。たとえば、セキュア接続性ルール機能に関連付けられている設定は、ネットワークトラフィックを暗号化するために使用される暗号アルゴリズムのリストであってもよい。1つの実施形態において、ルール機能は、複数の機能プロファイルに関連付けられ、機能プロファイルは優先順位を含む。この優先順位は、以下において説明されるように、機能レベル命令生成モジュール360によって使用される。
サービス:一般に、「サービス」は、固有のネットワークプロトコルを使用して固有のネットワークポートで実行する任意の処理である。管理ポリシ330内のルールのサービスは、(管理ドメイン状態320内の管理対象サーバ130の記述に関して上記で説明される)処理情報および/またはパッケージ情報のような、ポート/プロトコルのペアおよび(オプションで)追加の資格(qualification)によって指定される。管理対象サーバ130が複数のネットワークインタフェースを有する場合、サービスは、すべてのネットワークで公開されるか、またはそれらのネットワークのサブセットのみで公開されてもよい。エンドユーザは、サービスが公開されるネットワークを指定する。ルール機能に応じて、サービスがネットワークリソースを使用しなくてよい場合もあることに留意されたい。たとえば、実行可能処理制御ルール機能のサービスは、ネットワークプロトコルを使用してネットワークポートでは実行しない。
提供者/消費者−サービスの1または複数の提供者およびサービスの1または複数の消費者(つまりユーザ)は、管理対象サーバ130および/または非管理対象デバイス140である。
1つの実施形態において、ルールは、ルール機能部分(rule function portion)、サービス部分(service portion)、提供側部分(provided-by portion)、使用側部分(used-by portion)、およびオプションのルール条件部分(rule condition portion)を含む情報のセットを使用して、管理ドメイン全体管理ポリシ330内で表される。ルール機能部分は、ルールの実質的な影響を記述し、1または複数の設定(機能プロファイル)に関連付けられてもよい。サービス部分は、ルールが適用するサービスを記述する。サービス部分が「All(すべて)」を示す場合、ルールはすべてのサービスに適用する。
提供側(PB)部分は、どの管理対象サーバ130および/または非管理対象デバイス140がサービスを提供することができるか(つまり、誰が「提供者」であるか)を記述する。PB部分が「Anybody(誰でも)」を示す場合、誰でも(たとえば、任意の管理対象サーバ130または非管理対象デバイス140)がサービスを提供することができる。PB部分が「Any managed server(任意の管理対象サーバ)」を示す場合、任意の管理対象サーバ130がサービスを提供することができる。(「任意の管理対象サーバ」は、ワイルドカードを含むラベルセットを指定することと等価であり、それによりすべての管理対象サーバ130を一致する。)使用側(UB)部分は、どの管理対象サーバ130および/または非管理対象デバイス140がサービスを使用することができるか(つまり、誰が「消費者」であるか)を記述する。PB部分と同様に、UB部分もまた、「Anybody(誰でも)」または「Any managed server(任意の管理対象サーバ)」を示すことができる。
PB部分およびUB部分内で、管理対象サーバ130は、ラベルセットつまり、管理対象サーバを記述する1または複数のラベル)またはUIDを使用することによって指定される。ラベルセットを使用して管理対象サーバ130を指定することができる能力は、論理管理モデルに起因するが、これは管理対象サーバをそれらの次元および値(ラベル)に基づいて参照する。非管理対象デバイス140は、非管理対象デバイスグループ(UDG)のUIDを使用することによって指定される。ルールがUDGを指定する場合、ルールは、そのグループ内の非管理対象デバイス140に関する追加情報(たとえば、デバイスのネットワーク公開情報)を含む。ルールのPB部分および/またはルールのUB部分は、(管理対象サーバ130を指定するための)ラベルセット、管理対象サーバUID、および/またはUDG UIDを含む複数の項目を含むことができる。
オプションであるルール条件部分は、ルールが、特定の管理対象サーバ130および/またはその管理対象サーバの特定のネットワークインタフェースに適用するかどうかを指定する。ルール条件部分は、1または複数の構成済み特性(「CC」、管理ドメイン状態320の管理対象サーバの記述の一部)および/またはネットワーク公開情報(たとえば、ネットワークインタフェースのBR識別子、また管理ドメイン状態320の管理対象サーバの記述の一部)を含むブール表現である。表現のCC部分は、ルールが、特定の管理対象サーバに適用するかどうかを指定するが、表現のネットワーク公開情報部分は、ルールが、その管理対象サーバの特定のネットワークインタフェースに適用するかどうかを指定する。表現が、特定の管理対象サーバの構成済み特性(具体的に、その管理対象サーバの構成済み特性の値に対して)および特定のネットワークインタフェースの情報に対して「真」であると評価する場合、ルールは、その管理対象サーバおよびその管理対象サーバの関連するネットワークインタフェースに適用する。表現が「偽」であると評価する場合、ルールは、その管理対象サーバおよびその管理対象サーバの関連するネットワークインタフェースに適用しない。たとえば、構成済み特性が、どのオペレーティングシステムが管理対象サーバ上で稼働しているかのインジケーションを記憶する場合、その構成済み特性を含むルール条件部分は、ルールが、そのサーバのオペレーティングシステムに基づいて特定の管理対象サーバに適用するかどうかを制御することができる。
管理ドメイン全体管理ポリシ330内のルールは、ルールリストに構成される。具体的には、管理ポリシ330は、1または複数のルールリストを含み、ルールリストは、1または複数のルールおよび(オプションで)1または複数のスコープ(scope)を含む。「スコープ」は、どこに(つまり、どの管理対象サーバ130に)ルールが適用されるかを制約する。スコープは、ルールリスト内のルールの適用を限定する提供側(PB)部分および使用側(UB)部分を含む。スコープのPB部分は、ルールのPB部分を限定し、スコープのUB部分は、ルールのUB部分を限定する。スコープのPB部分およびUB部分は、ラベルセットを使用することによって、管理対象サーバ130のグループを指定することができる。ラベルセットが、固有の次元に対するラベルを含まない場合、その結果もたらされる管理対象サーバ130のグループに対してその次元のスコープは存在しない。ルールリストがスコープを含まない場合、そのルールは全体に適用される。
異なるスコープが、単一のルールリストに適用されてもよい。たとえば、エンドユーザは、Webサービスレイヤ(<Role,Web>ラベルを備える管理対象サーバ130)がどのようにデータベースレイヤ(<Role,Database>ラベルを備える管理対象サーバ)からのサービスを消費するか、ロードバランシングレイヤがどのようにWebサービス層からのサービスを消費するか、以下同様、を表現するルールのセットを構築することができる。次いで、エンドユーザが、このルールリストを自身の製作環境(<Environment,Production>ラベルを備える管理対象サーバ130)、および自身のステージング環境(<Environment,Staging>ラベルを備える管理対象サーバ)に適用しようとする場合、エンドユーザは、ルールリストをコピーまたは複製する必要はない。代わりに、エンドユーザは、単一のルールリストに複数のスコープを適用する(PB部分およびUB部分が<Environment,Production>ラベルを含む第1のスコープ、およびPB部分およびUB部分が<Environment,Staging>ラベルを含む第2のスコープ)。スコープ抽象化は、ユーザビリティの観点および計算の観点のいずれからも、ルールリストを基準化させる。
管理ドメイン全体管理ポリシ330が記述されたので、これ以降、いくつかの例を扱うことが有用となる。ユーザデバイスがWebサーバにアクセスし(第1のレイヤ)、Webサーバがデータベースサーバにアクセスする(第2のレイヤ)2レイヤアプリケーションを備える管理ドメイン150を検討する。第1のレイヤにおいて、ユーザデバイスは消費者であり、Webサーバは提供者である。第2のレイヤにおいて、Webサーバは消費者であり、データベースは提供者である。管理ドメイン150は、このアプリケーションの2つのインスタンス、つまり製作環境におけるインスタンスとステージング環境におけるインスタンスとを含む。
Webサーバおよびデータベースサーバは、管理対象サーバ130であり、これらの記述(たとえば、ラベルセット)は、管理ドメイン状態320内に存在する。たとえば、これらのラベルセットは、以下のとおりである。
製作におけるWebサーバ:<Role,Web>および<Environment,Production>
製作におけるデータベースサーバ:<Role,Database>および<Environment,Production>
ステージングにおけるWebサーバ:<Role,Web>および<Environment,Staging>
ステージングにおけるデータベースサーバ:<Role,Web>および<Environment,Staging>
(アプリケーション次元、業種次元、および位置次元はこの例に関連しないので、これらのラベルは省略される。)
これ以降、アクセス制御およびセキュア接続性を指定するセキュリティポリシである、後段の管理ドメイン全体管理ポリシ330を検討する。
ルールリスト#1
−スコープ
・<Environment,Production>
・<Environment,Staging>
−ルール
・#1
機能:アクセス制御
サービス:Apache
PB:<Role,Web>
UB:Anybody
・#2
機能:アクセス制御
サービス:PostgreSQL
PB:<Role,Database>
UB:<Role,Web>
ルールリスト#2
−スコープs:None
−ルール
・#1
機能:セキュア
サービス:All
PB:<Role,Database>
UB:Any managed server
上記のルールが、明確にするために、サービスを単に「Apache」および「PostgreSQL」と称することに留意されたい。サービスは、処理であり、(管理ドメイン状態320内の管理対象サーバ130の記述に関して上記で説明される)処理情報および/またはパッケージ情報のような、ポート/プロトコルのペアおよび(オプションで)追加の資格によって指定される。
ルールリスト#1/ルール#1は、任意のデバイス(たとえば、ユーザデバイス)が、Webサーバに接続してApacheサービスを使用することを許可する。具体的には、接続の許可は、機能部分(Function portion)において「アクセス制御」により指定される。「任意のデバイス」は、UB部分において「誰でも」により指定される。「Webサーバ」は、PB部分において「<Role,Web>」(1つのラベルのみを含むラベルセット)により指定される。Apacheサービスは、サービス部分において「Apache」により指定される。
ルールリスト#1/ルール#2は、Webサーバが、データベースサーバ上のPostgreSQLに接続することを許可する。具体的には、接続の許可は、機能部分において「アクセス制御」により指定される。「Webサーバ」は、UB部分において「<Role,Web>」により指定される。「PostgreSQL」は、サービス部分において「PostgreSQL」により指定される。「データベースサーバ」は、PB部分において「<Role,Database>」(1つのラベルのみを含むラベルセット)により指定される。
ルールリスト#1はまた、環境間の接続を回避する。たとえば、Webサーバは、Webサーバとデータベースサーバがいずれも同じ環境内にある場合(たとえば、共に製作環境にあるか、または共にステージング環境にある)、データベースサーバ上でPostgreSQLに接続することが許可される。製作環境にある両サーバは、スコープ部分(Scope portion)において「<Environment,Production>」(1つのラベルのみを含むラベルセット)によって指定されるが、ステージング環境にある両サーバは、スコープ部分において「<Environment,Staging>」(1つのラベルのみを含むラベルセット)によって指定される。(この例のスコープは、PB部分とUB部分を区別しないので、それぞれのスコープのラベルセットは、PB部分およびUB部分の両方に適用される。)その結果、Webサーバは、サーバが異なる環境内にある場合(たとえば、Webサーバがステージング環境にあり、データベースサーバが製作環境にある場合)データベースサーバ上でPostgreSQLに接続することが許可されない。
ルールリスト#2は、任意の管理対象サーバがデータベースサーバに接続する場合には必ず、その接続は暗号化チャネルを通じて行われる必要があることを記載している。具体的には、「データベースサーバ」は、PB部分において「<Role,Database>」により指定される。「暗号化チャネル」は、機能部分において「セキュア接続性」により指定される。「任意の管理対象サーバ」は、UB部分において「任意の管理対象サーバ」により指定される。「いつでも」は、サービス部分において「すべて」により指定される。
上記の例を離れ、後段の2つの管理対象サーバ130を検討するが、サーバ1は、製作の一部であり、app1の一部であって、カリフォルニアのエンジニアリングによって所有されているWebサーバである。これは、以下のようにラベル付けされる。
<Role,Web>
<Environment,Production>
<Application,app1>
<LB,Engineering>
<ロケーション、US>
サーバ2は、製作の一部であり、同様にapp1の一部であって、ドイツのエンジニアリングに所有されているデータベースサーバである。これは、以下のようにラベル付けされる。
<Role,Database Server>
<Environment,Production>
<Application,app1>
<LB,Engineering>
<Location,EU>
アクセス制御ルールが、すべてのアクセスを、app1の一部であるすべての管理対象サーバ130に許可することを仮定する。このルールは、サーバ1およびサーバ2が相互に通信することを許可し、app2の一部であるドイツの管理対象サーバ130が、サーバ1またはサーバ2と通信することを許可しない。これ以降、セキュア接続性ルールが、EUとUSとの間のすべてのネットワークトラフィックが暗号化される必要があることを指定すると仮定する。ルール機能は、独立して適用される。言い換えれば、セキュア接続性ルールは、アクセス制御ルールとは無関係に適用される別個のポリシである。その結果、サーバ1からサーバ2へのネットワークトラフィックは、(アクセス制御ルールを所与として)許容され、(セキュア接続性ルールを所与として)暗号化される。
<アクセス制御ルール>
図3に戻ると、管理ドメイン全体管理ポリシ330は、アクセス制御ルールのセット335を含み、これについては以下の「アクセス制御ルール」と題するセクションにおいて説明される。
<処理サーバ>
処理サーバ310は、管理対象サーバ130の管理命令を生成し、生成された管理命令をサーバに送信する。処理サーバ310はまた、管理対象サーバ130から受信したローカル状態情報を処理する。処理サーバ310は、ポリシエンジンモジュール340、関連ルールモジュール350、機能レベル命令生成モジュール360、アクタ列挙モジュール(actor enumeration module)370、関連アクタモジュール380、管理ドメイン状態更新モジュール385、およびアクセス制御ルール作成モジュール390のようなさまざまなモジュールを含む。1つの実施形態において、処理サーバ310は、リポジトリ300と通信するコンピュータ(またはコンピュータの集合)を含み、(たとえば、ポリシエンジンモジュール340、関連ルールモジュール350、機能レベル命令生成モジュール360、アクタ列挙モジュール370、関連アクタモジュール380、管理ドメイン状態更新モジュール385、およびアクセス制御ルール作成モジュール390を実行することによって)データを処理する。
関連ルールモジュール350は、管理ドメイン全体管理ポリシ330、および特定の管理対象サーバ130のインジケーション(たとえば、そのサーバのUID)を入力として取得し、そのサーバに関連するルールのセットを生成して、ルールのセットを出力する。これは、関連ルールモジュール350が管理ポリシ330を検査して、所与の管理対象サーバ130に対して関連するルールのみを抽出する、フィルタリング処理である。関連ルールモジュール350は、管理ポリシ330内のルールリストのすべてを反復し、各ルールリストのスコープを分析してスコープがこの管理対象サーバ130に適用するかどうかを判定し、(スコープがこの管理対象サーバ130に適用する場合)各ルールリストのルールを分析してそれらのルールがこの管理対象サーバ130に適用するかどうかを判定することによって、フィルタリングを実行する。ルールは、a)ルールのPB部分および/またはルールのUB部分が管理対象サーバを指定する、およびb)ルールの条件部分が(もしあれば)その管理対象サーバに対して(具体的には、その管理対象サーバの構成済み特性の値およびネットワーク公開情報に対して)「真」であると評価する場合、管理対象サーバ130に適用する。最終結果(本明細書において「管理ポリシパースペクティブ(management policy perspective)」と称される)は、この管理対象サーバ130がサービスを提供する場合のルール、およびこの管理対象サーバ130がサービスを消費する場合のルール、というルールの2つのセットの集合である。
機能レベル命令生成モジュール360は、ルールのセット(たとえば、関連ルールモジュール350によって生成された管理ポリシパースペクティブ)を入力として取得し、機能レベル命令を生成して、機能レベル命令を出力する。機能レベル命令は、後に、管理命令の一部として管理対象サーバ130に送信される。機能レベル命令は、各々がルール機能部分、サービス部分、PB部分、およびUB部分を含むという点において、ルールと類似している。しかし、ルールは、そのPB部分および/またはUB部分内に(ラベルセット、管理対象サーバUID、および/またはUDG UIDを含む)複数の項目を含むことができるが、機能レベル命令は、そのPB部分内に1つの項目のみ、およびそのUB部分内に1つの項目のみを含む。また、ルールは、そのPB部分および/またはUB部分内に(その複数のネットワークインタフェースを含む)管理対象サーバを指定することができるが、機能レベル命令は、そのPB部分およびUB部分内に1つのネットワークインタフェースのみを含む。
機能レベル命令生成モジュール360は、ルールを分析し、そのルールに基づいて1または複数の機能レベル命令を生成する。ルールのPB部分が複数の項目を含む場合、ルールのUB部分は複数の項目を含むか、または(PB部分またはUB部分内の)ルールによって参照される管理対象サーバが複数のネットワークインタフェースを有する場合、機能レベル命令生成モジュール360は、複数の機能レベル命令を生成する(たとえば、PB項目、UB項目、および特定のネットワークインタフェースの取り得る組合せごとに1つの機能レベル命令)。
ルールのPB部分に2つの項目(AおよびB)を含み、ルールのUB部分に2つの項目(CおよびD)を含むルールを検討する。機能レベル命令生成モジュール360は、1)PB=A、UB=C、2)PB=A、UB=D、3)PB=B、UB=C、4)PB=B、UB=D、のようなPB部分およびUB部分を伴う4つの機能レベル命令を生成する。これ以降、(たとえば、UIDまたはラベルセットを指定することによって)ルールのPB部分またはUB部分で管理対象サーバをカバーし、その管理対象サーバが複数のネットワークインタフェースを有するルールを検討する。機能レベル命令生成モジュール360は、複数の機能レベル命令を生成する(たとえば、管理対象サーバのネットワークインタフェースごとに1つの機能レベル命令)。
機能レベル命令生成モジュール360は、ルール、それらのルール内の機能、およびそれらのルールによって参照される機能プロファイルを分析する。ルールリストが複数のスコープを含む場合、機能レベル命令生成モジュール360は、それらのスコープを複数回、反復してルールリストに適用する(それにより、各スコープについて機能レベル命令の完全なセットを生成する)。ルール機能が複数の機能プロファイルに関連付けられてもよく、機能プロファイルは優先順位を含むことができることを想起されたい。機能レベル命令生成モジュール360は、最高の優先順位を備える機能プロファイルが使用されるように、さまざまな機能プロファイルの優先順位に基づいてルールを順序付ける。機能レベル命令生成モジュール360は、順序付けられたルールを、管理対象サーバ130が実行するように機能レベル命令に解釈する。機能レベル命令は、ルールに関連付けられているサービスのネットワーク公開の詳細を考慮して、適切な管理対象サーバ130および/または非管理対象デバイス140(たとえば、入力ルールで参照された管理対象サーバ130および/または非管理対象デバイス140)。
機能レベル命令生成モジュール360は、特定の管理対象サーバ130に対して、そのサーバには無関係であると判明する機能レベル命令を生成することができることに留意されたい。たとえば、その管理対象サーバはルールの提供側(PB)部分によってカバーされているので、機能レベル命令生成モジュール360は、対応する機能レベル命令を生成する。しかし、ルールはまた、管理対象サーバのローカル状態を指定する部分(たとえば、提供されるサービスを記述するサービス部分)も含む。グローバルマネージャ120は管理対象サーバのローカル状態(たとえば、管理対象サーバが実際にそのサービスを提供しているのかどうか)を認識していないので、生成される機能レベル命令は管理対象サーバに送信される。管理対象サーバは、そのローカル状態(たとえば、管理対象サーバがそのサービスを提供しているかどうか)を確認し、ポリシコンパイルモジュール410を参照して以下において説明されるように、それに応じて機能レベル命令を処理する。
アクタ列挙モジュール370は、管理対象サーバ130および非管理対象デバイスグループ(UDG)の記述(たとえば、管理ドメインのコンピュータネットワークインフラストラクチャ320の状態)の集合を入力として取得し、サーバおよびUDGのそれらの記述の表示を(「アクタセット」と称される)列挙型形式で生成して、アクタセットを出力する。たとえば、アクタ列挙モジュール370は、管理ドメイン状態320内の管理対象サーバ130およびUDG、および取り得るラベルセットを列挙して、各々に一意の識別子(UID)を割り当てる。次いで、これらのアクタセットは、管理対象サーバUID、UDG UID、および/またはラベルセットを使用してアクタを指定するルールおよびスコープのPB部分およびUB部分と併せて使用されてもよい。
Nの次元Di(i=1、...、N)の集合を含み、各次元Diが可能な値Vj(j=1、...、Mi)のセットSiを含む(ただし、ワイルドカード「*」は取り得る値のうちの1つである)論理管理モデルを検討する。1つの実施形態において、アクタ列挙モジュール370は、論理管理モデルに基づいて取り得るすべてのラベルセットを列挙するが、これはS1×S2×...SNによって与えられるデカルト積と等しい。このセットの大きさは、M1×M2×...×MNである。列挙処理は、管理対象サーバ130の多次元ラベルスペースを、単純な列挙型形式に縮小する。
もう1つの実施形態において、アクタ列挙モジュール370は、管理ドメイン状態320に基づいて(たとえば、管理ドメイン150内の管理対象サーバ130の記述に基づいて)取り得るラベルセットのみを列挙する。たとえば、2つの次元(XおよびY)を含み、各次元が3つの取り得る値(A、B、および*)を含む論理管理モデルを検討する。ラベルセット「<X=A>、<Y=B>」を備える管理対象サーバは、1)「<X=A>、<Y=B>」、2)「<X=A>、<Y=*>」、3)「<X=*>、<Y=B>」、および4)「<X=*>、<Y=*>」、という4つの取り得るラベルセットの要素であってもよい。管理対象サーバのラベルセットは2次元スペース(XおよびY)に存在するが、取り得るラベルセット2、3、および4は、管理対象サーバのラベルセットの下位次元スペースへの射影である(ラベルセット2は1次元スペース(X)、ラベルセット3は1次元スペース(Y)、およびラベルセット4は0次元スペース)。したがって、アクタ列挙モジュール370は、それらの4つの可能なラベルセットを列挙する。ラベルセット「<X=A>、<Y=B>」を備える管理対象サーバは、ラベルセット「<X=A>、<Y=A>」の要素とはなり得ないので、アクタ列挙モジュール370は、そのラベルセットを列挙しない。
さらにもう1つの実施形態において、アクタ列挙モジュール370は、管理ドメイン全体管理ポリシ330において(たとえば、ルールおよびスコープのUB部分およびPB部分において)使用されるラベルセットのみを列挙する。
アクタセットは、UID、およびゼロまたは1以上のアクタセットレコードを含む。アクタセットレコードは、UID(管理対象サーバUIDまたはUDG UIDのいずれか)、アクタのオペレーティングシステムの識別子、および固有のBRNを所与とするアクタ(管理対象サーバ130または非管理対象デバイス140)のIPアドレスを含む。たとえば、アクタセットは、IPアドレスが、<Role,Database>および<Environment,Production>のラベルセットによりカバーされる管理対象サーバ130のすべてに対応するアクタセットレコードを含んでもよい。もう1つの例として、アクタセットは、IPアドレスが、本部UDGの非管理対象デバイス140のすべてに対応するアクタセットレコードを含んでもよい。単一のアクタ(たとえば、管理対象サーバ130または非管理対象デバイス140)は、複数のアクタセットに出現することができる。
アクタセットの計算におけるもう1つの要因は、複数のネットワークインタフェースを備えるアクタに加えて、ネットワークアドレス変換(NAT)のようなネットワークトポロジーの包含である。したがって、<Role,Database>および<Environment,Production>のラベルセットについて、管理対象サーバ130のインターネット接続の(つまり、第1のBRNに関連付けられている)IPアドレスを備える1つのアクタセット、およびそれらの管理対象サーバのプライベートネットワーク接続の(つまり、第2のBRNに関連付けられている)IPアドレスを備える同じ管理対象サーバの別のアクタセット、という、2つのアクタセットがあってもよい。
1つの実施形態において、アクタ列挙モジュール370はまた、管理ドメイン状態320への変更に基づいてアクタセットを更新することもできる。たとえば、アクタ列挙モジュール370は、(アクタ列挙モジュールによって以前出力された)アクタセット、および(管理ドメイン状態320内の)管理対象サーバの記述の変更を入力として取得し、(変更されたサーバの記述と一貫する)更新済みのアクタセットを生成して、更新済みのアクタセットを出力する。アクタ列挙モジュール370は、管理対象サーバの記述への変更のタイプに応じて、さまざまな方法で更新済みのアクタセットを生成する。
オンライン/オフライン変更:記述の変更が、オンラインからオフラインにサーバが推移したことを示す場合、アクタ列挙モジュール370は、サーバが要素であったすべての入力アクタセットからサーバのアクタセットレコードを除去することによって更新済みのアクタセットを生成する。記述の変更が、オフラインからオンラインにサーバが推移したことを示す場合、アクタ列挙モジュール370は、サーバのアクタセットレコードを任意の関連する入力アクタセットに追加することによって更新済みのアクタセットを生成する。(必要な場合、アクタ列挙モジュール370は、新しいアクタセットを作成して、サーバのアクタセットレコードをその新しいアクタセットに追加する)。
ラベルセットの変更:記述の変更が、サーバのラベルセットが変更されたことを示す場合、アクタ列挙モジュール370は、これを第1のサーバ(古いラベルセットを備える)がオフラインになり、第2のサーバ(新しいラベルセットを備える)がオンラインになるかのように処理する。
ネットワーク公開情報の変更:記述の変更が、ネットワークインタフェースをサーバが除去したことを示す場合、アクタ列挙モジュール370は、サーバが要素であったすべての入力アクタセット(ネットワークインタフェースのBRNに関連付けられている)からサーバのアクタセットレコードを除去することによって更新済みのアクタセットを生成する。記述の変更が、ネットワークインタフェースをサーバが追加したことを示す場合、アクタ列挙モジュール370は、サーバのアクタセットレコードを(そのネットワークインタフェースのBRNに関連付けられている)任意の関連する入力アクタセットに追加することによって更新済みのアクタセットを生成する。(必要な場合、アクタ列挙モジュール370は、(そのネットワークインタフェースのBRNに関連付けられている)新しいアクタセットを作成して、サーバのアクタセットレコードをその新しいアクタセットに追加する)。記述の変更が、ネットワークインタフェースのBRNをサーバが変更したことを示す場合、アクタ列挙モジュール370は、これを第1のネットワークインタフェース(古いBRNを備える)が除去され、第2のネットワークインタフェース(新しいBRNを備える)が追加されるかのように処理する。記述の変更が、ネットワークインタフェースのIPアドレス(ただしBRNではない)をサーバが変更したことを示す場合、アクタ列挙モジュール370は、サーバが要素であったすべての(そのネットワークインタフェースのBRNに関連付けられている)入力アクタセット内のサーバのアクタセットレコードを修正することによって更新済みのアクタセットを生成する。
関連アクタモジュール380は、1または複数のアクタセット(たとえば、列挙型形式の管理ドメイン状態320内の管理対象サーバ130およびUDG)およびルールのセット(たとえば、管理ポリシパースペクティブ)を入力として取得し、どのアクタセットがそのルールに関連するかを判定して、それらのアクタセットのみを出力する。これは、関連アクタモジュール380がアクタセットを検査して、所与のルールのセットに対して関連するアクタセットのみを抽出する、フィルタリング処理である。関連アクタモジュール380は、入力アクタセットのすべてを反復し、入力ルールのPB部分およびUB部分を分析して特定のアクタセットがルールのPB部分またはUB部分のいずれかによって参照されるかどうかを判定することによってフィルタリングを実行する。最終結果(本明細書において「アクタパースペクティブ」と称される)は、アクタセットの集合である。アクタパースペクティブは、後に、管理命令の一部として管理対象サーバ130に送信される。
1つの実施形態において、関連アクタモジュール380は、ルールの入力セットを使用して「アクタセットフィルタ」を生成する。アクタセットフィルタは、入力アクタセットから、入力ルールに関連するアクタセットのみを選択する。言い換えれば、関連アクタモジュール380は、アクタセットフィルタを使用して、入力アクタセットを関連アクタセットにフィルタリングする。
ポリシエンジンモジュール340は、管理対象サーバ130の管理命令を生成し、生成された管理命令をサーバに送信する。ポリシエンジンモジュール340は、a)管理ドメインのコンピュータネットワークインフラストラクチャ320の状態、およびb)管理ドメイン全体管理ポリシ330に基づいて、(関連ルールモジュール350、機能レベル命令生成モジュール360、アクタ列挙モジュール370、および関連アクタモジュール380を使用して)管理命令を生成する。
たとえば、ポリシエンジンモジュール340は、管理ドメイン全体管理ポリシ330および特定の管理対象サーバ130のUIDを入力として提供し、関連ルールモジュール350を実行する。関連ルールモジュール350は、そのサーバに関連するルールのセット(「管理ポリシパースペクティブ」)を出力する。ポリシエンジンモジュール340は、管理ドメイン状態320を入力として提供し、アクタ列挙モジュール370を実行する。アクタ列挙モジュール370は、列挙型形式の管理ドメイン状態320内の管理対象サーバ130および非管理対象デバイスグループ(UDG)の記述の表示(「アクタセット」)を出力する。ポリシエンジンモジュール340は、(関連ルールモジュール350によって出力された)管理ポリシパースペクティブを入力として提供し、機能レベル命令生成モジュール360を実行する。機能レベル命令生成モジュール360は、機能レベル命令を出力する。ポリシエンジンモジュール340は、(列挙モジュール370によって出力された)アクタセットおよび(関連ルールモジュール350によって出力された)管理ポリシパースペクティブを入力として提供して、関連アクタモジュール380を実行する。関連アクタモジュール380は、そのルールに関連するアクタセット(「関連アクタセット」)のみを出力する。ポリシエンジンモジュール340は、(機能レベル命令生成モジュール360によって出力された)機能レベル命令および(関連アクタモジュール380によって出力された)関連アクタセットを特定の管理対象サーバ130に送信する。
1つの実施形態において、ポリシエンジンモジュール340は、上記の処理の間に生成された情報をキャッシュに入れる。たとえば、ポリシエンジンモジュール340は、特定の管理対象サーバ130に関連して、管理ポリシパースペクティブ、機能レベル命令、アクタセットフィルタ、および/または関連アクタセットをキャッシュに入れる。もう1つの例として、ポリシエンジンモジュール340は、管理ドメインのアクタセット(特定の管理対象サーバ130に固有ではない)をキャッシュに入れる。
管理ドメインのアクタセットは管理ドメイン状態320に基づいているので、管理ドメイン状態320への変更は、管理ドメインのアクタセットへの変更を必要とする可能性がある。同様に、管理対象サーバの管理命令は、管理ドメイン状態320および管理ドメイン全体管理ポリシ330に基づいているので、管理ドメイン状態320への変更および/または管理ドメイン全体管理ポリシ330への変更は、管理対象サーバの管理命令への変更を必要とする可能性がある。1つの実施形態において、ポリシエンジンモジュール340は、管理ドメインのアクタセットを更新、および/または管理対象サーバの管理命令を更新し、次いでそれらの変更を(必要な場合)管理対象サーバ130に配布することができる。前述のキャッシュに入れられた情報は、ポリシエンジンモジュール340が、管理ドメインのアクタセットおよび/または管理対象サーバの管理命令をより効率的に更新して、変更を配布する上で役立つ。
1つの実施形態において、ポリシエンジンモジュール340は、(管理ドメイン状態320への変更に基づいて)管理ドメインのアクタセットを更新し、管理対象サーバ130への変更を、次のように配布する。ポリシエンジンモジュール340は、(アクタ列挙モジュールによって以前出力された)キャッシュに入れられているアクタセットおよび(たとえば、変更済みのサーバの記述など)管理ドメイン状態320の変更済み部分を入力として提供して、アクタ列挙モジュール370を実行する。アクタ列挙モジュール370は、更新済みのアクタセットを出力する。1つの実施形態において、ポリシエンジンモジュール340は、次いで、更新済みのアクタセットのすべてを、管理ドメイン150内の管理対象サーバ130のすべてに送信する。しかし、すべての管理対象サーバが、すべてのアクタセットへの変更の影響を受けるわけではないので、その実施形態は非効率的である。
もう1つの実施形態において、選択されたアクタセットのみが、選択されたサーバに送信される。たとえば、特定の管理対象サーバが、a)そのサーバに以前送信された、およびb)変更された、アクタセットのみを送信される。キャッシュに入れられている関連アクタセットは、どのアクタセットが以前そのサーバに送信されたかを示す(上記(a)を参照)。ポリシエンジンモジュール340は、どのアクタセットが変更されているかを判定するため、キャッシュに入れられているアクタセットを、更新済みのアクタセットと比較する(上記(b)を参照)。次いで、ポリシエンジンモジュール340は、(a)と(b)の論理積を計算する。その論理積内のアクタセットは、特定の管理対象サーバに送信される。1つの実施形態において、さらに一層効率を高めるために、アクタセットは、キャッシュに入れられているアクタセットと更新済みのアクタセットとの間の差を記述する「diff」フォーマットで送信される。たとえば、diffフォーマットは、アクタセット識別子、アクタ識別子(たとえば、管理対象サーバUIDまたはUDG UID)、およびアクタがアクタセット内で追加されるべきか、除去されるべきか、または修正されるべきかどうかのインジケーションを指定する。
さらにもう1つの実施形態において、2つのテーブルが保持されて、効率を高めるために使用される。第1のテーブルは、管理対象サーバ130を、その管理対象サーバが要素であるアクタセットに関連付ける。第2のテーブルは、管理対象サーバ130を、(たとえば、関連アクタモジュール380によって判定された)その管理対象サーバに関連するアクタセットに関連付ける。これらのテーブルにおいて、管理対象サーバ130は、たとえばその管理対象サーバのUIDによって表され、アクタセットは、たとえばそのアクタセットのUIDによって表される。ポリシエンジンモジュール340は、管理ドメイン状態320の変更済み部分(たとえば、変更済みのサーバの記述)を使用して、どの管理対象サーバの記述が変更されたかを判定する。ポリシエンジンモジュール340は、第1のテーブルを使用して、その管理対象サーバが要素であったアクタセットを判定する。それらのアクタセットは、変更済みのサーバの記述の結果として変更してもよい。したがって、ポリシエンジンモジュール340は、第2のテーブルを使用して、それらのアクタセットが関連する管理対象サーバを判定する。ポリシエンジンモジュール340は、上記で説明された論理積計算を、それらの管理対象サーバについてのみ実行する。
1つの実施形態において、ポリシエンジンモジュール340は、(管理ドメイン状態320への変更に基づいて)管理対象サーバの管理命令を更新し、更新済みの管理命令を管理対象サーバに、次のように送信する。ポリシエンジンモジュール340は、管理ドメイン全体管理ポリシ330および管理対象サーバ130のUIDを入力として提供し、関連ルールモジュール350を実行する。関連ルールモジュール350は、そのサーバに関連するルールのセット(「管理ポリシパースペクティブ」)を出力する。ポリシエンジンモジュール340は、先ほど出力された管理ポリシパースペクティブを、キャッシュに入れられている管理ポリシパースペクティブと比較して、これらが異なっているかどうかを判定する。先ほど出力された管理ポリシパースペクティブおよびキャッシュに入れられている管理ポリシパースペクティブが同一である場合、ポリシエンジンモジュール340は、さらにアクションを実行することはない。この状況において、以前生成された管理対象サーバの管理命令(具体的には、機能レベル命令および関連アクタセット)は、管理ドメイン状態320への変更と一貫しており、再生成されて管理対象サーバに再送信される必要はない。
先ほど出力された(just-output)管理ポリシパースペクティブおよびキャッシュに入れられている管理ポリシパースペクティブが異なる場合、ポリシエンジンモジュール340は、どのルールがキャッシュに入れられているパースペクティブに追加されるべきか、およびどのルールがキャッシュに入れられているパースペクティブから除去されるべきかを判定する。ポリシエンジンモジュール340は、追加すべきルールおよび除去すべきルールを入力として提供し、機能レベル命令生成モジュール360を実行する。機能レベル命令生成モジュール360は、(以前管理対象サーバに送信された、キャッシュに入れられている機能レベル命令に関して)追加すべき機能レベル命令および除去すべき機能レベル命令を出力する。ポリシエンジンモジュール340は、管理対象サーバに、必要に応じて、さまざまな機能レベル命令を追加または除去するよう命令する。1つの実施形態において、さらに一層効率を高めるために、機能レベル命令は、キャッシュに入れられている機能レベル命令と更新済みの機能レベル命令との間の差を記述する「diff」フォーマットで送信される。たとえば、diffフォーマットは、機能レベル命令識別子、および機能レベル命令が以前送信された機能レベル命令に追加されるべきか、または除去されるべきかどうかのインジケーションを指定する。
ポリシエンジンモジュール340はまた、キャッシュに入れられているアクタセットおよび(たとえば、変更済みのサーバの記述など)管理ドメイン状態320の変更済み部分を入力として提供して、アクタ列挙モジュール370を実行する。アクタ列挙モジュール370は、更新済みのアクタセットを出力する。ポリシエンジンモジュール340は、更新済みのアクタセットおよび先ほど出力された管理ポリシパースペクティブを入力として提供し、関連アクタモジュール380を実行する。関連アクタモジュール380は、そのルールに関連する更新済みのアクタセット(「更新済みの関連アクタセット」)のみを出力する。
ポリシエンジンモジュール340は、更新済みの関連アクタセットを、キャッシュに入れられている関連アクタセットと比較して、これらが異なっているかどうかを判定する。更新済みの関連アクタセットおよびキャッシュに入れられている関連アクタセットが同一である場合、ポリシエンジンモジュール340は、アクタセットを管理対象サーバに送信しない。この状況において、以前生成された関連アクタセットは、管理ドメイン状態320への変更と一貫しており、管理対象サーバに再送信される必要はない。更新済みの関連アクタセットおよびキャッシュに入れられている関連アクタセットが異なる場合、ポリシエンジンモジュール340は、キャッシュに入れられている関連アクタセットに関してどのアクタセットが追加されるべきか、除去されるべきか、または修正されるべきかを判定する。ポリシエンジンモジュール340は、管理対象サーバに、必要に応じて、さまざまなアクタセットを追加、除去、または修正するよう命令する。1つの実施形態において、さらに効率を高めるために、アクタセットは、キャッシュに入れられている関連アクタセットと更新済みの関連アクタセットとの間の差を記述する「diff」フォーマットで送信される。たとえば、diffフォーマットは、アクタセット識別子、およびそのアクタセットが以前送信されたアクタセットに関して追加まされるべきか、除去されるべきか、または修正されるべきかどうかのインジケーションを指定する。
ポリシエンジンモジュール340が、(管理ドメイン全体管理ポリシ330への変更に基づいて)管理対象サーバの管理命令を更新し、更新済みの管理命令を管理対象サーバに送信できることを想起されたい。管理ポリシ330への変更は、たとえば、ルールもしくはルールセットの追加、除去、または修正である。1つの実施形態において、管理ポリシ330への変更は、GUIまたはAPIを介するグローバルマネージャ120との対話によって生成される。もう1つの実施形態において、管理ポリシ330への変更は、(たとえば、グローバルマネージャによって検出されたセキュリティ脅威に応じて)グローバルマネージャ120内の自動化処理によって生成される。ポリシエンジンモジュール340は、管理対象サーバの管理命令を更新し、管理ポリシ330への変更または管理ドメイン状態320への変更があったかどうかにはかかわりなく、同様の方法で更新済みの管理命令を管理対象サーバに送信する。しかし、わずかな差がある。
管理ポリシ330への変更の場合、ポリシエンジンモジュール340は、必ずしも、すべての管理対象サーバ130の管理命令を更新するわけではない。代わりに、ポリシエンジンモジュール340は、以前の管理ポリシ330を、新しい管理ポリシ330と比較して、以前の管理ポリシ330に関してルールが追加されるべきか、除去されるべきか、または修正されるべきかどうかを判定する。ポリシエンジンモジュール340は、どの管理対象サーバ130が、変更済みのルールの影響を受けるか(たとえば、どの管理対象サーバが、a)ルールおよび/またはスコープのPBおよび/またはUB部分、ならびにb)ルールの条件部分(ある場合は)によってカバーされるか)を判定する。ポリシエンジンモジュール340は、(新しい管理ポリシ330全体ではなく)変更済みのルール、および(変更済みのルールの影響を受けるサーバのみについて)管理対象サーバ130のUIDを入力として提供し、関連ルールモジュール350を実行する。
管理ドメイン状態更新(ADSU)モジュール385は、管理ドメイン状態320への変更を受信し、それらの変更を処理する。管理ドメイン状態320への変更は、たとえば、(管理対象サーバのラベルセットまたは構成済み特性の修正を含む)管理対象サーバ130の記述、または非管理対象デバイスもしくは非管理対象デバイスグループの記述の追加、除去、または修正である。1つの実施形態において管理ドメイン状態320への変更は、特定の管理対象サーバ130から受信したローカル状態情報に由来する。もう1つの実施形態において、管理ドメイン状態320への変更は、GUIまたはAPIを介するグローバルマネージャ120との対話によって生成される。さらにもう1つの実施形態において、管理ドメイン状態320への変更は、(たとえば、グローバルマネージャによって検出されたセキュリティ脅威に応じて)グローバルマネージャ120内の自動化処理によって生成される。
たとえば、ADSUモジュール385は、特定の非管理対象デバイス140に関する変更を受信する。ADSUモジュール385は、(たとえば、その特定の非管理対象デバイスが要素である非管理対象デバイスグループの一部として)管理ドメイン状態320に新しい情報を記憶する。次いで、ADSUモジュール385は、非管理対象デバイスグループの変更に基づいて、管理ドメインのアクタセットを更新する。具体的には、ADSUモジュール385は、ポリシエンジンモジュール340に、管理ドメインのアクタセットを更新するよう命令する。1つの実施形態において、ADSUモジュール385は、ポリシエンジンモジュール340に管理ドメインのアクタセットを更新するよう命令する前に、イベントが発生するのを待つ。このイベントは、たとえば、ユーザコマンドの受信、または指定された保守ウィンドウの発生であってもよい。
もう1つの例として、ADSUモジュール385は、特定の管理対象サーバ130に関する変更を受信する。ADSUモジュール385は、特定の管理対象サーバ130の記述の一部として管理ドメイン状態320に新しい情報を記憶する。次いで、ADSUモジュール385は、その管理対象サーバの記述を分析して、サーバに関する追加情報を判定し、その情報を記述に記憶する。次いで、ADSUモジュール385は、管理対象サーバの記述への変更に基づいて、管理ドメインのアクタセットおよび/または管理対象サーバの管理命令を更新するかどうかを判定する。ADSUモジュール385が管理ドメインのアクタセットを更新すると判定する場合、ADSUモジュール385は、ポリシエンジンモジュール340に、管理ドメインのアクタセットを更新するよう命令する。1つの実施形態において、ADSUモジュール385は、ポリシエンジンモジュール340に管理ドメインのアクタセットを更新するよう命令する前に、イベントが発生するのを待つ。ADSUモジュール385が管理対象サーバの管理命令を更新すると判定する場合、ADSUモジュール385は、ポリシエンジンモジュール340に、管理対象サーバの管理命令を更新するよう命令する。1つの実施形態において、ADSUモジュール385は、ポリシエンジンモジュール340に管理対象サーバの管理命令を更新するよう命令する前に、イベントが発生するのを待つ。前述のイベントは、たとえば、ユーザコマンドの受信、または指定された保守ウィンドウの発生であってもよい。
ADSUモジュール385が、管理ドメインのアクタセットおよび/または管理対象サーバの管理命令を更新するよう判定するかどうかは、管理対象サーバの記述への変更のタイプに依存する。1つの実施形態において、ADSUモジュール385は、この判定を表2に図示されるように実行する。
1つの実施形態において、ADSUモジュール385は、ラベル/構成済み特性エンジンを実行して、サーバの記述を入力として提供することにより、サーバに関する追加情報を判定する。ラベル/CCエンジンは、サーバの記述およびラベル/CC割り当てルールに基づいて、サーバのラベル/CC値を算出する。もう1つの実施形態において、ADSUモジュール385は、サーバがネットワークアドレストランスレータ(NAT)の後方にあるかどうか(さらにサーバがNATの後方にある場合、NATのどのタイプ、1:1または1:Nであるか)を判定する。
アクセス制御ルール作成モジュール390については、以下の「アクセス制御ルール」と題するセクションにおいて記述される。
<ポリシ実施モジュール>
図4は、1つの実施形態に従った、管理対象サーバ130のポリシ実施モジュール136の詳細なビューを示す高レベルブロック図である。ポリシ実施モジュール136は、ローカル状態リポジトリ400、ポリシコンパイルモジュール410、ローカル状態更新モジュール420、およびアラート生成モジュール430を含む。ローカル状態リポジトリ400は、管理対象サーバ130のローカル状態に関する情報を記憶する。1つの実施形態において、ローカル状態リポジトリ400は、管理対象サーバ130のオペレーティングシステム(OS)、ネットワーク公開、およびサービスに関する情報を記憶する。OS情報は、たとえば、どのOSが稼働しているかのインジケーションを含む。ネットワーク公開情報およびサービス情報は、管理ドメイン状態320内の管理対象サーバ130の記述に関して上記で説明されている。
ポリシコンパイルモジュール410は、管理命令および管理対象サーバ130の状態を入力として取得し、管理モジュール構成134を生成する。たとえば、管理命令は、グローバルマネージャ120から受信され、(機能レベル命令生成モジュール360によって生成された)機能レベル命令および(関連アクタモジュール380によって出力された)関連アクタセットを含む。管理対象サーバ130の状態は、ローカル状態リポジトリ400から取り出される。1つの実施形態において、ポリシコンパイルモジュール410の実行は、a)管理対象サーバの電源投入またはオンライン状態、b)管理対象サーバの管理命令受信、および/またはc)ローカル状態リポジトリ400の内容の変化によってトリガされる。
ポリシコンパイルモジュール410は、機能レベル命令および関連アクタセットを管理モジュール構成134にマップする。たとえば、ポリシコンパイルモジュール410は、(ポートおよびアクタセット参照を含む)アクセス制御機能レベル命令を、Linuxオペレーティングシステムのiptablesエントリおよびipsetエントリ、またはWindowsオペレーティングシステムのWindowsフィルタリングプラットフォーム(WFP)ルールにマップする。
管理対象サーバ130における管理ポリシの適用は、そのサーバのローカル状態の影響を受ける可能性がある。1つの実施形態において、ポリシコンパイルモジュール410は、受信した機能レベル命令に関連付けられている条件を評価し、その評価の結果に基づいて管理モジュール構成134を生成する。たとえば、ポリシコンパイルモジュール410は、管理対象サーバのピア(つまり、関係内の他のアクタ)のオペレーティングシステムを参照する条件を評価して、その評価の結果に基づいて機能プロファイル属性を選択するが、選択される機能プロファイル属性は管理モジュール構成134で表現される。
もう1つの例として、管理対象サーバ130が、そのサーバには無関係であると判明する機能レベル命令を受信できることを想起されたい。たとえば、ルールは、管理対象サーバのローカル状態を指定する部分(たとえば、提供されるサービスを記述するサービス部分)も含む。グローバルマネージャ120は管理対象サーバのローカル状態(たとえば、管理対象サーバが実際にそのサービスを提供しているのかどうか)を認識していないので、生成される機能レベル命令は管理対象サーバに送信される。ポリシコンパイルモジュール410は、管理対象サーバのローカル状態(たとえば、管理対象サーバがそのサービスを提供しているかどうか)を確認する。この判定は、管理対象サーバのローカル状態を参照する条件を評価することになる。ポリシコンパイルモジュール410は、それに応じて機能レベル命令を処理する。ポリシコンパイルモジュール410が、条件が「真」であると評価する(たとえば、管理対象サーバがそのサービスを提供している)と判定する場合、ポリシコンパイルモジュール410は、その機能レベル命令を管理モジュール構成134に組み入れる。具体的には、ポリシコンパイルモジュール410は、(そのサーバのローカル状態に関与する)関連条件を評価した後に限り、機能レベル命令を管理モジュール構成134に組み入れる。条件の評価が偽である場合、ポリシコンパイルモジュール410は、機能レベル命令を管理モジュール構成134で表現しない。固有の条件(たとえば、それらの本質および特定の値)は、拡張可能である。1つの実施形態において、条件は、「サービス」の定義に関連し、(管理ドメイン状態320内の管理対象サーバ130の記述に関して上記で説明される)処理情報および/またはパッケージ情報を含む。
たとえば、ポート80のApacheサービスインバウンドのみへのアクセスを許容する(つまり、管理対象サーバ130が「提供者」またはエンドポイントである場合)機能レベル命令を検討する。管理対象サーバ130は、この機能レベル命令を管理モジュール構成134で表現して、ポート80でリスンしている(そのサーバで実行中の)アプリケーションが実際にApacheであって、他のアプリケーション(ローグまたはそれ以外)ではないかどうかに関与する、関連条件を評価した後に限り、ポート80でのアクセスを許容する。管理対象サーバ130は、関連条件が「真」であると評価することを判定した後に限り、機能レベル命令を管理モジュール構成134で表現する。関連条件が「偽」であると評価する場合、管理対象サーバ130は、この機能レベル命令を管理モジュール構成134で表現しない。その結果、ネットワークトラフィックはブロックされる。
1つの実施形態において、管理対象サーバ130は、そのアウトバウンド接続を監視する。管理対象サーバ130は、アウトバウンドネットワークトラフィックを、その内部処理テーブルと比較して、そのテーブル内のどの処理がそれらのアウトバウンド接続を確立しているかを判定する。管理対象サーバ130は、アウトバウンド接続を確立するために(上記で「処理情報」として言及される、要件のセットを所与として)特定の処理のみを許容するルールを強行することができる。
1つの実施形態(図示せず)において、ポリシコンパイルモジュール410は、管理対象サーバ130ではなく、グローバルマネージャ120に位置する。その実施形態において、グローバルマネージャ120は、管理命令を管理対象サーバ130に送信しない。その代わり、管理対象サーバ130は、そのローカル状態をグローバルマネージャ120に送信する。ポリシコンパイルモジュール410が(グローバルマネージャ120において)管理モジュール構成134を生成した後、管理モジュール構成134は、グローバルマネージャ120から管理対象サーバ130に送信される。
ローカル状態更新(LSU)モジュール420は、管理対象サーバ130のローカル状態を監視し、ローカル状態情報をグローバルマネージャ120に送信する。1つの実施形態において、LSUモジュール420は、管理対象サーバ130の初期ローカル状態を判定し、適切なローカル状態情報をローカル状態リポジトリ400に記憶して、そのローカル状態情報をグローバルマネージャ120に送信する。LSUモジュール420は、サーバのオペレーティングシステム(OS)および/またはファイルシステムのさまざまな部分を検査することによって、管理対象サーバ130のローカル状態を判定する。たとえば、LSUモジュール420は、OSのカーネルテーブルから(ネットワーキング情報)、OSのシステムテーブルから(パッケージ情報)、およびファイルシステムから(ファイルおよびハッシュ値)、サービス情報を取得する。LSUモジュール420は、OSのカーネルおよび/またはOSレベルのデータ構造からネットワーク公開情報を取得する。
LSUモジュール420が初期ローカル状態情報をグローバルマネージャ120に送信した後、LSUモジュールは、ローカル状態への変更を監視する。LSUモジュールは、たとえば、ポーリング(たとえば、定期的に検査を実行する)、またはリスニング(たとえば、イベントストリームにサブスクライブする)によって変更を監視する。LSUモジュール420は、最近取得されたローカル状態情報を、ローカル状態リポジトリ400にすでに記憶されている情報と比較する。情報が一致する場合、LSUモジュール420は、(ローカル状態情報が再度取得されるまで)さらにアクションを実行することはない。情報が異なる場合、LSUモジュール420は、最近取得された情報をローカル状態リポジトリ400に記憶し、管理モジュール構成134を再生成(およびそれに応じて管理モジュール132を再構成)するためにポリシコンパイルモジュール410を実行して、グローバルマネージャ120に変更を通知する。1つの実施形態において、LSUモジュール420は、ローカル状態情報への変更を、以前ローカル状態リポジトリ400に記憶され(したがって、以前グローバルマネージャ120に送信された)ローカル状態情報と最近取得されたローカル状態情報との間の差を記述する、「diff」フォーマットで、グローバルマネージャ120に送信する。たとえば、diffフォーマットは、ローカル状態情報のタイプ(たとえば、オペレーティングシステム)、およびその情報タイプの新しい値を指定する。もう1つの実施形態において、LSUモジュール420は、ローカル状態リポジトリ400の内容全体をグローバルマネージャ120に送信する。
アラート生成モジュール430については、以下において「アクセス制御ルール」と題するセクションにおいて説明される。
<管理命令の生成>
図5は、1つの実施形態に従った、特定の管理対象サーバ130の管理命令を生成する方法500を示すフローチャートである。その他の実施形態は、異なる順序でステップを実行することができ、異なるおよび/または追加のステップを含むことができる。加えて、ステップの一部または全部は、図1に図示されているエンティティ以外のエンティティによって実行されてもよい。1つの実施形態において、方法500は、複数回(たとえば、管理ドメイン150内の各管理対象サーバ130ごとに1回)実行される。
方法500が始動するとき、管理ドメインのコンピュータネットワークインフラストラクチャ320の状態、および管理ドメイン全体管理ポリシ330は、グローバルマネージャ120のリポジトリ300にすでに記憶されている。この時点において、方法500は開始する。
ステップ510において、管理ドメイン状態320および管理ドメイン全体管理ポリシ330がアクセスされる。たとえば、ポリシエンジンモジュール340は、リポジトリ300に要求を送信し、それに応じて、管理ドメイン状態320および管理ドメイン全体管理ポリシ330を受信する。
ステップ520において、1または複数の関連ルールが判定される。たとえば、ポリシエンジンモジュール340は、管理ドメイン全体管理ポリシ330および特定の管理対象サーバ130のUIDを入力として提供し、関連ルールモジュール350を実行する。関連ルールモジュール350は、そのサーバに関連するルールのセット(管理ポリシパースペクティブ)を出力する。
ステップ530において、アクタが列挙される。たとえば、ポリシエンジンモジュール340は、管理ドメイン状態320を入力として提供し、アクタ列挙モジュール370を実行する。アクタ列挙モジュール370は、列挙型形式の管理ドメイン状態320内の管理対象サーバ130および非管理対象デバイスグループ(UDG)の表示(アクタセット)を生成する。
ステップ540において、1または複数の機能レベル命令が生成される。たとえば、ポリシエンジンモジュール340は、(ステップ520において生成された)管理ポリシパースペクティブを入力として提供し、機能レベル命令生成モジュール360を実行する。機能レベル命令生成モジュール360は、機能レベル命令を生成する。
ステップ550において、1または複数の関連アクタが判定される。たとえば、ポリシエンジンモジュール340は、(ステップ530において生成された)アクタセットおよび(ステップ520において生成された)管理ポリシパースペクティブを入力として提供し、関連アクタモジュール380を実行する。関連アクタモジュール380は、そのルールに関連するアクタセット(関連アクタセット)のみを出力する。
ステップ560において、管理命令は、特定の管理対象サーバ130に送信される。たとえば、ポリシエンジンモジュール340は、(ステップ540において生成された)機能レベル命令および(ステップ550において生成された)関連アクタセットを特定の管理対象サーバ130に送信する。
ステップ520およびステップ540は、特定の管理対象サーバ130の管理ポリシパースペクティブ(およびその結果もたらされる機能レベル命令)を生成することに関与しているが、ステップ530およびステップ550は、その管理対象サーバのアクタパースペクティブを生成することに関与していることに留意されたい。ステップ520が、ステップ550によって使用されるルールのセットを生成するので、管理ポリシパースペクティブの生成およびアクタパースペクティブの生成は、最低限に相互に依存している。そうであっても、管理ポリシの計算(つまり、ステップ520およびステップ540)ならびにアクタセットの計算(つまり、ステップ530およびステップ550)を別々にしておくことで、ポリシエンジンモジュールのスケーラビリティを強化する。管理ポリシの計算およびアクタセットの計算はほとんどの場合別々にされているので、これらは(たとえば同じ管理対象サーバ130に対してであっても)並行して実行されてもよい。加えて、異なる管理対象サーバ130に対するパースペクティブの計算もまた、並列に実行されてもよい。さらに、アクタが変更する場合、再計算される必要があるのはアクタセットだけである。(機能レベル命令は再計算される必要はない。)ルールが変更する場合、再計算される必要があるのは機能レベル命令および関連アクタセットだけである。(アクタは再列挙される必要はない。)
<管理モジュールの構成>
図6は、1つの実施形態に従った、管理対象サーバ130の管理モジュール132のための構成134を生成する方法600を示すフローチャートである。その他の実施形態は、異なる順序でステップを実行することができ、異なるおよび/または追加のステップを含むことができる。加えて、ステップの一部または全部は、図1に図示されているエンティティ以外のエンティティによって実行されてもよい。
方法600が始動するとき、管理対象サーバ130のローカル状態に関する情報は、すでに管理対象サーバ130内のポリシ実施モジュール136のローカル状態リポジトリ400に記憶されている。この時点において、方法600は開始する。
ステップ610において、管理命令がグローバルマネージャ120から受信される。たとえば、ポリシコンパイルモジュール410は、機能レベル命令および関連アクタセットをグローバルマネージャ120から受信する。
ステップ620において、ローカル状態がアクセスされる。たとえば、ポリシコンパイルモジュール410は、ローカル状態リポジトリ400に記憶されている管理対象サーバ130のローカル状態に関する情報にアクセスする。
ステップ630において、管理モジュール構成134が生成される。たとえば、ポリシコンパイルモジュール410は、(ステップ610において受信した)管理命令および(ステップ620においてアクセスされた)ローカル状態を入力として取得し、管理モジュール構成134を生成する。
ステップ640において、管理モジュール構成132が構成される。たとえば、ポリシコンパイルモジュール410は、(ステップ630において生成された)管理モジュール構成134に従って動作するように管理モジュール132を構成する。
<管理対象サーバの監視>
図7は、1つの実施形態に従った、管理対象サーバ130のローカル状態を監視し、ローカル状態情報をグローバルマネージャ120に送信する方法700を示すフローチャートである。その他の実施形態は、異なる順序でステップを実行することができ、異なるおよび/または追加のステップを含むことができる。加えて、ステップの一部または全部は、図1に図示されているエンティティ以外のエンティティによって実行されてもよい。
方法700が始動するとき、管理対象サーバ130のローカル状態に関する情報は、すでに管理対象サーバ130のローカル状態リポジトリ400に記憶されている。この時点において、方法700は開始する。
ステップ710において、管理対象サーバ130の現在のローカル状態に関する情報が判定される。たとえば、LSUモジュール420は、サーバのオペレーティングシステム(OS)および/またはファイルシステムのさまざまな部分を検査することによって、管理対象サーバ130のローカル状態を判定する。
ステップ720において、判定は、現在のローカル状態に関する情報が、ローカル状態リポジトリ400に記憶されている情報と異なるかどうかに関して実行される。たとえば、LSUモジュール420は、この判定を実行する。情報が異なっていない場合、方法はステップ730に進み、終了する。情報が異なっている場合、方法は、ステップ740に進む。
ステップ740において、異なる情報は、ローカル状態リポジトリ400に記憶される。たとえば、LSUモジュール420は、このステップを実行する。
ステップ750において、管理モジュール構成134は、(ローカル状態リポジトリ400の内容が変更したので)再生成され、それに応じて管理モジュール132は再構成される。たとえば、LSUモジュール420は、管理モジュール構成134を再構成するポリシコンパイルモジュール410を実行する。
ステップ760において、異なる情報は、グローバルマネージャ120に送信される。たとえば、LSUモジュール420は、このステップを実行する。
<管理ドメイン状態の更新>
図8は、1つの実施形態に従った、管理ドメインのコンピュータネットワークインフラストラクチャ320の状態への変更を処理する方法800を示すフローチャートである。その他の実施形態は、異なる順序でステップを実行することができ、異なるおよび/または追加のステップを含むことができる。加えて、ステップの一部または全部は、図1に示されているエンティティ以外のエンティティによって実行されてもよい。
ステップ810において、特定の管理対象サーバ130に関する変更が受信される。たとえば、管理ドメイン状態更新(ADSU)モジュール385は、ローカル状態情報の一部として管理対象サーバ130から、オンライン/オフラインインジケータ、オペレーティングシステムインジケータ、ネットワーク公開情報、および/またはサービス情報を受信する。
ステップ820において、受信された情報が記憶される。たとえば、ADSUモジュール385は、受信したオンライン/オフラインインジケータ、ネットワーク公開情報、および/またはサービス情報を管理ドメイン状態320に(具体的には、情報が関連する管理対象サーバ130の記述に)記憶する。
ステップ830において、サーバに関する追加情報を判定するために、サーバの記述は分析される。たとえば、ADSUモジュール385は、サーバのラベル/CC値を算出するためにラベル/構成済み特性エンジンを使用する、および/またはサーバがネットワークアドレストランスレータ(NAT)の後方にあるかどうか(さらにサーバがNATの後方にある場合、NATのどのタイプ、1:1または1:Nであるか)を判定して、その情報をサーバの記述に記憶する。ステップ830はオプションである。
ステップ840において、判定は、管理ドメインのアクタセットを更新するかどうかに関して実行される。たとえば、ADSUモジュール385は、管理対象サーバの記述への変更に基づいて、管理ドメインのアクタセットを更新するかどうかを判定する。管理ドメインのアクタセットを更新するよう判定が実行される場合、方法はステップ850に進む。管理ドメインのアクタセットを更新しないよう判定が実行される場合、方法はステップ860に進む。
ステップ850において、管理ドメインのアクタセットが更新される。たとえば、ADSUモジュール385は、ポリシエンジンモジュール340に、管理ドメインのアクタセットを更新し、それに応じて、影響を受ける管理対象サーバ130に通知するよう命令する。1つの実施形態(図示せず)において、ADSUモジュール385は、ポリシエンジンモジュール340に管理ドメインのアクタセットを更新するよう命令する前に、イベントが発生するのを待つ。
ステップ860において、判定は、管理対象サーバの管理命令を更新するかどうかに関して実行される。たとえば、ADSUモジュール385は、管理対象サーバの記述への変更に基づいて、管理対象サーバの管理命令を更新するかどうかを判定する。管理対象サーバの管理命令を更新するよう判定が実行される場合、方法はステップ870に進む。管理対象サーバの管理命令を更新しないよう判定が実行される場合、方法はステップ880に進む。
ステップ870において、管理対象サーバの管理命令は更新される。たとえば、ADSUモジュール385は、ポリシエンジンモジュール340に、管理対象サーバの管理命令を更新するよう命令する。1つの実施形態(図示せず)において、ADSUモジュール385は、ポリシエンジンモジュール340に管理対象サーバの管理命令を更新するよう命令する前に、イベントが発生するのを待つ。
ステップ880において、方法は終了する。
<アクセス制御ルール>
グローバルマネージャ120の管理ドメイン全体管理ポリシ330が、アクセス制御ルールのセット335を含むことを想起されたい。アクセス制御ルールのセット335は、アクセス制御ルール機能を伴うルールである1または複数のアクセス制御ルールを含む。概して、アクセス制御ルールは、第1の管理対象サーバ130と、第2の管理対象サーバ130または非管理対象デバイス140または管理ドメイン150外部のデバイスとの間の通信を許可する。1つの実施形態において、アクセス制御ルールは、消費者が提供者のサービスを使用してよいかどうかを指定する。そのようなアクセス制御ルールは、提供側(PB)部分、使用側(UB)部分、およびサービスを指定する。1つの実施形態において、アクセス制御ルールは、アクセス制御ルールのセット335が一致するPB、UB、およびサービス部分を伴うアクセス制御ルールを含む場合に限り、消費者が提供者のサービスにアクセスしてよい、純粋な「ホワイトリスト」モデルに使用される。
アクセス制御ルールは、1または複数の部分の代わりにワイルドカードを使用することによって、PB、UB、およびサービス部分を一部分だけ指定してよい。たとえば、アクセス制御ルールが、ワイルドカードを指定するUB部分を有する場合、任意の管理対象サーバ130、非管理対象デバイス140、または管理ドメイン150外部の他のデバイスはサービスにアクセスしてよい。PB部分およびUB部分は、(たとえば、管理対象サーバUIDまたはUDG UIDを使用して)1または複数の特定のアクタ、1または複数のラベルセット、またはそれらの組合せを指定してよい。例示のアクセス制御ルールは、特定の管理対象サーバ130を示すPB部分、ならびにラベルセット<Role,Database Server>および<Environment,Production>を示すUB部分を有する。例示のアクセス制御ルールは、「データベースサーバ」ロールを有し、「製作」環境に属する管理対象サーバ130が、特定の管理対象サーバ130においてサービスにアクセスすることを許容する。
管理対象サーバ130のポリシ実施モジュール136は、アラート生成モジュール430を含むことを想起されたい。アラート生成モジュール430は、管理モジュール構成134に含まれるアクセス制御ルールを順守するために、管理対象サーバ130とその他のアクタ(管理対象サーバ130、非管理対象デバイス140、または管理ドメイン150外部のデバイス)との間の通信(「ネットワークトラフィック」とも称される)を監視する。アラート生成モジュール430は、アクセス制御ルールに適合しない通信(「無許可の通信」と称される)を検出したことに応じてアラートを生成し、アラートをグローバルマネージャ120に送信するが、アラートはアクセス制御ルール作成モジュール390によって(具体的には、アラート処理モジュール950によって)処理される。無許可の通信は、管理対象サーバ130によって提供されるサービスを使用しようとする消費者による試行、および別のアクタによって提供されるサービスを使用しようとする管理対象サーバ130による試行を含む。たとえば、サービスに関連付けられているポートとの間でネットワークトラフィックを送信または受信しようとする試行は、無許可の通信となる可能性がある。アクセス制御ルールが容認可能なアクティビティのホワイトリストとしての役割を果たす1つの実施形態において、管理モジュール132は、アクセス制御ルールと一致する試行された通信を許容し、アクセス制御ルールと一致しない試行された通信を拒否する。
管理モジュール132が管理対象サーバ130との間の通信を拒否またはブロックする場合、アラート生成モジュール430はアラートを生成する。アラートは、通信に対応するサービス、サービスの提供者、およびサービスの消費者を記述する。アラートは、サービスについての関連サービス情報、ならびに提供者および消費者についてのネットワーク公開情報を含んでよい。アラートは、通信の特性を記述する通信情報を含んでよい。通信情報は、タイミング、期間、頻度、プロトコルタイプ、データサイズ(たとえば、合計サイズ、パケットサイズ)、または試行された通信のデータ転送速度を含んでよい。たとえば、通信情報は、サービスにアクセスしようとする単一の試行と、サービスにアクセスしようとする繰り返しの試行とを区別する。通信情報はまた、ソースアドレス、宛先アドレス、およびパス情報(たとえば、無許可の通信をルーティングするロードバランサおよびNATデバイス)のような通信のルーティング情報も記述してよい。
<アクセス制御ルール作成モジュール>
グローバルマネージャ120の処理サーバ310が、アクセス制御ルール作成モジュール390を含むことを想起されたい。図9は、1つの実施形態による、グローバルマネージャ120のアクセス制御ルール(ACR)作成モジュール390の詳細なビューを示す高レベルブロック図である。ACR作成モジュール390は、コンテキスト情報収集モジュール910、管理対象サーバグルーピングモジュール920、ラベリングエンジン930、フロー処理モジュール940、アラート処理モジュール950、およびアクセス制御ルール(ACR)作成インタフェース960を含む。
コンテキスト情報収集モジュール910は、管理ドメイン150内のアクタ(管理対象サーバ130または非管理対象デバイス140)を記述し、管理ドメイン150内のアクタによって送信または受信された通信を記述するコンテキスト情報を取得する。コンテキスト情報は、管理対象サーバ情報、非管理対象デバイス情報、外部デバイス情報、通信情報、および管理ドメイン情報を含む。
管理対象サーバ情報は、管理対象サーバ130の特性を記述する。管理対象サーバ情報は、管理ドメイン状態320に関して上記で説明されるように、処理情報およびパッケージ情報のようなサービス情報を含む。管理対象サーバ情報は、識別子(たとえば、UID、インターネットプロトコル(IP)アドレス、メディアアクセス制御(MAC)アドレス、ホスト名)、ハードウェアリソース(たとえば、プロセッサタイプ、プロセッサスループット、プロセッサロード、合計メモリ、使用可能メモリ、ネットワークインタフェースデバイス、ストレージデバイスタイプ)、または管理対象サーバのタイプ(たとえば、物理デバイス、クラウド提供の仮想デバイス、仮想マシン、Linuxコンテナ)を記述してよい。管理対象サーバ情報は、処理情報およびパッケージ情報によって記述されるオペレーティングシステムおよびその他のソフトウェアのような、ソフトウェアリソースを記述してよい。
仮想またはクラウドベースの管理対象サーバ130はまた、環境情報に関連付けられており、この情報は、管理対象サーバ130の提供者(たとえば、専有のデータセンタ、サードパーティプライベートデータセンタ、クラウド提供者)および提供者と通信するための通信プロトコル(たとえば、カプセル化情報、ネットワークアドレス、ネットワークアドレス変換)を記述する。管理対象サーバ130に関する管理対象サーバ情報は、管理対象サーバのローカル状態リポジトリ400に記憶され、コンテキスト情報収集モジュール910により処理するためにグローバルマネージャ120に送信される。管理対象サーバ情報を仮想またはクラウドベースの管理対象サーバ130から取り出すため、コンテキスト情報収集モジュール910は、管理対象サーバ情報またはその他のコンテキスト情報を送信するようクラウドサービス提供者または仮想サーバを提供するソフトウェアにクエリを行ってよい。
非管理対象デバイス情報は、管理ドメイン状態320に関して上記で説明されるように、ネットワーク公開情報のような、非管理対象デバイス140の特定を記述する。非管理対象デバイス情報は、非管理対象デバイス140の識別子(たとえば、UDG UID、IPアドレス、MACアドレス、デバイス名)、ハードウェアリソース、ソフトウェアリソース、またはネットワーク接続性(たとえば、使用可能なポート、ポートとサービスとの間のマッピング)を含んでよい。管理対象サーバ130は、管理対象サーバ130と通信する非管理対象デバイス140についての非管理対象デバイス情報を収集して、コンテキスト情報収集モジュール910により処理するために非管理対象デバイス情報をグローバルマネージャ120に送信してよい。あるいは、または加えて、グローバルマネージャ120は、非管理対象デバイス情報を収集するように管理ドメイン150内の非管理対象デバイス140にクエリを実行する。非管理対象デバイス140は、非管理対象デバイスのローカル状態をレポートするポリシ実施モジュール136を含まないので、非管理対象デバイス情報は、管理対象サーバ情報に比べて不完全であるかまたはあまり詳細ではなくてよい。
外部デバイス情報は、管理対象サーバ130と通信する管理ドメインに外部のデバイスの特性を記述する。外部デバイス情報は、外部デバイスの識別子(たとえば、IPアドレス、ユニフォームリソースロケータ(URL)、その他のWebアドレス)、ハードウェアリソース、ソフトウェアリソース、またはネットワーク接続性を含んでよい。管理対象サーバ130は、外部デバイス情報を収集し、コンテキスト情報収集モジュール910により処理するために情報をグローバルマネージャ120に送信してよいが、外部デバイス情報の多くは管理対象サーバ130に対して可視でなくてもよい。加えて、外部デバイス情報は、外部デバイスの信頼性を示す、外部デバイスの信用情報を記述する。1つの実施形態において、コンテキスト情報収集モジュール910は、外部デバイスの識別子と一致する信用情報を取得する。信用情報を使用して、コンテキスト情報収集モジュール910は、外部デバイスを、安全、不正、または中間として分類する。信用情報は、2進インジケータ(たとえば、外部デバイスの識別子がブラックリストにあるかどうか)またはスコア(たとえば、識別子に関連付けられている危険の相対的判定)であってよい。
通信情報は、アラート生成モジュール430に関連して上記で説明されている。管理対象サーバ130は、管理対象サーバ130によって送信または受信された通信を記述するグローバルマネージャ120に、通信情報を送信する。1つの実施形態において、管理対象サーバ130は、通信が許可されているか、または許可されていないかを評価することにはかかわりなく、通信についての通信情報を送信する。コンテキスト情報収集モジュール910が同一の通信を記述する重複通信情報を受信したとき、コンテキスト情報収集モジュール910は、重複通信情報を結合または非重複化してよい。たとえば、コンテキスト情報収集モジュール910は、サービスを提供する管理対象サーバおよびサービスを消費する管理対象サーバという、2つの管理対象サーバ130から受信した通信情報を非重複化する。
コンテキスト情報収集モジュール910は、管理対象サーバ130から受信したコンテキスト情報に基づいて、管理ドメイン情報を生成する。管理ドメイン情報は、管理ドメイン150にわたり、または管理ドメイン150内のアクタのサブセットにわたり、コンテキスト情報を集約する。管理ドメイン内のアクタのサブセットは、ラベルセットによって記述される管理対象サーバ130であってよい。1つの実施形態において、管理ドメイン情報は、少なくとも1つの共通する特性を有する通信を記述する。共通する特性は、特定のポート、処理、プロトコル、またはアクタ(たとえば、管理対象サーバ130、非管理対象デバイス140、外部デバイス)であってよい。たとえば、コンテキスト情報収集モジュール910は、特定のサービスに関連付けられている破損した2進数を有する管理対象サーバ130の数を示す管理ドメイン情報を生成する。もう1つの例として、コンテキスト情報収集モジュール910は、特定のアクタによってスキャンされた管理対象サーバ130の数を示す管理ドメイン情報を生成する。「スキャニング」は、管理対象サーバ130に要求(たとえば、プローブ)を送信すること、および管理対象サーバの応答(またはその欠如)を使用して、管理対象サーバ130の構成および管理対象サーバ130上で実行中の処理を取得または自動的に判定することを指す。
1つの実施形態において、コンテキスト情報収集モジュール910は、管理ドメイン150内の異常なアクティビティを示す管理ドメイン情報を生成する。コンテキスト情報収集モジュール910は、特定のアクタ、(たとえば、共通のラベルセットによって特徴付けられる)管理対象サーバ130のグループ、共通のサービス、またはその他の特性に関連付けられているコンテキスト情報を識別する。コンテキスト情報収集モジュール910は、数量(たとえば、通信の量、破損したファイルの数)を使用してコンテキスト情報を要約し、数量を、しきい値数量と比較する。しきい値数量は、事前構成済みの設定に基づいてもよいか、または数量の以前の履歴の標準に基づいて動的に判定されてよい。たとえば、しきい値数量は、数量について週単位の移動平均を上回る2つの標準偏差である。しきい値数量との比較に応じて、コンテキスト情報収集モジュール910は、要約されたコンテキスト情報が異常であるかどうかを判定する。たとえば、コンテキスト情報収集モジュール910は、管理対象サーバ130がアクセスしたサービスに関連付けられていないポートの数がしきい値数を超える場合、管理対象サーバ130がサービスに関連付けられていない異常な数のポートにアクセスしようと試行していると判定する。
管理対象サーバグルーピングモジュール920は、管理ドメイン150内のアクタの間の通信を記述する通信情報を取得する。通信情報に基づいて、管理対象サーバグルーピングモジュール920は、管理対象サーバ130をアプリケーショングループにグループ化する。アプリケーショングループは、グループに外部のアクタとの通信の量と比較して著しい量の通信をグループ内に有する管理対象サーバ130のセットである。1つの実施形態において、管理対象サーバグルーピングモジュール920は、グラフを構築し、ここでノードは管理ドメイン150の管理対象サーバ130を表し、エッジは管理対象サーバ130の間の通信を表す。エッジは、ノードの間の通信の存在/不在を示す2進値を有するか、または通信の量を定量化する非2進値(たとえば、頻度、データサイズ、期間)を有する。たとえば、2つのノードを接続するエッジの値は、2つのノードに対応する管理対象サーバ130の間で交換されるデータの日次量である。グラフは、通信の方向を無視するエッジで方向付けられていなくてもよいか、または通信の方向に従って有向エッジで方向付けられてよい。たとえば、ノードから逸れて指し示す方向性エッジは、対応する管理対象サーバ130がサービスの消費者であることを示し、ノードの方向を指し示す方向性エッジは、管理対象サーバ130がサービスの提供者であることを示す。管理対象サーバグルーピングモジュール920は、グラフを、各々アプリケーショングループに対応するサブグラフに区分化する。たとえば、管理対象サーバグルーピングモジュール920は、縦型検索、K平均クラスタ、またはグラフを区分化する最小カットアルゴリズムを適用する。言い換えれば、管理対象サーバグルーピングモジュール920は、管理対象サーバ130を、コンテキスト情報収集モジュール910によって集められた通信情報に基づいてアプリケーショングループにグループ化する。
ラベリングエンジン930は、管理対象サーバ情報を取得し、管理対象サーバ情報に少なくとも部分的に基づいて、管理対象サーバ130のラベルを判定する。ラベリングエンジン930は、ラベリング/CCエンジンと類似しているが、構成済み特性を判定することはない。1つの実施形態において、ラベリングエンジン930は、アプリケーショングループ内の管理対象サーバ130に関連付けるようにグループレベルラベルセット(つまり、1または複数のグループレベルラベル)を判定する。1つの実施形態において、グループレベルラベルセットは、管理対象サーバ130の環境、アプリケーション、およびロケーションに対応する次元を伴うラベルを含む。ラベルは、表1および管理ドメイン全体管理ポリシ330に関してさらに記述される。
ラベリングエンジン930は、管理対象サーバ130に関連付けられているWebアドレス(たとえば、IPアドレスおよび/またはURL)のロケーションに基づいて、管理対象サーバのロケーション次元の値を判定してよい。ラベリングエンジン930は、コンテキスト情報(および/またはコンテキスト情報から派生した情報)を使用する条件付きヒューリスティックに基づいて管理対象サーバのラベルの値を判定してよい。条件付きヒューリスティックは、管理者によって作成され得るか、または事前構成され得る。たとえば、条件付きヒューリスティックは、管理対象サーバ130が特定のクラウドサービス提供者によって提供されるか、または特定のデータセンタに位置する場合に、ラベリングエンジン930が、管理対象サーバの環境次元に特定の値を判定することを指定する。もう1つの例として、条件付きヒューリスティックは、管理対象サーバ130が特定のファイルもしくは処理(またはファイルもしくは処理の特定のセット)を含む場合に、ラベリングエンジン930が、管理対象サーバのアプリケーション次元に特定の値を判定することを指定する。ラベリングエンジン930は、管理者に、グループレベルラベルセットを示すか、または自動的に生成されたグループレベルラベルセットを確認するよう要求してよい。ラベリングエンジン930は、管理者によるインジケーションまたは訂正に応じて、グループレベルラベルセットを修正する。
アプリケーショングループに適用可能なグループレベルラベルセットに加えて、ラベリングエンジン930は、アプリケーショングループ内の個々の管理対象サーバ130のロールラベル(つまり、ロール次元を伴うラベル)を判定する。1つの実施形態において、ラベリングエンジン930は、ハードウェアリソース、サービス情報、またはその他の管理対象サーバ情報に基づいて、管理対象サーバ130のロールラベルを判定する。たとえば、ラベリングエンジン930は、合計使用可能メモリがしきい値を超える場合、管理対象サーバ130がデータベースであると判定する。もう1つの例として、ラベリングエンジン930は、ネットワークインタフェースの数に基づいて、管理対象サーバ130がロードバランサであると判定する。1つの実施形態において、ラベリングエンジン930は、管理対象サーバ130上で実行中の処理に関する情報を管理対象サーバ情報から取得し、処理に基づいてロール次元値を判定する。表3は、処理とロール次元値との間の例示のマッピングを示す。
フロー処理モジュール940は、管理ドメイン150内のアクタの間の通信情報を取得し、通信情報に対応するアクセス制御ルールを生成する。1つの実施形態において、フロー処理モジュール940は、アクセス制御ルールによって許可されていない通信を識別し、通信を許可するアクセス制御ルールを生成する。アクセス制御ルールを生成するため、フロー処理モジュール940は、通信を生成するサービス、サービスの提供者、およびサービスの消費者を識別する。フロー処理モジュール940は、識別されたサービスを示すサービス部分、識別された提供者を示すPB部分、および識別された消費者を示すUB部分を備えるアクセス制御ルールを生成する。1つの実施形態において、フロー処理モジュール940は、管理ドメイン150には異常または悪意のある通信がないと仮定し、それに応じて、管理ドメイン150に存在する任意の通信を許可するアクセス制御ルールを生成する。
1つの実施形態において、フロー処理モジュール940は、管理対象サーバ130のグループレベルラベルセットおよびロールラベルに基づいて、アクセス制御ルールを生成する。フロー処理モジュール940は、ターゲットアクセス制御ルールを判定する。たとえば、ターゲットアクセス制御ルールは、(たとえば、管理対象サーバグルーピングモジュール920によって生成されたグラフに対応する表示されたグラフの特定の境界を示すことによって)GUIを通じて管理者によって指定される。生成されたアクセス制御ルールは、サービス、サービスの提供者としての第1の管理対象サーバ130、およびサービスの消費者としての第2の管理対象サーバ130を指定する。フロー処理モジュール940は、ラベリングエンジン930によって生成された第1および第2の管理対象サーバ130のロールラベルおよびグループレベルラベルセットを識別する。次いで、フロー処理モジュール940は、(表示されたグラフの特定のエッジに対応する)指定されたサービスを使用して、管理対象サーバ130のその他の消費者−提供者ペアに適用する追加のアクセス制御ルールを生成する。サービスの提供者である識別された管理対象サーバ130は、第1の管理対象サーバ130のグループレベルラベルセットおよびロールラベルと一致するグループレベルラベルセットおよびロールラベルを有する。サービスの消費者である識別された管理対象サーバ130は、第2の管理対象サーバ130のグループレベルラベルセットおよびロールラベルと一致するグループレベルラベルセットおよびロールラベルを有する。あるいは、または管理対象サーバ130の識別された消費者−提供者ペアをカバーする追加のアクセス制御ルールを生成することに加えて、フロー処理モジュール940は、管理対象サーバ130の識別された消費者−提供者ペアを含むようにターゲットアクセス制御ルールを拡大する。たとえば、拡大されたアクセス制御ルールのPB部分およびUB部分は、特定の管理対象サーバ130の識別子に関してではなく、ロールラベルおよびグループレベルラベルセットを含むラベルセットに関して指定される。
1つの実施形態において、フロー処理モジュール940は、第1の管理対象サーバ130と、別のアクタ(たとえば、非管理対象デバイス140、管理ドメイン150の外側の外部デバイス)との間の通信を制御するアクセス制御ルールを生成する。フロー処理モジュール940は、サービス、第1の管理対象サーバ130、およびその他のアクタを指定する既存のアクセス制御ルールを識別する。フロー処理モジュール940は、第1の管理対象サーバ130と同じラベル(ロールラベルおよびグループレベルラベルセットを含む)を有する第2の管理対象サーバ130を識別する。第1および第2の管理対象サーバ130は、共に指定されたサービスの消費者であるか、または共に指定されたサービスの提供者であるかのいずれかである。フロー処理モジュール940は、第2の管理対象サーバ130と他のアクタとの間のサービス関連の通信を許可する別のアクセス制御ルールを生成する。あるいは、または追加のアクセス制御ルールを生成することに加えて、フロー処理モジュール940は、第1の管理対象サーバ130の識別子に関してではなく、第1の管理対象サーバのラベルセット(ロールラベルおよびグループレベルラベルセットを含む)に関してアクセス制御ルールのPB部分またはUB部分を指定することによって、既存のアクセス制御ルールを拡大する。
1つの実施形態において、フロー処理モジュール940は、管理ドメイン150内の管理対象サーバ130のサーバ状態を修正するルールを生成する。サーバ状態は、どの程度まで管理モジュール132がアクセス制御ルールを実施するかを判定する。実施状態において、管理モジュール132は、アクセス制御ルールに従って無許可である通信をブロックまたは終了する。たとえば、純粋なホワイトリストポリシにおいて、管理モジュール132は、少なくとも1つのアクセス制御ルールと一致しない通信をブロックまたは終了する。サーバ状態はまた、ビルド状態およびテスト状態を含み、ここで管理モジュール132は、通信がアクセス制御ルールによって許可されない場合であっても、通信を認可する。ビルド状態またはテスト状態を始めるため、フロー処理モジュール940は、ワイルドカードを指定するPB、UB、およびサービス部分を伴う無制限のアクセス制御ルールを生成する。言い換えれば、さまざまなサービスまたはアクタへのアクセス制御ルールの適用可能性に全く制限がないので、無制限のアクセス制御ルールは、すべての通信を許可する。ビルド状態またはテスト状態から実施状態に移行するため、フロー処理モジュール940は、無制限のアクセス制御ルールを除去する。
アラート処理モジュール950は、管理対象サーバ130からアラートを取得し、アラートを処理して、(適切な場合)取得したアラートに基づいてアクセス制御ルールを生成する。1つの実施形態において、アラート処理モジュール950は、管理対象サーバ130が実施状態またはテスト状態にある場合、管理対象サーバ130からアラートを取得する。管理対象サーバ130がビルド状態にある場合、アラート処理モジュール950は、管理対象サーバ130に、アクセス制御ルールによって許可されない通信を検出したことに応じてアラートを生成しないように命令する。管理対象サーバ130がテスト状態にある場合、アラート生成モジュール430は、たとえ管理モジュール132が無許可のトラフィックをブロックするためのアクセス制御ルールを強行していなくても、無許可のトラフィックを示すアラートを生成する。
アラートに応じてアクセス制御ルールを生成する前に、アラート処理モジュール950は、アラートに関連する取得したコンテキスト情報を使用して、アラートをトリガした通信を分類する。コンテキスト情報は、通信を記述する通信情報、通信を送信もしくは受信している管理対象サーバ130に関する管理対象サーバ情報、または管理ドメイン情報を含む。アラートが外部デバイスとの通信に応じて生成される場合、コンテキスト情報は、外部デバイス情報を含む。アラートが非管理対象デバイス140との通信に応じて生成される場合、コンテキスト情報は、非管理対象デバイス情報を含む。アラート処理モジュール950は、取得したコンテキスト情報に基づいて、アラートをトリガする通信を正当なもの、または悪意あるものとして分類する。たとえば、外部デバイス情報が、外部デバイスは悪意あるものであることを示す場合、通信は悪意あるものとして分類される。
1つの実施形態において、アラート処理モジュール950は、通信を始めるアクタが異常なアクティビティに関連付けられていることを管理ドメイン情報が示す場合、通信を悪意あるものとして分類する。コンテキスト情報収集モジュール910は、共通のアクタ、処理、ポート、またはプロトコルのような、共通の特性に関連付けられているアラートの数を要約する管理ドメイン情報を生成してよい。共通の特性に関連付けられているアラートの数がしきい値数を超える場合、コンテキスト情報収集モジュール910は、通信を悪意あるものとして分類する。たとえば、管理対象サーバ130によって始められたトラフィックに応じて生成されたアラートの数がしきい値数を超える場合、管理対象サーバ130によって始められた通信は悪意あるものとして分類される。
アラート処理モジュール950は、取得した管理ドメイン情報が進行性の感染の存在を示すことを判定してよい。進行性の感性において、悪意あるソフトウェアは、時間の経過に伴って管理ドメイン150にわたり拡散する。管理ドメイン情報が、第1の管理対象サーバ130からのアラートの数がしきい値を超えることを示す場合、および第1の管理対象サーバ130と通信する第2の管理対象サーバ130がアラートの生成を開始する場合、アラート処理モジュール950は、アラートが進行性の感染に関連付けられていることを判定する。したがって、アラート処理モジュール950は、アラートをトリガする通信を悪意あるものとして分類する。
あるいは、またはコンテキスト情報に従ってアラートを分類することに加えて、アラート処理モジュール950は、アラートを受信したことに応じて管理者に通知する。管理者に通知することは、アラートをトリガする通信に関連するコンテキスト情報をレポートすることを含んでよい。アラート処理モジュール950は、対応する通信が正当なもの、または悪意あるものであるかどうかを示す分類を管理者から受信してよい。
アラート処理モジュール950は、対応する通信の分類に従ってアラートを処理する。対応する通信が悪意あるものとして分類されている場合、アラート処理モジュール950は、対応する通信を許可するアクセス制御ルールを生成しない。一部の実施形態において、アラート処理モジュール950は、アラートをトリガする通信を開始した発信元アクタとの通信を停止するよう管理対象サーバ130に命令する。言い換えれば、発信元アクタは通信遮断される。アラート処理モジュール950は、対応する通信を悪意あるものとして分類したことに応じて、アラートについて管理者に通知する。あるいは、または加えて、アラート処理モジュール950は、アラートの分類にはかかわりなく、アラートについて管理者に通知する。対応する通信が正当なものとして分類されている場合、アラート処理モジュール950は、通信を許可するアクセス制御ルールを生成するようフロー処理モジュール940に命令してよい。一部の実施形態において、アラート処理モジュール950は、アクセス制御ルールをアクセス制御ルールのセット335に追加する前に、アクセス制御ルールの承認を管理者に要求してよい。
アクセス制御ルール(ACR)作成インタフェース960は、コンテキスト情報、アプリケーショングループ、管理対象サーバ130に割り当てられているラベルセット(たとえば、ロールラベルおよび/またはグループレベルラベルセットを含む)、ならびにアクセス制御ルールを検討するためのインタフェースを管理者に提供する。ACR作成インタフェース960は、管理対象サーバ130の訂正済みのアプリケーショングループを管理者から受信してよい。これに応答して、管理対象サーバグルーピングモジュール920は、管理対象サーバのアプリケーショングループを、訂正済みのアプリケーショングループと一致するように更新する。加えて、ラベリングエンジン930は、管理対象サーバ130のグループレベルラベルセットを、新たに選択されたアプリケーショングループのグループレベルラベルセットと一致するように更新する。ACR作成インタフェース960は、管理対象サーバ130の訂正済みのラベルセットを受信してよく、ラベリングエンジン930は、訂正に従って管理対象サーバのラベルセットを更新する。管理者がアプリケーションのグループレベルラベルセットを修正したことに応じて、ラベリングエンジン930は、アプリケーショングループ内の他の管理対象サーバ130のグループレベルラベルセットを、訂正済みのグループレベルラベルセットと一致するように修正する。
ACR作成インタフェース960は、(たとえば、表示されるグラフの特定のエッジを管理者が示すことによって)ターゲットアクセス制御ルールを管理者から受信してよい。たとえば、管理者のターゲットアクセス制御ルールは、サービス、サービスの提供者、およびサービスの消費者を示す。フロー処理モジュール940は、管理者の命令に従ってアクセス制御ルールを生成し、場合によっては、サービスならびに提供者および消費者のラベルセットに基づいて、追加のアクセス制御ルールを生成する(または、生成されたアクセス制御ルールを拡大する)。
ACR作成インタフェース960は、アラート処理モジュール950によって取得されたアラートについて管理者に通知してよい。ACR作成インタフェース960は、アラートをトリガする通信の分類を受信してよく、フロー処理モジュール940は、分類に従ってアクセス制御ルールを生成してよい。1つの実施形態において、ACR作成インタフェース960は、フロー処理モジュール940によって自動的に生成されたアクセス制御ルールを管理者に提示する。ACR作成インタフェース960は、管理者の承認、修正、または自動生成のアクセス制御ルールの拒否を受信してよい。フロー処理モジュール940は、管理者から承認または修正を受信したことに応じて、アクセス制御ルールのセット335に、(場合によっては修正された)自動生成のアクセス制御ルールを追加する。
<アクセス制御ルールの生成>
図10は、1つの実施形態に従った、複数の管理対象サーバ130の間の通信を許可するアクセス制御ルールを生成する方法1000を示すフローチャートである。その他の実施形態は、異なる順序でステップを実行することができ、異なるおよび/または追加のステップを含むことができる。加えて、ステップの一部または全部は、図1に図示されているエンティティ以外のエンティティによって実行されてもよい。
ステップ1010において、複数の管理対象サーバ130の間の過去の通信を記述する通信情報が取得される。たとえば、通信情報は、管理対象サーバ130の各ペアの間で転送されたデータの日次量を記述する。ステップ1010は、たとえば、コンテキスト情報収集モジュール910によって実行される。
ステップ1020において、管理対象サーバ130のサブセットは、取得された通信情報に基づいて複数の管理対象サーバ130をグループ化することによって、複数の管理対象サーバ130から識別される。たとえば、サブセットは、管理対象サーバ130を表すノード、および管理対象サーバ130のペアの間で転送されたデータの日次量を反映する値を有するエッジによるグラフに、K平均クラスタリングアルゴリズムを適用することによって判定される。ステップ1020は、たとえば、管理対象サーバグルーピングモジュール920によって実行される。
ステップ1030において、グループレベルラベルセットは、管理対象サーバ130のサブセットに関連付けるように判定される。たとえば、ラベルセットは、アプリケーションラベル(たとえば、<アプリケーション、人的資源>)、ロケーションラベル(たとえば、<ロケーション、北米>)、および環境ラベル(たとえば、<Environment,Production>)を含む。ステップ1030は、たとえば、ラベリングエンジン930によって実行される。
ステップ1040において、ロールラベルは、管理対象サーバのサブセット内の管理対象サーバ130に対して判定される。管理対象サーバ130は、1つのロールラベルに関連付けられている。たとえば、それぞれの管理対象サーバ130で実行中の処理に基づいて、第1の管理対象サーバ130は、「データベース」値を有するロールラベルに関連付けられており、第2の管理対象サーバ130は、「Webサーバ」値を有するロールラベルに関連付けられている。ステップ1040は、たとえば、ラベリングエンジン930によって実行される。
ステップ1050において、管理対象サーバ130のサブセットの第1の管理対象サーバと第2の管理対象サーバ130との間の通信を許可するアクセス制御ルールは、グループレベルラベルセットおよびロールラベルに基づいて生成される。第2のサーバ130は、管理対象サーバ130のサブセットの一部、または管理対象サーバ130の別のサブセットの一部であってよい。たとえば、アクセス制御ルールのPB部分は、第1の管理対象サーバ130が「sshd」(sshデーモン)サービスの提供者であることを示し、アクセス制御ルールのUB部分は、第2の管理対象サーバ130が「sshd」サービスの消費者であることを示す。ステップ1050は、たとえば、フロー処理モジュール940によって実行される。
ステップ1060において、アクセス制御ルールは、アクセス制御ルールのセット335の一部として記憶される。ステップ1060は、たとえば、フロー処理モジュール940によって実行される。
ステップ1070において、方法は終了する。後に、ポリシエンジンモジュール340は、管理ドメイン全体管理ポリシ330への変更を処理する。処理は、結果として、アクセス制御ルールを1または複数の関連管理対象サーバ130の機能レベル命令に変換して、アクセス制御ルールを実施すること、および機能レベル命令を関連管理対象サーバ130に送信することをもたらす。
あるいは、またはアクセス制御ルールを生成すること加えて、本明細書において説明される方法は、管理ドメイン全体管理ポリシ330の一部としてさまざまなルール機能を伴う他のルールの作成を容易にするために使用されてよい。一部のルールは、サービスの提供者およびサービスの消費者を共に指定する。そのような例示のルールの1つは、サービスのための通信と共に使用されるプロトコル、暗号化、またはチャネルを指定するセキュア接続性機能を有する。これらのルールに対して、グローバルマネージャ120は、ターゲットルールを取得し、提供者を記述するラベルセット(たとえば、ロールラベルおよび/またはグループレベルラベルを含む)および消費者を記述するラベルセットを識別する。次いで、グローバルマネージャ120は、識別されたラベルセットのペアと一致するそれぞれのラベルセットのペアを伴う提供者−消費者ペアに適用する追加のルールを生成する(または既存のルールを拡大する)。追加の(または拡大された)ルールは、同じサービスに適用し、ターゲットルールと同じ機能プロファイル(たとえば、暗号化プロトコル、通信プロトコルタイプ)を有する。
一部のルールは、サービスの提供者のみ、またはサービスの消費者のみを指定する。消費者または提供者のうちの1つを指定する例示のルールは、記憶済みデータ暗号化、ディスク使用、周辺機器使用、またはプロセッサ使用を調整するルール機能を有してよい。これらのルールに対して、グローバルマネージャ120は、ターゲットルールを取得し、提供者または消費者に対応するラベルセットを識別する。提供者を指定するルールに対して、グローバルマネージャ120は、識別されたラベルセットと一致するラベルセットを有するサービスの提供者に適用する追加のルールを生成する(または既存のルールを拡大する)。消費者を指定するルールに対して、グローバルマネージャ120は、識別されたラベルセットと一致するラベルセットを有するサービスの消費者に適用する追加のルールを生成する(または既存のルールを拡大する)。追加の(または拡大された)ルールは、同じサービスに適用し、ターゲットルールと同じ機能プロファイル(たとえば、暗号化プロトコル、リソース使用制限)を有する。
一部のルールは、管理対象サーバ130によって提供されたサービス、または管理対象サーバ130によって消費されたサービスであるかにはかかわりなく、管理対象サーバ130に影響を及ぼす。例示のルールは、どの処理が管理対象サーバ130上で実行してよいか、汎用ディスク暗号化設定、またはいつセキュリティ分析のためにネットワークパケットを取得するかを調整する。グローバルマネージャ120は、ターゲットルールを取得し、ターゲットルールからラベルセットを識別し、識別されたラベルセットと一致するラベルセットを伴う追加の管理対象サーバ130に適用するルールを生成する(または拡大する)。追加の(または拡大された)ルールは、ターゲットルールと同じ機能プロファイルを有する。この処理は、生成されたルールがサービスを指定しないことを除いては、前に記述されたものと類似している。
一部の実施形態において、フロー処理モジュール940は、その他のルール(たとえば、アクセス制御ルール)に使用されるものとは異なるラベルのクラスに基づいて、ルールを生成する。そのようなルールは、管理対象サーバ130によって提供されるかまたは使用されるサービスに影響を及ぼし、管理対象サーバの1または複数の代替もしくは追加のラベルに基づいて生成されてよい。ラベリングエンジン930は、管理対象サーバ130の処理に適用する複数の処理固有のロールラベルを判定してよい。1つの実施形態において、フロー処理モジュール940は、サービスの提供者または消費者の代替のロールラベルに基づいて、ルールを生成する。代替のロールラベルは、ルールによって指定されたサービスを提供または消費するために管理対象サーバ130によって使用される1または複数の処理に関連付けられている処理固有のロールラベルである。
<管理対象サーバからのアラートの処理>
図11は、1つの実施形態に従った、1または複数のアクセス制御ルールを実施する管理対象サーバ130からのアラートを処理する方法1100を示すフローチャートである。その他の実施形態は、異なる順序でステップを実行することができ、異なるおよび/または追加のステップを含むことができる。加えて、ステップの一部または全部は、図1に図示されているエンティティ以外のエンティティによって実行されてもよい。
ステップ1110において、第2の管理対象サーバ130との通信に応じてアラートを生成するように構成されている第1の管理対象サーバ130から、アラートが取得される。アラートは、第1の管理対象サーバによって実施された1または複数のアクセス制御ルールが第1の管理対象サーバ130と第2の管理対象サーバ130との間の通信を許可しないことを判定する、第1の管理対象サーバ130に応じて生成される。
ステップ1120において、第1の管理対象サーバ130の少なくとも1つ、第2の管理対象サーバ130、およびアラートに関連するコンテキスト情報が取得される。たとえば、コンテキスト情報は、第1の管理対象サーバ130が第2の管理対象サーバ130において接続するよう要求したポートの数を示す管理ドメイン情報であり、ここで第2の管理対象サーバ130はポートをリスンする処理を有していない。もう1つの例として、コンテキスト情報は、第1の管理対象サーバ130と第2の管理対象サーバ130との間の通信の頻度を示す通信情報である。
ステップ1130において、アラートに対応する通信は、正当なもの、または悪意あるものとして分類される。たとえば、管理ドメイン情報で識別されたポートの数がポートのしきい値数を超えたことに応じて、通信は悪意あるものとして分類される。もう1つの例として、通信の頻度が、サービスに関連付けられている通信の予想頻度のしきい値差を超えていないことに応じて、通信は正当なものとして分類される。
ステップ1140において、通信が正当なものとして分類されるかどうかについて判定が実行される。通信が正当なものである場合、方法1100は、ステップ1150に進む。通信が正当なものでない場合、方法1100は、ステップ1170に進む。
ステップ1150において、第1の管理対象サーバ130と第2の管理対象サーバ130との間の通信を認可するアクセス制御ルールが生成される。
ステップ1160において、アクセス制御ルールは、アクセス制御ルールのセット335の一部として記憶される。
ステップ1170において、管理者がアラートについて通知される。管理者にアラートについて通知することは、通信が正当なものとして分類される場合、アラートに対応する通信を許可するように生成されたアクセス制御ルールを承認するよう管理者に要求することを含んでよい。管理者に通知することはまた、通信が悪意あるものとして分類される場合、第1または第2の管理対象サーバ130を通信遮断するよう求めるプロンプトを管理者に表示することを含んでよい。
ステップ1180において、方法は終了する。後に、ポリシエンジンモジュール340は、管理ドメイン全体管理ポリシ330への変更を処理する。処理は、結果として、アクセス制御ルールを1または複数の関連管理対象サーバ130の機能レベル命令に変換してアクセス制御ルールを実施すること、および機能レベル命令を関連管理対象サーバ130に送信することをもたらす。
上記の説明は、特定の実施形態の操作を示すために含まれており、本発明の範囲を限定することを意図されてはいない。本発明の範囲は、後段の特許請求の範囲によってのみ限定されるものとする。上記の説明から、当業者には、多くの変形が明らかとなるが、それらは本発明の精神および範囲により引き続き包含されるであろう。