(58)【調査した分野】(Int.Cl.,DB名)
プロセッサに結合されたメモリを含む仮想プライベートゲートウェイ(VGW)プロビジョニングサービスであって、前記メモリが、実行時に前記VGWプロビジョニングサービスに、
サービスプロバイダの顧客からVGWを確立する要求を受信することであって、前記要求が、前記VGWを通じてアクセス可能で且つ前記サービスプロバイダから前記顧客に提供されるサービスと顧客設定可能ポリシーとを指定し、前記顧客設定可能ポリシーが、前記指定されたサービスへのアクセスを、前記指定されたサービスに前記VGWを介して送信された要求に制限する、前記VGWを確立する要求を受信すること、
前記要求に応じて、演算デバイス上でVGW仮想マシンをインスタンス化することであって、前記VGW仮想マシンが、パブリックネットワークを経由してリモートノードへのセキュアトンネルを確立し、前記セキュアトンネルを経由して前記リモートノードから暗号化されたトラフィックを受信するように構成されたVGWアプリケーションを含む、前記VGW仮想マシンをインスタンス化すること、
前記VGW仮想マシンに前記指定されたサービスの経路データが提供されるようにすることであって、前記VGWアプリケーションが、実行時に、前記指定されたサービスの前記経路データを、前記セキュアトンネル経由で前記VGWアプリケーションにアドバタイズさせる命令を含む、前記経路データが提供されるようにすること、及び
前記サービスが順守するように、前記指定されたサービスに前記顧客設定可能ポリシーを提供すること、
を行わせる命令を含む、前記VGWプロビジョニングサービスを備えたシステム。
前記VGWプロビジョニングサービスが、経路交換サービスへの経路要求の送信を通じて、前記指定されたサービスの前記経路データが前記VGW仮想マシンに提供されるように構成され、
前記経路要求が、前記指定されたサービスを識別し、
前記経路交換サービスが、アプリケーションプログラミングインタフェース(API)呼出しを前記顧客のVGWに送信するように構成され、前記API呼出しが前記経路データを含む、請求項1に記載のシステム。
前記VGWアプリケーションはさらに、実行時に、前記VGWアプリケーションが前記セキュアトンネルを介してリモートノードから暗号化されたパケットを受信することであって、前記暗号化されたパケットは、前記指定されたサービスのサービス要求を含む、前記受信することに応じて、前記VGWアプリケーションに、
前記暗号化されたパケットを復号化して前記サービス要求を取得すること、
前記サービス要求のヘッダー内の情報を使用して、経路表にアクセスし、前記サービス要求の対象となる前記サービスへの経路を判定すること、及び
前記判定された経路を介して、前記要求の対象となる前記サービスに前記サービス要求を転送すること、
を行わせる命令を含み、
前記サービスが、前記サービス要求を実行するように構成されている、請求項1に記載のシステム。
プロセッサに結合されたメモリを含む仮想プライベートゲートウェイ(VGW)プロビジョニングサービスであって、前記メモリが、実行時に前記VGWプロビジョニングサービスに、
VGWを確立するため、前記VGWを通じてアクセス可能で且つサービスプロバイダから顧客に提供されるサービスを指定する要求を受信すること、
前記要求に応じて、演算デバイス上でVGW仮想マシンをインスタンス化することであって、前記VGW仮想マシンが、パブリックネットワークを経由してリモートノードへのセキュアトンネルを確立し、前記セキュアトンネルを経由して前記リモートノードから暗号化されたトラフィックを受信するように構成されたVGWアプリケーションを含む、前記VGW仮想マシンをインスタンス化すること、及び
前記指定されたサービスの経路データが、前記VGW仮想マシンに提供されるようにすること
を行わせる命令を含む、前記VGWプロビジョニングサービスを備えたシステム。
【発明を実施するための形態】
【0004】
本明細書に記載されている実施形態は、プロバイダネットワークを具体的に説明するものである。このプロバイダネットワークは、顧客のそれぞれが仮想プライベートゲートウェイ(VGW)を作成し使用して、顧客のリモートノード(すなわち、プロバイダネットワークからリモートのノード)とVGWとの間にセキュアな(例えば、暗号化された)トンネルを確立することを可能にする。顧客は、暗号化トンネルを使用して、プロバイダネットワーク内で実行されるサービス(例えば、ストレージサービス)を求めて要求を送信できる。顧客は、リモートノードから、プロバイダネットワークホスト型サービス向けの要求を暗号化するか、または暗号化させることができる。暗号化されたパケットは、セキュアトンネルを経由してVGWに伝送される。VGWは、例えば、仮想マシン内で実行されるアプリケーションとして実装してもよく、仮想マシン自体は、プロバイダネットワーク内のサーバなどの演算デバイス上で実行される。このアプリケーションは、本明細書に記載されているVGWによる機能を実行できる。VGWは、サービスエンドポイントとして動作し、パケットを復号化してサービス要求を復元する。VGWは、サービス要求を対象サービスが実行されるサーバに配信するために、経路表内の対象サービスの経路データを使用して、サービスプロバイダの内部ネットワークを通じてサービス要求を転送する。その後、サービスがサービス要求を実行し得る。リモートノードに送り返すべき、サービスによって生成された全ての応答パケットは、VGWに返送され、次いでVGWはパケットを暗号化し、暗号化したパケットをトンネル経由でリモートノードに伝送する。したがって、顧客は、サービスと関連したパブリックインターネットプロトコル(IP)アドレスにサービス要求を送信することによってではなく、VGWへの専用暗号化トンネルを通じてサービスにアクセスすることができる。
【0005】
いくつかの実施形態では、プロバイダネットワークは、顧客がVGWの作成の要求を送信することができるVGWプロビジョニングサービスを含み得る。プロビジョニングサービスは、所与の顧客のVGWを作成する要求を受信すると、VGW仮想マシンをロードして実行するサーバを選択する。VGW仮想マシンは、VGWの機能を実装する上記のアプリケーションを含むマシンイメージを備えてもよい。VGWを作成する要求には、顧客が暗号化トンネルを通じたアクセスを希望する1つ以上のサービスの識別子が含まれる場合もある。
【0006】
いくつかの実施形態では、VGWは、VGWによって受信された着信パケットをどこに送信すべきかをVGWが判定するのを容易にする経路データを収めた経路表を含み得る。顧客のVGWを経由してアクセスできるように顧客が指定したサービス(複数可)は、プレフィックスリスト識別子及び対応するサービスの正規名を含むプレフィックスリストなどの経路データを生成することができる。プレフィックスリスト識別子は、サービス用のパブリックIPアドレスの範囲を論理的に表し得るものである。プレフィックスリストに加えて他の形式の経路データも可能である。プロバイダネットワークは、経路交換サービスを実装し得る。この経路交換サービスは、サービスが、VGWに再配布すべきそれらの経路データを提供し更新できるようにする。VGWは、そのような各サービスにアクセスするように構成されている。VGWの作成後、VGWプロビジョニングサービスは、経路交換サービスに要求を送信することができる。要求は、VGWがどのサービス(複数可)にアクセスするように構成されるべきかを指定し、経路交換サービスは、指定されたサービスの経路データをVGWに提供し得、次いでVGWが、その経路表にそのような経路データを追加する。
【0007】
各顧客がプロビジョニングサービスにアクセスして、顧客が顧客自身のVGWを介してアクセス可能であるように指定した所与のサービスに対するポリシーを作成することもできる。一例では、ポリシーは、VGWを通る(したがって、VGWへの暗号化トンネルを通る)サービス要求のみがサービスによって受け入れられるということを指定できる。他の種類のポリシーも可能である。ポリシーは、対応するサービスに提供され、それらのサービスによって実装され得る。
【0008】
図1は、複数のサーバ(例えば、サーバ110及び160)、複数のサービス130、VGWプロビジョニングサービス140、及び経路交換サービス150を含むプロバイダネットワーク100の例を示す。仮想マシン(VM)165が、プロバイダネットワークの顧客の代理としてサーバ160にインストールされ実行され得る。顧客は、1つ以上の仮想マシン165を有する場合があり、顧客のニーズ(例えば、企業の業務アプリケーション)をサポートするために、これらの各仮想マシン内で実行される顧客固有のソフトウェアを有し得る。プロバイダネットワーク内の演算エンティティとリモートノード(例えば、リモートノード80など)との間に、パブリックネットワークを介して通信が確立され得る。
図1の例では、ネットワーク90を介したリモートノード80への通信接続性が示されている。ネットワーク90は、パブリックネットワーク(例えば、インターネット)を含み、ワイドエリアネットワーク、ローカルエリアネットワーク、有線ネットワーク、無線ネットワークなどのいずれか1つ以上を含んでもよい。
【0009】
リモートノード80は、単一のコンピュータまたは互いにネットワークで結ばれたコンピュータの一群を含んでもよい。いくつかの実施形態では、リモートノード80は、顧客のデータセンター内のゲートウェイを含んだものであってもよく、またはデータセンター自体であってもよい。リモートノード80を使用して、VGWプロビジョニングサービス140にアクセスし、それによって顧客向けにVGWが作成されるように要求することができる。所与の顧客向けのVGW105の実装の例を、VGWアプリケーション120がインストールされ実行されているサーバ110として
図1に示す。リモートノード80を使用して、またはリモートノード80によってVGW105が作成されると、顧客は、以下に説明するように、VGWへのセキュアトンネル90を確立することができる。
【0010】
VGWアプリケーション120は仮想マシン115内で実行され、仮想マシン115自体はサーバ110上で実行され得る。同様に、顧客固有のアプリケーション170が実行され得る仮想マシン165を実行するために、サーバ160を使用することができる。さらに、サービス130(例えば、サービスA、サービスB、・・・、サービスn)のいずれか1つ以上、及びVGWプロビジョニングサービス140は、物理サーバ上で実行される仮想マシン内で実行されるアプリケーションを備え得る。したがって、プロバイダネットワーク100は、様々な用途のためにサーバ上で仮想マシンを起動して実行するように構成されている。
【0011】
仮想マシンは、物理コンピュータシステムのソフトウェア実装である。仮想マシンは、単一のホストコンピュータで同時に実行するように、複数のオペレーティングシステム環境及び/または異なるオペレーティングシステム環境を提供し得る。一例では、Linux(登録商標)オペレーティングシステム環境の複数の仮想マシンが、単一の物理コンピュータ上でMicrosoft(登録商標)Windows(登録商標)オペレーティングシステム環境の複数のインスタンスと同時に実行され得る。仮想マシンは、複数のゲストオペレーティングシステムが単一のハードウェアホストを共有できるようにする、物理コンピュータ上で実行されるプログラムであるハイパーバイザまたは仮想マシンモニタ(または他の種類の仮想化システム)と対話することができる。各仮想マシンのオペレーティングシステムは、ホストのプロセッサ、メモリ、及びその他のリソースに排他的にアクセスできるように見える。また一方、ハイパーバイザはホストプロセッサ及びリソースを制御して、各仮想マシンのオペレーティングシステムに必要なリソースを順に割り当てるとともに、仮想マシンのゲストオペレーティングシステムが相互に妨害しないようにする。各仮想マシンを、それぞれの顧客が制御することができる。顧客が作成した仮想マシン(例えば、仮想マシン165)は、顧客がそのように選択した顧客固有の任意のアプリケーションと共に、顧客がロードすることができる。例えば、顧客のアプリケーションは、ウェブサーバアプリケーション、データ処理アプリケーション、または顧客が望むその他のあらゆる種類の機能を含み得る。仮想マシン内で実行されるアプリケーションは、そのような仮想マシンの起動に使用されるマシンイメージに予め格納されていてもよく、プロビジョニングサービスによる起動後に仮想マシンにロードされてもよい。
【0012】
引き続き
図1を参照すると、サービス130は、サービスプロバイダによってその顧客に提供される無数のサービスを含み得る。ある例では、サービス130がストレージサービスを含む場合があり、このストレージサービスは、顧客が大容量記憶の割り当てを要求し、顧客のリモートノードから顧客の記憶域割り当てにデータを格納させるようにすることができる。それ以降、データの一部または全部をストレージから取り出し、リモートノードに提供することができる。別の例では、サービスがデータベースサービスを提供する場合がある。一実施形態では、このデータベースサービスは、プロバイダネットワークの顧客による使用のために、柔軟な非リレーショナルデータベースを提供する場合がある。データベースは、ドキュメントストレージモデル及びキーバリューストレージモデルをサポートし得る。別の例では、サービスにより、顧客が実行可能コードをアップロードし、顧客が指定したトリガイベントの発生時にそのコードをプロバイダネットワークによって自動的に実行させることができる。トリガイベントが発生すると(例えば、写真がシステムにアップロードされたり、センサの制限を超えることなど)、顧客固有のコードが実行されるが、そのようなコードを実行する仮想マシンをプロビジョニングして管理する必要はない。サービス130のいずれか、または全ては、仮想マシンを使用せずに、対応するアプリケーションを実行するサーバとして実装してもよいが、他の実施形態では、サービスのいずれかは、上記の仮想マシン内で実行することができるソフトウェアを含んでもよい。
【0013】
いくつかの実施形態では、各サービス130は、パブリックIPアドレス公開サービス133によってアドバタイズされるパブリックIPアドレス(またはIPアドレスの範囲)を有し得る。各サービス130を、パブリックIPアドレス公開サービス133の別個の対応するインスタンシエーションに関連付けてもよく、または複数のサービス130が共通のパブリックIPアドレス公開サービス133を使用してもよい。所与のサービス130のパブリックIPアドレスは、パブリックネットワーク90を経由してアドバタイズされ、それによってリモートデバイスがパブリックIPアドレスを含むサービス要求を送信できるようになり得る。場合によっては、ドメインネームサービス(DNS)がサービスのパブリックIPアドレスを受信して格納し、リモートノードからのDNS要求に応じて、サービス名(例えば、ユニフォームリソースロケータ)をサービスのパブリックIPアドレスに解決してもよい。
【0014】
また一方、プロバイダネットワークの顧客は、対象サービスのパブリックIPアドレスに要求を送信するのではなく、サービス(複数可)を使用するためにプロバイダネットワークに要求を送信する目的で、セキュアトンネルを介して1つ以上のサービス130を使用し、プロバイダネットワーク100への通信リンクを確立することを望む場合がある。
図1の例では、リモートノード80と顧客のために作成されたVGW105との間に確立されたセキュアトンネル92が示されている。上記のように、VGWは、仮想マシン115を実行するサーバ110として実装してもよく、この仮想マシン115はVGWアプリケーション120を実行する。VGWアプリケーション120は、顧客のVGWに起因するものとして本明細書に記載されている機能を実装する。いくつかの実施形態では、セキュアトンネル92は、トンネルに沿って往復して伝送されるデータパケットが暗号化されることを意味する暗号化されたトンネルである。すなわち、トンネルの送信元端によって暗号化され、宛先端によって復号化されることを意味する。トンネル92は双方向トンネルであり得るので、VGW105は、リモートノード80からの着信暗号化パケットを復号化し、トンネル92を介してリモートノードへ送信するために発信パケットを暗号化することができる。同様に、リモートノード80は、VGW105からの着信暗号化パケットを復号化し、トンネルを介してVGWへ送信するために発信パケットを暗号化することができる。
【0015】
上記のようにサービスの経路データを受信した顧客のVGW105は、サービスのパブリックアドレスをVGWの識別子と共に顧客のリモートノード80にアドバタイズする。その時点で、リモートノード80は、リモートノード80がサービス130に対するアクセス要求を生成する場合に、その経路情報は、サービスのパブリックIPアドレスを使用して生成すべきパケットが、代わりにVGWのIPアドレスを宛先アドレスとして使用して作成されることを要するように構成されている。したがって、サービス要求パケットは、サービス自体のパブリックIPアドレスにではなく、VGWにセキュアトンネル92を介して送信される。そのため、サービス130は、少なくとも2通りでアクセス可能であり得る。VGWのIPアドレスを宛先アドレスとして含み、セキュアトンネル92を介して送信され、VGW105によってサービスにルーティングされるパケットによって、またはサービスのパブリックIPアドレスを宛先アドレスとして含むパケットによってである。
【0016】
いくつかの実装では、トンネル92はインターネットプロトコルセキュリティ(IPSec)規格を用いて実装されてもよく、トンネルの両端(すなわち、VGW105及びリモートノード80)は、ノード間のセキュリティアソシエーションの確立を促進するために、インターネットキー交換(IKE)プロトコルを実行してもよい。IKEプロトコルには、フェーズIとフェーズIIの2つのフェーズが含まれる。フェーズIでは、プロトコルは、Diffie−Hellmanキー交換アルゴリズムを使用してセキュアな認証済み通信チャネルを確立し、さらにIKE通信を暗号化するための共有秘密キーを生成する。認証は、事前共有秘密キー、デジタル署名、または公開キー暗号化を使用して実行できる。フェーズIIの間中、2つのIKEピアは、フェーズIで確立されたセキュアチャネルを使用して、インターネットプロトコルセキュリティ(IPSec)などの他のサービスに代わってセキュリティアソシエーションをネゴシエートする。このネゴシエーションにより、2つの単方向セキュリティアソシエーションが作成される。1つのインバウンド、及び1つのアウトバウンドである。各セキュリティアソシエーションには、パケットの暗号化/復号化に使用される暗号化キーが含まれる。Diffie−Hellman暗号化キー及びIPSec暗号化キーは、IKEプロトコルのフェーズI動作及びフェーズII動作のいずれかまたは両方を実行することによって、セキュリティを強化するために、定期的にローテーションされる。リモートノード80によって生成され暗号化されたパケットは、サービス130のいずれかの使用を求める要求を含み得る。したがって、開示される実施形態は、顧客が暗号化トンネルを介してVGW105にサービス要求を送信することを可能にする。VGWは着信パケットを復号化し、サービス要求を対象サービスに転送する。
【0017】
上記のように、顧客は、VGWプロビジョニングサービス140にアクセスして、顧客による排他的使用のためにVGW105が作成され割り当てられるように要求することができる。要求は、例えば、アプリケーションプログラミングインターフェース(API)呼出しの形式でVGWプロビジョニングサービス140に送信されてもよい。API呼出しは、顧客が実行を希望するアクションを指定する正規名であり得る。例えば、API呼出しは、「VGWCreate()」を含み得、ここで括弧の間に挿入すべき値は、所望のVGW105の様々な特性を指定する。例えば、顧客は、顧客がVGWを介してアクセスすることを望む各サービス130の識別子、顧客または顧客アカウントの識別子、要求を認証するために使用されるクレデンシャル情報、VGWがトンネルを確立しようとするリモートノード80のパブリックIPアドレスなどを含み得る。
【0018】
要求に応じて、VGWプロビジョニングサービス140は、VGWに使用するために、複数の利用可能なサーバの中から、物理サーバ110を選択することができる。選択したサーバは、現在、別のアプリケーションまたはVGWを実行している場合があり、または実行していない場合がある。VGWプロビジョニングサービス140は、選択されたサーバ110にマシンイメージをダウンロードさせる。一実施形態では、特定のマシンイメージを、マシンイメージストレージ(図示せず)から取得し、選択したホストコンピュータに送信することができる。マシンイメージは、パケットの暗号化及び復号化、トンネル92のための暗号化キーのローテーション、リモートノード80から対象サービス130へのパケットのルーティングなどのVGW機能の一部または全部を実装するように構成されたオペレーティングシステム、ドライバ、及びVGWアプリケーション120を含み得る。適切なマシンイメージがホストサーバのストレージドライブに伝送され、ロードされる。マシンイメージは、プロバイダネットワーク内の集中型データベースまたはデータストアに格納され得る。VGWベースのマシンイメージ、及び顧客が他種の仮想マシンを起動するのに使用できる他種のマシンイメージを含む各マシンイメージは、予め割り当てられた識別子(ID)を有し得る。このIDは、VGWプロビジョニングサービスが物理サーバ上で仮想マシンをVGW105として起動するために使用することができる。VGWプロビジョニングサービス140は、VGW機能を実装するのに必要なマシンイメージに関連付けられたIDを使用して、VGW仮想マシンを起動する選択されたサーバにコピーするためのマシンイメージを選択する。VGWプロビジョニングサービス140、または別個のプロビジョニングサービスはまた、同様の動作を実行して、顧客がアプリケーションを実行するために使用する仮想マシン165、及びサービス130など、プロバイダネットワーク内の他の仮想マシンを起動することができる。
【0019】
VGW機能を提供するために作成される仮想マシン115はまた、経路表125を含むことができる。経路表125は、着信パケットをどのようにルーティングするかを決定するのに使用可能なデータを含む1つ以上のエントリを含み得る。例えば、顧客がリモートノード80からVGWを通じてアクセスされることを識別した各サービス130に対応する経路表125に、別個のエントリを追加してもよい。所与の経路表エントリに含まれる経路データには、例えば、宛先値、対象値、及び「ネクストホップ」IPアドレスが含まれ得る。宛先値はサービスのパブリックIPアドレスの範囲を含んでもよく、対象値はVGW105の識別子を含んでもよい。ネクストホップIPアドレスには、サービスのためのパケットが送信されるプロバイダネットワーク内のネットワーキングエンティティのIPアドレスが含まれる。ネクストホップアドレスによって識別されるネットワーキングエンティティは、プロバイダネットワーク内のサービスのローカルネットワーク用のエッジルータを含んでもよい。エッジルータがパケットを受信すると、サービスのエッジルータは、パケットに含まれるサービス要求を実行するために、そのパケットをサービスのローカルネットワーク内の適切なサーバに転送することができる。各経路表エントリに、異種及び/または別種の経路データが含まれていてもよい。
【0020】
経路交換サービス150は、各サービス130の経路データを格納することができ、そのような経路データを、そのようなサービスにアクセスするように顧客によって指定されたVGWに提供することができる。そのような経路データは、VGWが着信パケットをパケットの対象とされたサービスにどのように転送すべきかを指定する。そのような経路データの一例が上に記載されている。所与のサービスの経路データは、そのサービスによって変更される場合がある。例えば、所与のサービスの使用率が、そのサービスのアプリケーションを実行するために、サーバ及び/または仮想マシンを追加することによって、プロバイダネットワークがサービスをスケールアップし得る程度にまで、増加する可能性がある。さらに、サービスを実装するサーバの保守は、サービスへの経路データの変更を必要とする可能性がある。所与のサービスの経路データを変更する理由にかかわらず、サービスのアプリケーションを実行しているサーバ及び仮想マシンにアクセスするパケットの経路データを、変更し、拡張し、及び/または削減する必要がある場合がある。
【0021】
図2は、経路交換サービス150の一実施形態を示す。この実施形態では、経路交換サービス150は、サービス経路リフレクタサービス151及びVGW経路リフレクタサービス153を含み得る。経路リフレクタ151、153は、サーバ上で実行されるマシンコードとして実装されてもよい。各経路リフレクタ151、153は、他の経路リフレクタから利用可能な経路を学習するように構成されている。各サービス130が、別個のサービス経路リフレクタサービス151と通信してもよく、または複数のサービス130が単一のサービス経路リフレクタサービス151を使用してもよい。単一のVGW経路リフレクタサービス153が、複数もしくは全てのVGW105に関連付けられてもよく、または個々のVGWが、VGW経路リフレクタサービス153の別個のインスタンスに関連付けられてもよい。
【0022】
所与のサービス130がその経路データを更新すると、そのサービスは、更新した経路データをサービス経路リフレクタサービス153に提供することができる。サービス経路リフレクタサービス151は、更新された経路データをVGW経路リフレクタサービス153に提供することによって応じてもよい。いくつかの実施形態では、経路交換サービス150は、ボーダゲートウェイプロトコル(BGP)を実装してもよい。BGPは、ネットワーク上のノード間でルーティング情報及び到達可能性情報の交換を可能にする。BGPを使用して、経路リフレクタサービス151及び153は、サービス130の更新された経路データの交換に従事する。他の実施形態では、サービス経路リフレクタサービス151はBGPを実装せず、代わりにAPI呼出しをVGW経路リフレクタサービス153に送る。APIの引数は、更新された経路データを含むか、またはそのようなデータがVGW経路リフレクタサービス153によってどこで取得され得るかの参照を含み得る。API呼出しには、経路データを追加するためのAPI呼出し、経路データを削除するためのAPI呼出しなどが含まれる。VGW経路リフレクタサービス153が更新された経路データを受信すると、VGW経路リフレクタサービス153は、経路データが更新されているサービス130にアクセスするように構成されている各VGW105にAPI呼出しを送信することができる。無論、他の実施形態では、第2のシステムまたはサービスにAPI呼出しを送信するものとして記載されるシステムまたはサービスが、代わりに、その第2のシステムまたはサービスからAPI呼出しを受信するように構成され得るように、本システムを構成することができる。その後、更新された経路データは、そのような各VGW105の経路表125に追加される。
【0023】
再び
図1を参照すると、顧客によってVGWが作成されると、VGWプロビジョニングサービス140は、顧客がVGWによってアクセス可能である1つ以上の特定のサービス130を指定した場合に、経路交換サービス150に要求(例えば、API呼出し)を送信してもよい。要求は、VGWを識別することができ、識別されたVGWが経路データを必要とするサービス(複数可)を指定することができる。その場合に、経路交換サービス150は、VGWの経路表125に追加すべき識別されたVGW105に、必要な経路データを提供することができる。別の実施形態では、VGWプロビジョニングサービス140は、VGWが構成されるサービス(複数可)を指定する引数と共に、API呼出しをVGWに送信してもよい。それに応じて、VGWは、経路交換サービス150にクエリを送信して、指定されたサービス(複数可)の経路データを取得することができる。さらに別の構成では、VGW105がオンラインになったときに、VGW105がAPI要求を経路交換サービス150に送信するように事前構成してもよい。さらに、VGW経路リフレクタサービス153は、どのVGW105が特定のサービスへの経路を有するかを記録することができる。そのため、サービスが経路データを変更する場合には、更新メッセージが、VGW経路リフレクタサービス153によって、そのサービスへの経路データを含む全てのVGWに送信され得る。
【0024】
VGWプロビジョニングサービス140(または図示されていない権限付与サービス)はまた、リモートノード80を介して、顧客がサービスポリシー145を作成することを可能にすることができる。例えば、権限付与サービスは、VGWプロビジョニングサービスとは別個に、顧客がサービスポリシー145を作成するためにインタラクトすることができる管理インタフェースを実装してもよい。そのようなインタフェースを介して、顧客は、サービスを指定しまたは選択し、そのポリシーに固有のポリシーを選択しまたは指定し、そのポリシーの実装を要求することができる。権限付与サービスは、例えばAPI呼出しを介して、指定されたサービスに、そこに実装する目的でポリシーを伝送することができる。サービスポリシー145は、例えば、所与のサービス130へのアクセスを制限する場合がある。例えば、顧客が、ストレージサービスのストレージにアクセスできる場合がある。顧客は、ストレージサービス内の特定のデータへのアクセスを、暗号化トンネル92から顧客のVGW105を通過するアクセス要求のみに制限するサービスポリシー145を作成することができる。VGWは、パケットがVGWを通過したことをサービス130が判定できるように、サービス要求にタグを追加してもよい。タグは、サービス要求パケットに(例えば、ヘッダーフィールドに)挿入されるか、またはVGWに関連付けられたサービスによって事前に知られているサービス要求パケットをラップしたカプセル化パケットに挿入されるメタデータ値(識別子やデジタル署名など)を含み得る。サービスポリシーは、顧客が作成することができ、基となるサービス130に特化し得る。
【0025】
いくつかの実施形態では、リモートノード80を介した顧客と認証サービスまたはVGWプロビジョニングサービス140との間のインタラクションを通じて、セキュリティポリシー145が作成され得る。インタラクションは、VGWプロビジョニングサービス140によって実装され、例えば、リモートノードまたはリモートノード80に通信可能に結合されたコンピュータで実行されるウェブブラウザによって表示される、グラフィカルコンソールを介して行われてもよい。他の実施形態では、顧客は、VGWプロビジョニングサービス140にセキュリティポリシーを作成するためにAPI呼出しを送信してもよい。ある場合には、セキュリティポリシー145は、コンプライアンス評価及びコンプライアンスのために対応するVGWに伝送されてもよく、他の場合には、セキュリティポリシーは、コンプライアンスのために対応するサービス130に伝送されてもよい。ポリシー145がVGW105に提供されるかサービス130に提供されるかは、サービス及びポリシーの性質による。ポリシーが、顧客のVGWからのみアクセスされる顧客のストレージへのアクセス要求を受け入れ、顧客のVGWを通過しないアクセス要求は無視する、ストレージサービスのためのポリシーである上記の例では、セキュリティポリシーがストレージサービスに提供されることになる。
【0026】
図1は、VGW105が、1つ以上のサービス130と、顧客によって作成され使用される仮想マシン165が実行される1つ以上のサーバ160とに通信可能に結合される例を示す。顧客の仮想マシン165は、仮想ネットワーク(VN)内で実行することができる。VNは、顧客によって定義されたネットワーク内で実行される仮想マシンの論理グループを備える。顧客は、IPアドレス範囲の選択、サブネットの作成、ならびに経路表及びネットワークゲートウェイの構成など、環境を定義することについて完全に制御することができる。顧客のVNは、顧客の仮想マシンが実行されるホストコンピュータを相互接続する1つ以上の中間物理ネットワーク上に実装され得る。つまり、仮想ネットワークは物理ネットワーク上に実装され得る。各顧客は、仮想ネットワーク内で動作するインスタンスを有することができる。仮想ネットワークは、物理ネットワーク内で動作する仮想IPアドレス及びシステムを使用して、仮想ネットワーク内の他の仮想マシンをホストとして処理するマシンに関連付けられた物理IPアドレスに対応するパケットをルーティングする。仮想ネットワークの実装には、パケットに追加のヘッダーを変更し、または追加して、仮想ネットワークと整合性のある仮想アドレスを、基となる物理ネットワークに関連付けられた物理アドレスにマッピングし、ホストコンピュータ間の物理ネットワークを介してパケットをルーティングできるようにすることが含まれ得る。顧客用にVNを実装した各ホストコンピュータには、プロバイダネットワーク内で使用される物理IPアドレスに基づいて、顧客の仮想ネットワーク内の別の仮想マシンの仮想IPアドレス宛ての発信パケットを変更することができる通信マネージャが含まれ得る。例えば、通信パケットがサービスプロバイダのネットワーク内のコンピューティングノード間で送信される場合、この送信元パケットは、特定のプロトコル(例えば、IPv4)によるIPアドレスを含むことができ、送信ホストコンピュータに関連する仮想マシン通信マネージャは、仮想ネットワークパケットを、物理的な送信元及び宛先のIPアドレスを含む基盤ネットワークパケットに埋め込む。次に、仮想マシン通信マネージャは、プロバイダネットワークの内部ネットワーク(例えば、スイッチ、ルータなど)を介してパケットを送信する。受信ホストコンピュータに関連する仮想マシン通信マネージャは、基盤パケットを受信し、仮想ネットワークパケットを抽出し、仮想ネットワークパケットを対象の仮想マシンに転送する。
【0027】
仮想ネットワーク内の仮想マシン間で送信すべきパケットを変更する際に使用する仮想から物理へのアドレスマッピングを格納し、更新し、提供するために、マッピングサービスが提供されてもよい。仮想ネットワークは、オーバーレイネットワークパケットサイズとしてIPv4(「インターネットプロトコルバージョン4」)またはIPv6(「インターネットプロトコルバージョン6」)パケットを使用するなど、様々な実施形態で様々なように実装することができる。例えば、仮想ネットワークの仮想ネットワークアドレス情報は、1つ以上の中間物理ネットワークのネットワーキングプロトコルに使用される、より大きな物理パケットネットワークアドレス空間に埋め込むことができる。説明のための一例として、仮想ネットワークは、32ビットのIPv4ネットワークアドレスを使用して実装することができ、それらの32ビット仮想ネットワークアドレスは、通信パケットもしくは他のデータ送信のヘッダーを付け直すこと、または別の方法でそのようなデータ送信を変更して、それらが構成されている第1のネットワーキングプロトコルから別の第2のネットワーキングプロトコルに変換することなどによって、1つ以上の中間物理ネットワークによって使用される128ビットのIPv6ネットワークアドレスの一部として埋め込むことができる。他の実施形態では、IPv4パケットが物理ネットワーク及び仮想ネットワークによって使用され得る。例えば、仮想マシンによって生成されるIPv4パケットのサイズを、IPv4パケットに挿入できるサイズに制限し、サービスプロバイダがパケットにヘッダーを追加できるように十分なビットを残すことができる。
【0028】
図1の実施形態では、リモートノード80によって送信されるパケットは、上記のようにサービス130に、または顧客の仮想ネットワーク内の仮想マシン165にルーティングされ得る。したがって、VGW105は、サービス130への接続性、及び/または顧客の仮想ネットワークへの接続性を提供することができる。さらに、
図1は、サービス130がプロバイダネットワーク100内に実装された例を示している。また一方、他の例では、サービスの1つ以上をプロバイダネットワークの外部に実装することがあるが、これらは、それにもかかわらず、プロバイダネットワークでホストとして処理される顧客のVGW105を介してアクセス可能である。経路交換サービスによって経路表に提供される経路データには、サービスがローカル(すなわち、プロバイダネットワーク100内)でホストされているか、それともリモート(すなわち、プロバイダネットワーク外)でホストされているかにかかわらず、サービスにアクセスするために使用できるルーティング情報が含まれる。
【0029】
図3は、顧客用のVGWを作成する方法を示す。動作は、示されている順序で実行されることも、別の順序で実行されることもあり得る。その上、動作は順次に実行されてもよく、または動作のうちの2つ以上が同時に実行されてもよい。200で本方法は、例えば、リモートノード80を介して顧客によって送信された、VGWを作成する要求を、VGWを介して顧客がアクセスすべき1つ以上のサービスを指定することと共に受信することを含み得る。サービスポリシーもまた、要求の一部として含めることができる。いくつかの実施形態では、VGWを介してアクセスすべきサービス(複数可)の仕様は、VGWを作成する要求の一部であってもよいし、または別個のAPI呼出しでVGWを作成した後に送信されてもよい。同様に、サービスポリシーは、VGWを作成する要求の一部であってもよいし、またはVGWの作成後に送信されてもよい。いくつかの実施形態では、VGWを作成する要求はAPI呼出しを含むことができ、一方他の実施形態では、要求は、グラフィカルユーザインタフェース(例えば、Webブラウザに実装される)、または顧客が選択を行うことができるコマンドラインインタフェースを介して行うことができる。作成要求は、顧客のアカウント、VGWが暗号化トンネル92を確立しようとするリモートノード80のパブリックIPアドレス、認証キー、及びトンネル92の確立に使用可能な他の任意の値を指定することができる。顧客が作成要求を送信するために使用するノードは、VGW105への暗号化トンネル92に参加するノードとは異なるコンピューティングデバイスであってもよい。したがって、作成要求と共に送信されるパブリックIPアドレスは、VGWプロビジョニングサービス140に要求を送信するコンピューティングデバイスのパブリックIPアドレスであってもよいし、そうでなくてもよい。VGWプロビジョニングサービス140は、VGWを作成するための要求を受信してもよい。
【0030】
202で本方法は、要求されたVGW105を実装するために、物理サーバ上に仮想マシンをプロビジョニングすることを含む。仮想マシンのプロビジョニングには、VGWアプリケーション120を含むマシンイメージをサーバにコピーし、次いで仮想マシンを起動することが含まれ得る。この動作には、トンネル92で使用するためにVGWにセキュリティアソシエーションを確立することも含まれ得る。セキュリティアソシエーションには、暗号化アルゴリズム、認証値、リモートノードのパブリックIPアドレスなどが含まれ得る。VGWは、IKEプロトコルを実行して、暗号化キーを確立することができる。204において、顧客の要求で識別されるサービス(複数可)の経路データを、例えば経路交換サービス150によって取得することができる。経路データは、上記のように暗号化トンネル92を介してVGWによって受信されたサービス要求を転送するために、VGWによって使用可能なルーティング情報を含む。次いで206で、経路データをVGW105内に確立された経路表にロードすることができる。
【0031】
208でVGW105は、VGWにピア接続されたリモートノード80に経路データをアドバタイズする。アドバタイズには、VGWを介してアクセス可能なサービス(複数可)のパブリックIPアドレス(またはアドレス範囲)とVGWの識別子とを含めることができる。この情報により、仮想プライベートネットワーク(VPN)デバイスなどのネットワークデバイスを介して暗号化トンネル92に接続されたコンピュータシステムが、パブリックインターネットを介したサービス自体にではなく、暗号化トンネル92を介したVGWに対して、提供すべきサービスの要求を含むパケットを作成できるようになる。
【0032】
210で、本方法は、顧客が作成したポリシー(もしあれば)を、対応するサービス、すなわちポリシーが適用されるサービスに提供することをさらに含む。無論、いくつかの実施形態では、ポリシーは、サービスにではなく、VGWに提供されてもよい。
【0033】
図4は、VGWの動作の一例を示す方法である。動作は、示されている順序で実行されることも、別の順序で実行されることもあり得る。その上、動作は順次に実行されてもよく、または動作のうちの2つ以上が同時に実行されてもよい。220で本方法は、VGWが、トンネル92を介してリモートノード80から暗号化パケットを受信することを含む。パケットは、サービス130に対する要求を含むことができる。222でVGWは、パケットを復号化して、暗号化されていないサービス要求を復元する。224で、復号化されたパケット内のヘッダー情報(例えば、宛先IPアドレス)を用いて、VGWがその経路表にアクセスして、サービス要求に対する適切な経路を判定する。
【0034】
226でVGWは、経路表を用いて判定された経路上に、サービス要求を転送する。対象サービス130は、228でサービス要求を受信し、サービス要求を実行する。サービス要求は、サービスがその動作を実行するために使用する引数を含み得る。データ(例えば、応答データ、受信確認など)がサービスの要求元(すなわち、リモートノード80)に戻されるべきである場合、そのようなデータはパケットに含まれ、概して逆の経路に沿って、VGW105経由でトンネル92を介して、リモートノードにルーティングされ得る。VGWは、パケットを暗号化してから、リモートノード80へ送信してもよい。
【0035】
図5は、所与のサービスの経路データを更新する方法を示す。動作は、示されている順序で実行されることも、別の順序で実行されることもあり得る。その上、動作は順次に実行されてもよく、または動作のうちの2つ以上が同時に実行されてもよい。250で本方法は、サービスが、更新された経路データを、そのリフレクタサービス(例えば、サービス経路リフレクタサービス151)に提供することを含む。252で、サービス経路リフレクタサービス151は、更新された経路データをVGW経路リフレクタサービス153に提供することによって応答することができる。上記のように、BGPプロトコルを使用して、更新された経路データをVGW経路リフレクタサービスに提供することができるが、追加、削除など、API呼出しを使用して、経路データの更新を提供することもできる。
【0036】
254で本方法は、経路データが更新されているサービスにアクセスするように構成された各VGWに、更新された経路データを提供することを含む。VGW経路リフレクタサービス153は、個々のサービスの経路データを有する各VGWの識別情報を記録することができ、したがって、サービスへの経路を有するものとして記録されたそれらのVGWに、更新された経路データを転送することができる。次いでそのような各VGWは、256で、VGW経路リフレクタサービス153から受信した更新されたルートデータを、その経路表125に格納することができる。258で各VGWはまた、その更新された経路表をそのリモートノード80にアドバタイズすることができる。アドバタイズは、既知のプロトコルに従ってもよいし、または任意の適切な種類のメッセージ交換を含んでもよい。アドバタイズに含まれる情報の種類の例は、上に記載されている。
【0037】
一部の実施態様では、顧客は、サービスを追加しまたは削除するために、VGW105の構成を変更できる。例えば、顧客は、上記で説明した1つ以上のサービス用に構成された既存のVGWを有し、その後VGWを介してアクセス可能なそれらのサービスに追加のサービスを追加することを望む場合がある。あるいは、現在そのようなアクセスを提供しているVGWから、特定のサービスへのアクセスを除去することを望む場合がある。そのような変更は、顧客のコンピューティングデバイスを介して、パブリックネットワーク90にわたって、顧客がVGWプロビジョニングサービス140を通じて開始することができる。いずれの場合も、顧客のVGWの経路表125は、変更を反映するように更新される。顧客が特定のサービスへのアクセスを追加したい場合、顧客は追加すべきサービスを指定し、VGWプロビジョニングサービス140は、顧客がそのサービスにアクセスするために選択したいずれかのVGWに、指定されたサービスの経路データを追加する要求を経路交換サービス150に送信する。次に、VGWプロビジョニングサービス140は、上記のメッセージを顧客のVGW(複数可)105に送信する。メッセージには、指定されたサービスの経路データが含まれる場合がある。次に、経路データが経路表125に追加される。
【0038】
同様に、顧客が所与のVGWのサービスへのアクセスを削除したい場合、顧客はVGWプロビジョニングサービス140に要求を送信し、VGW及び削除すべき特定のサービスを識別する。VGWプロビジョニングサービスは、顧客指定のVGWにメッセージを送信することによって、削除要求に応答する。メッセージには、削除される経路データの識別子が含まれる。次に、VGWは、要求された経路データを経路表125から削除する。
【0039】
図6は、様々な実施形態による、本明細書に記載される仮想マシン(例えば、仮想マシン115、165)、サービス130、VGWプロビジョニングサービス140、サービスデータベース150のいずれかの実装に適したコンピューティングシステム500の概略図を示す。このシステムは、1つ以上のコンピューティングデバイス502を含む。コンピューティングシステム500は、ネットワーク518を介して互いに通信可能に結合されたコンピューティングデバイス502及び二次ストレージ516を含む。コンピューティングデバイス502及び関連する二次ストレージ516のうちの1つ以上を使用して、本明細書に記載される様々なサービスの機能を提供することができる。
【0040】
各コンピューティングデバイス502は、ストレージデバイス506、ネットワークインタフェース512、及びI/Oデバイス514に結合された1つ以上のプロセッサ504を含む。いくつかの実施形態では、コンピューティングデバイス502は、システム100の複数の構成要素の機能を実装してもよい。様々な実施形態では、コンピューティングデバイス502は、1つのプロセッサ504を含むユニプロセッサシステム、またはいくつか(例えば、2、4、8、または他の適切な数)のプロセッサ504を含むマルチプロセッサシステムであり得る。プロセッサ504は、命令を実行することが可能な任意の適切なプロセッサであり得る。例えば、様々な実施形態では、プロセッサ504は、x86、PowerPC、SPARC、もしくはMIPS ISA、または任意の他の好適なISAなどの様々な命令セットアーキテクチャ(「ISA」)のうちのいずれかを実装する、汎用または組込み型マイクロプロセッサであってもよい。マルチプロセッサシステムでは、プロセッサ504のそれぞれは、必ずしも必要ではないが、一般に同じISAを実装することができる。同様に、プロバイダネットワーク100を集合的に実装するような分散コンピューティングシステムでは、コンピューティングデバイス502のそれぞれが同じISAを実装してもよく、または個々のコンピューティングノード及び/またはノードのレプリカグループが異なるISAを実装してもよい。
【0041】
ストレージ506は、プロセッサ(複数可)504によってアクセス可能なプログラム命令508及び/またはデータ510を格納するように構成された非一時的なコンピュータ可読記憶装置を含み得る。ストレージ506はまた、上で説明されたようにマシンイメージを格納するために使用されてもよい。ストレージデバイス506は、任意の適切な揮発性メモリ(例えば、ランダムアクセスメモリ)、不揮発性ストレージ(ハードディスクドライブなどの磁気ストレージ、光学ストレージ、ソリッドストレージなど)を使用して実装され得る。本明細書で開示される機能を実装するプログラム命令508及びデータ510は、ストレージデバイス506内に格納される。例えば、命令508は、プロセッサ(複数可)504によって実行されると、本明細書で開示されているサービスプロバイダのネットワークの様々なサービス及び/または他のコンポーネントを実行する命令を含み得る。
【0042】
二次ストレージ516は、本明細書で説明するサービスプロバイダのネットワークの様々な態様を実施するために、本明細書に記載のプログラム命令及び/またはデータなどの情報を格納する追加の揮発性または不揮発性のストレージ及びストレージデバイスを含むことができる。二次ストレージ516は、ネットワーク518を介してコンピューティングデバイス502によってアクセス可能な様々なタイプのコンピュータ可読媒体を含み得る。コンピュータ可読媒体は、半導体記憶装置、磁気媒体、または光学媒体、例えば、ディスクもしくはCD/DVD−ROM、あるいは他の記憶技術などの記憶媒体またはメモリ媒体を含み得る。二次ストレージ516に格納されたプログラム命令及びデータは、プロセッサ504による実行のために、有線または無線のネットワークまたはそれらの組合せであり得るネットワーク518を介した伝送媒体または伝送信号によって、コンピューティングデバイス502に送信され得る。本明細書に記載される仮想マシン(例えば、仮想マシン115、165)、サービス130、VGWプロビジョニングサービス140、サービスデータベース150、及び他の構成要素のそれぞれは、ソフトウェアを実行する別個のコンピューティングデバイス502として実装されて、本明細書に記載される機能をコンピューティングノードに提供することができる。いくつかの実施形態では、様々なサービスの一部または全部が同じコンピューティングデバイスによって実装されてもよい。
【0043】
ネットワークインタフェース512は、コンピューティングデバイス502及び/またはネットワーク518に結合された他のデバイス(他のコンピュータシステム、通信デバイス、入力/出力デバイス、または外部ストレージデバイスなど)間でデータを交換できるように構成され得る。ネットワークインタフェース512は、例えば、任意の適切なタイプのイーサネットネットワークなどの有線または無線のデータネットワーク、例えば、アナログ音声ネットワークまたはデジタルファイバ通信ネットワークなどの電気通信/テレフォニネットワーク、ファイバチャネルSANなどのストレージエリアネットワーク、または任意の他の適切なタイプのネットワーク及び/またはプロトコルを介した通信をサポートし得る。
【0044】
入力/出力デバイス514は、1つ以上のディスプレイ端末、キーボード、キーパッド、タッチパッド、マウス、スキャンデバイス、音声または光学認識デバイス、または1つ以上のコンピューティングデバイス502によるデータの入力または取得に適した他のいずれかのデバイスを含んでもよい。複数の入力/出力デバイス514は、コンピューティングデバイス502内に存在してもよく、またはシステム500の様々なコンピューティングデバイス502上に分散されてもよい。いくつかの実施形態では、同様の入力/出力デバイスは、コンピューティングデバイス502とは別個であってもよく、ネットワークインタフェース512などの有線または無線接続を介してシステム500の1つ以上のコンピューティングデバイス502と対話し得る。
【0045】
本開示は、様々な条項に関して理解され得る様々な態様を教示する。条項1では、仮想プライベートゲートウェイ(VGW)プロビジョニングサービスが提供され、プロセッサに結合されたメモリを含み、メモリが、実行時にVGWプロビジョニングサービスに、顧客からVGWを確立する要求を受信することであって、要求が、VGWを通じてアクセス可能なサービスと、顧客設定可能ポリシーとを指定し、顧客設定可能ポリシーが、指定されたサービスへのアクセスを、指定されたサービスにVGWを介して送信された要求に制限する、VGWを確立する要求を受信すること、を行わせる命令を含む。要求に応じて、本サービスは、演算デバイス上でVGW仮想マシンをインスタンス化することであって、VGW仮想マシンが、パブリックネットワークを経由してリモートノードへのセキュアトンネルを確立し、セキュアトンネルを経由してリモートノードから暗号化されたトラフィックを受信するように構成されたVGWアプリケーションを含む、VGW仮想マシンをインスタンス化することができる。本サービスは、VGW仮想マシンに指定されたサービスの経路データが提供されるようにすることであって、VGWアプリケーションが、実行時に、指定されたサービスの経路データを、セキュアトンネル経由でVGWアプリケーションにアドバタイズさせる命令を含む、経路データが提供されるようにすることができる。そして、本サービスは、サービスが順守するように、識別されたサービスに顧客設定可能ポリシーを提供することができる。
【0046】
条項2では、経路データには、指定したサービスに関連付けられたパブリックインターネットプロトコル(IP)アドレス、及び顧客のVGWの識別子が含まれる。
【0047】
条項3では、VGWプロビジョニングサービスが、経路交換サービスへの経路要求の送信を通じて、指定されたサービスの経路データがVGW仮想マシンに提供されるように構成され、経路要求が指定されたサービスを識別し、経路交換サービスが、アプリケーションプログラミングインタフェース(API)呼出しを顧客のVGWに送信するように構成され、API呼出しが経路データを含む。
【0048】
条項4では、本システムは、所与のサービスが、所与のサービスの経路データを更新することに応じて、サービスが、サービス経路リフレクタサービスにアクセス可能なデータベース内の経路レコードを更新し、レコードが、所与のサービスに対応し、サービス経路リフレクタサービスが、更新された経路データをVGW経路リフレクタサービスに送信し、サービス経路リフレクタサービスが、所与のサービスの経路データを含むメッセージを各VGWに送信し、メッセージが、更新された経路データを含む。
【0049】
条項5では、VGWアプリケーションが、実行時にVGWアプリケーションに以下を実行させる命令をさらに含み、VGWアプリケーションが、セキュアトンネルを介してリモートノードから暗号化されたパケットを受信することに応じて、暗号化されたパケットは、指定されたサービスのサービス要求を含み、命令が、暗号化されたパケットを復号化してサービス要求を取得すること、サービス要求のヘッダー内の情報を使用して、経路表にアクセスし、サービス要求の対象となるサービスへの経路を判定すること、及び判定された経路を介して、要求の対象となるサービスにサービス要求を転送することを含み、サービスが、サービス要求を実行するように構成されている。
【0050】
条項6では、システムは、プロセッサに結合されたメモリを含む仮想プライベートゲートウェイ(VGW)プロビジョニングサービスであって、メモリが、実行時にVGWプロビジョニングサービスに、VGWを確立するための要求を受信することであって、要求が、VGWを通じてアクセス可能なサービスを指定する、要求を受信すること、要求に応じて、演算デバイス上でVGW仮想マシンをインスタンス化することであって、VGW仮想マシンが、パブリックネットワークを経由してリモートノードへのセキュアトンネルを確立し、セキュアトンネルを経由してリモートノードから暗号化されたトラフィックを受信するように構成されたVGWアプリケーションを含む、VGW仮想マシンをインスタンス化すること、指定されたサービスの経路データが、VGW仮想マシンに提供されるようにすることを実行させる命令を含むVGWプロビジョニングサービスを備える。
【0051】
条項7では、サービスの経路データが、指定されたサービスのパブリックインターネットプロトコル(IP)アドレスを含み、VGWアプリケーションが、パブリックネットワークを経由して、パブリックIPアドレスをリモートノードにアドバタイズするように構成されている。
【0052】
条項8では、サービスの経路データが、指定されたサービスのパブリックインターネットプロトコル(IP)アドレスを含み、VGWアプリケーションが、パブリックネットワークを経由して、パブリックIPアドレスをリモートノードにアドバタイズするように構成されており、サービスの更新されたパブリックインターネットプロトコル(IP)アドレスの生成が、サービスに、更新されたパブリックIPアドレスを含む更新された経路データで経路交換サービスの経路エントリを更新させ、経路交換サービスに、サービスの更新された経路データをVGW仮想マシンへ送信させ、VGWアプリケーションに、サービスの更新された経路データをリモートノードへアドバタイズさせる。
【0053】
条項9では、VGWアプリケーションが、実行時に、セキュアトンネルを介したリモートノードからの暗号化パケットの受信と、暗号化パケットが、識別されたサービスのサービス要求を含むこととに応じて、VGWアプリケーションに、暗号化されたパケットを復号化してサービス要求を取得すること、サービス要求のヘッダー内の情報を使用して、経路表にアクセスし、サービス要求の対象となるサービスへの経路を判定すること、及び判定された経路を介して、要求の対象となるサービスにサービス要求を転送することを行わせる命令をさらに含む。
【0054】
条項10では、VGWアプリケーションは、セキュアトンネルにインターネットプロトコルセキュリティ(IPSec)を実装するように構成されている。
【0055】
条項11では、経路交換サービスが提供され、複数のサービスの経路データを含むように構成された経路表を含み、VGWプロビジョニングサービスが、経路交換サービスに要求を送信して、指定されたサービスの経路データを提供するように構成されている。
【0056】
条項12では、要求が、指定されたサービスへのアクセスを制限するように構成された顧客設定可能ポリシーを含む。
【0057】
条項13では、指定されたサービスは、顧客設定可能ポリシーを受信し、顧客設定可能ポリシーを要求の少なくとも一部に適用するように構成されている。
【0058】
条項14では、VGWアプリケーションが、顧客設定可能ポリシーを受信し、顧客設定可能ポリシーを確実に順守するように構成されている。
【0059】
条項15では、仮想プライベートゲートウェイ(VGW)によって、サービスプロバイダネットワークに実装され、パブリックネットワークを経由してノードからVGWによって受信されたサービスに対する要求を含む暗号化パケットを復号化すること、VGW内の経路表にアクセスして、サービスプロバイダネットワーク内のサービスへの経路を判定すること、VGWによって、経路サービスへの経路を経由して要求を転送すること、VGWによって、サービスの更新された経路データを受信することであって、更新された経路データが、サービスの更新されたパブリックインターネットプロトコル(IP)アドレスを含む、更新された経路データを受信すること、及びVGWによって、更新されたパブリックIPアドレスをアドバタイズすることを含む方法が開示されている。
【0060】
条項16では、本方法はさらに、仮想マシンの作成要求に応じて、サーバ上にVGW仮想マシンをプロビジョニングすることであって、作成要求がサービスを指定する、プロビジョニングすること、指定されたサービスに関連した経路データの経路要求に応じて、経路データをVGWに提供すること、及びプロビジョニングされた仮想マシンの経路表に経路データをロードすることを含む。
【0061】
条項17では、本方法は、サービスへのアクセスを制限する顧客設定可能ポリシーを生成し、ポリシーコンプライアンスを実行するために、顧客設定可能ポリシーをサービスに送信することをさらに含む。
【0062】
条項18では、サービスの更新された経路データを受信することが、更新された経路データをサービスリフレクタサービスに提供すること、サービスリフレクタサービスからVGWリフレクタサービスへ更新された経路データを提供するために、ボーダゲートウェイプロトコル(BGP)を実装すること、及びVGWリフレクタサービスからVGWへ更新された経路データを提供することを含む。
【0063】
条項19では、本方法は、経路を経由して要求を転送する前に、VGWを示す識別子で要求にタグ付けすることをさらに含む。
【0064】
条項20では、本方法は、サービスによって要求を実行することをさらに含み、サービスを実行することが、要求を送信した顧客による排他的な使用に割り当てられたストレージまたはデータベースにアクセスすること、及び顧客提供のコードを実行することのうちの少なくとも1つを含む。
【0065】
「〜に基づいて」への言及は、「少なくとも〜に基づいて」と解釈されるべきである。例えば、値または条件の判定がYの値「に基づいて」いる場合、その判定は少なくともYの値に基づいている。つまり、判定は他の値にも基づいて行われる。
【0066】
当業者はまた、いくつかの実施形態において、本明細書に開示される機能は、より多くのソフトウェアモジュールまたはルーチンに分割されるか、より少ないモジュールまたはルーチンに統合されるかなどの代替の形式で提供され得ることを理解するであろう。同様に、一部の実施形態では、図示された方法は、例えば、他の図示された方法がそのような機能をそれぞれ欠いているかまたは含んでいる場合、または提供される機能の量が変更された場合など、説明されているよりも多くの機能または少ない機能を提供することができる。更に、種々の作用が、特定の方法(例えば、直列または並列で)で及び/または特定の順序で実行されるように説明されることがあるが、当業者は、他の実施形態では、作用が他の順序及び他の様式で実行してもよいことが認められる。図面に示され、本明細書で記載される様々な方法は、方法の例示的な実施形態を表す。方法は、様々な実施形態において、ソフトウェア、ハードウェア、またはそれらの組合せで実装されてもよい。同様に、任意の方法の順序を変更することができ、様々な実施形態では、様々な要素を追加し、並べ替え、組み合わせ、省略し、修正したりすることができる。
【0067】
上記の議論は、本開示の原理及び様々な実施形態を例示することを意図している。上記の開示が十分に理解されれば、多くの変形及び変更が当業者に明らかになるであろう。添付の特許請求の範囲は、そのような変形及び修正を全て包含するように解釈されることが意図される。