自動パケットレスネットワーク到達可能性分析のための方法、システム、およびコンピュータ可読媒体の様々な実施形態について述べる。実施形態によっては、ネットワーク到達可能性分析は、必ずしも従来のポートスキャンを行わないでも、行われる。ポート走査法に対するこれまでの取り組みでは、パケットが、外部エンティティから(例えば、パブリックネットワーク上で)1つ以上のコンピュータ上の様々なポートに送信される可能性があり、応答が待たれる可能性があり、このようなポートスキャンには、数日かかり、過度のネットワーク帯域幅を使用する可能性があった。ポートにパケットを送信せずに、本明細書に記載のネットワーク到達可能性分析では、コンピュータにあるどのポート(もしあれば)が、例えば、パブリックインターネットまたは同じネットワーク上の別のコンピュータに到達可能であるかを判定することができる。ネットワーク到達可能性分析では、外部エンティティからそれらのポートへの1つ以上のルートを判定することもできる。ネットワーク到達可能性分析では、様々なソースからのデータを組み合わせて結論を出すことができる。一実施形態において、ネットワーク到達可能性分析では、コンピュータが属するネットワークに対しネットワーク構成データのセットを問い合わせることができる。一実施形態において、ネットワーク到達可能性分析では、コンピュータにインストールされたエージェントソフトウェアからデータを取得して、例えば、どのプロセスが開ポートをリッスンしているかを判定することができる。ネットワーク到達可能性分析では、その調査結果の側面、例えば、開いており、かつ到達可能なポート、それらのポートへのルート、それらのポートをリッスンしているプロセス、ポートが開いており、かつ到達可能であることに対応している構成設定、開いており、かつ到達可能なポートに付随するセキュリティ上の懸念、セキュリティ上の懸念を改善する是正措置(例えば、構成設定の変更)、および/または他の任意の適切な情報、を記述したレポートを作成することができる。ネットワーク到達可能性分析は、自動化された形で、例えば、スケジュールに従って、またはイベントによってトリガされるのにつれて行われ得、必ずしもエンドユーザによって直接開始されるとは限らない。本明細書に記載の技法を使用すると、従来のポート走査法の時間がかかり、リソース集中型の性質とは対照的に、ネットワークのセキュリティが迅速かつ効率的に分析され得る。
当業者が本開示に照らして理解するように、実施形態は、特定の技術的利点を得ることができる可能性があり、特定の技術的利点には、(1)多くのコンピュータ上の多数のポートにパケットを送信し、応答を待つ必要性をなくすることによって、ネットワーク到達可能性分析の速さを改善すること、(2)多くのコンピュータ上の多数のポートにパケットを送信する必要をなくすことにより、ネットワーク到達可能性分析のネットワーク帯域幅要件を減らすこと、(3)それによりポートに到達することができるルートを見抜く力を提供することにより、ネットワークのセキュリティを向上させること、(4)開いており、かつ到達可能なポートをリッスンしているプロセスを見抜く力を提供することにより、ネットワークのセキュリティを向上させること、(5)ポートが到達可能であることをもたらす構成設定を報告するとともに、セキュリティ上の懸念を改善すると考えられる設定への変更を報告することにより、ネットワークのセキュリティを向上させること、(6)スキャナの場所からの到達可能性のみを確認する従来のポートスキャンよりも完全な見通しを提供することにより、ネットワークのセキュリティを向上させること、などのうちのいくつかまたはすべてが含まれる。
図1は、いくつかの実施形態による、自動パケットレスネットワーク到達可能性分析のためのシステム環境例を示す。実施形態によっては、ネットワークセキュリティ評価装置100は、ネットワーク上の1つ上のコンピューティングデバイスのセキュリティを分析して、例えば、それらのコンピュータ上のどのポートが開いており、かつ到達可能であるか(もしあれば)を判定することができる。分析の対象となるデバイスは、コンピュータ、ホストコンピュータ、ホスト、サーバ、インスタンス、またはコンピューティングリソースと呼ばれることもある。図1に示されるように、ホスト170A~170Nなどのコンピューティングデバイスのセットは、プライベートネットワーク180内に構成され得る。図示および例の目的で、2つのホスト170Aおよび170Nが示されているが、任意の適切な個数および構成のホストが、ネットワークセキュリティ評価装置100によって分析され得る。ホスト170A~170Nは、それらのハードウェアリソース、ソフトウェアリソース、ネットワーク構成などが同じであっても異なっていてもよい。
ホスト170A~170Nは、プライベートネットワーク180のネットワークリソースを使用して互いに通信するように構成され得る。ホスト170A~170Nのそれぞれは、ホスト170Aにはポート171A、またホスト170Nにはポート171Nなど、ネットワークポートを提供することができる。ポート171A~171Nは、ネットワーク通信のエンドポイントを表し得、ポート番号によって特定され得る。ポートは、ネットワークキングプロトコル、または伝送制御プロトコル(TCP:Transmission Control Protocol)およびユーザデータグラムプロトコル(UDP:User Datagram Protocol)などのトランスポート層プロトコルによって使用され得る。慣例上、特定のポート番号が特定のサービスに予約されている場合がある。共益サービスを実装するアプリケーションは、予約済みのポート番号を使用して、ポートを「リッスン」し、要求に応じて1対1のサーバークライアントダイアログを確立することにより、クライアントからのサービス要求を受信することができる。例えば、Simple Mail Transfer Protocol(SMTP)を実装するアプリケーションは、通常、入ってくる要求があるかTCPポート25をリッスンし、Post Office Protocol(POP)を実装するアプリケーションは、通常、入ってくる要求があるかTCP110をリッスンする。
プライベートネットワーク180は、特定の事業体または他の組織によって所有され、かつ/または運用されているコンピュータを含み得る。一実施形態において、プライベートネットワーク180の所有者またはオペレータは、ホスト170A~170Nが通常アクセスできないか、または外部エンティティ、例えば、パプリックインタ-ネットなどの1つ以上のパブリックネットワーク190を介して接続されたコンピュータに対してある程度の分離を有するはずであると予想し得る。しかし、ホスト170A~170N上の1つ以上のポートは、実際には、パブリックネットワーク190に到達可能であり得、またセキュリティ上の懸念をもたらす可能性があるように到達可能であり得る。例えば、例えばホスト170A~170Nから機密データを集めるために、またはホストを制御するために、特定の開ポートをリッスンしている特定のプロセスは、外部エンティティからの悪意のある攻撃に対して脆弱である可能性がある。本明細書に記載の技法を使用すると、ホスト170A~170N上のいずれの到達可能ポートも見付けることができ、場合によっては、セキュリティ上の懸念を解消するために修復することができる。
必ずしもポート171A~171Nにパケットを送信しなくても、ネットワークセキュリティ評価装置100は、どのポートが到達可能であるか(もしあれば)を判定することができる。一実施形態において、到達可能性分析では、ポートがパブリックネットワーク190を介して到達可能であるかどうかを判定することができる。一実施形態において、到達可能性分析では、ポートがプライベートネットワーク190を介して、例えば、ホスト170A~170Nのうちの別の1つに到達可能であるかどうかを判定することができる。一実施形態において、到達可能性分析では、ホスト上のポートが到達可能性ではないことを確認することができる。特定の1つ以上のホストに対して、分析は、自動化された形で、例えば、スケジュールに従って、またはイベントによってトリガされるのにつれて、行われ得、必ずしもエンドユーザによって直接開始されるとは限らない。例えば、分析は、ホストのネットワーク構成の変更に関連するイベントによってトリガされ得る。イベントは、このような変更を監視するプライベートネットワーク180のサービスまたはシステムによって発行され得る。
一実施形態において、ネットワークセキュリティ評価装置100は、ネットワーク構成データ110のセットを使用して、ホスト170A~170Nのうちの1つ以上に対してネットワーク到達可能性分析を行うことができる。ネットワーク構成データ110は、分析下のホストが属するネットワーク(例えば、プライベートネットワーク180)に関連する場合がある。ネットワーク構成データは、ホスト170A~170N、およびネットワーキングデバイス(ルータ、スイッチなど)のネットワーク構成またはその他のプロパティのスナップショットを表し得る。例えば、データ110は、仮想プライベートクラウド(VPC:Virtual Private Cloud)、サブネット、インスタンス、セキュリティグループ、アクセス制御リスト(ACL:Access Control List)、ロードバランサなどに関する情報を含み得る。データ110は、例えば仮想ネットワーキングルールのセットに従って、ネットワーク180においてネットワーキングがどのように働くかをモデル化するために使用され得る。一実施形態において、ネットワーク構成データ110の要素が、プライベートネットワーク180のサービスによって提供され得る。例えば、ネットワーク180は、仮想計算インスタンスに関するネットワーク構成データを提供する(例えば、APIを介して)、コンピューティング仮想化サービスを含み得、ネットワークは、仮想ストレージインスタンスに関するネットワーク構成データを提供する(例えば、APIを介して)、様々な類のストレージ仮想化サービスを含み得る。データ110は、例えば、ネットワーク180に実装され、インスタンスの記述(例えば、計算インスタンスに割り当てられた役割、リソースインスタンスに与えられたまたは与えられていないパーミッション、インスタンスに割り当てられたIPアドレスなど)を含み、インスタンス間の関係(例えば、インスタンス間のネットワークにわたるパス)を記述し、また外部エンティティ(例えば、仮想ネットワークの外部のエンティティによってアクセスされ得る計算インスタンス)へのインターフェースまたはアクセスポイントを記述する、ネットワーキングプリミティブのインスタンスを特定し得る。ネットワーク構成データ110およびその取得のさらなる態様は、図8~図15に関して以下で述べる。
図1に戻ると、一実施形態において、ネットワークセキュリティ評価装置100は、ネットワーク構成データ110を問い合わせることができるクエリ処理コンポーネント120を含み得る。ネットワークセキュリティ評価装置100は、クエリ125を生成し、クエリをクエリ処理コンポーネント120に提供し、クエリ結果126を受信し、その結果の分析を行って、どのポートが到達可能であるか(もしあれば)を判定することができる、クエリ集計・分析コンポーネント130も含み得る。クエリ125は、クエリ言語に従って表され得る。一実施形態において、クエリ言語は、ネットワークセキュリティ評価装置100が、制約問題としてネットワークについての再帰クエリを含むクエリを表し、制約ソルバ(例えば、充足可能性モジュロ理論(SMT:Satisfiability Modulo Theory)ソルバ)エンジンを使用してクエリを解決することによって、クエリに対する結果を提供することを可能にする、宣言型論理プログラミング言語に相当し得る。クエリの例としては、「VNVS query-i Iist:canーssh(AB)」を挙げることができ、これは、インスタンスAがインスタンスBにSSHすることができるようなすべてのインスタンス対のリストを提供するよう、仮想ネットワーク検証サービス(VNVS:Virtual Network Varification Service)に要求する。ネットワークセキュリティ評価装置100は、分析の必要性に応じて、クエリ125を動的にビルドするか、または事前ビルドのクエリを選択することができる。一実施形態において、クエリは、アナライザ100のエンドユーザ、例えば、彼女または彼の管理下にある1つ以上のホストのネットワークセキュリティを分析しようとするネットワーク管理者によって書かれる必要はない。クエリ125のさらなる態様は、図8~図15に関して以下に述べる。
図1に戻ると、一実施形態において、ネットワークセキュリティ評価装置100は、ネットワーク到達可能性に関連するルール135のパッケージに従って、働くことができる。一実施形態において、クエリ125は、ルール135に従って生成され得る。例えば、ルール135は、到達可能性について確認される共通サービスに対しポート番号のセットを定義することができ、アナライザ100は、分析下のホストがそれらのポート番号に到達可能であるかどうかを見極めるためのクエリを生成することができる。クエリ125は、分析下の1つ以上のホスト用のネットワークアクセスに影響を与える構成データを取得するために生成され得る。ルールパッケージ135は、セキュリティグループ、仮想プライベートクラウド(VPC)、サブネット、アクセス制御リスト、エラスティックロードバランサ、インターネットゲートウェイ、egress-onlyインターネットゲートウェイ、ネットワークアドレス変換、ルーティングテーブル、ピア型VPC、仮想プライベートネットワーク(VPN:Virtual Private Network)、Direct Connection(DX)などのネットワーキングコンポーネントを分析することができる。一実施形態において、クエリ結果126をルール135に従って分析し、例えば、様々なタイプのネットワーキングコンポーネントがどのように働くかの理解を使用して、どのポートが到達可能であるかを判定することができる。
いずれかのポートが到達可能であると見なされる場合、ネットワークセキュリティ評価装置100は、外部エンティティからそれらのポートへの1つ以上のルートを判定することもできる。一実施形態において、ルートは、ルール135に従って、かつ/またはクエリ言語を使用して判定され得る。例えば、1つ以上のクエリを使用して、アナライザ100は、ホスト間またはホストと外部エンティティとの間にネットワークにわたるパスまたはルート(例えば、リソースからHTTPSゲートウェイへのパスであり、それを介して外部エンティティが仮想ネットワーク上のリソースにアクセスすることができる)がある(すなわち、ネットワーク接続性がある)と判断することができる。パスは、エンドポイント間にネットワーク接続性をもたらすネットワークにわたる直接パスであってもよく、あるいはルート上の1つ以上のホップを通過し、エンドポイント間にネットワーク接続性をもたらす推移的なパスであってもよい。ホストのネットワーク到達可能性を見極めるのに、事前定義されたルール135のセットを適用することによって、クエリ集計・分析コンポーネント130は、手動分析(例えば、ネットワーク管理者による)の当て推量および複雑さを取り除く自動ソリューションを表し得る。
一実施形態において、例えば、クエリ集計・分析コンポーネント130は、ルール135を使用して、インスタンスがインターネットから、または信頼できる場所の外側からのインターネット制御メッセージプロトコル(ICMP:Internet Control Message Protocol)アクセスを許すかどうかを確認することができる(そのように構成されている場合)。一実施形態において、別の例として、クエリ集計・分析コンポーネント130は、ルール135を使用して、開いており、かつインターネットからまたは信頼できる場所の外側から到達可能であるTCP/UDPポートをインスタンスが有するかどうかを確認することができる(そのように構成されている場合)。ルール135は、具体的には、安全性の低いポート、管理ポート、データベースポート、イントラネットポート、および他のタイプのポートを調査することができる。一実施形態において、クエリ集計・分析コンポーネント130は、ルール135を使用して、インスタンスが任意のポートのどこからもアクセスできないようになっているかどうかを確認することができる。一実施形態において、クエリ集計・分析コンポーネント130は、ルール135を使用して、サブネットが、セキュリティグループごとに、信頼できる場所の外側からのICMPまたはTCP/UDPポートアクセスを許すかどうかを確認することができる。一実施形態において、クエリ集計・分析コンポーネント130は、ルール135を使用して、サブネットにどこからもアクセスすることができないインスタンスがあるかどうか、すべてのインバウンドトラフィックが阻止されているかどうか、またはエラスティックネットワークインターフェース(ENI:Elastic Network Interface)がないかどうかを確認することができる。
一実施形態において、いずれの到達可能ポートも、従来のポートスキャンを行うことなく、評価装置100によって見付けられ得る。一実施形態において、評価装置100は、例えば、影響を受けたポートに対してのみ、限られた範囲のポートスキャンを行うことによって、パケットレス調査結果を確認することができる。例えば、TCPポート22がホスト170A上で到達可能であることが分かった場合、ネットワークセキュリティ評価装置100は、外部エンティティ(例えば、パブリックネットワーク190を介してホスト170Aに接続された別のサーバ)に、1つ以上のパケットをホスト170A上のTCPポート22に送信させ、ホストからの応答を待たせ、アナライザへ報告させることができる。このような応答が受信されない場合、ネットワークセキュリティ評価装置100は、ポートが実際には到達可能ではないと判断することができる。例えば、ポートがファイアウォールによって保護されている可能性がある。応答が受信された場合、ネットワークセキュリティ評価装置100は、ポートが開いており、かつ到達可能であることを確認することができる。このようなポートスキャンを、すでに到達可能であると推定されているポートに制限することにより、ネットワークセキュリティ評価装置100は、フルポートスキャンに必要な時間およびネットワーク帯域幅を大幅に縮小することができる。
ネットワークセキュリティ評価装置100は、分析下のホスト170A~170Nのうちの1つ以上に対して、ネットワーク到達可能性および/またはネットワークセキュリティに関する調査結果を生成することができる。図3に関して以下に述べるように、ネットワークセキュリティ評価装置100は、様々なソースからのデータ(場合によっては、エージェントによって収集されたオンホストデータを含む)を組み合わせて、このような調査結果を生成することができる。図1に戻ると、報告コンポーネント140を使用して、ネットワークセキュリティ評価装置100は、その調査結果の側面を記述したレポートを作成することができる。一実施形態において、報告コンポーネント140は、特定のホストにとって到達可能である1つ以上のポート141を示すか、または記述することができる。一実施形態において、報告コンポーネント140は、特定のホストにとって到達できない1つ以上のポート141を示すか、または記述することができる。一実施形態において、報告コンポーネント140は、到達可能であるポートへの1つ以上のルート142を示すか、または記述することができる。一実施形態において、報告コンポーネント140は、その代わりに、特定のホストにとって到達可能なポートがないことを開示することができる。このような報告の一例が、図5に関して述べられている。
一実施形態において、ホワイトリストは、信頼できる場所を示すことができ、信頼できる場所から到達可能であることが判明した場合、特定のポートまたはポートの範囲が報告140から除外され得る。様々な実施形態において、業界標準の知識、顧客入力、複数の顧客に基づく機械学習、および/または他の適切なソースなど、様々なデータソースを使用してホワイトリストを生成することができる。ホワイトリストの内容は、顧客によって異なる可能性がある。ホワイトリストの内容は、時間の経過とともに変わる可能性がある。
図1に戻ると、報告コンポーネント140は、任意の適切な方法で調査結果を提示することができる。一実施形態において、報告コンポーネント140は、例えば、ネットワーク管理者に、グラフィカルユーザインターフェース(GUI:Graphical User Interface)で調査結果を提示することができる。一実施形態において、GUIは、例えば、図4に関して以下に述べるように、調査結果に関連するユーザ入力を受信することができるような相互作用部分を含み得る。図1に戻ると、一実施形態において、報告コンポーネント140は、調査結果をファイルまたは他のデータオブジェクトに永続的に格納することができ、ファイルまたはデータオブジェクトは、ネットワーク管理者または他の適切なエンティティによって読み取られ得る。一実施形態において、報告コンポーネント140は、電子メールまたは別のメッセージングシステムを使用して、例えば、ネットワーク管理者によってアクセス可能なアカウントに調査結果を送信することができる。
ネットワークセキュリティ評価装置100およびホスト170A~170Nは、任意の適切な個数および構成のコンピューティングデバイスを使用して実装され得、コンピューティングデバイスのいずれも、図15に示されるコンピューティングデバイス例1500によって実装され得る。コンピューティングデバイスは、任意の適切な個数のデータセンタまたは地理的な場所に位置し得る。様々な実施形態において、ネットワークセキュリティ評価装置100の機能性の少なくともいくつかは、同じコンピューティングデバイスによって、または様々なコンピューティングデバイスによって提供され得る。ネットワークセキュリティ評価装置100の構成要素のいずれかが様々なコンピューティングデバイスを使用して実装される場合、構成要素およびそれらのそれぞれのコンピューティングデバイスは、例えば、1つ以上のネットワークを介して通信可能に結合され得る。ネットワークセキュリティ評価装置100の構成要素のそれぞれは、以下に述べるように、それらのそれぞれの機能を果たすために使用可能なソフトウェアとハードウェアとの任意の組み合わせに相当し得る。ネットワークセキュリティ評価装置100によって実施される動作は、例えば、初期構成段階後のユーザ開始またはユーザ介入を必要とせずに、またプログラムに従って、例えば、少なくとも1つのコンピューティングデバイス上でプログラム命令を実行することによって自動的に行われ得る。脅威モデラネットワークセキュリティ評価装置100およびネットワーク180が図示されていない構成要素をさらに含んでもよく、図示よりも構成要素を少なく含んでもよく、または図示とは異なる組み合わせ、構成もしくは個数の構成要素を含んでもよいことが、考えられている。
ネットワークセキュリティ評価装置100は、サービス指向アーキテクチャに従って複数のサービスが協働する、サービス指向システムに実装され得る。このような環境では、ネットワークセキュリティ評価装置100は、その機能性をサービスとして複数のクライアントに提供することができる。サービスは、1つ以上のネットワーク全体にわたって分散されている複数の異なるインスタンスを使用して実装され得、各インスタンスは、対応するサービスの機能性へのアクセスを様々なクライアントに提供することができる。任意の適切な個数および構成のクライアントが、ネットワークセキュリティ評価装置100と相互作用し得ることが、考えられている。クライアントがその機能性を呼び出すことを可能にするために、ネットワークセキュリティ評価装置100は、1つ以上のAPIもしくは他のプログラマチックインターフェースおよび/またはグラフィカルユーザインターフェース(GUI)などの任意の適切なインターフェースを公開することができる。一実施形態において、ネットワークセキュリティ評価装置100の機能性は、料金と引き換えにクライアントに提供され得る。
ネットワークセキュリティ評価装置100は、1つ以上のネットワークを介して、ホスト170A~170N、サービスクライアント、他のサービス、または他のエンティティに結合され得る。様々な実施形態において、ネットワーク190は、ネットワークセキュリティ評価装置100とホスト170A~170Nとの間にネットワークベースの通信を確立するのに必要なネットワーキングハードウェアおよびプロトコルの任意の適切な組み合わせを包含し得る。例えば、ネットワークは、通常、インターネットを集合的に実装する様々な電気通信ネットワークおよびサービスプロバイダを包含し得る。ネットワークは、ローカルエリアネットワーク(LAN:Local Area Network)または広域ネットワーク(WAN:Wide Area Network)などのプライベートネットワーク、およびパブリックまたはプライベート無線ネットワークも含み得る。例えば、ネットワークセキュリティ評価装置100およびホスト170A~170Nの両方は、それら自身の内部ネットワークを有する企業内にそれぞれ備えられ得る。このような実施形態では、ネットワークは、ネットワークセキュリティ評価装置100とインターネットとの間に、またインターネットとホスト170A~170Nとの間にネットワーキングリンクを確立するのに必要な、ハードウェア(例えば、モデム、ルータ、スイッチ、ロードバランサ、プロキシサーバなど)およびソフトウェア(例えば、プロトコルスタック、会計ソフトウェア、ファイアウォール/セキュリティソフトウェアなど)を含み得る。実施形態によっては、ネットワークセキュリティ評価装置100が、パブリックインターネットではなくプライベートネットワークを使用してホスト170A~170Nと通信することができることに留意する。
実施形態によっては、ネットワークセキュリティ評価装置100および/またはホスト170A~170Nの態様は、プロバイダネットワークのコンピューティングリソースを使用して実装され得る。プロバイダネットワークは、インターネットおよび/または他のネットワークを介してアクセス可能な1つ以上のサービス(様々なタイプのネットワークアクセス可能なコンピューティングまたは記憶域など)を分散型クライアントセットに提供するために、企業または公共部門の組織などのエンティティによって立ち上げられたネットワークに相当し得る。プロバイダネットワークは、プロバイダによって提供されるインフラストラクチャおよびサービスを実装し、分散させるのに使用される、物理コンピュータサーバおよび/または仮想化コンピュータサーバ、記憶デバイス、ネットワーキング機器などの集合体など、様々なリソースプールをホストする多数のデータセンタを含み得る。計算リソースは、実施形態によっては、仮想計算インスタンスまたは物理計算インスタンスなどの「インスタンス」と呼ばれる単位でクライアントに提供され得る。仮想計算インスタンスは、例えば、指定の計算能力(CPUのタイプと個数、メインメモリサイズなどを示すことによって指定され得る)および指定のソフトウェアスタック(例えば、次にはハイパーバイザ上で実行され得る、特定のバージョンのオペレーティングシステム)を有する1つ以上のサーバを含み得る。汎用または特殊目的のコンピュータサーバ、記憶デバイス、ネットワークデバイスなどを含む、いくつかの異なるタイプのコンピューティングデバイスを単独でまたは組み合わせて使用して、様々な実施形態でプロバイダネットワークのリソースを実装することができる。プロバイダネットワークのリソースが同時に複数のクライアント(またはテナント)の制御下にあり得るため、プロバイダネットワークは、マルチテナンシーを提供すると言われることがあり、マルチテナントプロバイダネットワークと呼ばれることもある。
実施形態によっては、プロバイダネットワークのオペレータは、それらのクライアントのために、リソース予約、制御、およびアクセスのインターフェースの柔軟なセットを実装することができる。例えば、リソースマネージャは、クライアント(場合によっては、プロバイダネットワーク内の他のコンポーネントを含む)が、プロバイダネットワークによって提供される計算インスタンスについて知り、それを選択し、それへのアクセスを購入し、かつ/またはそれを予約することを可能にする、プログラムに基づくリソース予約インターフェースを実装し得る(例えば、Webサイトまたは一連のWebページを介して)。このようなインターフェースは、リソースカタログの閲覧を可能にし、サポートされるリソースの様々なタイプまたはサイズ、サポートされる様々な予約タイプまたはモード、価格設定モデルなどの詳細および仕様を提供する能力を含み得る。
図2は、いくつかの実施形態による、分析を補助するための仮想ネットワーク検証サービスとの相互作用を含む、自動パケットレスネットワーク到達可能性分析のためのシステム環境例のさらなる態様を示す。一実施形態において、ネットワーク構成データ110が、仮想ネットワーク検証サービス230によって取得、維持され得る。仮想ネットワーク検証サービス230はまた、クエリ125を受信し、ネットワーク構成データ110を使用してクエリに答え、クエリ結果126で応答することができるクエリ処理コンポーネント120を含み得る。仮想ネットワーク検証サービス230は、そのサービスを、ネットワークセキュリティ評価装置100を含む1つ以上のクライアントに提供することができる。仮想ネットワーク検証サービスのさらなる態様は、図8~図14に関して以下に述べられる。
図3は、いくつかの実施形態による、分析の対象となるコンピュータ上のエージェントの使用を含む、自動パケットレスネットワーク到達可能性分析用のシステム環境例のさらなる態様を示す。一実施形態において、ネットワークセキュリティ評価装置100は、様々なソースからのデータを組み合わせて結論を出すことができる。一実施形態において、ネットワークセキュリティ評価装置100は、例えば、どのプロセスがポートをリッスンしているかを判定するために、コンピュータにインストールされたエージェントソフトウェアからデータを取得することができる。プロセスがポートをリッスンしている場合、ポートは「開いている」と見なされ得る。プロセスは、サービス、アプリケーション、サービスデーモン、およびその他の形態の実行可能プログラムコードを含み得る。図3の例に示されるように、エージェント175Aがホスト170Aにインストールされ得、エージェント175Nがホスト170Nにインストールされ得る、などである。また図3の例に示されるように、プロセス176Aは、ホスト170A上に常駐し得(また、ポート171Aをリッスンしている可能性がある)、プロセス176Nは、ホスト170N上に常駐し得(また、ポート171Nをリッスンしている可能性がある)。実施形態によっては、エージェント175A~175Nは、例えば、ホスト170A~170Nが同じまたは異なる構成のハードウェアおよびオペレーティングシステムソフトウェアに相当する場合、同じバイナリファイルまたは異なるバイナリファイルに相当し得る。
エージェント175A~175Nは、ホスト170A~170Nの構成を見抜く力を集めることができる可能性がある。一実施形態において、エージェント175A~175Nは、例えば、いつポートが開かれ、どのプロセスがそのポートに関連しているかを判定するために、対応するホストの動作を監視することができる。一実施形態において、エージェント175A~175Nは、例えば、どのポートが開いているか、かつ/またはどのプロセス176A~176Nがポートをリッスンしているかについて問い合わせるために、対応するホストのオペレーティングシステムと相互作用することができる。一実施形態において、エージェント175A~175Nは、ネットワーク到達可能性アナライザが、アナライザが到達可能であると既に見なした特定のポートをリッスンしているプロセスを見つけるようにエージェントに命令し得るような、ネットワークセキュリティ評価装置100の制御下にあり得る。エージェント175A~175Nは、それらの調査結果をクエリ集計・分析コンポーネント130に報告するように構成され得る。
一実施形態において、エージェント175A~175Nから中継された情報に基づいて、クエリ集計・分析コンポーネント130は、ルール135を使用して、プロセスが異例のポート番号のポートを開いたかどうかを確認することができる。一実施形態において、エージェント175A~175Nから中継された情報に基づいて、クエリ集計・分析コンポーネント130は、ルール135を使用して、インスタンスに、どこからも到達できない開ポートがあるかどうかを確認することができる。どのプロセスがどのポートをリッスンしているかの知識など、エージェント175A~175Nによって集められたデータの分析を使用して、報告コンポーネント140は、開いており、かつ到達可能なポート141をリッスンしているプロセス143を示すか、または記述したレポートを作成することができる。一実施形態において、報告コンポーネント140は、普通ではないまたは予期せぬポートを使用しており、したがってセキュリティの脅威をもたらす可能性があるプロセスを示すか、または記述することができる。
図4は、いくつかの実施形態による、是正措置の勧告および/または実施を含む、自動パケットレスネットワーク到達可能性分析用のシステム環境例のさらなる態様を示す。一実施形態において、クエリ集計・分析130は、ポートが到達可能である理由を判定することができる。例えば、1つ以上の構成設定が到達可能なポートの原因である可能性がある。1つ以上のソースから集められたデータ(例えば、ネットワーク構成データ110およびエージェント175A~175N)にルール135を適用することによって、ネットワーク構成アナライザは、ポートが到達可能であることに関与している1つ以上の構成設定を判定することができる。それにより、報告コンポーネント140は、このような調査結果を報告することができる。
一実施形態において、ネットワークセキュリティ評価装置100はまた、取られた場合、到達可能なポートに付随するセキュリティ上の懸念を解消または修正することが期待され得る、是正措置144を勧告することができる。例えば、特定のセキュリティグループにおけるホストのメンバーシップに起因してポートが到達可能である場合、勧告には、外部コンピュータがポートにアクセスできないように、そのセキュリティグループの構成設定を変更することが含まれ得る。一実施形態において、このような是正措置144は、報告コンポーネント140によって示されるか、または記述され得る。一実施形態において、是正措置は、ユーザによって選択された場合に問題を自動的に是正するインターフェース要素を備えたGUIに提示され得る。例えば、報告コンポーネント140は、勧告された修正を記述し、ユーザによって押された場合に適切な構成設定への変更を実施するボタン(または他のGUI要素)を含む、画面をユーザインターフェースに生成することができる。
図5は、いくつかの実施形態による、自動パケットレスネットワーク到達可能性分析を使用して生成されたレポートの例を示す。ネットワークセキュリティ評価装置100は、その調査結果の側面、例えば、到達可能なポート、それらのポートへのルート、それらのポートをリッスンしているプロセス、ポートが到達可能であることに関与している構成設定、到達可能ポートに付随するセキュリティ上の懸念、セキュリティ上の懸念を改善し得る是正措置(例えば、構成設定を変更する)、および/または任意のその他の適切な情報を記述したレポートを作成することができる。図5は、特定のホスト(インスタンスIDで言われる)およびそのホスト上の特定のポートについてのネットワーク到達可能性レポート500の例を示す。レポート500には、例えば、分析下のインスタンスのインスタンスID、影響を受けるTCPポート番号、および通常そのポートに関連しているサービスを示す高レベルの調査結果510が含まれ得る。この例では、TCPポート番号は、22であり、通常は、セキュアシェル(SSH:Secure SHell)の目的で使用される。レポート500には、問題の重大度520(例えば、高、中、または低)の表示も含まれ得る。レポート500には、調査結果のより詳細な記述530が含まれ得る。図5の例に示されるように、記述530は、ポートがパブリックインターネットから、この場合、特定のインターネットゲートウェイを介して到達可能であるルートを示し得る。一実施形態において、記述530は、例えば、セキュリティグループ、アクセス制御リスト、ルーティングテーブル、インターネットゲートウェイなどの構成に起因して、アクセスが許される理由を示し得る。記述530は、インスタンスが属する特定の仮想プライベートクラウド(VPC)、インスタンス用のネットワークインターフェースのID、インスタンス用のセキュリティグループのIDなども示し得る。さらに、記述530には、ポートが到達可能であることによって引き起こされる、あり得るセキュリティ問題を記述することができる。最後に、レポート500には、セキュリティ上の懸念を改善するための是正措置の勧告540が含まれ得る。この例では、勧告は、セキュリティグループを編集して、パブリックインターネット経由でこの特定のポートへのアクセスを取り除くことである。図4に関して上で述べたように、一実施形態において、レポート500は、ユーザ入力によって有効にされた場合に、勧告540を自動的に実施するユーザインターフェース要素を含み得る。一実施形態では、レポート500は、分析対象のネットワークトポロジーを示す視覚化を含み得る。視覚化には、強調表示された調査結果、脅威重大度の色分け、およびユーザ相互作用が含まれ得る。
図6は、いくつかの実施形態による、自動パケットレスネットワーク到達可能性分析を使用して、また分析の対象となるコンピュータ上のエージェントを使用して生成されたレポートの例を示す。一実施形態において、上で述べたレポート500は、分析下のホスト上のエージェントを使用せずに生成され得る。図6の例に示されるように、このようなエージェントの使用は、より詳細な到達可能性レポート600を可能にし得る。上で述べたように、レポート600には、高レベルの調査結果610、重大度620の表示、詳細な記述630、および問題を是正するための勧告640が含まれ得る。エージェントによって集められたデータを信頼することにより、レポート600は、開いており、かつ到達可能なポートをリッスンしている特定のプロセスを示すことができる。この例では、プロセスは、SSHデーモン「sshd」である。レポート600は、sshdプロセスに対応する特定のバイナリファイルのパスも示すことができる。このようなプロセス情報をネットワーク到達可能性レポートに追加することにより、セキュリティ問題の診断および是正を助けることができる。
図7は、いくつかの実施形態による、自動パケットレスネットワーク到達可能性分析のための方法を示すフローチャートである。710に示されるように、ネットワーク構成データの自動分析が行われ得る。ネットワーク構成データは、ホストコンピュータと、場合によっては、他のコンピュータおよびネットワーキングデバイス(ルータ、スイッチなど)を含む他のデバイスと、を有するネットワーク(プライベートネットワークなど)に関係している可能性がある。一実施形態において、分析は、1つ以上のクエリを使用してネットワーク構成データを問い合わせることを含み得る。クエリは、クエリ言語に従って表され得る。ネットワーク到達可能性分析では、分析の必要性に応じて、クエリを動的にビルドするか、または、事前ビルド済みのクエリを選択することができる。一実施形態において、クエリは、アナライザ100のエンドユーザ、例えば、彼女または彼の管理下にある1つ以上のホストのネットワークセキュリティを分析しようとするネットワーク管理者によって書かれる必要はない。
720に示されるように、分析に基づいて、この方法は、別のコンピュータから到達可能であるホストコンピュータにある1つ以上のポートを判定することができる。到達可能性は、パブリックインターネットを介するか、またはホストが属するプライベートネットワークを介してであり得る。分析に基づいて、この方法はまた、それによりポートが到達可能である1つ以上のルートを判定することができる。例えば、ルートは、コンポーネントが、インターネットゲートウェイを介してインターネットから、インターネットゲートウェイを介して仮想プライベートネットワーク(VPN)から、ピア型仮想プライベートクラウド(VPC)から、など、到達可能であることを示し得る。
730に示されるように、この方法は、エージェントが分析下のホストコンピュータにインストールされているかどうかを判定することができる。エージェントは、例えば、開ポートをリッスンしているプロセスを判定するために、ホストコンピュータの動作の局面を監視するように構成され得る。エージェントが存在しない場合、740に示されるように、この方法は、到達可能ポート、およびそれによってポートが到達可能になるルートを示すかまたは記述したレポートを生成することができる。一実施形態において、レポートには、セキュリティグループまたはアクセス制御リスト(ACL)に関係している1つ以上の構成設定など、ポートが到達可能である理由を示すか、または記述することもできる。一実施形態において、レポートにはまた、1つ以上の構成設定の変更などの是正措置の1つ以上の勧告を示すかまたは記述することができる。
エージェントが存在する場合、750に示されるように、この方法は、エージェントによって提供されたデータを使用して、ポートをリッスンしているプロセスを判定することができる。760に示されるように、この方法は、開いており、かつ到達可能なポート、それによりポートが到達可能になるルート、およびポートをリッスンしているプロセスを示すかまたは記述したレポートを生成することができる。一実施形態において、レポートにはまた、1つ以上の構成設定など、ポートが開いており、かつ到達可能である理由を示すかまたは記述することができる。一実施形態において、レポートにはまた、1つ以上の構成設定の変更などの是正措置の1つ以上の勧告を示すかまたは記述することができる。
ネットワーク到達可能性の例示的なルール
上で述べたように、ネットワークセキュリティ評価装置100は、ネットワーク到達可能性に伴うルール135のパッケージに従って働くことができる。このようなルールの例を以下に述べるが、以下のルールのリストは、網羅的であることを意図したものではない。ネットワークセキュリティ評価装置100は、以下のルールの一部のみを実装することができ、かつ/またはコンピューティングデバイスの到達可能性を評価するために追加のルールを実装することができる。
一実施形態において、第1のルールは、エージェントを用いてインスタンスを分析して、信頼できる場所の外側のどこかからのアクセスを許されたポートをリッスンしている安全性の低いプロトコルをインスタンスが有するかどうかを判定することができる。この調査結果の重大度は、高である。この調査結果は、ポート番号、そのポートのTCPまたはUDP関連付け、そのポートをリッスンしているアプリケーション(およびバージョン)、そのポートに到達することができるアドレス範囲、またアクセスを許可するセキュリティグループ、アクセス制御リスト、インターネットゲートウェイ、仮想ゲートウェイ、およびその他のチャネルとともに、報告され得る。第1のルールでは、是正措置の勧告には、アクセス制御構成を編集してアクセスを制限すること(信頼できる場所の外側からのアクセスが必要ない場合)、およびアプリケーションを停止すること(作業に必要ない場合)が含まれ得る。
一実施形態において、第2のルールは、エージェントを用いてインスタンスを分析して、信頼できる場所の外側のどこかからアクセス可能であるポートをリッスンしているSHSサーバをインスタンスが有するかどうかを判定することができる。この調査結果の重大度は、中である。この調査結果は、ポート番号、そのポートのTCPまたはUDP関連付け、そのポートをリッスンしているアプリケーション(およびバージョン)、そのポートに到達することができるアドレス範囲、またアクセスを許可するセキュリティグループ、アクセス制御リスト、インターネットゲートウェイ、仮想ゲートウェイ、およびその他のチャネルとともに、報告され得る。第1のルールでは、修正措置の勧告には、アクセス制御構成を編集してアクセスを制限すること(信頼できる場所の外側からのアクセスが必要ない場合)、およびアプリケーションを停止すること(作業に必要ない場合)が含まれ得る。
一実施形態において、第3のルールは、エージェントを用いてインスタンスを分析して、信頼できる場所の外側のどこかからアクセス可能であるポートをリッスンしているRDPサーバーをインスタンスが有するかどうかを判定することができる。この調査結果の重大度は、中である。この調査結果は、ポート番号、そのポートのTCPまたはUDP関連付け、そのポートをリッスンしているアプリケーション(およびバージョン)、そのポートに到達することができるアドレス範囲、またアクセスを許可するセキュリティグループ、アクセス制御リスト、インターネットゲートウェイ、仮想ゲートウェイ、およびその他のチャネルとともに、報告され得る。第3のルールでは、是正措置の勧告には、アクセス制御構成を編集してアクセスを制限すること(信頼できる場所の外側からのアクセスが必要ない場合)、およびアプリケーションを停止すること(作業に必要ない場合)が含まれ得る。
一実施形態において、第4のルールは、エージェントを用いてインスタンスを分析して、信頼できる場所の外側のどこかからアクセス可能であるポートをリッスンしているデータベースサーバをインスタンスが有するかどうかを判定することができる。この調査結果の重大度は、中である。この調査結果は、ポート番号、そのポートのTCPまたはUDP関連付け、そのポートをリッスンしているアプリケーション(およびバージョン)、そのポートに到達することができるアドレス範囲、またアクセスを許可するセキュリティグループ、アクセス制御リスト、インターネットゲートウェイ、仮想ゲートウェイ、およびその他のチャネルとともに、報告され得る。第4のルールでは、是正措置の勧告には、アクセス制御構成を編集してアクセスを制限すること(信頼できる場所の外側からのアクセスが必要ない場合)、およびアプリケーションを停止すること(作業に必要ない場合)が含まれ得る。
一実施形態において、第5のルールは、エージェントを用いてインスタンスを分析して、信頼できる場所の外側のどこかからアクセス可能であるポートをリッスンしているイントラネットサービスをインスタンスが有するかどうかを判定することができる。この調査結果の重大度は、中である。この調査結果は、ポート番号、そのポートのTCPまたはUDP関連付け、そのポートをリッスンしているアプリケーション(およびバージョン)、そのポートに到達することができるアドレス範囲、またアクセスを許可するセキュリティグループ、アクセス制御リスト、インターネットゲートウェイ、仮想ゲートウェイ、およびその他のチャネルとともに、報告され得る。第5のルールでは、是正措置の勧告には、アクセス制御構成を編集してアクセスを制限すること(信頼できる場所の外側のアクセスが必要ない場合)、およびアプリケーションを停止すること(作業に必要ない場合)が含まれ得る。
一実施形態において、第6のルールは、エージェントを用いてインスタンスを分析して、インスタンスが、信頼できる場所の外側のどこかからのアクセスが許されているポートへの接続が開いているかどうかを判定することができる。この調査結果の重要度は、低である。この調査結果は、ポート番号、そのポートのTCPまたはUDP関連付け、そのポートをリッスンしているアプリケーション(およびバージョン)、そのポートに到達することができるアドレス範囲、またアクセスを許可するセキュリティグループ、アクセス制御リスト、インターネットゲートウェイ、仮想ゲートウェイ、およびその他のチャネルとともに、報告され得る。第6のルールでは、是正措置の勧告には、アクセス制御構成を編集してアクセスを制限すること(信頼できる場所の外側からのアクセスが必要ない場合)、およびアプリケーションを停止すること(作業に必要ない場合)が含まれ得る。
一実施形態において、第7のルールは、エージェントを用いてインスタンスを分析して、インスタンスが、異例のポートで接続を開くアプリケーションを有するかどうかを判定することができる。この調査結果の重大度は、低であり、特定の脅威ではなく情報提供と見なされ得る。この調査結果は、ポート番号、そのポートのTCPまたはUDP関連付け、そのポートをリッスンしているアプリケーション(およびバージョン)、そのポートに到達することができるアドレス範囲、またアクセスを許可するセキュリティグループ、アクセス制御リスト、インターネットゲートウェイ、仮想ゲートウェイ、およびその他のチャネルとともに、報告され得る。第7のルールでは、是正措置の勧告には、アプリケーションが期待通りに挙動しているかどうかを確認することが含まれ得る。
一実施形態において、第8のルールは、エージェントなしでインスタンスを分析して、インスタンスが、信頼できる場所の外側のどこかからのICMPアクセスを許可するかどうかを判定することができる。この調査結果の重大度は、中である。この調査結果は、そのポートに到達することができるアドレス範囲、またアクセスを許可するセキュリティグループ、アクセス制御リスト、インターネットゲートウェイ、仮想ゲートウェイ、およびその他のチャネルとともに、報告され得る。第8のルールでは、是正措置の勧告には、アクセス制御構成を編集してアクセスを制限することが含まれ得る(信頼できる場所の外側のアクセスが必要ない場合)。
一実施形態において、第9のルールは、エージェントを用いずにインスタンスを分析して、インスタンスが、信頼できる場所の外側のどこかからの通常は安全性の低いポート(例えば、ポート20、21、23など)へのアクセスを許可するかどうかを判定することができる。この調査結果の重大度は、中である。この調査結果は、ポート番号、ポートのTCPまたはUDP関連付け、通常そのポートを使用するアプリケーション、そのポートに到達することができるアドレス範囲、またアクセスを許可するセキュリティグループ、アクセス制御リスト、インターネットゲートウェイ、仮想ゲートウェイ、およびその他のチャネルとともに、報告され得る。第9のルールでは、是正措置の勧告には、アクセス制御構成を編集してアクセスを制限することが含まれ得る(信頼できる場所の外側のアクセスが必要ない場合)。
一実施形態において、第10のルールは、エージェントを用いずインスタンスを分析して、インスタンスが、信頼できる場所の外側のどこかからの管理ポート番号22(通常、SSHに使用される)へのアクセスを許可するかどうかを判定することができる。この調査結果の重大度は、中である。この調査結果は、ポート番号、ポートのTCPまたはUDP関連付け、通常そのポートを使用するアプリケーション、そのポートに到達することができるアドレス範囲、またアクセスを許可するセキュリティグループ、アクセス制御リスト、インターネットゲートウェイ、仮想ゲートウェイ、およびその他のチャネルとともに、報告され得る。第10のルールでは、是正措置の勧告には、アクセス制御構成を編集してアクセスを制限することが含まれ得る(信頼できる管理場所の外側からの管理者アクセスが必要ない場合)。
一実施形態において、第11のルールは、エージェントを用いずインスタンスを分析して、インスタンスが、信頼できる場所の外側のどこかからの管理ポート番号3389(通常、RDPに使用される)へのアクセスを許可するかどうかを判定することができる。この調査結果の重大度は、中である。この調査結果は、ポート番号、ポートのTCPまたはUDP関連付け、通常そのポートを使用するアプリケーション、そのポートに到達することができるアドレス範囲、またアクセスを許可するセキュリティグループ、アクセス制御リスト、インターネットゲートウェイ、仮想ゲートウェイ、およびその他のチャネルとともに、報告され得る。第11のルールでは、是正措置の勧告には、アクセス制御構成を編集してアクセスを制限することが含まれ得る(信頼できる管理者場所の外側からの管理者アクセスが必要ない場合)。
一実施形態において、第12のルールは、エージェントを用いずインスタンスを分析して、インスタンスが、信頼できる場所の外側のどこかからのデータベースポート(例えば、ポート1433、1434、3306など)へのアクセスを許可するかどうかを判定することができる。この調査結果の重要度は、低である。この調査結果は、ポート番号、ポートのTCPまたはUDP関連付け、通常そのポートを使用するアプリケーション、そのポートに到達することができるアドレス範囲、またアクセスを許可するセキュリティグループ、アクセス制御リスト、インターネットゲートウェイ、仮想ゲートウェイ、およびその他のチャネルとともに、報告され得る。第12のルールでは、是正措置の勧告には、アクセス制御構成を編集してアクセスを制限することが含まれ得る(インターネットからのデータベースアクセスが必要ない場合)。
一実施形態において、第13のルールは、エージェントを用いずにインスタンスを分析して、インスタンスが、信頼できる場所の外側のどこかからのイントラネットポートへのアクセスを許可するかどうかを判定することができる。この調査結果の重要度は、低である。この調査結果は、ポート番号、ポートのTCPまたはUDP関連付け、通常そのポートを使用するアプリケーション、そのポートに到達することができるアドレス範囲、またアクセスを許可するセキュリティグループ、アクセス制御リスト、インターネットゲートウェイ、仮想ゲートウェイ、およびその他のチャネルとともに、報告され得る。第13のルールでは、是正措置の勧告には、アクセス制御構成を編集してアクセスを制限することが含まれ得る(インターネットからのイントラネットポートアクセスが必要ない場合)。
一実施形態において、第14のルールは、エージェントを用いずにインスタンスを分析して、インスタンスが、信頼できる場所の外側のどこかからの他のすべてのポート(例えば、ルール8~13が適用されないポート)へのアクセスを許可するかどうかを判定することができる。この調査結果の重要度は、低である。この調査結果は、ポート番号、ポートのTCPまたはUDP関連付け、通常そのポートを使用するアプリケーション、そのポートに到達することができるアドレス範囲、またアクセスを許可するセキュリティグループ、アクセス制御リスト、インターネットゲートウェイ、仮想ゲートウェイ、およびその他のチャネルとともに、報告され得る。第14のルールでは、是正措置の勧告には、アクセス制御構成を編集してアクセスを制限することが含まれ得る(信頼できる場所の外側からのアクセスが必要ない場合)。
一実施形態において、第15のルールは、エージェントを用いてインスタンスを分析して、インスタンスが、どこからもアクセスできないポートへの接続が開いているかどうかを判定することができる。この調査結果の重大度は、低であり、情報提供と見なされ得る。この調査結果は、ポート番号、各ポートに関連しているアプリケーション(およびバージョン)、および該当するアクセス制御リストおよびセキュリティグループとともに、報告され得る。第15のルールでは、是正措置の勧告には、必要ない場合にアクセスできないサービスを終わらせることが含まれ得る。
一実施形態において、第16のルールは、エージェントの有無に関わらずインスタンスを分析して、インスタンスへのすべてのインバウンドトラフィックが、阻止されているかどうかを判定することができる。この調査結果の重大度は、低であり、情報提供と見なされ得る。この調査結果は、該当するアクセス制御リストおよびセキュリティグループとともに報告され得る。第16のルールでは、是正措置の勧告には、遮断が適切であるかどうか確認することが含まれ得る。
仮想ネットワーク検証サービス
実施形態によっては、ネットワーク構成分析は、仮想ネットワーク検証サービスを使用して実施され得る。実施形態によっては、仮想ネットワーク検証サービスは、宣言型論理プログラミング言語を活用して、ネットワーク到達可能性アナライザが、プロバイダネットワーク上の仮想ネットワークについての再帰クエリを含むクエリを制約問題として表し、制約ソルバ(例えば、充足可能性モジュロ理論(SMT:Satisfiability Modulo Theories)ソルバ)エンジンを使用してクエリを解決することによって、クエリに対する結果を提供することを可能にする。いくつかの実施形態で使用され得る宣言型論理プログラミング言語例は、Datalogである。他の宣言型論理プログラミング言語が使用されてもよいことに留意されたい。
クライアントの仮想ネットワーク内にネットワーキングプリミティブを備え、構成するために、クライアントは様々なプロバイダネットワークサービスを使用することができ、各サービスは、それ自身のアプリケーションプログラミングインターフェース(API:Application Programming Interface)およびネットワーキングセマンティクスを提供することができる。従来、コードサンプルおよびドキュメンテーションが各サービスに提供され得るが、仮想ネットワークにおけるネットワーキングプリミティブ間の相互作用の正式な記述がなかった。実施形態によっては、ネットワーキングプリミティブのための仮想ネットワーキングセマンティクスおよび論理は、論理プログラミング言語に従って仮想ネットワーキングルールのセットとして表され、符号化され得る。仮想ネットワーキングルールは、仮想ネットワークに実装され得、またプロバイダネットワークのサービスおよびAPIによって提供される、様々なネットワーキングプリミティブ間の共通の関係および相互作用を表すルールを含み得る。したがって、実施形態は、プロバイダネットワーク環境において仮想ネットワーキングがどのように働くかの論理を記述する仮想ネットワーキングルールを1つの場所またはファイルに備えることができる。
実施形態によっては、仮想ネットワーキングルールは、ペイメントカード業界データセキュリティ基準(PCI DSS:Payment Card Industry Data Security Standard)、米国連邦リスクおよび承認管理プログラム (FedRAMP:Federal Risk and Authorization Management Program)基準、もしくは医療保険の相互運用性と説明責任に関する法律(HIPAA:Health Insurance Portability and Acoundability Act)基準などのセキュリティ基準、またはクライアントの内部セキュリティ基準を符号化するルールを組み込み得る。実施形態によっては、仮想ネットワーク検証サービスは、仮想ネットワーキングルールの2つ以上の異なるセットを提供することができ、このセットのそれぞれは、特定の基準へのその仮想ネットワークの準拠を検証するのに選択的に使用され得る、様々なネットワーキングセキュリティ基準を符号化する。実施形態によっては、仮想ネットワーク検証サービスは、クライアントの内部セキュリティ基準、ベストプラクティス、または他のネットワーキング要件を符号化するカスタムルールをクライアント(ネットワーク到達可能性アナライザなど)が定義することを可能にし得、それにより、それらの特定の仮想ネットワークに適用するためにクライアントによって定義されたカスタムルールを含む、仮想ネットワーキングルールのセットが実装され得る。
実装形態によっては、仮想ネットワーク検証サービスは、クライアントの仮想ネットワークに関する記述情報を得る。記述情報は、例えば、仮想ネットワークに実装されたネットワーキングプリミティブのインスタンスを特定し、インスタンスの記述(例えば、計算インスタンスに割り当てられた役割、リソースインスタンスに与えられたまたは与えられていないパーミッション、インスタンスに割り当てられたIPアドレスなど)を含み、インスタンス間の関係(例えば、インスタンス間のネットワークにわたるパス)を記述し、外部エンティティへのインターフェースまたはアクセスポイント(例えば、仮想ネットワークの外部のエンティティによってアクセスされ得る計算インスタンス)を記述し得る。実施形態によっては、クライアントは、仮想ネットワークから記述情報を得て、その記述情報を仮想ネットワーク検証サービスに提供することができる。あるいは、実施形態によっては、クライアントは、仮想ネットワーク検証サービスが仮想ネットワークから記述情報を直接得ることを可能にするパーミッションを、仮想ネットワーク検証サービスに与えることができる。仮想ネットワーク検証サービスは、宣言型論理プログラミング言語に従って、記述情報を論理プログラムとして符号化することができる。
仮想ネットワーク検証サービスの実施形態は、ポート走査方法および構文チェック方法などの従来のネットワーク分析方法と比較すると、多大な利点をもたらすことができる。これらの従来の方法とは異なり、符号化された仮想ネットワーキングルールおよび仮想ネットワーク記述を通して、仮想ネットワーク検証サービスは、すべてのネットワーキングプリミティブおよびリソースインスタンス、ならびにそれらの複雑な相互関係についての知識を得ることができる。走査時に稼働しているデバイスに頼り、それにより走査時に存在するデバイス間のネットワークにわたるパスしか特定できない可能性がある従来の方法とは異なり、記述情報は、仮想ネットワークを記述するメタデータを維持する1つ以上のプロバイダネットワークサービスのAPIへのDESCRIBEコールのみを使用して、クライアントによってまたはサービスによって得られ得、それにより、それぞれのデバイスまたはインスタンスが稼働しておらず、リッスンしていなくても、ネットワークにわたるパスが特定され得る。また、ポート走査方法では、脅威が起こっていることは確認できるが、脅威が起こっていないことを確認できない可能性がある。構文チェック方法は、個々のネットワークデバイスのシャロープロバティをチェックすることができるが、攻撃ベクトルの有無を確認しない。一方、実施形態によっては、仮想ネットワーク検証サービスは、符号化された仮想ネットワーキングルールで表されるようなネットワークポリシからの起こり得る逸脱をすべて見付けることができ、脅威および攻撃ベクトルの有りおよび無しの両方を確認することができる。さらに、記述情報は、仮想ネットワークを記述するメタデータを維持する1つ以上のプロバイダネットワークサービスへのDESCRIBEコールのみを使用して、クライアントによってまたはサービスによって得られ得、それにより、実体的なネットワークおよびCPU帯域幅を必要とするポート走査方法などの従来の方法とは異なって、クライアントの仮想ネットワークへの影響はほとんどまたは全くなく、また、ポート走査方法の場合のように、プロバイダネットワーク上のあらゆるデバイスへの完全なネットワークアクセスが必要とされない。
実施形態によっては、仮想ネットワーク検証サービスは、クライアント(ネットワーク到達可能性アナライザなど)からクエリを受信する。実施形態によっては、クエリは、SQLに類似しているがネットワーク構成に適用される表出型クエリ言語で提示され得る。このようなクエリの非限定的な例としては、「VNVSquery-i Iist:can-ssh(AB)を挙げることができ、これは、インスタンスAがインスタンスBにSSHすることができるようなすべてのインスタンス対のリストを提供するよう、仮想ネットワーク検証サービス(VNVS)に要求する。あるいは、実施形態によっては、クエリは、人に分かりやすい形で提示され得る。このようなクエリの非限定的な例は、「インスタンスAがインスタンスBにSSHすることができるようなすべてのインスタンス対のリストを示してください」のようなものであり得る。実施形態によっては、少なくともいくつかのクエリが、予め定義され、仮想ネットワーク検証サービスへのグラフィカルインターフェースを介して、ユーザインターフェース要素(例えば、メニュー)においてユーザに提供され得る。
クエリは、生成された論理プログラムに関する定理に対応し、制約問題を表し得る。仮想ネットワーク検証サービスは、宣言型論理プログラミング言語に従って制約問題を解決するように構成された制約ソルバプログラム(制約ソルバエンジンとも呼ばれる)を使用して、符号化されたルールに従って、符号化された記述に対するクエリによって表される制約問題を解決し、結果をクライアントに提供することができる。実施形態によっては、仮想ネットワーク検証サービスは、クエリを提示するためのAPIおよびインターフェースを提供することができる。実施形態によっては、仮想ネットワーク検証サービスは、クライアントがAPIおよびインターフェースを介して選択することができる標準クエリのセットを提供することができる。実施形態によっては、仮想ネットワーク検証サービスは、クライアントがカスタムクエリを作成し、APIおよびインターフェースを介して提出すえることを可能にし得る。
実施形態において、コンソール上のサービスへのグラフィカルインターフェースを介して、またはコマンドラインインターフェース(CLI:Command Line Interface)を介して、クライアントが仮想ネットワーク検証サービスを使用して、プロバイダネットワーク上のクライアントの仮想ネットワークについての質問(制約を明示するクエリとして提示される)に対する回答を得ることができる。提示される可能性がある質問の例としては、以下が挙げられるが、これらに限定されない。
●仮想ネットワーク内のどのインスタンスにインターネットからアクセス可能であるか?
●どのインスタンスが仮想ネットワーク上の指定されたリソースにアクセスすることができるか(例えば、データベース、キャッシュ、ストレージエンドポイント、他のインスタンスなど)?
●仮想ネットワークは、ネットワーキングセキュリティ基準のベストプラクティスに準拠しているか?
●仮想ネットワークは、このルールのセットに符号化された自分の会社のベストプラクティスに準拠しているか。
より一般的には、クライアント(ネットワーク到達可能性アナライザなど)が仮想ネットワーク検証サービスを使用して、仮想ネットワーク内のリソースと仮想ネットワーク内の他のリソースとの間の期待されるパイプ、ならびに外部エンティティへの期待されるパイプが開いているか、また期待されるパイプが唯一の開いたパイプであるか(例えば、外部エンティティが、それらが達することを許されるべきではない仮想ネットワーク内のリソースに達することができないか)を検証することができる。
仮想ネットワーク内のあるリソースと他のリソースとの間のパイプ、または仮想ネットワーク内のリソースと外部エンティティとの間のパイプが開いているかを検証することは、リソース間、またはリソースと外部エンティティとの間にネットワークにわたるパスまたはルート(例えば、リソースから、それを介して外部エンティティが仮想ネットワーク上のリソースにアクセスすることができるHTTPSゲートウェイへのパス)があるか(すなわち、ネットワーク接続性があるか)を検証することを含み得る。パスは、エンドポイント間にネットワーク接続性をもたらすネットワークにわたる直接パスであってもよく、あるいはルート上の1つ以上のホップを通過し、エンドポイント間にネットワーク接続性をもたらす推移的なパスであってもよい。仮想ネットワークを記述するメタデータを維持する1つ以上のプロバイダネットワークサービスのAPIへのDESCRIBEコールのみを使用して、仮想ネットワークについての記述情報を得ることができ、それにより、それぞれのデバイスまたはインスタンスが稼働しておらず、リッスンしていない場合でもパスを検証することができる。実施形態によっては、仮想ネットワークについての記述情報は、リソースに与えられたまたは与えられていないパーミッション(例えば、仮想ネットワーク上のエンドポイントへの1つのリソースアクセスを与えるもしくは与えないパーミッション、または、所与のエンドポイント(例えば、ストレージエンドポイント)にアクセスすることができる、もしくはできない、IPアドレス範囲もしくはリソースインスタンスの特定のポートを指定するパーミッションなど)を含み得る。これらの実施形態では、仮想ネットワーク内のパスが開いていることを検証することは、そのパスに必要なパーミッションが与えられていることを検証することを含み得る。同様に、期待されるパスが唯一の開いたパスであることを検証することは、仮想ネットワークまたは外部エンティティ内のリソースが、アクセスするべきではないリソースにアクセスするためのパーミッションを有していないと判断することを含み得る。
仮想ネットワーキングルールの適切なセットを有する仮想ネットワーク検証サービスの実施形態は、例えば、顧客が顧客の仮想ネットワークが、ペイメントカード業界データセキュリティ基準(PCI DSS)、米国連邦リスクおよび承認管理プログラム(FedRAMP)基準、もしくは医療保険の相互運用性と説明責任に関する法律(HIPPA)基準などのネットワーキングセキュリティ基準に準拠していることを検証するのを助けるために、または顧客の仮想ネットワークがクライアントの内部セキュリティ基準またはその他の内部ネットワーキング要件に準拠していることを検証するために、クライアント(ネットワーク到達可能性アナライザ)によって使用され得る。
仮想ネットワーク検証サービスの別の適用例としては、ネットワークセキュリティ問題またはソフトウェアバグなどの脆弱性の仮想ネットワークにおける起こり得る影響を突き止めるためがある。例えば、仮想ネットワーク内の特定のインスタンス上で作動している特定のソフトウェアプログラムに脆弱性が発見された場合、クライアント(ネットワーク到達可能性アナライザなど)は、このインスタンスが仮想ネットワーク内の他のインスタンスと通信することができる、すべての方法を判定するためにクエリを作成し、提出することができる。結果は、クライアントが、脆弱性の起こり得る影響を特定し、したがって状況を最もうまく処理する方法に関して決定を行うことを可能にし得る。例えば、脆弱性を有するインスタンスからミッションクリティカルなデータベースを有するインスタンスへの直接のパスがない場合、問題に、通常の保守スケジュールに従って処理される低い優先度を与えることができる。脆弱性を有するインスタンスがミッションクリティカルなデータベースを有するインスタンスに影響を与える場合、仮想ネットワークの少なくとも一部をシャットダウンして脆弱性に直ちに対処するという決定を行うことができる。
仮想ネットワーク検証サービスの別の適用例は、プロバイダネットワーク環境のための仮想ネットワーキングの変更のオフラインテストの際である。例えば、プロバイダネットワーク環境で仮想ネットワーキングがどのように働くかの論理を記述する仮想ネットワーキングルールをテスト環境で使用して、仮想ネットワーキングプリミティブの変更を、それがプロバイダネットワークに適用される前にテストし、この変更が仮想ネットワークにどのような影響を与え得るかを判定することができる。
仮想ネットワーク検証サービスの別の適用例は、クライアント用の仮想ネットワークを自動的に統合する際である。例えば、クライアント(ネットワーク到達可能性アナライザなど)が、特定のネットワーキングセキュリティ基準に準拠し、また指定されたネットワーキングプリミティブののセットを含む、仮想ネットワークを確立することを望む場合がある。クライアントが自ら仮想ネットワークをビルドし、テストする必要がないように、仮想ネットワーク検証サービスおよび仮想ネットワーキングルールを使用して、制約(クライアント指定プリミティブ、ネットワーキングセキュリティ基準、仮想ネットワーキングがプロバイダネットワーク環境内でどのように働くかの論理を記述する仮想ネットワーキングルール、など)のすべてを満たす仮想ネットワークを自動的に統合し、検証することができる。例えば、基準によって課せられた制約をクエリとして提示することができ、クエリを解決して、制約を満たす仮想ネットワーク構成を判定することができ、あるいは仮想ネットワークの構成が制約に従っているかどうかを判定することができる。それにより、制約に従う仮想ネットワークが統合されてもよく、あるいは仮想ネットワークが制約に従うように修正されてもよい。
仮想ネットワーク検証サービスの別の適用例は、構成または変更がプロバイダネットワークに実装される前に、クライアント(ネットワーク到達可能性アナライザなど)が新たな仮想ネットワーク構成または既存の仮想ネットワークの変更を検証することを可能にすることである。例えば、仮想ネットワーク構成は、クライアントによって生成または修正されてもよく、その構成に対する制約はクエリとして提示することが可能であって、構成がプロバイダネットワークに実装される前に、クエリを解決して、構成がクエリで提示されたクライアントの制約に準拠していることを検証してもよい。
図8は、いくつかの実施形態による、プロバイダネットワーク環境における仮想ネットワーク検証サービスを示す。クライアントにプロバイダネットワーク800を提供するサービスプロバイダは、クライアントがプロバイダネットワーク800上の仮想ネットワーク810にリソースを確立し、管理することを可能にするサービスおよびアプリケーションプログラミングインターフェース(API)802を提供することができる。プロバイダネットワーク800環境における仮想ネットワーク810は、それぞれのクライアントのプロバイダネットワークリソースのセットを含むネットワーク空間であって、クライアントのリソース用のプロバイダネットワーク800上の論理的に隔離されたセクションとして機能する、ネットワーク空間として、広く定義され得る(例えば、アドレス範囲またはアドレス空間によって論理的に定義される)。仮想ネットワーク810は、ネットワークプロトコルに従ってプライベートまたはローカルのインターネットプロトコル(IP:Internet Protocol)アドレス空間、例えばインターネットプロトコルバージョン4(IPv4:Internet Protocol version4)アドレス範囲またはサブネット内の32ビットIPアドレスを実装することができる。仮想ネットワーク810上のソース(例えば、計算リソース、ストレージリソース、サーバ、ホストデバイスなどのエンドポイント)には、仮想ネットワーク810のアドレス空間内のIPアドレス(例えば、32ビットのIPv4アドレス)が割り当てられ得る。プロバイダネットワーク800上のクライアントの仮想ネットワーク810は、クライアントによって仮想コンピューティングリソースインスタンスとして構成されたホストデバイス上の仮想マシン(VM:Virtual Machine)などのクライアントのリソースインスタンスを含む。プロバイダネットワーク上のリソースインスタンスの少なくともいくつかは、複数のオペレーティングシステムをホストコンピュータ上で同時に、すなわちホストデバイス上のVMとして実行することを可能にするハードウェア仮想化技術に従って実装することができる。ホストデバイス上のハイパーバイザ、または仮想マシンモニタ(VMM:Virtual Machine Monitor)は、それぞれのホスト上のVMに仮想プラットフォームを提示し、ホストデバイス上のVMの実行を監視する。各VMには1つ以上のIPアドレスが与えられ、それぞれのホスト上のVMMは、ホスト上のVMのIPアドレスを分かっている可能性がある。
様々なネットワークリソース、構造、および機能性(ネットワーキングプリミティブと呼ばれる)が、様々なプロバイダネットワークサービス802を介してプロバイダネットワーク800のクライアントに提供され得る。クライアントは、少なくとも部分的に様々なサービスおよびAPI802を使用して、プロバイダネットワーク800上でクライアントの仮想ネットワーク810を作成し、構成し、ポピュレートし、修正することができる。以下では、サービス802によって提供され得、限定的であることを意図するものではない、ネットワーキングプリミティブ例を挙げる。
●仮想ネットワーク
●リソースインスタンス(例えば、サービス802を使用するクライアントによる、仮想コンピューティングリソースインスタンスとして構成されたVM(例えば、アプリケーションサーバ、Webサーバ、データベースサーバ、アクセスポイント、ゲートウェイ、ロードバランサ、ロギングサービスなどの特定のプロバイダネットワークサービスのインスタンス、ネットワーク監視および分析サービス、コードリポジトリサービス、コンテナ管理サービスなど)。
●タグ-実施形態によっては、クライアントは、リソースインスタンスをタグ付けすることによって、クライアントの仮想ネットワーク内の特定のリソースインスタンス(例えば、VM)に特定の役割を割り当てることが許され得る。タグは、例えば、PRODやDEVなどのテキスト文字列であり得る。タグは、リソースインスタンス用のメタデータに格納され得る。タグは、標準プロバイダネットワーク定義タグおよび/またはクライアント定義タグを含み得る。リソースインスタンスの役割例には、セキュアソケットシェル(SSH:Secure Socket Shell)アクセスインスタンス、ロギングサービスインスタンス、コードリポジトリインスタンス、本番リソースインスタンス、および開発リソースインスタンスが含まれるが、これらに限定されるわけではない。
●仮想ネットワークエンドポイント(例えば、計算リソース、ストレージリソース、サーバ、ホストデバイスなどのエンドポイント)。
●仮想ネットワークピアリング接続実施形態によっては、クライアントは、プロバイダネットワーク上に2つ以上の仮想ネットワークを確立することができる。仮想ネットワークがインターネットなどの外部ネットワークを横断する必要なしにプロバイダネットワークにわたって安全に通信することを可能にするピアリング接続が、仮想ネットワーク間で確立され得る。
●仮想ネットワークの外部のエンティティから仮想ネットワークのリソースの少なくともいくつかへのアクセスを提供するインターネットゲートウェイ
●例えば、仮想ネットワーク上のリソースインスタンスのグループまたはクラスタ間でネットワークトラフィックを分散させる仮想化ロードバランサインスタンスである、ロードバランサ
●ネットワークアドレス変換(NAT:Network Address Translation)インスタンス
●NATゲートウェイ
●ネットワークアクセス制御リスト(ACL)
●ネットワークインターフェース。
●ルートテーブル
●サブネット-仮想ネットワークは、必ずしもではないが、2つ以上のサブネットワーク、またはサブネットに細分され得る。
●セキュリティグループ-実施形態によっては、プロバイダネットワークは、クライアントが、クライアントの仮想ネットワーク内に、サブネット内に、またはサブネットにわたって、仮想セキュリティグループを確立し、管理することを可能にし得る。セキュリティグループは、リソースインスタンスを論理的にグループ化したものであり、セキュリティグループルールに従ってセキュリティグループ内の1つ以上のリソースインスタンスに到達することを許されたトラフィックを制御する仮想ファイアウォールとして機能する。
●リージョン-プロバイダネットワークサービスおよびリソース(例えば、仮想ネットワーク、VMインスタンス、データストレージ、ゲートウェイ、ロードバランサなど)は、複数の地理的な場所または範囲でサポートされ得る。本明細書で使用される際、リージョンとは、プロバイダネットワークサービスをサポートし、そこで、クライアントがリソースを起動し、構成することができる別個の地理的範囲である。サービスおよびAPIにより、クライアントは1つ以上のリージョンでクライアントのリソースを起動または複製することが可能になり得る。
●ゾーン-各地域には、本明細書でゾーンと呼ばれる複数の孤立した場所が含まれ得る。クライアントのリソースインスタンスは、1つのゾーン内のリソースインスタンスに障害が発生した場合に、別のゾーン内のインスタンスが要求を処理できるように、リージョン内の複数のゾーンに分散させることができる。
実施形態によっては、クライアントは、それぞれのプロバイダネットワークサービス802を使用して、上記のネットワーキングプリミティブのうちの1つ以上のインスタンスを含む仮想ネットワーク810をプロバイダネットワーク800上に確立することができる。図8は、プロバイダネットワーク800上の仮想ネットワーク例810を示し、この例は、限定的であることを意図するものではない。クライアントの仮想ネットワーク810は、仮想ネットワークの機能性を実装するリソースインスタンス818(例えば、VM)、例えばアプリケーションサーバ、Webサーバ、データベースサーバなどを含み得る。リソースインスタンス818は、インスタンス818Aおよび818Bのグループまたはクラスタを含み得、例えば、インスタンス818Aは、本番環境に相当し得る一方、インスタンス818Bは、開発環境に相当し得る。実施形態によっては、インスタンス818Aと818Bとは、異なるサブネットおよび/またはセキュリティグループ内にあり得る。
クライアントの仮想ネットワーク810はまた、アプリケーションおよびオペレーティングシステムロギングサービス、ネットワーク監視および分析サービス、コードリポジトリサービス、コンテナ管理サービスなど、クライアントの仮想ネットワーク810内に特定のプロバイダネットワークサービスを実装するサービスインスタンス816(例えば、VM)を含み得る。
クライアントの仮想ネットワーク810はまた、クライアントネットワーク880上のデバイス882および他の外部エンティティ890がインターネットなどの中間ネットワーク850を介して仮想ネットワーク810内のリソースおよびエンドポイントと通信することを可能にするアクセスインスタンスを含み得る。アクセスインスタンスは、例えば、ロードバランサおよびゲートウェイ(インターネットゲートウェイ、NATゲートウェイなど)を含み得る。この例に示されるように、実施形態によっては、アクセスインスタンスは、HTTPSアクセスインスタンス814およびSSHアクセスインスタンス812を含み得る。HTTPSアクセスインスタンス814は、HTTPSプロトコルを使用して外部エンティティ890からリソースインスタンス818Aおよび818Bにそれぞれアクセスするためのインスタンス814Aおよび814B、ならびにHTTPSプロトコルを使用してクライアントネットワーク880上のデバイス882からサービスインスタンス816にアクセスするためのインスタンス814Cを含み得る。実施形態によっては、クライアントは、例えばSSHを使用して、クライアントネットワーク880上のデバイス882(例えば、コンソール)から仮想ネットワーク810内のリソースインスタンスにアクセスすることができる。実施形態によっては、SSHを使用してリソースインスタンスにアクセスするために、クライアントにインスタンスのIPアドレスとキーとが与えられる。クライアントは、提供された情報を使用してインスタンスに直接SSH接続することができる。実施形態によっては、SSHアクセスインスタンス812は、クライアントがSSHプロトコルを使用してクライアントネットワーク880上のデバイス882(例えば、コンソール)から仮想ネットワーク810上のクライアントのリソースインスタンスにアクセスすることを可能にするプロキシとして機能し得る。例えば、SSHアクセスインスタンス812は、クライアントの仮想ネットワークの公にアクセス可能なサブネット内にあり得る。クライアントのリソースインスタンスの少なくとも一部が、公にアクセスできないサブネットにある場合がある。これらのリソースインスタンスは、SSHアクセスインスタンス812に付設されたセキュリティグループからのSSHアクセスを許可するセキュリティグループ内にあり得る。クライアントは、クライアントのリソースインスタンスに接続するためにSSHアクセスインスタンス112に接続することができる。
図8に示すように、プロバイダネットワーク800は、プロバイダネットワーク800上の1つ以上のコンピューティングデバイスによって実装される仮想ネットワーク検証サービス830を含み得る。実施形態によっては、仮想ネットワーク検証サービス830のインスタンスは、例えば、図8に示すようにSSHアクセスインスタンス812によって、クライアントの仮想ネットワーク800上に実装され得る。仮想ネットワーク検証サービス830は、宣言的論理プログラミング言語(例えば、Datalog)を利用して、クライアントがプロバイダネットワーク上のクライアントの仮想ネットワークについて再帰クエリを含むクエリを制約問題として表すことを可能にし得、制約ソルバエンジンを使用してクエリを解決することにより、クエリに対する結果を提供する。
仮想ネットワーク検証サービス830において、サービス802によって提供されるネットワーキングプリミティブのための仮想ネットワーキングセマンティクスおよび論理は、論理プログラミング言語に従って仮想ネットワーキングルールのセットとして表され、符号化され得る。仮想ネットワーキングルールは、仮想ネットワーク810に実装されている様々なネットワーキングプリミティブ間の共通の関係および相互作用を表わすルールを含み得る。仮想ネットワーキングルールは、ネットワーキングセキュリティ基準(例えば、PCI、FedRAMP、HIPPAなど)、またはクライアントの内部セキュリティ基準もしくは他のネットワーキング要件を符号化するルールも組み込むことができる。
仮想ネットワーク検証サービス830は、クライアントの仮想ネットワーク810についての記述情報を得る。記述情報は、例えば、仮想ネットワーク810に実装されているネットワーキングプリミティブのインスタンスを特定し、様々なインスタンスの記述(例えば、インスタンスに割り当てられた役割、インスタンスに与えられたまたは与えられていないパーミッション、インスタンスに割り当てられたIPアドレスなど)を含み、インスタンス間の関係(例えば、インスタンス間のパス)を記述し、また外部エンティティ890へのインターフェースまたはアクセスポイントを記述することができる。実施形態によっては、クライアントは、仮想ネットワーク810から記述情報を得て、その記述情報を仮想ネットワーク検証サービス830に提供することができる。あるいは、実施形態によっては、クライアントは、仮想ネットワーク検証サービス830が仮想ネットワーク810から記述情報を直接得ることを可能にするパーミッションを、仮想ネットワーク検証サービス830に与えることができる。仮想ネットワーク検証サービス830は、宣言型論理プログラミング言語に従って記述情報を論理プログラムとして符号化することができる。
仮想ネットワーク検証サービス830は、宣言型論理プログラミング言語を利用し、クライアントがプロバイダネットワーク800上のクライアントの仮想ネットワーク810についてのクエリを、例えばグラフィカルインターフェースまたはコマンドラインインターフェース(CLI:Command Line Interface)を介して、クライアントネットワーク880内のクライアントデバイス882上のサービス830に提示することを可能にし得る。いくつかの実施形態において使用され得る論理プログラミング言語例には、Datalogがある。他の宣言型論理プログラミング言語が使用されてもよいことに留意されたい。実施形態によっては、クエリは、SQLに幾分類似している可能性があるがネットワーク構成に適用される表出型クエリ言語で提示され得る。あるいは、実施形態によっては、クエリは、人に分かりやすい形で提示され得る。クエリは、生成された論理プログラムに関する定理に対応し、制約問題を表す。仮想ネットワーク検証サービス830は、制約ソルバエンジンを使用して、符号化されたルールに従って、符号化された記述に対するクエリによって表された制約問題を解決することができ、その結果をクライアントに提供する。実施形態によっては、仮想ネットワーク検証サービス830は、クエリを提示するためのAPIおよびインターフェースを提供することができる。実施形態によっては、仮想ネットワーク検証サービス830は、クライアントがAPIおよびインターフェースを介して選択することができる標準クエリのセットを提供することができる。実施形態によっては、仮想ネットワーク検証サービス830は、クライアントがAPIおよびインターフェースを介してカスタムクエリを作成し、提出することを可能にし得る。
以下は、図8に示される仮想ネットワーク例について、クライアントによって提示され得るクエリ例を説明するものであり、このクエリ例は、限定的であることを意図するものではない。
仮想ネットワーク810のいくつかの実施形態では、仮想ネットワーク810上のリソースは、クライアントネットワーク880上の指定されたエンドポイントからSSHアクセスインスタンス812を通じてSSHを介してのみアクセス可能であるべきである。したがって、クライアントは、仮想ネットワーク810内のどのインスタンスも中間ネットワーク850上のエンドポイントからSSHを介してアクセス可能ではないことを検証したい場合がある。これを検証するためのクエリ例は、次のように表され得る。
すべてのインスタンス:
!internet-can-ssh-to-instance(Instance)
クライアントはまた、クライアントネットワーク880から、仮想ネットワーク810上のSSHアクセスインスタンス812がSSHを介してアクセス可能であることを検証したい場合もある。先に述べたように、実施形態によっては、仮想ネットワーク810内のクライアントのインスタンスの少なくともいくつかに特定の役割を割り当てることができ、役割は、インスタンス用のメタデータに格納されているタグによって示され得る。タグは、記述情報に含まれ得、それにより仮想ネットワーク810についての符号化された記述に示され得る。したがって、実施形態によっては、タグは、例えば、特定の役割を割り当てられたインスタンスが実際にそれらの役割を果たすことができることを検証するために、クエリで使用され得る。クライアントネットワーク880から、仮想ネットワーク810上のSSHアクセスインスタンス812がSSHを介してアクセス可能であることを検証するためのクエリ例は、次のように表され得る。
すべてのインスタンス:
atom/instance-tag(Instance、tag-key/Name、tag-value/SSHAccessInstance)
<=>ClientNetwork-can-ssh-to-instance(Instance)
上記の式は、制約ソルバによって評価されると、仮想ネットワーク810上のすべてのインスタンスをチェックし、SSHAccessInstanceとしてタグ付けされたインスタンスについては、制約ソルバは、そのインスタンスがクライアントネットワーク880からSSHを介して到達可能であるかどうかを判定し、そうである場合にTRUEを返し、そうでない場合にFALSEを返す。
以下では、クライアントが仮想ネットワーク検証サービス830に適切なクエリを提示することによって検証することができる仮想ネットワーク810の態様の他の例のいくつかを挙げているが、これは限定的であることを意図したものではない。
●SSHを介してクライアントネットワーク880からSSHアクセスインスタンス812のみがアクセス可能である。
●リソースインスタンス818Aおよび818Bは、中間ネットワーク850B(例えばインターネット)を介して外部エンティティ890によってそれぞれのHTTPSアクセスインスタンス814Aおよび814Bを通して到達可能である。
●リソースインスタンス818Aおよび818Bは、要求を認証するために中間ネットワーク850Bに到達することができる。
●リソースインスタンス818Aおよび818Bは、指定サービスインスタンス816に書き込むことができる。
●指定サービスインスタンス816は、HTTPSアクセスインスタンス814Cを介してクライアントネットワーク880から到達することができる。
●指定サービスインスタンス816は、仮想ネットワーク810上の指定エンドポイントに到達することができる。
●すべてのインスタンスは、指定されたタグのセットのうちの1つでタグ付けされる。
図9は、いくつかの実施形態による、仮想ネットワーク検証サービス例の構成要素および動作を示す。仮想ネットワーク検証サービス930は、プロバイダネットワーク上の1つ以上のコンピューティングデバイスによって実装することができる。実施形態によっては、仮想ネットワーク検証サービス930のインスタンスは、例えば図8に示されるようにSSHアクセスインスタンス812によって、クライアントの仮想ネットワーク上に実装され得る。図9に示されるように、実施形態によっては、仮想ネットワーク検証サービス930は、サービスエンジン934、制約ソルバ936エンジン、およびAPI932を含み得る。サービスエンジン934は、以下に限定されるわけではないが、ルール符号化950ロジック、クエリ処理960ロジック、および記述符号化970ロジックを実装し得る。制約ソルバ936は、符号化された仮想ネットワーキングルール938に基づいて、符号化された記述940によって表されるような、仮想ネットワークについての再帰クエリを含むクエリを解決するように構成された宣言型論理プログラミング言語エンジンに相当し得る。API932は、クライアントを含むがこれに限定されない外部エンティティにサービス910の機能性を公開する。
図9の(1A)および(1B)において、サービス930のルール符号化950ロジックは、仮想ネットワークに適用されるべき仮想ネットワーキングルール938を得て(1A)、符号化する(1B)ことができる。符号化されるルールは、サービスプロバイダから、クライアントから、または他の外部のエンティティもしくは情報源から得られ得る。符号化されたルール例938は、後で本明細書で示される。
実施形態において、仮想ネットワークで使用されるネットワーキングプリミティブのための仮想ネットワーキングセマンティクスおよび論理は、論理プログラミング言語に従って、仮想ネットワーキングルール938のセットとして得られ、符号化され得る。仮想ネットワーキングルール938は、仮想ネットワークに実装され得、またプロバイダネットワークのサービスおよびAPIによって提供される、様々なネットワーキングプリミティブ間の共通の関係および相互作用を表すルールを含み得る。したがって、実施形態は、プロバイダネットワーク環境において仮想ネットワーキングがどのように働くかの論理を記述する仮想ネットワーキングルール938を1つの場所またはファイルに備えることができる。
実施形態によっては、仮想ネットワーク検証サービス930は、ペイメントカード業界データセキュリティ基準(PCI DSS)、米国連邦リスクおよび承認管理プログラム(FedRAMP)基準、または医療保険の相互運用性と説明責任に関する法律(HIPPA)基準などのネットワーキングセキュリティ基準のためのルールを得て、符号化することができ、それにより、ネットワーキングセキュリティ基準を検証するためのルールを含む仮想ネットワーキングルール938のセットが実装され得る。実施形態によっては、仮想ネットワーク検証サービス930は、クライアントの仮想ネットワークが特定の標準に準拠していることを検証するためにクライアントによって選択的に使用され得る、様々なネットワーキングセキュリティ基準をそれぞれが符号化する、仮想ネットワーキングルール938の2つ以上の異なるセットを提供することができる。実施形態によっては、仮想ネットワーク検証サービス930は、クライアントの内部セキュリティ基準、ベストプラクティス、または他のネットワーキング要件を符号化するカスタムルールをクライアントが定義することを可能にすることができ、それにより、それらの特定の仮想ネットワークに適用するようにクライアントによって定義されたカスタムルールを含む、仮想ネットワーキングルール938のセットが実装され得る。
図9の(2)において、サービス930のクエリ処理960ロジックは、仮想ネットワーキングルール938に従って仮想ネットワークについて解決されるべきクエリをクライアントから受信することができる。実施形態によっては、クライアントは、グラフィカルインターフェースまたはコマンドラインインターフェース(CLI)を介して、プロバイダネットワーク上でクライアントの仮想ネットワークについてのクエリをサービスAPI932に提供することができる。実施形態によっては、クエリは、SQLに類似しているがネットワーク構成に適用される表出型言語で提示され得る。あるいは、実施形態によっては、クエリは、人に分かりやすい形で提示され得る。クエリ例は、図8に関連して上に説明されている。
図9の(3A)および(3B)において、サービス930の記述符号化970ロジックは、仮想ネットワークの記述を得て(3A)、符号化する(3B)ことができる。実施形態によっては、サービス930の記述符号化970ロジックは、仮想ネットワークについての記述情報を得て(3A)、記述符号化970ロジックが受信する各クエリに対して、符号化された記述940として、記述情報をエンコードし(3B)、クエリを解決する際に記述940が最新のものであることを保証する。しかし、実施形態によっては、記述符号化970ロジックは、仮想ネットワークについての記述情報を得て、符号化し、符号化された記述940を使用して2つ以上のクエリを処理することができる。図9の(3A)において、サービス930の記述符号化970ロジックは、クライアントの仮想ネットワークについての記述情報を得る。記述情報は、例えば、仮想ネットワークに実装されているネットワーキングプリミティブのインスタンスを特定し、様々なインスタンスの記述(例えば、インスタンスに割り当てられた役割、インスタンスに与えられたまたは与えられていないパーミッション、インスタンスに割り当てられたIPアドレスなど)を含み、インスタンス間の関係(例えば、インスタンス間のパスなど)を記述し、また外部エンティティへのインターフェースまたはアクセスポイントを記述することができる。実施形態によっては、クライアントは、仮想ネットワークから記述情報を得て、その記述情報を仮想ネットワーク検証サービスに提供することができる。あるいは、実施形態によっては、クライアントは、仮想ネットワーク検証サービス930がクエリに応答して、仮想ネットワークから記述情報を直接得ることを可能にするパーションを仮想ネットワーク検証サービス230に与えることができる。図9の(3B)において、サービス930の記述符号化970ロジックは、宣言型論理プログラミング言語に従って、得られた記述情報を論理プログラムとして符号化することができる。
図9の(4)において、サービス930のクエリ処理960ロジックは、クエリを制約ソルバ936に提供することができる。制約ソルバ936は、符号化されたルール938に従って、符号化された記述940に対するクエリによって表された制約問題を解決し、(5A)において、結果(例えば、クエリによって提示された質問に対する回答)を、結果をフォーマットするクエリ処理960に提供し、(5B)において、フォーマットされた結果をAPI932を介してクライアントに提供する。フォーマットされた結果は、文字形式結果(例えば、「YES」、「NO」、「TRUE」、または「FALSE」などのクエリによって提示された制約に対する回答を表すテキスト、クエリによって提示された制約を満たすインスタンスのリストなど)、および/またはグラフィカル結果(例えば、クエリを解決することによって判定された2つ以上のインスタンス間の関係のグラフィカル表現、クエリを解決することによって特定された仮想ネットワーク特定インスタンスのグラフィカル表現など)を含み得る。
図10は、いくつかの実施形態による、仮想ネットワークについての情報をプロバイダネットワークのクライアントに提供するための方法のフローチャートである。1000に示されるように、仮想ネットワーキングルールが得られ、符号化され得る。符号化されるルールは、サービスプロバイダから、クライアントから、または他の外部のエンティティもしくは情報源から得られ得る。仮想ネットワーキングルールは、プロバイダネットワーク上の仮想ネットワークで使用されるネットワーキングプリミティブのための仮想ネットワーキングセマンティクスおよび論理を表すことができる。実施形態によっては、仮想ネットワーキングルールは、ペイメントカード業界データセキュリティ基準(PCI DSS)、米国連邦リスクおよび認可管理プログラム(FedPAMP)基準、または医療保険の相互運用性と説明責任に関する法律(HIPAA)などのネットワーキングセキュリティ基準のためのルールを表し得る。実施形態によっては、仮想ネットワーキングルールは、クライアントの内部セキュリティ基準または他のネットワーキング要件を表すクライアント定義ルールを含み得る。符号化されたルール例は、本明細書において後で示される。
1010に示されるように、仮想ネットワーク検証サービスは、クライアント(ネットワーク到達可能性アナライザなど)から仮想ネットワークについてのクエリを受信することができる。実施形態では、コンソール上のサービスへのグラフィカルインターフェースを介して、またはコマンドラインインターフェース(CLI)を介して、クライアントが仮想ネットワーク検証サービスを使用して、プロバイダネットワーク上のクライアントの仮想ネットワークについての質問(再帰的クエリを含むクエリとして提示される)に対する回答を得ることができる。実施形態によっては、クエリは、SQLに類似しているがネットワーク構成に適用される表出型言語で提示され得る。あるいは、実施形態によっては、クエリは、人に分かりやすい形で提示され得る。クエリ例は、図8に関連して上に説明されている。
1020に示されるように、仮想ネットワーク検証サービスは、仮想ネットワークについての記述情報を得て、符号化することができる。記述情報は、例えば、仮想ネットワークに実装されているネットワーキングプリミティブのインスタンスを特定し、インスタンスの記述(例えば、計算インスタンスに割り当てられた役割、リソースインスタンスに与えられたまたは与えられていないパーミッション、インスタンスに割り当てられたIPアドレスなど)を含み、インスタンス間の関係(例えば、インスタンス間のパス)を記述し、また外部エンティティ(例えば、仮想ネットワークの外部のエンティティによってアクセスされ得る計算インスタンス)へのインターフェースまたはアクセスポイントを記述することができる。実施形態によっては、クライアントは、仮想ネットワークから記述情報を得て、その記述情報を仮想ネットワーク検証サービスに提供することができる。あるいは、実施形態によっては、クライアントは、仮想ネットワーク検証サービスが仮想ネットワークから記述情報を直接得ることを可能にするパーミッションを、仮想ネットワーク検証サービスに与えることができる。仮想ネットワーク検証サービスは、宣言型論理プログラミング言語(例えば、Datalog)に従って記述情報を論理プログラムとして符号化することができる。
1030に示されるように、仮想ネットワーク検証サービスは、宣言型論理プログラミング言語(例えば、Datalog)制約ソルバエンジンを使用して、符号化された仮想ネットワーキングルールに従って、符号化された記述に対するクエリを解決し得る。1040に示されるように、クエリ解決の結果(例えば、クエリによって提示された質問に対する回答)がフォーマットされ、クライアントに提供され得る。フォーマットされた結果は、文字形式結果(例えば、「YES」、「NO」、「TRUE」、または「FALSE」などのクエリによって提示された制約に対する回答を表すテキスト、クエリによって提示された制約を満たすインスタンスのリストなど)、および/またはグラフィカル結果(例えば、クエリを解決することによって判定された2つ以上のインスタンス間の関係のグラフィカル表現、クエリを解決することによって特定された仮想ネットワーク特定インスタンスのグラフィカル表現など)を含み得る。
要素1040から要素1010に戻る矢印によって示されるように、要素1010~1040を繰り返し行って、クライアントの仮想ネットワークについての複数のクエリを提示し、解決することができる。実施形態によっては、例えば、クライアントは、一連のクエリを含むスクリプトを書いて、そのスクリプトを実行してクエリを仮想ネットワーク検証サービスに提示し、またそこから結果を受信することができる。図10に示すように、実施形態によっては、仮想ネットワーク検証サービスは、仮想ネットワークについての記述情報を得て、仮想ネットワーク検証サービスが受信する各クエリに対して記述情報を符号化された記述として符号化し、クエリを解決する際に記述が最新のものであることを保証することができる。しかし、実施形態によっては、仮想ネットワーク検証サービスは、仮想ネットワークについての記述情報を取て、符号化し、符号化された記述を使用して2つ以上のクエリを処理することができる。
図11は、いくつかの実施形態による、クライアントが記述情報およびクエリを仮想ネットワーク検証サービスに提供する、プロバイダネットワークのクライアントに仮想ネットワークについての情報を提供するための方法のフローチャートである。1100に示されるように、クライアント(ネットワーク到達可能性アナライザなど)は、例えばプロバイダネットワークサービスAPIによって提供されるDESCRIBEコールを使用して、仮想ネットワークから記述情報を得る。1110に示されるように、クライアントが、仮想ネットワーク検証サービスにクエリおよび記的情報を送信する。1120に示されるように、検証サービスが、仮想ネットワークについての記述情報を符号化する。1130に示されるように、検証サービスが、制約ソルバエンジンを使用して、符号化された仮想ネットワークルールに従って、符号化された記述に対するクエリを解決する。1140に示されるように、仮想ネットワーク検証サービスは、クエリ解決の結果をクライアントに提供する。
図12は、いくつかの実施形態による、クライアントが、記述情報、および仮想ネットワークにアクセスするためのパーミッションを仮想ネットワーク検証サービスに提供する、プバイダネットワークのクライアントに仮想ネットワークについての情報を提供する方法のフローチャートである。1200に示されるように、クライアント(ネットワーク到達可能性アナライザなど)が、サービスが仮想ネットワークから記述的情報を得ることを可能にするパーミッション、例えば、仮想ネットワークを記述するメタデータを維持する1つ以上のプロバイダネットワークサービスへのDESCRIBEコールを使用して、仮想ネットワークについての情報を得るためのパーミッションを、仮想ネットワーク検証サービスに与える。1210に示されるように、クライアントが、仮想ネットワーク検証サービスにクエリを送信する。1220に示されるように、仮想ネットワーク検証サービスが、例えば、仮想ネットワークを記述するメタデータを維持する1つ以上のプロバイダネットワークサービスへのDESCRIBEコールを使用して、仮想ネットワークから記述情報を得る。1230に示されるに、仮想ネットワーク検証サービスが仮想ネットワークについての記述情報を符号化する。1240に示されるように、仮想ネットワーク検証サービスが、制約ソルバエンジンを使用して、ルールに従って、符号化された記述に対するクエリを解決する。1250に示されるように、仮想ネットワーク検証サービスは、クエリ解決の結果をクライアントに提供する。
図13は、いくつかの実施形態による、2つ以上のピア型仮想ネットワークを含む、プロバイダネットワーク環境におけるクライアントの仮想ネットワーク実装形態を示す。図13は、本明細書で説明される、仮想ネットワーク検証サービス1330において使用され得る仮想ネットワーキングルール例を部分的に説明するために提供される。図13に示されるように、プロバイダネットワーク1300上のクライアントの仮想ネットワーク実装形態1310は、2つ以上の仮想ネットワーク1320を含み得る。図13は、クライアントの仮想ネットワーク実装形態1310における2つの仮想ネットワーク1320Aおよび1320Bを示す。実施形態によっては、仮想ネットワーク1320Aおよび1320Bは、それぞれ1つ以上のサブネットを含み得、セキュリティグループは、仮想ネットワーク1320Aおよび1320内に確立され得る。ネットワークエンドポイント1322Aおよび1322Bは、それぞれの仮想ネットワーク1320Aおよび1320Bにおけるネットワーキングプリミティブの様々なインスタンス(例えば、リソースインスタンス)のネットワークインターフェースを表す。仮想ネットワーク1320Aおよび1320B上のインスタンスがインターネットなどの外部ネットワーク1350を横断する必要なしにプロバイダネットワーク1300にわたって安全に通信することを可能にするピアリング接続1324が、仮想ネットワーク1320Aと1320Bとの間にプロバイダネットワーク1300にわたって確立され得る。
「プライベートルーティング」のルール例を以下に示す。これらの例は、限定的であることを意図するものではない。これらの例で使用される「ルーティング」とは、ファイアウォールなしで、IPパケットが1つのエンドポイントから別のエンドポイントに流れることができるかどうかを意味する。仮想ネットワーク実装形態1310内の2つのエンドポイント間のルーティングは、「プライベートルーティング」と呼ばれることがある。仮想ネットワーク実装形態1310において、両方のエンドポイントが同じ仮想ネットワーク1320にあるか、または異なる仮想ネットワーク1320にあるかに応じて、このルールは、異なる可能性がある。以下では、仮想ネットワーク実装形態1310においてパケットが2つのエンドポイント間を流れ得るかどうかを判断するための記述的論理プログラミング言語に従うルール例を記述する。
routable-private:endpoint->endpoint->type
-:routable-private Endpoint1 Endpoint2
<-routable-private-one-way Endpoint1 Endpoint2
<-routable-private-one-way Endpoint2 Endpoint1
最初の行は、エンドポイントのタイプを定義する。Endpoint1およびEndpoint2は、変数である。(routable-private-one-way Endpoint1 Endpoint2)および(routable-private-one-way Endpoint2 Endpoint1)が両方とも真の場合、ルール(routable-private Endpoint1 Endpoint2)は、真と評価される(そうでなければ偽)。仮想ネットワーク1320内のエンドポイント間のルーティングでは、ルールroutable-private-one-wayは、以下のように定義され得る。
routable-private-one-way:endpoint->endpoint ->type
-:routable-private-one-way Endpoint1 Endpoint2
<-endpoint-has-virtual-network Endpoint1 Vnetwork
<-endpoint-has-virtual-network Endpoint2 Vnetwork
Endpoint1およびEndpoint2は、変数である。Vnetworkは、同じ変数である(すなわち、同じ仮想ネットワーク1320を示す)。このルールは、Endpoint1およびEndpoint2の両方が同じ仮想ネットワーク1320内にある場合には真(そうでない場合には偽)と評価する。
ピアリング接続1324を通した、様々な仮想ネットワーク1320内のエンドポイント2022間のルーティングでは、ルールroutable-private-one-wayは、以下のように定義され得る。「//」で始まるテキストは、コメントである。
-:routable-private-one-way Endpoint1 Endpoint2
//エンドポイントのIPを調べる
<-endpoint-has-private-ip Endpoint1 Ip1
<-endpoint-has-private-ip Endpoint1 Ip2
//エンドポイントの仮想ネットワークを調べる
<-endpoint-has-virtual-network Endpoint1 Vnetwork1
<-endpoint-has-virtual-network Endpoint2 Vnetwork2
//ピアリングのCIDR(クラスレスドメイン間ルーティング)を調べる
<-peered-cidrs Pcx Vnetwork1 Cidr1 Vnetwork2 Cidr2
//ソースエンドポイントのルートテーブルを調べる
<-endpoint-has-rtb Endpoint1 Rtb1
//テーブル内のルートのCIDRを調べ、そのルートが有効であるか確認する
<-atom/pcx-route Rtb1 Pcx Cidr3 route-state/active
//3つのCIDRすべてがそれぞれのIPと一致することを確認する
<-cidr-matches-private-ip Cidr1 Ip1
<-cidr-matches-private-ip Cidr2 Ip2
<-cidr-matches-private-ip Cidr3 Ip2
図14は、いくつかの実施形態による、プロバイダネットワーク上の仮想ネットワーク例内のサブネットおよびセキュリティグループを示す。上で述べたように、ネットワーク到達可能性アナライザは、セキュリティグループに変更を行うことを含め、ポートを閉じる、かつ/またはポートを到達不能にするという是正措置を勧告する、かつ/または行うことができる。実施形態によっては、プロバイダネットワークは、クライアントが、クライアントの仮想ネットワーク1410内に、サブネット1414内に、またはサブネット1414にわたって、仮想セキュリティグループ1416を確立し、管理することを可能にし得る。一実施形態において、セキュリティグループ1416は、リソースインスタンス1418の論理上のグループ化であり、セキュリティグループルールに従って、セキュリティグループ1416内の1つ以上のリソースインスタンス1418に到達することを許されたトラフィックを制御する仮想ファイアウォールとして機能する。クライアントは、仮想ネットワーク1410内に1つ以上のセキュリティグループ1416を確立し、仮想ネットワーク1410内の各リソースインスタンス1418をセキュリティグループ1416のうちの1つ以上に関連付けることができる。実施形態によっては、クライアントは、セキュリティグループ1416に関連付けられたリソースインスタンス1418に到達することを許されたインバウンドトラフィックを制御する各セキュリティグループ1416に対するルールを確立し、かつ/または修正することができる。
図14に示される仮想ネットワーク例1410では、仮想ネットワークは1410は、2つのサブネット1414Aと1414Bとに細分される。仮想ネットワーク1410へのアクセスは、ゲートウェイ1430によって制御される。各サブネット1414は、それぞれのサブネット1414上のリソースインスタンス1418へ(また、それから)トラフィックを送るように働く少なくとも1つのルータ1412を含み得る。実施形態によっては、ネットワークアクセス制御リスト(ACL)を使用して、ルータ1412においてサブネット1414へのアクセスを制御することができる。図14に示される例では、リソースインスタンス1418A~1418Eがサブネット1414A上にあり、リソースインスタンス1418F~1418Jがサブネット1414B上にある。クライアントは、4つのセキュリティグループ1416A~1416Dを確立している。図14に示されるように、セキュリティグループは、サブネット1414A上のリソースインスタンス1418Aおよび1418Bとサブネット1414B上のリソースインスタンス1418Fとを含むセキュリティグループ1416Aがそうであるように、サブネット1414にわたって延在し得る。また、リソースインスタンス1418は、セキュリティグループ1416Aおよび1416Bに含まれるリソースインスタンス1418Aがそうであるように、2つ以上のセキュリティグループ1416に含まれ得る。
例示的なコンピュータシステム
少なくともいくつかの実施形態では、本明細書に記載の技術のうちの1つ以上の一部または全部を実装するコンピュータシステムは、1つ以上のコンピュータ可読媒体を含むか、またはそれにアクセスするように構成されるコンピュータシステムを含み得る。図15は、そのようなコンピューティングデバイス1500を示している。図示の実施形態では、コンピューティングデバイス1500は、入力/出力(I/O)インターフェース1530を介してシステムメモリ1520に結合された1つ以上のプロセッサ1510A-1510Nを含む。コンピューティングデバイス1500は、I/Oインターフェース1530に結合されたネットワークインターフェース1540をさらに含む。
様々な実施形態において、コンピューティングデバイス1500は、1つのプロセッサを含む単一プロセッサシステム、またはいくつかのプロセッサ1510A~1510N(例えば、2、4、8、または別の適切な個数)を含むマルチプロセッサシステムであり得る。プロセッサ1510A~1510Nは、命令を実行することができる任意の適切なプロセッサを含み得る。例えば、様々な実施形態において、プロセッサ1510A~1510Nは、x86、PowerPC、SPARC、もしくはMIPS ISAなどの様々な命令セットアーキテクチャ(ISA:Instruction Set Architecture)のいずれか、または他のいずれかのISAを実装するプロセッサであり得る。マルチプロセッサシステムでは、プロセッサ1510A~1510Nのそれぞれは、通常、同じISAを実装することができるが、必ずしもそうとは限らない。
システムメモリ1520は、プロセッサ1510A~1510Nによってアクセス可能なプログラム命令およびデータを格納するように構成され得る。様々な実施形態において、システムメモリ1520は、スタティックランダムアクセスメモリ(SRAM:Static Random Access Memory)、シンクロナスダイナミックRAM(SDRAM:Synchronous Dynamic RAM)、不揮発性/フラッシュ型メモリ、または任意の他のタイプのメモリなどの任意の適切なメモリテクノロジーを使用して実装され得る。図示の実施形態では、上記のこれらの方法、技法、およびデータなど、1つ以上の望ましい機能を実装するプログラム命令およびデータが、コード(すなわち、プログラム命令)1525およびデータ1526としてシステムメモリ1520内に格納されて示されている。図示の実施形態では、システムメモリ1520は、上で述べたネットワークセキュリティ評価装置100の態様を実装するプログラムコードおよびデータも格納する。
ある実施形態では、I/Oインターフェース1530は、プロセッサ1510A~1510Nと、システムメモリ1520と、ネットワークインターフェース1540または他の周辺インターフェースを含むデバイス内の任意の周辺デバイスと、の間のI/Oトラフィックを調整するように構成され得る。実施形態によっては、I/Oインターフェース1530は、ある構成要素(例えば、システムメモリ1520)からのデータ信号を別の構成要素(例えば、プロセッサ1510A~1510N)による使用に適したフォーマットに変換するために必要ないかなるプロトコル、タイミング、または他のデータの変換も行うことができる。実施形態によっては、I/Oインターフェース1530は、例えば、周辺コンポーネント相互接続(PCI:Peripheral Component Interconnect)バス規格またはユニバーサルシリアルバス(USB:Universal Serial Bus)規格の一種など、様々なタイプの周辺バスを通して付設されたデバイスへのサポートを含み得る。実施形態によっては、I/Oインターフェース1530の機能は、例えば、ノースブリッジおよびサウスブリッジなどの2つ以上の別々の構成要素に分割され得る。また、実施形態によっては、システムメモリ1520へのインターフェースなど、I/Oインターフェース1530の機能性の一部または全部が、プロセッサ1510A~1510Nに直接組み込まれ得る。
ネットワークインターフェース1540は、コンピューティングデバイス1500と、1つまた複数のネットワーク1550に付設された他のデバイス1560との間でデータを交換することを可能にするように構成され得る。様々な実施形態において、ネットワークインターフェース1540は、例えば、イーサネットネットワーク型など、任意の適切な有線または無線の一般的なデータネットワークを介した通信に対応することができる。さらに、ネットワークインターフェース1540は、アナログ音声ネットワークもしくはデジタルファイバ通信ネットワークなどの電気通信/電話ネットワーク、ファイバチャネルSANなどのストレージエリアネットワーク、または他の任意の適切なタイプのネットワークおよび/もしくはプロトコルを介した通信に対応することができる。
実施形態によっては、システムメモリ1520は、対応する方法および装置の実施形態を実装するための上記のようなプ ログラム命令およびデータを格納するように構成されたコンピュータ可読(すなわち、コンピュータアクセス可能)媒体の一実施形態であり得る。例えば、システムメモリ1520は、ネットワークセキュリティ評価装置100に関連するプログラムコードおよびデータを格納することができる。実施形態によっては、プログラム命令および/またはデータは、様々なタイプのコンピュータ可読媒体上で受信され、送信され、または格納され得る。一般的に言えば、コンピュータ可読媒体は、I/Oインターフェース1530を介してコンピューティングデバイス1500に結合された磁気または光学媒体、例えばディスクまたはDVD/CDなどの非一時的記憶媒体またはメモリ媒体を含み得る。非一時的コンピュータ可読記憶媒体は、システムメモリ1520または別のタイプのメモリとしてコンピューティングデバイス1500のいくつかの実施形態に含まれ得る、RAM(例えば、SDRAM、DDR SDRAM、RDRAM、SRAMなど)、ROMなどの任意の揮発性媒体または不揮発性媒体も含み得る。さらに、コンピュータ可読媒体は、伝送媒体、またはネットワークインターフェース1540を介して実装され得るような、ネットワークおよび/または無線リンクなどの通信媒体を介して伝達される、電気信号、電磁信号、もしくはデジタル信号などの信号を含み得る。図15に示されるものなどの複数のコンピューティングデバイスの一部またはすべてを使用して、様々な実施形態において、記載の機能性を実装することができ、例えば、様々な異なるデバイスおよびサーバで実行されるソフトウェアコンポーネントが連携して機能性を提供し得る。実施形態によっては、記載の機能性の一部は、記憶装置デバイス、ネットワークデバイス、または様々なタイプのコンピュータシステムを使用して実装され得る。本明細書で使用される際、「コンピューティングデバイス(computing device)」という用語は、少なくともこれらのタイプのデバイスのすべてを指すが、これらのタイプのデバイスに限定されるものではない。
図面に示され、本明細書で説明される様々な方法は、方法の実施形態の例を表す。方法は、ソフトウェア、ハードウェア、またはそれらの組み合わせで実装され得る。方法のうちの様々な方法で、ステップの順序が変更され得、様々な要素の追加、並べ替え、組み合わせ、省略、修正などが可能である。ステップのうちの様々なステップが自動的に(例えば、ユーザ入力によって直接促されることなく)、かつ/またはプログラムによって(例えば、プログラム命令に従って)行われ得る。
本開示の実施形態は、以下の条項によって記述され得る。
1.システムであって、
ネットワークセキュリティ評価装置を実装するように構成された1つ以上のコンピューティングデバイスを備え、前記ネットワークセキュリティ評価装置が、
ホストコンピュータを含むネットワークに対して、ネットワーク構成データの1つ以上のクエリを生成することであって、前記1つ以上のクエリがクエリ言語で表され、前記1つ以上のクエリが、少なくとも部分的にルールのセットに基づいて生成される、生成することと、
開いており、かつ前記ネットワークの外側から到達可能である、前記ホストコンピュータにある1つ以上のポートを判定することであって、前記1つ以上のポートが、前記1つ以上のクエリの結果に少なくとも部分的に基づいて判定される、判定することと、
前記1つ以上のポートをリッスンしている1つ以上のプロセスを判定することであって、前記1つ以上のプロセスが、前記ホストコンピュータにインストールされたエージェントを使用して判定される、判定することと、
前記1つ以上のポートおよび前記1つ以上のプロセスを記述したレポートを生成することと、を行うように、構成されている、システム。
2.前記ネットワークセキュリティ評価装置が、
前記ネットワークの外側から前記1つ以上のポートへの1つ以上のルートを判定決および報告するようにさらに構成されている、条項1に記載のシステム。
3.前記ネットワークセキュリティ評価者が、
前記1つ以上のポートを、開いており、かつ前記ネットワークの外側から到達可能であるようにする、1つ以上の構成設定を判定および報告するようにさらに構成されている、条項1または2のいずれか一項に記載のシステム。
4.前記ネットワークセキュリティ評価装置が、
行われる場合、前記ポートのうちの1つ以上を閉じるか、または前記ポートのうちの1つ以上を前記ネットワークの外側から到達不能にする、1つ以上の是正措置を判定および報告するようにさらに構成されている、条項1から3のいずれか一項に記載のシステム。
5.1つ以上のコンピューティングデバイスによって行われるコンピュータ実装方法であって、
コンピューティングデバイスを含むネットワークに対して、ネットワーク構成データの分析を行うことと、
別のコンピューティングデバイスから到達可能である前記コンピューティングデバイスにある1つ以上のポートを判定することであって、前記1つ以上のポートが前記分析に少なくとも部分的に基づいて判定される、判定することと、
前記1つ以上のポートへの1つ以上のルートを判定することであって、前記1つ以上のルートが、少なくとも部分的に前記分析に基づいて判定される、判定することと、
前記1つ以上のポートおよび前記1以上のルートを記述するレポートを生成することと、を含む、コンピュータ実装方法。
6.
前記1つ以上のポートをリッスンしている1つ以上のプロセスを判定および報告することであって、前記1つ以上のプロセスが、前記コンピューティングデバイスにインストールされたエージェントソフトウェアを使用して判定される、ことをさらに含む、条項5に記載の方法。
7.
前記1つ以上のポートを到達可能であるようにする、1つ以上の構成設定を判定および報告することをさらに含む、条項5または6のいずれか一項に記載の方法。
8.
行われる場合、前記ポートのうちの1つ以上を到達不能にする、1つ以上の是正措置を判定および報告することをさらに含む、条項5から7のいずれか一項に記載の方法。
9.
ユーザーインターフェイスに、選択された場合に前記是正措置のうちの少なくとも1つが行われるようにする、1つ以上のインターフェース要素を表示することをさらに含む、条項8に記載の方法。
10.前記分析が、前記ネットワーク構成データの1つ以上のクエリに少なくとも部分的に基づいて行われ、前記1つ以上のクエリが、クエリ言語で表され、前記1つ以上のクエリが、少なくとも部分的にルールのセットに基づいて生成される、条項5から9のいずれか一項に記載の方法。
11.前記1つ以上のポートにパケットを送信せずに、前記1つ以上のポートが判定される、条項5から10のいずれか一項に記載の方法。
12.
追加のコンピューティングデバイスから前記1つ以上のポートに1つ以上のパケットを送信することにより、前記1つ以上のポートが到達可能であることを検証することをさらに含む、条項5から11のいずれか一項に記載の方法。
13.プログラム命令を格納するコンピュータ可読記憶媒体であって、前記プログラム命令が、
ホストコンピュータを含むネットワークに対して、ネットワーク構成データの分析を行うことと、
開いており、かつ別のコンピュータから到達可能である、前記ホストコンピュータにある1つまたは複数のポートを判定することであって、前記1つ以上のポートが、少なくとも部分的に前記分析の結果に基づいて判定される、判定することと、
前記1つ以上のポートをリッスンしている1つ以上のプロセスを判定することであって、前記1つ以上のプロセスが、前記ホストコンピュータにインストールされたエージェントを使用して判定される、判定することと、
前記1つ以上のポートおよび前記1つ以上のプロセスを記述したレポートを生することと、を行うようにコンピュータ実行可能である、コンピュータ可読記憶媒体。
14.前記プログラム命令が、
前記1つ以上のポートをリッスンしている1つ以上のプロセスを判定および報告することであって、前記1つ以上のプロセスが、ホストコンピュータにインストールされたエージェントソフトウェアを使用して判定される、判定および報告すること、を行うようにさらにコンピュータ実行可能である、条項13に記載のコンピュータ可読記憶媒体。
15.前記プログラム命令が、
前記1つ以上のポートを開いており、かつ到達可能であるようにする、1つ以上の構成設定を判定および報告すること、を行うようにさらにコンピュータ実行可能である、条項13または14のいずれか一項に記載のコンピュータ可読記憶媒体。
16.前記プログラム命令が、
行われる場合、前記ポートのうちの1つ以上を閉じるか、または前記ポートのうちの1つ以上を到達不能にする、1つ以上の是正措置を判定および報告すること、を行うように、さらにコンピュータ実行可能である、条項13から15のいずれか一項に記載のコンピュータ可読記憶媒体。
17.前記プログラム命令が、
ユーザーインターフェイスに、選択された場合に前記是正措置のうちの少なくとも1つが行われるようにする、1つ以上のインターフェース要素を表示することをさらに含む、条項16に記載の方法。
18.前記分析が、前記ネットワーク構成データの1つ以上のクエリに少なくとも部分的に基づいて行われ、前記1つ以上のクエリが、クエリ言語で表され、前記1つ以上のクエリが、少なくとも部分的にルールのセットに基づいて生成される、条項13から17のいずれか一項に記載のコンピュータ可読記憶媒体。
19.別のコンピュータから前記1つ以上のポートにパケットを送信することなく、前記1つ以上のポートが判定される、条項13から18のいずれか一項に記載のコンピュータ可読記憶媒体。
20.信頼できる場所のホワイトリストに少なくとも部分的に基づき、前記リポートから、さらに1つ以上の開いており、かつ到達可能なポートが前記リポートから除外される、条項13から19のいずれか一項に記載のコンピュータ可読記憶媒体。
本明細書の本発明の記載で使用される用語は、特定の実施形態のみを説明するためのものであり、本発明を限定することを意図するものではない。本発明の明細書および添付の特許請求の範囲で使用される際、単数形「a」、「an」、および「the」は、文脈上そうでないことが明確に示されない限り、複数形も含むことを意図している。本明細書で使用される「および/または(and/or)」という用語は、関連の挙げられた項目の1つ以上のありとあらゆる考えられる組み合わせを指し、含むことも理解されるであろう。本明細書で使用される際、用語「含む(includes)」、「含む(including)」、「備える(comprises)」、および/または「備える(comprising)」は、述べられた特徴、整数、ステップ、動作、要素、および/または構成要素の存在を明示するが、1つ以上の他の特徴、整数、ステップ、動作、要素、構成要素、および/またはそれらのグループの存在または追加を排除するものではことがさらに理解されるであろう。
本明細書で使用される際、用語「の場合(if)」は、文脈に応じて、「いつ」または「時に」または「判定に応答して」または「検出に応答して」を意味すると解釈され得る。同様に、「判定された場合」または「(規定の条件またはイベント)が検出された場合」という言い回しは、文脈に応じて、「決定時に」または「判定に応答して」または「(規定の条件またはイベント)の検出時に」、または「(規定の条件またはイベント)の検出に応答して」を意味すると解釈され得る。
本明細書では、第1、第2などの用語を使用して様々な要素を説明している場合があるが、これらの要素は、これらの用語によって限定されるべきではないことも理解されるであろう。これらの用語は、ある要素と別の要素を区別するためにのみ使用される。例えば、本発明の範囲から逸脱しない限り、第1のコンタクトを第2のコンタクトと言うことができ、同様に、第2のコンタクトを第1のコンタクトと言うことができる。第1のコンタクトと第2のコンタクトは、両方ともコンタクトであるが、同じコンタクトではない。
請求項に係る発明の対象の完全な理解をもたらすように、多数の特定の細目が本明細書に示されている。しかし、これらの特定の細目を伴わずに請求項に係る発明の対象が実施されることが、当業者には理解されるであろう。他の例では、請求項に係る発明の対象を不明瞭にしないために、当業者に知られていると思われる方法、装置、またはシステムは、詳細には説明されていない。本開示の恩恵を受ける当業者に明らかであるように、様々な修正および変更がなされ得る。このような修正および変更をすべて受け入れ、したがって上記の説明が限定的な意味合いではなく例示的な意味合いで見られることを意図している。