(57)【要約】  ネットワークセキュリティに関連する、システム、方法および非一時的コンピュータ可読媒体が開示される。特に、記載された実施形態は概して、フォールトトレラントマイクロサービス環境におけるステートレス処理のシステムおよび方法に関する。一例において、第１のマイクロサービスによって、パケットデータおよびそれに関連づけられたコンテキストを送信することと、第２のマイクロサービスによって、パケットデータおよびコンテキストを受信することであって、第２のマイクロサービスは、コンテキストを用いて、どのセキュリティ処理を実行すべきか判断し、パケットデータに対して、セキュリティ処理を実行し、得られたデータおよびコンテキストを第３のマイクロサービスに送信する、受信することと、第３のマイクロサービスによって、得られたデータおよびコンテキストを受信することであって、第３のマイクロサービスは、コンテキストを用いて、どのセキュリティ処理が実行されるべきか判断し、得られたデータに対してセキュリティ処理を実行する、受信することとを含む、方法が開示される。
2019523507.tif 000002
【特許請求の範囲】
【請求項１】
第１のマイクロサービスによって、パケットデータおよびコンテキストを送信する段階であって、前記コンテキストは前記パケットデータと関連づけられる、段階と、
第２のマイクロサービスによって、前記パケットデータおよび前記コンテキストを受信する段階であって、前記第２のマイクロサービスは、前記コンテキストを用いて、どのセキュリティ処理を実行すべきか判断し、前記パケットデータに対して、前記セキュリティ処理を実行し、得られたデータおよび前記コンテキストを第３のマイクロサービスに送信する、段階と、
前記第３のマイクロサービスによって、前記得られたデータおよび前記コンテキストを受信する段階であって、前記第３のマイクロサービスは、前記コンテキストを用いて、どのセキュリティ処理が実行されるべきか判断し、前記得られたデータに対して、前記セキュリティ処理を実行する、段階と、
を備える、方法。
【請求項２】
前記第２のマイクロサービスおよび前記第３のマイクロサービスは、前記コンテキストを用いて前記セキュリティ処理を実行する、請求項１に記載の方法。
【請求項３】
前記第２のマイクロサービスは、前記パケットデータからデータを抽出し、前記パケットデータから抽出された前記データに対して、前記セキュリティ処理を実行し、前記第３のマイクロサービスが、前記得られたデータからデータを抽出し、前記得られたデータから抽出された前記データに対して、セキュリティ処理を実行する、請求項１または２に記載の方法。
【請求項４】
前記第２のマイクロサービスおよび前記第３のマイクロサービスは、受信された前記データから、より高いレベルのデータを抽出する、請求項３に記載の方法。
【請求項５】
前記第２のマイクロサービスは、サービス状態およびコンテキスト状態を用いて、セキュリティ処理を実行する、請求項１から４のいずれか一項に記載の方法。
【請求項６】
前記第２のマイクロサービスは、ステートサービスから前記サービス状態および前記コンテキスト状態を取得する、請求項５に記載の方法。
【請求項７】
前記第２のマイクロサービスは、前記コンテキストを用いて前記セキュリティ処理を実行し、ステートサービスからの前記サービス状態および前記コンテキスト状態の取得を回避する、請求項５に記載の方法。
【請求項８】
メモリと、
前記メモリを用い、命令を実行して第１のセキュリティマイクロサービスを実装するプロセッサであって、前記第１のセキュリティマイクロサービスは、
第１のマイクロサービスによって、パケットデータおよび前記パケットデータに関連づけられたコンテキストを送信することと、
第２のマイクロサービスによって、前記パケットデータおよび前記コンテキストを受信することであって、前記第２のマイクロサービスが、前記コンテキストを用いて、前記第２のマイクロサービスのどのセキュリティ処理が要求されているか判断し、前記パケットデータに対して、要求された前記セキュリティ処理を実行し、得られたデータおよび前記コンテキストを第３のマイクロサービスに送信する、受信することと、
前記第３のマイクロサービスによって、前記得られたデータおよび前記コンテキストを受信することであって、前記第３のマイクロサービスは、前記コンテキストを用いて、前記第３のマイクロサービスのどのセキュリティ処理が要求されているか判断し、前記得られたデータに対して、要求された前記セキュリティ処理を実行する、受信することと
を含む処理を実行する、プロセッサと
を備える、システム。
【請求項９】
前記第２のマイクロサービスは、前記パケットデータからデータを抽出し、前記パケットデータから抽出された前記データに対して、要求された前記セキュリティ処理を実行し、前記第３のマイクロサービスは、前記得られたデータから前記データを抽出し、前記得られたデータから抽出された前記データに対して、要求された前記セキュリティ処理を実行する、請求項８に記載のシステム。
【請求項１０】
前記第２のマイクロサービスおよび前記第３のマイクロサービスは、受信された前記データから、より高いレベルのデータを抽出する、請求項９に記載のシステム。
【請求項１１】
前記第２のマイクロサービスは、サービス状態およびコンテキスト状態を用いて、セキュリティ処理を実行する、請求項８または９に記載のシステム。
【請求項１２】
前記第２のマイクロサービスは、ステートサービスから前記サービス状態および前記コンテキスト状態を取得する、請求項１１に記載のシステム。
【請求項１３】
前記第２のマイクロサービスは、前記コンテキストを用いて前記セキュリティ処理を実行し、ステートサービスからのサービス状態およびコンテキスト状態の取得を回避する、請求項８に記載のシステム。
【請求項１４】
前記第２のマイクロサービスは、前記コンテキストを用いて前記セキュリティ処理を実行し、ステートサービスからの前記サービス状態および前記コンテキスト状態の取得を回避する、請求項１１に記載のシステム。
【請求項１５】
プロセッサによって実行されるとき、前記プロセッサに、
第１のマイクロサービスによって、パケットデータおよび前記パケットデータに関連づけられたコンテキストを送信することと、
第２のマイクロサービスによって、前記パケットデータおよび前記コンテキストを受信することであって、前記第２のマイクロサービスが、前記コンテキストを用いて、前記第２のマイクロサービスのどのセキュリティ処理が要求されているか判断し、前記パケットデータに対して、要求された前記セキュリティ処理を実行し、得られたデータおよび前記コンテキストを第３のマイクロサービスに送信する、受信することと、
前記第３のマイクロサービスによって、前記得られたデータおよび前記コンテキストを受信することであって、前記第３のマイクロサービスが、前記コンテキストを用いて、前記第３のマイクロサービスのどのセキュリティ処理が要求されているか判断し、前記得られたデータに対して、要求された前記セキュリティ処理を実行する、受信することと
を備える方法を実行させる、コンピュータ実行可能命令を含む、プログラム。
【請求項１６】
前記第２のマイクロサービスは、前記パケットデータからデータを抽出し、前記パケットデータから抽出された前記データに対して、前記セキュリティ処理を実行し、前記第３のマイクロサービスが、前記得られたデータからデータを抽出し、前記得られたデータから抽出された前記データに対して、前記セキュリティ処理を実行する、請求項１５に記載のプログラム。
【請求項１７】
前記第２のマイクロサービスおよび前記第３のマイクロサービスは、受信された前記データから、より高いレベルのデータを抽出する、請求項１６に記載のプログラム。
【請求項１８】
前記第２のマイクロサービスは、サービス状態およびコンテキスト状態を用いて、セキュリティ処理を実行する、請求項１５から１７のいずれか一項に記載のプログラム。
【請求項１９】
前記第２のマイクロサービスは、ステートサービスからサービス状態およびコンテキスト状態を取得する、請求項１５から１８のいずれか一項に記載のプログラム。
【請求項２０】
前記第２のマイクロサービスは、前記コンテキストを用いて、前記セキュリティ処理を実行してステートサービスからのサービス状態およびコンテキスト状態の取得を回避する、請求項１５から１８のいずれか一項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に記載された実施形態は、概してネットワークセキュリティに関する。特に、記載された実施形態は、概してフォールトトレラントマイクロサービス環境におけるステートレス処理のシステムおよび方法に関する。
【０００２】
［背景情報］
クラウドコンピューティングサービスの拡大は、様々なクライアントアプリケーションを動作させる計算容量を提供するサーバの集合体をもたらした。あるクライアント／サーバ間の接続には、プライベートネットワークを用いる。他のクライアント／サーバ間の接続には、プライベートネットワークによって直接接続されているかのようにパブリックネットワークにおいてデータをやり取りする、仮想プライベートネットワークを用いる。クラウドコンピューティングサービスの拡大とともに、サーバをホスティングするデータセンタに拡大が生じた。いくつかのホスティングされるサーバはマルチテナントのデータセンタに収容され、他の、場合によっては関連のないサーバと、リソースを共有する。
【０００３】
データセキュリティおよびネットワークトラフィックのモニタリングは、そのようなデータセンタにおいて有用である。サーバとクライアントアプリケーションとの間のデータ移動には、セキュリティのために、モニタリングされて処理されることが必要である。高帯域幅のデータセンタにおけるセキュリティのモニタリングには、連動で作動する多くのセキュリティサーバをしばしば用いる。取り組むべき１つの問題は、多くの中の１つのサーバの不具合をどのように回復させるかである。
【図面の簡単な説明】
【０００４】
本明細書で開示される実施形態の様々な利益は、以下の明細書および添付の特許請求の範囲を読むことによって、および図面を参照することによって、当業者には明らかとなるであろう。
【０００５】
【図１】メモリからネットワークセキュリティシステムのマイクロサービスをロードし、プロセッサによってそれを実行する、コンピュータハードウェアを示すブロック図である。
【０００６】
【図２】セキュリティマイクロサービスを使用して３倍のスケールアウトを実装する、スケーラブルなセキュリティアーキテクチャの実施形態を示す図である。
【０００７】
【図３】一実施形態に従う、マイクロサービスの無作為なスケールアウトを示す図である。
【０００８】
【図４】一実施形態に従う、ルーティングネットワークを介したアプリケーションと１または複数のサーバの間のトラフィックをモニタリングするセキュリティサービスを示すブロック図である。
【０００９】
【図５】一実施形態に従う、セキュリティマイクロサービスの階層を通った後に横断してサーバへ向かう、アプリケーションデータを示すブロックフロー図である。
【００１０】
【図６】ステートレス処理フォールトトレラントマイクロサービス環境におけるアプリケーションデータのフローの実施形態を示すブロックフロー図である。
【００１１】
【図７】チャネル状態ルックアップシステムの実施形態を示す別のブロックフロー図である。
【００１２】
【図８】一実施形態に従う、フローを処理するマイクロサービスを明示するフローチャートである。
【００１３】
【図９】セキュリティサービスアーキテクチャにおける処理の全体にわたってコンテキストに関連づけられたコンテキストおよびデータの作成の、実施形態を明示する図である。
【発明を実施するための形態】
【００１４】
以下の説明において、多数の具体的な詳細事項が説明される。しかしながら、本開示の複数の実施形態は、これらの具体的な詳細事項なく実施されてもよいことが理解される。他の例において、よく知られている回路、構造、および複数の技術は、この説明の理解を不明瞭にしないように、詳細には示されない。
【００１５】
明細書における、"一実施形態"、"実施形態"、"例としての実施形態"などへの参照は、記載されたその実施形態が特定の特徴、構造、または特性を含み得る旨を示すが、すべての実施形態が、その特定の特徴、構造、または特性を必ずしも必要とするものではない。さらに、そのような語句は必ずしも同じ実施形態を参照しているものではない。さらに、特定の特徴、構造、または特性が、実施形態と関連して記載されるとき、それは、他の実施形態と関連して明示的に記載されてもされなくても、当業者の知識の範囲内で、そのような特徴、構造、または特性に影響を与えるものであると思われる。
【００１６】
分散型のネットワーク処理システムをデプロイするとき、個々のコンポーネントは負荷が分散され、状態を管理する問題が、アーキテクチャのスケールまたは性能をしばしば限定する。状態がローカルに維持される場合、それぞれのコンポーネント内で、処理は概して、負荷またはキューの状況にかかわらず、その後の同じフローの処理、または同じコンポーネントに送られるための接続を必要とする。さらに、ステートフルなコンポーネントを実行するサーバ、ノードまたは仮想マシンの不具合が、状態を分からなくさせるかもしれず、アプリケーションをタイムアウトさせてサーバに再接続する必要をもたらすかもしれない。
【００１７】
コンポーネントの対（アクティブ−アクティブネットワーク器具など）の間に状態を分散させることは、各状態の更新の同期を必要とし、性能を限定することになる。そのような解決方法は、アプリケーションに、フェイルオーバの間の接続を維持することを可能にする（状態が常にアクティブなパートナーへ複製されるので）が、処理能力が、状態同期インフラストラクチャの性能を超えたスケールとなることを可能にはしない。例として、２つのアクティブ−アクティブサーバが状態データの高速転送を可能にする高速インタフェースによって接続される場合、このリンクを利用するアプリケーションは、サーバ自身の制約を超えるスケールとなることができない。
【００１８】
本明細書で開示される実施形態は、マイクロサービスの階層が、セキュリティサービス内でのネットワークトラフィックのステートフルな処理を実行することを可能とする。状態は、マイクロサービスの外部の、冗長メッセージングサービスを介してアクセスされる冗長ステートサービス内で維持される。冗長ステートサービスは、ディープパケットインスペクション（ＤＰＩ）状態、暗号化状態などの、ネットワークトラフィックの処理と関連づけられたコンテキストに関する状態、ならびに、セキュリティサービスの処理に関する状態を提供する。
【００１９】
詳述されるように、コンテキストは、行われるべきサービスおよび処理のレベルに関して、複数のレベルのマイクロサービス階層を指示する命令としての役割を果たす。コンテキストは、マイクロサービス間でパケットおよびコンテンツデータと共に送信され、階層内で後続のマイクロサービスが状態ルックアップおよび修正を割愛することを可能にし、フェイルオーバ動作がロードバランシングの一部としてトランスペアレントに発生することを可能にする。
【００２０】
図１は、マイクロサービスを使用するスケーラブルなマイクロサービスアーキテクチャのコンポーネントの実施形態を示すブロック図である。ネットワークセキュリティシステムのマイクロサービスは、メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）などの揮発性メモリ、および／またはディスクなどの不揮発性メモリ）に格納され、１または複数のハードウェアプロセッサまたはプロセッサコアによって実行される。特定のセキュリティサービスを実行するコンピュータ実行可能命令からなる、ネットワークセキュリティシステムのマイクロサービスは、利用可能な物理サーバにわたるコンフィギュレーションに基づいてデプロイされる。通常、それぞれのマイクロサービスは仮想シャーシ１０６のバックプレーンを介してコンフィギュレーションおよびタスクを受信し、バックプレーンにステータス、統計値および他の情報を返す。マイクロサービスの一般的な特性は、他のマイクロサービスからのメモリの分離および保護である。この方式では、個々のマイクロサービスは他のマイクロサービスに影響を与えることなく、別の物理サーバへと移動されるか、異常に終了することがある。
【００２１】
セキュリティシステムによって処理されたデータは、あるマイクロサービスから、データプレーンを使用する別の（より高い階層の）マイクロサービスに転送される。いくつかの実施形態において、そのような転送の間に、下位のマイクロサービスは、上位階層のどのマイクロサービスを利用すべきかに関する決定を、（コンフィギュレーション、現在の統計値および他の情報に基づいて）行う。そのような決定は、ロードバランシング決定を構成し、上位階層のマイクロサービスが効率的に利用されることを確実にし得る他の実施形態において、どのマイクロサービスを利用すべきかの決定は、より中心のエンティティによって行われる。
【００２２】
示されるように、ネットワークセキュリティシステムはハードウェアプロセッサ１０２（中央演算処理装置（ＣＰＵ）、またはＣＰＵの１または複数のコア、グラフィックス処理ユニット（ＧＰＵ）、またはＧＰＵの１または複数のコア、または加速処理ユニット（ＡＰＵ）またはＡＰＵの１または複数のコアなど）を利用して、メモリ１０４（例えば、ランダムアクセスメモリ（ＲＡＭ）などの揮発性メモリ、および／または、ディスクなどの不揮発性メモリ）に格納されたマイクロサービスを実行する。ネットワークインタフェース１２８（例えば、有線または無線であるファブリック接続または相互接続）は、データセンタと通信する手段を提供する。ネットワークセキュリティシステムは、マイクロサービスを使用して、以下にさらに記載されるように、トラフィックを検査し、脅威を検出し、また別の方法でデータセンタを保護し得る。
【００２３】
上記の性能を提供するネットワークセキュリティシステムの複数の実施形態が、ここでより詳細に論じられる。ネットワークセキュリティシステムはデータセンタにセキュリティを追加するか、またはデータセンタのセキュリティを向上させる。一実施形態において、ネットワークセキュリティシステムはシードソフトウェアアプリケーションの形態で送られる（例えば、ダウンロードされる）。シードソフトウェアアプリケーションは、データセンタにおけるホストに、ネットワークセキュリティシステムのマイクロサービスをインスタンス化する。本明細書で使用されるとき、マイクロサービスコンテナは、マイクロサービスが動作する場所、最も顕著には仮想マシンを指す。ネットワークセキュリティシステムは、一旦デプロイされると、ハードウェアプロセッサ１０２（上に詳細にあるような）、メモリ１０４、およびネットワークインタフェース１２８を利用する。多くのシナリオにおいて、既存のハードウェアを使用して、および／または、特定の機能のための特定のラックデバイスを購入する必要なく、セキュリティが追加されて／構成されてよい。シードソフトウェアアプリケーションは、低速であれ高速であれ、低コストであれ高コストであれ、汎用であれカスタマイズされたものであれ、地理的に分散したものであれ、冗長性スキームの一部であれ、定期的なバックアップがあるシステムの一部であれ、多種多様のホストのうちのいずれか１つにインストールされてよい。
【００２４】
さらに以下にまた記載のように、ネットワークセキュリティシステムは、一旦起動されると、いくつかの実施形態において、ネットワークインタフェース１２８を利用してデータセンタを探索して、存在するネットワークセグメントの種類、様々なネットワークセグメントに適用されるセキュリティ、利用可能なホストおよびハードウェアリソースの種類、および、必要に応じてさらなるコンフィギュレーション情報をディスカバリするであろう。一実施形態において、データセンタそれ自体は、ハイパーバイザを有するいくつかの機械、または物理ハードウェアを含み、ネットワークセキュリティシステム１００は、マイクロサービスを提供し、１または複数のそれら内部仮想マシンまたは物理ハードウェアと通信し、それらを保護する。いくつかの実施形態において、データセンタディスカバリを実行した後に、ネットワークセキュリティシステムは次に、ユーザインタフェースを介して、または既存の企業管理ソフトウェアとの接続によってのいずれかで、選択されるべき利用可能なセキュリティツールを提供または提案する。１つの実施形態において、ネットワークセキュリティシステムは、一旦構成されると、"インライン"でデプロイされ、データセンタに向かう実質的にすべてのパケットを受信し、ネットワークセキュリティシステムが、疑わしいトラフィックを、データセンタに到達する前に捕捉および阻止することを可能にする。データセンタを理解すると、ネットワークセキュリティシステム１００はマイクロサービスをデプロイし、トラフィックを、単に進入時だけでなくデータセンタ全体にわたって検査する。いくつかの実施形態において、ネットワークセキュリティシステムは"コピーオンリー"コンフィギュレーションでデプロイされ、この場合ネットワークセキュリティシステムはトラフィックをモニタリングし、脅威を検出し、アラートを生成するが、しかしトラフィックをデータセンタに到達する前に捕捉することはない。
【００２５】
図１を再び参照すると、示されないが、１つの実施形態においてハードウェアプロセッサ１０２は、１または複数のレベルのキャッシュメモリを含む。示されるように、メモリ１０４はその中に、マイクロサービス１０８、１１０、１１２、１１４、１１６、１１８、１２０および１２２（１０８−１２２）、ならびに、それ自体がマイクロサービスである仮想シャーシ１０６を格納している。一実施形態において、マイクロサービスはサイズが小さく、比較的少数の命令からなる。一実施形態において、マイクロサービスは互いに独立している。示されるように、マイクロサービス１０８−１２２はメモリからロードされ、ハードウェアプロセッサ１０２によって実行されるマイクロサービスである。それらのマイクロサービスは、図２および３に関連して以下にさらに記載されるように、データパスセキュリティマイクロサービス、例えばＴＣＰ／ＩＰ、ＳＳＬ、ＤＰＩ、またはＤＰＬ検査マイクロサービスを含む。マイクロサービスはまた、管理マイクロサービスを含んでよく、図２および３に関連してさらに以下記載されるいくつかの例を挙げると、例えば、マイクロサービスを管理するシャーシコントローラと、コンフィギュレーションマイクロサービスと、インフラストラクチャディスカバリマイクロサービスと、データを格納するデータベースマイクロサービスと、外部セキュリティクラウドからポリシーの更新を受信するポリシーの更新マイクロサービスと、様々なソースからポリシーデータを受信し、マイクロサービスによって使用されるべき、バイナリポリシー出力を生成するコンパイラとである。
【００２６】
ネットワークセキュリティシステムはデータセンタへ／からネットワークインタフェース１２８を介してトラフィックを受信してよい。１つの実施形態において、ネットワークセキュリティシステムはインラインで配置されてトラフィックを検査し、場合によっては、トラフィックがデータセンタに到達する前か、データセンタを離れる前に脅威を捕捉する。代替的な実施形態において、ネットワークセキュリティシステムは、データセンタに向かう、またはデータセンタを出るトラフィックをモニタリングし、その場合、ネットワークセキュリティシステムは脅威を検出してアラートを生成するが、データを阻止しない。ハードウェアプロセッサ１０２は次に、データに対して様々なデータセキュリティマイクロサービスを実行する。例えば、図２および３に関連して以下にさらに記載されるように、通常、トラフィックはまずセグメントマイクロサービスに入って通過し、次に、ＴＣＰ／ＩＰ検査マイクロサービス、次にＳＳＬマイクロサービス、次にＤＰＩマイクロサービス、次にＮＯＸマイクロサービス、次にＤＬＰマイクロサービスを通過する。しかしながら、これらのサービスの１または複数が有効でなくてもよい。いくつかの実施形態において、セグメントマイクロサービスが、ネットワークセグメント内に存在し、データパケットのためのエントリポイントとしての役割を果たし、パケットをさらなる分析のために適切なマイクロサービスに転送する。本明細書で使用されるデータパスマイクロサービスは、ＴＣＰ、ＴＬＳ、ＤＰＩ、ＮＯＸ、またはＤＬＰなどの、ネットワークトラフィックを検査および分析する様々なマイクロサービスを指す。ＴＣＰマイクロサービスは、例えば、レイヤ４−６の任意のネットワークパケットを処理することが可能なパケット処理マイクロサービスを指し、ファイアウォールの一部を含む。ＴＬＳマイクロサービスは、例えば、トランスポートレイヤセキュリティマイクロサービスを指し、接続を復号／再暗号化する。ＤＰＩマイクロサービスは、例えば、ディープパケットインスペクションマイクロサービスを指し、レイヤ７の検査を取り扱う。ＮＯＸマイクロサービスは、例えば、ネットワークオブジェクトエクストラクタマイクロサービスを指し、ＤＰＩと共に動作し、個々のパケットからのオブジェクトをアセンブルし、他のサービスにそれらを送る。ＤＬＰマイクロサービスは、例えば、データ紛失防止マイクロサービスを指し、データ紛失を検出および防止する。他方では、制御パスマイクロサービスは、ファクトリ、コンパイラ、コンフィギュレーション、インフラストラクチャディスカバリ、データベース、メッセンジャー、スケーラ、およびシャーシコントローラなどの様々なマイクロサービスであり、管理プレーンにおいてインスタンス化され、管理プレーンを構成する。前述のマイクロサービスによって検出された脅威は、１つの実施形態において、シャーシコントローラマイクロサービスに報告され、そこでは是正措置を取る。
【００２７】
一実施形態において、マイクロサービス１０８−１２２は、ネットワークインタフェース１２８を介してインターネットからロードされるコンピュータ実行可能命令を使用して実装される。例えば、一実施形態において、マイクロサービスはウェブサイトまたはオンラインストアのサイトからダウンロードされたコンピュータ実行可能命令によって実装される。いくつかの実施形態において、マイクロサービス１０８−１２２はメモリ１０４にロードされる。様々な実施形態において、マイクロサービスは、別のディスクドライブ、ＣＤ、ＣＤＲＯＭ、ＤＶＤ、ＵＳＢフラッシュドライブ、フラッシュメモリ、セキュアデジタル（ＳＤ）メモリカード、メモリカードを含むが限定するものではないデジタルメディアなどの、非一時的コンピュータ可読媒体にロードされ、そこから受信されるコンピュータ実行可能命令を使用して実装される。一例として、デジタルメディアから受信されたマイクロサービスはメモリ１０４に格納される。実施形態はこの文脈に限定されない。さらなる実施形態において、デジタルメディアは、プロセッサまたはメモリなどのハードウェア要素の組み合わせを構成するデータ送信元である。
【００２８】
ほとんどの実施形態において、ネットワークセキュリティシステムはデータセンタのコンピュータで動作する。代替的な実施形態においては、しかしながら、ネットワークセキュリティシステムは、低コストから高コストまで、低電力から高電力までにわたる、多種多様な代替のコンピューティングプラットフォームのうちのいずれか１つにインストールされ、そこで動作する。いくつかの実施形態において、ネットワークセキュリティシステムは、低コストの汎用サーバコンピュータに、または、いくつかの実施形態において、低コストのラックマウント式サーバに、インストールされてそこで動作する。示されるように、ハードウェアプロセッサ１０２はシングルコアプロセッサである。代替的な実施形態において、ハードウェアプロセッサ１０２はマルチコアプロセッサである。代替的な実施形態において、ハードウェアプロセッサ１０２は超並列プロセッサである。
【００２９】
いくつかの実施形態において、仮想シャーシ１０６およびマイクロサービス１０８−１２２は、データセンタで使用される多種多様のハードウェアプラットフォームのいずれかにホストされ、保護されてよい。以下の表１は、複数の代表的なデータセンタ環境を列挙して説明し、それらのうちのいずれか１つが、仮想シャーシ１０６およびマイクロサービス１０８−１２２をホストする。
表１：仮想シャーシ１０６をホストするための環境
【表１】
2019523507.tif 000003
【００３０】
いくつかの例において、ネットワークセキュリティシステムは利用可能リソースを使用してスケールアウトし、より高いトラフィックまたは負荷に対応する。例示的な実施形態において、ハードウェアプロセッサ１０２（ＣＰＵ）およびメモリ１０４は、必要に応じて動的にスケールアウトまたはスケールインされる。スケールアウトの場合は追加のＣＰＵおよびメモリが追加され、スケールインの場合はいくつかのＣＰＵおよび／またはメモリの電源を切る。このスケールアウトは、追加のＣＰＵおよびメモリが必要とされるセキュリティ階層の部分に追加のＣＰＵおよびメモリを割り当て、一方で、それらの既存の割り当てを利用してより高いトラフィックに対応できるセキュリティ階層の部分には追加のＣＰＵおよびメモリを割り当てないように、行われる。
【００３１】
マイクロサービスの一般的な特性は、他のマイクロサービスからのメモリの分離および保護である。この方式では、個々のマイクロサービスは他のマイクロサービスに影響を与えることなく、別の物理サーバへと移動されるか、異常に終了することがある。マイクロサービスは、スレッドが概して共有メモリ空間内で動作して、それらがスポーンされたオペレーティングシステムの制約内で存在する点で、スレッドと区別することができる。
【００３２】
図２は、一実施形態に従う、マイクロサービスを使用する３倍のスケールアウトを示す。この例において、単一のマイクロサービス（ＤＰＩ）のみが、さらなるリソースから利益を得るであろう。示されるように、ＤＬＰマイクロサービス２０４、ＮＯＸマイクロサービス２０６、ＤＰＩマイクロサービス２０８、ＳＳＬ／ＴＬＳマイクロサービス２１０、ＴＣＰ／ＩＰマイクロサービス２１２、およびセグメントマイクロサービス２１４を含むスケーラブルなマイクロサービスアーキテクチャ２００を利用することによって、セキュリティサービス階層のそれぞれのレイヤは、次階層レベルへの処理済みのデータの供給のロードバランシングを行うように、個別にスケーリングされて構成される。示されるように、データセンタ２１６はデータセンタラック２１８を含み、それは物理サーバＡ、２２０、物理サーバＢ、２２２、および物理サーバＣ、２２４を含む。示されるように、データセンタラック２２６は物理サーバＸ、２２８、物理サーバＹ、２３０、および物理サーバＸ、２３２を含む。ＤＰＩマイクロサービス２０８は３倍にスケールアウトされており、この例において、物理サーバＢ２２２および物理サーバＣ２２４でマイクロサービス４−６が実行されるように割り当てられる。スケーラブルなセキュリティアーキテクチャの残りのマイクロサービスは、物理サーバＡ、Ｘ、Ｙ、Ｚ、２２０、２２８、２３０、および２３２によって実装されるように示される。コンフィギュレーションマイクロサービス２０２は、セキュリティサービスを受信するものであるそれぞれの物理サーバにソフトウェアコンポーネントとしてデプロイされる、コンフィギュレーションバックプレーンおよびデータプレーンを作成する。この作成処理は、ルーティングルールを構成し、ネットワークアドレス空間（サブネットなど）を予約し、仮想環境を構成して、安全にされるべきサーバの内外でネットワーク通信のためのゲートウェイとして、予約されたアドレス空間の一部を利用するという形態を取る。バックプレーンおよびデータプレーンの両方が、したがって、セキュリティシステムによって管理される仮想ネットワークとみなされてよい。次に、すべてのセキュリティマイクロサービスは、これらのネットワークを利用して、それら自身の間で、パケット、コンテンツ、状態、および他の情報を送信してよい。バックプレーンおよびデータプレーンの特性は、セキュリティシステムの外部からのパケットトラフィックを拒否し、物理サーバおよび仮想環境のコンフィギュレーションにかかわらず、マイクロサービス間で情報をルーティングするように構成される。
【００３３】
図３は、一実施形態に従う無作為なスケールアウトを示す。示されるように、スケーラブルなセキュリティアーキテクチャ３００は、コンフィギュレーションマイクロサービス３０２、ＤＬＰ（２倍）マイクロサービス３０４（２倍のスケールアウト）、ＮＯＸマイクロサービス３０６、ＤＰＩ（３倍）マイクロサービス３０８（３倍のスケールアウト）、ＳＳＬ／ＴＬＳマイクロサービス３１０、ＴＣＰ／ＩＰ（３倍）マイクロサービス３１２（３倍のスケールアウト）、およびセグメントマイクロサービス３１４を含む。示されるように、コンフィギュレーションマイクロサービス３１６は、最も低い階層から最も高い階層まで、（３１８、３２０、３２２、３２４、３２６、および３２８）１１個のマイクロサービスをプロビジョニングし、それらをバックプレーンを介して互いに通信するように構成する。マイクロサービスは、データセンタ３３０において物理サーバによって実装される。
【００３４】
図４は、一実施形態に従うシステムレベルブロック図である。１または複数のセキュリティサービス４１０は、一実施形態に従うルーティングネットワーク４０８を通じて、アプリケーション４１６と、１または複数のサーバ４０４および４０６との間のトラフィックをモニタリングする。セキュリティサービス４１０は、アプリケーション４１６およびサーバ４０４および４０６から／へのトラフィックを保護するように使用されるマイクロサービスの群である。これらのマイクロサービスは、サーバ４０４またはサーバ４０６などの１つの物理サーバを制約する必要がない。例えば、セキュリティサービス４１０の１または複数のマイクロサービスは、サーバ４０４で実行されてよく、セキュリティサービス４１０の他のマイクロサービスは、サーバ４０６で実行される。いくつかの実施形態において、セキュリティサービス４１０は、保護されていないサーバで実行される。
【００３５】
ルーティングネットワーク４０８は、サーバ４０４、サーバ４０６、セキュリティサービス４１０、およびアプリケーション４１６の間での接続を提供し、本明細書で開示された実施形態によって使用されるカプセル化プロトコルをサポートし得る。いくつかの実施形態において、ルーティングネットワーク４０８は部分的に、サーバ４０４および４０６のハイパーバイザコンフィギュレーションに対応して構成される。
【００３６】
チャネルデータカプセル化パケットに含まれるルーティング情報のおかげで、以下にさらに説明されるように、アプリケーション４１６と、サーバ４０４および／またはサーバ４０６との間のデータ移動は、正しいサーバにルーティングされ、アプリケーション４１６と他のサーバとの間のデータ移動とは別個に保たれる。したがって、基本的に、プライベートネットワーク４１２は、サーバで動作するセキュリティサービス４１０およびサーバ４０４の間で作成される。同様に、基本的に、プライベートネットワーク４１４は、サーバで動作するセキュリティサービス４１０およびサーバ４０６の間で作成される。
【００３７】
図５は、一実施形態に従う、セキュリティマイクロサービスの階層を通った後に横断してサーバへ向かう、アプリケーションデータを示すブロックフロー図である。示されるように、フローは、アプリケーション５０２からネットワークデータパケットを受信するセキュリティサービス５０４から始まる。セキュリティサービス５０４はパケットをインタフェースマイクロサービス５０８に転送５０６し、チャネルデータカプセル化パケット５１０を生成し、それは３つのパケットＡ、Ｂ、ＣおよびコンテキストＸをカプセル化する。示されるように、チャネルデータカプセル化パケット５１０は３つのパケットをカプセル化するが、代替的な実施形態では、カプセル化されるパケットの数は、限定するものではなく、変動し得る。いくつかの実施形態において、コンテキストＸは、少なくともパケットＡ、ＢおよびＣのヘッダに基づいて生成される。いくつかの実施形態において、コンテキストＸは、パケットの送信元および／または送信先に関するＩＰアドレス、ポートおよびＭＡＣアドレスなどの、パケットヘッダフィールドのルックアップによって生成される。いくつかの実施形態において、コンテキストＸの生成は、仮想化環境から取得されたインタフェース識別子の利用を含む。コンテキストＸの生成は、ヘッダフィールドのルックアップおよび表の他のデータ、ヘッダフィールドのハッシュおよび他のデータ、または共通セキュリティポリシーが適用されるべきパケットがこれによりコンテキストのビットフィールドなどの共通コンテキストまたは共通部分を有する別の方法、によって達成されてよい。
【００３８】
コンテキストＸは、パケットＡ、ＢおよびＣを生成する役割を担うトラフィックストリーム、送信元機械、またはアプリケーションを説明する識別子とみなされてよい。この識別子は、直接的（テーブルルックアップとして使用されたＩＤなど）、間接的（データ構造にアクセスするために使用されるポインタなど）、または、パケットＡ、ＢおよびＣを処理するために用いるポリシーおよび処理に関してマイクロサービスに命令する何らかの他の方法であってよい。例えば、コンテキストＸは、ＩＰアドレス、ＴＣＰポート、インタフェース名（またはＭＡＣアドレス）、または他のパケットプロパティなどの、ハッシュ、最長プレフィックス一致、またはヘッダフィールドのルックアップを実行することによって生成されてよい。ルックアップは、正確な一致、最長プレフィックス一致、または、パケットストリームを同じセキュリティ処理と関連づけて用いる他の方法であってよい。生成されたコンテキストは、次に、ＤＰＩサービスなどの、パケットＡ、ＢおよびＣ（および、同じトラフィックストリームの一部である他のパケット）からデータをスキャンするときにどのルールが利用されるべきか判断する、セキュリティサービスによって使用されてよい。この情報は、間接的に利用可能な（別のサービスによる表またはデータ構造のルックアップなど）、またはそのような情報の任意の組み合わせに基づいてプログラム的に生成される、コンテキスト内に（ビットフィールドまたは他の情報として）組み込まれてよい。
【００３９】
コンテキストは、インタフェースマイクロサービスにおけるルックアップによって生成されてよく、伝送制御プロトコル（ＴＣＰ）再アセンブルサービスへのパケットデータの伝送において含まれる。ＴＣＰマイクロサービスから再アセンブルされたコンテンツは、ディープパケットインスペクション（ＤＰＩ）マイクロサービスに、または保護ソケットレイヤ（ＳＳＬ）マイクロサービスに、同じコンテキストと共に送信される。マイクロサービス階層の全体にわたるデータトランスポートのカプセル化においてこのコンテキストを維持することによって、コンテキストと関連づけられた処理指示が、ステートフルな更新を稀にしか用いない、共有されたリードオンリーリソース（このマイクロサービスに対する）となる。
【００４０】
インタフェースマイクロサービス５０８は、チャネルデータカプセル化パケット５１０をＴＣＰ／ＩＰマイクロサービス５１４に送信５１２する。示されるように、チャネルデータカプセル化パケット５１６はコンテキストＸおよびコンテンツＹを含み、それはチャネルデータカプセル化パケット５１０のパケットＡ、Ｂ、Ｃに対応する。チャネルデータカプセル化パケット５１６のセキュリティ処理を行った後、ＴＣＰ／ＩＰマイクロサービス５１４はＤＰＩマイクロサービス５２０を送信５１８する。示されるように、チャネルデータカプセル化パケット５２２はコンテキストＸおよびコンテンツＹを含み、それはチャネルデータカプセル化パケット５１０のパケットＡ、Ｂ、Ｃに対応する。チャネルデータカプセル化パケット５２２のセキュリティ処理を行った後、ＤＰＩマイクロサービス５２０はチャネルデータカプセル化パケット２４を生成し、それは、示されるように、コンテキストＸ、ＤＰＩ負荷Ｚ、およびＤＰＩタイムスタンプＴを含む。カプセル化されたチャネルデータは、タイムスタンプおよび負荷メトリックを含むプロパティによってタグ付けされてよい。タイムスタンプは、マイクロサービス処理の持続期間、マイクロサービス処理が始動した時間、またはカプセル化されたチャネルデータの処理に関連づけられた別の時間限定的プロパティを指してよい。負荷メトリックは、カプセル化されたチャネルデータのマイクロサービス処理の相対的または絶対的負荷を指してよい。
【００４１】
示されるように、ＤＰＩマイクロサービス５２０は、経路５２６を介して、チャネルデータカプセル化パケット５２４をＴＣＰ／ＩＰマイクロサービス５１４に送信し、それはＤＰＩ負荷およびＤＰＩタイムスタンプ情報を用いてその後のロードバランシング決定を通知する。示されるように、ＴＣＰ／ＩＰマイクロサービス５１４はチャネルデータカプセル化パケット５２８を生成し、それはコンテキストＸ、ＴＣＰ／ＩＰ負荷Ｚ、およびＴＣＰ／ＩＰタイムスタンプＴを含む。示されるように、ＴＣＰ／ＩＰマイクロサービス５１４は、経路５３０を介して、チャネルデータカプセル化パケット５２８をインタフェースマイクロサービス５０８に送信し、それはＴＣＰ／ＩＰロードおよびＴＣＰ／ＩＰタイムスタンプ情報を用いて、その後のロードバランシング決定を通知する。インタフェースマイクロサービス５０８が経路５３２を介して、パケットをセキュリティサービス５０４に送信し、セキュリティサービス５０４がパケットをサーバ５３４に送信するとき、フローは完了する。
【００４２】
示されるように、ＤＰＩマイクロサービス５２０はチャネルデータカプセル化パケット５２４をＴＣＰ／ＩＰマイクロサービス５１４に送信し、それはＤＰＩ負荷およびＤＰＩタイムスタンプ情報を用いて、その後のロードバランシング決定を通知する。示されるように、ＴＣＰ／ＩＰマイクロサービス５１４はチャネルデータカプセル化パケット５２８を生成し、それはコンテキストＸ、ＴＣＰ／ＩＰ負荷Ｚ、およびＴＣＰ／ＩＰタイムスタンプＴを含む。示されるように、ＴＣＰ／ＩＰマイクロサービス５１４は、チャネルデータカプセル化パケット５２８をインタフェースマイクロサービス５０８に送信し、それはＴＣＰ／ＩＰロードおよびＴＣＰ／ＩＰタイムスタンプ情報を用いて、その後のロードバランシング決定を通知する。インタフェースマイクロサービス５０８が経路５３２を介してパケットをセキュリティサービス５０４に送信し、セキュリティサービス５０４がパケットをサーバ５３４に送信するとき、フローは完了する。
【００４３】
セキュリティサービス５０４の有益な点は、すべての通信に関して各マイクロサービスが同じチャネルデータカプセル化プロトコルを利用する可能性を含み、それによって、チャネルデータカプセル化ヘッダを介してルーティング可能なデータセンタネットワークの全体にわたってスケーリングを可能にする。マイクロサービス間の通信は、インタフェースマイクロサービス５０８において生成された、もはや元のパケットへのアクセスを有しないすべての後続のマイクロサービスへのコンテキストＸを維持する。チャネルデータカプセル化パケット５２４および５２８における負荷およびタイムスタンプデータを提供することによって、それは経路５２６および５３０を介して返され、マイクロサービスはリアルタイム負荷および利用される処理レイテンシ情報を受信して維持でき、ロードバランシング決定を行う。
【００４４】
図６は、ステートレス処理フォールトトレラントマイクロサービス環境を通ったアプリケーションデータのフローの実施形態を示す。示されるように、セキュリティシステム６００は１または複数のインタフェースマイクロサービス６０２、６０４および６０６、１または複数のＴＣＰ／ＩＰマイクロサービス６１０および６１２、および１または複数のＤＰＩマイクロサービス６２０、６２２および６２４を含む。いくつかの実施形態は、異なる数の、および／または異なるタイプのマイクロサービスを含む。示された実施形態にいて、インタフェースマイクロサービス６０２はパケットＡ６０８を受信し、そのパケットのコンテンツに基づくコンテキストＸ６６０と、そのパケットについての情報とを生成する。
【００４５】
パケットが特定のコンテキスト（例えば、コンテキストＸ）に属するとき、ＴＣＰ／ＩＰマイクロサービス６１０および６１２の両方が、それらに関する動作を実行する。概して、この後に、状態に関する共有メモリによってスレッド化されたモデル、統合された中心状態レポジトリを有する処理モデル、または、同じコンテキストが同じマイクロサービスによって常に処理されることを保証する直交分散メカニズムが続く。
【００４６】
いくつかのセキュリティシステムは、同じ処理のスレッドとしてＴＣＰ／ＩＰセキュリティ処理を実装し、各スレッドが各スレッドのメモリにアクセスすることを可能にする。しかしながら、１つのスレッドが異常な実行をした場合、それは処理に関連づけられたすべてのスレッドのメモリを汚染する可能性がある。マイクロサービスとしてＴＣＰ／ＩＰマイクロサービス６１０および６１２を実装することは、このことを回避する。なぜなら、各マイクロサービスが異なったメモリ、つまり共有されないメモリを用いるからである。
【００４７】
また、セキュリティシステムは、関連するパケットが常に同じＴＣＰ／ＩＰ処理によって処理されることを保証するように、別個の状態を有する処理としてＴＣＰ／ＩＰを実装し、入ってくるパケットをハッシュ（または分配）してもよい。このことは、２つ以上のＴＣＰ／ＩＰ処理が状態を共有する必要がないように、状態が直交に保たれることを可能にする。そのような手法は、劣ったロードバランシング効率を含む、問題に悩まされることがある。さらに、ＴＣＰ／ＩＰ処理の状態は、ＴＣＰ／ＩＰ処理のうちの１つが動かなくなった場合に別のＴＣＰ／ＩＰ処理が後を引き継ぐことができるように、シャドーイングされる必要があるかもしれない。
【００４８】
本明細書に詳細に述べられた実施形態において、ＴＣＰ／ＩＰマイクロサービス６１０および６１２（または他のマイクロサービス）は、外部状態構造と、すべて処理済みのデータを伴うコンテキストとを有する。セキュリティ階層のすべてのレベルにおける、各ＴＣＰ／ＩＰマイクロサービスおよび各他のマイクロサービスは、他のマイクロサービスから切り離され、個別にスケーリングされ得る。各マイクロサービスは、パケットに関する状態にアクセスでき、または、グローバルステートサービス（図７に関連して記載）を使用したリアルタイムロードバランシングを可能にする再アセンブルされたパケットデータにアクセスできる。多くの場合において、コンテキストはマイクロサービスがサービス状態（特定のマイクロサービスの階層レベルでの処理に関連づけられた状態）を調べることを割愛することを可能にし、それによって、グローバルステートサービスに対する需要を低下させる。
【００４９】
例として、インタフェースマイクロサービス６０２から受信されたパケットの一部として、経路６４０を介して、ＴＣＰ／ＩＰマイクロサービス６１０によって取得されたコンテキスト６６２を検討する。このコンテキストは、既に記載された処理を使用してインタフェースマイクロサービス６０２によって生成されており、ＴＣＰ／ＩＰマイクロサービス６１０によって起動された任意のセキュリティサービス要求の一部として転送される。コンテキスト６６２は、再アセンブルされたパケットデータと共に経路６４２の一部としてＤＰＩマイクロサービス６２０に送信されるとき、ＤＰＩマイクロサービスがこの再アセンブルされたデータの処理を割愛または単純化することが可能かもしれない旨の情報を含む。そのような情報は、正規表現またはパターンのサブセットのみをＤＰＩ処理のために使用する必要がある旨を指定する、コンテキストビットまたはフィールドを有することができる。コンテキストが、再アセンブルされたデータのうち特定数のバイトがＤＰＩ処理開始前に受信されるべき旨、特定のプロトコルが許可されるかまたは禁止される旨、および他の情報をコンテキストが特定している場合、ＤＰＩ状態ルックアップは回避され得る。コンテキストが、いかなるＤＰＩ処理結果もフローを隔離し得ない旨を特定する場合、例えば、フローが信頼された境界内にある場合、コンテキスト状態参照は回避され得る。
【００５０】
本明細書に開示された実施形態は、ステートレスであるマイクロサービスを含む。任意のコンテキストに属するパケットまたはコンテンツを処理し得るように、マイクロサービスのそれぞれが外部ソースから状態を取得する。各マイクロサービスは、サービス状態（マイクロサービス処理に関連づけられた状態）を取得および更新し得る。さらに、各マイクロサービスは、コンテキスト状態（すべてのセキュリティサービス処理に関連するコンテキストに関連づけられた状態）を取得および更新し得る。いくつかの実施形態において、処理状態およびコンテキスト状態はグローバルステートサービスを共有する（図７を参照）。コンテキスト状態の要素の例は、送信元ＩＰからのトラフィックに関する不審レベル、特定のポート、プロトコル、またはパケットを処理するために使用された他の情報を無視するポリシー、コンテキストによって識別された通信からの再アセンブルされたコンテンツおよび抽出されたオブジェクト、などを含む。
【００５１】
複数のＴＣＰ／ＩＰマイクロサービス、またはセキュリティシステムの異なる階層のマイクロサービスが、同時に同じコンテキストを有するパケットを処理することが可能である。１つのセキュリティマイクロサービスが働かなくなった場合、例えば、ＴＣＰ／ＩＰマイクロサービスが要求に応答しなくなった場合、このことは、働かなくなったマイクロサービスのコンテキストを使用することを別のマイクロサービスが引き継ぐことを可能にする。
【００５２】
図６に戻ると、コンテキストＸ６６０の生成は、そのルーティング情報を詳述するｎ組などのパケットＡ６０８に関連づけられたプロパティのみならず、状態ルックアップまたはコンテキストルックアップ、ならびに他の情報もまた検討し得る。インタフェースマイクロサービス６０２は、パケットＡ６０８およびコンテキストＸ６６０を、経路６４０または６５０を介して、ＴＣＰ／ＩＰマイクロサービス６１０または６１２にそれぞれ提供する。インタフェースマイクロサービス６０２は、行い得る。パケットＡ６０８およびコンテキストＸ６６０を転送する先であるＴＣＰ／ＩＰマイクロサービスのうちの１つを選択するようにロードバランシングを行い得る。
【００５３】
ＴＣＰ／ＩＰマイクロサービス６１０および６１２はステートレスであるが、しかし、インタフェースマイクロサービス６０２によって行われるコンテキストＸの生成から利益を得る。ＴＣＰ／ＩＰマイクロサービス６１０または６１２のいずれかが、パケットＡを受信し、パケットを逆アセンブルしてパケットに関連づけられたデータを抽出し、データでのセキュリティ処理を実行する。ＴＣＰ／ＩＰ再アセンブリは、概して、パケットを（ソースおよび送信先ＩＰおよびポート値によって識別された）フローと関連づけることと、ＴＣＰシーケンス付番を使用して、パケットを正しい順序で配置して、任意の重なるか重複するものを除外して、失われたかアウトオブオーダーなパケットを識別することと、で構成される。
【００５４】
ＴＣＰ／ＩＰマイクロサービス６１０または６１２は、コンテキストまたは抽出されたデータを、および／または、セキュリティ処理から生じるデータを、それぞれ経路６４２または６５２を介して、ＤＰＩマイクロサービス６２０に転送する。ＤＰＩマイクロサービス６２０は、受信されたデータを逆アセンブルして、パケットに関連づけられたデータを抽出し、送信されたデータと共にセキュリティ処理を実行し、ＴＣＰ／ＩＰマイクロサービス６１０または６１２は、それぞれコンテキストＸ６６２または６６４を、ＤＰＩマイクロサービス６２０に転送する。いくつかの実施形態において、コンテキストＸ６６０、６６２、６６４および６６６は実質的に同一である。
【００５５】
ＴＣＰ／ＩＰマイクロサービス６１０はステートレスであり、インタフェースサービス６０２によって提供されるコンテキストから利益を得る。コンテキストは、ＤＰＩ処理に転送する前の特定のプロトコルのために再アセンブルするデータの量、および、アウトオブオーダーなパケットのための任意の特殊な処理へのトレランスなどの、ＴＣＰ／ＩＰ処理のパラメータを特定し得る。ＤＰＩマイクロサービス６２０はステートレスであり、また、経路６４２または６５２を介してＴＣＰ／ＩＰマイクロサービス６１０または６１２によって提供されるコンテキストから利益を得る。ＤＰＩマイクロサービス６２０は、受信されたデータの処理の前にロードされるべきＤＰＩ処理状態を有するかもしれないが、コンテキストのみに基づいていくつかの動作（異なるＤＰＩパターン状態のテーブルのスケジューリングなど）を実行し得る。コンテキストをＤＰＩマイクロサービス６２０に送信することは、したがって、ＤＰＩマイクロサービスによっていくらか動作することを未然に防ぐという利益を提供する。
【００５６】
ＴＣＰ／ＩＰマイクロサービス６１０が働かなくなり、インタフェースマイクロサービス６０２がＴＣＰ／ＩＰマイクロサービス６１２を利用する場合、ＤＰＩマイクロサービス６２０は、経路６５２において、再アセンブルされたＴＣＰコンテンツの伝送からなおもコンテキストを取得する。
【００５７】
図６は第２のパケットを示さないが、同じコンテキストに関連づけられた後続のパケットが受信されたとき、インタフェースマイクロサービス６０２は、ロードバランシングを行い、コンテキストＸ６６０と共にパケットを転送する先であるＴＣＰ／ＩＰマイクロサービスのうちの１つを選択する。例えば、インタフェースマイクロサービス６０２は、第２のパケットを経路６５０を介してＴＣＰ／ＩＰマイクロサービス６１２に転送するように、選ぶ。ＴＣＰ／ＩＰマイクロサービス６１２はいくつかのセキュリティ処理を実行して、次に、第２のパケットおよびコンテキストＸ６６４を、経路６５２を介してＤＰＩマイクロサービス６２０に送信する。いくらかのセキュリティ処理の実行後、ＤＰＩマイクロサービス６２０は経路６５４を介してＴＣＰ／ＩＰマイクロサービス６１２に応答し、ＴＣＰ／ＩＰマイクロサービスは経路６５６を介してインタフェースマイクロサービス６０２に応答する。それぞれ６４４および６４６として、セキュリティ処理に関するＴＣＰ／ＩＰマイクロサービス６１０とＤＰＩマイクロサービス６２０の両方が、それらの受信された要求への応答を提供する。１つの実施形態において、各応答は、セキュリティ処理の要求の一部であったコンテキストを含む。
【００５８】
いくつかの実施形態において、インタフェースマイクロサービスは、パケットのコンテンツに基づいて生成されているコンテキストと共に、ＴＣＰ／ＩＰマイクロサービスにパケットを送信する。伝送は、パケットが再アセンブルされたデータを生成するように、セキュリティサービス（ＴＣＰ／ＩＰ再アセンブリ）を実行する要求を備える。ＴＣＰ／ＩＰマイクロサービスは、受信されたコンテキストを調べて、コンテキスト状態、サービス状態、または両方が、状態レポジトリから取得されるべきかどうかを判断し、そのセキュリティサービスを実行する。再アセンブリがＴＣＰ／ＩＰマイクロサービスによって行われ、任意の変更された状態が状態レポジトリに返され、再アセンブルされたデータがコンテキストと共にＤＰＩマイクロサービスに、ＤＰＩ処理を実行する要求として送信される。
【００５９】
ＤＰＩマイクロサービスは要求から再アセンブルされたデータおよびコンテキストを受信し、ＴＣＰ／ＩＰマイクロサービスによって送信されたＤＰＩセキュリティサービスを実行する。ＤＰＩマイクロサービスは受信されたコンテキストを調べて、コンテキスト状態、サービス状態、またはその両方が、そのセキュリティサービスを実行するように状態レポジトリから取得されなくてはならないかどうかを判断する。ＤＰＩ検査がＤＰＩマイクロサービスによって行われ、任意の変更された状態が状態レポジトリに返され、応答がＴＣＰ／ＩＰマイクロサービスへと送られる。
【００６０】
総称的には、各マイクロサービス要求を受信してサービスを実行し、コンテキスト状態、サービス状態、または両方を使用して要求されたサービスを実行し、任意の変更された状態を格納し、後続のマイクロサービス（１つあるのならば）に、処理済みのデータをコンテキストと共に送信する。
【００６１】
図７は、サービス状態ルックアップを使用する実施形態を示す。例示の目的のために、セキュリティサービス７０６はインタフェースマイクロサービス７０８、ＴＣＰ／ＩＰマイクロサービス７１０、およびＤＰＩマイクロサービス７１２をそれぞれ１つ含む。セキュリティサービス７０６は、アプリケーション７０２とサーバ７０４の間の通信のためのセキュリティサービスを提供するようにデプロイされ、複数のアプリケーションおよびサーバの間の通信のためのそれらのサービスを提供するようにデプロイされてもよい。他の実施形態において、セキュリティサービス７０６はそれらのマイクロサービスの異なる数のインスタンスを含む。インタフェースマイクロサービスの７０８、ＴＣＰ／ＩＰマイクロサービス７１０およびＤＰＩマイクロサービス７１２のそれぞれは、メッセージサービス７２０、７２２および７２４からなるメッセージサービス群を通る、ステートサービス７３０、７３２および７３４からなるステートサービス群への接続を有する。ステートサービス７３０、７３２および７３４のそれぞれは、ステートコンテンツ格納手段７４０、７４２および７４４をそれぞれ含む。いくつかの実施形態において、ステートサービス７３０、７３２および７３４は互いに通信する。いくつかの実施形態において、特定のフローの状態（サーバ通信パスへのアプリケーション）がステートコンテンツ格納手段７４０、７４２および７４４のうちの１つにおいて維持されるが、ステートサービス７３０、７３２および７３４のいずれかは、状態に関する要求を受け入れ、その要求を、そのステートコンテンツ格納手段においてその状態を有するステートサービスに転送することが可能である。いくつかの実施形態において、ステートサービス７３０、７３２および７３４のいずれかが、要求を受け入れることが可能であり、フローの状態を更新する。その場合に、選択されたステートサービスは、他のステートサービスを更新し、ステートサービス７３０、７３２および７３４のすべてのコピーを同期させる。更新要求の確認応答は、同期がコンフィギュレーションに基づいて承認された前または後に送られてよい。いくつかの実施形態において、インタフェースマイクロサービス７０８、ＴＣＰ／ＩＰマイクロサービス７１０、およびＤＰＩマイクロサービス７１２のそれぞれは、ステートサービス７３０、７３２および７３４のうちの１つを選択し、状態関連要求を受信する。他の実施形態において、インタフェースマイクロサービス７０８、ＴＣＰ／ＩＰマイクロサービス７１０、およびＤＰＩマイクロサービス７１２のそれぞれは、メッセージサービス７２０、７２２および７２４のうちの１つに状態関連要求を送り、メッセージサービスは、要求を転送する先であるステートサービス７３０、７３２および７３４のうちの１つを選択する。上記のものは、マイクロサービスがいずれかのステートサービスと直接、またはいずれかのメッセージサービスを通じて通信すること、および、状態レコードを得ること、与えること、更新すること、または初期設定することを可能にする。
【００６２】
図８は、マイクロサービスによって行われる方法の実施形態を示す。マイクロサービスは、システムインタフェース（ネットワークカード、仮想ネットワークインタフェース、または他のインタフェース）から、または別のマイクロサービスから、サービスデータ８０４を受信する。８０６で、マイクロサービスは、受信されたデータが、インタフェースマイクロサービスから受信されたパケットデータであるかどうか判断し、そうである場合、８０８でインタフェースマイクロサービスがコンテキストを生成し、フローに戻る。運ばれるデータのタイプは、黙示的（インタフェースマイクロサービスがパケットを送り、ＴＣＰ／ＩＰマイクロサービスが再アセンブルされたパケットデータを送る、など）であってもよく、マイクロサービス間の通信の一部として指定されてもよい。いくつかの実施形態において、マイクロサービスは、それぞれカプセル化された伝送内のコンテンツを指定する、カプセル化プロトコルを利用する。
【００６３】
階層がインタフェースマイクロサービスの上であるマイクロサービスは、この伝送の一部としてコンテキストを受信する。８１０において、ステートサービスが選択され、８０４で受信されたサービスデータにおいて行われるべき処理に対応するコンテキスト状態およびサービス状態が取得される。いくつかの実施形態において、選択は、コンテキストに基づく優先権またはより高い性能のステートサービスの要求など、コンテキストによって実行されるか影響を与えられる。
【００６４】
８１２において、マイクロサービスは、サービス状態がルックアップされる必要があるかどうか判断し、そうである場合、８１４において、サービス状態をルックアップし、フローに戻る。１つの実施形態において、マイクロサービスは、コンテキスト、ソースデータ、または両方の組み合わせからの情報を使用するサービス状態が、使用されるべきかどうかを判断する。この判断の例は、コンテキストの一部分またはビットフィールドに基づく、再アセンブルされたデータが少なくとも特定のサイズでないならばＤＰＩまたはＳＳＬ処理は起こるべきではない旨の、ＤＰＩまたはＳＳＬマイクロサービス内での判断、および、コンテキストの一部分またはビットフィールドに基づく、アウトオブオーダーなパケットは放棄するべきである旨の、ＴＣＰ／ＩＰマイクロサービス内での判断を含む。これらの代表的な（および他の）場合において、サービス状態は通常は取得されない。
【００６５】
８１６において、マイクロサービスは、コンテキスト状態がルックアップされる必要があるかどうかを判断し、そうである場合、８１８において、コンテキスト状態をルックアップし、フローに戻る。１つの実施形態において、マイクロサービスは、コンテキスト、ソースデータまたは両方の組み合わせからの情報を使用するコンテキスト状態が使用されるべきかどうかを判断する。この判断の例は、コンテキストに基づく、再アセンブルされたコンテンツはＳＳＬデータを含む旨の、ＴＣＰ／ＩＰサービスによる判断、および、コンテキストの一部分またはビットフィールドに基づく、再アセンブルされたデータが少なくとも特定のサイズでないならばＤＰＩまたはＳＳＬ処理は起こるべきではない旨の、ＤＰＩまたはＳＳＬマイクロサービス内における判断を含む。これらの代表的な（および他の）場合において、コンテキスト状態は取得される必要はない。
【００６６】
判断８１２および８１６は、設計者による優先、性能最適化、または他の理由に基づいて、任意の順序で行われ得る。
【００６７】
８２０において、セキュリティ処理が行われる。８２２において、マイクロサービスは、サービス状態が変更される必要があるかどうかを判断し、そうである場合、８２４において、サービス状態を修正し、フローに戻る。１つの実施形態において、マイクロサービスは、サービス状態がマイクロサービスによって行われた処理の結果として変化したかどうかに少なくとも部分的に基づいて、サービス状態が変更されなくてはならない（変更された形態でステートサービスに返される）かどうかを判断する。そのような判断の例は、サービスデータを解析するために使用される正規表現解析手段の状態が変化した旨の、ＤＰＩサービスによる判断、および、アウトオブオーダーなパケットが受信されている旨の、ＴＣＰ／ＩＰサービスによる判断を含む。
【００６８】
８２６において、マイクロサービスは、コンテキスト状態が変更されるべきかどうかを判断し、そうである場合、８２８において、マイクロサービスはコンテキスト状態を修正する。１つの実施形態において、マイクロサービスは、マイクロサービスによって行われた処理の結果としてコンテキスト状態が変化したかどうかに少なくとも部分的に基づいて、コンテキスト状態が変更された（変更された形態でステートサービスに返される）かどうかを判断する。そのような判断の例は、パターンスキャンの結果がセキュリティリスクを示す旨の、ＤＰＩサービスによる判断が含まれる。そのような判断の結果としてコンテキスト状態を更新することは、他のマイクロサービスに、その動作を変更させる（コンテキスト状態の変更に応答する）かもしれず、サービス状態を取得するためにそれが費やす努力をさらに削減するかもしれない。例として、（検出された何らかの異常によって）ＤＰＩマイクロサービスによって隔離されるべき通信パスは、コンテキスト状態の一部として、同じ送信元ＩＰ（感染している可能性のあるシステム）からのすべての他の通信は同様に隔離される旨を示す。
【００６９】
８３０において、コンテキストを含む、セキュリティ処理の結果は、次の階層のセキュリティサービスへの出力（さらなるセキュリティサービス要求として）、受信された要求への応答（どのパターンがＤＰＩ処理の一部として一致したかの表示など）、または両方として書き込まれる。マイクロサービスの階層がより高いマイクロサービスは、下位レベルのマイクロサービスに応答するコンテキストを含み得る。
【００７０】
ステートレスマイクロサービスが、コンテキストに厳密に基づいて処理決定を行う場合において、状態ルックアップは回避される。ステートレスマイクロサービスが、コンテキストおよびコンテキスト状態（マイクロサービス処理に関連づけられたサービス状態ではなく）に厳密に基づいて処理決定を行い得る場合には、このサービス状態ルックアップは回避される。階層レベルまたはスケールにかかわらず、マイクロサービスの任意のフェイルオーバは、同じ利益のもとで動作し得る。
【００７１】
図９は、コンテキスト、および、セキュリティサービスアーキテクチャにおける処理の全体にわたってコンテキストに関連づけられたデータの実施形態を示す。受信されたパケット９０２は、インタフェースマイクロサービスによって受信され、いくつかの実施形態において、１または複数のインタフェース９０４、マシンＩＤ９０６、送信元ＩＰアドレス９０８、送信先ＩＰアドレス９１０、送信元ポート９１２、および送信先ポート９１４を含む。インタフェース９０４は、イーサネット（登録商標）ＭＡＣアドレスなどの物理インタフェース、ハイパーバイザによって仮想マシンに提供されたインタフェースなどの仮想インタフェース、または、処理されているパケットに関連づけられた経路の、数字または文字による他の説明であってよい。マシンＩＤ９０６は、ＮＡＴ境界またはファイアウォールに隠れたパケットソースを区別することが可能な、パケット送信のソースの記述であってよい。これらの場合には、送信元ＩＰ９０８は複数のパケットソースによって共有されてよい。これらのフィールド、またはこれらのフィールドのサブセットのルックアップによって、コンテキスト生成が行われる。ルックアップのメカニズムは、一般的なネットワーク、物理または仮想マシン、または接続経路が、例えば、サブネット、ＩＰアドレスの変動、または他の手段を使用してグループ化され得、同じポリシーを使用して処理され得るように構成可能であり得る。
【００７２】
各コンテキストは、状態レコード９２２およびポリシーレコード９２４を有するコンテキストデータ９２０を含む。コンテキスト状態レコード９２２は、任意のマイクロサービスによって変更され得、マイクロサービスによって識別されてコンテキストに属するパケット送信に関連づけられたセキュリティイベントに関連する情報を含み得る。そのようなデータの例は、弱い、または軽視された暗号化プロトコル、ピアツーピアネットワークトラフィック、またはセキュリティサービスを提供する間に識別される他の情報の使用を識別するフラグであるかもしれない。コンテキストポリシーレコード９２４は、セキュリティサービスのその処理においてマイクロサービスに命令するように使用される情報を含む。コンテキストポリシーは、マイクロサービス間の伝送の一部としてコンテキストフィールドとして運ばれ得る最小限のレコードである。コンテキストデータ９２０の他のフィールドもまた送信され得る。
【００７３】
コンテキストデータ９２０は、特定のマイクロサービスのセキュリティイベントの処理に関連する情報を含む、１または複数のコンテキストデータレコード（９２６から９２８）もまた含み得る。コンテキストデータレコードの例は、アウトオブオーダーなパケットを検出するようにＴＣＰ／ＩＰサービスによって利用されるカウンター、特定のネットワークからのｐｉｎｇパケットのカウンター、または、特定のマイクロサービスに関連する他のデータまたは状態を含む。
【００７４】
マイクロサービス間のすべての伝送の一部として、コンテキストポリシーレコード９２４を含むコンテキストを送信することによって、共有のステートサービス上の負荷は非常に低減され得、マイクロサービスのスケーリングはより容易に達成され得る。
【００７５】
前述の明細書において、特定の例示的な実施形態が開示される。しかしながら、様々な修正または変更が、添付の特許請求に説明された発明の、より広範な意図および範囲から逸脱することなく、それら実施形態に対して行われてよいことは、明らかであろう。したがって、本明細書および図面は、限定的な意味ではなく、例示的なものとみなされるべきである。
【００７６】
本明細書に開示されたいくつかの実施形態は、ハードウェア実行ユニットおよび論理回路のコンテキストで、データ処理および分配を含むが、他の実施形態は、機械によって実行されたときに少なくとも１つの実施形態に適合する機能を機械に実行させる、非一時的な機械可読有形媒体に格納されたデータまたはコンピュータ実行可能命令を用いて達成され得る。１つの実施形態において、本開示の実施形態に関連づけられた機能が、コンピュータ実行可能命令において具現化される。コンピュータ実行可能命令は、命令をプログラムされた汎用または専用プロセッサに、少なくとも１つの実施形態の段階を実行させるように使用され得る。本発明の実施形態は、コンピュータ（または他の電子デバイス）をプログラムして、少なくとも１つの実施形態に従う１または複数の動作を実行するように使用され得るコンピュータ実行可能命令が格納された、機械またはコンピュータ可読媒体を含み得るコンピュータプログラム製品またはソフトウェアとして提供され得る。あるいは、本実施形態の段階は、段階を実行するための定められた機能ロジックを含む特定のハードウェアコンポーネントによって、または、プログラムされたコンピュータコンポーネントと定められた機能ハードウェアコンポーネントとの任意の組み合わせによって行われてもよい。
【００７７】
論理をプログラムして少なくとも１つの実施形態を実行するように使用されるコンピュータ実行可能命令は、ＤＲＡＭ、キャッシュ、フラッシュメモリ、または他のストレージなどの、システムにおけるメモリ内に格納され得る。さらに、命令はネットワークを介して、または他のコンピュータ可読媒体を用いて配布され得る。したがって、機械可読媒体は、限定されないが、フロッピー（登録商標）ディスケット、光ディスク、コンパクトディスクリードオンリメモリ（ＣＤ−ＲＯＭ）、および光磁気ディスク、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、消去可能プログラマブルリードオンリメモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブルリードオンリメモリ（ＥＥＰＲＯＭ）、磁気または光カード、フラッシュメモリ、または電気、光、音波または他の形態の伝搬信号（例えば、搬送波、赤外線信号、デジタル信号など）を介したインターネットでの情報の伝送に使用される、有形で機械可読のストレージといった、機械（例えば、コンピュータ）によって可読な形で情報を格納または送信するいずれかのメカニズムが含まれてよい。したがって、非一時的コンピュータ可読媒体は、電子命令または情報を可読な形で機械（例えば、コンピュータ）によって格納または送信するのに適した、任意のタイプの有形の機械可読媒体を含む。
【図１】
2019523507.tif 000004
【図２】
2019523507.tif 000005
【図３】
2019523507.tif 000006
【図４】
2019523507.tif 000007
【図５】
2019523507.tif 000008
【図６】
2019523507.tif 000009
【図７】
2019523507.tif 000010
【図８】
2019523507.tif 000011
【図９】
2019523507.tif 000012
【国際調査報告】
2019523507.tif 000013
2019523507.tif 000014