(57)【要約】  自動パケットレスネットワーク到達可能性分析のための方法、システム、およびコンピュータ可読媒体を開示する。ホストコンピュータを含むネットワークに対して、ネットワーク構成データの分析が行われる。この分析に少なくとも部分的に基づいて、別のコンピュータから到達可能である、ホストコンピュータにある１つ以上のポートが判定される。この分析に少なくとも部分的に基づいて、１つ以上のポートへの１つ以上のルートが判定される。１つ以上のポートおよび１つ以上のルートを記述しているレポートが生成される。【選択図】図１
2021528749.tif 000002
【特許請求の範囲】
【請求項１】
システムであって、
ネットワークセキュリティ評価装置を実装するように構成された１つ以上のコンピューティングデバイスを備え、前記ネットワークセキュリティ評価装置が、
ホストコンピュータを含むネットワークに対して、ネットワーク構成データの１つ以上のクエリを生成することであって、前記１つ以上のクエリがクエリ言語で表され、前記１つ以上のクエリが、少なくとも部分的にルールのセットに基づいて生成される、生成することと、
開いており、かつ前記ネットワークの外側から到達可能である、前記ホストコンピュータにある１つ以上のポートを判定することであって、前記１つ以上のポートが、前記１つ以上のクエリの結果に少なくとも部分的に基づいて判定される、判定することと、
前記１つ以上のポートをリッスンしている１つ以上のプロセスを判定することであって、前記１つ以上のプロセスが、前記ホストコンピュータにインストールされたエージェントを使用して判定される、判定することと、
前記１つ以上のポートおよび前記１つ以上のプロセスを記述したレポートを生成することと、を行うように、構成されている、システム。
【請求項２】
前記ネットワークセキュリティ評価装置が、
前記ネットワークの外側から前記１つ以上のポートへの１つ以上のルートを判定決および報告するようにさらに構成されている、請求項１に記載のシステム。
【請求項３】
前記ネットワークセキュリティ評価装置が、
前記１つ以上のポートを、開いており、かつ前記ネットワークの外側から到達可能であるようにする、１つ以上の構成設定を判定および報告するようにさらに構成されている、請求項１に記載のシステム。
【請求項４】
前記ネットワークセキュリティ評価装置が、
行われる場合、前記ポートのうちの１つ以上を閉じるか、または前記ポートのうちの１つ以上を前記ネットワークの外側から到達不能にする、１つ以上の是正措置を判定および報告するようにさらに構成されている、請求項１に記載のシステム。
【請求項５】
１つ以上のコンピューティングデバイスによって行われるコンピュータ実装方法であって、
コンピューティングデバイスを含むネットワークに対して、ネットワーク構成データの分析を行うことと、
別のコンピューティングデバイスから到達可能である前記コンピューティングデバイスにある１つ以上のポートを判定することであって、前記１つ以上のポートが前記分析に少なくとも部分的に基づいて判定される、判定することと、
前記１つ以上のポートへの１つ以上のルートを判定することであって、前記１つ以上のルートが、少なくとも部分的に前記分析に基づいて判定される、判定することと、
前記１つ以上のポートおよび前記１以上のルートを記述するレポートを生成することと、を含む、コンピュータ実装方法。
【請求項６】
前記１つ以上のポートをリッスンしている１つ以上のプロセスを判定および報告することであって、前記１つ以上のプロセスが、前記コンピューティングデバイスにインストールされたエージェントソフトウェアを使用して判定される、ことをさらに含む、請求項５に記載の方法。
【請求項７】
前記１つ以上のポートを到達可能であるようにする、１つ以上の構成設定を判定および報告することをさらに含む、請求項５に記載の方法。
【請求項８】
行われる場合、前記ポートのうちの１つ以上を到達不能にする、１つ以上の是正措置を判定および報告することをさらに含む、請求項５に記載の方法。
【請求項９】
前記分析が、前記ネットワーク構成データの１つ以上のクエリに少なくとも部分的に基づいて行われ、前記１つ以上のクエリが、クエリ言語で表され、前記１つ以上のクエリが、少なくとも部分的にルールのセットに基づいて生成される、請求項５に記載の方法。
【請求項１０】
前記１つ以上のポートにパケットを送信せずに、前記１つ以上のポートが判定される、請求項５に記載の方法。
【請求項１１】
プログラム命令を格納するコンピュータ可読記憶媒体であって、前記プログラム命令が、
ホストコンピュータを含むネットワークに対して、ネットワーク構成データの分析を行うことと、
開いており、かつ別のコンピュータから到達可能である、前記ホストコンピュータにある１つまたは複数のポートを判定することであって、前記１つ以上のポートが、少なくとも部分的に前記分析の結果に基づいて判定される、判定することと、
前記１つ以上のポートをリッスンしている１つ以上のプロセスを判定することであって、前記１つ以上のプロセスが、前記ホストコンピュータにインストールされたエージェントを使用して判定される、判定することと、
前記１つ以上のポートおよび前記１つ以上のプロセスを記述したレポートを生成することと、を行うようにコンピュータ実行可能である、コンピュータ可読記憶媒体。
【請求項１２】
前記プログラム命令が、
前記１つ以上のポートをリッスンしている１つ以上のプロセスを判定および報告することであって、前記１つ以上のプロセスが、ホストコンピュータにインストールされたエージェントソフトウェアを使用して判定される、判定および報告すること、を行うようにさらにコンピュータ実行可能である、請求項１１に記載のコンピュータ可読記憶媒体。
【請求項１３】
前記プログラム命令が、
前記１つ以上のポートを開いており、かつ到達可能であるようにする、１つ以上の構成設定を判定および報告すること、を行うようにさらにコンピュータ実行可能である、請求項１１に記載のコンピュータ可読記憶媒体。
【請求項１４】
前記プログラム命令が、
行われる場合、前記ポートのうちの１つ以上を閉じるか、または前記ポートのうちの１つ以上を到達不能にする、１つ以上の是正措置を判定および報告すること、を行うように、さらにコンピュータ実行可能である、請求項１１に記載のコンピュータ可読記憶媒体。
【請求項１５】
前記１つ以上のポートが、別のコンピュータから前記１つ以上のポートにパケットを送信することなく判定される、請求項１１に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
多くの企業および他の組織は、コンピューティングシステムが同じ場所に配置されているか（例えば、ローカルネットワークの一部として）、またはその代わりに複数の異なる地理的場所に位置する（例えば、１つ以上の私的なまたは公共の中間ネットワークを介して接続された）状態でなど、多数のコンピューティングシステムを相互接続して、それらの業務をサポートするコンピュータネットワークを運用する。例えば、単一の組織によって、また単一の組織のために運営されるプライベートデータセンタや、顧客にコンピューティングリソースを提供するビジネスとして企業により運営されるパブリックデータセンタなど、かなりの数の相互接続されたコンピューティングシステムを収容するデータセンタが普及している。パブリックデータセンタオペレータの中には、様々な顧客が所有するハードウェアにネットワークアクセス、電力、および安全な設置設備を提供するものもあれば、顧客が使用できるようにされたハードウェアリソースも含む「フルサービス」設備を提供するものもある。
【図面の簡単な説明】
【０００２】
【図１】いくつかの実施形態による、自動パケットレスネットワーク到達可能性分析のためのシステム環境例を示す。
【図２】いくつかの実施形態による、分析を補助するための仮想ネットワーク検証サービスとの相互作用を含む、自動パケットレスネットワーク到達可能性分析のためのシステム環境例のさらなる態様を示す。
【図３】いくつかの実施形態による、分析の対象となるコンピュータ上のエージェントの使用を含む、自動パケットレスネットワーク到達可能性分析のためのシステム環境例のさらなる態様を示す。
【図４】いくつかの実施形態による、是正処置の勧告および／または実施を含む、自動パケットレスネットワーク到達可能性分析のためのシステム環境例のさらなる態様を示す。
【図５】いくつかの実施形態による、自動パケットレスネットワーク到達可能性分析を使用して生成されたレポートの例を示す。
【図６】いくつかの実施形態による、自動パケットレスネットワーク到達可能性分析を使用して、また分析の対象となるコンピュータ上のエージェントを使用して、生成されたレポートの例を示す。
【図７】いくつかの実施形態による、自動パケットレスネットワーク到達可能性分析のための方法を示すフローチャートである。
【図８】いくつかの実施形態による、プロバイダネットワーク環境における仮想ネットワーク検証サービスを示す。
【図９】いくつかの実施形態による、仮想ネットワーク検証サービス例の構成要素および動作を示す。
【図１０】いくつかの実施形態による、仮想ネットワークについての情報をプロバイダネットワークのクライアントに提供するための方法のフローチャートである。
【図１１】いくつかの実施形態による、クライアントが仮想ネットワーク検証サービスに記述情報およびクエリを提供する、プロバイダネットワークのクライアントに仮想ネットワークについての情報を提供するための方法のフローチャートである。
【図１２】いくつかの実施形態による、クライアントが、記述情報、および仮想ネットワークにアクセスするためのパーミッションを仮想ネットワーク検証サービスに提供する、プロバイダネットワークのクライアントに仮想ネットワークについての情報を提供するための方法のフローチャートである。
【図１３】いくつかの実施形態による、２つ以上のピア型仮想ネットワークを含む、プロバイダネットワーク環境におけるクライアントの仮想ネットワーク実装形態を示す。
【図１４】いくつかの実施形態による、プロバイダネットワーク上の仮想ネットワーク例内のサブネットおよびセキュリティグループを示す。
【図１５】いくつかの実施形態で使用され得るコンピューティングデバイス例を示す。
【０００３】
実施形態は、いくつかの実施形態および説明的な図面の例として本明細書に記載されているが、当業者は、実施形態が記載された実施形態または図面に限定されないことを認識するであろう。図面およびその詳細な説明は、実施形態を開示された特定の形態に限定することを意図するものではなく、むしろ、その意図は、添付の特許請求の範囲によって定義される趣旨および範囲に該当する全ての修正形態、均等物、および代替物を包含することが理解されるべきである。本明細書で使用される見出しは、単に編成の便宜上のものであり、本明細書または特許請求の範囲を限定するために使用されることを意図したものではない。本出願全体にわたる使用では、「であり得る（ｍａｙ）」という語は、義務的な意味合い（すなわち、「しなければならない（ｍｕｓｔ）」という意味）ではなく、許容の意味合い（すなわち、「する可能性がある」という意味）で使用される。同様に、「含む（ｉｎｃｌｕｄｅ）」、「含む（ｉｎｃｌｕｄｉｎｇ）」、および「含む（ｉｎｃｌｕｄｅｓ）」という語は、「含むがそれに限定されない」ことを意味する。
【発明を実施するための形態】
【０００４】
自動パケットレスネットワーク到達可能性分析のための方法、システム、およびコンピュータ可読媒体の様々な実施形態について述べる。実施形態によっては、ネットワーク到達可能性分析は、必ずしも従来のポートスキャンを行わないでも、行われる。ポート走査法に対するこれまでの取り組みでは、パケットが、外部エンティティから（例えば、パブリックネットワーク上で）１つ以上のコンピュータ上の様々なポートに送信される可能性があり、応答が待たれる可能性があり、このようなポートスキャンには、数日かかり、過度のネットワーク帯域幅を使用する可能性があった。ポートにパケットを送信せずに、本明細書に記載のネットワーク到達可能性分析では、コンピュータにあるどのポート（もしあれば）が、例えば、パブリックインターネットまたは同じネットワーク上の別のコンピュータに到達可能であるかを判定することができる。ネットワーク到達可能性分析では、外部エンティティからそれらのポートへの１つ以上のルートを判定することもできる。ネットワーク到達可能性分析では、様々なソースからのデータを組み合わせて結論を出すことができる。一実施形態において、ネットワーク到達可能性分析では、コンピュータが属するネットワークに対しネットワーク構成データのセットを問い合わせることができる。一実施形態において、ネットワーク到達可能性分析では、コンピュータにインストールされたエージェントソフトウェアからデータを取得して、例えば、どのプロセスが開ポートをリッスンしているかを判定することができる。ネットワーク到達可能性分析では、その調査結果の側面、例えば、開いており、かつ到達可能なポート、それらのポートへのルート、それらのポートをリッスンしているプロセス、ポートが開いており、かつ到達可能であることに対応している構成設定、開いており、かつ到達可能なポートに付随するセキュリティ上の懸念、セキュリティ上の懸念を改善する是正措置（例えば、構成設定の変更）、および／または他の任意の適切な情報、を記述したレポートを作成することができる。ネットワーク到達可能性分析は、自動化された形で、例えば、スケジュールに従って、またはイベントによってトリガされるのにつれて行われ得、必ずしもエンドユーザによって直接開始されるとは限らない。本明細書に記載の技法を使用すると、従来のポート走査法の時間がかかり、リソース集中型の性質とは対照的に、ネットワークのセキュリティが迅速かつ効率的に分析され得る。
【０００５】
当業者が本開示に照らして理解するように、実施形態は、特定の技術的利点を得ることができる可能性があり、特定の技術的利点には、（１）多くのコンピュータ上の多数のポートにパケットを送信し、応答を待つ必要性をなくすることによって、ネットワーク到達可能性分析の速さを改善すること、（２）多くのコンピュータ上の多数のポートにパケットを送信する必要をなくすことにより、ネットワーク到達可能性分析のネットワーク帯域幅要件を減らすこと、（３）それによりポートに到達することができるルートを見抜く力を提供することにより、ネットワークのセキュリティを向上させること、（４）開いており、かつ到達可能なポートをリッスンしているプロセスを見抜く力を提供することにより、ネットワークのセキュリティを向上させること、（５）ポートが到達可能であることをもたらす構成設定を報告するとともに、セキュリティ上の懸念を改善すると考えられる設定への変更を報告することにより、ネットワークのセキュリティを向上させること、（６）スキャナの場所からの到達可能性のみを確認する従来のポートスキャンよりも完全な見通しを提供することにより、ネットワークのセキュリティを向上させること、などのうちのいくつかまたはすべてが含まれる。
【０００６】
図１は、いくつかの実施形態による、自動パケットレスネットワーク到達可能性分析のためのシステム環境例を示す。実施形態によっては、ネットワークセキュリティ評価装置１００は、ネットワーク上の１つ上のコンピューティングデバイスのセキュリティを分析して、例えば、それらのコンピュータ上のどのポートが開いており、かつ到達可能であるか（もしあれば）を判定することができる。分析の対象となるデバイスは、コンピュータ、ホストコンピュータ、ホスト、サーバ、インスタンス、またはコンピューティングリソースと呼ばれることもある。図１に示されるように、ホスト１７０Ａ〜１７０Ｎなどのコンピューティングデバイスのセットは、プライベートネットワーク１８０内に構成され得る。図示および例の目的で、２つのホスト１７０Ａおよび１７０Ｎが示されているが、任意の適切な個数および構成のホストが、ネットワークセキュリティ評価装置１００によって分析され得る。ホスト１７０Ａ〜１７０Ｎは、それらのハードウェアリソース、ソフトウェアリソース、ネットワーク構成などが同じであっても異なっていてもよい。
【０００７】
ホスト１７０Ａ〜１７０Ｎは、プライベートネットワーク１８０のネットワークリソースを使用して互いに通信するように構成され得る。ホスト１７０Ａ〜１７０Ｎのそれぞれは、ホスト１７０Ａにはポート１７１Ａ、またホスト１７０Ｎにはポート１７１Ｎなど、ネットワークポートを提供することができる。ポート１７１Ａ〜１７１Ｎは、ネットワーク通信のエンドポイントを表し得、ポート番号によって特定され得る。ポートは、ネットワークキングプロトコル、または伝送制御プロトコル（ＴＣＰ：Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）およびユーザデータグラムプロトコル（ＵＤＰ：Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）などのトランスポート層プロトコルによって使用され得る。慣例上、特定のポート番号が特定のサービスに予約されている場合がある。共益サービスを実装するアプリケーションは、予約済みのポート番号を使用して、ポートを「リッスン」し、要求に応じて１対１のサーバークライアントダイアログを確立することにより、クライアントからのサービス要求を受信することができる。例えば、Ｓｉｍｐｌｅ  Ｍａｉｌ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ（ＳＭＴＰ）を実装するアプリケーションは、通常、入ってくる要求があるかＴＣＰポート２５をリッスンし、Ｐｏｓｔ  Ｏｆｆｉｃｅ  Ｐｒｏｔｏｃｏｌ（ＰＯＰ）を実装するアプリケーションは、通常、入ってくる要求があるかＴＣＰ１１０をリッスンする。
【０００８】
プライベートネットワーク１８０は、特定の事業体または他の組織によって所有され、かつ／または運用されているコンピュータを含み得る。一実施形態において、プライベートネットワーク１８０の所有者またはオペレータは、ホスト１７０Ａ〜１７０Ｎが通常アクセスできないか、または外部エンティティ、例えば、パプリックインタ−ネットなどの１つ以上のパブリックネットワーク１９０を介して接続されたコンピュータに対してある程度の分離を有するはずであると予想し得る。しかし、ホスト１７０Ａ〜１７０Ｎ上の１つ以上のポートは、実際には、パブリックネットワーク１９０に到達可能であり得、またセキュリティ上の懸念をもたらす可能性があるように到達可能であり得る。例えば、例えばホスト１７０Ａ〜１７０Ｎから機密データを集めるために、またはホストを制御するために、特定の開ポートをリッスンしている特定のプロセスは、外部エンティティからの悪意のある攻撃に対して脆弱である可能性がある。本明細書に記載の技法を使用すると、ホスト１７０Ａ〜１７０Ｎ上のいずれの到達可能ポートも見付けることができ、場合によっては、セキュリティ上の懸念を解消するために修復することができる。
【０００９】
必ずしもポート１７１Ａ〜１７１Ｎにパケットを送信しなくても、ネットワークセキュリティ評価装置１００は、どのポートが到達可能であるか（もしあれば）を判定することができる。一実施形態において、到達可能性分析では、ポートがパブリックネットワーク１９０を介して到達可能であるかどうかを判定することができる。一実施形態において、到達可能性分析では、ポートがプライベートネットワーク１９０を介して、例えば、ホスト１７０Ａ〜１７０Ｎのうちの別の１つに到達可能であるかどうかを判定することができる。一実施形態において、到達可能性分析では、ホスト上のポートが到達可能性ではないことを確認することができる。特定の１つ以上のホストに対して、分析は、自動化された形で、例えば、スケジュールに従って、またはイベントによってトリガされるのにつれて、行われ得、必ずしもエンドユーザによって直接開始されるとは限らない。例えば、分析は、ホストのネットワーク構成の変更に関連するイベントによってトリガされ得る。イベントは、このような変更を監視するプライベートネットワーク１８０のサービスまたはシステムによって発行され得る。
【００１０】
一実施形態において、ネットワークセキュリティ評価装置１００は、ネットワーク構成データ１１０のセットを使用して、ホスト１７０Ａ〜１７０Ｎのうちの１つ以上に対してネットワーク到達可能性分析を行うことができる。ネットワーク構成データ１１０は、分析下のホストが属するネットワーク（例えば、プライベートネットワーク１８０）に関連する場合がある。ネットワーク構成データは、ホスト１７０Ａ〜１７０Ｎ、およびネットワーキングデバイス（ルータ、スイッチなど）のネットワーク構成またはその他のプロパティのスナップショットを表し得る。例えば、データ１１０は、仮想プライベートクラウド（ＶＰＣ：Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｃｌｏｕｄ）、サブネット、インスタンス、セキュリティグループ、アクセス制御リスト（ＡＣＬ：Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ｌｉｓｔ）、ロードバランサなどに関する情報を含み得る。データ１１０は、例えば仮想ネットワーキングルールのセットに従って、ネットワーク１８０においてネットワーキングがどのように働くかをモデル化するために使用され得る。一実施形態において、ネットワーク構成データ１１０の要素が、プライベートネットワーク１８０のサービスによって提供され得る。例えば、ネットワーク１８０は、仮想計算インスタンスに関するネットワーク構成データを提供する（例えば、ＡＰＩを介して）、コンピューティング仮想化サービスを含み得、ネットワークは、仮想ストレージインスタンスに関するネットワーク構成データを提供する（例えば、ＡＰＩを介して）、様々な類のストレージ仮想化サービスを含み得る。データ１１０は、例えば、ネットワーク１８０に実装され、インスタンスの記述（例えば、計算インスタンスに割り当てられた役割、リソースインスタンスに与えられたまたは与えられていないパーミッション、インスタンスに割り当てられたＩＰアドレスなど）を含み、インスタンス間の関係（例えば、インスタンス間のネットワークにわたるパス）を記述し、また外部エンティティ（例えば、仮想ネットワークの外部のエンティティによってアクセスされ得る計算インスタンス）へのインターフェースまたはアクセスポイントを記述する、ネットワーキングプリミティブのインスタンスを特定し得る。ネットワーク構成データ１１０およびその取得のさらなる態様は、図８〜図１５に関して以下で述べる。
【００１１】
図１に戻ると、一実施形態において、ネットワークセキュリティ評価装置１００は、ネットワーク構成データ１１０を問い合わせることができるクエリ処理コンポーネント１２０を含み得る。ネットワークセキュリティ評価装置１００は、クエリ１２５を生成し、クエリをクエリ処理コンポーネント１２０に提供し、クエリ結果１２６を受信し、その結果の分析を行って、どのポートが到達可能であるか（もしあれば）を判定することができる、クエリ集計・分析コンポーネント１３０も含み得る。クエリ１２５は、クエリ言語に従って表され得る。一実施形態において、クエリ言語は、ネットワークセキュリティ評価装置１００が、制約問題としてネットワークについての再帰クエリを含むクエリを表し、制約ソルバ（例えば、充足可能性モジュロ理論（ＳＭＴ：Ｓａｔｉｓｆｉａｂｉｌｉｔｙ  Ｍｏｄｕｌｏ  Ｔｈｅｏｒｙ）ソルバ）エンジンを使用してクエリを解決することによって、クエリに対する結果を提供することを可能にする、宣言型論理プログラミング言語に相当し得る。クエリの例としては、「ＶＮＶＳ  ｑｕｅｒｙ−ｉ  Ｉｉｓｔ：ｃａｎーｓｓｈ（ＡＢ）」を挙げることができ、これは、インスタンスＡがインスタンスＢにＳＳＨすることができるようなすべてのインスタンス対のリストを提供するよう、仮想ネットワーク検証サービス（ＶＮＶＳ：Ｖｉｒｔｕａｌ  Ｎｅｔｗｏｒｋ  Ｖａｒｉｆｉｃａｔｉｏｎ  Ｓｅｒｖｉｃｅ）に要求する。ネットワークセキュリティ評価装置１００は、分析の必要性に応じて、クエリ１２５を動的にビルドするか、または事前ビルドのクエリを選択することができる。一実施形態において、クエリは、アナライザ１００のエンドユーザ、例えば、彼女または彼の管理下にある１つ以上のホストのネットワークセキュリティを分析しようとするネットワーク管理者によって書かれる必要はない。クエリ１２５のさらなる態様は、図８〜図１５に関して以下に述べる。
【００１２】
図１に戻ると、一実施形態において、ネットワークセキュリティ評価装置１００は、ネットワーク到達可能性に関連するルール１３５のパッケージに従って、働くことができる。一実施形態において、クエリ１２５は、ルール１３５に従って生成され得る。例えば、ルール１３５は、到達可能性について確認される共通サービスに対しポート番号のセットを定義することができ、アナライザ１００は、分析下のホストがそれらのポート番号に到達可能であるかどうかを見極めるためのクエリを生成することができる。クエリ１２５は、分析下の１つ以上のホスト用のネットワークアクセスに影響を与える構成データを取得するために生成され得る。ルールパッケージ１３５は、セキュリティグループ、仮想プライベートクラウド（ＶＰＣ）、サブネット、アクセス制御リスト、エラスティックロードバランサ、インターネットゲートウェイ、ｅｇｒｅｓｓ−ｏｎｌｙインターネットゲートウェイ、ネットワークアドレス変換、ルーティングテーブル、ピア型ＶＰＣ、仮想プライベートネットワーク（ＶＰＮ：Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ）、Ｄｉｒｅｃｔ  Ｃｏｎｎｅｃｔｉｏｎ（ＤＸ）などのネットワーキングコンポーネントを分析することができる。一実施形態において、クエリ結果１２６をルール１３５に従って分析し、例えば、様々なタイプのネットワーキングコンポーネントがどのように働くかの理解を使用して、どのポートが到達可能であるかを判定することができる。
【００１３】
いずれかのポートが到達可能であると見なされる場合、ネットワークセキュリティ評価装置１００は、外部エンティティからそれらのポートへの１つ以上のルートを判定することもできる。一実施形態において、ルートは、ルール１３５に従って、かつ／またはクエリ言語を使用して判定され得る。例えば、１つ以上のクエリを使用して、アナライザ１００は、ホスト間またはホストと外部エンティティとの間にネットワークにわたるパスまたはルート（例えば、リソースからＨＴＴＰＳゲートウェイへのパスであり、それを介して外部エンティティが仮想ネットワーク上のリソースにアクセスすることができる）がある（すなわち、ネットワーク接続性がある）と判断することができる。パスは、エンドポイント間にネットワーク接続性をもたらすネットワークにわたる直接パスであってもよく、あるいはルート上の１つ以上のホップを通過し、エンドポイント間にネットワーク接続性をもたらす推移的なパスであってもよい。ホストのネットワーク到達可能性を見極めるのに、事前定義されたルール１３５のセットを適用することによって、クエリ集計・分析コンポーネント１３０は、手動分析（例えば、ネットワーク管理者による）の当て推量および複雑さを取り除く自動ソリューションを表し得る。
【００１４】
一実施形態において、例えば、クエリ集計・分析コンポーネント１３０は、ルール１３５を使用して、インスタンスがインターネットから、または信頼できる場所の外側からのインターネット制御メッセージプロトコル（ＩＣＭＰ：Ｉｎｔｅｒｎｅｔ  Ｃｏｎｔｒｏｌ  Ｍｅｓｓａｇｅ  Ｐｒｏｔｏｃｏｌ）アクセスを許すかどうかを確認することができる（そのように構成されている場合）。一実施形態において、別の例として、クエリ集計・分析コンポーネント１３０は、ルール１３５を使用して、開いており、かつインターネットからまたは信頼できる場所の外側から到達可能であるＴＣＰ／ＵＤＰポートをインスタンスが有するかどうかを確認することができる（そのように構成されている場合）。ルール１３５は、具体的には、安全性の低いポート、管理ポート、データベースポート、イントラネットポート、および他のタイプのポートを調査することができる。一実施形態において、クエリ集計・分析コンポーネント１３０は、ルール１３５を使用して、インスタンスが任意のポートのどこからもアクセスできないようになっているかどうかを確認することができる。一実施形態において、クエリ集計・分析コンポーネント１３０は、ルール１３５を使用して、サブネットが、セキュリティグループごとに、信頼できる場所の外側からのＩＣＭＰまたはＴＣＰ／ＵＤＰポートアクセスを許すかどうかを確認することができる。一実施形態において、クエリ集計・分析コンポーネント１３０は、ルール１３５を使用して、サブネットにどこからもアクセスすることができないインスタンスがあるかどうか、すべてのインバウンドトラフィックが阻止されているかどうか、またはエラスティックネットワークインターフェース（ＥＮＩ：Ｅｌａｓｔｉｃ  Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ）がないかどうかを確認することができる。
【００１５】
一実施形態において、いずれの到達可能ポートも、従来のポートスキャンを行うことなく、評価装置１００によって見付けられ得る。一実施形態において、評価装置１００は、例えば、影響を受けたポートに対してのみ、限られた範囲のポートスキャンを行うことによって、パケットレス調査結果を確認することができる。例えば、ＴＣＰポート２２がホスト１７０Ａ上で到達可能であることが分かった場合、ネットワークセキュリティ評価装置１００は、外部エンティティ（例えば、パブリックネットワーク１９０を介してホスト１７０Ａに接続された別のサーバ）に、１つ以上のパケットをホスト１７０Ａ上のＴＣＰポート２２に送信させ、ホストからの応答を待たせ、アナライザへ報告させることができる。このような応答が受信されない場合、ネットワークセキュリティ評価装置１００は、ポートが実際には到達可能ではないと判断することができる。例えば、ポートがファイアウォールによって保護されている可能性がある。応答が受信された場合、ネットワークセキュリティ評価装置１００は、ポートが開いており、かつ到達可能であることを確認することができる。このようなポートスキャンを、すでに到達可能であると推定されているポートに制限することにより、ネットワークセキュリティ評価装置１００は、フルポートスキャンに必要な時間およびネットワーク帯域幅を大幅に縮小することができる。
【００１６】
ネットワークセキュリティ評価装置１００は、分析下のホスト１７０Ａ〜１７０Ｎのうちの１つ以上に対して、ネットワーク到達可能性および／またはネットワークセキュリティに関する調査結果を生成することができる。図３に関して以下に述べるように、ネットワークセキュリティ評価装置１００は、様々なソースからのデータ（場合によっては、エージェントによって収集されたオンホストデータを含む）を組み合わせて、このような調査結果を生成することができる。図１に戻ると、報告コンポーネント１４０を使用して、ネットワークセキュリティ評価装置１００は、その調査結果の側面を記述したレポートを作成することができる。一実施形態において、報告コンポーネント１４０は、特定のホストにとって到達可能である１つ以上のポート１４１を示すか、または記述することができる。一実施形態において、報告コンポーネント１４０は、特定のホストにとって到達できない１つ以上のポート１４１を示すか、または記述することができる。一実施形態において、報告コンポーネント１４０は、到達可能であるポートへの１つ以上のルート１４２を示すか、または記述することができる。一実施形態において、報告コンポーネント１４０は、その代わりに、特定のホストにとって到達可能なポートがないことを開示することができる。このような報告の一例が、図５に関して述べられている。
【００１７】
一実施形態において、ホワイトリストは、信頼できる場所を示すことができ、信頼できる場所から到達可能であることが判明した場合、特定のポートまたはポートの範囲が報告１４０から除外され得る。様々な実施形態において、業界標準の知識、顧客入力、複数の顧客に基づく機械学習、および／または他の適切なソースなど、様々なデータソースを使用してホワイトリストを生成することができる。ホワイトリストの内容は、顧客によって異なる可能性がある。ホワイトリストの内容は、時間の経過とともに変わる可能性がある。
【００１８】
図１に戻ると、報告コンポーネント１４０は、任意の適切な方法で調査結果を提示することができる。一実施形態において、報告コンポーネント１４０は、例えば、ネットワーク管理者に、グラフィカルユーザインターフェース（ＧＵＩ：Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）で調査結果を提示することができる。一実施形態において、ＧＵＩは、例えば、図４に関して以下に述べるように、調査結果に関連するユーザ入力を受信することができるような相互作用部分を含み得る。図１に戻ると、一実施形態において、報告コンポーネント１４０は、調査結果をファイルまたは他のデータオブジェクトに永続的に格納することができ、ファイルまたはデータオブジェクトは、ネットワーク管理者または他の適切なエンティティによって読み取られ得る。一実施形態において、報告コンポーネント１４０は、電子メールまたは別のメッセージングシステムを使用して、例えば、ネットワーク管理者によってアクセス可能なアカウントに調査結果を送信することができる。
【００１９】
ネットワークセキュリティ評価装置１００およびホスト１７０Ａ〜１７０Ｎは、任意の適切な個数および構成のコンピューティングデバイスを使用して実装され得、コンピューティングデバイスのいずれも、図１５に示されるコンピューティングデバイス例１５００によって実装され得る。コンピューティングデバイスは、任意の適切な個数のデータセンタまたは地理的な場所に位置し得る。様々な実施形態において、ネットワークセキュリティ評価装置１００の機能性の少なくともいくつかは、同じコンピューティングデバイスによって、または様々なコンピューティングデバイスによって提供され得る。ネットワークセキュリティ評価装置１００の構成要素のいずれかが様々なコンピューティングデバイスを使用して実装される場合、構成要素およびそれらのそれぞれのコンピューティングデバイスは、例えば、１つ以上のネットワークを介して通信可能に結合され得る。ネットワークセキュリティ評価装置１００の構成要素のそれぞれは、以下に述べるように、それらのそれぞれの機能を果たすために使用可能なソフトウェアとハードウェアとの任意の組み合わせに相当し得る。ネットワークセキュリティ評価装置１００によって実施される動作は、例えば、初期構成段階後のユーザ開始またはユーザ介入を必要とせずに、またプログラムに従って、例えば、少なくとも１つのコンピューティングデバイス上でプログラム命令を実行することによって自動的に行われ得る。脅威モデラネットワークセキュリティ評価装置１００およびネットワーク１８０が図示されていない構成要素をさらに含んでもよく、図示よりも構成要素を少なく含んでもよく、または図示とは異なる組み合わせ、構成もしくは個数の構成要素を含んでもよいことが、考えられている。
【００２０】
ネットワークセキュリティ評価装置１００は、サービス指向アーキテクチャに従って複数のサービスが協働する、サービス指向システムに実装され得る。このような環境では、ネットワークセキュリティ評価装置１００は、その機能性をサービスとして複数のクライアントに提供することができる。サービスは、１つ以上のネットワーク全体にわたって分散されている複数の異なるインスタンスを使用して実装され得、各インスタンスは、対応するサービスの機能性へのアクセスを様々なクライアントに提供することができる。任意の適切な個数および構成のクライアントが、ネットワークセキュリティ評価装置１００と相互作用し得ることが、考えられている。クライアントがその機能性を呼び出すことを可能にするために、ネットワークセキュリティ評価装置１００は、１つ以上のＡＰＩもしくは他のプログラマチックインターフェースおよび／またはグラフィカルユーザインターフェース（ＧＵＩ）などの任意の適切なインターフェースを公開することができる。一実施形態において、ネットワークセキュリティ評価装置１００の機能性は、料金と引き換えにクライアントに提供され得る。
【００２１】
ネットワークセキュリティ評価装置１００は、１つ以上のネットワークを介して、ホスト１７０Ａ〜１７０Ｎ、サービスクライアント、他のサービス、または他のエンティティに結合され得る。様々な実施形態において、ネットワーク１９０は、ネットワークセキュリティ評価装置１００とホスト１７０Ａ〜１７０Ｎとの間にネットワークベースの通信を確立するのに必要なネットワーキングハードウェアおよびプロトコルの任意の適切な組み合わせを包含し得る。例えば、ネットワークは、通常、インターネットを集合的に実装する様々な電気通信ネットワークおよびサービスプロバイダを包含し得る。ネットワークは、ローカルエリアネットワーク（ＬＡＮ：Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）または広域ネットワーク（ＷＡＮ：Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などのプライベートネットワーク、およびパブリックまたはプライベート無線ネットワークも含み得る。例えば、ネットワークセキュリティ評価装置１００およびホスト１７０Ａ〜１７０Ｎの両方は、それら自身の内部ネットワークを有する企業内にそれぞれ備えられ得る。このような実施形態では、ネットワークは、ネットワークセキュリティ評価装置１００とインターネットとの間に、またインターネットとホスト１７０Ａ〜１７０Ｎとの間にネットワーキングリンクを確立するのに必要な、ハードウェア（例えば、モデム、ルータ、スイッチ、ロードバランサ、プロキシサーバなど）およびソフトウェア（例えば、プロトコルスタック、会計ソフトウェア、ファイアウォール／セキュリティソフトウェアなど）を含み得る。実施形態によっては、ネットワークセキュリティ評価装置１００が、パブリックインターネットではなくプライベートネットワークを使用してホスト１７０Ａ〜１７０Ｎと通信することができることに留意する。
【００２２】
実施形態によっては、ネットワークセキュリティ評価装置１００および／またはホスト１７０Ａ〜１７０Ｎの態様は、プロバイダネットワークのコンピューティングリソースを使用して実装され得る。プロバイダネットワークは、インターネットおよび／または他のネットワークを介してアクセス可能な１つ以上のサービス（様々なタイプのネットワークアクセス可能なコンピューティングまたは記憶域など）を分散型クライアントセットに提供するために、企業または公共部門の組織などのエンティティによって立ち上げられたネットワークに相当し得る。プロバイダネットワークは、プロバイダによって提供されるインフラストラクチャおよびサービスを実装し、分散させるのに使用される、物理コンピュータサーバおよび／または仮想化コンピュータサーバ、記憶デバイス、ネットワーキング機器などの集合体など、様々なリソースプールをホストする多数のデータセンタを含み得る。計算リソースは、実施形態によっては、仮想計算インスタンスまたは物理計算インスタンスなどの「インスタンス」と呼ばれる単位でクライアントに提供され得る。仮想計算インスタンスは、例えば、指定の計算能力（ＣＰＵのタイプと個数、メインメモリサイズなどを示すことによって指定され得る）および指定のソフトウェアスタック（例えば、次にはハイパーバイザ上で実行され得る、特定のバージョンのオペレーティングシステム）を有する１つ以上のサーバを含み得る。汎用または特殊目的のコンピュータサーバ、記憶デバイス、ネットワークデバイスなどを含む、いくつかの異なるタイプのコンピューティングデバイスを単独でまたは組み合わせて使用して、様々な実施形態でプロバイダネットワークのリソースを実装することができる。プロバイダネットワークのリソースが同時に複数のクライアント（またはテナント）の制御下にあり得るため、プロバイダネットワークは、マルチテナンシーを提供すると言われることがあり、マルチテナントプロバイダネットワークと呼ばれることもある。
【００２３】
実施形態によっては、プロバイダネットワークのオペレータは、それらのクライアントのために、リソース予約、制御、およびアクセスのインターフェースの柔軟なセットを実装することができる。例えば、リソースマネージャは、クライアント（場合によっては、プロバイダネットワーク内の他のコンポーネントを含む）が、プロバイダネットワークによって提供される計算インスタンスについて知り、それを選択し、それへのアクセスを購入し、かつ／またはそれを予約することを可能にする、プログラムに基づくリソース予約インターフェースを実装し得る（例えば、Ｗｅｂサイトまたは一連のＷｅｂページを介して）。このようなインターフェースは、リソースカタログの閲覧を可能にし、サポートされるリソースの様々なタイプまたはサイズ、サポートされる様々な予約タイプまたはモード、価格設定モデルなどの詳細および仕様を提供する能力を含み得る。
【００２４】
図２は、いくつかの実施形態による、分析を補助するための仮想ネットワーク検証サービスとの相互作用を含む、自動パケットレスネットワーク到達可能性分析のためのシステム環境例のさらなる態様を示す。一実施形態において、ネットワーク構成データ１１０が、仮想ネットワーク検証サービス２３０によって取得、維持され得る。仮想ネットワーク検証サービス２３０はまた、クエリ１２５を受信し、ネットワーク構成データ１１０を使用してクエリに答え、クエリ結果１２６で応答することができるクエリ処理コンポーネント１２０を含み得る。仮想ネットワーク検証サービス２３０は、そのサービスを、ネットワークセキュリティ評価装置１００を含む１つ以上のクライアントに提供することができる。仮想ネットワーク検証サービスのさらなる態様は、図８〜図１４に関して以下に述べられる。
【００２５】
図３は、いくつかの実施形態による、分析の対象となるコンピュータ上のエージェントの使用を含む、自動パケットレスネットワーク到達可能性分析用のシステム環境例のさらなる態様を示す。一実施形態において、ネットワークセキュリティ評価装置１００は、様々なソースからのデータを組み合わせて結論を出すことができる。一実施形態において、ネットワークセキュリティ評価装置１００は、例えば、どのプロセスがポートをリッスンしているかを判定するために、コンピュータにインストールされたエージェントソフトウェアからデータを取得することができる。プロセスがポートをリッスンしている場合、ポートは「開いている」と見なされ得る。プロセスは、サービス、アプリケーション、サービスデーモン、およびその他の形態の実行可能プログラムコードを含み得る。図３の例に示されるように、エージェント１７５Ａがホスト１７０Ａにインストールされ得、エージェント１７５Ｎがホスト１７０Ｎにインストールされ得る、などである。また図３の例に示されるように、プロセス１７６Ａは、ホスト１７０Ａ上に常駐し得（また、ポート１７１Ａをリッスンしている可能性がある）、プロセス１７６Ｎは、ホスト１７０Ｎ上に常駐し得（また、ポート１７１Ｎをリッスンしている可能性がある）。実施形態によっては、エージェント１７５Ａ〜１７５Ｎは、例えば、ホスト１７０Ａ〜１７０Ｎが同じまたは異なる構成のハードウェアおよびオペレーティングシステムソフトウェアに相当する場合、同じバイナリファイルまたは異なるバイナリファイルに相当し得る。
【００２６】
エージェント１７５Ａ〜１７５Ｎは、ホスト１７０Ａ〜１７０Ｎの構成を見抜く力を集めることができる可能性がある。一実施形態において、エージェント１７５Ａ〜１７５Ｎは、例えば、いつポートが開かれ、どのプロセスがそのポートに関連しているかを判定するために、対応するホストの動作を監視することができる。一実施形態において、エージェント１７５Ａ〜１７５Ｎは、例えば、どのポートが開いているか、かつ／またはどのプロセス１７６Ａ〜１７６Ｎがポートをリッスンしているかについて問い合わせるために、対応するホストのオペレーティングシステムと相互作用することができる。一実施形態において、エージェント１７５Ａ〜１７５Ｎは、ネットワーク到達可能性アナライザが、アナライザが到達可能であると既に見なした特定のポートをリッスンしているプロセスを見つけるようにエージェントに命令し得るような、ネットワークセキュリティ評価装置１００の制御下にあり得る。エージェント１７５Ａ〜１７５Ｎは、それらの調査結果をクエリ集計・分析コンポーネント１３０に報告するように構成され得る。
【００２７】
一実施形態において、エージェント１７５Ａ〜１７５Ｎから中継された情報に基づいて、クエリ集計・分析コンポーネント１３０は、ルール１３５を使用して、プロセスが異例のポート番号のポートを開いたかどうかを確認することができる。一実施形態において、エージェント１７５Ａ〜１７５Ｎから中継された情報に基づいて、クエリ集計・分析コンポーネント１３０は、ルール１３５を使用して、インスタンスに、どこからも到達できない開ポートがあるかどうかを確認することができる。どのプロセスがどのポートをリッスンしているかの知識など、エージェント１７５Ａ〜１７５Ｎによって集められたデータの分析を使用して、報告コンポーネント１４０は、開いており、かつ到達可能なポート１４１をリッスンしているプロセス１４３を示すか、または記述したレポートを作成することができる。一実施形態において、報告コンポーネント１４０は、普通ではないまたは予期せぬポートを使用しており、したがってセキュリティの脅威をもたらす可能性があるプロセスを示すか、または記述することができる。
【００２８】
図４は、いくつかの実施形態による、是正措置の勧告および／または実施を含む、自動パケットレスネットワーク到達可能性分析用のシステム環境例のさらなる態様を示す。一実施形態において、クエリ集計・分析１３０は、ポートが到達可能である理由を判定することができる。例えば、１つ以上の構成設定が到達可能なポートの原因である可能性がある。１つ以上のソースから集められたデータ（例えば、ネットワーク構成データ１１０およびエージェント１７５Ａ〜１７５Ｎ）にルール１３５を適用することによって、ネットワーク構成アナライザは、ポートが到達可能であることに関与している１つ以上の構成設定を判定することができる。それにより、報告コンポーネント１４０は、このような調査結果を報告することができる。
【００２９】
一実施形態において、ネットワークセキュリティ評価装置１００はまた、取られた場合、到達可能なポートに付随するセキュリティ上の懸念を解消または修正することが期待され得る、是正措置１４４を勧告することができる。例えば、特定のセキュリティグループにおけるホストのメンバーシップに起因してポートが到達可能である場合、勧告には、外部コンピュータがポートにアクセスできないように、そのセキュリティグループの構成設定を変更することが含まれ得る。一実施形態において、このような是正措置１４４は、報告コンポーネント１４０によって示されるか、または記述され得る。一実施形態において、是正措置は、ユーザによって選択された場合に問題を自動的に是正するインターフェース要素を備えたＧＵＩに提示され得る。例えば、報告コンポーネント１４０は、勧告された修正を記述し、ユーザによって押された場合に適切な構成設定への変更を実施するボタン（または他のＧＵＩ要素）を含む、画面をユーザインターフェースに生成することができる。
【００３０】
図５は、いくつかの実施形態による、自動パケットレスネットワーク到達可能性分析を使用して生成されたレポートの例を示す。ネットワークセキュリティ評価装置１００は、その調査結果の側面、例えば、到達可能なポート、それらのポートへのルート、それらのポートをリッスンしているプロセス、ポートが到達可能であることに関与している構成設定、到達可能ポートに付随するセキュリティ上の懸念、セキュリティ上の懸念を改善し得る是正措置（例えば、構成設定を変更する）、および／または任意のその他の適切な情報を記述したレポートを作成することができる。図５は、特定のホスト（インスタンスＩＤで言われる）およびそのホスト上の特定のポートについてのネットワーク到達可能性レポート５００の例を示す。レポート５００には、例えば、分析下のインスタンスのインスタンスＩＤ、影響を受けるＴＣＰポート番号、および通常そのポートに関連しているサービスを示す高レベルの調査結果５１０が含まれ得る。この例では、ＴＣＰポート番号は、２２であり、通常は、セキュアシェル（ＳＳＨ：Ｓｅｃｕｒｅ  ＳＨｅｌｌ）の目的で使用される。レポート５００には、問題の重大度５２０（例えば、高、中、または低）の表示も含まれ得る。レポート５００には、調査結果のより詳細な記述５３０が含まれ得る。図５の例に示されるように、記述５３０は、ポートがパブリックインターネットから、この場合、特定のインターネットゲートウェイを介して到達可能であるルートを示し得る。一実施形態において、記述５３０は、例えば、セキュリティグループ、アクセス制御リスト、ルーティングテーブル、インターネットゲートウェイなどの構成に起因して、アクセスが許される理由を示し得る。記述５３０は、インスタンスが属する特定の仮想プライベートクラウド（ＶＰＣ）、インスタンス用のネットワークインターフェースのＩＤ、インスタンス用のセキュリティグループのＩＤなども示し得る。さらに、記述５３０には、ポートが到達可能であることによって引き起こされる、あり得るセキュリティ問題を記述することができる。最後に、レポート５００には、セキュリティ上の懸念を改善するための是正措置の勧告５４０が含まれ得る。この例では、勧告は、セキュリティグループを編集して、パブリックインターネット経由でこの特定のポートへのアクセスを取り除くことである。図４に関して上で述べたように、一実施形態において、レポート５００は、ユーザ入力によって有効にされた場合に、勧告５４０を自動的に実施するユーザインターフェース要素を含み得る。一実施形態では、レポート５００は、分析対象のネットワークトポロジーを示す視覚化を含み得る。視覚化には、強調表示された調査結果、脅威重大度の色分け、およびユーザ相互作用が含まれ得る。
【００３１】
図６は、いくつかの実施形態による、自動パケットレスネットワーク到達可能性分析を使用して、また分析の対象となるコンピュータ上のエージェントを使用して生成されたレポートの例を示す。一実施形態において、上で述べたレポート５００は、分析下のホスト上のエージェントを使用せずに生成され得る。図６の例に示されるように、このようなエージェントの使用は、より詳細な到達可能性レポート６００を可能にし得る。上で述べたように、レポート６００には、高レベルの調査結果６１０、重大度６２０の表示、詳細な記述６３０、および問題を是正するための勧告６４０が含まれ得る。エージェントによって集められたデータを信頼することにより、レポート６００は、開いており、かつ到達可能なポートをリッスンしている特定のプロセスを示すことができる。この例では、プロセスは、ＳＳＨデーモン「ｓｓｈｄ」である。レポート６００は、ｓｓｈｄプロセスに対応する特定のバイナリファイルのパスも示すことができる。このようなプロセス情報をネットワーク到達可能性レポートに追加することにより、セキュリティ問題の診断および是正を助けることができる。
【００３２】
図７は、いくつかの実施形態による、自動パケットレスネットワーク到達可能性分析のための方法を示すフローチャートである。７１０に示されるように、ネットワーク構成データの自動分析が行われ得る。ネットワーク構成データは、ホストコンピュータと、場合によっては、他のコンピュータおよびネットワーキングデバイス（ルータ、スイッチなど）を含む他のデバイスと、を有するネットワーク（プライベートネットワークなど）に関係している可能性がある。一実施形態において、分析は、１つ以上のクエリを使用してネットワーク構成データを問い合わせることを含み得る。クエリは、クエリ言語に従って表され得る。ネットワーク到達可能性分析では、分析の必要性に応じて、クエリを動的にビルドするか、または、事前ビルド済みのクエリを選択することができる。一実施形態において、クエリは、アナライザ１００のエンドユーザ、例えば、彼女または彼の管理下にある１つ以上のホストのネットワークセキュリティを分析しようとするネットワーク管理者によって書かれる必要はない。
【００３３】
７２０に示されるように、分析に基づいて、この方法は、別のコンピュータから到達可能であるホストコンピュータにある１つ以上のポートを判定することができる。到達可能性は、パブリックインターネットを介するか、またはホストが属するプライベートネットワークを介してであり得る。分析に基づいて、この方法はまた、それによりポートが到達可能である１つ以上のルートを判定することができる。例えば、ルートは、コンポーネントが、インターネットゲートウェイを介してインターネットから、インターネットゲートウェイを介して仮想プライベートネットワーク（ＶＰＮ）から、ピア型仮想プライベートクラウド（ＶＰＣ）から、など、到達可能であることを示し得る。
【００３４】
７３０に示されるように、この方法は、エージェントが分析下のホストコンピュータにインストールされているかどうかを判定することができる。エージェントは、例えば、開ポートをリッスンしているプロセスを判定するために、ホストコンピュータの動作の局面を監視するように構成され得る。エージェントが存在しない場合、７４０に示されるように、この方法は、到達可能ポート、およびそれによってポートが到達可能になるルートを示すかまたは記述したレポートを生成することができる。一実施形態において、レポートには、セキュリティグループまたはアクセス制御リスト（ＡＣＬ）に関係している１つ以上の構成設定など、ポートが到達可能である理由を示すか、または記述することもできる。一実施形態において、レポートにはまた、１つ以上の構成設定の変更などの是正措置の１つ以上の勧告を示すかまたは記述することができる。
【００３５】
エージェントが存在する場合、７５０に示されるように、この方法は、エージェントによって提供されたデータを使用して、ポートをリッスンしているプロセスを判定することができる。７６０に示されるように、この方法は、開いており、かつ到達可能なポート、それによりポートが到達可能になるルート、およびポートをリッスンしているプロセスを示すかまたは記述したレポートを生成することができる。一実施形態において、レポートにはまた、１つ以上の構成設定など、ポートが開いており、かつ到達可能である理由を示すかまたは記述することができる。一実施形態において、レポートにはまた、１つ以上の構成設定の変更などの是正措置の１つ以上の勧告を示すかまたは記述することができる。
【００３６】
ネットワーク到達可能性の例示的なルール
上で述べたように、ネットワークセキュリティ評価装置１００は、ネットワーク到達可能性に伴うルール１３５のパッケージに従って働くことができる。このようなルールの例を以下に述べるが、以下のルールのリストは、網羅的であることを意図したものではない。ネットワークセキュリティ評価装置１００は、以下のルールの一部のみを実装することができ、かつ／またはコンピューティングデバイスの到達可能性を評価するために追加のルールを実装することができる。
【００３７】
一実施形態において、第１のルールは、エージェントを用いてインスタンスを分析して、信頼できる場所の外側のどこかからのアクセスを許されたポートをリッスンしている安全性の低いプロトコルをインスタンスが有するかどうかを判定することができる。この調査結果の重大度は、高である。この調査結果は、ポート番号、そのポートのＴＣＰまたはＵＤＰ関連付け、そのポートをリッスンしているアプリケーション（およびバージョン）、そのポートに到達することができるアドレス範囲、またアクセスを許可するセキュリティグループ、アクセス制御リスト、インターネットゲートウェイ、仮想ゲートウェイ、およびその他のチャネルとともに、報告され得る。第１のルールでは、是正措置の勧告には、アクセス制御構成を編集してアクセスを制限すること（信頼できる場所の外側からのアクセスが必要ない場合）、およびアプリケーションを停止すること（作業に必要ない場合）が含まれ得る。
【００３８】
一実施形態において、第２のルールは、エージェントを用いてインスタンスを分析して、信頼できる場所の外側のどこかからアクセス可能であるポートをリッスンしているＳＨＳサーバをインスタンスが有するかどうかを判定することができる。この調査結果の重大度は、中である。この調査結果は、ポート番号、そのポートのＴＣＰまたはＵＤＰ関連付け、そのポートをリッスンしているアプリケーション（およびバージョン）、そのポートに到達することができるアドレス範囲、またアクセスを許可するセキュリティグループ、アクセス制御リスト、インターネットゲートウェイ、仮想ゲートウェイ、およびその他のチャネルとともに、報告され得る。第１のルールでは、修正措置の勧告には、アクセス制御構成を編集してアクセスを制限すること（信頼できる場所の外側からのアクセスが必要ない場合）、およびアプリケーションを停止すること（作業に必要ない場合）が含まれ得る。
【００３９】
一実施形態において、第３のルールは、エージェントを用いてインスタンスを分析して、信頼できる場所の外側のどこかからアクセス可能であるポートをリッスンしているＲＤＰサーバーをインスタンスが有するかどうかを判定することができる。この調査結果の重大度は、中である。この調査結果は、ポート番号、そのポートのＴＣＰまたはＵＤＰ関連付け、そのポートをリッスンしているアプリケーション（およびバージョン）、そのポートに到達することができるアドレス範囲、またアクセスを許可するセキュリティグループ、アクセス制御リスト、インターネットゲートウェイ、仮想ゲートウェイ、およびその他のチャネルとともに、報告され得る。第３のルールでは、是正措置の勧告には、アクセス制御構成を編集してアクセスを制限すること（信頼できる場所の外側からのアクセスが必要ない場合）、およびアプリケーションを停止すること（作業に必要ない場合）が含まれ得る。
【００４０】
一実施形態において、第４のルールは、エージェントを用いてインスタンスを分析して、信頼できる場所の外側のどこかからアクセス可能であるポートをリッスンしているデータベースサーバをインスタンスが有するかどうかを判定することができる。この調査結果の重大度は、中である。この調査結果は、ポート番号、そのポートのＴＣＰまたはＵＤＰ関連付け、そのポートをリッスンしているアプリケーション（およびバージョン）、そのポートに到達することができるアドレス範囲、またアクセスを許可するセキュリティグループ、アクセス制御リスト、インターネットゲートウェイ、仮想ゲートウェイ、およびその他のチャネルとともに、報告され得る。第４のルールでは、是正措置の勧告には、アクセス制御構成を編集してアクセスを制限すること（信頼できる場所の外側からのアクセスが必要ない場合）、およびアプリケーションを停止すること（作業に必要ない場合）が含まれ得る。
【００４１】
一実施形態において、第５のルールは、エージェントを用いてインスタンスを分析して、信頼できる場所の外側のどこかからアクセス可能であるポートをリッスンしているイントラネットサービスをインスタンスが有するかどうかを判定することができる。この調査結果の重大度は、中である。この調査結果は、ポート番号、そのポートのＴＣＰまたはＵＤＰ関連付け、そのポートをリッスンしているアプリケーション（およびバージョン）、そのポートに到達することができるアドレス範囲、またアクセスを許可するセキュリティグループ、アクセス制御リスト、インターネットゲートウェイ、仮想ゲートウェイ、およびその他のチャネルとともに、報告され得る。第５のルールでは、是正措置の勧告には、アクセス制御構成を編集してアクセスを制限すること（信頼できる場所の外側のアクセスが必要ない場合）、およびアプリケーションを停止すること（作業に必要ない場合）が含まれ得る。
【００４２】
一実施形態において、第６のルールは、エージェントを用いてインスタンスを分析して、インスタンスが、信頼できる場所の外側のどこかからのアクセスが許されているポートへの接続が開いているかどうかを判定することができる。この調査結果の重要度は、低である。この調査結果は、ポート番号、そのポートのＴＣＰまたはＵＤＰ関連付け、そのポートをリッスンしているアプリケーション（およびバージョン）、そのポートに到達することができるアドレス範囲、またアクセスを許可するセキュリティグループ、アクセス制御リスト、インターネットゲートウェイ、仮想ゲートウェイ、およびその他のチャネルとともに、報告され得る。第６のルールでは、是正措置の勧告には、アクセス制御構成を編集してアクセスを制限すること（信頼できる場所の外側からのアクセスが必要ない場合）、およびアプリケーションを停止すること（作業に必要ない場合）が含まれ得る。
【００４３】
一実施形態において、第７のルールは、エージェントを用いてインスタンスを分析して、インスタンスが、異例のポートで接続を開くアプリケーションを有するかどうかを判定することができる。この調査結果の重大度は、低であり、特定の脅威ではなく情報提供と見なされ得る。この調査結果は、ポート番号、そのポートのＴＣＰまたはＵＤＰ関連付け、そのポートをリッスンしているアプリケーション（およびバージョン）、そのポートに到達することができるアドレス範囲、またアクセスを許可するセキュリティグループ、アクセス制御リスト、インターネットゲートウェイ、仮想ゲートウェイ、およびその他のチャネルとともに、報告され得る。第７のルールでは、是正措置の勧告には、アプリケーションが期待通りに挙動しているかどうかを確認することが含まれ得る。
【００４４】
一実施形態において、第８のルールは、エージェントなしでインスタンスを分析して、インスタンスが、信頼できる場所の外側のどこかからのＩＣＭＰアクセスを許可するかどうかを判定することができる。この調査結果の重大度は、中である。この調査結果は、そのポートに到達することができるアドレス範囲、またアクセスを許可するセキュリティグループ、アクセス制御リスト、インターネットゲートウェイ、仮想ゲートウェイ、およびその他のチャネルとともに、報告され得る。第８のルールでは、是正措置の勧告には、アクセス制御構成を編集してアクセスを制限することが含まれ得る（信頼できる場所の外側のアクセスが必要ない場合）。
【００４５】
一実施形態において、第９のルールは、エージェントを用いずにインスタンスを分析して、インスタンスが、信頼できる場所の外側のどこかからの通常は安全性の低いポート（例えば、ポート２０、２１、２３など）へのアクセスを許可するかどうかを判定することができる。この調査結果の重大度は、中である。この調査結果は、ポート番号、ポートのＴＣＰまたはＵＤＰ関連付け、通常そのポートを使用するアプリケーション、そのポートに到達することができるアドレス範囲、またアクセスを許可するセキュリティグループ、アクセス制御リスト、インターネットゲートウェイ、仮想ゲートウェイ、およびその他のチャネルとともに、報告され得る。第９のルールでは、是正措置の勧告には、アクセス制御構成を編集してアクセスを制限することが含まれ得る（信頼できる場所の外側のアクセスが必要ない場合）。
【００４６】
一実施形態において、第１０のルールは、エージェントを用いずインスタンスを分析して、インスタンスが、信頼できる場所の外側のどこかからの管理ポート番号２２（通常、ＳＳＨに使用される）へのアクセスを許可するかどうかを判定することができる。この調査結果の重大度は、中である。この調査結果は、ポート番号、ポートのＴＣＰまたはＵＤＰ関連付け、通常そのポートを使用するアプリケーション、そのポートに到達することができるアドレス範囲、またアクセスを許可するセキュリティグループ、アクセス制御リスト、インターネットゲートウェイ、仮想ゲートウェイ、およびその他のチャネルとともに、報告され得る。第１０のルールでは、是正措置の勧告には、アクセス制御構成を編集してアクセスを制限することが含まれ得る（信頼できる管理場所の外側からの管理者アクセスが必要ない場合）。
【００４７】
一実施形態において、第１１のルールは、エージェントを用いずインスタンスを分析して、インスタンスが、信頼できる場所の外側のどこかからの管理ポート番号３３８９（通常、ＲＤＰに使用される）へのアクセスを許可するかどうかを判定することができる。この調査結果の重大度は、中である。この調査結果は、ポート番号、ポートのＴＣＰまたはＵＤＰ関連付け、通常そのポートを使用するアプリケーション、そのポートに到達することができるアドレス範囲、またアクセスを許可するセキュリティグループ、アクセス制御リスト、インターネットゲートウェイ、仮想ゲートウェイ、およびその他のチャネルとともに、報告され得る。第１１のルールでは、是正措置の勧告には、アクセス制御構成を編集してアクセスを制限することが含まれ得る（信頼できる管理者場所の外側からの管理者アクセスが必要ない場合）。
【００４８】
一実施形態において、第１２のルールは、エージェントを用いずインスタンスを分析して、インスタンスが、信頼できる場所の外側のどこかからのデータベースポート（例えば、ポート１４３３、１４３４、３３０６など）へのアクセスを許可するかどうかを判定することができる。この調査結果の重要度は、低である。この調査結果は、ポート番号、ポートのＴＣＰまたはＵＤＰ関連付け、通常そのポートを使用するアプリケーション、そのポートに到達することができるアドレス範囲、またアクセスを許可するセキュリティグループ、アクセス制御リスト、インターネットゲートウェイ、仮想ゲートウェイ、およびその他のチャネルとともに、報告され得る。第１２のルールでは、是正措置の勧告には、アクセス制御構成を編集してアクセスを制限することが含まれ得る（インターネットからのデータベースアクセスが必要ない場合）。
【００４９】
一実施形態において、第１３のルールは、エージェントを用いずにインスタンスを分析して、インスタンスが、信頼できる場所の外側のどこかからのイントラネットポートへのアクセスを許可するかどうかを判定することができる。この調査結果の重要度は、低である。この調査結果は、ポート番号、ポートのＴＣＰまたはＵＤＰ関連付け、通常そのポートを使用するアプリケーション、そのポートに到達することができるアドレス範囲、またアクセスを許可するセキュリティグループ、アクセス制御リスト、インターネットゲートウェイ、仮想ゲートウェイ、およびその他のチャネルとともに、報告され得る。第１３のルールでは、是正措置の勧告には、アクセス制御構成を編集してアクセスを制限することが含まれ得る（インターネットからのイントラネットポートアクセスが必要ない場合）。
【００５０】
一実施形態において、第１４のルールは、エージェントを用いずにインスタンスを分析して、インスタンスが、信頼できる場所の外側のどこかからの他のすべてのポート（例えば、ルール８〜１３が適用されないポート）へのアクセスを許可するかどうかを判定することができる。この調査結果の重要度は、低である。この調査結果は、ポート番号、ポートのＴＣＰまたはＵＤＰ関連付け、通常そのポートを使用するアプリケーション、そのポートに到達することができるアドレス範囲、またアクセスを許可するセキュリティグループ、アクセス制御リスト、インターネットゲートウェイ、仮想ゲートウェイ、およびその他のチャネルとともに、報告され得る。第１４のルールでは、是正措置の勧告には、アクセス制御構成を編集してアクセスを制限することが含まれ得る（信頼できる場所の外側からのアクセスが必要ない場合）。
【００５１】
一実施形態において、第１５のルールは、エージェントを用いてインスタンスを分析して、インスタンスが、どこからもアクセスできないポートへの接続が開いているかどうかを判定することができる。この調査結果の重大度は、低であり、情報提供と見なされ得る。この調査結果は、ポート番号、各ポートに関連しているアプリケーション（およびバージョン）、および該当するアクセス制御リストおよびセキュリティグループとともに、報告され得る。第１５のルールでは、是正措置の勧告には、必要ない場合にアクセスできないサービスを終わらせることが含まれ得る。
【００５２】
一実施形態において、第１６のルールは、エージェントの有無に関わらずインスタンスを分析して、インスタンスへのすべてのインバウンドトラフィックが、阻止されているかどうかを判定することができる。この調査結果の重大度は、低であり、情報提供と見なされ得る。この調査結果は、該当するアクセス制御リストおよびセキュリティグループとともに報告され得る。第１６のルールでは、是正措置の勧告には、遮断が適切であるかどうか確認することが含まれ得る。
【００５３】
仮想ネットワーク検証サービス
実施形態によっては、ネットワーク構成分析は、仮想ネットワーク検証サービスを使用して実施され得る。実施形態によっては、仮想ネットワーク検証サービスは、宣言型論理プログラミング言語を活用して、ネットワーク到達可能性アナライザが、プロバイダネットワーク上の仮想ネットワークについての再帰クエリを含むクエリを制約問題として表し、制約ソルバ（例えば、充足可能性モジュロ理論（ＳＭＴ：Ｓａｔｉｓｆｉａｂｉｌｉｔｙ  Ｍｏｄｕｌｏ  Ｔｈｅｏｒｉｅｓ）ソルバ）エンジンを使用してクエリを解決することによって、クエリに対する結果を提供することを可能にする。いくつかの実施形態で使用され得る宣言型論理プログラミング言語例は、Ｄａｔａｌｏｇである。他の宣言型論理プログラミング言語が使用されてもよいことに留意されたい。
【００５４】
クライアントの仮想ネットワーク内にネットワーキングプリミティブを備え、構成するために、クライアントは様々なプロバイダネットワークサービスを使用することができ、各サービスは、それ自身のアプリケーションプログラミングインターフェース（ＡＰＩ：Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）およびネットワーキングセマンティクスを提供することができる。従来、コードサンプルおよびドキュメンテーションが各サービスに提供され得るが、仮想ネットワークにおけるネットワーキングプリミティブ間の相互作用の正式な記述がなかった。実施形態によっては、ネットワーキングプリミティブのための仮想ネットワーキングセマンティクスおよび論理は、論理プログラミング言語に従って仮想ネットワーキングルールのセットとして表され、符号化され得る。仮想ネットワーキングルールは、仮想ネットワークに実装され得、またプロバイダネットワークのサービスおよびＡＰＩによって提供される、様々なネットワーキングプリミティブ間の共通の関係および相互作用を表すルールを含み得る。したがって、実施形態は、プロバイダネットワーク環境において仮想ネットワーキングがどのように働くかの論理を記述する仮想ネットワーキングルールを１つの場所またはファイルに備えることができる。
【００５５】
実施形態によっては、仮想ネットワーキングルールは、ペイメントカード業界データセキュリティ基準（ＰＣＩ  ＤＳＳ：Ｐａｙｍｅｎｔ  Ｃａｒｄ  Ｉｎｄｕｓｔｒｙ  Ｄａｔａ  Ｓｅｃｕｒｉｔｙ  Ｓｔａｎｄａｒｄ）、米国連邦リスクおよび承認管理プログラム  （ＦｅｄＲＡＭＰ：Ｆｅｄｅｒａｌ  Ｒｉｓｋ  ａｎｄ  Ａｕｔｈｏｒｉｚａｔｉｏｎ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｇｒａｍ）基準、もしくは医療保険の相互運用性と説明責任に関する法律（ＨＩＰＡＡ：Ｈｅａｌｔｈ  Ｉｎｓｕｒａｎｃｅ  Ｐｏｒｔａｂｉｌｉｔｙ  ａｎｄ  Ａｃｏｕｎｄａｂｉｌｉｔｙ  Ａｃｔ）基準などのセキュリティ基準、またはクライアントの内部セキュリティ基準を符号化するルールを組み込み得る。実施形態によっては、仮想ネットワーク検証サービスは、仮想ネットワーキングルールの２つ以上の異なるセットを提供することができ、このセットのそれぞれは、特定の基準へのその仮想ネットワークの準拠を検証するのに選択的に使用され得る、様々なネットワーキングセキュリティ基準を符号化する。実施形態によっては、仮想ネットワーク検証サービスは、クライアントの内部セキュリティ基準、ベストプラクティス、または他のネットワーキング要件を符号化するカスタムルールをクライアント（ネットワーク到達可能性アナライザなど）が定義することを可能にし得、それにより、それらの特定の仮想ネットワークに適用するためにクライアントによって定義されたカスタムルールを含む、仮想ネットワーキングルールのセットが実装され得る。
【００５６】
実装形態によっては、仮想ネットワーク検証サービスは、クライアントの仮想ネットワークに関する記述情報を得る。記述情報は、例えば、仮想ネットワークに実装されたネットワーキングプリミティブのインスタンスを特定し、インスタンスの記述（例えば、計算インスタンスに割り当てられた役割、リソースインスタンスに与えられたまたは与えられていないパーミッション、インスタンスに割り当てられたＩＰアドレスなど）を含み、インスタンス間の関係（例えば、インスタンス間のネットワークにわたるパス）を記述し、外部エンティティへのインターフェースまたはアクセスポイント（例えば、仮想ネットワークの外部のエンティティによってアクセスされ得る計算インスタンス）を記述し得る。実施形態によっては、クライアントは、仮想ネットワークから記述情報を得て、その記述情報を仮想ネットワーク検証サービスに提供することができる。あるいは、実施形態によっては、クライアントは、仮想ネットワーク検証サービスが仮想ネットワークから記述情報を直接得ることを可能にするパーミッションを、仮想ネットワーク検証サービスに与えることができる。仮想ネットワーク検証サービスは、宣言型論理プログラミング言語に従って、記述情報を論理プログラムとして符号化することができる。
【００５７】
仮想ネットワーク検証サービスの実施形態は、ポート走査方法および構文チェック方法などの従来のネットワーク分析方法と比較すると、多大な利点をもたらすことができる。これらの従来の方法とは異なり、符号化された仮想ネットワーキングルールおよび仮想ネットワーク記述を通して、仮想ネットワーク検証サービスは、すべてのネットワーキングプリミティブおよびリソースインスタンス、ならびにそれらの複雑な相互関係についての知識を得ることができる。走査時に稼働しているデバイスに頼り、それにより走査時に存在するデバイス間のネットワークにわたるパスしか特定できない可能性がある従来の方法とは異なり、記述情報は、仮想ネットワークを記述するメタデータを維持する１つ以上のプロバイダネットワークサービスのＡＰＩへのＤＥＳＣＲＩＢＥコールのみを使用して、クライアントによってまたはサービスによって得られ得、それにより、それぞれのデバイスまたはインスタンスが稼働しておらず、リッスンしていなくても、ネットワークにわたるパスが特定され得る。また、ポート走査方法では、脅威が起こっていることは確認できるが、脅威が起こっていないことを確認できない可能性がある。構文チェック方法は、個々のネットワークデバイスのシャロープロバティをチェックすることができるが、攻撃ベクトルの有無を確認しない。一方、実施形態によっては、仮想ネットワーク検証サービスは、符号化された仮想ネットワーキングルールで表されるようなネットワークポリシからの起こり得る逸脱をすべて見付けることができ、脅威および攻撃ベクトルの有りおよび無しの両方を確認することができる。さらに、記述情報は、仮想ネットワークを記述するメタデータを維持する１つ以上のプロバイダネットワークサービスへのＤＥＳＣＲＩＢＥコールのみを使用して、クライアントによってまたはサービスによって得られ得、それにより、実体的なネットワークおよびＣＰＵ帯域幅を必要とするポート走査方法などの従来の方法とは異なって、クライアントの仮想ネットワークへの影響はほとんどまたは全くなく、また、ポート走査方法の場合のように、プロバイダネットワーク上のあらゆるデバイスへの完全なネットワークアクセスが必要とされない。
【００５８】
実施形態によっては、仮想ネットワーク検証サービスは、クライアント（ネットワーク到達可能性アナライザなど）からクエリを受信する。実施形態によっては、クエリは、ＳＱＬに類似しているがネットワーク構成に適用される表出型クエリ言語で提示され得る。このようなクエリの非限定的な例としては、「ＶＮＶＳｑｕｅｒｙ−ｉ  Ｉｉｓｔ：ｃａｎ−ｓｓｈ（ＡＢ）を挙げることができ、これは、インスタンスＡがインスタンスＢにＳＳＨすることができるようなすべてのインスタンス対のリストを提供するよう、仮想ネットワーク検証サービス（ＶＮＶＳ）に要求する。あるいは、実施形態によっては、クエリは、人に分かりやすい形で提示され得る。このようなクエリの非限定的な例は、「インスタンスＡがインスタンスＢにＳＳＨすることができるようなすべてのインスタンス対のリストを示してください」のようなものであり得る。実施形態によっては、少なくともいくつかのクエリが、予め定義され、仮想ネットワーク検証サービスへのグラフィカルインターフェースを介して、ユーザインターフェース要素（例えば、メニュー）においてユーザに提供され得る。
【００５９】
クエリは、生成された論理プログラムに関する定理に対応し、制約問題を表し得る。仮想ネットワーク検証サービスは、宣言型論理プログラミング言語に従って制約問題を解決するように構成された制約ソルバプログラム（制約ソルバエンジンとも呼ばれる）を使用して、符号化されたルールに従って、符号化された記述に対するクエリによって表される制約問題を解決し、結果をクライアントに提供することができる。実施形態によっては、仮想ネットワーク検証サービスは、クエリを提示するためのＡＰＩおよびインターフェースを提供することができる。実施形態によっては、仮想ネットワーク検証サービスは、クライアントがＡＰＩおよびインターフェースを介して選択することができる標準クエリのセットを提供することができる。実施形態によっては、仮想ネットワーク検証サービスは、クライアントがカスタムクエリを作成し、ＡＰＩおよびインターフェースを介して提出すえることを可能にし得る。
【００６０】
実施形態において、コンソール上のサービスへのグラフィカルインターフェースを介して、またはコマンドラインインターフェース（ＣＬＩ：Ｃｏｍｍａｎｄ  Ｌｉｎｅ  Ｉｎｔｅｒｆａｃｅ）を介して、クライアントが仮想ネットワーク検証サービスを使用して、プロバイダネットワーク上のクライアントの仮想ネットワークについての質問（制約を明示するクエリとして提示される）に対する回答を得ることができる。提示される可能性がある質問の例としては、以下が挙げられるが、これらに限定されない。
●仮想ネットワーク内のどのインスタンスにインターネットからアクセス可能であるか？
●どのインスタンスが仮想ネットワーク上の指定されたリソースにアクセスすることができるか（例えば、データベース、キャッシュ、ストレージエンドポイント、他のインスタンスなど）？
●仮想ネットワークは、ネットワーキングセキュリティ基準のベストプラクティスに準拠しているか？
●仮想ネットワークは、このルールのセットに符号化された自分の会社のベストプラクティスに準拠しているか。
【００６１】
より一般的には、クライアント（ネットワーク到達可能性アナライザなど）が仮想ネットワーク検証サービスを使用して、仮想ネットワーク内のリソースと仮想ネットワーク内の他のリソースとの間の期待されるパイプ、ならびに外部エンティティへの期待されるパイプが開いているか、また期待されるパイプが唯一の開いたパイプであるか（例えば、外部エンティティが、それらが達することを許されるべきではない仮想ネットワーク内のリソースに達することができないか）を検証することができる。
【００６２】
仮想ネットワーク内のあるリソースと他のリソースとの間のパイプ、または仮想ネットワーク内のリソースと外部エンティティとの間のパイプが開いているかを検証することは、リソース間、またはリソースと外部エンティティとの間にネットワークにわたるパスまたはルート（例えば、リソースから、それを介して外部エンティティが仮想ネットワーク上のリソースにアクセスすることができるＨＴＴＰＳゲートウェイへのパス）があるか（すなわち、ネットワーク接続性があるか）を検証することを含み得る。パスは、エンドポイント間にネットワーク接続性をもたらすネットワークにわたる直接パスであってもよく、あるいはルート上の１つ以上のホップを通過し、エンドポイント間にネットワーク接続性をもたらす推移的なパスであってもよい。仮想ネットワークを記述するメタデータを維持する１つ以上のプロバイダネットワークサービスのＡＰＩへのＤＥＳＣＲＩＢＥコールのみを使用して、仮想ネットワークについての記述情報を得ることができ、それにより、それぞれのデバイスまたはインスタンスが稼働しておらず、リッスンしていない場合でもパスを検証することができる。実施形態によっては、仮想ネットワークについての記述情報は、リソースに与えられたまたは与えられていないパーミッション（例えば、仮想ネットワーク上のエンドポイントへの１つのリソースアクセスを与えるもしくは与えないパーミッション、または、所与のエンドポイント（例えば、ストレージエンドポイント）にアクセスすることができる、もしくはできない、ＩＰアドレス範囲もしくはリソースインスタンスの特定のポートを指定するパーミッションなど）を含み得る。これらの実施形態では、仮想ネットワーク内のパスが開いていることを検証することは、そのパスに必要なパーミッションが与えられていることを検証することを含み得る。同様に、期待されるパスが唯一の開いたパスであることを検証することは、仮想ネットワークまたは外部エンティティ内のリソースが、アクセスするべきではないリソースにアクセスするためのパーミッションを有していないと判断することを含み得る。
【００６３】
仮想ネットワーキングルールの適切なセットを有する仮想ネットワーク検証サービスの実施形態は、例えば、顧客が顧客の仮想ネットワークが、ペイメントカード業界データセキュリティ基準（ＰＣＩ  ＤＳＳ）、米国連邦リスクおよび承認管理プログラム（ＦｅｄＲＡＭＰ）基準、もしくは医療保険の相互運用性と説明責任に関する法律（ＨＩＰＰＡ）基準などのネットワーキングセキュリティ基準に準拠していることを検証するのを助けるために、または顧客の仮想ネットワークがクライアントの内部セキュリティ基準またはその他の内部ネットワーキング要件に準拠していることを検証するために、クライアント（ネットワーク到達可能性アナライザ）によって使用され得る。
【００６４】
仮想ネットワーク検証サービスの別の適用例としては、ネットワークセキュリティ問題またはソフトウェアバグなどの脆弱性の仮想ネットワークにおける起こり得る影響を突き止めるためがある。例えば、仮想ネットワーク内の特定のインスタンス上で作動している特定のソフトウェアプログラムに脆弱性が発見された場合、クライアント（ネットワーク到達可能性アナライザなど）は、このインスタンスが仮想ネットワーク内の他のインスタンスと通信することができる、すべての方法を判定するためにクエリを作成し、提出することができる。結果は、クライアントが、脆弱性の起こり得る影響を特定し、したがって状況を最もうまく処理する方法に関して決定を行うことを可能にし得る。例えば、脆弱性を有するインスタンスからミッションクリティカルなデータベースを有するインスタンスへの直接のパスがない場合、問題に、通常の保守スケジュールに従って処理される低い優先度を与えることができる。脆弱性を有するインスタンスがミッションクリティカルなデータベースを有するインスタンスに影響を与える場合、仮想ネットワークの少なくとも一部をシャットダウンして脆弱性に直ちに対処するという決定を行うことができる。
【００６５】
仮想ネットワーク検証サービスの別の適用例は、プロバイダネットワーク環境のための仮想ネットワーキングの変更のオフラインテストの際である。例えば、プロバイダネットワーク環境で仮想ネットワーキングがどのように働くかの論理を記述する仮想ネットワーキングルールをテスト環境で使用して、仮想ネットワーキングプリミティブの変更を、それがプロバイダネットワークに適用される前にテストし、この変更が仮想ネットワークにどのような影響を与え得るかを判定することができる。
【００６６】
仮想ネットワーク検証サービスの別の適用例は、クライアント用の仮想ネットワークを自動的に統合する際である。例えば、クライアント（ネットワーク到達可能性アナライザなど）が、特定のネットワーキングセキュリティ基準に準拠し、また指定されたネットワーキングプリミティブののセットを含む、仮想ネットワークを確立することを望む場合がある。クライアントが自ら仮想ネットワークをビルドし、テストする必要がないように、仮想ネットワーク検証サービスおよび仮想ネットワーキングルールを使用して、制約（クライアント指定プリミティブ、ネットワーキングセキュリティ基準、仮想ネットワーキングがプロバイダネットワーク環境内でどのように働くかの論理を記述する仮想ネットワーキングルール、など）のすべてを満たす仮想ネットワークを自動的に統合し、検証することができる。例えば、基準によって課せられた制約をクエリとして提示することができ、クエリを解決して、制約を満たす仮想ネットワーク構成を判定することができ、あるいは仮想ネットワークの構成が制約に従っているかどうかを判定することができる。それにより、制約に従う仮想ネットワークが統合されてもよく、あるいは仮想ネットワークが制約に従うように修正されてもよい。
【００６７】
仮想ネットワーク検証サービスの別の適用例は、構成または変更がプロバイダネットワークに実装される前に、クライアント（ネットワーク到達可能性アナライザなど）が新たな仮想ネットワーク構成または既存の仮想ネットワークの変更を検証することを可能にすることである。例えば、仮想ネットワーク構成は、クライアントによって生成または修正されてもよく、その構成に対する制約はクエリとして提示することが可能であって、構成がプロバイダネットワークに実装される前に、クエリを解決して、構成がクエリで提示されたクライアントの制約に準拠していることを検証してもよい。
【００６８】
図８は、いくつかの実施形態による、プロバイダネットワーク環境における仮想ネットワーク検証サービスを示す。クライアントにプロバイダネットワーク８００を提供するサービスプロバイダは、クライアントがプロバイダネットワーク８００上の仮想ネットワーク８１０にリソースを確立し、管理することを可能にするサービスおよびアプリケーションプログラミングインターフェース（ＡＰＩ）８０２を提供することができる。プロバイダネットワーク８００環境における仮想ネットワーク８１０は、それぞれのクライアントのプロバイダネットワークリソースのセットを含むネットワーク空間であって、クライアントのリソース用のプロバイダネットワーク８００上の論理的に隔離されたセクションとして機能する、ネットワーク空間として、広く定義され得る（例えば、アドレス範囲またはアドレス空間によって論理的に定義される）。仮想ネットワーク８１０は、ネットワークプロトコルに従ってプライベートまたはローカルのインターネットプロトコル（ＩＰ：Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレス空間、例えばインターネットプロトコルバージョン４（ＩＰｖ４：Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  ｖｅｒｓｉｏｎ４）アドレス範囲またはサブネット内の３２ビットＩＰアドレスを実装することができる。仮想ネットワーク８１０上のソース（例えば、計算リソース、ストレージリソース、サーバ、ホストデバイスなどのエンドポイント）には、仮想ネットワーク８１０のアドレス空間内のＩＰアドレス（例えば、３２ビットのＩＰｖ４アドレス）が割り当てられ得る。プロバイダネットワーク８００上のクライアントの仮想ネットワーク８１０は、クライアントによって仮想コンピューティングリソースインスタンスとして構成されたホストデバイス上の仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）などのクライアントのリソースインスタンスを含む。プロバイダネットワーク上のリソースインスタンスの少なくともいくつかは、複数のオペレーティングシステムをホストコンピュータ上で同時に、すなわちホストデバイス上のＶＭとして実行することを可能にするハードウェア仮想化技術に従って実装することができる。ホストデバイス上のハイパーバイザ、または仮想マシンモニタ（ＶＭＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｍｏｎｉｔｏｒ）は、それぞれのホスト上のＶＭに仮想プラットフォームを提示し、ホストデバイス上のＶＭの実行を監視する。各ＶＭには１つ以上のＩＰアドレスが与えられ、それぞれのホスト上のＶＭＭは、ホスト上のＶＭのＩＰアドレスを分かっている可能性がある。
【００６９】
様々なネットワークリソース、構造、および機能性（ネットワーキングプリミティブと呼ばれる）が、様々なプロバイダネットワークサービス８０２を介してプロバイダネットワーク８００のクライアントに提供され得る。クライアントは、少なくとも部分的に様々なサービスおよびＡＰＩ８０２を使用して、プロバイダネットワーク８００上でクライアントの仮想ネットワーク８１０を作成し、構成し、ポピュレートし、修正することができる。以下では、サービス８０２によって提供され得、限定的であることを意図するものではない、ネットワーキングプリミティブ例を挙げる。
●仮想ネットワーク
●リソースインスタンス（例えば、サービス８０２を使用するクライアントによる、仮想コンピューティングリソースインスタンスとして構成されたＶＭ（例えば、アプリケーションサーバ、Ｗｅｂサーバ、データベースサーバ、アクセスポイント、ゲートウェイ、ロードバランサ、ロギングサービスなどの特定のプロバイダネットワークサービスのインスタンス、ネットワーク監視および分析サービス、コードリポジトリサービス、コンテナ管理サービスなど）。
●タグ−実施形態によっては、クライアントは、リソースインスタンスをタグ付けすることによって、クライアントの仮想ネットワーク内の特定のリソースインスタンス（例えば、ＶＭ）に特定の役割を割り当てることが許され得る。タグは、例えば、ＰＲＯＤやＤＥＶなどのテキスト文字列であり得る。タグは、リソースインスタンス用のメタデータに格納され得る。タグは、標準プロバイダネットワーク定義タグおよび／またはクライアント定義タグを含み得る。リソースインスタンスの役割例には、セキュアソケットシェル（ＳＳＨ：Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔ  Ｓｈｅｌｌ）アクセスインスタンス、ロギングサービスインスタンス、コードリポジトリインスタンス、本番リソースインスタンス、および開発リソースインスタンスが含まれるが、これらに限定されるわけではない。
●仮想ネットワークエンドポイント（例えば、計算リソース、ストレージリソース、サーバ、ホストデバイスなどのエンドポイント）。
●仮想ネットワークピアリング接続実施形態によっては、クライアントは、プロバイダネットワーク上に２つ以上の仮想ネットワークを確立することができる。仮想ネットワークがインターネットなどの外部ネットワークを横断する必要なしにプロバイダネットワークにわたって安全に通信することを可能にするピアリング接続が、仮想ネットワーク間で確立され得る。
●仮想ネットワークの外部のエンティティから仮想ネットワークのリソースの少なくともいくつかへのアクセスを提供するインターネットゲートウェイ
●例えば、仮想ネットワーク上のリソースインスタンスのグループまたはクラスタ間でネットワークトラフィックを分散させる仮想化ロードバランサインスタンスである、ロードバランサ
●ネットワークアドレス変換（ＮＡＴ：Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ）インスタンス
●ＮＡＴゲートウェイ
●ネットワークアクセス制御リスト（ＡＣＬ）
●ネットワークインターフェース。
●ルートテーブル
●サブネット−仮想ネットワークは、必ずしもではないが、２つ以上のサブネットワーク、またはサブネットに細分され得る。
●セキュリティグループ−実施形態によっては、プロバイダネットワークは、クライアントが、クライアントの仮想ネットワーク内に、サブネット内に、またはサブネットにわたって、仮想セキュリティグループを確立し、管理することを可能にし得る。セキュリティグループは、リソースインスタンスを論理的にグループ化したものであり、セキュリティグループルールに従ってセキュリティグループ内の１つ以上のリソースインスタンスに到達することを許されたトラフィックを制御する仮想ファイアウォールとして機能する。
●リージョン−プロバイダネットワークサービスおよびリソース（例えば、仮想ネットワーク、ＶＭインスタンス、データストレージ、ゲートウェイ、ロードバランサなど）は、複数の地理的な場所または範囲でサポートされ得る。本明細書で使用される際、リージョンとは、プロバイダネットワークサービスをサポートし、そこで、クライアントがリソースを起動し、構成することができる別個の地理的範囲である。サービスおよびＡＰＩにより、クライアントは１つ以上のリージョンでクライアントのリソースを起動または複製することが可能になり得る。
●ゾーン−各地域には、本明細書でゾーンと呼ばれる複数の孤立した場所が含まれ得る。クライアントのリソースインスタンスは、１つのゾーン内のリソースインスタンスに障害が発生した場合に、別のゾーン内のインスタンスが要求を処理できるように、リージョン内の複数のゾーンに分散させることができる。
【００７０】
実施形態によっては、クライアントは、それぞれのプロバイダネットワークサービス８０２を使用して、上記のネットワーキングプリミティブのうちの１つ以上のインスタンスを含む仮想ネットワーク８１０をプロバイダネットワーク８００上に確立することができる。図８は、プロバイダネットワーク８００上の仮想ネットワーク例８１０を示し、この例は、限定的であることを意図するものではない。クライアントの仮想ネットワーク８１０は、仮想ネットワークの機能性を実装するリソースインスタンス８１８（例えば、ＶＭ）、例えばアプリケーションサーバ、Ｗｅｂサーバ、データベースサーバなどを含み得る。リソースインスタンス８１８は、インスタンス８１８Ａおよび８１８Ｂのグループまたはクラスタを含み得、例えば、インスタンス８１８Ａは、本番環境に相当し得る一方、インスタンス８１８Ｂは、開発環境に相当し得る。実施形態によっては、インスタンス８１８Ａと８１８Ｂとは、異なるサブネットおよび／またはセキュリティグループ内にあり得る。
【００７１】
クライアントの仮想ネットワーク８１０はまた、アプリケーションおよびオペレーティングシステムロギングサービス、ネットワーク監視および分析サービス、コードリポジトリサービス、コンテナ管理サービスなど、クライアントの仮想ネットワーク８１０内に特定のプロバイダネットワークサービスを実装するサービスインスタンス８１６（例えば、ＶＭ）を含み得る。
【００７２】
クライアントの仮想ネットワーク８１０はまた、クライアントネットワーク８８０上のデバイス８８２および他の外部エンティティ８９０がインターネットなどの中間ネットワーク８５０を介して仮想ネットワーク８１０内のリソースおよびエンドポイントと通信することを可能にするアクセスインスタンスを含み得る。アクセスインスタンスは、例えば、ロードバランサおよびゲートウェイ（インターネットゲートウェイ、ＮＡＴゲートウェイなど）を含み得る。この例に示されるように、実施形態によっては、アクセスインスタンスは、ＨＴＴＰＳアクセスインスタンス８１４およびＳＳＨアクセスインスタンス８１２を含み得る。ＨＴＴＰＳアクセスインスタンス８１４は、ＨＴＴＰＳプロトコルを使用して外部エンティティ８９０からリソースインスタンス８１８Ａおよび８１８Ｂにそれぞれアクセスするためのインスタンス８１４Ａおよび８１４Ｂ、ならびにＨＴＴＰＳプロトコルを使用してクライアントネットワーク８８０上のデバイス８８２からサービスインスタンス８１６にアクセスするためのインスタンス８１４Ｃを含み得る。実施形態によっては、クライアントは、例えばＳＳＨを使用して、クライアントネットワーク８８０上のデバイス８８２（例えば、コンソール）から仮想ネットワーク８１０内のリソースインスタンスにアクセスすることができる。実施形態によっては、ＳＳＨを使用してリソースインスタンスにアクセスするために、クライアントにインスタンスのＩＰアドレスとキーとが与えられる。クライアントは、提供された情報を使用してインスタンスに直接ＳＳＨ接続することができる。実施形態によっては、ＳＳＨアクセスインスタンス８１２は、クライアントがＳＳＨプロトコルを使用してクライアントネットワーク８８０上のデバイス８８２（例えば、コンソール）から仮想ネットワーク８１０上のクライアントのリソースインスタンスにアクセスすることを可能にするプロキシとして機能し得る。例えば、ＳＳＨアクセスインスタンス８１２は、クライアントの仮想ネットワークの公にアクセス可能なサブネット内にあり得る。クライアントのリソースインスタンスの少なくとも一部が、公にアクセスできないサブネットにある場合がある。これらのリソースインスタンスは、ＳＳＨアクセスインスタンス８１２に付設されたセキュリティグループからのＳＳＨアクセスを許可するセキュリティグループ内にあり得る。クライアントは、クライアントのリソースインスタンスに接続するためにＳＳＨアクセスインスタンス１１２に接続することができる。
【００７３】
図８に示すように、プロバイダネットワーク８００は、プロバイダネットワーク８００上の１つ以上のコンピューティングデバイスによって実装される仮想ネットワーク検証サービス８３０を含み得る。実施形態によっては、仮想ネットワーク検証サービス８３０のインスタンスは、例えば、図８に示すようにＳＳＨアクセスインスタンス８１２によって、クライアントの仮想ネットワーク８００上に実装され得る。仮想ネットワーク検証サービス８３０は、宣言的論理プログラミング言語（例えば、Ｄａｔａｌｏｇ）を利用して、クライアントがプロバイダネットワーク上のクライアントの仮想ネットワークについて再帰クエリを含むクエリを制約問題として表すことを可能にし得、制約ソルバエンジンを使用してクエリを解決することにより、クエリに対する結果を提供する。
【００７４】
仮想ネットワーク検証サービス８３０において、サービス８０２によって提供されるネットワーキングプリミティブのための仮想ネットワーキングセマンティクスおよび論理は、論理プログラミング言語に従って仮想ネットワーキングルールのセットとして表され、符号化され得る。仮想ネットワーキングルールは、仮想ネットワーク８１０に実装されている様々なネットワーキングプリミティブ間の共通の関係および相互作用を表わすルールを含み得る。仮想ネットワーキングルールは、ネットワーキングセキュリティ基準（例えば、ＰＣＩ、ＦｅｄＲＡＭＰ、ＨＩＰＰＡなど）、またはクライアントの内部セキュリティ基準もしくは他のネットワーキング要件を符号化するルールも組み込むことができる。
【００７５】
仮想ネットワーク検証サービス８３０は、クライアントの仮想ネットワーク８１０についての記述情報を得る。記述情報は、例えば、仮想ネットワーク８１０に実装されているネットワーキングプリミティブのインスタンスを特定し、様々なインスタンスの記述（例えば、インスタンスに割り当てられた役割、インスタンスに与えられたまたは与えられていないパーミッション、インスタンスに割り当てられたＩＰアドレスなど）を含み、インスタンス間の関係（例えば、インスタンス間のパス）を記述し、また外部エンティティ８９０へのインターフェースまたはアクセスポイントを記述することができる。実施形態によっては、クライアントは、仮想ネットワーク８１０から記述情報を得て、その記述情報を仮想ネットワーク検証サービス８３０に提供することができる。あるいは、実施形態によっては、クライアントは、仮想ネットワーク検証サービス８３０が仮想ネットワーク８１０から記述情報を直接得ることを可能にするパーミッションを、仮想ネットワーク検証サービス８３０に与えることができる。仮想ネットワーク検証サービス８３０は、宣言型論理プログラミング言語に従って記述情報を論理プログラムとして符号化することができる。
【００７６】
仮想ネットワーク検証サービス８３０は、宣言型論理プログラミング言語を利用し、クライアントがプロバイダネットワーク８００上のクライアントの仮想ネットワーク８１０についてのクエリを、例えばグラフィカルインターフェースまたはコマンドラインインターフェース（ＣＬＩ：Ｃｏｍｍａｎｄ  Ｌｉｎｅ  Ｉｎｔｅｒｆａｃｅ）を介して、クライアントネットワーク８８０内のクライアントデバイス８８２上のサービス８３０に提示することを可能にし得る。いくつかの実施形態において使用され得る論理プログラミング言語例には、Ｄａｔａｌｏｇがある。他の宣言型論理プログラミング言語が使用されてもよいことに留意されたい。実施形態によっては、クエリは、ＳＱＬに幾分類似している可能性があるがネットワーク構成に適用される表出型クエリ言語で提示され得る。あるいは、実施形態によっては、クエリは、人に分かりやすい形で提示され得る。クエリは、生成された論理プログラムに関する定理に対応し、制約問題を表す。仮想ネットワーク検証サービス８３０は、制約ソルバエンジンを使用して、符号化されたルールに従って、符号化された記述に対するクエリによって表された制約問題を解決することができ、その結果をクライアントに提供する。実施形態によっては、仮想ネットワーク検証サービス８３０は、クエリを提示するためのＡＰＩおよびインターフェースを提供することができる。実施形態によっては、仮想ネットワーク検証サービス８３０は、クライアントがＡＰＩおよびインターフェースを介して選択することができる標準クエリのセットを提供することができる。実施形態によっては、仮想ネットワーク検証サービス８３０は、クライアントがＡＰＩおよびインターフェースを介してカスタムクエリを作成し、提出することを可能にし得る。
【００７７】
以下は、図８に示される仮想ネットワーク例について、クライアントによって提示され得るクエリ例を説明するものであり、このクエリ例は、限定的であることを意図するものではない。
【００７８】
仮想ネットワーク８１０のいくつかの実施形態では、仮想ネットワーク８１０上のリソースは、クライアントネットワーク８８０上の指定されたエンドポイントからＳＳＨアクセスインスタンス８１２を通じてＳＳＨを介してのみアクセス可能であるべきである。したがって、クライアントは、仮想ネットワーク８１０内のどのインスタンスも中間ネットワーク８５０上のエンドポイントからＳＳＨを介してアクセス可能ではないことを検証したい場合がある。これを検証するためのクエリ例は、次のように表され得る。
すべてのインスタンス：
！ｉｎｔｅｒｎｅｔ−ｃａｎ−ｓｓｈ−ｔｏ−ｉｎｓｔａｎｃｅ（Ｉｎｓｔａｎｃｅ）
【００７９】
クライアントはまた、クライアントネットワーク８８０から、仮想ネットワーク８１０上のＳＳＨアクセスインスタンス８１２がＳＳＨを介してアクセス可能であることを検証したい場合もある。先に述べたように、実施形態によっては、仮想ネットワーク８１０内のクライアントのインスタンスの少なくともいくつかに特定の役割を割り当てることができ、役割は、インスタンス用のメタデータに格納されているタグによって示され得る。タグは、記述情報に含まれ得、それにより仮想ネットワーク８１０についての符号化された記述に示され得る。したがって、実施形態によっては、タグは、例えば、特定の役割を割り当てられたインスタンスが実際にそれらの役割を果たすことができることを検証するために、クエリで使用され得る。クライアントネットワーク８８０から、仮想ネットワーク８１０上のＳＳＨアクセスインスタンス８１２がＳＳＨを介してアクセス可能であることを検証するためのクエリ例は、次のように表され得る。
すべてのインスタンス：
ａｔｏｍ／ｉｎｓｔａｎｃｅ−ｔａｇ（Ｉｎｓｔａｎｃｅ、ｔａｇ−ｋｅｙ／Ｎａｍｅ、ｔａｇ−ｖａｌｕｅ／ＳＳＨＡｃｃｅｓｓＩｎｓｔａｎｃｅ）
＜＝＞ＣｌｉｅｎｔＮｅｔｗｏｒｋ−ｃａｎ−ｓｓｈ−ｔｏ−ｉｎｓｔａｎｃｅ（Ｉｎｓｔａｎｃｅ）
【００８０】
上記の式は、制約ソルバによって評価されると、仮想ネットワーク８１０上のすべてのインスタンスをチェックし、ＳＳＨＡｃｃｅｓｓＩｎｓｔａｎｃｅとしてタグ付けされたインスタンスについては、制約ソルバは、そのインスタンスがクライアントネットワーク８８０からＳＳＨを介して到達可能であるかどうかを判定し、そうである場合にＴＲＵＥを返し、そうでない場合にＦＡＬＳＥを返す。
【００８１】
以下では、クライアントが仮想ネットワーク検証サービス８３０に適切なクエリを提示することによって検証することができる仮想ネットワーク８１０の態様の他の例のいくつかを挙げているが、これは限定的であることを意図したものではない。
●ＳＳＨを介してクライアントネットワーク８８０からＳＳＨアクセスインスタンス８１２のみがアクセス可能である。
●リソースインスタンス８１８Ａおよび８１８Ｂは、中間ネットワーク８５０Ｂ（例えばインターネット）を介して外部エンティティ８９０によってそれぞれのＨＴＴＰＳアクセスインスタンス８１４Ａおよび８１４Ｂを通して到達可能である。
●リソースインスタンス８１８Ａおよび８１８Ｂは、要求を認証するために中間ネットワーク８５０Ｂに到達することができる。
●リソースインスタンス８１８Ａおよび８１８Ｂは、指定サービスインスタンス８１６に書き込むことができる。
●指定サービスインスタンス８１６は、ＨＴＴＰＳアクセスインスタンス８１４Ｃを介してクライアントネットワーク８８０から到達することができる。
●指定サービスインスタンス８１６は、仮想ネットワーク８１０上の指定エンドポイントに到達することができる。
●すべてのインスタンスは、指定されたタグのセットのうちの１つでタグ付けされる。
【００８２】
図９は、いくつかの実施形態による、仮想ネットワーク検証サービス例の構成要素および動作を示す。仮想ネットワーク検証サービス９３０は、プロバイダネットワーク上の１つ以上のコンピューティングデバイスによって実装することができる。実施形態によっては、仮想ネットワーク検証サービス９３０のインスタンスは、例えば図８に示されるようにＳＳＨアクセスインスタンス８１２によって、クライアントの仮想ネットワーク上に実装され得る。図９に示されるように、実施形態によっては、仮想ネットワーク検証サービス９３０は、サービスエンジン９３４、制約ソルバ９３６エンジン、およびＡＰＩ９３２を含み得る。サービスエンジン９３４は、以下に限定されるわけではないが、ルール符号化９５０ロジック、クエリ処理９６０ロジック、および記述符号化９７０ロジックを実装し得る。制約ソルバ９３６は、符号化された仮想ネットワーキングルール９３８に基づいて、符号化された記述９４０によって表されるような、仮想ネットワークについての再帰クエリを含むクエリを解決するように構成された宣言型論理プログラミング言語エンジンに相当し得る。ＡＰＩ９３２は、クライアントを含むがこれに限定されない外部エンティティにサービス９１０の機能性を公開する。
【００８３】
図９の（１Ａ）および（１Ｂ）において、サービス９３０のルール符号化９５０ロジックは、仮想ネットワークに適用されるべき仮想ネットワーキングルール９３８を得て（１Ａ）、符号化する（１Ｂ）ことができる。符号化されるルールは、サービスプロバイダから、クライアントから、または他の外部のエンティティもしくは情報源から得られ得る。符号化されたルール例９３８は、後で本明細書で示される。
【００８４】
実施形態において、仮想ネットワークで使用されるネットワーキングプリミティブのための仮想ネットワーキングセマンティクスおよび論理は、論理プログラミング言語に従って、仮想ネットワーキングルール９３８のセットとして得られ、符号化され得る。仮想ネットワーキングルール９３８は、仮想ネットワークに実装され得、またプロバイダネットワークのサービスおよびＡＰＩによって提供される、様々なネットワーキングプリミティブ間の共通の関係および相互作用を表すルールを含み得る。したがって、実施形態は、プロバイダネットワーク環境において仮想ネットワーキングがどのように働くかの論理を記述する仮想ネットワーキングルール９３８を１つの場所またはファイルに備えることができる。
【００８５】
実施形態によっては、仮想ネットワーク検証サービス９３０は、ペイメントカード業界データセキュリティ基準（ＰＣＩ  ＤＳＳ）、米国連邦リスクおよび承認管理プログラム（ＦｅｄＲＡＭＰ）基準、または医療保険の相互運用性と説明責任に関する法律（ＨＩＰＰＡ）基準などのネットワーキングセキュリティ基準のためのルールを得て、符号化することができ、それにより、ネットワーキングセキュリティ基準を検証するためのルールを含む仮想ネットワーキングルール９３８のセットが実装され得る。実施形態によっては、仮想ネットワーク検証サービス９３０は、クライアントの仮想ネットワークが特定の標準に準拠していることを検証するためにクライアントによって選択的に使用され得る、様々なネットワーキングセキュリティ基準をそれぞれが符号化する、仮想ネットワーキングルール９３８の２つ以上の異なるセットを提供することができる。実施形態によっては、仮想ネットワーク検証サービス９３０は、クライアントの内部セキュリティ基準、ベストプラクティス、または他のネットワーキング要件を符号化するカスタムルールをクライアントが定義することを可能にすることができ、それにより、それらの特定の仮想ネットワークに適用するようにクライアントによって定義されたカスタムルールを含む、仮想ネットワーキングルール９３８のセットが実装され得る。
【００８６】
図９の（２）において、サービス９３０のクエリ処理９６０ロジックは、仮想ネットワーキングルール９３８に従って仮想ネットワークについて解決されるべきクエリをクライアントから受信することができる。実施形態によっては、クライアントは、グラフィカルインターフェースまたはコマンドラインインターフェース（ＣＬＩ）を介して、プロバイダネットワーク上でクライアントの仮想ネットワークについてのクエリをサービスＡＰＩ９３２に提供することができる。実施形態によっては、クエリは、ＳＱＬに類似しているがネットワーク構成に適用される表出型言語で提示され得る。あるいは、実施形態によっては、クエリは、人に分かりやすい形で提示され得る。クエリ例は、図８に関連して上に説明されている。
【００８７】
図９の（３Ａ）および（３Ｂ）において、サービス９３０の記述符号化９７０ロジックは、仮想ネットワークの記述を得て（３Ａ）、符号化する（３Ｂ）ことができる。実施形態によっては、サービス９３０の記述符号化９７０ロジックは、仮想ネットワークについての記述情報を得て（３Ａ）、記述符号化９７０ロジックが受信する各クエリに対して、符号化された記述９４０として、記述情報をエンコードし（３Ｂ）、クエリを解決する際に記述９４０が最新のものであることを保証する。しかし、実施形態によっては、記述符号化９７０ロジックは、仮想ネットワークについての記述情報を得て、符号化し、符号化された記述９４０を使用して２つ以上のクエリを処理することができる。図９の（３Ａ）において、サービス９３０の記述符号化９７０ロジックは、クライアントの仮想ネットワークについての記述情報を得る。記述情報は、例えば、仮想ネットワークに実装されているネットワーキングプリミティブのインスタンスを特定し、様々なインスタンスの記述（例えば、インスタンスに割り当てられた役割、インスタンスに与えられたまたは与えられていないパーミッション、インスタンスに割り当てられたＩＰアドレスなど）を含み、インスタンス間の関係（例えば、インスタンス間のパスなど）を記述し、また外部エンティティへのインターフェースまたはアクセスポイントを記述することができる。実施形態によっては、クライアントは、仮想ネットワークから記述情報を得て、その記述情報を仮想ネットワーク検証サービスに提供することができる。あるいは、実施形態によっては、クライアントは、仮想ネットワーク検証サービス９３０がクエリに応答して、仮想ネットワークから記述情報を直接得ることを可能にするパーションを仮想ネットワーク検証サービス２３０に与えることができる。図９の（３Ｂ）において、サービス９３０の記述符号化９７０ロジックは、宣言型論理プログラミング言語に従って、得られた記述情報を論理プログラムとして符号化することができる。
【００８８】
図９の（４）において、サービス９３０のクエリ処理９６０ロジックは、クエリを制約ソルバ９３６に提供することができる。制約ソルバ９３６は、符号化されたルール９３８に従って、符号化された記述９４０に対するクエリによって表された制約問題を解決し、（５Ａ）において、結果（例えば、クエリによって提示された質問に対する回答）を、結果をフォーマットするクエリ処理９６０に提供し、（５Ｂ）において、フォーマットされた結果をＡＰＩ９３２を介してクライアントに提供する。フォーマットされた結果は、文字形式結果（例えば、「ＹＥＳ」、「ＮＯ」、「ＴＲＵＥ」、または「ＦＡＬＳＥ」などのクエリによって提示された制約に対する回答を表すテキスト、クエリによって提示された制約を満たすインスタンスのリストなど）、および／またはグラフィカル結果（例えば、クエリを解決することによって判定された２つ以上のインスタンス間の関係のグラフィカル表現、クエリを解決することによって特定された仮想ネットワーク特定インスタンスのグラフィカル表現など）を含み得る。
【００８９】
図１０は、いくつかの実施形態による、仮想ネットワークについての情報をプロバイダネットワークのクライアントに提供するための方法のフローチャートである。１０００に示されるように、仮想ネットワーキングルールが得られ、符号化され得る。符号化されるルールは、サービスプロバイダから、クライアントから、または他の外部のエンティティもしくは情報源から得られ得る。仮想ネットワーキングルールは、プロバイダネットワーク上の仮想ネットワークで使用されるネットワーキングプリミティブのための仮想ネットワーキングセマンティクスおよび論理を表すことができる。実施形態によっては、仮想ネットワーキングルールは、ペイメントカード業界データセキュリティ基準（ＰＣＩ  ＤＳＳ）、米国連邦リスクおよび認可管理プログラム（ＦｅｄＰＡＭＰ）基準、または医療保険の相互運用性と説明責任に関する法律（ＨＩＰＡＡ）などのネットワーキングセキュリティ基準のためのルールを表し得る。実施形態によっては、仮想ネットワーキングルールは、クライアントの内部セキュリティ基準または他のネットワーキング要件を表すクライアント定義ルールを含み得る。符号化されたルール例は、本明細書において後で示される。
【００９０】
１０１０に示されるように、仮想ネットワーク検証サービスは、クライアント（ネットワーク到達可能性アナライザなど）から仮想ネットワークについてのクエリを受信することができる。実施形態では、コンソール上のサービスへのグラフィカルインターフェースを介して、またはコマンドラインインターフェース（ＣＬＩ）を介して、クライアントが仮想ネットワーク検証サービスを使用して、プロバイダネットワーク上のクライアントの仮想ネットワークについての質問（再帰的クエリを含むクエリとして提示される）に対する回答を得ることができる。実施形態によっては、クエリは、ＳＱＬに類似しているがネットワーク構成に適用される表出型言語で提示され得る。あるいは、実施形態によっては、クエリは、人に分かりやすい形で提示され得る。クエリ例は、図８に関連して上に説明されている。
【００９１】
１０２０に示されるように、仮想ネットワーク検証サービスは、仮想ネットワークについての記述情報を得て、符号化することができる。記述情報は、例えば、仮想ネットワークに実装されているネットワーキングプリミティブのインスタンスを特定し、インスタンスの記述（例えば、計算インスタンスに割り当てられた役割、リソースインスタンスに与えられたまたは与えられていないパーミッション、インスタンスに割り当てられたＩＰアドレスなど）を含み、インスタンス間の関係（例えば、インスタンス間のパス）を記述し、また外部エンティティ（例えば、仮想ネットワークの外部のエンティティによってアクセスされ得る計算インスタンス）へのインターフェースまたはアクセスポイントを記述することができる。実施形態によっては、クライアントは、仮想ネットワークから記述情報を得て、その記述情報を仮想ネットワーク検証サービスに提供することができる。あるいは、実施形態によっては、クライアントは、仮想ネットワーク検証サービスが仮想ネットワークから記述情報を直接得ることを可能にするパーミッションを、仮想ネットワーク検証サービスに与えることができる。仮想ネットワーク検証サービスは、宣言型論理プログラミング言語（例えば、Ｄａｔａｌｏｇ）に従って記述情報を論理プログラムとして符号化することができる。
【００９２】
１０３０に示されるように、仮想ネットワーク検証サービスは、宣言型論理プログラミング言語（例えば、Ｄａｔａｌｏｇ）制約ソルバエンジンを使用して、符号化された仮想ネットワーキングルールに従って、符号化された記述に対するクエリを解決し得る。１０４０に示されるように、クエリ解決の結果（例えば、クエリによって提示された質問に対する回答）がフォーマットされ、クライアントに提供され得る。フォーマットされた結果は、文字形式結果（例えば、「ＹＥＳ」、「ＮＯ」、「ＴＲＵＥ」、または「ＦＡＬＳＥ」などのクエリによって提示された制約に対する回答を表すテキスト、クエリによって提示された制約を満たすインスタンスのリストなど）、および／またはグラフィカル結果（例えば、クエリを解決することによって判定された２つ以上のインスタンス間の関係のグラフィカル表現、クエリを解決することによって特定された仮想ネットワーク特定インスタンスのグラフィカル表現など）を含み得る。
【００９３】
要素１０４０から要素１０１０に戻る矢印によって示されるように、要素１０１０〜１０４０を繰り返し行って、クライアントの仮想ネットワークについての複数のクエリを提示し、解決することができる。実施形態によっては、例えば、クライアントは、一連のクエリを含むスクリプトを書いて、そのスクリプトを実行してクエリを仮想ネットワーク検証サービスに提示し、またそこから結果を受信することができる。図１０に示すように、実施形態によっては、仮想ネットワーク検証サービスは、仮想ネットワークについての記述情報を得て、仮想ネットワーク検証サービスが受信する各クエリに対して記述情報を符号化された記述として符号化し、クエリを解決する際に記述が最新のものであることを保証することができる。しかし、実施形態によっては、仮想ネットワーク検証サービスは、仮想ネットワークについての記述情報を取て、符号化し、符号化された記述を使用して２つ以上のクエリを処理することができる。
【００９４】
図１１は、いくつかの実施形態による、クライアントが記述情報およびクエリを仮想ネットワーク検証サービスに提供する、プロバイダネットワークのクライアントに仮想ネットワークについての情報を提供するための方法のフローチャートである。１１００に示されるように、クライアント（ネットワーク到達可能性アナライザなど）は、例えばプロバイダネットワークサービスＡＰＩによって提供されるＤＥＳＣＲＩＢＥコールを使用して、仮想ネットワークから記述情報を得る。１１１０に示されるように、クライアントが、仮想ネットワーク検証サービスにクエリおよび記的情報を送信する。１１２０に示されるように、検証サービスが、仮想ネットワークについての記述情報を符号化する。１１３０に示されるように、検証サービスが、制約ソルバエンジンを使用して、符号化された仮想ネットワークルールに従って、符号化された記述に対するクエリを解決する。１１４０に示されるように、仮想ネットワーク検証サービスは、クエリ解決の結果をクライアントに提供する。
【００９５】
図１２は、いくつかの実施形態による、クライアントが、記述情報、および仮想ネットワークにアクセスするためのパーミッションを仮想ネットワーク検証サービスに提供する、プバイダネットワークのクライアントに仮想ネットワークについての情報を提供する方法のフローチャートである。１２００に示されるように、クライアント（ネットワーク到達可能性アナライザなど）が、サービスが仮想ネットワークから記述的情報を得ることを可能にするパーミッション、例えば、仮想ネットワークを記述するメタデータを維持する１つ以上のプロバイダネットワークサービスへのＤＥＳＣＲＩＢＥコールを使用して、仮想ネットワークについての情報を得るためのパーミッションを、仮想ネットワーク検証サービスに与える。１２１０に示されるように、クライアントが、仮想ネットワーク検証サービスにクエリを送信する。１２２０に示されるように、仮想ネットワーク検証サービスが、例えば、仮想ネットワークを記述するメタデータを維持する１つ以上のプロバイダネットワークサービスへのＤＥＳＣＲＩＢＥコールを使用して、仮想ネットワークから記述情報を得る。１２３０に示されるに、仮想ネットワーク検証サービスが仮想ネットワークについての記述情報を符号化する。１２４０に示されるように、仮想ネットワーク検証サービスが、制約ソルバエンジンを使用して、ルールに従って、符号化された記述に対するクエリを解決する。１２５０に示されるように、仮想ネットワーク検証サービスは、クエリ解決の結果をクライアントに提供する。
【００９６】
図１３は、いくつかの実施形態による、２つ以上のピア型仮想ネットワークを含む、プロバイダネットワーク環境におけるクライアントの仮想ネットワーク実装形態を示す。図１３は、本明細書で説明される、仮想ネットワーク検証サービス１３３０において使用され得る仮想ネットワーキングルール例を部分的に説明するために提供される。図１３に示されるように、プロバイダネットワーク１３００上のクライアントの仮想ネットワーク実装形態１３１０は、２つ以上の仮想ネットワーク１３２０を含み得る。図１３は、クライアントの仮想ネットワーク実装形態１３１０における２つの仮想ネットワーク１３２０Ａおよび１３２０Ｂを示す。実施形態によっては、仮想ネットワーク１３２０Ａおよび１３２０Ｂは、それぞれ１つ以上のサブネットを含み得、セキュリティグループは、仮想ネットワーク１３２０Ａおよび１３２０内に確立され得る。ネットワークエンドポイント１３２２Ａおよび１３２２Ｂは、それぞれの仮想ネットワーク１３２０Ａおよび１３２０Ｂにおけるネットワーキングプリミティブの様々なインスタンス（例えば、リソースインスタンス）のネットワークインターフェースを表す。仮想ネットワーク１３２０Ａおよび１３２０Ｂ上のインスタンスがインターネットなどの外部ネットワーク１３５０を横断する必要なしにプロバイダネットワーク１３００にわたって安全に通信することを可能にするピアリング接続１３２４が、仮想ネットワーク１３２０Ａと１３２０Ｂとの間にプロバイダネットワーク１３００にわたって確立され得る。
【００９７】
「プライベートルーティング」のルール例を以下に示す。これらの例は、限定的であることを意図するものではない。これらの例で使用される「ルーティング」とは、ファイアウォールなしで、ＩＰパケットが１つのエンドポイントから別のエンドポイントに流れることができるかどうかを意味する。仮想ネットワーク実装形態１３１０内の２つのエンドポイント間のルーティングは、「プライベートルーティング」と呼ばれることがある。仮想ネットワーク実装形態１３１０において、両方のエンドポイントが同じ仮想ネットワーク１３２０にあるか、または異なる仮想ネットワーク１３２０にあるかに応じて、このルールは、異なる可能性がある。以下では、仮想ネットワーク実装形態１３１０においてパケットが２つのエンドポイント間を流れ得るかどうかを判断するための記述的論理プログラミング言語に従うルール例を記述する。
ｒｏｕｔａｂｌｅ−ｐｒｉｖａｔｅ：ｅｎｄｐｏｉｎｔ−＞ｅｎｄｐｏｉｎｔ−＞ｔｙｐｅ
−：ｒｏｕｔａｂｌｅ−ｐｒｉｖａｔｅ  Ｅｎｄｐｏｉｎｔ１  Ｅｎｄｐｏｉｎｔ２
＜−ｒｏｕｔａｂｌｅ−ｐｒｉｖａｔｅ−ｏｎｅ−ｗａｙ  Ｅｎｄｐｏｉｎｔ１  Ｅｎｄｐｏｉｎｔ２
＜−ｒｏｕｔａｂｌｅ−ｐｒｉｖａｔｅ−ｏｎｅ−ｗａｙ  Ｅｎｄｐｏｉｎｔ２  Ｅｎｄｐｏｉｎｔ１
【００９８】
最初の行は、エンドポイントのタイプを定義する。Ｅｎｄｐｏｉｎｔ１およびＥｎｄｐｏｉｎｔ２は、変数である。（ｒｏｕｔａｂｌｅ−ｐｒｉｖａｔｅ−ｏｎｅ−ｗａｙ  Ｅｎｄｐｏｉｎｔ１  Ｅｎｄｐｏｉｎｔ２）および（ｒｏｕｔａｂｌｅ−ｐｒｉｖａｔｅ−ｏｎｅ−ｗａｙ  Ｅｎｄｐｏｉｎｔ２  Ｅｎｄｐｏｉｎｔ１）が両方とも真の場合、ルール（ｒｏｕｔａｂｌｅ−ｐｒｉｖａｔｅ  Ｅｎｄｐｏｉｎｔ１  Ｅｎｄｐｏｉｎｔ２）は、真と評価される（そうでなければ偽）。仮想ネットワーク１３２０内のエンドポイント間のルーティングでは、ルールｒｏｕｔａｂｌｅ−ｐｒｉｖａｔｅ−ｏｎｅ−ｗａｙは、以下のように定義され得る。
ｒｏｕｔａｂｌｅ−ｐｒｉｖａｔｅ−ｏｎｅ−ｗａｙ：ｅｎｄｐｏｉｎｔ−＞ｅｎｄｐｏｉｎｔ  −＞ｔｙｐｅ
−：ｒｏｕｔａｂｌｅ−ｐｒｉｖａｔｅ−ｏｎｅ−ｗａｙ  Ｅｎｄｐｏｉｎｔ１  Ｅｎｄｐｏｉｎｔ２
＜−ｅｎｄｐｏｉｎｔ−ｈａｓ−ｖｉｒｔｕａｌ−ｎｅｔｗｏｒｋ  Ｅｎｄｐｏｉｎｔ１  Ｖｎｅｔｗｏｒｋ
＜−ｅｎｄｐｏｉｎｔ−ｈａｓ−ｖｉｒｔｕａｌ−ｎｅｔｗｏｒｋ  Ｅｎｄｐｏｉｎｔ２  Ｖｎｅｔｗｏｒｋ
【００９９】
Ｅｎｄｐｏｉｎｔ１およびＥｎｄｐｏｉｎｔ２は、変数である。Ｖｎｅｔｗｏｒｋは、同じ変数である（すなわち、同じ仮想ネットワーク１３２０を示す）。このルールは、Ｅｎｄｐｏｉｎｔ１およびＥｎｄｐｏｉｎｔ２の両方が同じ仮想ネットワーク１３２０内にある場合には真（そうでない場合には偽）と評価する。
【０１００】
ピアリング接続１３２４を通した、様々な仮想ネットワーク１３２０内のエンドポイント２０２２間のルーティングでは、ルールｒｏｕｔａｂｌｅ−ｐｒｉｖａｔｅ−ｏｎｅ−ｗａｙは、以下のように定義され得る。「／／」で始まるテキストは、コメントである。
−：ｒｏｕｔａｂｌｅ−ｐｒｉｖａｔｅ−ｏｎｅ−ｗａｙ  Ｅｎｄｐｏｉｎｔ１  Ｅｎｄｐｏｉｎｔ２
／／エンドポイントのＩＰを調べる
＜−ｅｎｄｐｏｉｎｔ−ｈａｓ−ｐｒｉｖａｔｅ−ｉｐ  Ｅｎｄｐｏｉｎｔ１  Ｉｐ１
＜−ｅｎｄｐｏｉｎｔ−ｈａｓ−ｐｒｉｖａｔｅ−ｉｐ  Ｅｎｄｐｏｉｎｔ１  Ｉｐ２
／／エンドポイントの仮想ネットワークを調べる
＜−ｅｎｄｐｏｉｎｔ−ｈａｓ−ｖｉｒｔｕａｌ−ｎｅｔｗｏｒｋ  Ｅｎｄｐｏｉｎｔ１  Ｖｎｅｔｗｏｒｋ１
＜−ｅｎｄｐｏｉｎｔ−ｈａｓ−ｖｉｒｔｕａｌ−ｎｅｔｗｏｒｋ  Ｅｎｄｐｏｉｎｔ２  Ｖｎｅｔｗｏｒｋ２
／／ピアリングのＣＩＤＲ（クラスレスドメイン間ルーティング）を調べる
＜−ｐｅｅｒｅｄ−ｃｉｄｒｓ  Ｐｃｘ  Ｖｎｅｔｗｏｒｋ１  Ｃｉｄｒ１  Ｖｎｅｔｗｏｒｋ２  Ｃｉｄｒ２
／／ソースエンドポイントのルートテーブルを調べる
＜−ｅｎｄｐｏｉｎｔ−ｈａｓ−ｒｔｂ  Ｅｎｄｐｏｉｎｔ１  Ｒｔｂ１
／／テーブル内のルートのＣＩＤＲを調べ、そのルートが有効であるか確認する
＜−ａｔｏｍ／ｐｃｘ−ｒｏｕｔｅ  Ｒｔｂ１  Ｐｃｘ  Ｃｉｄｒ３  ｒｏｕｔｅ−ｓｔａｔｅ／ａｃｔｉｖｅ
／／３つのＣＩＤＲすべてがそれぞれのＩＰと一致することを確認する
＜−ｃｉｄｒ−ｍａｔｃｈｅｓ−ｐｒｉｖａｔｅ−ｉｐ  Ｃｉｄｒ１  Ｉｐ１
＜−ｃｉｄｒ−ｍａｔｃｈｅｓ−ｐｒｉｖａｔｅ−ｉｐ  Ｃｉｄｒ２  Ｉｐ２
＜−ｃｉｄｒ−ｍａｔｃｈｅｓ−ｐｒｉｖａｔｅ−ｉｐ  Ｃｉｄｒ３  Ｉｐ２
【０１０１】
図１４は、いくつかの実施形態による、プロバイダネットワーク上の仮想ネットワーク例内のサブネットおよびセキュリティグループを示す。上で述べたように、ネットワーク到達可能性アナライザは、セキュリティグループに変更を行うことを含め、ポートを閉じる、かつ／またはポートを到達不能にするという是正措置を勧告する、かつ／または行うことができる。実施形態によっては、プロバイダネットワークは、クライアントが、クライアントの仮想ネットワーク１４１０内に、サブネット１４１４内に、またはサブネット１４１４にわたって、仮想セキュリティグループ１４１６を確立し、管理することを可能にし得る。一実施形態において、セキュリティグループ１４１６は、リソースインスタンス１４１８の論理上のグループ化であり、セキュリティグループルールに従って、セキュリティグループ１４１６内の１つ以上のリソースインスタンス１４１８に到達することを許されたトラフィックを制御する仮想ファイアウォールとして機能する。クライアントは、仮想ネットワーク１４１０内に１つ以上のセキュリティグループ１４１６を確立し、仮想ネットワーク１４１０内の各リソースインスタンス１４１８をセキュリティグループ１４１６のうちの１つ以上に関連付けることができる。実施形態によっては、クライアントは、セキュリティグループ１４１６に関連付けられたリソースインスタンス１４１８に到達することを許されたインバウンドトラフィックを制御する各セキュリティグループ１４１６に対するルールを確立し、かつ／または修正することができる。
【０１０２】
図１４に示される仮想ネットワーク例１４１０では、仮想ネットワークは１４１０は、２つのサブネット１４１４Ａと１４１４Ｂとに細分される。仮想ネットワーク１４１０へのアクセスは、ゲートウェイ１４３０によって制御される。各サブネット１４１４は、それぞれのサブネット１４１４上のリソースインスタンス１４１８へ（また、それから）トラフィックを送るように働く少なくとも１つのルータ１４１２を含み得る。実施形態によっては、ネットワークアクセス制御リスト（ＡＣＬ）を使用して、ルータ１４１２においてサブネット１４１４へのアクセスを制御することができる。図１４に示される例では、リソースインスタンス１４１８Ａ〜１４１８Ｅがサブネット１４１４Ａ上にあり、リソースインスタンス１４１８Ｆ〜１４１８Ｊがサブネット１４１４Ｂ上にある。クライアントは、４つのセキュリティグループ１４１６Ａ〜１４１６Ｄを確立している。図１４に示されるように、セキュリティグループは、サブネット１４１４Ａ上のリソースインスタンス１４１８Ａおよび１４１８Ｂとサブネット１４１４Ｂ上のリソースインスタンス１４１８Ｆとを含むセキュリティグループ１４１６Ａがそうであるように、サブネット１４１４にわたって延在し得る。また、リソースインスタンス１４１８は、セキュリティグループ１４１６Ａおよび１４１６Ｂに含まれるリソースインスタンス１４１８Ａがそうであるように、２つ以上のセキュリティグループ１４１６に含まれ得る。
【０１０３】
例示的なコンピュータシステム
少なくともいくつかの実施形態では、本明細書に記載の技術のうちの１つ以上の一部または全部を実装するコンピュータシステムは、１つ以上のコンピュータ可読媒体を含むか、またはそれにアクセスするように構成されるコンピュータシステムを含み得る。図１５は、そのようなコンピューティングデバイス１５００を示している。図示の実施形態では、コンピューティングデバイス１５００は、入力／出力（Ｉ／Ｏ）インターフェース１５３０を介してシステムメモリ１５２０に結合された１つ以上のプロセッサ１５１０Ａ−１５１０Ｎを含む。コンピューティングデバイス１５００は、Ｉ／Ｏインターフェース１５３０に結合されたネットワークインターフェース１５４０をさらに含む。
【０１０４】
様々な実施形態において、コンピューティングデバイス１５００は、１つのプロセッサを含む単一プロセッサシステム、またはいくつかのプロセッサ１５１０Ａ〜１５１０Ｎ（例えば、２、４、８、または別の適切な個数）を含むマルチプロセッサシステムであり得る。プロセッサ１５１０Ａ〜１５１０Ｎは、命令を実行することができる任意の適切なプロセッサを含み得る。例えば、様々な実施形態において、プロセッサ１５１０Ａ〜１５１０Ｎは、ｘ８６、ＰｏｗｅｒＰＣ、ＳＰＡＲＣ、もしくはＭＩＰＳ  ＩＳＡなどの様々な命令セットアーキテクチャ（ＩＳＡ：Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ）のいずれか、または他のいずれかのＩＳＡを実装するプロセッサであり得る。マルチプロセッサシステムでは、プロセッサ１５１０Ａ〜１５１０Ｎのそれぞれは、通常、同じＩＳＡを実装することができるが、必ずしもそうとは限らない。
【０１０５】
システムメモリ１５２０は、プロセッサ１５１０Ａ〜１５１０Ｎによってアクセス可能なプログラム命令およびデータを格納するように構成され得る。様々な実施形態において、システムメモリ１５２０は、スタティックランダムアクセスメモリ（ＳＲＡＭ：Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、シンクロナスダイナミックＲＡＭ（ＳＤＲＡＭ：Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  ＲＡＭ）、不揮発性／フラッシュ型メモリ、または任意の他のタイプのメモリなどの任意の適切なメモリテクノロジーを使用して実装され得る。図示の実施形態では、上記のこれらの方法、技法、およびデータなど、１つ以上の望ましい機能を実装するプログラム命令およびデータが、コード（すなわち、プログラム命令）１５２５およびデータ１５２６としてシステムメモリ１５２０内に格納されて示されている。図示の実施形態では、システムメモリ１５２０は、上で述べたネットワークセキュリティ評価装置１００の態様を実装するプログラムコードおよびデータも格納する。
【０１０６】
ある実施形態では、Ｉ／Ｏインターフェース１５３０は、プロセッサ１５１０Ａ〜１５１０Ｎと、システムメモリ１５２０と、ネットワークインターフェース１５４０または他の周辺インターフェースを含むデバイス内の任意の周辺デバイスと、の間のＩ／Ｏトラフィックを調整するように構成され得る。実施形態によっては、Ｉ／Ｏインターフェース１５３０は、ある構成要素（例えば、システムメモリ１５２０）からのデータ信号を別の構成要素（例えば、プロセッサ１５１０Ａ〜１５１０Ｎ）による使用に適したフォーマットに変換するために必要ないかなるプロトコル、タイミング、または他のデータの変換も行うことができる。実施形態によっては、Ｉ／Ｏインターフェース１５３０は、例えば、周辺コンポーネント相互接続（ＰＣＩ：Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バス規格またはユニバーサルシリアルバス（ＵＳＢ：Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）規格の一種など、様々なタイプの周辺バスを通して付設されたデバイスへのサポートを含み得る。実施形態によっては、Ｉ／Ｏインターフェース１５３０の機能は、例えば、ノースブリッジおよびサウスブリッジなどの２つ以上の別々の構成要素に分割され得る。また、実施形態によっては、システムメモリ１５２０へのインターフェースなど、Ｉ／Ｏインターフェース１５３０の機能性の一部または全部が、プロセッサ１５１０Ａ〜１５１０Ｎに直接組み込まれ得る。
【０１０７】
ネットワークインターフェース１５４０は、コンピューティングデバイス１５００と、１つまた複数のネットワーク１５５０に付設された他のデバイス１５６０との間でデータを交換することを可能にするように構成され得る。様々な実施形態において、ネットワークインターフェース１５４０は、例えば、イーサネットネットワーク型など、任意の適切な有線または無線の一般的なデータネットワークを介した通信に対応することができる。さらに、ネットワークインターフェース１５４０は、アナログ音声ネットワークもしくはデジタルファイバ通信ネットワークなどの電気通信／電話ネットワーク、ファイバチャネルＳＡＮなどのストレージエリアネットワーク、または他の任意の適切なタイプのネットワークおよび／もしくはプロトコルを介した通信に対応することができる。
【０１０８】
実施形態によっては、システムメモリ１５２０は、対応する方法および装置の実施形態を実装するための上記のようなプ ログラム命令およびデータを格納するように構成されたコンピュータ可読（すなわち、コンピュータアクセス可能）媒体の一実施形態であり得る。例えば、システムメモリ１５２０は、ネットワークセキュリティ評価装置１００に関連するプログラムコードおよびデータを格納することができる。実施形態によっては、プログラム命令および／またはデータは、様々なタイプのコンピュータ可読媒体上で受信され、送信され、または格納され得る。一般的に言えば、コンピュータ可読媒体は、Ｉ／Ｏインターフェース１５３０を介してコンピューティングデバイス１５００に結合された磁気または光学媒体、例えばディスクまたはＤＶＤ／ＣＤなどの非一時的記憶媒体またはメモリ媒体を含み得る。非一時的コンピュータ可読記憶媒体は、システムメモリ１５２０または別のタイプのメモリとしてコンピューティングデバイス１５００のいくつかの実施形態に含まれ得る、ＲＡＭ（例えば、ＳＤＲＡＭ、ＤＤＲ  ＳＤＲＡＭ、ＲＤＲＡＭ、ＳＲＡＭなど）、ＲＯＭなどの任意の揮発性媒体または不揮発性媒体も含み得る。さらに、コンピュータ可読媒体は、伝送媒体、またはネットワークインターフェース１５４０を介して実装され得るような、ネットワークおよび／または無線リンクなどの通信媒体を介して伝達される、電気信号、電磁信号、もしくはデジタル信号などの信号を含み得る。図１５に示されるものなどの複数のコンピューティングデバイスの一部またはすべてを使用して、様々な実施形態において、記載の機能性を実装することができ、例えば、様々な異なるデバイスおよびサーバで実行されるソフトウェアコンポーネントが連携して機能性を提供し得る。実施形態によっては、記載の機能性の一部は、記憶装置デバイス、ネットワークデバイス、または様々なタイプのコンピュータシステムを使用して実装され得る。本明細書で使用される際、「コンピューティングデバイス（ｃｏｍｐｕｔｉｎｇ  ｄｅｖｉｃｅ）」という用語は、少なくともこれらのタイプのデバイスのすべてを指すが、これらのタイプのデバイスに限定されるものではない。
【０１０９】
図面に示され、本明細書で説明される様々な方法は、方法の実施形態の例を表す。方法は、ソフトウェア、ハードウェア、またはそれらの組み合わせで実装され得る。方法のうちの様々な方法で、ステップの順序が変更され得、様々な要素の追加、並べ替え、組み合わせ、省略、修正などが可能である。ステップのうちの様々なステップが自動的に（例えば、ユーザ入力によって直接促されることなく）、かつ／またはプログラムによって（例えば、プログラム命令に従って）行われ得る。
【０１１０】
本開示の実施形態は、以下の条項によって記述され得る。
１．システムであって、
ネットワークセキュリティ評価装置を実装するように構成された１つ以上のコンピューティングデバイスを備え、前記ネットワークセキュリティ評価装置が、
ホストコンピュータを含むネットワークに対して、ネットワーク構成データの１つ以上のクエリを生成することであって、前記１つ以上のクエリがクエリ言語で表され、前記１つ以上のクエリが、少なくとも部分的にルールのセットに基づいて生成される、生成することと、
開いており、かつ前記ネットワークの外側から到達可能である、前記ホストコンピュータにある１つ以上のポートを判定することであって、前記１つ以上のポートが、前記１つ以上のクエリの結果に少なくとも部分的に基づいて判定される、判定することと、
前記１つ以上のポートをリッスンしている１つ以上のプロセスを判定することであって、前記１つ以上のプロセスが、前記ホストコンピュータにインストールされたエージェントを使用して判定される、判定することと、
前記１つ以上のポートおよび前記１つ以上のプロセスを記述したレポートを生成することと、を行うように、構成されている、システム。
２．前記ネットワークセキュリティ評価装置が、
前記ネットワークの外側から前記１つ以上のポートへの１つ以上のルートを判定決および報告するようにさらに構成されている、条項１に記載のシステム。
３．前記ネットワークセキュリティ評価者が、
前記１つ以上のポートを、開いており、かつ前記ネットワークの外側から到達可能であるようにする、１つ以上の構成設定を判定および報告するようにさらに構成されている、条項１または２のいずれか一項に記載のシステム。
４．前記ネットワークセキュリティ評価装置が、
行われる場合、前記ポートのうちの１つ以上を閉じるか、または前記ポートのうちの１つ以上を前記ネットワークの外側から到達不能にする、１つ以上の是正措置を判定および報告するようにさらに構成されている、条項１から３のいずれか一項に記載のシステム。
５．１つ以上のコンピューティングデバイスによって行われるコンピュータ実装方法であって、
コンピューティングデバイスを含むネットワークに対して、ネットワーク構成データの分析を行うことと、
別のコンピューティングデバイスから到達可能である前記コンピューティングデバイスにある１つ以上のポートを判定することであって、前記１つ以上のポートが前記分析に少なくとも部分的に基づいて判定される、判定することと、
前記１つ以上のポートへの１つ以上のルートを判定することであって、前記１つ以上のルートが、少なくとも部分的に前記分析に基づいて判定される、判定することと、
前記１つ以上のポートおよび前記１以上のルートを記述するレポートを生成することと、を含む、コンピュータ実装方法。
６．
前記１つ以上のポートをリッスンしている１つ以上のプロセスを判定および報告することであって、前記１つ以上のプロセスが、前記コンピューティングデバイスにインストールされたエージェントソフトウェアを使用して判定される、ことをさらに含む、条項５に記載の方法。
７．
前記１つ以上のポートを到達可能であるようにする、１つ以上の構成設定を判定および報告することをさらに含む、条項５または６のいずれか一項に記載の方法。
８．
行われる場合、前記ポートのうちの１つ以上を到達不能にする、１つ以上の是正措置を判定および報告することをさらに含む、条項５から７のいずれか一項に記載の方法。
９．
ユーザーインターフェイスに、選択された場合に前記是正措置のうちの少なくとも１つが行われるようにする、１つ以上のインターフェース要素を表示することをさらに含む、条項８に記載の方法。
１０．前記分析が、前記ネットワーク構成データの１つ以上のクエリに少なくとも部分的に基づいて行われ、前記１つ以上のクエリが、クエリ言語で表され、前記１つ以上のクエリが、少なくとも部分的にルールのセットに基づいて生成される、条項５から９のいずれか一項に記載の方法。
１１．前記１つ以上のポートにパケットを送信せずに、前記１つ以上のポートが判定される、条項５から１０のいずれか一項に記載の方法。
１２．
追加のコンピューティングデバイスから前記１つ以上のポートに１つ以上のパケットを送信することにより、前記１つ以上のポートが到達可能であることを検証することをさらに含む、条項５から１１のいずれか一項に記載の方法。
１３．プログラム命令を格納するコンピュータ可読記憶媒体であって、前記プログラム命令が、
ホストコンピュータを含むネットワークに対して、ネットワーク構成データの分析を行うことと、
開いており、かつ別のコンピュータから到達可能である、前記ホストコンピュータにある１つまたは複数のポートを判定することであって、前記１つ以上のポートが、少なくとも部分的に前記分析の結果に基づいて判定される、判定することと、
前記１つ以上のポートをリッスンしている１つ以上のプロセスを判定することであって、前記１つ以上のプロセスが、前記ホストコンピュータにインストールされたエージェントを使用して判定される、判定することと、
前記１つ以上のポートおよび前記１つ以上のプロセスを記述したレポートを生することと、を行うようにコンピュータ実行可能である、コンピュータ可読記憶媒体。
１４．前記プログラム命令が、
前記１つ以上のポートをリッスンしている１つ以上のプロセスを判定および報告することであって、前記１つ以上のプロセスが、ホストコンピュータにインストールされたエージェントソフトウェアを使用して判定される、判定および報告すること、を行うようにさらにコンピュータ実行可能である、条項１３に記載のコンピュータ可読記憶媒体。
１５．前記プログラム命令が、
前記１つ以上のポートを開いており、かつ到達可能であるようにする、１つ以上の構成設定を判定および報告すること、を行うようにさらにコンピュータ実行可能である、条項１３または１４のいずれか一項に記載のコンピュータ可読記憶媒体。
１６．前記プログラム命令が、
行われる場合、前記ポートのうちの１つ以上を閉じるか、または前記ポートのうちの１つ以上を到達不能にする、１つ以上の是正措置を判定および報告すること、を行うように、さらにコンピュータ実行可能である、条項１３から１５のいずれか一項に記載のコンピュータ可読記憶媒体。
１７．前記プログラム命令が、
ユーザーインターフェイスに、選択された場合に前記是正措置のうちの少なくとも１つが行われるようにする、１つ以上のインターフェース要素を表示することをさらに含む、条項１６に記載の方法。
１８．前記分析が、前記ネットワーク構成データの１つ以上のクエリに少なくとも部分的に基づいて行われ、前記１つ以上のクエリが、クエリ言語で表され、前記１つ以上のクエリが、少なくとも部分的にルールのセットに基づいて生成される、条項１３から１７のいずれか一項に記載のコンピュータ可読記憶媒体。
１９．別のコンピュータから前記１つ以上のポートにパケットを送信することなく、前記１つ以上のポートが判定される、条項１３から１８のいずれか一項に記載のコンピュータ可読記憶媒体。
２０．信頼できる場所のホワイトリストに少なくとも部分的に基づき、前記リポートから、さらに１つ以上の開いており、かつ到達可能なポートが前記リポートから除外される、条項１３から１９のいずれか一項に記載のコンピュータ可読記憶媒体。
【０１１１】
本明細書の本発明の記載で使用される用語は、特定の実施形態のみを説明するためのものであり、本発明を限定することを意図するものではない。本発明の明細書および添付の特許請求の範囲で使用される際、単数形「ａ」、「ａｎ」、および「ｔｈｅ」は、文脈上そうでないことが明確に示されない限り、複数形も含むことを意図している。本明細書で使用される「および／または（ａｎｄ／ｏｒ）」という用語は、関連の挙げられた項目の１つ以上のありとあらゆる考えられる組み合わせを指し、含むことも理解されるであろう。本明細書で使用される際、用語「含む（ｉｎｃｌｕｄｅｓ）」、「含む（ｉｎｃｌｕｄｉｎｇ）」、「備える（ｃｏｍｐｒｉｓｅｓ）」、および／または「備える（ｃｏｍｐｒｉｓｉｎｇ）」は、述べられた特徴、整数、ステップ、動作、要素、および／または構成要素の存在を明示するが、１つ以上の他の特徴、整数、ステップ、動作、要素、構成要素、および／またはそれらのグループの存在または追加を排除するものではことがさらに理解されるであろう。
【０１１２】
本明細書で使用される際、用語「の場合（ｉｆ）」は、文脈に応じて、「いつ」または「時に」または「判定に応答して」または「検出に応答して」を意味すると解釈され得る。同様に、「判定された場合」または「（規定の条件またはイベント）が検出された場合」という言い回しは、文脈に応じて、「決定時に」または「判定に応答して」または「（規定の条件またはイベント）の検出時に」、または「（規定の条件またはイベント）の検出に応答して」を意味すると解釈され得る。
【０１１３】
本明細書では、第１、第２などの用語を使用して様々な要素を説明している場合があるが、これらの要素は、これらの用語によって限定されるべきではないことも理解されるであろう。これらの用語は、ある要素と別の要素を区別するためにのみ使用される。例えば、本発明の範囲から逸脱しない限り、第１のコンタクトを第２のコンタクトと言うことができ、同様に、第２のコンタクトを第１のコンタクトと言うことができる。第１のコンタクトと第２のコンタクトは、両方ともコンタクトであるが、同じコンタクトではない。
【０１１４】
請求項に係る発明の対象の完全な理解をもたらすように、多数の特定の細目が本明細書に示されている。しかし、これらの特定の細目を伴わずに請求項に係る発明の対象が実施されることが、当業者には理解されるであろう。他の例では、請求項に係る発明の対象を不明瞭にしないために、当業者に知られていると思われる方法、装置、またはシステムは、詳細には説明されていない。本開示の恩恵を受ける当業者に明らかであるように、様々な修正および変更がなされ得る。このような修正および変更をすべて受け入れ、したがって上記の説明が限定的な意味合いではなく例示的な意味合いで見られることを意図している。
【図１】
2021528749.tif 000003
【図２】
2021528749.tif 000004
【図３】
2021528749.tif 000005
【図４】
2021528749.tif 000006
【図５】
2021528749.tif 000007
【図６】
2021528749.tif 000008
【図７】
2021528749.tif 000009
【図８】
2021528749.tif 000010
【図９】
2021528749.tif 000011
【図１０】
2021528749.tif 000012
【図１１】
2021528749.tif 000013
【図１２】
2021528749.tif 000014
【図１３】
2021528749.tif 000015
【図１４】
2021528749.tif 000016
【図１５】
2021528749.tif 000017
【国際調査報告】
2021528749.tif 000018
2021528749.tif 000019