(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-10
(45)【発行日】2024-06-18
(54)【発明の名称】SDDCにおけるマルチセグメントアプリケーションを定義する階層型API
(51)【国際特許分類】
G06F 8/61 20180101AFI20240611BHJP
【FI】
G06F8/61
【外国語出願】
(21)【出願番号】P 2022161790
(22)【出願日】2022-10-06
(62)【分割の表示】P 2021505355の分割
【原出願日】2019-08-14
【審査請求日】2022-10-27
(32)【優先日】2018-08-24
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2018-08-24
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】514097912
【氏名又は名称】ヴィーエムウェア エルエルシー
【氏名又は名称原語表記】VMware LLC
【住所又は居所原語表記】3401 Hillview Ave., Palo Alto, CA 94303, U.S.A
(74)【代理人】
【識別番号】100087642
【氏名又は名称】古谷 聡
(74)【代理人】
【識別番号】100082946
【氏名又は名称】大西 昭広
(74)【代理人】
【識別番号】100195693
【氏名又は名称】細井 玲
(74)【代理人】
【識別番号】100203242
【氏名又は名称】河戸 春樹
(74)【代理人】
【識別番号】100212657
【氏名又は名称】塚原 一久
(72)【発明者】
【氏名】ミネニ, シリシャ
(72)【発明者】
【氏名】チャンダ, アリジット
(72)【発明者】
【氏名】グンダ, ラクミカント, ヴィタル
(72)【発明者】
【氏名】プーン, アーノルド
(72)【発明者】
【氏名】ガンナディアン, ファルザド
(72)【発明者】
【氏名】クマール, カウスム
【審査官】福西 章人
(56)【参考文献】
【文献】特表2018-502508(JP,A)
【文献】特表2015-534696(JP,A)
【文献】特開2003-288210(JP,A)
【文献】特開2012-084129(JP,A)
【文献】米国特許出願公開第2018/0018375(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/00-8/77
9/44-9/455
(57)【特許請求の範囲】
【請求項1】
ソフトウェア定義データセンタ(SDDC)においてマルチセグメントアプリケーションを定義する方法であって、
前記SDDC内に実装する前記アプリケーションの複数のセグメントを指定し、当該アプリケーションの前記セグメント間のデータメッセージの転送を制御する複数のルールを定義する階層型アプリケーションプログラミングインタフェース(API)コマンドであって、処理された場合に、前記SDDC内に前記アプリケーションをデプロイし、前記アプリケーションのセグメント間の前記データメッセージの転送を制御するための前記複数のルールをデプロイする複数の要求を有する階層型APIコマンドを作成し、
複数のマルチセグメントアプリケーションを定義するために用いられる複数のカスタマイズ可能なテンプレートに、特定のテンプレートとして前記階層型APIコマンドを格納し、
前記マルチセグメントアプリケーションのセグメントのセット及び前記マルチセグメントアプリケーションの前記セグメント間の通信を指定するためのルールのセットを定義するマニフェストを定義するために、前記特定のテンプレートが取得及びカスタマイズされることを許可するグラフィカルユーザインタフェースまたはAPIゲートウェイを提供する
ことを特徴とする方法。
【請求項2】
前記マニフェストが後にコンピュータにより処理された場合に、(i)前記SDDC内のホストコンピュータ上の複数のマシンが、前記マルチセグメントアプリケーションの前記セグメントのセットを実装するためにデプロイされ、(ii)前記ルールのセットが、前記マルチセグメントアプリケーションの前記セグメントを実装する前記デプロイされた
複数のマシンへの、または前記デプロイされた
複数のマシンからの前記データメッセージの前記転送を制御するために、前記SDDC内のネットワーク要素のセットにデプロイされることを特徴とする請求項1に記載の方法。
【請求項3】
前記ネットワーク要素は、前記アプリケーションセグメント間、及び前記アプリケーションセグメントと前記マルチセグメントアプリケーション以外のアプリケーションとの間で、前記デプロイされたルールに基づいてデータメッセージを転送するための、管理された転送要素を含むことを特徴とする請求項
2に記載の方法。
【請求項4】
前記ネットワーク要素は、前記アプリケーションセグメントに送られた、または前記アプリケーションセグメントから送られたデータメッセージに対して、前記デプロイされたルールに基づいてミドルボックスサービス操作を実行するためのミドルボックスサービス要素を含むことを特徴とする請求項
2に記載の方法。
【請求項5】
前記ミドルボックスサービス要素は、ホストコンピュータにおいて実行されるミドルボックスサービスマシンを含むことを特徴とする請求項4に記載の方法。
【請求項6】
前記ミドルボックスサービス要素は、ホストコンピュータにおいて実行されるミドルボックスサービスエンジンを含むことを特徴とする請求項4に記載の方法。
【請求項7】
前記サービス操作は、ファイアウォール操作、ロードバランシング操作、ネットワークアドレス変換操作、暗号化操作、侵入検出操作、及び侵入防止操作のうちの1つを含むことを特徴とする請求項4に記載の方法。
【請求項8】
前記ミドルボックスサービス要素は、ファイアウォールマシンまたはデバイスを含むことを特徴とする請求項
4に記載の方法。
【請求項9】
前記マルチセグメントアプリケーションは、前記階層型APIコマンドで定義された3より多いアプリケーションセグメントを有することを特徴とする請求項1に記載の方法。
【請求項10】
前記マルチセグメントアプリケーションは、前記階層型APIコマンドで定義された5より多いアプリケーションセグメントを有することを特徴とする請求項1に記載の方法。
【請求項11】
前記複数のデプロイされたマシンは、仮想マシンまたはコンテナを含むことを特徴とする請求項
2に記載の方法。
【請求項12】
ソフトウェア定義データセンタ(SDDC)においてリソースをデプロイする方法であって、
前記SDDC内に
デプロイする
ためのリソース
の複数のセットを指定
し、前記リソースに関連付けられたデータメッセージフローを制御するルールの複数のセットを定義する階層型APIコマンドを受信し、
前記階層型APIコマンドを、前
記リソース
の複数のセット及び前記ルールの複数のセットを指定する複数の要
求へパースし、
前記複数の要求のためのソート順序を定義し、
前記ソート順序に基づいて
、サーバのセットに前記
複数の要求を提供
し、
前記サーバのセットに提供される前記複数の要求に基づいて、前記リソースの複数のセットをSDDC内にデプロイし、前記リソースに関連付けられた前記データメッセージフローを制御するために前記SDDC内のネットワーク要素のセットに前記ルールの複数のセットを提供する
ことを特徴とする方法。
【請求項13】
前記リソースは、マルチセグメントアプリケーションのアプリケーションセグメントを含むことを特徴とする請求項12に記載の方法。
【請求項14】
前記リソースは、前記アプリケーションセグメント間でデータメッセージを転送するための、管理された転送要素をさらに含むことを特徴とする請求項13に記載の方法。
【請求項15】
前記リソースは、前記アプリケーションセグメントに送られた、または前記アプリケーションセグメントから送られたデータメッセージに対してミドルボックスサービス操作を実行するためのミドルボックスサービス要素をさらに含むことを特徴とする請求項13に記載の方法。
【請求項16】
前記サービス操作は、ファイアウォール操作、ロードバランシング操作、ネットワークアドレス変換操作、暗号化操作、侵入検出操作、及び侵入防止操作のうちの少なくとも1つを含むことを特徴とする請求項15に記載の方法。
【請求項17】
前記マルチセグメントアプリケーションは、前記階層型APIコマンドで定義された少なくとも3つのアプリケーションセグメントを有することを特徴とする請求項13に記載の方法。
【請求項18】
前記マルチセグメントアプリケーションは、前記階層型APIコマンドで定義された5より多いアプリケーションセグメントを有することを特徴とする請求項13に記載の方法。
【請求項19】
デプロイされた
前記リソース
の複数のセットは、少なくとも1つの仮想マシンまたはコンテナを含むことを特徴とする請求項12に記載の方法。
【請求項20】
前記APIコマンドは、先にデプロイされたマシンを更新するパラメータのセットを含み、
前記複数のリソースのデプロイは、前記パースされたAPIコマンドにおいて指定されたパラメータのセットに基づいて、前記先にデプロイされたマシンを更新することを含むことを特徴とする請求項12に記載の方法。
【請求項21】
前記APIコマンドは、先にデプロイされたルールのセットを更新するパラメータのセットを含み、
前記複数のリソースのデプロイは、前記パースされたAPIコマンドにおいて指定されたパラメータのセットに基づいて、前記先に
提供されたルールのセットを更新することを含む
ことを特徴とする請求項12に記載の方法。
【請求項22】
少なくとも1つの処理ユニットによって実行された場合に、請求項1乃至21のいずれか1項に記載の方法を実装するコンピュータプログラム。
【請求項23】
処理ユニットのセットと、
前記処理ユニット
の少なくとも1つによって実装された場合に、請求項1乃至21のいずれか1項に記載の方法を実装するプログラムを格納した機械可読媒体と、
を有することを特徴とするコンピュータデバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、方法、機械可読媒体、コンピュータデバイス及びシステムに関する。
【背景技術】
【0002】
エンタープライズデータセンタでは、ファイアウォールは、該ファイアウォール上で実行されるアプリケーションのネットワーク形成とセキュリティの本質であった。それは、それぞれがサービスの使用が許可されたホスト及び/またはネットワークのリストを有し、ホストまたは他のレイヤ3で使用可能なポート番号またはIPアドレスに適用されるルールを提供する、アクセス制御リスト(ACL)に端を発する。ACLの後、マクロ・セグメンテーションは、ホスト上で実行されるすべてのアプリケーションにIPベースの実施を提供するようになった。これにより、企業管理者は、VLANに基づいてワークロードを保護するためのきめ細かなレベルの制御が可能になった。
【0003】
ネットワーク仮想化では、マイクロ・セグメンテーションにより、L4-L7ネットワークサービスと属性とに基づいて、データセンタ内のホスト間に分散したファイアウォールルールを実施する機能が提供されるため、ネットワークとセキュリティの領域を一変させた。トランスポート層でディープ・パケット・イントロスペクションを実行する能力を備え、Webアプリケーションフィルタリング、Verbベースのファイアウォール、URLフィルタリングを含む新しいファイアウォールがある。
【0004】
図1は、マイクロ・セグメント化されたアプリケーションのファイアウォール制御を指定するための、現在のワークフローを示している。図示されるように、管理者はまず(105で)、どのアプリケーションを保護したいかのインテントを定義する必要がある。当該インテントに基づいて、管理者は(110で)、ドメインとグループを作成して、アプリケーションの各コンポーネントの境界を定義する必要がある。グループが作成されると、管理者は(115で)、通信プロファイルに基づいて、これらのコンポーネントが互いに通信可能となる方法を定義する。
【0005】
プロファイルおよびグループが作成された後、120で、ソフトウェア定義データセンタ(SDDC)ネットワークマネージャ150に結果のポリシーが発行される。ポリシーの発行後、管理者は、該管理者が制御するデータセンタのすべてのインスタンスについてネットワークマネージャにログインし、ドメインとグループの作成で指定されたグループ化基準に基づいて、(125で)ネットワーク及びセキュリティグループを作成する必要がある。当該基準は、論理スイッチポート、タグ、またはVM/コンテナ名に基づき得る。
【0006】
管理者は、125におけるネットワーク及びセキュリティグループを作成する際に当該基準にマッチするよう、対応するタグを適用してワークロードVM/コンテナを手動で管理する(130)必要がある。タグが基準にマッチすると、(135で)通信プロファイルで定義されたファイアウォールルールが各VMに適用される。
【0007】
このアプローチにはいくつかの欠点がある。例えば、グループ化基準(タグ、VM名等)の管理は、手動で面倒である。これは、当該管理が複数の環境(例えば、開発、ステージング、及び生産)にわたって繰り返されなければならないため、特に問題である。さらに、アプリケーションの検出と分類は、管理上のオーバーヘッドであり、しばしばエラーを起こしやすい。このアプローチは、保護されているエンティティが本質的に一時的なものである場合、動的ワークロード(コンテナ等)環境に対してもスケーラブルではない。
【発明の概要】
【0008】
いくつかの実施形態は、マルチセグメントアプリケーションのアプリケーションセグメントがどのように定義または変更されるべきか、及びこれらのセグメント間の通信プロファイルがどのように定義または変更されるべきかを表現するアプリケーションベースのマニフェストを使用することにより、マルチセグメントアプリケーションをデプロイ及び制御するための簡略化されたメカニズムを提供する。いくつかの実施形態では、これらのマニフェストはアプリケーション固有のものである。また、いくつかの実施形態では、ソフトウェア定義データセンタ(SDDC)内のデプロイメントマネージャがこれらのマニフェストをテンプレートとして管理者に提供し、管理者は、データセンタ内にマルチセグメントアプリケーションをデプロイする際に、これらのテンプレートを使用してそのインテントを表現することができる。アプリケーションベースのマニフェストは、SDDCにおいて以前にデプロイされたマルチセグメントアプリケーションの制御にも使用できる。このようなマニフェストを使用することにより、管理者は、エンドポイント及びネットワーク属性に基づいてきめ細かなマイクロ・セグメンテーションルールを管理することができる。
【0009】
マルチセグメントアプリケーションは、複数のアプリケーションセグメントを含むアプリケーションである。いくつかの実施形態では、1以上のアプリケーションセグメントのそれぞれは、マルチセグメントアプリケーションの他のアプリケーションセグメントのメモリ空間と独立した、独自のメモリ空間で実行されるスタンドアロンアプリケーションである。いくつかの実施形態では、マルチセグメントアプリケーションの異なるアプリケーションセグメントは、異なるマシン(例えば、異なるVMまたはコンテナ)によって実装される。
【0010】
いくつかの実施形態では、アプリケーションマニフェストは、マニフェストを実装した後に定義されてもよいし、以前に定義されてもよい、マルチセグメントアプリケーションの構文表現を含む。いくつかの実施形態におけるアプリケーションマニフェストは、(1)1以上のアプリケーションセグメント、及び(2)それらに関連する1以上のポリシーを定義または変更する2以上のコマンドを含む階層型APIである。アプリケーションマニフェストは、異なるコマンドを他のコマンドの下に入れ子にすることができるので、階層型APIである。例えば、アプリケーションの1つのグループの定義は、グループ内の特定のアプリケーションを実装するための特定のマシン(例えば、特定のVM)の定義を含むことができる。いくつかの実施形態では、アプリケーションマニフェストは、管理者の要件に基づいてアプリケーションをモデル化する能力だけでなく、周知のアプリケーションとその依存関係をカプセル化する、事前定義されたテンプレートとして管理者に提供される。
【0011】
いくつかの実施形態では、マニフェストは宣言型言語で定義される。いくつかの実施形態では、SDDC内のマニフェスト処理フレームワークは、(1)マニフェスト内で定義されたマルチセグメントアプリケーションのアプリケーションセグメントをデプロイ及び構成するようにSDDC内のコンピュートマネージャに指示し、(2)マニフェストによって指定されたアプリケーションセグメント間及びアプリケーションセグメントと他のアプリケーションとの間の通信プロファイルを実装するためのネットワーク転送及びサービスルールを定義及びデプロイするようにSDDC内のネットワークマネージャに指示する、いくつかのコマンドにマニフェストをパースする。
【0012】
ある実施形態では、アプリケーションセグメントは、SDDC内のホストコンピュータ上で、及び/またはスタンドアロンコンピュータとして実行されるVMまたはコンテナとしてデプロイされる。同様に、ある実施形態におけるネットワーク転送及びサービスルールは、ソフトウェア転送要素(例えば、ソフトウェアスイッチ及びルータ)とソフトウェアミドルボックスサービスVM(例えば、SDDC内のホストコンピュータ上で実行されるサービスコンテナ及び/またはサービスモジュール)とによって処理される。これらの転送及び/またはサービスルールは、いくつかの実施形態では、SDDCにおけるハードウェア転送要素(例えば、トップオブラックスイッチ)、独立型ハードウェアまたはソフトウェアゲートウェイ、及び/または独立型ミドルボックスアプライアンス上にも構成される。
【0013】
本発明のいくつかの実施形態は、SDDCにおいてマルチセグメントアプリケーションをデプロイするための方法を提供する。方法は、最初に、マルチセグメントアプリケーションの複数のアプリケーションセグメントを定義するための複数の操作要求を宣言フォーマットで指定する、階層型APIコマンドを受信する。当該方法は、APIコマンドをパースしてアプリケーションセグメントを識別する。パースされたAPIコマンドに基づいて、方法は、複数のアプリケーションセグメントのデプロイに必要なソフトウェア定義(SD)リソースと、これらのセグメント間の転送及びサービス操作をデプロイする。
【0014】
いくつかの実施形態では、方法が使用するデプロイメントプロセスは、第2のリソースが依存する任意の第1のSDリソースが、当該第2のリソースよりも先にデプロイされることを保証する。いくつかの実施形態では、第2のSDリソースが第1のSDリソースの子である場合、第2のSDリソースは第1のSDリソースに依存する。代替的に、または付随的に、いくつかの実施形態では、第2のSDリソースが第1のSDリソースに何らかの動作上の依存性を有する場合、第2のSDリソースは第1のSDリソースに依存することも可能である。
【0015】
いくつかの実施形態では、方法は、各セットが1つのリソースレベルで1以上のSDリソースを有する、複数のSDリソースのセットを識別することにより、APIコマンドをパースする。いくつかの実施形態におけるデプロイは、より低いリソースレベルでSDリソースをデプロイする前に、より高いリソースレベルで識別されたSDリソースセットをデプロイする。階層型APIコマンドで指定可能なSDリソースの例には、アプリケーションセグメントを実装するためのSDコンピュート要素(例えば、VMまたはコンテナ)、アプリケーションセグメントに関連するデータメッセージを転送するための転送ルールを実装するためのSD転送要素(例えば、管理されたソフトウェアスイッチ及びルータ、該管理されたソフトウェアスイッチ及びルータによって実装される論理スイッチ及びルータ等)、及びアプリケーションセグメントに関連するデータメッセージにサービスを実行するためのサービスルールを実施するためのSDサービスミドルボックスモジュール(例えば、ファイアウォール操作、ロードバランシング操作、ネットワークアドレス変換操作、暗号化操作、侵入検知操作、侵入防御操作等のミドルボックスサービス操作を実行するサービスVMまたはモジュール)が含まれる。
【0016】
ある実施形態では、API処理システムがAPIコマンドを処理する。このコマンドは、以前にデプロイされたSDリソースを更新するための一連のパラメータを含むことができる。この場合、API処理システムは、パースされたAPIコマンドで指定された一連のパラメータを使用して、マルチセグメントアプリケーションに対して先にデプロイされたSDリソースを更新することで、マルチセグメントアプリケーションをデプロイする。このような場合、APIコマンドには、新しいSDリソースを定義する一連のパラメータが含まれる。このような場合、API処理システムは、パースされたAPIコマンドで指定された一連のパラメータに基づいてSDリソースをデプロイすることによって、SDリソースをデプロイする。
【0017】
いくつかの実施形態では、階層型APIコマンドが1つのアトミックユニットとして処理される。従って、API処理システムは、階層型APIコマンド内の識別されたSDリソースがデプロイ可能であるか否かを判断する。もしそうであれば、API処理システムは、APIコマンドが正常に処理されたという確認を、階層型APIコマンドを生成したソースに送信する。そうでなければ、APIコマンド内の1以上のSDリソースがデプロイ可能でない場合、API処理システムは、APIコマンドが正常に処理されていないというメッセージを、階層型APIコマンドを生成したソースに送信する。
【0018】
いくつかの実施形態は、データコンピュートエンドポイントからのコンテキストをネットワークに結び付けることによって、次世代のマイクロ・セグメンテーションのための道を開く。エンドポイントベースのコンテキストは、ファイルハッシュ、パブリッシャ情報、ライセンス、プロセス情報等のアプリケーション固有の属性だけでなく、ユーザIDにも関連し得る。いくつかの実施形態では、コンテキスト情報は、(例えば、仮想化されたネットワーク装置を介して)SDDCに配置されたディストリビュータにデプロイされる、アプリケーションベースのファイアウォールによって使用される。アプリケーションベースのファイアウォールをコモディティ化する最大の課題の1つは、このような複雑なファイアウォールの消費モデルであり、これはエンドポイント内では何千ものプロセスが、データセンタ内では何百万ものプロセスが実行され得るからである。しかしながら、アプリケーションマニフェストを使用することにより、いくつかの実施形態は、きめ細かなコンテキストベースのルールを作成し、これらのルールを管理する非常に困難なタスクを管理することを管理者に可能ならしめる新規なアプローチを提供する。
【0019】
前述の概要は、本発明のいくつかの実施形態の簡単な紹介として役立つことを意図している。これは、本文書に開示されたすべての発明主題の紹介または概略であることを意味するものではない。以下の詳細な説明及び当該詳細な説明で参照される図面は、概要で説明された実施形態、並びに他の実施形態をさらに説明する。従って、本文書により説明されるすべての実施形態を理解するために、概要、詳細な説明、図面、及び特許請求の範囲の完全な検討が必要である。また請求される主題は、概要、詳細な説明、及び図面における例示的な詳細によって限定されるべきではない。
【0020】
本発明の新規な特徴は、添付の特許請求の範囲に記載されている。しかしながら、説明の目的のため、本発明のいくつかの実施形態は以下の図面に記載される。
【図面の簡単な説明】
【0021】
【
図1】
図1は、マイクロ・セグメント化されたアプリケーションのファイアウォール制御を指定するための現在のワークフローを示している。
【
図2】
図2は、SDDCでテナント管理者から受信したアプリケーションマニフェストを処理するマニフェスト処理フレームワークを示している。
【
図3】
図3は、マニフェスト処理フレームワークの構成要素の操作を示すプロセスを示している。
【
図4E】
図4A~Eは、Slackと呼ばれるマルチセグメントアプリケーションを定義するアプリケーションマニフェストの例を示している。
【
図6】
図6は、
図5に示したアプリケーションのデータモデルを示している。
【
図7】
図7は、マニフェストテンプレートに基づいてマルチセグメントアプリケーションを定義及びデプロイするための例示的なフローを表したプロセスを示している。
【
図8】
図8は、いくつかの実施形態のためのこの新しい分類エンジンのアーキテクチャを示している。
【
図9】
図9は、本発明のいくつかの実施形態のAPI処理システムの一例を示している。
【
図10】
図10は、いくつかの実施形態が、どのようにコンテキストベースのファイアウォールルールをホストコンピュータで実施するかを示している。
【
図11】
図11は、データセンタ内のマルチセグメントアプリケーションのデプロイメントについて学習するためのデータ収集の例を示している。
【
図12】
図12は、本発明のいくつかの実施形態が実装されるコンピュータシステムを概念的に示している。
【発明を実施するための形態】
【0022】
発明の以下の詳細な説明では、本発明の多数の詳細、実施例、及び実施形態が記載及び説明される。しかしながら、本発明は記載された実施形態に限定されるものではなく、そして本発明は記載された特定の詳細及び例のいくつかがなくても実施され得ることは、当業者には明白であり、明らかであろう。
【0023】
いくつかの実施形態は、マルチセグメントアプリケーションをデプロイ及び制御し、マルチセグメントアプリケーションのセグメント間の通信プロファイルを定義するための単純化されたメカニズムを提供する、新規なアプリケーションベースのマニフェストを提供する。マルチセグメントアプリケーションは、複数のアプリケーションセグメントを含むアプリケーションである。いくつかの実施形態では、各アプリケーションセグメントは、マルチセグメントアプリケーションの任意の他のアプリケーションセグメントのメモリ空間から分離された、固有のメモリ空間で実行されるスタンドアロンアプリケーションであってよい。いくつかの実施形態では、マルチセグメントアプリケーションの異なるアプリケーションセグメントは、異なるマシン(例えば、異なるVMまたはコンテナ)によって実装される。
【0024】
いくつかの実施形態では、ソフトウェア定義データセンタ(SDDC)内のデプロイメントマネージャが、これらのマニフェストをテンプレートとして管理者に提供する。管理者は、これらのテンプレートを使用して、データセンタにマルチセグメントアプリケーションをデプロイする際のインテントを示すことができる。アプリケーションベースのマニフェストは、SDDCにおいて以前にデプロイされたマルチセグメントアプリケーションの制御にも使用できる。このようなマニフェストを使用することにより、管理者は、エンドポイント及びネットワーク属性に基づいてきめ細かなマイクロ・セグメンテーションルールを管理することができる。
【0025】
本文書では、データメッセージは、ネットワークを介して送信される特定のフォーマットのビットのコレクションを参照する。本明細書において、データメッセージという文言が、イーサネットフレーム、IPパケット、TCPセグメント、UDPデータグラム等、ネットワークを介して送信され得る種々のフォーマットのビット集合を参照するために用いられ得ることは、当業者により理解されるであろう。また、本文書で用いられるように、L2、L3、L4、及びL7レイヤ(またはレイヤ2、レイヤ3、レイヤ4、及びレイヤ7)への参照は、それぞれ、OSI(Open System Interconnection)レイヤモデルの第2層のデータリンク層、第3層のネットワーク層、第4層のトランスポート層、及び第7層のアプリケーション層への参照である。
【0026】
図2は、SDDCにおいてテナント管理者から受信したアプリケーションマニフェストを処理するマニフェスト処理フレームワーク200を示している。当該処理に基づいて、フレームワーク200は、SDDC内のコンピュートマネージャ及びネットワークマネージャと対話しすることで、マルチセグメントアプリケーションをデプロイし、SDDC内の転送及びサービス要素を構成し、該アプリケーションのセグメント間、及びこれらのセグメントとSDDCの内部及び外部の他のアプリケーション及びデバイスとの間で、所望の通信ルールを設定する。いくつかの実施形態では、アプリケーションマニフェストはまた、以前にデプロイされたマルチセグメントアプリケーション、及び/または以前にデプロイされたセグメントのための以前に構成された通信プロファイルを調整するための要求を含むことができる。
【0027】
図示されるように、マニフェストフレームワークは、パーサ205、制約チェッカ210、ソータ220、オーケストレータ230、いくつかのルール及びポリシーストレージ215、225、及び235を含む。これら構成要素の操作は、当該構成要素がアプリケーションマニフェストのために実行するプロセス300を示した
図3を参照して説明される。図示されるように、プロセス300は、マニフェスト処理フレームワーク200が(305で)管理者のマシン260から(例えば、アプリケーションマニフェストを指定するために管理者によって使用されるVM、コンテナ、またはスタンドアロンコンピュータから)アプリケーションマニフェストを受信した際に開始する。上述し、以下でさらに説明するように、いくつかの実施形態では管理者は、マニフェスト255を指定するために、マニフェストフレームワークによって提供されるアプリケーションマニフェストテンプレートを使用することができる。
【0028】
いくつかの実施形態において、アプリケーションマニフェスト255は、マルチセグメントアプリケーションの構文表現を含む。いくつかの実施形態のアプリケーションマニフェストは、(1)1以上のアプリケーションセグメント、及び(2)各アプリケーションセグメントと、別のアプリケーションセグメントまたはSDDCの内部または外部の別のアプリケーション/マシンとの間の1以上の通信プロファイルを定義または修正する、2以上のコマンドを含む階層型APIである。
【0029】
アプリケーションマニフェストは、異なるコマンドを他のコマンドの下に入れ子にすることができる階層型APIであるため、例えば、ドメイン定義はアプリケーションセグメントグループ定義を含むことができ、その順番にアプリケーションセグメントを実装するための1以上のマシン(例えば、特定のVMまたはコンテナ)の1以上の定義を含むことができる。いくつかの実施形態では、マニフェストは宣言型言語で定義される。例えば、マニフェストはある実施形態ではJavascript Object Notation(JSON)フォーマットで書かれるが、他の実施形態ではXML(Extensible Markup Language)フォーマットのような他の階層型フォーマットで表現され得る。
【0030】
アプリケーションマニフェスト255を受信した後、フレームワーク200のパーサ205は、マニフェストに含まれるいくつかの異なる要求(コマンド)を(310で)識別する。たとえば、典型的な3層アプリケーションでは、マニフェストはWebサーバ、アプリケーションサーバ、データベースサーバのデプロイメントを指定できる。このような状況では、パーサはマニフェストを1以上のコマンドの3つのセットにパースし、各セットは、1つの層のデプロイメント(例えばWebサーバ、アプリサーバ、またはデータベースサーバのデプロイメント)に関連付けられる。ある実施形態では、パーサは、マニフェストから入力APIツリーを生成する。入力APIツリーは、マニフェストの異なる部分間の親子関係を表す。
【0031】
パーサがマニフェストをいくつかの個別の要求に分割した後、制約チェッカ210は、個別の要求のいずれかが、その制約ストレージ215に格納されたポリシー制約に違反するか否かを(315で)判定する。もしそうであれば、フレームワークは管理者にエラーを返す。そうではない場合、ソータ220は、これらの要求を実装するためのソートされた順序を(320で)識別する。このソートされた順序を識別するために、いくつかの実施形態では、ソータは、マニフェストで識別された各SDリソースをそのタイプに従って識別するタイプ固有マップを構築する。これを行うために、いくつかの実施形態では、ソータは、パーサによってマニフェストから構築された入力APIツリーの幅優先探索を実行し、リソースタイプに基づいて入力を異なるバケットに分類し、分類された入力をタイプ固有マップに格納する。
【0032】
タイプ固有マップ内の各キーはリソースタイプであり、各キーの値は入力APIツリー内の特定のタイプのすべてのリソースのリストである。各ノード要素は、その親とともに格納される。要約すると、入力APIツリーはリソースタイプ、例えば、1つのバケット内のすべての領域、別のバケット内のすべてのグループ等に基づいて分類される。タイプ固有マップを生成した後、ソータは入力APIツリーにSDリソースを永続化するための実行順序を定義する。ある実施形態では、実行順序は、リソースタイプの事前定義された順序付きリストである。当該リストは、入力ツリー内のリソースを永続化する順序を規定する。新たな型がシステムに導入された場合、実行順序は、該新たな要素の順序を含むように動的に更新される。例えば、いくつかの実施形態におけるサンプル実行順序は、(1)領域、(2)グループ、及び(3)通信マップであってよい。つまり、最初に領域、次にグループ、次に通信マップを作成する必要がある。
【0033】
次に、ソータはサービスプロバイダレジストリを使用して、構成されたAPIツリー内のSDリソースを永続化する。サービスプロバイダレジストリは、コールバックハンドラへのリソースタイプのマップである。コールバックハンドラは、システム内のタイプごとに登録される。コールバックハンドラの責任は、登録されたタイプを永続化することである。以下にさらに説明されるように、コールバックハンドラは、いくつかの実施形態においてデプロイメントプラグインにより実装される。デプロイメントプラグインは、API処理システムに接続して、受信されたAPIによって要求された変更の永続化、及び永続化された変更のデプロイを処理するモジュールである。
【0034】
ソータが呼び出し順序を識別し、当該順序に基づいてコールバックハンドラを呼び出してデプロイメントデータを1以上の構成データベースに永続化させると、オーケストレータ230は1以上のネットワーク、コンピュート、及び/またはサービスマネージャ240と(325で)相互作用し、構成データベースに永続化された構成データに基づいてSDリソース250をデプロイする。いくつかの実施形態では、オーケストレータ230は、構成データベースにデータを永続化するためのコールバックハンドラも実装されたデプロイメントプラグインによって実装される。
【0035】
また、いくつかの実施形態では、SDDCリソースマネージャ240は、1以上のSDDCリソースコントローラ245を使用して、マルチセグメントアプリケーション及びそれに関連する通信プロファイルをSDDCリソース250にデプロイする。このようなリソースの例は、ホストコンピュータ、VM、コンテナ、ソフトウェア及びハードウェア転送要素、ソフトウェア及びハードウェアミドルボックスサービス要素等を含む。リソースマネージャ及びコントローラ240及び245は、(1)マニフェストで定義されたマルチセグメントアプリケーションのアプリケーションセグメントをデプロイ及び構成するコンピュートマネージャ及びコントローラと、(2)マニフェストで指定されたアプリケーションセグメントの通信プロファイルを実装するためのネットワーク転送及びサービスルールを定義及びデプロイするネットワークマネージャ及びコントローラとを含む。
【0036】
ある実施形態では、アプリケーションセグメントはホストコンピュータ上で実行するVMまたはコンテナとして、及び/またはスタンドアロンコンピュータとして、SDDCにデプロイされる。同様に、いくつかの実施形態におけるネットワーク転送及びサービスルールは、ソフトウェア転送要素(例えば、ソフトウェアスイッチ及びルータ)と、SDDC内のホストコンピュータ上で実行するソフトウェアミドルボックスサービスVM、サービスコンテナ及び/またはサービスモジュールによって処理される。これらの転送及び/またはサービスルールは、いくつかの実施形態では、SDDC内の、ハードウェア転送要素(例えば、トップオブラックスイッチ)、スタンドアロンハードウェアまたはソフトウェアゲートウェイ、及び/または独立型ミドルボックスアプライアンスにおいても構成される。
【0037】
図4は、Slackと呼ばれるマルチセグメントアプリケーションを定義するアプリケーションマニフェストの例を示している。この例のアプリケーションマニフェストは、マニフェスト処理フレームワークに送信する実際のアプリケーションマニフェストを定義するために使用され得る、階層型APIテンプレート400である。このようなテンプレートは、マルチセグメントアプリケーションをデプロイするためにしばしば順番に呼び出される、共通のセットを指定するメカニズムを提供する。テンプレートAPIを利用することで、管理者は一連のAPIを最初から定義することなく、共通の要求セットをデプロイできる。
【0038】
マニフェストテンプレート400から実際のマルチセグメントアプリケーションマニフェストを指定するには、いくつかの実施形態では、管理者は、マニフェストになるテンプレートのコピーにおいて、プレースホルダフィールドと呼ばれる限られた数のフィールドを修正するだけでよい。この観点から、テンプレートAPIは、ブランクフィールドまたはプレースホルダを有する、(1以上のリソースに関しての)1以上の要求セットである。プレースホルダアプリケーション名、アプリケーション識別子(App_ID)、プロセス名、プロセスハッシュ、ユーザ識別子、またはマルチセグメントアプリケーションテンプレートで用いられるその他のキー値ペアの例。一部の実施形態では、管理者は、実際のマニフェストになるテンプレートのコピーの他の構成要素(例えば、セグメントの追加、通信ルールの追加または削除、通信ルールパラメータの変更等)も変更できる。
【0039】
いくつかの実施形態において、APIテンプレートは管理されたリソースである。このことは、プレースホルダのリスト及びAPIオブジェクトであるボディにより表される。
図4のAPIテンプレート400は、Slackアプリケーションをデプロイするためのものである。
図5は、Slackアプリケーション500の例示的なデプロイメントを示している。このアプリケーションは、
図6に図式されたデータモデルを有する。アプリケーション500及びデータモデル600の両方は、アプリケーションマニフェスト400の部分をさらに説明するために、以下でさらに説明される。
【0040】
アプリケーションマニフェスト400は、ツリーフォーマットと同等の階層型JSONフォーマットである。ツリーの各ノードは、SDDCリソースに対応しており、該ノードのリソースタイプを記述するフィールドを有する。各ノードは、親子関係を示すノードのすべての子を保持する特別なプロパティを有する。子ノードは、順番に複数の子を有することができ、これは任意の深さに行くことができる。従って、各ノードは、(ツリー内の非リーフノードと同様に)同時に親及び子になり得る。
【0041】
図4において、各ノードは、ノードのタイプを記述するプロパティ「resource_type」を有する。いくつかの実施形態におけるタイプの例は、Infra、Tenant、Domain、Group、CommunicationMap、CommunicationEntry等を含む。これらはすべて、データセンタ内の異なるタイプのリソースである。1つのノードは、該ノードのすべての子を保持するプロパティ「children」を有することもできる。例えば
図4において、タイプDomain410のノードはタイプInfra405の子であり、「Group」及び「CommunicationMap」である2つの異なるタイプの子415~450を有する。いくつかの実施形態において、TenantはマルチテナントSDDCにおけるテナントを参照し、Domainはテナント下のワークロードであり、CommunicationMapはセキュリティポリシーであり、CommunicationEntryはセキュリティポリシー下のルールである。
【0042】
いくつかの実施形態では、各SDリソースは、すべての分類上の親が含まれる、ルートからの一意のパスで識別され得る。例えば、/VMwareは、テナントVMwareに関連付けられているすべてのリソースを指定する。path/VMware/domains/Outlookは、テナントVMwareのすべてのOutlookワークロードを指定する。パス/VMware/domains/Outlook/communication-maps/web-profileは、テナントVMwareのOutlookワークロードのwebプロファイルを指定する。パス/vmware/domains/Outlook/communicationmaps/web-profile/communication-entries/open-browser-accessは、テナントVMwareのOutlookワークロードのオープンブラウザアクセスを指定する。より一般的には、セキュリティポリシーのパスのフォーマットは/<tenant-name>/domains/<workload-name>/communication-maps/<security-policyname>/communication-entries/<rule-name>のように指定できる。
【0043】
図4に示されるように、このマニフェストテンプレート400は、プレースホルダーリスト404と共に名前402とテンプレートの説明403を提供する、テンプレートヘッダ401を含む。マニフェストテンプレート400は、11の要求405~480も含む。要求405は、Infraと呼ばれる構成を作成するためのものである。この構成は、要求405~450によって定義される8つの子を有する。要求410は、slack_appという領域を定義する。
【0044】
要求415~445は、slack_appマルチセグメントアプリケーションの7つのアプリケーションセグメントを定義する。これら7つのセグメントが、
図5に示されている。図示されるように、これら7つのセグメントは、(要求415によって定義される)slack共有515、(要求420によって定義される)slackベース520、(要求425によって定義される)slackコール525、(要求430によって定義される)slack編集530、(要求435によって定義される)slackダウンロード535、(要求440によって定義される)slackアップロード540、及び(要求445によって定義される)slackファイル転送545を含む。各セグメントについての各要求415~445は、当該セグメントが、当該セグメントの名前(識別子)と等しく設定されたキーでタグ付けされたVMによって実装されることを指定する。
【0045】
図5及び
図6は、これらのセグメント間の通信がslackベース520を通ることを示している。このように、要求450は、slackベース520と他のセグメント515及び525~545のそれぞれとの間のデータメッセージ交換に関する6つの通信ルール(即ち、通信エントリ)に関して、これらのセグメント間の通信プロファイル(すなわち、通信マップ)を定義する。いくつかの実施形態では、これらの6つの通信規則は、データプレーン内のファイアウォールルールによって実装される。
図5はまた、いくつかの実施形態において、通信ルール(例えば、ファイアウォールルール)は、appID、プロセス名等、任意の数の異なるコンテキスト属性に基づき得ることを示している。
【0046】
図示されるように、各通信エントリは、データメッセージのソース(例えば、ソースグループ)、データメッセージの宛先(例えば、宛先グループ)、通信が許可されるか拒否されるかを指定するアクション、及びデータメッセージによって使用されるサービス、ポート及び/またはプロトコルのセットで表現される。通信マップはまた、
図5に示されるアクティブディレクトリサービス590とslackベースがどのように通信するかを指定するルール480(即ち、通信エントリ)を定義する。いくつかの実施形態では、これらの通信エントリ455~480は、Slackの異なるセグメント間、及び他のマシン(SDDCの内部または外部)とこれらのセグメントとの間の通信を制御するために、マニフェスト処理フレームワークによってファイアウォールルールに変換される。
【0047】
ある実施形態では、テンプレートは、GET、PATCH、DELETE、及びPOSTコマンドを通じて管理することができる。例えばある実施形態では、GET/policy/templatesは、データベース内のテンプレート識別子のリストを返す。いくつかの実施形態では、GET /policy/templates/<template-id>は、特定のテンプレート識別子のためのテンプレートを返す。また、いくつかの実施形態では、テンプレートJSON定義に続くPATCH /policy/templatesは、新しいテンプレートを作成する。いくつかの実施形態では、DELETE /policy/templates/<template-id>は、特定のテンプレート識別子が与えられたテンプレートを削除する。
【0048】
いくつかの実施形態では、POST /policy/templates/<template-id>?action=deployは、テンプレートAPIに基づいて階層型APIを定義して起動するために規定される。このコマンドは、特定のテンプレート識別子<template-id>が与えられたテンプレートをデプロイする。テンプレート内のプレースホルダの値を提供する引数は、POSTリクエストのボディに渡される。プレースホルダ引数を伴うPOSTコマンドに応答して、いくつかの実施形態では、マニフェスト処理フレームワークのテンプレートマネージャは、識別されたテンプレートをフェッチし、階層型APIを定義するためにプレースホルダ値を表す引数を適用し、そして階層型API内の要求された各操作を識別するための1以上の要求オブジェクトを作成する。このようなテンプレートマネージャについては、以下でさらに説明する。
【0049】
要するに、マニフェストテンプレート400は、マルチセグメントアプリケーションを定義するプロセスのセットと、推奨される通信プロファイルのセットとを指定する。これらの定義は、管理者の要件に基づいて管理者が変更できる。つまり、管理者は、これを環境においてを逐語的に使用するか、またはデータセンタで必要と判断された修正を行うかの選択肢を持っている。このSlack用のサンプルアプリケーションマニフェストは、業界全体の標準として公開することができ、このアプリケーションのデプロイメントやマイクロ・セグメンテーションをより容易にすることができる。
【0050】
図7は、マニフェストテンプレートに基づいてマルチセグメントアプリケーションを定義及びデプロイするための例示的なフローを表すプロセス700を示している。図示されるように、プロセス700は、最初にアプリケーションマニフェストテンプレートのリストを(705で)提供する。いくつかの実施形態におけるマニフェストテンプレートは、最も一般的に使用されるマルチセグメントアプリケーションのためのテンプレートである。いくつかの実施形態では、マニフェストテンプレートは、オープンソースであり、コミュニティが主導しているため、これらのアプリケーションの露出度及び精度が高くなる。
【0051】
次に、710で、管理者は、提供されたマニフェストテンプレートのリストから1つのマニフェストテンプレートを選択する。選択されたテンプレートは、管理者がデプロイを所望するマルチセグメントアプリケーション用である。715で、管理者は、自身のインテントに基づいてマニフェストを確認する。選択したマニフェストは、テンプレートの発行者によって定義されたデフォルトの構成を使用して、コンピュート、ネットワーク、及びセキュリティのインテントを示す。管理者は、デフォルト設定を受け入れるか、所望のインテントと一致するように変更することができる。
【0052】
720で、管理者は、マニフェストをマニフェスト処理フレームワークに提出して、処理とデプロイメントを行う。マニフェストがフレームワークに公開されると、フレームワークは、マニフェストで指定されたコンピュート、ネットワーク及び/またはサービスリソースを(725で)デプロイする。725の後、プロセス700は終了する。
【0053】
いくつかの実施形態では、フレームワークは、デプロイメント環境から異なるタイプのコンテキスト属性(既存または新たなワークロードで使用されるもの等)を収集し、マニフェスト内の通信エントリの定義に際してこれらの属性を使用者に使用可能ならしめる、ミドルボックスサービスである新しい分類エンジンを使用する。
図8は、いくつかの実施形態のためのこの新しい分類エンジンのアーキテクチャを示している。
【0054】
VM上で実行されるアプリケーションは、本質的に一時的なものではない。管理者がアプリケーションをインストールすると、通常、これらのアプリケーションは長時間実行される。これは、通常、VM及びベアメタルサーバに適用される。いくつかの実施形態では、ホストコンピュータ上で実行されているハイパーバイザ上で実行されるコンテキストエンジンは、ゲストVM上で実行中のプロセスのリストを、SDDC管理プレーンに定期的に送信する。アプリケーション発見エンジン805は、この情報を受信し、アプリケーション情報及び関連する仮想マシンについての視覚化を提供する。
【0055】
いくつかの実施形態では、この情報は連続的にポーリングされず、プロセスは自動化されない。従って、いくつかの実施形態では、管理プレーン上の新しい分類垂直は、VM上で実行中/インストール済みプロセスのリストを検出し、プロセス情報に基づいてそれらにタグを付けるための周期的な同期動作を内部的に実行する。インベントリ垂直810は、システム内のVMのリストを取得し、内部でセキュリティグループを作成し、これらのVMのアプリケーション発見を可能にする。VMで実行されているアプリケーション/プロセスのリストが識別されると、VMにプロセスのタグが付けられる。グルーピング/タグ付けマネージャ815は、分類エンジン800のためのセキュリティグループ及び他のタグ付けデータを収集し、一方、ファイアウォールマネージャ820は、デプロイされたファイアウォールから、及びデプロイされたファイアウォールのためのコンテキストデータを収集する。収集されたタグに基づいて、アプリケーションレベルで作成されたポリシーからのインテントは、これらのプロセスのセキュリティグループと通信プロファイルを決定する。
【0056】
図9は、本発明のいくつかの実施形態のAPI処理システム900の一例を示している。このAPI処理システム900は、いくつかの実施形態のマニフェスト処理フレームワーク200を実装する。このシステムでは、各テナントは、別々の環境と見なすことができる1以上のSDDCインスタンス905を含む、SDDCクラスタ902を作成できる。図示されるように、いくつかの実施形態では、各SDDCインスタンス905は、APIゲートウェイ920、APIプロセッサ925、コンピュートマネージャ910、ネットワークマネージャ915、コントローラ940、テンプレートマネージャ927、ポリシーチェッカ923、設定データストレージ935、及びいくつかのデプロイメントプラグイン930を含む。
【0057】
いくつかの実施形態において、これらの構成要素の2つ以上は、1以上のデータセンタ内の2以上のマシン(例えば、VM、コンテナ、スタンドアロンサーバ等)において実行され、ネットワークを介して互いに通信する。これらの実施形態または他の実施形態では、各SDDCインスタンスは、負荷を分散し、高可用性を実現するために、これらの各構成要素の複数のインスタンスを含む。
【0058】
コンピュートマネージャ910は、ワークロードマシン(例えば、ワークロードVMまたはコンテナ)をデプロイして管理する。一方、ネットワークマネージャ915は、ネットワークリソース(例えば、ソフトウェアスイッチ及びルータ)及びミドルボックスサービスリソース(例えば、サービスVM及びモジュール)をデータセンタにデプロイする。いくつかの実施形態では、コンピュート及びネットワークマネージャ910及び915は、1以上のコントローラ940を使用して、1以上の構成データストレージ935に格納されている構成データを、ホストコンピュータ、転送要素(例えば、ホストコンピュータ上で実行中のソフトウェアスイッチ及びルータ、またはスタンドアロンのスイッチ及びルータ)、サービスマシン(例えば、サービスVM、サービスコンテナ、他のサービスもジュール、及びスタンドアロンサービスアプライアンス)、及びSDDC内の他のリソースに配布する。
【0059】
APIゲートウェイ920は、URLパターンに基づいて、すべてのAPIコマンドをAPIサービスモジュール925、または場合によってはUIマネージャ922にリダイレクトする。UIマネージャ922は、グラフィカルユーザインタフェースを介して受信されるAPIコマンドを処理し、これらのコマンドをAPIプロセッサ925に指示する。APIプロセッサ925は、受信されたアプリケーションマニフェストの一部である異なる要求が構成データストレージ935に永続化され、正しい順序でデプロイされることを確実にするために、
図2及び3に示されるプロセスを実行する。APIプロセッサ925は、データストレージ932に格納するユーザの所望の状態を所有する。いくつかの実施形態では、APIプロセッサ925は、VMまたはコンテナとして実行される。
【0060】
図示されるように、いくつかの実施形態では、APIプロセッサ925は、SDDCリソースのマルチセグメントアプリケーション構成を指定するいくつかのマニフェストテンプレート929にアクセスできる、テンプレートマネージャ927を使用する。テンプレートマネージャ927を介して、ユーザは、完成したマニフェストを生成するために、(例えば、APIコマンドを介して)テンプレートを選択し、修正することができる。そしてこの完成したマニフェストに基づいて、APIプロセッサ925は、以前にデプロイされた一連のSDDCリソースをデプロイまたは更新して、以前にデプロイされたマルチセグメントアプリケーションをデプロイまたは調整できる。
【0061】
受信したマニフェスト内の要求、または要求された入力を有するマニフェストテンプレートの読み出しによって完成したマニフェストに基づいて、リソースをデプロイするか、以前にデプロイされたリソースを更新するために、いくつかの実施形態では、APIプロセッサ925は、マニフェストを1つ以上の要求にパースし、ポリシーチェックエンジン923を使用して各要求を検証する(即ち、各要求がポリシーストレージ924に格納されており、要求で参照されたリソースに適用可能なポリシーで指定された制約を満たすかどうかを指定する)。
【0062】
いくつかの実施形態では、ポリシーストレージ924の各ポリシーは、(1)ポリシーが適用される1以上のデータセンタリソースのセットを指定するターゲットと、(2)指定されたリソースセットに対する操作の制約を指定する式とを含む。いくつかの実施形態では、ポリシーは宣言フォーマットで表現される。故に、マニフェスト内の要求ごとに、ポリシーエンジンは、選択された要求のリソースの属性のセットをポリシーのターゲットと比較して、ポリシーがリソースに適用可能か否かを判断する。1つの適用可能なポリシーを特定した後、ポリシーチェックエンジンは、特定されたポリシーの式が、選択されたリクエストを拒否するか許可するかを要求する制約を指定しているか否かを判断する。
【0063】
デプロイメントプラグイン930を介して、APIプロセッサ925は、構成データベース935のAPIコール内のSDリソースデータを永続化する。いくつかの実施形態では、デプロイメントプラグイン930は、VMまたはコンテナとして実行される。各プラグイン930は、1以上のSDリソースタイプをデプロイする実行能力を有する。そのようなタイプの例には、データコンピュートノード(例えば、VMまたはコンテナのようなコンピュートマシン)、分散ファイアウォールルール、エッジファイアウォールルール、L2及びL3転送要素(ソフトウェアスイッチ予備ルータ)、セキュリティグループ、VPNサービス、DHCPサービス、DNSサービス、ロードバランシングサービス等が含まれる。
【0064】
これらのサービスをデプロイするために、プラグイン930は、コンピュートマネージャ910及びネットワークマネージャ915と相互作用し、これらは、順番に、1以上のコントローラ940と相互作用する。これらのマネージャ及びコントローラを介して、プラグイン930は、これらのコンピュータ及びデバイスに所望のSDリソースをデプロイするように指示するために、永続的データベース935からの構成データをSDDC内のホストコンピュータ及びスタンドアロンネットワーク/サービスデバイスに分配する。
【0065】
いくつかの実施形態では、SDDCインスタンスごとに1つの所望の状態およびオーケストレーションサービス(即ち、API処理モジュール)が存在する。これは、いくつかの実施形態ではコンテナまたはVMの形態でデプロイされる、利用可能性の高いサービスである。このサービスは、ユーザのインテントを受け入れ、異なるサービス間でオーケストレーションを実行する。またこのサービスは、ポリシーをプッシュダウンする必要がある実施ポイント(コンピュート及びネットワークマネージャ)の詳細を所有している。
【0066】
デプロイメントプラグイン930は、インテントの実現を提供する。上述したように、いくつかの実施形態では、これらのプラグインのそれぞれは、別個のコンテナまたはVMで実行される別個のサービスとしてデプロイされる。いくつかの実施形態では、いくつかのサービスは、単一のコンテナ内に一緒にパッケージ化されるが、設計及び通信の観点では別個のサービスとして実行される。オーケストレーションは所望の状態サービスによって実行されるため、いくつかの実施形態における各プラグインサービスは、起動されるであろうREST APIエンドポイントのセットを公開する。また、いくつかの実施形態では、所望の状態サービスは、異なるサービスにわたって実現されたリソースの状態を返す共通サービスとして働く。これは、いくつかの実施形態では、実現された状態データがプラグインサービスによってデータストア内で更新される場合であっても同様である。
【0067】
従って、マニフェストの実行は、一挙に所望の状態を生成することになる。システムがインテント全体を検証して永続化できる場合、マニフェストのソースに通知が送信される(例えば、http status code 200 OKが返される)。インテントが作成されると、通知が生成される。これらの通知は、デプロイプラグインによって非同期に消費される。次に、デプロイメントプラグインは、当該インテントを実現することを処理する。ステータスAPIを使用して、システムから実現状況を問い合わせることができる。
【0068】
いくつかの実施形態では、API処理システム900は、階層的にインテントをクエリする能力をユーザに提供する。例えば、いくつかの実施形態では、システムは、一挙にインテント全体を読み取ることを促進するGET APIを提供する。専用のフラグはURLパラメータに渡され、階層的にGETを要求する。パラメータが渡されない場合、一部の実施形態におけるGETは、通常のGETとして機能し、単一のリソースが返される。いくつかの実施形態では、階層型GETは、ツリー全体またはツリーの部分に対して機能することができ、即ち、階層型GETは、ツリー内の任意のレベルから機能することができるため、階層が取得されるノードを指定することができる。
【0069】
階層型GETの別の態様は、いくつかの実施形態におけるフィルタリングである。これらの実施形態において、管理者は、インテントツリーをフィルタして、自分の関心があるタイプのみを閲覧することができる。当該フィルタリングは、単純なタイプベースのフィルタリングであってよく、例えば、管理者は、「Domain」タイプのインテント階層をGETと言うことができる。高度なフィルタリングメカニズムでは、ユーザは、機能に基づいて意図を取得することを選択することができ、例えば、管理者は、ファイアウォール機能に関連するインテント階層において、すべてのリソースをGETと言うことができる。
【0070】
いくつかの実施形態において、ユーザは階層型GETを実行し、それを階層型POSTでクラブすることができる。いくつかの実施形態では、管理者は、インテント階層を取得し、それを修正してPOSTすることができる。これにより、「インポート/エクスポート」のユースケースが有効になる。いくつかの実施形態では、管理者は、マニフェストを取得し、それを格納することもできる。その後、管理者は、以前に取得したインテントを復元できる。
【0071】
図10は、いくつかの実施形態がどのように、コンテキストベースのファイアウォールルールをホストコンピュータで実施するかを示している。いくつかの実施形態では、SDDCは、ホストコンピュータ上でそのようなコンテキストベースのルールを定義して実施することによって、その所望のセグメンテーション通信プロファイルを達成する。上述したように、マニフェスト処理フレームワークは、マニフェスト内で定義された通信プロファイルールを変換し、それをネットワーク管理層(即ち、ネットワークマネージャクラスタ)がアプリケーションに必要なマイクロ・セグメンテーションを達成するために処理できるルールにコンバートする。
【0072】
図10は、グループ化プロバイダを使用して、マニフェストで定義されたこれらのアプリケーションセグメントを、プロセス名/ハッシュに基づいてセキュリティグループにマッピングする一連のルールを受信するネットワーク管理クラスタを示している。ネットワーク管理クラスタは、マニフェストで定義された通信プロファイルに基づいて、これらのプロセスベースのグループに一致する、変換されたファイアウォールルールも受信する。処理ベースのグループ及びファイアウォールルールが作成されると、マネージャクラスタ1005のファイアウォールマネージャ1010は、ルールをSDDC内のホストコンピュータ及び他の実施ノードに分配する。
【0073】
ファイル、モジュール、及び他のプロセスデータをネットワークイベントにマップするため、いくつかの実施形態は、マシン1015(例えば、ホストVM及びコンテナ)上で実行されるゲストイントロスペクション(GI)エージェント1020を通じて捕捉されたコンテキストデータを用いる。いくつかの実施形態では、GIエージェント1020は、任意のゲストネットワーク接続及びファイルアクセス、並びにその関連プロセスコンテキストを捕捉する。いくつかの実施形態では、すべてのネットワーク接続及びファイルアクセスは、このエージェントによって傍受され、ホスト上で実行されるコンテキストサービスエンジン1030に送られる。Vmware社によって提供されるESXハイパーバイザでは、コンテキストデータは、Mux 1025と呼ばれるハイパーバイザコンポーネントを介して、GIエージェントからホストコンピュータ上で実行されるコンテキストエンジンにネットワークイベント及びファイルイベントを送信するための導管として機能するコンテキストエンジン1030に送られる。この情報を使用して、コンテキストエンジンは、ゲストVMによって開始される、ユーザ、ソースIPアドレス、ソースポート、プロトコル、及びプロセス情報についての情報を含むコンテキストテーブル1035を更新する。
【0074】
その後、データコンピュートマシン1015がネットワークコネクションを行うと、ホストコンピュータ上で実行するファイアウォールモジュール1040は、発信パケットを検査し、コンテキストテーブルからのパケットフローにコンテキスト情報を関連付け、ファイアウォールテーブル内のルールと一致させることによって、プロセスレベルで有効なファイアウォールルールを実施する。VM上で実行されているプロセスのこのレベルのきめ細かな制御は、管理者が環境にインストールされている未承認のソフトウェア/アプリケーションを検出し、さらにシステム内で実行されている悪意のあるプロセスをブロックすることに役立つ。有効なルールの実現は、ネットワーク管理クラスタに返送され、管理者にデプロイされたアプリケーションのステータスと有効なルールを提供する。コンテキストベースのファイアウォール及び他のミドルボックスサービスエンジンは、2018-0181423として公開された米国特許出願第15/650,251号にさらに記載されており、参照により本明細書に組み込まれる。
【0075】
いくつかの実施形態では、マニフェスト処理フレームワークは、インテントベースの学習エンジンを有する。ゲストマシン(例えば、ゲストVMまたはコンテナ)にインストールされたGIエージェントを使用して、マニフェスト処理フレームワークは、検出されたネットワークアクティビティに関与するプロセスだけでなく、インストールされたバイナリ、及びこれらのアクティビティに関連するファイル属性も識別することができる。最も一般的な属性には、ファイルハッシュ、パブリッシャ情報、インストールパス、証明書等が含まれる。いくつかの実施形態では、これらの識別されたプロセス及び他の属性は、新しいマルチセグメントアプリケーションテンプレートを生成するために、デプロイメント環境から(例えば、ホストコンピュータから)収集され、学習エンジンによって解析される。収集されて解析されたデータは、一部の管理者が一般的にどのようにマルチセグメントアプリケーション(例えば、新しいマルチセグメントアプリケーション)をデプロイするかを示す。いくつかの実施形態では、学習エンジンは、収集されたデータから共通のデプロイメント属性を判別し、その解析に基づいて、新しいマルチセグメントマニフェストテンプレートを推奨する。
【0076】
上述したように、GIエージェントによって捕捉されたネットワークイベント及びファイルイベントは、コンテキストテーブルに格納される。ここから、
図11に示されるように、マニフェスト処理フレームワークは、これらの捕捉されたイベントに関するデータを収集することができる。いくつかの実施形態では、このデータは、収集時間とアプリケーションワークロードに応じて非常に大きくなり得るため、別個のサーバクラスタまたはアプライアンスのセットで収集される。この情報は、ホスト内の各VMで見られるすべてのプロセスについて、ホストレベルで格納される。
【0077】
いくつかの実施形態では、収集されたネットワーク及びファイルイベントデータは、その後、VM内のプロセスレベルで適切なセグメンテーションを得るためにカスタマイズされたアプリケーションテンプレートを生成するために、集約されてモデル化される。ネットワークイベントごとに、GI エージェントは、対応するプロセス、ソケット、接続レート、接続のタイプを取得できる。いくつかの実施形態におけるフレームワークは、そのインスタンスでプロセスによって使用されるライブラリと、プロセスによってアクセスされるファイルとを照会するために確立された通信チャネルを有する。
【0078】
このデータは、ラウンドトリップ時間、一日の時間、及び他のプロセスとの相関関係に加えて、いくつかの実施形態では、教師なしまたは半教師付き機械学習モデルを訓練するために使用される。いくつかの実施形態は、プロセス情報を識別するために1クラスサポートベクタマシン(SVM)分類機を使用する。SVMモジュールは、「正常」なデータが多く、異常を検出する必要があるケースが少ないシナリオで有用である。
【0079】
1クラスSVMは、新規性検出のための決定関数を学習する教師なしアルゴリズムであり、新しいデータをトレーニングセットと類似または異なるものとして分類する。SVMは、分類タスクに使用することができる教師付き学習モデルである。典型的には、SVMには、n-d空間にマッピングすることができるラベル付けされたデータが与えられる。異なるカテゴリは、明確なギャップによって分割され、SVMは可能な限り広いカテゴリを見つける。新しいデータサンプルは、ギャップのどの側に入るかに基づいて、1つのカテゴリに属するように分類される。一部の実施形態は、見られた新しいデータに基づいて情報を分類または処理し、管理者がネットワークを保護するために必要とする適切なアプリケーションテンプレートのセットを推奨する。このモデルを使用して、いくつかの実施形態は、実行中のアプリケーション及びそれらに対応するプロセスを予測することができる。このようにすることで、モデルは新しいアプリケーションの識別に役立ち、アプリケーションを保護するために適切なアプリケーションテンプレートを推奨する。
【0080】
上述の実施形態は、いくつかの利点を提供する。それらは、階層型APIデータモデルを介してマルチセグメントアプリケーションをデプロイする、インテントベースのAPI処理システムを提供しており、ユーザはこれらのリソースの永続化や実現の仕組みを気にすることなく、それらのインテント(例えば、複数のアプリケーションセグメントやそれらの間の通信プロファイル)を指定することができる。いくつかの実施形態では、インテントベースのAPIシステムは、単純化された階層型データモデルを参照する単純な宣言型言語を使用することにより、階層型APIコマンドを定義することをユーザに可能ならしめる。各階層型APIコマンドは、以前のAPIコマンドで特定のSDリソースを他のリソースよりも先に作成する必要はなく、SDDC内の複数のリソースレベルで複数のSDリソースを定義できる。実際、いくつかの実施形態では、1つの階層型コマンドは、SDDCの(例えば、マルチテナントSDDCの)1つのユーザ(例えば、1つのテナント)のすべてのSDリソースの定義に使用することができる。
【0081】
いくつかの実施形態のマニフェスト処理フレームワークは、データモデルの階層を活用して、単一のAPI呼び出しで階層の一部または全体を受け入れ、検証し、実現するためのプロセスを提供する。このシステムは、データモデルの固有の知識を利用して、依存性を識別し、インテントの永続化と実現の両方のために、基盤となるサービスを正しい順序で呼び出す。また、すべての永続化は、単一のトランザクションで行われるため、インテント全体がアトミックユニットとして受け入れられるようになる。
【0082】
受信したマニフェストで定義されたマルチセグメントアプリケーションがデプロイ可能であると、マニフェスト処理フレームワークが決定すると、いくつかの実施形態では、APIシステムは非同期プロセスを使用して、管理者からのさらなる入力なしに、適切な順序でリソースを自動的にデプロイする。このプロセスは、1以上のネットワーク、サービス、またはコンピュートマネージャと連携して、デプロイされたリソースに適した作業指示に基づいて、1以上のネットワーク、サービス、またはコンピュートリソースをデプロイまたは更新する。
【0083】
上記の機能及びアプリケーションの多くは、コンピュータ読み取り可能な記録媒体(コンピュータ可読媒体とも呼ばれる)に記録された一連の命令として指定されるソフトウェアプロセスとして実装される。これらの命令が1以上の処理ユニット(例えば、1以上のプロセッサ、プロセッサコア、または他の処理ユニット)によって実行される場合、それらは、命令に示された動作を該処理ユニットに実行させる。コンピュータ可読媒体の例としては、CD-ROM、フラッシュドライブ、RAMチップ、ハードドライブ、EPROM等を含むが、これらに限定されない。コンピュータ可読媒体は、無線または有線接続を介して通過する搬送波および電気信号を含まない。
【0084】
本明細書では、「ソフトウェア」という文言は、読み取り専用メモリに常駐するファームウェア、またはプロセッサによって処理するためにメモリに読み取ることができる磁気記憶装置に格納されたアプリケーションを含むことを意味する。またいくつかの実施形態では、複数のソフトウェア発明は、別個のソフトウェア発明を残しながら、より大きなプログラムのサブパーツとして実装され得る。いくつかの実施形態では、複数のソフトウェア発明は、別個のプログラムとしても実装され得る。最後に、ここに記載されるソフトウェア発明を一緒に実装する別個のプログラムの任意の組合せは、本発明の範囲内にある。いくつかの実施形態では、ソフトウェアプログラムは、1以上の電子システム上で動作するようにインストールされた場合、当該ソフトウェアプログラムの動作を実行し実行する1以上の特定のマシン実装を定義する。
【0085】
図12は、本発明のいくつかの実施形態が実装されるコンピュータシステム1200を概念的に示している。コンピュータシステム1200は、上述のホスト、コントローラ、及びマネージャのいずれかを実装するために使用することができる。このように、それは、上述のプロセスのいずれかを実行するために使用することができる。このコンピュータシステムは、様々なタイプの非一時的な機械可読媒体と、様々な他のタイプの機械可読媒体のためのインタフェースと、を含む。コンピュータシステム1200は、バス1205、処理部1210、システムメモリ1225、読み取り専用メモリ1230、恒久記憶装置1235、入力デバイス1240、及び出力デバイス1245を含む。
【0086】
バス1205は、コンピュータシステム1200の多数の内部デバイスを通信可能に接続する、すべてのシステムバス、周辺バス、及びチップセットバスを集合的に表す。例えば、バス1205は、処理部1210を読み取り専用メモリ1230、システムメモリ1225、及び恒久記憶装置1235と通信可能に接続する。
【0087】
これらの様々なメモリユニットから、本発明のプロセスを実行するために、処理部1210は実行すべき命令および処理すべきデータを取得する。処理部は、様々な実施形態において、単一プロセッサまたはマルチコアプロセッサであってもよい。読み取り専用メモリ(ROM)1230は、処理部1210及びコンピュータシステムの他のモジュールによって必要とされる、静的データ及び命令を格納する。一方、恒久記憶装置1235は、読み書き可能な記憶デバイスである。当該デバイスは、コンピュータシステム1200がオフのときでも、命令及びデータを格納する不揮発性メモリユニットである。本発明のいくつかの実施形態は、恒久記憶装置1235として大容量記憶装置(磁気または光ディスク、及びそれら対応するディスクドライブ等)を使用する。
【0088】
他の実施形態は、恒久記憶装置として、取り外し可能な記憶装置(フロッピーディスク、フラッシュドライブ等)を使用する。恒久記憶装置1235と同様に、システムメモリ1225は、読み書き可能な記憶デバイスである。しかしながら、記憶装置1235とは異なり、システムメモリは、ランダムアクセスメモリのような揮発性の読み取り/書き込みメモリである。システムメモリは、実行時にプロセッサが必要とする、命令及びデータの一部を格納する。いくつかの実施形態では、本発明のプロセスは、システムメモリ1225、恒久記憶装置1235、及び/または読み取り専用メモリ1230に格納される。これらの様々なメモリユニットから、いくつかの実施形態のプロセスを実行するために、処理部1210は実行すべき命令及び処理すべきデータを取得する。
【0089】
また、バス1205は、入力デバイス1240及び出力デバイス1245に接続する。入力デバイスは、ユーザがコンピュータシステムに情報を伝達したり、コマンドを選択したりすることを可能にする。入力デバイス1240は、英数字キーボード及びポインティングデバイス(「カーソル制御デバイス」とも呼ばれる)を含む。出力デバイス1245は、コンピュータシステムによって生成された画像を表示する。出力デバイスは、プリンタと、陰極線管(CRT)ディスプレイまたは液晶ディスプレイ(LCD)等の表示装置とを含む。一部の実施形態は、入力デバイス及び出力デバイスの両方として機能するタッチスクリーン等の装置を含む。
【0090】
最後に、
図12に示されるように、バス1205はまた、ネットワークアダプタ(不図示)を介してコンピュータシステム1200をネットワーク1265に結合する。このようにすることで、コンピュータは、コンピュータのネットワーク(ローカルエリアネットワーク(「LAN」)、ワイドエリアネットワーク(「WAN」)、またはイントラネット等)、またはネットワークのネットワーク(インターネット等)の一部であってもよい。コンピュータシステム1200の任意のまたはすべての構成要素は、本発明と併せて使用されてよい。
【0091】
いくつかの実施形態は、(コンピュータ読み取り可能な記録媒体、機械可読媒体、または機械読み取り可能な記録媒体と代替的に呼ばれる)機械読み取りまたはコンピュータ読み取りが可能な媒体に、コンピュータプログラム命令を格納する、マイクロプロセッサ、ストレージ及びメモリ等の電子部品を含む。このようなコンピュータ可読媒体のいくつかの例としては、RAM、ROM、読み取り専用コンパクトディスク(CD-ROM)、記録可能コンパクトディスク(CD-R)、書き換え可能コンパクトディスク(CD-RW)、読取り専用デジタル汎用ディスク(例えば、DVD-ROM、二層DVD-ROM)、様々な記録可能/書き換え可能DVD(例えば、DVD-RAM、DVD-RW、DVD+RW等)、フラッシュメモリ(例えば、SDカード、miniSDカード、microSDカード等)、磁気及び/またはソリッドステートハードドライブ、読み取り専用及び記録可能なブルーレイ(登録商標)ディスク、超密度光ディスク、任意の他の光または磁気媒体、及びフロッピーディスクが含まれる。コンピュータ可読媒体は、少なくとも1つの処理ユニットによって実行可能であり、様々な動作を実行するための命令のセットを含むコンピュータプログラムを記憶してもよい。コンピュータプログラムまたはコンピュータコードの例には、コンパイラによって生成されるようなマシンコード、及びインタープリタを使用してコンピュータ、電子コンポーネント、またはマイクロプロセッサによって実行される高レベルコードを含むファイルが含まれる。
【0092】
上記の議論は主に、ソフトウェアを実行するマイクロプロセッサまたはマルチコアプロセッサに言及しているが、いくつかの実施形態は、特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)等の1以上の集積回路によって実行される。いくつかの実施形態では、このような集積回路が、回路自体に格納された命令を実行する。
【0093】
本明細書で用いられる「コンピュータ」、「サーバ」、「プロセッサ」、及び「メモリ」との文言はすべて、電子デバイスまたは他の技術的デバイスを指す。これらの文言は、人間または人間のグループを除外する。本明細書の目的のために、「ディスプレイ」または「表示」との文言は、電子デバイス上に表示することを意味する。本明細書で使用されるように、「コンピュータ可読媒体」、「コンピュータ可読媒体」、及び「機械可読媒体」との文言は、コンピュータによって読み取り可能な形式で情報を格納する、有形の物理的オブジェクトに完全に限定される。これらの文言は、任意の無線信号、有線ダウンロード信号、及び任意の他の刹那的または一時的な信号を除外する。
【0094】
本発明を多数の特定の詳細を参照して説明してきたが、本発明の精神から逸脱することなく、他の特定の形態で本発明を実施であることは、当業者に理解されよう。従って、当業者は、本発明が前述の例示的な詳細によって限定されるべきではなく、添付の特許請求の範囲によって定義されるべきであることを理解するであろう。