特許第6622196号(P6622196)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アマゾン テクノロジーズ インコーポレイテッドの特許一覧

<>
  • 特許6622196-仮想サービスプロバイダゾーン 図000002
  • 特許6622196-仮想サービスプロバイダゾーン 図000003
  • 特許6622196-仮想サービスプロバイダゾーン 図000004
  • 特許6622196-仮想サービスプロバイダゾーン 図000005
  • 特許6622196-仮想サービスプロバイダゾーン 図000006
  • 特許6622196-仮想サービスプロバイダゾーン 図000007
  • 特許6622196-仮想サービスプロバイダゾーン 図000008
  • 特許6622196-仮想サービスプロバイダゾーン 図000009
  • 特許6622196-仮想サービスプロバイダゾーン 図000010
  • 特許6622196-仮想サービスプロバイダゾーン 図000011
  • 特許6622196-仮想サービスプロバイダゾーン 図000012
  • 特許6622196-仮想サービスプロバイダゾーン 図000013
  • 特許6622196-仮想サービスプロバイダゾーン 図000014
  • 特許6622196-仮想サービスプロバイダゾーン 図000015
  • 特許6622196-仮想サービスプロバイダゾーン 図000016
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6622196
(24)【登録日】2019年11月29日
(45)【発行日】2019年12月18日
(54)【発明の名称】仮想サービスプロバイダゾーン
(51)【国際特許分類】
   H04L 9/32 20060101AFI20191209BHJP
   H04L 9/08 20060101ALI20191209BHJP
【FI】
   H04L9/00 675D
   H04L9/00 601B
【請求項の数】3
【全頁数】42
(21)【出願番号】特願2016-524288(P2016-524288)
(86)(22)【出願日】2014年6月30日
(65)【公表番号】特表2016-524429(P2016-524429A)
(43)【公表日】2016年8月12日
(86)【国際出願番号】US2014044861
(87)【国際公開番号】WO2015002875
(87)【国際公開日】20150108
【審査請求日】2016年2月16日
【審判番号】不服2018-164(P2018-164/J1)
【審判請求日】2018年1月5日
(31)【優先権主張番号】13/932,824
(32)【優先日】2013年7月1日
(33)【優先権主張国】US
(31)【優先権主張番号】13/932,872
(32)【優先日】2013年7月1日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】506329306
【氏名又は名称】アマゾン テクノロジーズ インコーポレイテッド
(74)【代理人】
【識別番号】110001243
【氏名又は名称】特許業務法人 谷・阿部特許事務所
(72)【発明者】
【氏名】グレゴリー ブランチェク ロス
(72)【発明者】
【氏名】エリック ジェイソン ブランドワイン
(72)【発明者】
【氏名】マシュー ジェイムズ レン
【合議体】
【審判長】 辻本 泰隆
【審判官】 石井 茂和
【審判官】 山崎 慎一
(56)【参考文献】
【文献】 米国特許出願公開第2012/0185913(US,A1)
【文献】 特表2013−513834(JP,A)
【文献】 hostsファイルを使ってURLを簡易入力する,[online],2006年2月6日,日経BP社,[2016年12月21日検索],インターネット <URL:http://trendy.nikkeibp.co.jp/article/tec/winxp/20060131/115213/?rt=nocnt>
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32, H04L 9/08
(57)【特許請求の範囲】
【請求項1】
データストレージサービスに記憶されたデータを取得するための第1のリクエストを受信し、前記データは、データ鍵で暗号化され、前記データ鍵は、前記データ鍵を暗号化した暗号化されたデータ鍵と共に前記データストレージサービスに記憶され、
前記第1のリクエストに応答して、前記データストレージサービスに、前記暗号化されたデータおよび前記暗号化されたデータ鍵を取得するための第2のリクエストを送信し、
前記第2のリクエストを送信したことに対応して、前記データストレージサービスから、前記暗号化されたデータおよび前記暗号化されたデータ鍵を受信し、
暗号化サービスに、前記暗号化されたデータ鍵を含み、前記暗号化されたデータ鍵を解読するための第3のリクエストを送信し、
前記第3のリクエストを送信したことに対応して、前記暗号化サービスから、解読されたデータ鍵を受信し、
前記解読されたデータ鍵を使用して、前記暗号化されたデータを解読し、
前記解読されたデータを提供し、
前記解読された鍵を破壊する
ストレージサービスプロキシ。
【請求項2】
ストレージサービスプロキシによって実行される方法であって、
データストレージサービスに記憶されたデータを取得するための第1のリクエストを受信するステップであって、前記データは、データ鍵で暗号化され、前記データ鍵は、前記データ鍵を暗号化した暗号化されたデータ鍵と共に前記データストレージサービスに記憶される、ステップと、
前記第1のリクエストに応答して、前記データストレージサービスに、前記暗号化されたデータおよび前記暗号化されたデータ鍵を取得するための第2のリクエストを送信するステップと、
前記第2のリクエストを送信したことに対応して、前記データストレージサービスから、前記暗号化されたデータおよび前記暗号化されたデータ鍵を受信するステップと、
暗号化サービスに、前記暗号化されたデータ鍵を含み、前記暗号化されたデータ鍵を解読するための第3のリクエストを送信するステップと、
前記第3のリクエストを送信したことに対応して、前記暗号化サービスから、解読されたデータ鍵を受信するステップと、
前記解読されたデータ鍵を使用して、前記暗号化されたデータを解読するステップと、
前記解読されたデータを提供するステップと、
前記解読された鍵を破壊するステップと、
を備えた方法。
【請求項3】
コンピュータ実行可能命令を含むコンピュータプログラムであって、前記コンピュータ実行可能命令は、ストレージサービスプロキシによって実行されるとき、前記ストレージサービスプロキシに、
データストレージサービスに記憶されたデータを取得するための第1のリクエストを受信することであって、前記データは、データ鍵で暗号化され、前記データ鍵は、前記データ鍵を暗号化した暗号化されたデータ鍵と共に前記データストレージサービスに記憶される、ことと、
前記第1のリクエストに応答して、前記データストレージサービスに、前記暗号化されたデータおよび前記暗号化されたデータ鍵を取得するための第2のリクエストを送信することと、
前記第2のリクエストを送信したことに対応して、前記データストレージサービスから、前記暗号化されたデータおよび前記暗号化されたデータ鍵を受信することと、
暗号化サービスに、前記暗号化されたデータ鍵を含み、前記暗号化されたデータ鍵を解読するための第3のリクエストを送信することと、
前記第3のリクエストを送信したことに対応して、前記暗号化サービスから、解読されたデータ鍵を受信することと、
前記解読されたデータ鍵を使用して、前記暗号化されたデータを解読することと、
前記解読されたデータを提供することと、
前記解読された鍵を破壊することと、
を含む動作を実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本願は、共に2013年7月1日に出願された同時係属米国特許出願第13/932,824号及び同第13/932,872号の優先権を主張するものであり、それらの内容はその全体が参照により本明細書に組み入れられる。本願は、2013年4月9日に公開された「NETWORK DATA TRANSMISSION ANALYSIS MANAGEMENT」と題された米国特許第8,416,709号、2012年6月7日に出願された「FLEXIBLY CONFIGURABLE DATA MODIFICATION SERVICES」と題された米国特許出願第13/491,403号、2013年2月12日に出願された「DATA SECURITY SERVICE」と題された米国特許出願第13/764,963号、及び2013年7月1日に出願された「DATA LOSS PREVENTION TECHNIQUES」と題された米国特許出願第13/932,872号の完全な開示をすべての目的のために参照により組み入れる(代理人整理番号0097749−051US0)。
【背景技術】
【0002】
計算資源及び関連データのセキュリティは、多くの状況において重要度が高い。一実施例として、組織は、多くの場合、計算デバイスのネットワークを利用して、強固な一連のサービスをユーザに提供する。ネットワークは、多くの場合、複数の地理的境界に及び、そして多くの場合、他のネットワークに接続する。例えば、組織は、計算資源の内部ネットワーク、及び他者によって管理される計算資源の両方を使用してそのオペレーションをサポートすることができる。例えば、組織のコンピュータは、他の組織のコンピュータと通信してデータにアクセスし、及び/またはデータを提供し、その上、別の組織のサービスを使用することができる。組織は、複雑なデータストレージシステムを使用して、効率的にかつコスト効率よくデータを記憶することができる。組織は、多くの場合、他の組織によってホスト及び管理されているデータストレージシステムを構成及び利用することによって、インフラストラクチャのコストを減少し、他の利点を達成する。これらのデータストレージシステム及び他のサービスは、各々が独自の規則及び規制を持つ複数の異なる管轄区域下で動作する場合がある。計算資源を管理するためのそのような複雑な使用では、データへのアクセスに権限を付与し、通常、特にそのような構成のサイズが大きくなるにつれてかつ複雑性が増すにつれて困難となり得るデータの安全性が保証される。
【発明の概要】
【0003】
本開示に従うさまざまな実施形態を、以下の図面を参照して記述する。
【図面の簡単な説明】
【0004】
図1】さまざまな実施形態を実践することができる環境の例示的な実施例を示す。
図2】さまざまな実施形態を実践することができる環境の例示的な実施例を示す。
図3】さまざまな実施形態を実践することができる環境の例示的な実施例を示す。
図4】さまざまな実施形態を実践することができる別の環境の例示的な実施例を示す。
図5】少なくとも一つの実施形態に従う暗号化サービスの例示的な実施例を示す。
図6】少なくとも一つの実施形態に従う、データ鍵を求めるリクエストを処理するプロセスの例示的な実施例を示す。
図7】少なくとも一つの実施形態に従う、データ鍵を解読するためのリクエストを処理するプロセスの例示的な実施例を示す。
図8】少なくとも一つの実施形態に従う、データを記憶するためのリクエストを処理するプロセスの例示的な実施例を示す。
図9】少なくとも一つの実施形態に従う、データを取得するためのリクエストを処理するプロセスの例示的な実施例を示す。
図10】少なくとも一つの実施形態に従う、データベーステーブル変換の例示的な実施例を示す。
図11】少なくとも一つの実施形態に従う、データベースクエリを処理するプロセスの例示的な実施例を示す。
図12】さまざまな実施形態を実践することができる環境の例示的な実施例を示す。
図13】少なくとも一つの実施形態に従う、顧客データを記憶するプロセスの例示的な実施例を示す。
図14】少なくとも一つの実施形態に従う、一つ以上のデータ損失防止技術を利用するプロセスの例示的な実施例を示す。
図15】さまざまな実施形態を実施することができる環境を図示する。
【発明を実施するための形態】
【0005】
以下の説明において、さまざまな実施形態を記述する。説明のために、そして実施形態の完全な理解を与えるために特定の構成及び詳細を説明する。しかしながら、特定の詳細がなくても実施形態を実践できることも当業者に明らかである。さらに、周知の特徴は、記述する実施形態を曖昧にしないために、省略または簡略化される場合がある。
【0006】
本明細書に記述及び提案される技術は、さまざまなゾーン内に完全なインフラストラクチャを作ることを必要とせずに、それらのゾーン内にデータストレージサービスなどのさまざまな計算資源サービスを提供する能力を与える。いくつかの実施例において、ゾーンは、異なる地政学的境界内の施設に対応する。さまざまな地理的地域は、他者のデータの扱いに関してのその独自の規則、法律及び/または規制を有する場合がある。例えば、ある規制では、特定のタイプのデータを国内に留めることが要求される場合がある。同様の規制は、複数の地理的地域において実施される場合がある。同時に、多くの組織は、さまざまな計算資源サービスを利用することが有利であると考えている。そのようなサービスはすべての管轄区域において利用可能なわけではなく、あるいは他の地域においてより優れた及び/またはより経済的なサービスが提供される場合がある。
【0007】
多くの場合、そのような規制の順守は、規制された管轄区域からデータを出す前にデータを暗号化することによって達成することができる。それ故に、本開示の技術は、異なる規則、法律及び/または規制の順守を維持しつつ、さまざまなデータ関連サービスを複数の地理的地域に提供することができる。通常、本明細書に記述及び提案される技術は、必ずしもこれに限らないが、種々の独立した事業体に相当し得る複数のゾーンへのサービスの提供を可能にする。例えば、種々のゾーンは、独立して存在する政府機関、企業、組織、組織内の課、個人及び/または他の団体であってもよい種々の事業体によって運営される種々のコンピュータネットワークであってもよい。他の実施例のゾーンの詳細については後述する。
【0008】
さまざまな実施形態において、ウェブサービスインターフェースなどのサービスインターフェースは、一つのゾーンに提供される。いくつかの実施例において、サービスは、インターネットプレゼンスポイント(PoP)内で動作する。サービスインターフェースは、そのサポーティングインフラストラクチャが別のゾーン内(例えば、別の行政上の(法律上の)管轄区域下)にあるサービスのための仮想アプリケーションプログラミングインターフェース(API)エンドポイントとして動作することができる。それ故に、サービスインターフェースは、サービスインターフェースに提示されるリクエストを受信してそれに応答し、その上、一部さらにはすべてのリクエストの実現において、他のゾーン内のインフラストラクチャの使用を要求するように動作することができる。このように、顧客は、サービスインターフェースを使用して、そのゾーン内においてインフラストラクチャが完全にサポートされているサービスを利用しているかのようにそのサービスを利用することができる。つまり、顧客の観点からすれば計算資源は複数のゾーン内のサービスのインスタンスを提供するが、裏では、少なくともある程度、別のゾーンのサービスのインスタンスを使用した、特定のゾーンにおけるリクエストの処理が発生し得る。例えば、データを記憶するためのウェブサービスリクエストは、サービスインターフェースが永続記憶のためにデータを他のゾーン内のサービスに伝送することによって実現することができる。同様に、データ取得リクエストは、他のゾーン内のサービスのインフラストラクチャ内に永続的に記憶されているデータを取得することによって実現することができる。このように、特定のタイプの情報のエクスポートについての法律上の制限が存在し得るゾーンごとに完全なインフラストラクチャを構築及び維持する必要はない。
【0009】
さまざまな規則、法律、規制及び/または優先事項に従うために、サービスインターフェースを通じて別のゾーン内のサービスに送られる一部さらにはすべてのデータは、サービスインターフェースのゾーン内、及び/または通常ではサポーティングサービスインフラストラクチャのゾーンの外部にあるゾーン内に維持された暗号鍵を使用して暗号化することができる。このように、サポーティングサービスインフラストラクチャのゾーン内にある間、データは、安全であり、別のゾーン内の適切な暗号鍵にアクセスしない限りはアクセスできない。暗号化されるデータは、大まかにまたは選択的に暗号化することができる。暗号化されるデータは、データを記憶する者に代わる顧客によっても構成することができる。さらに、暗号化されるデータ及びデータを暗号化するか否かは、一つ以上のデータ損失防止(DLP)ポリシに従い決定することができる。さらに、本開示のさまざまな例示的な実施形態は、例証目的のために暗号化を利用するが、さまざまな他の技術も用いることができる。例えば、本明細書に記述するさまざまな技術は、データのさまざまな操作(マングリング)を含む。利用されるマングリングのタイプは、顧客が構成可能なものであってもよい。
【0010】
データの暗号化の例示的な実施例に戻ると、いくつかの実施形態において、APIプロキシとして動作するサービスインターフェースは、同じゾーン内の暗号化サービスを利用する。暗号化サービスは、暗号化及び解読、場合によってはメッセージ署名などの他の暗号化オペレーションを実行するために使用される暗号鍵を安全に管理することができる。データを暗号化する場合には、サービスインターフェースは、データが他のゾーン内の他のサービスに伝送される前に、暗号化サービスを利用してデータを暗号化することができる。同様に、データを解読する場合には、サービスインターフェースは、暗号化サービスを利用してデータを解読することができる。暗号化サービスを利用することができる例示的な方法については後述する。実施例の暗号化サービスは、参照により本明細書に組み入れられる、2013年2月12日に出願された「DATA SECURITY SERVICE」と題された米国特許出願第13/764,963号に見ることができる。
【0011】
サービスプロバイダのサービスタイプのインスタンスは、顧客によって利用され、例えば、一つ以上の規制に従うために、特定のデータへの特定の個人によるアクセスを制限することができる。実施例として、オペレータの組(例えば、顧客に代わって計算資源サービスプロバイダのサービスをリクエストする権限を持つ個人)は、別のサービスに関する別のオペレータの組とは異なる審査特性または資格を有し得る。例えば、前述のかつ詳細については後述するように、サービスプロバイダは、第一の地域内の第一のサービス、及び第一のサービスについての少なくともいくつかのリクエストのための(例えば、第一の地域とは異なる法律上の管轄区域内の)第二の地域内の第二のサービスを動作させることができる。この第一のサービスは、第二のサービスのプロキシとして作用する。第一のサービスのオペレータは、(もし存在すれば)第二のサービスを利用するために要求される資格とは異なる特定の資格を有することを要求される場合がある。実施例の資格は、これらに限定されないが、身元確認の提示、特定の国籍または所在地を有すること、特定の守秘義務に従うこと、特定のセキュリティクリアランスレベルを有すること、特定の職位(例えば、弁護士)を有することなどを含む。そのような制限の実施を可能にするために、サービスプロバイダは、サービスごとに異なる認証信任状を要求する場合がある。一実施例として、第一のサービスに対するリクエストを署名するのに使用される署名鍵は、第二のサービスには使用できない場合がある。このように、適切な資格を持つ個人への署名鍵の分配を使用して、データがある地域から別の地域に送られても、さまざまな規制に従うデータアクセスを保証することができる。
【0012】
図1は、さまざまな実施形態を実践することができる環境100の例示的な実施例を示す。図1に図示する環境において、仮想サービス102が提供される。仮想サービス102は、さまざまな計算資源サービスを利用する目的のために顧客104が使用可能なウェブサービスインターフェースなどのサービスインターフェースを提供するように構成できる。いくつかの実施形態において、仮想サービス102は、バッキングサービス106のプロキシとして動作する。詳細については後述するように、仮想サービス102とバッキングサービス106とは、同じサービスタイプ全体のうちの別個のインスタンス(例えば、種々の地理的地域内にネットワークエンドポイントを持つデータストレージサービス)であってもよい。例えば、バッキングサービス106は、サーバ、データストレージデバイス、及びネットワーク内の計算資源の動作を可能にするように構成されたネットワーク機器などの計算資源の集合であってもよい。バッキングサービス106は、仮想サービス102に提示されたリクエストの処理に必要なインフラストラクチャを提供することができる。例えば、仮想サービス102は、データストレージサービスを提供するために十分な記憶容量が不足している場合がある。つまり、仮想サービス102は、データストレージデバイスを含むことはできるが、バッキングサービス106を使用しないと仮想サービス102内に保持される記憶量が受信するリクエストを処理するのに不十分である場合がある。それでもなお、顧客104は、データストレージサービスを利用する目的のために仮想サービス102を利用することができる。
【0013】
図1に図示するように、例えば、顧客104は、例えば仮想サービス102へのウェブサービスAPIコールを通じて、仮想サービス102にデータを伝送することができる。データは、例えば、データを記憶するためのリクエストに関連させて転送することができる。仮想サービス102は、リクエストがバッキングサービス106に提示されたかのように、データを記憶するためのリクエストを処理することができる。例えば、顧客104にデータストレージサービスを提供するために十分な記憶容量が仮想サービス102に不足していても、仮想サービス102に提供されたデータを、バッキングサービス106のインフラストラクチャを利用して記憶することができる。前述のように、データストレージサービスを利用する場合に、さまざまな管轄区域上の考慮すべき事柄が生じることがある。それ故に、図1に図示するように、いくつかの実施形態における仮想サービス102及びバッキングサービス106は、一つ以上のデータセンタ施設及び/またはサーバ、ネットワーク機器、データストレージなどの集合といった物理インフラストラクチャを使用して実施される。図1に図示する実施例において、仮想サービス102とバッキングサービス106とは、異なる国に存在してもよい。ただし、異なる管轄区域上の事業体も、本開示の範囲内にあるとみなされる。
【0014】
仮想サービス102に伝送されるデータが、一つ以上の規則、法律、規制及び/または優先事項に違反し得るプレーンテキストの形態においてバッキングサービス106に記憶されることを防止するために、仮想サービス102からバッキングサービス106に伝送される顧客からのデータは、暗号化することができる。さまざまな実施形態において、データは、バッキングサービス106が位置する管轄区域内の計算デバイスに(顧客104の承諾及び/または命令が無い限り)決して提供されない暗号鍵を使用して暗号化される。例えば、いくつかの実施形態において、データの暗号化に使用される鍵は、仮想サービス102が位置する管轄区域内に安全に保持される。詳細については後述するように、一部のデータをプレーンテキスト(クリアテキスト)の形態において仮想サービス102からバッキングサービス106に提供し、一方で、他のデータを暗号化してもよい。さらに、仮想サービス102に提供される一部のデータは、例えば、そのような情報の転送が一つ以上のDLPポリシに違反する場合には、バッキングサービス106に伝送しなくてもよい。
【0015】
図1には顧客104によって仮想サービス102に伝送されるデータを図示するが、バッキングサービス106に伝送されるデータを仮想サービス102が入手できる他の方式が提供され得ることが留意すべきである。例えば、いくつかの実施形態において、顧客104である複数の顧客は、計算資源サービスプロバイダの計算資源を使用して実施される顧客104のサービスを利用する。データは、顧客104であるこれらの複数の顧客から直接に仮想サービス102に伝送することができる。別の実施例として、仮想サービス102に伝送される顧客データは、仮想サービス102を動作させる計算資源サービスプロバイダによって物理的にホストされた計算デバイスから伝送することができる。例えば、顧客104は、後述するような仮想コンピュータシステムサービスを利用する計算資源サービスプロバイダによって実施される仮想マシンインスタンスから仮想サービス102データを提供することができる。
【0016】
さらに、図1は、仮想サービス102が位置する管轄区域の外部から仮想サービス102に移動する、顧客104からのデータを図示するが、データは、その管轄区域内から、またはバッキングサービス106が位置する管轄区域などの異なる管轄区域からも提供することができる。本開示は、顧客104または他の事業体から得るものとしてさまざまな通信及び伝送を論じるが、別途記載がない限り、そのような通信が、顧客104の一つ以上の計算デバイスによって起動され、同期ユーザ入力に準じて及び/または自動処理に従い動作できることが理解されるべきであることもさらに留意すべきである。つまり、データを顧客104から移動するものとして記述する場合には顧客104は組織などの事業体を指し得るが、別途記載がない限り、データは、顧客104の計算デバイスから、または顧客104に代わって動作する計算デバイスからも提供される。他の変形例及び追加の特徴の詳細については後述する。
【0017】
図2は、本開示のさまざまな実施形態を実践することができる環境200の例証的な実施例を示す。環境200において、計算資源サービスプロバイダ202が、様々なサービスを顧客204に提供することができる。顧客204は、計算資源サービスプロバイダ202によって提供される、情報を保持してさまざまな地理的位置に位置し得るその従業員に送達するためのさまざまなサービスを利用できる組織であってもよい。さらに、顧客204は、リモートに位置するワーキンググループにコンテンツを送達するためのさまざまなサービスを利用できる個人であってもよい。図2に図示するように、顧客204は、インターネットなどの一つ以上の通信ネットワーク206を通じて、計算資源サービスプロバイダ202と通信することができる。顧客204から計算資源サービスプロバイダ202への一部の通信によって、計算資源サービスプロバイダ202を、本明細書に記述するさまざまな技術またはその変形例に従い動作させることができる。
【0018】
前述のように、計算資源サービスプロバイダ202は、さまざまな計算資源サービスをその顧客に提供することができる。計算資源サービスプロバイダによって提供されるサービスは、この実施例では、仮想コンピュータシステムサービス208、ブロックレベルデータストレージサービス210、暗号化サービス212(鍵管理サービスとも呼ばれる)、データストレージサービス214、及び一つ以上の他のサービス216を含む。ただし、本開示のすべての実施形態がすべてのそのようなサービスを含むわけではなく、また、追加のサービスを、本明細書に明白に記述するサービスに追加してまたはその代わりに提供することができる。サービスの各々は、適切に構成されたAPIコールを、ウェブサービスリクエストを通じてさまざまなサービスに顧客204が提示できる一つ以上のウェブサービスインターフェースを含むことができる。さらに、サービスの各々は、サービスを互いにアクセスさせることができる(例えば、仮想コンピュータシステムサービス208の仮想コンピュータシステムが、データストレージサービスにデータを記憶するもしくはそれからデータを取得する、及び/またはブロックデータストレージサービスによって提供される一つ以上のブロックレベルデータストレージデバイスにアクセスすることができる)一つ以上のサービスインターフェースを含むことができる。
【0019】
仮想コンピュータシステムサービス208は、計算資源サービスプロバイダ202の顧客204に代わって、仮想計算システムにおいて仮想マシンインスタンスをインスタンス化するように構成された計算資源の集合であってもよい。計算資源サービスプロバイダ202の顧客204は、(適切に構成され、かつ認証されたAPIコールを通じて)仮想コンピュータシステムのサービスと相互作用し、計算資源サービスプロバイダ202によってホスト及び動作する物理計算デバイスにおいてインスタンス化された仮想コンピュータシステムをプロビジョン及び動作させることができる。仮想コンピュータシステムは、さまざまな目的に使用することができる。例えば、ウェブサイトをサポートするサーバとして動作する、ビジネスアプリケーションを動作する、または通常、顧客のための計算能力としての機能を果たす。仮想コンピュータシステムの他のアプリケーションは、データベースアプリケーション、電子商取引アプリケーション、ビジネスアプリケーション及び/または他のアプリケーションをサポートすることができる。
【0020】
ブロックレベルデータストレージサービス210は、ブロックレベルストレージデバイス(及び/またはその仮想化)を使用して、顧客204用のデータを記憶するように集合的に動作する計算資源の集合を備えることができる。ブロックレベルデータストレージサービス210のブロックレベルストレージデバイスは、例えば、仮想コンピュータシステムサービス208によって提供された仮想コンピュータシステムに動作可能に取り付けられ、コンピュータシステムのための論理ユニット(例えば、仮想ドライブ)としての機能を果たすことができる。ブロックレベルストレージデバイスは、仮想コンピュータシステムサービス208が短期のデータ記憶のみしか提供できない場合に、対応する仮想コンピュータシステムによって使用または生成されるデータを永続記憶することができる。
【0021】
図2に図示するように、計算資源サービスプロバイダ202は、図3に関連してより詳細については後述する暗号化サービスを動作させることができる。通常、暗号化サービスは、計算資源サービスプロバイダの顧客用の暗号鍵を管理及び使用するように集合的に構成された計算資源の集合であってもよい。暗号化サービス212によって使用される鍵は、暗号化オペレーション(暗号化、解読及びメッセージ署名など)及び/または鍵ローテーションなどの他のオペレーションを実行するためのリクエストを提示したときを顧客が参照することができる関連した識別子を有することができる。暗号化サービスは、権限のない団体によるアクセスを回避するために、暗号鍵を安全に保持することができる。
【0022】
前述のように、計算資源サービスプロバイダ202は、オンデマンドデータストレージサービス及び/またはアーカイバルデータストレージサービスを含み得る一つ以上のデータストレージサービス214も含むことができる。オンデマンドデータストレージサービスは、データを記憶及び/またはそれにアクセスするためのリクエストを同期的に処理するように構成された計算資源の集合であってもよい。オンデマンドデータストレージサービスは、データを求めるリクエストに応答してデータを提供できるようにデータを迅速にオンデマンドデータストレージサービス208が検出及び取得できる計算資源(例えば、データベース)を使用して動作することができる。例えば、オンデマンドデータストレージサービスは、データオブジェクトを求めるリクエストを取得したときに、そのリクエストに対する応答においてデータオブジェクトを提供できる(または、データオブジェクトのストリーミングを起動できる)ように、記憶したデータを保持することができる。前述のように、オンデマンドデータストレージサービスに記憶されたデータは、データオブジェクトに組織化することができる。データオブジェクトは、ことによるとサイズについての特定の制約以外の任意のサイズを有することができる。故に、オンデマンドデータストレージサービスは、いろいろなサイズの多数のデータオブジェクトを記憶することができる。オンデマンドデータストレージサービスは、オンデマンドデータストレージサービス210に記憶されたデータオブジェクトに関連する他のオペレーションを取得または実行するために、データオブジェクトを、顧客204が使用できるデータオブジェクトの識別子に関連付ける鍵値ストアとして動作することができる。オンデマンドデータストレージサービスは、暗号化サービス212にもアクセスできるものであってもよい。例えば、いくつかの実施形態において、暗号化サービスは、オンデマンドデータストレージサービスを利用して暗号化形式において顧客鍵を記憶する。顧客鍵を解読するのに使用可能な鍵は、暗号化サービス212の特定のデバイスのみにおいてアクセスできる。顧客、別のサービスまたは他の事業体によるデータストレージサービスへのアクセスは、適切に構成されたAPIコールを通じたものであってもよい。
【0023】
アーカイバルストレージシステムは、オンデマンドデータストレージサービスとは異なって動作することができる。例えば、アーカイバルストレージシステムは、データアクセスに関連する性能を低下させてストレージコストを減少するような方式でデータを記憶するように構成できる。例示的な一実施例として、アーカイバルストレージシステムは、バッチ処理及び並列処理によってコストを節約するように、非同期的にデータオペレーションを実行する(すなわち、データを記憶及び取得する)ように構成できる。例えば、アーカイバルストレージシステムのクライアントは、アーカイバルストレージシステムに記憶されているデータオブジェクトにアクセスするためのリクエストを受信し、リクエストを収集し、リクエストをバッチ処理し、リクエストされたデータを、追加のリクエストを使用した取得に利用可能にすることができる。非同期処理の故に、アーカイバルストレージシステムは、データオブジェクトが取得される状態になると、データオブジェクトを取得するための別のリクエストを要求する場合がある。これは例えば、一つ以上のアーカイバルデータストレージデバイスからデータオブジェクトを読み出し、データオブジェクトを利用可能な一つ以上のステージングデータストレージデバイスにデータを書き込むことによって行われる。
【0024】
他方では、オンデマンドストレージシステムは、データアクセスに関するより優れた性能を提供するように構成できる。例えば、オンデマンドストレージシステムは、データを記憶及び/またはそれにアクセスするためのリクエストを同期的に処理するように構成できる。アーカイバルストレージシステムに対してより優れた性能を可能にするために、オンデマンドストレージシステムは、アーカイバルストレージシステムに対して迅速にオンデマンドストレージシステムがデータを検出及び取得できる追加の計算資源(例えば、データベース)を使用して動作することができる。オンデマンドストレージシステムは、同期データアクセスを提供することができる。例えば、オンデマンドストレージシステムは、データオブジェクトを求めるリクエストが取得されたときに、そのリクエストに対する応答においてデータオブジェクトを提供できる(または、データオブジェクトのストリーミングを起動できる)ように、記憶したデータを保持することができる。
【0025】
図2に図示する環境には、通知サービス216が含まれる。通知サービス216は、関連するアプリケーション(または、人達)に顧客が通知することを望むトピックスを作り出し、これらのトピックスをクライアントに購読させ、メッセージを公表し、これらのメッセージをクライアントが選択したプロトコル(すなわち、HTTP、電子メール、SMSなど)を通じて送達するのに使用できるウェブサービスまたは他のインターフェース及びブラウザベースのマネージメントコンソールを提供するように集合的に構成された計算資源の集合を備えることができる。通知サービスは、定期的に確認する必要のない「プッシュ」機構、または新規の情報及び更新のための「ポール」を使用して、クライアントに通知を提供することができる。通知サービスは、仮想コンピュータシステムサービスにおいて実行されるモニタリングアプリケーション、ワークフローシステム、時間依存情報の更新、モバイルアプリケーション、及び多くの他のアプリケーションなどのさまざまな目的に使用することができる。
【0026】
計算資源サービスプロバイダ202は、その顧客204のニーズに基づく一つ以上の他のサービス218をさらに保持することができる。例えば、計算資源サービスプロバイダ202は、その顧客204に関するデータベースサービスを保持することができる。データベースサービスは、一人以上の顧客204に関する一つ以上のデータベースを稼動するための集合的に動作する計算資源の集合であってもよい。計算資源サービスプロバイダ202の顧客204は、適切に構成されたAPIコールを利用することによって、データベースサービスからのデータベースを動作及び管理することができる。これにより、次に、顧客204は、オペレーションをデータベースに保持及び潜在的にスケールすることができる。他のサービスは、これらに限定されないが、オブジェクトレベルアーカイバルデータストレージサービス、他のサービスを管理及び/もしくは監視するサービス、並びに/または他のサービスを含む。
【0027】
図2に図示するように、計算資源サービスプロバイダ202は、さまざまな実施形態において、認証システム220及びポリシマネジメントサービス222を含む。認証システムは、一実施形態において、顧客のユーザの認証に伴うオペレーションを実行するように構成されたコンピュータシステム(すなわち、計算資源の集合)である。例えば、サービスのうちの一つは、ユーザからの情報を認証サービスに提供し、その応答として、ユーザリクエストが認証されたか否かを示す情報を受信することができる。ユーザリクエストが認証されたか否かの決定は、任意の適切な方法において実行してもよいし、認証の実行方法は、さまざまな実施形態において変えることもできる。例えば、いくつかの実施形態において、ユーザは、サービスに伝送されるメッセージに電子的に署名する(すなわち、コンピュータシステムは、ユーザがメッセージに電子的に署名することによって動作する)。電子署名は、認証される実在者(例えば、ユーザ)及び認証システムの両方に利用可能な機密情報(例えば、ユーザに関連する鍵の対のうちのプライベート鍵)を使用して生成することができる。リクエスト及びリクエストに関する署名は、認証システムに提供され、認証システムは、機密情報を使用して、参照署名を受信した署名と比較して計算し、リクエストが認証されたか否かを決定することができる。
【0028】
リクエストが認証された場合には、認証サービスは、サービスが使用できる情報をサービスに提供し、ペンディングリクエストを遂行するか、及び/または暗号化サービスなどの他のサービスに証明するなどの他のアクションを実行するか否かを決定することができる。リクエストが認証されると、それに応じて他のサービスを動作させることができる。例えば、認証サービスは、トークンを解析してリクエストの信頼性を確認できる別のサービスにトークンを提供することができる。電子署名及び/またはトークンは、さまざまな方式において制限された有効性を有することができる。例えば、電子署名及び/またはトークンは、特定の時間だけ有効にすることができる。一実施例において、電子署名及び/またはトークンは、確認のための電子署名及び/またはトークンに含まれるタイムスタンプを入力としてとる関数(例えば、ハッシュベースメッセージ認証コード)に少なくともある程度基づいて生成される。提示された電子署名及び/またはトークンを確認する事業体は、受信したタイムスタンプが十分に最新(例えば、現在から所定の時間内)であるかを確認し、受信したタイムスタンプに代用される参照署名またはトークンを生成することができる。提示された電子署名もしくはトークンを生成するのに使用されるタイムスタンプが十分に最新でない、及び/または提示された署名もしくはトークンと参照署名もしくはトークンとが一致しない場合には、認証に失敗し得る。このように、電子署名が危険にさらされた場合には、それは短時間だけ有効となり、それによって、このセキュリティ侵害によって引き起こされる潜在的な危害を限定する。信頼性を確認する他の方式も、本開示の範囲内にあるとみなされることに留意すべきである。
【0029】
ポリシマネジメントサービス222は、一実施形態において、計算資源サービスプロバイダの顧客に代わってポリシを管理するように構成されたコンピュータシステムである。ポリシマネジメントサービス222は、ポリシの管理に関連するリクエストを顧客が提示できるインターフェースを含むことができる。そのようなリクエストは、例えば、顧客についてのポリシを追加、削除、変更、さもなければ修正するための、または既存のポリシの一覧表などを提供することなどの他の管理上のアクションリクエストのためのリクエストであってもよい。ポリシマネジメントサービス222は、ペンディングリクエストの実現がリクエストを要請した顧客に対応するポリシに従い許容可能であるか否かの決定をサービスができるようになる他のサービスともインターフェースすることができる。例えば、サービスは、リクエストを受信したときに、(そのような情報をローカルにキャッシュしていない場合に)リクエストについての情報(及び/またはリクエストそれ自体)をポリシ管理システムに伝送することができる。このポリシ管理システムは、顧客についてのポリシを解析して、顧客の既存のポリシによってリクエストの実現が可能であるか否かを決定し、その決定に従い情報をサービスに提供することができる。
【0030】
図3は、さまざまな実施形態を実践することができる環境300の例示的な実施例を示す。図3に図示するように、環境300は、三つのゾーン、すなわち、顧客構内302、仮想ゾーン304及びバッキングゾーン306を含む。顧客構内302は、図1に参照するような前述の顧客104によって及び/またはそれに代わって動作する施設を含むことができる。同様に、仮想ゾーン304は、バッキングゾーン306に対応する管轄区域(例えば、行政上の(法律上の)管轄区域)とは異なる管轄区域内の計算資源サービスプロバイダによって動作する施設に対応することができる。つまり、顧客構内302は顧客104に対応し、仮想ゾーン304は仮想サービス102に対応し、バッキングゾーン306はバッキングサービス106に対応し得る。しかしながら、前述のように、ゾーンは、必ずしも異なる地政学的境界に対応せず、他のタイプの管理上の統制に対応し得る。例えば、顧客構内302は、図1に関連して前述した顧客104であってもよい顧客308の管理上の統制下の計算資源のネットワークに対応し得る。同様に、仮想ゾーン304は、計算資源サービスプロバイダ304の管理上の統制下の計算資源のネットワークに対応し得る。
【0031】
バッキングゾーン306は、計算資源サービスプロバイダまたは別の計算資源サービスプロバイダの管理上の統制下の計算資源のネットワークに対応し得る。仮想ゾーン304は、様々な方式において実施でき、通常、後述するように、顧客の観点から見て、仮想ゾーン304がバッキングゾーン306を使用しなくても単独でリクエストを処理できる完全に進行するバッキングゾーンであるかのように動作するよう実施される。つまり、バッキングゾーン306の使用にかかわらず、仮想ゾーン304は、リクエストがバッキングゾーンに直接提示されたかのように、(リクエストがバッキングゾーン306に直接提示された場合にはさもなければ生じない暗号化などのデータの特定の操作以外の)リクエストを受信し、それを処理することができる。例えば、前述のように、場合によっては、仮想ゾーン304は、特定の行政上の管轄区域内のインターネットPoPとして実施することができる。バッキングゾーン306は、図2に関連して前述した一つ以上の計算資源サービスなどを提供できるインフラストラクチャを有する一つ以上のデータセンタ施設に対応し得る。
【0032】
仮想ゾーン304に戻ると、前述のように、仮想ゾーン304は、ストレージサービスプロキシ310及び暗号化サービス312を含むことができる。より詳細については後述するように、ストレージサービスプロキシ310は、顧客308がリクエストを提示することができるサービスインターフェースを提供できる。サービスインターフェースは、一つ以上のパブリックIPアドレスなどの一つ以上のパブリックネットワークアドレスにおいてアクセス可能であってもよい。ストレージサービスプロキシ310は、暗号化サービス312を利用して、バッキングゾーン306のストレージサービス314に送信されるデータの暗号化を確かに保証することができる。ストレージサービス314は、顧客308及び/または他の顧客が直接アクセスできるそれぞれのストレージインターフェースも提供することができる。バッキングゾーン306は、認証サービス316も含むことができる。認証サービス316は、ストレージサービスプロキシ310、暗号化サービス312及びストレージサービス314が、顧客308または環境300内の別の構成要素によって提示されたリクエストを実現するか否かを決定できるように機能する前述のような計算資源の集合であってもよい。
【0033】
ストレージサービスプロキシ310及びストレージサービス314が、一つ以上の計算資源サービスプロバイダのデータストレージサービスに対応し得ることが留意すべきである。例えば、ストレージサービス314は、オンデマンドストレージサービス、アーカイバルデータストレージサービス、ブロックレベルデータストレージサービス、リレーショナルデータベースサービスなどのデータベースサービス、noSQLデータベースストレージサービス、またはデータウェアハウスデータストレージサービスであってもよい。通常、一人以上の顧客に代わってデータを記憶するように動作する任意のサービスを、環境300において利用することができる。例証目的のためにストレージサービスが使用されるが、仮想ゾーン304及びバッキングゾーン306が、仮想コンピュータシステムサービス、計算資源管理サービス、及び/または通常、計算資源プロバイダによって提供され得、顧客もしくは他の極秘データへのアクセスを含むことができる任意の計算資源サービスなどの他のタイプのサービスのための計算資源を含むことができることも留意すべきである。それ故に、バッキングゾーン306は、そのようなサービスを実施するための施設を含み、仮想ゾーン304は、そのサービスのためのAPIプロキシとして動作する対応するサービスインターフェースを含むことができる。さらに、仮想ゾーン304は、仮想ゾーン304内の対応するサービスプロキシを各々が有する複数の異なるサービスも含むことができる。前述のように、仮想ゾーンは、さまざまな方式において提供され得、仮想ゾーンが提供され得る方式は、図1に図示するかつ前述の方式に限定されない。
【0034】
図4は、それ故に、さまざまな実施形態を実践することができる環境400の例示的な実施例を示す。例えば、図4に図示するように、環境400は、図3に関連して前述したなどの顧客構内402、仮想ゾーン404及びバッキングゾーン406を含む。例えば、顧客構内402は、顧客408の計算資源を有する、または顧客408に代わって利用される一つ以上の施設を含むことができる。図4に図示するように、仮想ゾーン404は、顧客構内402に位置するゾーンであってもよい。例えば、顧客構内402のネットワークの計算デバイスは、リクエストを提示できるウェブサービスインターフェースを提供することができる。いくつかの実施形態において、ウェブサービスインターフェースは、一つ以上のプライベートIPアドレスなどの一つ以上のプライベートネットワークアドレスにおいてアクセス可能である。顧客計算デバイス、またはいくつかの実施形態においては任意の計算デバイスは、バッキングゾーン406の施設の使用を含み得る、リクエストの処理を行うために、仮想ゾーン404に関するインターフェースにリクエストを提示することができる。
【0035】
図4に図示するように、仮想ゾーン404は、図3に関連して前述したような、ストレージサービスプロキシ410及び暗号化サービスを含む。前述のように、ストレージサービスプロキシ410は、バッキングゾーン406内に位置するストレージサービス414のAPIプロキシとして機能するストレージサービスインターフェースを含むことができる。ストレージサービスプロキシ410と同様に、リクエストは、顧客408によってストレージサービスプロキシ410に提示され得、それらのリクエストの実現には、ストレージサービス414を利用することができる。暗号化サービス412は、ストレージサービスプロキシ410によって利用することができ、さまざまな実施形態に従い適切な場合に、ストレージサービスプロキシ410によってストレージサービス414に伝送されるデータの暗号化を保証することができる。同様に、バッキングゾーン406内の認証サービス416は、ストレージサービスプロキシ暗号化サービス412及びストレージサービス414によって利用することができ、リクエストが確かに提示され、それ故に実現可能であるか否か、(例えば、任意の適用可能なポリシに従い実現する場合に、)他の方法で実現可能かどうかを決定することができる。
【0036】
ここに記述したすべての環境と同様の変形例が、本開示の範囲内にあるものとしてみなされることに留意すべきである。例えば、図4は、仮想ゾーン404内部の暗号化サービス412を示す。暗号化サービスは、例えば、ハードウェアセキュリティモジュール(HSM)、または顧客408に代わって暗号鍵を管理する他の計算デバイスとして動作することができる。しかしながら、暗号化サービスが、バッキングゾーン406などの他のゾーン、または図面に図示しない別の仮想ゾーンに位置してもよいことに留意すべきである。例えば、暗号化サービスは、図3に関連して前述したような仮想ゾーン内に存在してもよい。通常、暗号化サービスは、顧客408に専用のサービスであってもよいし、必要に応じて、計算資源サービスプロバイダの複数の顧客に代わって暗号鍵を管理するマルチテナントサービスであってもよい。図4には唯一の仮想ゾーン404を有する顧客構内を示すが、顧客構内が、さまざまな目的に利用できる複数の仮想ゾーンを含むことができることにも留意すべきである。例えば、顧客408は組織であってもよく、異なる仮想ゾーンが、組織内の異なる管理上の事業体によって使用され得る。このように、データの混入、及び顧客408に関係し得る他の問題点は、複数の仮想ゾーンの使用を通じて管理することができる。同様に、ストレージサービス414及びストレージサービスプロキシ410が例証目的のために利用されるが、顧客構内402の一つ以上の仮想ゾーンは、複数のサービスに対応する複数のサービスプロキシを含むことができる。通常、本明細書に記述及び提案される技術を使用して、対応するプロキシを各々が持つ複数のサービスを使用することができる。
【0037】
さらに、前述のように、さまざまなサービスプロキシは、IPアドレスなどのパブリックネットワークアドレスを通じてアクセス可能であってもよい。いくつかの実施形態において、サービスプロキシは、対応するバッキングサービスに使用されるURLとは異なる対応するユーアールエル(URL)を有する。例えば、プロキシとサービスとが異なる地理的管轄区域に存在する実施例において、プロキシは、storageservice<dot>country1<dot>serviceprovider<dot>comの形態のURLを有し、一方で、バッキングサービスは、storageservice<dot>country2<dot>serviceprovider<dot>comの形態のURLを有することができる。ここで、<dot>は、ドメイン及びサブドメインの範囲を定めるのに使用される、ブラケット内の文字を表す。他の実施例において、プロキシとストレージサービスとは、同じURLであるが、異なるパブリックIPアドレスを有することができる。分散DNSサーバは、URLを、地理的に最も近いプロキシまたはバッキングサービスに関するIPアドレスに決定するように構成することができる。本開示の範囲内にあるものとみなされる変形例のなおも別の実施例として、バッキングサービスは、適切な場合に、バッキングサービスが暗号化形式におけるデータを受信するように、プロキシを通すようにリクエストを経路変更するように構成できる。他の変形例も、本開示の範囲内にあるとみなされる。
【0038】
図5は、本開示のさまざまな実施形態を実施するのに使用できる暗号化サービスの例示的な実施例を示す。図5に図示する暗号化サービス500は、例えば、図2図3及び図4に関連して前述した暗号化サービスとして使用することができる。一実施形態において、暗号化サービス500は、暗号化サービス500によって安全に管理された暗号鍵を使用した暗号化オペレーションを暗号化サービス500が実行できるさまざまなサブシステムを含む。例えば、図5に図示するように、暗号化サービス500は、リクエスト処理サブシステム502を含む。リクエスト処理サブシステム502は、リクエスト処理サブシステム502に提示されるリクエストを受信して処理するように集合的に動作する一つ以上のウェブサーバ及び一つ以上のアプリケーションサーバを含むことができる。
【0039】
一実施形態において、リクエスト処理サブシステム502は、ウェブサービスインターフェースを暗号化サービス500に提供する一つ以上のウェブサーバを含み、これにより(顧客または他のサービスからの)ウェブサービスコールを、ウェブサービスインターフェースを通じてリクエスト処理サブシステム502に送ることができ、さまざまな暗号化オペレーションを実行することができる。前述のように、暗号化サービス500は、暗号鍵を安全に管理することができる。それ故に、暗号化サービス500のさまざまな構成要素は、そのように安全に管理することができる。一実施形態において、暗号化サービス500は、複数の暗号化モジュール504及び顧客鍵ストレージ506を含む。各暗号化モジュール504は、ドメインキーとも呼ばれる暗号鍵を安全に管理する暗号化サービス500のサブシステムであってもよい。一実施形態において、暗号化モジュール504は、その各々が、暗号化モジュール504のすべてに共通する一つ以上のドメインキーのセットを記憶する。つまり、暗号化モジュール504の各々は、同じドメインキーの一つ以上を記憶することができる。ドメインキーの記憶は、ドメインキーが決して暗号化モジュール504から出ず、通常、暗号化サービス500の任意のサブシステムまたは他のシステムにはアクセスできないように実行することができる。
【0040】
一実施形態において、例えば、暗号化モジュールは、ハードウェアセキュリティモジュール(HSM)であってもよいセキュリティモジュールである。ハードウェアセキュリティモジュールは、プロセッサなどの計算資源、及び暗号化モジュールが暗号化オペレーションを実行できる実行可能命令を記憶するメモリを備えて構成することができる。暗号化モジュールは、暗号化モジュール504内部への侵入が検出された場合に、暗号化モジュール内に記憶されたドメインキーを消去し、それによって、暗号化モジュール504内への物理的侵入の方式によるドメインキーへのアクセスを防止するような不正開封防止となるように構成することができる。前述のように、一実施形態において、暗号化サービス500は、顧客鍵ストレージ506として図5に図示する顧客鍵のリポジトリを含む。しかしながら、代替の実施形態においては、外部の顧客鍵ストレージ506を使用せずに、一つ以上のセキュリティモジュールが顧客鍵を記憶する。そのような実施形態では、顧客鍵は、メモリからアクセスすることができ、解読するためにドメインキーを使用しなくてもよい。
【0041】
図示した実施形態に戻ると、各顧客鍵は、暗号化サービス500の対応する顧客に対応し、一人の顧客が複数の対応する顧客鍵を有し得るが、鍵は顧客の間で共有されない。そのようなものとして、暗号化サービス500は、顧客鍵ストレージ506内に、複数の顧客の顧客鍵を記憶することができる。同様に、暗号化サービス500は、暗号化モジュール504を通じて、複数の顧客のためのさまざまな暗号化オペレーションを実行することができる。図5に図示するように、顧客鍵ストレージ506内に記憶されている顧客鍵は、暗号化モジュール504に記憶されているドメインキーに基づいて暗号化される。右側ブラケットに注記するドメインキーを持つ顧客鍵の周囲のブラケットが、ドメインキーに基づく顧客鍵の暗号化を示す表記として提供されることに留意すべきである。このように、顧客鍵ストレージ506内に記憶されている顧客鍵は、顧客鍵にアクセスするためにドメインキーへのアクセスが必要となるような方式で記憶される。故に、顧客鍵ストレージ506内のデータへのアクセスは、それ自体では、顧客鍵に基づいて暗号化されたデータへのアクセスは提供しない。それ故に、複数の顧客の顧客鍵を暗号化モジュール504の外部に記憶し、それ故に、暗号化オペレーションを実行するのに使用され得るすべての鍵を記憶するためのセキュリティモジュール504を必要とせずに、スケーラビリティを提供することができる。
【0042】
暗号化モジュールは、詳細については後述するように、リクエストに応じて、指定の顧客鍵を使用して暗号化オペレーションを実行し、顧客鍵ストレージ506からの暗号化された指定の顧客鍵にアクセスし、ドメインキーを使用して顧客鍵を解読し、解読された顧客鍵を使用して暗号化オペレーションを実行するように構成できる。顧客鍵ストレージ506は、暗号化サービス500内に存在するものとして図示したが、暗号化サービス500と同じゾーン内に存在してもよいし、異なるゾーン内に存在してもよいデータストレージサービスなどの別のシステム内に位置してもよいことに留意すべきである。
【0043】
図6は、データを暗号化するのに使用されるデータ鍵を暗号化するように実行できるプロセス600の例示的な実施例である。プロセス600は、図5に関連して前述した暗号化サービス500などの任意の適切なシステムによって実行することができる。一実施形態において、プロセス600は、データ鍵を求めるリクエストを受信すること602を含む。リクエスト602は、より詳細については後述するように、データ鍵を提供するのに使用される顧客鍵を、プロセス600を実行するシステムが選択できるさまざまなパラメータを持つ、ウェブサービスコールなどの適切に構成されたAPIコールの形態であってもよい。例えば、APIコールは、顧客鍵についての識別子を特定する値を有するパラメータを含むことができる。顧客鍵は、暗示的に決定されてもよいことに留意すべきである。例えば、特定の顧客からのリクエストによって、暗号化サービスは、顧客鍵を顧客に関連付け、どの顧客鍵を使用するかを決定することができる。一実施形態において、プロセス600は、リクエストが認証されたか否かを決定すること604を含む。
【0044】
リクエストが認証されたか否かの決定604は、任意の適切な方法で実行することができる。例えば、いくつかの実施形態において、リクエストは、プロセス600を実行するシステム、またはプロセス600を実行するシステムが通信する別のシステムによって確認可能な方式で電子的に(デジタル的に)署名することができる。図3を参照するように、リクエストは、顧客308と認証サービス316との間で共有される秘密鍵を使用して署名することができる。暗号化サービスは、プロセス600を実行する場合に、リクエスト及びリクエストに関する署名を認証サービス316に提供することができる。認証サービス316は、リクエスト、及び秘密鍵自身のコピーに基づいて参照署名を生成し、リクエストとともに受信されたデジタル署名がそれに一致するか否かを決定することができる。認証サービスによって生成された署名がそれと一致する場合には、認証サービス316は、リクエストが認証されたことの通信を暗号化サービス312に提供し、それによって、暗号化サービス312は、リクエストを実現すべきことを決定することができる。図4に関連しても同様のプロセスを実行することができる。
【0045】
図面には図示しないが、リクエストを処理すべきか否かについての追加の決定を為すことができることに留意すべきである。例えば、プロセス600は、そのポリシによってリクエストを実現できるか否かを決定することを含むことができる。リクエストは、リクエストを提示したユーザなどの一人以上の本人にまたは別な様に使用される鍵に関するポリシであってもよい。そのような追加のオペレーションも、後述するものを含む他のプロセスの一部として実行することができる。リクエストが認証されたことが決定された606の場合には、プロセス600は、データ鍵を生成すること606を含むことができる。データ鍵は、ストレージサービス内にデータを記憶するためのリクエストのデータなどのデータを暗号化するのに使用される暗号鍵であってもよい。データ鍵は、ランダムに、疑似ランダムに、または別な様に生成することができる。さらに、プロセス600は、データ鍵の生成606を図示するが、データ鍵は、事前に生成され、メモリからアクセスしてもよい。
【0046】
一実施形態において、プロセス600は、暗号化された顧客鍵にアクセスすること608を含む。図5を参照するように、例えば、暗号化サービス500の暗号化モジュール504は、ドメインキーに基づいて暗号化することができる暗号化された顧客鍵を求めるリクエストを顧客鍵ストレージ506に提示することができる。顧客鍵ストレージ506へのリクエストは、入手される顧客鍵の識別子を含むことができる。暗号化された顧客鍵がアクセスされる608時点で、プロセス600は、ドメインキーを使用して顧客鍵を解読すること610を含むことができる。次に、解読された顧客鍵を使用して、データ鍵を暗号化すること612ができる。次に、リクエストに応答してデータ鍵及び暗号化されたデータ鍵を提供する614、それによって、リクエスタは、詳細については後述するように、データの暗号化のためにデータ鍵を利用することができる。
【0047】
リクエストが認証されたか否かの決定604に戻ると、リクエストが認証されなかったことが決定された604場合、例えば、リクエストが認証されなかったことを認証サービスが示す場合には、プロセス600は、リクエストを拒否すること616を含むことができる。リクエストの拒否616は、さまざまな実施形態に従うさまざまな方式において実行することができる。リクエストの拒否は、例えば、リクエストを拒否したことの表示及び/または拒否の一つ以上の理由を有するリクエストに応答することによって実行することができる。リクエストの拒否は、リクエストに応答しないなどの単なる不活動も含むことができる。通常、リクエストを拒否できる任意の適切な方式を使用することができる。図6及び本明細書に記述するほぼすべてのプロセスが、特定の順序またはオペレーションを示すが、本開示の範囲は、そこで実行される順序またはオペレーションに必ずしも限定されないことに留意すべきである。例えば、図6では、暗号化された顧客鍵にアクセス608する前にデータ鍵を生成する606を示す。さらに、オペレーションは、異なる順序で実行されてもよいし、並行して実行されてもよい。同様に、顧客鍵を解読するためのドメインキーの使用601は、データ鍵の生成606、さもなければデータ鍵の入手前に実行することができる。他の変形例も、本開示の範囲内にあるとみなされる。
【0048】
図7は、データを解読するのに使用され、そして後のデータ取得のために暗号化形式において存続するデータ鍵などのデータ鍵を解読するのに使用できるプロセス700の例示的な実施例を示す。データ鍵は、図6に関連して前述したプロセス600の実行などの任意の適切な方法で暗号化することができる。さらに、プロセス700は、図6に関連して前述したプロセス600を実行したのと同じシステムまたは別のシステムなどの任意の適切なシステムによって実行することができる。一実施形態において、プロセス700は、データ鍵を解読するためのリクエストを受信すること702を含む。リクエストは、前述のような適切に構成されたAPIコールであってもよい。リクエストは、例えば、前述のようなサービスプロキシから発生することができる。例えば、電子署名を解析し、その署名が認証されたか否かの表示を提供する認証サービスと通信することによって、リクエストが認証されたか否かを決定することができる704。さらに、図6に関連して前述したように、リクエストを実現するか否かの決定において、ポリシの実施に関連するオペレーションなどの他のオペレーションを実行することができる。
【0049】
図面に図示した実施形態に戻ると、リクエストが認証されたことが決定された704の場合には、プロセス700は、前述のような暗号化された顧客鍵にアクセスすること706を含むことができる。次に、アクセスした顧客鍵を使用してデータ鍵を解読することができる710。次に、リクエストに応答してデータ鍵を提供することができる712。このように、リクエストを提示したコンピュータシステムは、解読したデータ鍵を使用して、データ鍵に基づいて暗号化されたデータの解読などの一つ以上の暗号化オペレーションを実行することができる。リクエストが認証されたか否かの決定704に戻ると、プロセス700は、リクエストが認証されなかったことが決定された704の場合、さもなければ、リクエストを実現すべきでないことの決定に基づき、リクエストを拒否すること714を含むことができる。
【0050】
図8は、データストレージサービス内にデータを記憶するのに使用できるプロセス800の例示的な実施例を示す。プロセス800は、前述のサービスプロキシなどの任意の適切なシステムによって実行することができる。一実施形態において、プロセス800は、データを記憶するためのリクエストを受信すること802を含む。リクエストは、リクエストを実現でき、かつリクエストを実現すべきか否かを決定できるパラメータに関する値を含む、ウェブサービスコールなどの適切に構成されたAPIコールの形態であってもよい。リクエストは、前述のような顧客コンピュータシステムなどの任意の適切なコンピュータシステムから発生させることができる。リクエストを受信する802と、リクエストが認証されたか否かの決定を為すことができる804。リクエストが認証されたか否かの決定804は、それぞれ、図6及び図7に関連して記述したプロセス600及び700に関連して前述したような任意の適切な方式において為すことができる。例えば、サービスプロキシは、認証サービスと通信して、リクエストが認証されたか否かの決定を認証サービスから受信することができる。前述のプロセスと同様に、リクエストの実現がポリシに従うか否かの確認などの追加のオペレーションも実行することができる。
【0051】
リクエストが認証されたこと及び/または概してリクエストを実現すべきことを決定した804の場合には、プロセス800は、ローカル暗号化サービスが提供するデータ鍵をリクエストすること806を含むことができる。ローカル暗号化サービスは、プロセス800を実行するシステムと同じゾーン内に存在する、前述のような暗号化サービスであってもよい。例えば、暗号化サービスは、図3に参照される暗号化サービス312であってもよい。暗号化サービスは、図4に参照される暗号化サービス412であってもよい。本明細書に記述するすべてのプロセスと同様に、変形例が、本開示の範囲内にあるものとしてみなされ、暗号化サービスが、必ずしもローカル暗号化サービスではなく、データが最終的に記憶されるデータストレージサービスが位置するゾーンとは異なるゾーン内に存在する暗号化サービスであってもよいことに留意すべきである。このように、暗号化サービスは、必ずしもローカルではなく、データが記憶されるゾーンとは異なるゾーン内に存在してもよい。さらに、データにアクセスするのに必要な鍵は、暗号化されたデータそれ自体とは異なるゾーン内に記憶される。
【0052】
図8に図示するように、ローカル暗号化サービスからデータ鍵を求めるリクエストに対する応答が提供され、暗号化されたデータ鍵を暗号化サービスから受信することができる808。データ鍵は、暗号化サービスによって暗示的に決定することができる、またはローカル暗号化サービスへのリクエストにおいて指定することができる顧客鍵によって暗号化することができる。次に、受信したデータ鍵を使用してデータを暗号化することができる810。データが暗号化される810の時点で、プロセス800は、暗号化されたデータ及び暗号化されたデータ鍵を包含するデータオブジェクトを生成すること812を含むことができる。812において生成されたデータオブジェクトを、別のゾーン内のバッキングストレージサービスに伝送することができる814。図3を参照するように、例えば、ストレージサービスプロキシ310は、データオブジェクトを、ストレージサービス314へのウェブサービスコールなどの適切に構成されたAPIコールを通じてストレージサービス314に伝送することができる。図4を参照するように、ストレージサービスプロキシ410は、適切に構成されたAPIコールを通じてストレージサービス414にデータオブジェクを伝送することができる。
【0053】
プロセス800を実行するシステムにデータ鍵がもはや必要でなくなると、プロセス800は、暗号化されていないデータ鍵を破壊することを含むことができる。暗号化されていないデータ鍵の破壊816は、任意の適切な方法で、かつ通常、データ鍵へのアクセスがプロセス800を実行するシステムによって喪失される方法で実行することができる。一実施例として、暗号化されていない形式のデータ鍵は、ランダムアクセスメモリ(RAM)などの揮発性メモリ、または中央処理装置(CPU)レジスタにおいてのみデータ鍵が記憶されるように、プロセス800を実行するシステムによって管理することができる。このように、揮発性メモリへの電力が遮断されると、記憶されている暗号化されていないデータ鍵へのアクセスが喪失される、または電力が全く遮断されない場合には、プロセス800を実行するシステムが、例えば、将来のリクエストが受信される追加の時間だけプロセス800を実行することによって動作し続けるときに、データ鍵が記憶されているメモリロケーションが最終的には上書きされる。別の実施例として、データ鍵は、0ビットのシーケンス、1ビットのシーケンス、ランダムビットのシーケンス、または極秘情報を含有しないビットのシーケンスであってもよい他のデータを含む揮発性メモリまたは不揮発性メモリにかかわらず、データ鍵が記憶されている任意のメモリロケーションをオーバーライドすることによって破壊することができる。通常、データ鍵へのアクセスを喪失する任意の方法を使用することができる。さらに、前述のように、暗号化されていないデータ鍵の破壊818は、プロセス800の実行と同期的に実行してもよく、かつ必ずしも図8に図示する順序のオペレーションでなくてもよく、または例えば、データ鍵を最終的に破壊するように動作する、もしくはデータ鍵を他のデータに上書きできるプロセスの一部において非同期的に実行してもよい。
【0054】
リクエストが認証されたか否かの決定804に戻ると、リクエストが認証されなかったこと、さもなければ、リクエストを実現すべきでないことが決定された804の場合には、プロセス800は、前述のようなリクエストを拒否すること818含むことができる。本明細書に論じるすべてのプロセスと同様に、変形例が、本開示の範囲内にあるものとしてみなされる。例えば、図8に図示するように、データ鍵を求めるリクエストが暗号化サービスに提示され、この暗号化サービスは、データ鍵を生成、さもなければ入手し、それに応じて、プレーンテキスト及び暗号文の形態におけるデータ鍵を提供する。代案として、プロセス800を実行するシステムは、データ鍵をそれ自体で生成または入手し、暗号化のためにデータ鍵を暗号化サービスに提供することができる。その結果、プロセス800を実行するシステムがデータ鍵へのアクセスを既に有し得るので、暗号化サービスは、暗号化されたデータ鍵を戻し、そしてデータ鍵は必ずしも戻さなくてもよい。ここでも前述のように、802において受信されたデータを記憶するためのリクエストは、前述のような顧客計算システムから受信したものとして記述される。さまざまな実施形態において、リクエストは、必ずしも顧客コンピュータシステムから発生しなくてもよく、顧客のためのサービスとして最終的に記憶されるデータにかかわらず、別のコンピュータシステムから発生してもよい。
【0055】
さらに、変形例の別の実施例として、データを記憶するためのリクエストは、外部の別のシステムから受信しなくてもよい。例えば、プロセス800の実行がデータの生成を含み、データの生成において、前述のように、暗号化され、データストレージサービスに伝送されるデータを得るオペレーションを実行できる。さらに、プロセス800は、図8に図示するように、暗号化されたデータ及び暗号化されたデータ鍵を包含するデータオブジェクトの生成812を含む。一実施例として、暗号化されたデータと暗号化されたデータ鍵とは、共に連結して、データオブジェクトを形成することができる。このように、暗号化されたデータ鍵と暗号化されたデータオブジェクトとは、後述するような後のアクセスのために共に存続する。しかしながら、さまざまな実施形態において、暗号化されたデータ鍵と暗号化されたデータとは、必ずしも共に存続しなくてもよいが、種々のストレージサービスにおけるデータストレージサービスの種々の論理データコンテナにおいて、または他の方式において存続することができる。例えば、暗号化されたデータ鍵は、ローカルに記憶することができ、一方で、暗号化されたデータは、前述の技術に従いストレージサービスに伝送される。保持されたメタデータは、暗号化されたデータ鍵と、鍵に基づいて暗号化されたデータとの間の関連付けを存続させることができる。他の変形例も、本開示の範囲内にあるとみなされる。
【0056】
図9は、データストレージサービスからデータを取得するのに実行できるプロセス900の例示的な実施例を図示する。このデータは、図8に関連して前述したプロセス800に従いデータストレージサービスによって記憶することができる。プロセス900は、図8に関連して前述したプロセス800を実行したシステム、またはデータストレージサービスが位置するゾーンとは異なるゾーン内の別のシステムなどの任意の適切なシステムによって実行することができる。図9に図示するように、プロセス900は、前述のような適切に構成されたAPIコールの形態であってもよい、データを取得するためのリクエストを受信すること902を含む。前述のように、リクエストが認証されたか否かの決定を為すことができる904、リクエストが認証されたことを決定した904の場合には、プロセス900は、バックエンドストレージサービスから暗号化されたデータ及び暗号化されたデータ鍵を入手すること906を含むことができる。例えば、図3を参照するように、ストレージサービスプロキシ310は、暗号化されたデータ内に暗号化されたデータ鍵を含むデータオブジェクトを取得するためのリクエストをストレージサービス314に提示することができる。ストレージサービス314は、そのリクエストに応答して、暗号化されたデータ及び暗号化されたデータ鍵を包含するデータオブジェクトを提供することができる。図4を参照するように、例えば、ストレージサービスプロキシ410は、暗号化されたデータ及び暗号化されたデータ鍵を包含するデータオブジェクトを求めるリクエストをストレージサービス414に提示し、ストレージサービス414は、そのリクエストに応答して、暗号化されたデータ及び暗号化されたデータ鍵を包含するデータオブジェクトを提供することができる。しかしながら、前述のように、暗号化されたデータ及び暗号化されたデータ鍵は、必ずしも共に存続しなくてもよく、プロセス900の実行は、さまざまな方式においてかつさまざまな実施形態に従い、暗号化されたデータを入手することを含み、そして暗号化されたデータ鍵を含むことができる。これは例えば、暗号化されたデータを記憶するシステムから暗号化されたデータを取得し、暗号化されたデータ鍵を記憶する別のシステムから暗号化されたデータ鍵を取得することを含む。
【0057】
暗号化されたデータ及び暗号化されたデータ鍵が入手される906の時点で、プロセス900は、前述のようなローカル暗号化サービス、またはデータストレージサービスが位置するゾーンとは異なるゾーン内に存在する暗号化サービスなどの任意の適切な暗号化サービスであってもよい暗号化サービスが提供するデータ鍵の解読をリクエストすること908を含むことができる。暗号化サービスが提供するデータ鍵の解読を求めるリクエスト908に応答し、解読したデータ鍵を、リクエストが提示された暗号化サービスから受信することができる910。次に、解読したデータ鍵を使用して暗号化されたデータを解読し、次に、データを取得するためのリクエストに応答して解読したデータを提供することができる914。リクエストが認証されたか否かの決定904に戻ると、リクエストが認証されなかったこと、さもなければ、リクエストを実現すべきでないことが決定された904場合、プロセス900は、リクエストを拒否すること916を含むことができる。さらに、図面には図示しないが、プロセス900は、前述のような暗号化されていないデータ鍵を破壊することを含むことができる。例えば、データを暗号化形式においてストレージサービスに記憶したままにし、それ故に、データ鍵への権限のないアクセスが問題となり得る場合には、暗号化されていないデータ鍵は、破壊することができる。
【0058】
前述のように、本明細書に記述するさまざまな技術を利用できるサービスのタイプは、さまざまな実施形態に従い異なってもよい。例えば、いくつかの実施例において、データベースサービスのサービスプロキシは、サービスプロキシが別のゾーン内のデータベースサービスのAPIプロキシとしてサービスする場合には、一つのゾーン内に位置することができる。図3を参照するように、例えば、ストレージサービスプロキシ310は、ストレージサービス314であってもよいデータベースサービスのサービスプロキシであってもよい。同様に、図4を参照するように、ストレージサービス414は、ストレージサービスプロキシ410がAPIプロキシとして作用するデータベースサービスであってもよい。前述のように、サービスプロキシからバッキングサービスに送信されるすべてではないが一部のデータは、暗号化することができる。それ故に、図10は、データベースサービスによって記憶できるデータの例示的な実施例を示す。特に、図10は、例えば、前述のようなサービスプロキシであってもよい仮想データベースサービスに記憶された、リレーショナルテーブル1002内において組織化されたデータの例示的な図を示す。図10に図示するように、データベーステーブル1002は、例えば、販売取引についてのデータであってもよいさまざまなデータからなる。ただし、本開示の範囲は、本明細書に言及する特定のタイプのデータに限定されない。この特定の実施例において、テーブル1002の各列は、異なるタイプの情報に対応する。例えば、示す第一の列は、ファーストネームに対応し、第二の列は、ラストネームに対応し、図示した第三の列は、取引金額に対応し、最後の列は、対応する取引が発生した日付に対応し得る。テーブル1002内の行は、例えば、取引をした人物、取引及び取引が発生した日付を特定することができる。省略符号に示すように、その上、購買したアイテムの識別子、購買したアイテム、支払方法(クレジットカードなど)、及び他のタイプのデータなどの他の情報も含むことができる。テーブル1002内のデータの一部は、極秘として考慮することができる。例えば、顧客の氏名であり得るファースト及びラストネームは、極秘データとして考慮し、さまざまなプライバシー法、規則、規制または一般的な優先事項に従わせることができる。取引金額及びそれが発生した日付などのデータの一部は、極秘として考慮しなくてもよい。
【0059】
それ故に、前述のさまざまな技術の実行は、テーブル1002内のデータをバッキングデータベースサービスに送信する前に、そのデータのすべてではないが一部を暗号化することを含むことができる。図10は、バッキングデータベースサービスにおいて同じデータがどのように組織化され得るかを図示するテーブル1004の例示的な実施例を示す。特に、仮想データベースサービスとバッキングデータベースサービスとの間を移行する矢印に示すように、テーブル1002内のデータは変換され、ファースト及びラストネームに対応する第一の二つの列がそれぞれ、場合によっては他の列が暗号化されたテーブル1004が得られる。しかしながら、金額に対応するテーブル内の値は、暗号化されていないままである。このように、詳細については後述するように、バッキングデータベースサービスは、例えば、暗号化されていないデータを使用してクエリを処理することによって、暗号化されていないデータに関する少なくともいくつかの機能性を提供することができる。リレーショナルデータベーステーブルのうちの暗号化された列は連続しているが、暗号化される列は、必ずしも連続していなくてもよい。さらに、図10は、リレーショナルデータベーステーブルの例示的な実施例を示すが、本開示の範囲は、リレーショナルデータベース、及びデータセットの関連組織に限定されず、他のタイプのデータベース及び概して、構造化された方法においてデータを記憶する任意のタイプのデータストレージサービスにも及ぶ。通常、クエリを処理できる任意のタイプのデータベースを、さまざまな実施形態に従い使用することができる。
【0060】
計算資源プロバイダのデータベースが、例えば、前述の技術に従い、暗号化されたデータのすべてではないが一部を記憶する場合には、データベースクエリの処理が種々のゾーンにわたって発生する場合がある。つまり、一部の処理が一つのゾーン内で発生し、他の処理が他のゾーン内で発生する場合がある。それ故に、図11は、データベースクエリを処理するのに使用できるプロセス1100の例示的な実施例を示す。プロセス1100は、前述のサービスプロキシなどの任意の適切なシステムによって実行することができる。例えば、サービスプロキシは、プロセス1100を実行して、別のゾーン内のバッキングサービスに記憶されている実際のデータにかかわらず、受信するクエリを処理することができる。一実施形態において、プロセス1100は、データベースに関するクエリを受信すること1102を含む。クエリは、適切に構成されたAPIコールにおいてエンコードされ、プロセス1100を実行するシステムにおいて受信することができる。次に、クエリを構文解析、さもなければ別の様に解析して極秘クエリ及び非極秘クエリを生成することができる1104。この極秘クエリ及び非極秘クエリの構成においては、非極秘クエリの結果としていくらかの中間データの修正を伴う、非極秘クエリその後の極秘クエリの順次実行が、より詳細については後述するように、クエリを実行するのと同じ結果をもたらす。
【0061】
クエリの構文解析は、任意の適切な方法で実行することができる。例えば、いくつかの実施形態において、データベーステーブルの列は、極秘データを含有する列であるか否かを示すようにタグが付けられる。図10を参照するように、例えば、図示する第一の二つの列に、極秘としてのタグを付け、他の列には、非極秘としてのタグを付けることができる。この極秘または非極秘としてのタグ付けは、タグの欠如によって暗示的にすることもできる。タグによって、ストレージプロキシは、データをバッキングサービスに伝送する前に、どのデータを暗号化するかを決定することができる。サービスプロキシは、例えば、そのAPIインターフェースを通じてデータを受信し、データが影響を及ぼすデータベース内の列を特定し、極秘としてのタグが付けられた列が存在する場合には、その列を決定し、特定した列内のデータをバッキングサービスに伝送する前に、そのデータを暗号化するように構成できる。クエリの構文解析は、極秘としてのタグが付けられた列の検索、または通常、極秘としてのタグが付けられたデータの検索を要求するクエリの一部を特定することによって実行することができる。同様に、クエリの構文解析は、非極秘としてのタグが付けられたデータの検索を要求するクエリを特定することによって実行することができる。図10の例示的な実施例に戻ると、例えば、クエリは、ラストネームに関する一つ以上の条件、並びに取引金額に関する一つ以上の条件を満たす、リレーショナルデータベース内のデータを特定するように構成することができる。前述のように、ラストネームの列には、極秘としてのタグを付け、一方で、取引金額の列に、非極秘としてのタグを付けることができる。このように、そのようなクエリの構文解析は、取引金額に関する一つ以上の条件を満たすデータを特定するためのサブクエリをクエリから抽出することによって実行することができる。特定されたデータの一部は、ラストネームに関する一つ以上の条件を満たさなくてもよい。このように、ラストネームに関する一つ以上の条件を満たすデータを特定するように構成されたサブクエリを、極秘クエリとして特定することができる。
【0062】
図11に戻ると、非極秘クエリは、例えば、バッキングデータベースサービスへの適切に構成されたAPIコールの形態において、バッキングデータベースサービスに転送することができる1106。バッキングデータベースサービスは、非極秘クエリを受信し、1102においてクエリを受信した顧客に代わって、バッキングデータベースサービスが保持するデータベースにおける非極秘クエリを処理することができる。次に、バッキングデータベースサービスは、予備応答を生成し、1104において生成された極秘クエリに一致しないデータを含み得る場合に、前述のように、過剰包摂であり得る生成した予備応答を提供することができる。それ故に、プロセス1100は、バッキングデータベースサービスから予備応答を受信すること1108を含む。予備応答は、例えば、バッキングデータベースサービスへのAPIコールに対する応答として受信することができる。
【0063】
予備応答をバッキングデータベースサービスから受信する1108時点で、プロセス1100は、暗号化されたデータ鍵を入手すること1110を含むことができる。暗号化されたデータ鍵の入手1110は、任意の適切な方法で実行することができる。例えば、暗号化されたデータ鍵は、予備応答に含まれてもよい。また、別の実施例として、暗号化されたデータ鍵は、プロセス1100を実行するシステムが位置するゾーンと同じゾーン内に存在してもよいし、異なるゾーン内に存在してもよい別のストレージサービスにおいてローカルに記憶されてもよい。暗号化されたデータ鍵が入手される1110の時点で、プロセス1100は、前述のような暗号化サービスが提供するデータ鍵の解読をリクエストすること1112を含むことができる。それ故に、解読したデータ鍵は、暗号化サービスから1114を受信することができ、データ鍵は、バッキングデータベースサービスから受信した予備的結果の暗号化された部分1116を解読するために1116を使用することができる。
【0064】
暗号化、それ故に解読を、さまざまな実施形態に従うさまざまな方式において実行できることに留意すべきである。例えば、暗号化された、データベーステーブル内の各入力は、別々に暗号化することができる。このように、予備的結果において戻されたデータは、予備的結果が暗号化されたすべてのデータを含むか否かにかかわらず、解読することができる。さらに、前述のように、単一のデータ鍵を使用して、予備的結果における暗号化されたすべてのデータを解読することができる。それ故に、使用される暗号文に応じて、暗号化された、データベース内の各入力を、異なる初期化ベクトル(ノンス)を使用して暗号化することができる。異なるデータ鍵を用いた各入力の暗号化、異なるデータ鍵を用いた各列の暗号化、及び概して、さまざまな方式における暗号化の実行などの多数の変形例が、本開示の範囲内にあるものとしてみなされる。
【0065】
図11に戻ると、データ鍵を使用して予備的結果の暗号化された部分を解読する1116の時点で、プロセス1100は、解読した予備的結果についての極秘クエリを実行してクエリ結果を入手することができる1118。次に、クエリ結果を、1102において受信したクエリに応答して提供することができる1120。このように、さまざまな技術的利点が達成される。例えば、前述のように、仮想データベースサービスとも呼ばれ得るサービスプロキシは、限られたインフラストラクチャを含むことができる。他方において、データベースサービスは、大量のデータを処理するために、遥かに大きなインフラストラクチャを含むことができる。仮想データベースサービスは、例えば、バッキングデータベースサービスが処理するデータ量を処理できるだけの仮想データサービスを可能にするインフラストラクチャに不足している場合がある。このように、バッキングデータベースサービスの膨大なインフラストラクチャを使用して、前述したさまざまな理由のためにデータの一部が暗号化された場合に、ゾーン内の非極秘クエリの初期の処理を実行することができる。仮想データベースサービスの大いに限られたインフラストラクチャを使用して、クエリの処理を完了することができる。このように、極秘とみなされたデータの存在にかかわらず、データベースサービスのインフラストラクチャを利用することができる。
【0066】
さらに、図11は、クエリがサービスプロキシにおいて受信され、一つがバッキングサービスにおいて実行され、もう一つがサービスプロキシにおいて実行される二つのクエリをサービスプロキシが生成する場合のプロセスを示すが、プロセス1100は、異なる方式において動作するように適応することもできる。例えば、いくつかの実施形態において、完全なクエリを、それ自体が二つのクエリを生成できるバッキングサービスに転送し、その少なくとも一つを予備的結果とともにサービスプロキシに送ることもできる。別の実施例として、バッキングサービスは、極秘としてのタグが付けられたデータのサブセットに伴う任意の条件を無視(または、満たすことが要求される条件などの特定の条件を無視)しつつ、完全なクエリを処理することができる。プロキシは、予備的結果についての全クエリも処理することもできる。他のタイプのデータベースに対する適応を含む他の変形例も使用することができる。
【0067】
前述のように、本開示のさまざまな実施形態は、多数のゾーン、多数のサービスプロキシ及び多数のバッキングゾーンを利用することができる。場合によっては、サービスプロキシは、種々のバッキングゾーンにデータを選択的に提供することができる。例えば、ストレージサービスは、種々のゾーンにおける異なる利点を有することができる。例えば、一つのゾーン内のデータストレージサービスは、別のゾーン内の同一または同様のデータストレージサービスよりも安価である場合がある。別の実施例として、一つのゾーン内のデータストレージサービスは、別のゾーン内の同一または同様のデータストレージサービスよりも待ち時間の点で優れている場合がある。別のゾーンに勝るあるゾーンの利点にかかわらず、前述のように、さまざまな懸案事項が、あるゾーンまたは別のゾーンに記憶されているデータの要件または優先事項について生じることがある。例えば、異なる管轄区域は、さまざまなタイプのデータについて異なる規制を有する場合がある。故に、いくつかの利点を達成し、及び/または通常、さまざまな規制に従うために、一部のデータをあるゾーンに記憶し、他のデータを、さまざまな要件及び/または優先事項に従うために別のゾーンに記憶することができる。
【0068】
それ故に、ストレージサービスプロキシ(または、別のサービス用のプロキシ)は、さまざまな要因に少なくともある程度基づいて、データを記憶する場所を能動的に決定することができる。例えば、一部の顧客は、アカウント構成を通じて、またはAPIコールにおけるパラメータとして、それらのデータを特定のゾーン内に記憶するようリクエストすることができる。別の実施例として、同じ顧客用の一部のタイプのデータを、あるゾーン内に記憶し、一方で、他のタイプのデータを、いろいろな規制要件の理由から、別のゾーン内に記憶することができる。なおも別の実施例として、顧客は、サービスプロキシが一つ以上のDLPポリシを利用し、一部のデータがあるゾーンに送信され、かつ他のデータが別のゾーンに送信されるように、計算資源サービスプロバイダの計算資源を構成することができる。それ故に、図12は、複数のゾーンからの選択を利用するさまざまな実施形態を実践することができる環境1200の例示的な実施例を示す。
【0069】
図12に図示するように、環境1200は、顧客構内1202、仮想ゾーン1204及び一つ以上のバッキングゾーン1206を含む。この特定の実施例において、図12は、nが正の整数であるn個のバッキングゾーンを図示する。顧客構内1202に関する仮想ゾーン1204は、図3と同様に図示するが、図4に示すような変形例も本開示の範囲内にあるものとみなされることに留意すべきである。図12に図示するように、顧客1208は、リクエストを提示し、ストレージサービスプロキシ1210または他のサービスプロキシ及び暗号化サービス1212からの応答を受信する。バッキングゾーン1206の各々は、前述のようなバッキングサービス及び認証サービスを含むことができるが、簡略化の目的のために、図12にはそのようなサービスは図示しない。一実施形態において、顧客1208は、ストレージサービスプロキシ1210にリクエストを提示し、次に、このストレージサービスプロキシ1210は、対応するリクエストを選択し、必要に応じて、それをバッキングゾーン1206の一つに提示することができる。DLPポリシ、顧客の優先事項、アカウント構成、APIコールパラメータなどに従い妥当性を決定することができる。
【0070】
図13は、さまざまな実施形態に従う、図12に図示するなどのさまざまなバッキングサービスを利用するのに使用できるプロセス1300の例示的な実施例を示す。図13に図示するように、プロセス1300は、顧客データを入手すること1302を含む。顧客データは、例えば、顧客が、計算資源サービスプロバイダを利用して、さまざまな一般人または通常、その顧客の他の顧客にサービスを提供する場合に、例えば、顧客のコンピュータシステムそれ自体または顧客に代わる他のコンピュータシステムから入手することができる。顧客データが入手される1302のときに、プロセス1300は、顧客データ用のバッキングゾーンを決定すること1304を含むことができる。バッキングゾーンの決定1304は、相違する実施形態に従うさまざまな方式において実行することができる。例えば、前述のように、顧客のアカウント構成は、どのバッキングゾーンが使用できるかを示すことができる。別の実施例として、データそれ自体の性質を使用して、どのバッキングゾーンを使用するかを決定することができる。例えば、データがスキーマに従い組織化された場合には、スキーマに従うデータの位置を使用して、どのバッキングゾーンを使用するかを決定することができる。なおも別の実施例として、顧客データのソース(ネットワークアドレス、ユーザID、行政上の管轄区域など)を使用してバッキングゾーンを決定することができる。通常、バッキングゾーンを決定できる任意の方式を使用することができる。
【0071】
顧客データ用のバッキングゾーンを決定する1304と、プロセス1300は、前述のようなローカル暗号化サービス、または通常、前述のような別の適切な暗号化サービスが提供するデータ鍵をリクエストすること1306を含むことができる。それ故に、データ鍵及び暗号化されたデータ鍵を、データ鍵を求めるリクエストが提示された暗号化サービスから受信することができる1308。次に、データ鍵を使用して顧客データを暗号化する1310、暗号化された顧客データ及び暗号化されたデータ鍵を含むデータオブジェクトを生成することができる1312。次に、データオブジェクトを、決定したバッキングゾーン内のバッキングストレージサービスに伝送することができる1314。次に、暗号化されていないデータ鍵を、前述のように破壊することができる1316。
【0072】
データをバッキングサービスに伝送するためのさまざまな前述のプロセスの変形例を含むプロセス1300の変形例も、本開示の範囲内にあるものとしてみなされることに留意すべきである。図14は、一実施形態に従う、データを選択的に暗号化し、データをバッキングサービスに提供するためのプロセス1400の例示的な実施例を示す。特に、プロセス1400は、参照により本明細書に組み入れられる米国特許第8,416,709号に記述されているようなさまざまなデータ損失防止技術を利用する。図14のプロセス1400は、前述のサービスプロキシなどの任意の適切なシステムによって実行することができる。トラフィックは、例えば、IPもしくは伝送制御プロトコル(TCP)パケットなどの一つ以上のデータパケット、3部構成のTCPハンドシェイクもしくはSSLハンドシェイクの一部などのハンドシェイクリクエスト、または他の適切なデータパケットを含むことができる。ネットワークトラフィックは、前述のような顧客または前述のような顧客に関連する別の事業体から受信することができる。いくつかの実施形態において、トラフィックは、プロセス1400を実行するシステムのアプリケーションプログラミングインターフェース(例えば、ウェブサービスインターフェース)を通じて受信される。ネットワークトラフィックは、一つ以上のDLPポリシ基準に関して解析することができる1404。DLPポリシ基準は、前述の米国特許第8,416,709号に論じられているものを含むことができる。例えば、IPまたはTCPパケット内のデータは、クレジットカード番号、社会保障番号、及び/または極秘とみなされ得る、さもなければ修正が所望され得る任意の他のタイプのデータなどの特定のデータタイプのデータを検査することができる。
【0073】
DLPの基準が満たされているか否かの決定を為すことができる1406。DLP基準が満たされていることを決定した1406の場合には、プロセス1400は、受信したネットワークトラフィックを暗号化する1408、ネットワークトラフィックをバッキングサービスに伝送すること1410を含むことができる。しかしながら、DLP基準が満たされていないことを決定した1406の場合には、次に、ネットワークトラフィックを、1410を暗号化せずにバッキングサービスに伝送してもよい。
【0074】
前述したように、DLP基準が満たされた場合にデータのすべてではないが一部を解読することを含むさまざまな変形例が、本開示の範囲内にあるものとしてみなされる。さらに、データの暗号化に追加してまたはその代わりに追加のアクションを取り込むことができる。実例のアクションは、これらに限定されないが、受信したネットワークトラフィックのスナップショット、すなわち、コピー、バッキングサービスなどのデータストレージサービスまたはパケットトレーシングを実行する別のデータストレージサービス内でのスナップショットの存続、受信したネットワークトラフィックの隔離の実行、ネットワークトラフィックの改善されたロギングの起動、及び/またはアクションの拒否を含む。通常、DLPの懸案事項に対処するように構成された任意のタイプのアクションを使用することができる。さらに、DLPまたは他のポリシ基準が満たされたときにとられるアクションは、顧客が構成することができる。通常、データは、参照により本明細書に組み入れられる、2012年6月7日に出願された「FLEXIBLY CONFIGURABLE DATA MODIFICATION SERVICES」と題された米国特許出願第13/491,403号に記述されているような技術を利用する顧客仕様書に従い操作することができる。
【0075】
特に、顧客は、例えば、パケットマングリング技術を使用する、規則を実施するために利用される分散型計算システムのさまざまな構成要素に応じて、顧客デバイスまたは他のデバイスからのさまざまなタイプのデータ、インバウンド及び/またはアウトバウンドを修正できる特定の規則を指定することができる。例えば、顧客は、サービスプロキシを通じた特定の外部デバイスタイプへのデータ、またはロケールが、それらを利用するのに必要な変更及びデータパターン(または、他のマーカ)の分散型計算システムによる決定に応じて、(例えば、法規制の順守及び/またはパフォーマンスの最適化のために)顧客提供の仕様書に適合することを指定することができる。その後、与えられた実施例では、実施は、顧客とバッキングサービスなどの分散型計算システムの構成要素に問い合わせる外部デバイスとの間のネットワークトラフィックのいくつかまたはすべての出力先変更を含むことができる。決定した方法における処理において、出力先変更されたデータを、元々の宛先に中継することができる。考慮されるように、同様のプロセスを、インバウンドネットワークトラフィックに利用することができる。
【0076】
別の実施例において、データ変更サービスは、サービスをリクエストする顧客によって制御されるインスタンスと、異なる顧客によって制御される別のインスタンスである、分散型計算システムの二つの仮想化されたインスタンスの間の、サービスプロキシを通じたデータ輸送を修正するのに有効となり得る。サービスプロキシにおいて実施される分散型計算システムの別個の仮想化されたインスタンスを、顧客がリクエストした規則を実施するために呼び出すことができ、またはいくつかの実施形態において、修正を所望されるデータからの(または、そのデータへの)同じインスタンスが、例えば、隔離位置における実際の修正または「サンドボックス」を実行することができる。サービスをリクエストする顧客によって制御される任意のデバイスもしくは構成要素に、またはそこから(その性質にかかわらず)顧客によって制御されないデバイスに輸送されるデータは物理的、仮想、集合、別な方式であるにかかわらず、サービスによってパケットマングリングに従うことができることが考えられる。サービスは、いくつかの実施形態において、顧客または外部デバイスタイプ、地理的な位置などを含む多くの基準に基づいて細かい粒度で制御可能なものであってもよい。
【0077】
そのようなデータ変更サービスの実施例の実施は、所与のデータ取引タイプに伴う、いくつかまたはすべての構成要素に適合する一つ以上のポリシの生成を含むことができる。ポリシは、いくつかの実施形態において、顧客が規定した規則の受信時に分散型計算システムによって生成され、データタイプ、接続されたデバイスタイプ、顧客特性、ネットワークトポロジ、または有効なポリシの生成に関する任意の他の特性を考慮に入れることができる。そのようなポリシは、関連するデバイスに分配されると、すべての制御されたデバイス(または、その所望のサブセット)が、関連する顧客が規定した規則を統合された予測可能な方法において実施するように作用することを保証することができる。いろいろなレベルの抽出及び/またはアクセスにおいて非常に多い数のデバイスを顧客が制御する実施形態では、そのようなポリシは、例えば、極めて重要なまたは厳しい規則が、すべての影響を受けたデバイスにわたって効力を及ぼすことも保証することができる。
【0078】
さらに、プロセス1400に関連する追加のオペレーションを実行することができる。例えば、ネットワークトラフィックの解析1404は、一つ以上の他のオペレーションの実行に情報を与えることができる。いくつかの実施形態において、例えば、暗号鍵は、解析に少なくともある程度基づいて決定することができる。一部のタイプのデータは、例えば、(例えば、一つ以上の規制及び/または優先事項に従い)他のタイプのデータよりも強固な暗号化を要求することができる。解析によってデータのタイプがわかった場合には、そのデータを、解析によって決定することができる別のタイプのデータよりも小さい鍵を使用して暗号化することができる。第一のタイプのデータは、例えば、128ビットの鍵を使用する暗号化を要求し、一方で、別のタイプのデータは、256ビットの鍵を使用する暗号化を要求することができる。鍵は、それ故に、解析に基づいて決定(例えば、データストレージから生成または入手)することができる。
【0079】
本開示の実施形態は、以下の条項に照らして記述することができる。
〔1〕
複数のデータストレージデバイス、及び第一のウェブサービスインターフェースに伝送されるウェブサービスリクエストを受信するように構成された第一のウェブサービスインターフェースを備えており、複数のデータストレージデバイスを使用して、第一のウェブサービスインターフェースに伝送されるウェブサービスリクエストを処理するように構成された第一のデータストレージサービスと、
第二のウェブサービスインターフェースを備えている第二のデータストレージサービスと、を備えており、第二のデータストレージサービスが、第一のデータストレージサービスのプロキシとして、少なくとも、
第二のウェブサービスインターフェースにおいて、データを記憶するための、リクエスタからのリクエストを受信し、
第一のデータストレージサービスにはアクセスできない暗号鍵を使用してデータを暗号化し、
暗号化されたデータを、永続記憶のために、リクエスタに代わって第一のデータストレージサービスに伝送し、
第一のデータストレージサービスによる暗号鍵へのアクセスを防止しつつ、暗号鍵へのアクセスを維持するよう動作するように構成された、システム。
〔2〕
第一のデータストレージサービスが、一つ以上の施設のうちの第一のセットにおける計算資源を含んで実施され、
第二のデータストレージサービスが、一つ以上の施設のうちの第一のセットとは互いに素の一つ以上の施設のうちの第二のセットにおける計算資源を含んで実施される、条項1に記載のシステム。
〔3〕
第一のウェブサービスインターフェース及び第二のウェブサービスインターフェースの両方が、各々、パブリック通信ネットワークにおける公的にアドレス可能なインターフェースである、条項1または2に記載のシステム。
〔4〕
第二のデータストレージサービスが、データを暗号化すべきことをリクエスタが指定することを必要とせずに、データを暗号化するように構成された、先行する条項のいずれか1項に記載のシステム。
〔5〕
第二のデータストレージサービスが、さらに、第二のウェブサービスインターフェースにおいて、データを取得するためのリクエストを受信し、
第一のデータストレージサービスから暗号化されたデータを入手し、
鍵を使用して暗号化されたデータを解読し、
解読したデータを提供するように構成された、先行する条項のいずれか1項に記載のシステム。
〔6〕
第一のデータストレージサービス及び第二のデータストレージサービスが、異なる法律上の管轄区域内において実施される、先行する条項のいずれか1項に記載のシステム。
〔7〕
第一のデータストレージサービスが、規制の第一のセットに従い動作するように構成されており、第二のデータストレージサービスが、規制の第一のセットとは異なる規制の第二のセットに従い動作するように構成された、先行する条項のいずれか1項に記載のシステム。
〔8〕
一つ以上のプロセッサと、
コンピュータ実行可能命令を含むメモリと、を備えており、コンピュータ実行可能命令が、一つ以上のプロセッサによって実行されたときに、システムに、
ネットワークを通じてリクエストを提示可能なアプリケーションプログラミングインターフェースを動作させ、
アプリケーションプログラミングインターフェースに提示される少なくとも複数のリクエストのうちの各々の第一のリクエストについて、第一のリクエストを処理し、少なくとも、
鍵を使用して、第一のリクエストの処理に伴う、データについての一つ以上の暗号化オペレーションを実行させ、
鍵へのアクセスを喪失し、第一のリクエストを単独で処理できるように構成されているサービスに、暗号化形式におけるデータについての一つ以上のオペレーションを実行させる第二のリクエストを、ネットワークを通じて伝送させる、システム。
〔9〕
システムが、サービスプロバイダによって提供されたサービスタイプの第一のインスタンスの一部として動作し、
サービスが、サービスプロバイダによって提供されたサービスタイプの第二のインスタンスの一部として動作する、条項8に記載のシステム。
〔10〕
アプリケーションプログラミングインターフェースがウェブサービスインターフェースである、条項8または9に記載のシステム。
〔11〕
複数のリクエストのうちの少なくともいくつかが異なる事業体によって伝送され、各々の異なる事業体がサービスのアカウントに対応する、条項8〜10のいずれか1項に記載のシステム。
〔12〕
実行可能命令が、さらに、システムに、リクエストを処理するときに一つ以上の暗号化オペレーションを実行するか否かを選択的に決定させ、
複数のリクエストが、システムによって処理されたリクエストのセットのうちのサブセットであり、サブセットが、システムが一つ以上の暗号化オペレーションを実行することを選択的に決定したリクエストからなる、条項8〜11のいずれか1項に記載のシステム。
〔13〕
実行可能命令が、さらに、システムに、複数のサービスから、第一のリクエストを処理するのに使用できるサービスを選択させる、条項8〜12のいずれか1項に記載のシステム。
〔14〕
サービスへの第二のリクエストが、サービスに、暗号化されていないデータについての一つ以上のオペレーションを実行させ、システムに、一つ以上のオペレーションの実行結果、及び暗号化形式におけるデータを提供させ、
鍵を使用して、暗号化形式におけるデータの解読を含む一つ以上の暗号化オペレーションを実行させ、
実行可能命令が、さらに、システムに、暗号化されていないデータ及び解読したデータを含むデータの集合についての一つ以上のオペレーションを実行させる、条項8〜13のいずれか1項に記載のシステム。
〔15〕
サービスが、システムを動作する第二の組織的な事業体とは異なる第一の組織的な事業体によって動作する、条項8〜14のいずれか1項に記載のシステム。
〔16〕
実行可能命令を含んで構成された一つ以上のコンピュータシステムの制御下で、
一つ以上のコンピュータシステムのネットワークアドレスにおけるリクエスタから、一つ以上のオペレーションを実行するための、アプリケーションプログラミングインターフェースリクエストを受信することと、少なくとも、
ネットワークを通じて、一つ以上のオペレーションを単独で実行できるように構成されたサービスにリクエストを伝送することと、ここで、リクエストが、サービスに、暗号化されたデータについての一つ以上のサービスオペレーションを実行させるように構成され、サービスにはアクセスできない鍵に基づいて暗号化されたデータが暗号化され、
鍵を使用して、暗号化されたデータに関連する一つ以上の暗号化オペレーションを実行することと、によって、アプリケーションプログラミングインターフェースリクエストを処理することと、を含む、コンピュータ実施方法。
〔17〕
一つ以上の暗号化オペレーションが、暗号化されたデータを入手するためのデータの暗号化を含み、
一つ以上のサービスオペレーションが、暗号化されたデータの永続記憶を含む、条項16に記載のコンピュータ実施方法。
〔18〕
ネットワークアドレスがパブリックインターネットプロトコルアドレスである、条項16または17に記載のコンピュータ実施方法。
〔19〕
複数のサービスから、一つ以上のオペレーションを各々が単独で実行できるサービスを選択することをさらに含む、条項16〜18のいずれか1項に記載のコンピュータ実施方法。
〔20〕
一つ以上の暗号化オペレーションの実行が、一つ以上のコンピュータシステム及びサービスの両方にはアクセスできない暗号化情報を使用して一つ以上の他の暗号化オペレーションを暗号化サービスに実行させるためのリクエストを、ネットワークを通じて暗号化サービスに伝送することを含む、条項16〜19のいずれか1項に記載のコンピュータ実施方法。
〔21〕
ネットワークアドレスが、ドメインネームサービスからネットワークアドレスを入手するために使用可能なストリングに関連付けられ、このストリングが、任意のドメインネームサービスによるサービスのためのネットワークアドレスに関連付けられていない、条項16〜20のいずれか1項に記載のコンピュータ実施方法。
〔22〕
コンピュータシステムの一つ以上のプロセッサによって実行されたときに、コンピュータシステムに、
ネットワークアドレスにおいてアクセス可能なアプリケーションプログラミングインターフェースを提供させ、
アプリケーションプログラミングインターフェースにおいて、データのセットについての一つ以上のオペレーションを実行するための、アプリケーションプログラミングインターフェースリクエストを受信させ、少なくとも部分的に、
このデータのセットのうちの少なくともサブセットを、リモートサービスにはアクセスできないように保持された鍵に基づいて暗号化し、
このデータのセットのうちのサブセットにおいて、暗号化形式のみのデータのセットのうちのサブセットへのアクセスを有するリモートサービスを利用して、このデータのセットうちの少なくともサブセットについての一つ以上のオペレーションを実行することによって、受信したリクエストを実現させる、そこに集合的に記憶されたコンピュータ実行可能命令を有する一つ以上のコンピュータ可読記憶媒体。
〔23〕
ネットワークアドレスがパブリックインターネットプロトコルアドレスであり、
リモートサービスの利用が、リモートサービスのパブリックインターネットプロトコルアドレスにアドレスされたリモートサービスにリクエストを伝送することを含む、条項22に記載の一つ以上のコンピュータ可読記憶媒体。
〔24〕
アプリケーションプログラミングインターフェースリクエストが、リクエストされたオペレーションを実行するための、リクエスタからのリクエストであり、
リモートサービスが、リクエスタに関するリクエストされたオペレーションを単独で実行できる、条項22または23に記載の一つ以上のコンピュータ可読記憶媒体。
〔25〕
コンピュータ実行可能命令が、さらに、コンピュータシステムに、暗号化形式におけるデータのサブセットへのリモートサービスによるアクセスを制限するか否かを決定するために、アプリケーションプログラミングインターフェースリクエストを解析させ、
リモートサービスが、暗号化形式におけるデータのサブセットへのリモートサービスによるアクセスを制限するかどうかの決定の結果として、暗号化形式におけるデータのサブセットのみへのアクセスを有する、条項22〜24のいずれか1項に記載のコンピュータ可読記憶媒体。
〔26〕
サブセットへのリモートサービスによるアクセスを制限するかどうかの決定の結果として、命令が、さらに、コンピュータシステムに、解析に少なくともある程度基づいて、暗号化鍵を決定させ、
リモートサービスによるアクセスの制限が、決定された暗号化鍵を使用してサブセットの少なくとも一部を暗号化することを含む、条項25に記載の一つ以上のコンピュータ可読記憶媒体。
〔27〕
アプリケーションプログラミングインターフェースリクエストが、リクエスタから提供され、
リモートサービスを含む複数のサービスが、アプリケーションプログラミングインターフェースリクエストを実現するために、コンピュータシステムによって利用することができ、
コンピュータ実行可能命令が、さらに、コンピュータシステムに、複数のサービスから、リクエスタに特有の構成設定に少なくともある程度基づいて、リモートサービスを選択させる、条項22〜26に記載の一つ以上のコンピュータ可読記憶媒体。
〔28〕
コンピュータ実行可能命令が、さらに、コンピュータシステムに、鍵を使用してデータのセットのうちのサブセットを暗号化させ、
リモートサービスを利用した一つ以上のオペレーションの実行が、データのセットを記憶するためのストレージリクエストをリモートサービスに提示することを含む、条項22〜27に記載の一つ以上のコンピュータ可読記憶媒体。
〔29〕
複数のデータストレージデバイス、及び第一のウェブサービスインターフェースに伝送されるウェブサービスリクエストを受信するように構成された第一のウェブサービスインターフェースを備えており、複数のデータストレージデバイスを使用して、第一のウェブサービスインターフェースに伝送されるウェブサービスリクエストを処理するように構成された第一のデータストレージサービスと、
第二のウェブサービスインターフェースを備えている第二のデータストレージサービスと、を備えており、第二のデータストレージサービスが、第一のデータストレージサービスのプロキシとして、少なくとも、
データを記憶するための、リクエスタからの、第二のウェブサービスインターフェースに提示されたリクエストに関連するデータを受信し、
受信したデータを解析して、受信したデータが一つ以上のデータ損失防止ポリシの一つ以上の基準を満たしているか否かの決定を生成し、
生成した決定に従い受信したリクエストを処理するよう動作するように構成されており、
受信したデータが一つ以上のデータ損失防止ポリシの一つ以上の基準を満たしていることを決定が示した場合の、受信したリクエストの処理が、
第一のデータストレージサービスにはアクセスできないように保持されている鍵を使用して、受信したデータを暗号化することと、
第二のリクエストを第一のウェブサービスインターフェースに提示することによって、暗号化された受信したデータを第二のデータストレージサービスに伝送することと、を含む、システム。
〔30〕
一つ以上のデータ損失防止ポリシの一つ以上の基準を受信したデータが満たしていないことを決定が示した場合の、受信したリクエストの処理が、受信したデータを暗号化されていない形式において第一のデータストレージサービスから取得できるように、データを第一のデータストレージサービスに永続的に記憶させる第三のリクエストを、ウェブサービスインターフェースに提示することを含む、条項29に記載のシステム。
〔31〕
一つ以上のデータ損失防止ポリシが、第二のウェブサービスインターフェースを通じて構成可能である、条項29または30に記載のシステム。
〔32〕
第一のウェブサービスインターフェースが、少なくとも一つのパブリックインターネットプロトコルアドレスを有する、条項29〜31のいずれか1項に記載のシステム。
〔33〕
第一のデータストレージサービスが位置している別の法律上の管轄区域の外部の行政上の管轄区域内に鍵を保持するように構成された暗号化サービスをさらに備えた、条項29〜32のいずれか1項に記載のシステム。
〔34〕
第二のストレージサービスが、さらに、第二のウェブサービスインターフェースにおいて、データを取得するための第三のリクエストを受信し、少なくとも、
第四のリクエストを第一のウェブサービスインターフェースに提示することによって、第一のデータストレージサービスから暗号化されたデータを入手し、
鍵を使用して入手した暗号化されたデータを解読し、
解読された入手した暗号化されたデータを提供することによって、第三のリクエストを処理するように構成された、条項29〜33のいずれか1項に記載のシステム。
〔35〕
一つ以上のプロセッサと、
コンピュータ実行可能命令を含むメモリと、を備えており、コンピュータ実行可能命令が、一つ以上のプロセッサによって実行されたときに、システムに、
ネットワークアドレスにおいてアクセス可能なアプリケーションプログラミングインターフェースを提供させ、
アプリケーションプログラミングインターフェースに提示された一つ以上のオペレーションを実行するためのリクエストに関連するデータを受信させ、
データを解析して、一つ以上のデータポリシの一つ以上の基準を満たすデータのサブセットを特定させ、
一つ以上のデータポリシに従いデータのサブセットを修正させ、
一つ以上のオペレーションを実行するためのリクエストを単独で処理できるリモートサービスに、修正したデータのサブセットを伝送させる、システム。
〔36〕
命令が、さらに、システムに、
一つ以上の基準を満たしていることに対応する一つ以上の通知を提供すること、または
特定したサブセットについての改善されたロギングを実行することの少なくとも一つを実行させる、条項35に記載のシステム。
〔37〕
データのサブセットの修正が、データのサブセットを暗号化することを含む、条項35または36に記載のシステム。
〔38〕
コンピュータ実行可能命令が、さらに、システムに、
アプリケーションプログラミングインターフェースを通じて、データを修正するためのユーザ定義の規則を受信させ、
データの修正がユーザ定義の規則に従い実行される、条項35〜37のいずれか1項に記載のシステム。
〔39〕
データの解析が、データにおける、極秘として指定されたデータタイプの一つ以上のインスタンスを検出することを含み、
データのサブセットが、極秘として指定されたデータタイプの検出された一つ以上のインスタンスを含む、条項35〜38のいずれか1項に記載のシステム。
〔40〕
コンピュータ実行可能命令が、さらに、コンピュータシステムに、受信したデータの第二のサブセットを、この第二のサブセットを修正せずにリモートサービスに伝送させる、条項35〜39のいずれか1項に記載のシステム。
〔41〕
コンピュータ実行可能命令が、さらに、コンピュータシステムに、
その実現がデータのサブセットの入手を含む第二のリクエストを受信させ、
リモートサービスから修正したサブセットを取得させ、
修正したサブセットを逆に修正してサブセットを再び生成させ、
再び生成されたサブセットを使用して第二のリクエストを実現させる、条項35〜40のいずれか1項に記載のシステム。
〔42〕
実行可能命令を含んで構成された一つ以上のコンピュータシステムの制御下で、
リモートサービスへのアプリケーションプログラミングインターフェースプロキシにおいて、その実現がリモートサービスの利用を伴う、データを処理するためのリクエストを受信することと、
データを解析して、データが一つ以上のデータポリシに関与しているか否かの決定を生成することと、
生成した決定に従いデータを処理することと、を含み、データの処理が、リモートサービスを利用する前に、一つ以上のデータポリシのうちの一つ以上の関与するデータポリシに従いデータを修正することを含む、コンピュータ実施方法。
〔43〕
データの修正がデータを暗号化することを含む、条項42に記載のコンピュータ実施方法。
〔44〕
リクエストが、アプリケーションプログラミングインターフェースプロキシのプライベートインターネットプロトコルアドレスにおいて受信される、条項42または43に記載のコンピュータ実施方法。
〔45〕
データを処理するためのリクエストが、データを記憶するためのリクエストである、条項42〜44のいずれか1項に記載のコンピュータ実施方法。
〔46〕
アプリケーションプログラミングインターフェースプロキシにおいて、一つ以上のデータポリシに関する一つ以上のユーザ定義の基準を受信することをさらに含み、
決定の生成がユーザ定義の基準に少なくともある程度基づく、条項42〜45のいずれか1項に記載のコンピュータ実施方法。
〔47〕
アプリケーションプログラミングインターフェースにおいて、その実現がリモートサービスの利用を伴う、第二のデータを処理するための第二のリクエストを受信することと、
一つ以上のデータポリシの一つ以上の基準を第二のデータが満たしていることの結果として、第二のデータがリモートサービスに伝送されることを防止することと、をさらに含む、条項42〜46のいずれか1項に記載のコンピュータ実施方法。
〔48〕
システムの一つ以上のプロセッサによって実行されたときに、システムに、
リモートサービスへのアプリケーションプログラミングインターフェースプロキシを提供させ、
このリモートサービスへの提供されたアプリケーションプログラミングインターフェースプロキシを通じて受信されたデータに一つ以上のデータ損失防止ポリシを実施させ、この実施が、少なくとも、
一つ以上のデータ損失防止ポリシの一つ以上のデータ損失防止基準を満たす受信したデータのサブセットを特定させることと、
一つ以上のデータ損失防止基準に従い、特定したサブセットについての一つ以上のアクションを実行させることと、を含み、一つ以上のアクションが、特定したサブセットにおけるデータを修正すること、及び修正したデータをリモートサービスに伝送することを含む、そこに集合的に記憶された実行可能命令を有する一つ以上のコンピュータ可読記憶媒体。
〔49〕
システムが計算資源サービスプロバイダによって動作し、
アプリケーションプログラミングインターフェースプロキシが、一つ以上のパブリックネットワークアドレスにおいて計算資源サービスプロバイダの複数の顧客に利用可能である、条項48に記載の一つ以上のコンピュータ可読記憶媒体。
〔50〕
アプリケーションプログラミングインターフェースプロキシとリモートサービスとが、別個の施設内で実施される、条項48または49に記載の一つ以上のコンピュータ可読記憶媒体。
〔51〕
一つ以上のデータ損失防止ポリシが、アプリケーションプログラミングインターフェースプロキシを通じて、プログラム的に構成可能である、条項48〜50のいずれか1項に記載の一つ以上のコンピュータ可読記憶媒体。
〔52〕
アプリケーションプログラミングインターフェースプロキシとリモートサービスとが、種々のユーアールエルによってアクセス可能である、条項48〜51のいずれか1項に記載の一つ以上のコンピュータ可読記憶媒体。
〔53〕
データの修正が、リモートサービスに伝送する前にデータを暗号化することを含む、条項48〜52のいずれか1項に記載の一つ以上のコンピュータ可読記憶媒体。
【0080】
図15は、さまざまな実施形態に従う、態様を実施するための実施例の環境1500の態様を図示する。認識されるように、説明のためにウェブベースの環境を使用するが、必要に応じて、さまざまな実施形態を実施するための種々の環境を使用することができる。環境は電子クライアントデバイス1502を含み、これは、適切なネットワーク1504を通じてリクエスト、メッセージまたは情報を送信及び受信し、かつ情報をデバイスのユーザに戻すように動作可能な任意の適切なデバイスを含むことができる。そのようなクライアントデバイスの実施例は、パーソナルコンピュータ、携帯電話、ハンドヘルドメッセージングデバイス、ラップトップコンピュータ、タブレットコンピュータ、セットトップボックス、パーソナルデータアシスタント、組込型コンピュータシステム、電子ブックリーダなどを含む。ネットワークは、イントラネット、インターネット、セルラーネットワーク、ローカルエリアネットワークを含む任意の適切なネットワーク、または任意の他のそのようなネットワークもしくはそれらの組み合わせを含むことができる。そのようなシステムに使用される構成要素は、ネットワークのタイプ及び/または選択された環境に少なくともある程度依存し得る。そのようなネットワークを通じて通信するためのプロトコル及び構成要素は、よく知られており、本明細書に詳細には論じない。ネットワークを通じた通信は、有線または無線接続及びそれらの組み合わせによって有効にすることができる。この実施例では、リクエストを受信し、それに応答してコンテンツを供給するためのウェブサーバ1506を環境が含む場合には、ネットワークはインターネットを含む。ただし、当業者に明らかであるように、他のネットワークにおいて、同様の目的を果たす代替的なデバイスを使用することができる。
【0081】
例示的な環境は、少なくとも一つのアプリケーションサーバ1508及びデータストア1510を含む。いくつかのアプリケーションサーバ、層または他の要素が存在してもよく、プロセスまたは構成要素は、つなげられるかまたは別な様に構成されてもよく、適切なデータストアからデータを入手するなどのタスクを実行するために相互作用できることが理解すべきである。本明細書に使用されるようなサーバは、ハードウェアデバイスまたは仮想コンピュータシステムなどのさまざまな方式において実施することができる。一部の文脈において、サーバは、コンピュータシステムにおいて実行されるプログラミングモジュールを意味することがある。本明細書に使用される「データストア」という用語は、データを記憶、それにアクセス及びそれを取得することができる任意のデバイスまたはデバイスの組み合わせを意味し、任意の標準の分散されたまたはクラスタ化された環境において、任意の組み合わせ及び数のデータサーバ、データベース、データストレージデバイス及びデータストレージ媒体、を含むことができる。アプリケーションサーバは、クライアントデバイスの一つ以上のアプリケーションの態様を実行するために、必要に応じて、アプリケーションのデータアクセス及びビジネスロジックの一部(大部分ですら)を処理する、データストアを一体化させるための任意の適切なハードウェア及びソフトウェアを含んでもよい。アプリケーションサーバは、データストアと協働してアクセス制御サービスを提供し、ユーザに転送されるテキスト、グラフィックス、音声及び/またはビデオなどのコンテンツを生成することができ、そのコンテンツを、本実施例では、ハイパーテキストマークアップ言語(「HTML」)、拡張マークアップ言語(「XML」)、または別の適切な構造化言語の形態で、ウェブサーバによってユーザに供給してもよい。すべてのリクエスト及び応答の処理、並びにクライアントデバイス1502とアプリケーションサーバ1508との間のコンテンツの送達を、ウェブサーバによって処理することができる。本明細書の他の箇所に論じられるように、本明細書に論じられる構造化されたコードを、任意の適切なデバイスまたはホストマシンにおいて実行することができるので、ウェブ及びアプリケーションサーバは必須ではなく、単に実施例の構成要素にすぎないことを理解すべきである。さらに、単一のデバイスによって実行されるような本明細書に記述するオペレーションは、別途記載がない限り、分散システムを形成し得る複数のデバイスによって集合的に実行することができる。
【0082】
データストア1510は、本開示の特定の態様に関するデータを記憶するための、いくつかの別々のデータテーブル、データベースまたは他のデータストレージ機構及び媒体を含むことができる。例えば、図示するデータストアは、製作データ1512及びユーザ情報1516を記憶するための機構を含み、これらは、製作側でコンテンツを供給するために使用することができる。データストアは、報告及び解析または他のそのような目的のために使用することができる、ログデータ1514を記憶するための機構も含むようにも示される。ページイメージ情報及びアクセス権情報などのためにデータストアに記憶される必要があり得る多くの他の態様が存在し、必要に応じて、それを上記の機構のうちのいずれかに、またはデータストア1510内の追加の機構に記憶できることを理解すべきである。データストア1510は、それに関連するロジックを介して、アプリケーションサーバ1508から命令を受信し、かつそれに応答してデータを入手、更新、または別な様に処理するように動作可能である。一実施例において、ユーザは、ユーザによって動作するデバイスを通じて、ある特定のタイプのアイテムについての検索リクエストを提示する場合がある。この場合、データストアは、ユーザの身元を確認するためにユーザ情報にアクセスしてもよく、そのタイプのアイテムについての情報を入手するためにカタログ詳細情報にアクセスすることができる。その後、ユーザがユーザデバイス1502のブラウザを介して見ることができるウェブページ上の結果リストにおいてなどの情報をユーザに戻すことができる。対象とする特定のアイテムについての情報を、ブラウザの専用ページまたはウィンドウで見ることができる。しかしながら、本開示の実施形態が、必ずしもウェブページのコンテキストに限定されず、一般にリクエストを処理するのに適用可能なより一般的なものであってもよいことに留意すべきである。このリクエストは、必ずしもコンテンツについてのリクエストでなくてもよい。
【0083】
各サーバは、典型的には、そのサーバの一般管理及び動作についての実行可能なプログラム命令を提供するオペレーティングシステムを含み、かつ典型的には、サーバのプロセッサによって実行されるときに、サーバがその意図された機能を実行することを可能にする命令を記憶するコンピュータ可読記憶媒体(例えば、ハードディスク、ランダムアクセスメモリ、読み取り専用メモリなど)を含む。サーバのオペレーティングシステム及び一般的な機能性についての適切な実施が公知であるかまたは市販されており、特に本明細書における本開示を考慮した当業者によって容易に実施される。
【0084】
一実施形態における環境は、一つ以上のコンピュータネットワークまたは直接接続を使用した通信リンクを介して相互接続されるいくつかのコンピュータシステム及び構成要素を利用する分散型コンピューティング環境である。しかしながら、そのようなシステムが、図15に図示される構成要素よりも少ないまたは多い数の構成要素を有するシステムにおいても同じ様に良好に動作できることが当業者に認識される。故に、図15のシステム1500の描写は、本質的に例示的であり、かつ本開示の範囲を限定しないとみなされるべきである。
【0085】
さまざまな実施形態は、さらに、場合によっては、任意のいくつかのアプリケーションを動作させるために使用することができる一つ以上のユーザコンピュータ、計算デバイスまたは処理デバイスを含むことができる多種多様な動作環境において実施することができる。ユーザまたはクライアントデバイスは、標準のオペレーティングシステムを稼動しているデスクトップ、ラップトップまたはタブレットコンピュータなどのいくつかの汎用パーソナルコンピュータ、並びにモバイルソフトウェアを稼動し、多くのネットワーク及びメッセージングプロトコルをサポートできるセルラー、ワイヤレス及びハンドヘルドデバイスのうちのいずれかを含むことができる。そのようなシステムはまた、様々な市販されているオペレーティングシステム並びに開発及びデータベース管理などの目的の他の公知のアプリケーションのうちのいずれかを稼動する多くのワークステーションを含むことができる。これらのデバイスはまた、ネットワークを経由して通信できるダミー端末、シンクライアント、ゲームシステム及び他のデバイスなどの他の電子デバイスを含むことができる。
【0086】
本開示のさまざまな実施形態は、伝送制御プロトコル/インターネットプロトコル(「TCP/IP」)、オープンシステムインターコネクション(「OSI」)モデルのさまざまな層において動作するプロトコル、ファイル転送プロトコル(「FTP」)、ユニバーサルプラグアンドプレイ(「UpnP」)、ネットワークファイルシステム(「NFS」)、共通インターネットファイルシステム(「CIFS」)、及びアップルトークなどの様々な市販されているプロトコルのうちのいずれかを使用する通信をサポートするために、当業者が熟知しているであろう少なくとも一つのネットワークを利用する。例えば、ネットワークは、ローカルエリアネットワーク、ワイドエリアネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公共回線電話網、赤外線ネットワーク、無線ネットワーク、及びそれらの任意の組み合わせであってもよい。
【0087】
ウェブサーバを利用する実施形態において、ウェブサーバは、ハイパーテキスト転送プロトコル(「HTTP」)サーバ、FTPサーバ、共通ゲートウェイインターフェース(「CGI」)サーバ、データサーバ、Javaサーバ、及びビジネスアプリケーションサーバを含む、様々なサーバまたは中間層アプリケーションのうちのいずれかを稼動することができる。サーバ(複数可)はまた、例えば、Java(登録商標)、C、C#またはC++、あるいはPerl、PythonまたはTCLなどの任意のスクリプト言語、並びにそれらの組み合わせなどの任意のプログラム言語で書き込まれた一つ以上のスクリプトまたはプログラムとして実施されてもよい一つ以上のウェブアプリケーションを実行することによって、ユーザデバイスからのリクエストに応答して、プログラムまたはスクリプトを実行できるものであってもよい。サーバ(複数可)はまた、これらに限定されないが、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)及びIBM(登録商標)から市販されているデータベースサーバも含むことができる。
【0088】
環境は、前述したように、様々なデータストア並びに他のメモリ及び記憶媒体を含むことができる。これらは、コンピュータのうちの一つ以上にローカルの(及び/または内部に常駐)、あるいはネットワーク全体のコンピュータのうちのいずれかまたはすべてからリモートの記憶媒体などの様々な場所に常駐することができる。特定の組の実施形態において、情報は、当業者が熟知するストレージエリアネットワーク(「SAN」)の中に存在してもよい。同様に、コンピュータ、サーバまたは他のネットワークデバイスに帰属する機能を実行するために必要な任意のファイルは、必要に応じて、ローカルに及び/またはリモートに記憶されてもよい。システムがコンピュータ化されたデバイスを含む場合、そのようなデバイス各々は、バスを介して電気的に結合されてもよいハードウェア要素を含むことができる。この要素は、例えば、少なくとも一つの中央処理装置(「CPU」または「プロセッサ」)、少なくとも一つの入力デバイス(例えば、マウス、キーボード、コントローラ、タッチ画面またはキーパッド)、及び少なくとも一つの出力デバイス(例えば、表示デバイス、プリンタまたはスピーカ)を含む。そのようなシステムはまた、例えば、ランダムアクセスメモリ(「RAM」)または読み取り専用メモリ(以下「ROM」)、並びに取り外し可能媒体デバイス、メモリカード、フラッシュカードなどのディスクドライブ、光学式記憶装置及びソリッドステート記憶装置などの一つ以上の記憶装置も含むことができる。
【0089】
そのようなデバイスはまた、コンピュータ可読記憶媒体リーダ、通信デバイス(例えば、モデム、ネットワークカード(無線または有線)、赤外線通信デバイスなど)、及び前述のようなワーキングメモリも含むことができる。コンピュータ可読記憶媒体リーダは、コンピュータ可読情報を一時的及び/またはより永久的に含有、記憶、伝送及び取得するための、リモート、ローカル、固定及び/または取り外し可能記憶装置並びに記憶媒体を代表するコンピュータ可読記憶媒体と接続、またはこれを受信するように構成することができる。システム及びさまざまなデバイスはまた、典型的に、クライアントアプリケーションまたはウェブブラウザなどのオペレーティングシステム及びアプリケーションプログラムを含む、多くのソフトウェアアプリケーション、モジュール、サービスまたは少なくとも一つのワーキングメモリ装置内部に位置する他の要素も含む。代替の実施形態は、前述からの多数の変形を有してもよいことを認識するべきである。例えば、カスタマイズされたハードウェアが使用される場合もあり、及び/または特定の要素が、ハードウェア、ソフトウェア(アプレットなどの高移植性ソフトウェアを含む)、または両方に実装される場合がある。さらに、ネットワーク入力/出力デバイスなどの他の計算デバイスへの接続が採用されてもよい。
【0090】
コード、またはコードの一部を含むための記憶媒体及びコンピュータ可読媒体は、RAM、ROM、電気的消去可能プログラマブルROM(「EEPROM」)、フラッシュメモリまたは他のメモリ技術、シーディーロム(「CD−ROM」)、デジタル多用途ディスク(DVD)または他の光学式ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは所望の情報を記憶するために使用することができ、システムデバイスによってアクセスすることができる任意の他の媒体を含む、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなどの情報の記憶及び/または伝送のための任意の方法または技術において実装された揮発性及び不揮発性の取り外し可能な及び固定の媒体などであるがこれらに限定されない記憶媒体及び通信媒体を含む、当技術分野において公知または使用される任意の適当な媒体を含むことができる。本明細書に提供された開示及び教示に基づいて、当業者は、さまざまな実施形態を実施するための他の方式及び/または方法を認識するであろう。
【0091】
明細書及び図面は、それ故に、制限的な意味ではなく、例示的なものとみなされる。しかしながら、特許請求の範囲に記載の本発明の広義の精神及び範囲から逸脱することなく、さまざまな修正及び変更を為せることは自明である。
【0092】
他の変形例も本開示の精神内にある。故に、開示した技術は、さまざまな修正及び代替構成を受けやすいが、その特定の図示した実施形態を、図面に示し、詳細に前述した。しかしながら、開示した特定の一つ以上の形態に本発明を限定することは意図せず、むしろ、その意図は、添付の特許請求の範囲に規定されるものとして、本発明の精神及び範囲内に収まるすべての修正、代替構成及び均等物などを含み得ることを理解すべきである。
【0093】
開示した実施形態を記述する文脈(特に、以下の特許請求の範囲の文脈)における「a」及び「an」並びに「the」という用語、並びに類似の指示対象の使用は、本明細書に別途記載の無い限りまたは文脈に明らかに矛盾しない限り、単数及び複数の両方を包含するものとして解釈されるべきである。「を備える」、「を有する」、「を含む」及び「を含有する」という用語は、別途記載の無い限り、オープンエンド用語(すなわち、「を含むが、これらに限定されない」の意味)として解釈されるべきである。「接続されている」という用語は、修正されていなくかつ物理的接続を言及している場合には、何らかの介在物があったとしても、その内部に部分的にもしくは全体的に収容されている、付着しているまたは接合しているものとして解釈されるべきである。本明細書における値の範囲の記載は、本明細書に別途記載の無い限り、その範囲に含まれる個別の値に個々に言及する簡略的な方法としての機能を果たすことを目的にしているに過ぎず、個別の値は、それが本明細書において個々に記載されたものとして本明細書に組み込まれる。「セット」(例えば、「アイテムのセット」)または「サブセット」という用語の使用は、別途記載の無い限りまたは文脈に矛盾しない限り、一つ以上の要素を含む非空の集合として解釈されるべきである。さらに、別途記載の無い限りまたは文脈に矛盾しない限り、対応するセットの「サブセット」という用語は、対応するセットの真部分集合を必ずしも意味するものではなく、サブセットと対応するセットとが等しい場合もある。
【0094】
「A、B及びCの少なくとも一つ」または「A、B及びCの少なくとも一つ」という形態の表現などの接続的な言葉は、別途記載の無い限り、さもなければ文脈に明らかに矛盾しない限り、アイテム、用語などが、AまたはBもしくはC、またはA及びB並びにCのセットの任意の非空サブセットのいずれかであり得ることを示すのに通常使用されるものとして文脈においてさもなければ理解される。例えば、前述の接続的な表現において使用される三つの要素を有するセットの例示的な実施例において、「A、B及びCの少なくとも一つ」及び「A、B及びCの少なくとも一つ」は、以下の組、すなわち、「A単独」、「B単独」、「C単独」、「A及びB」、「A及びC」、「B及びC」、「A、B及びC」のいずれかを意味する。故に、そのような接続的な言葉は、通常、特定の実施形態が、各々に存在するものとして、Aの少なくとも一つ、Bの少なくとも一つ及びCの少なくとも一つを必要とすることを暗示することは意図しない。
【0095】
本明細書に記述するプロセスのオペレーションは、本明細書に別途記載の無い限り、さもなければ文脈に明らかに矛盾しない限り、任意の適切な順序において実行することができる。本明細書に記述するプロセス(または、それらの変形例及び/もしくは組み合わせ)は、実行可能命令を含んで構成された一つ以上のコンピュータシステムの制御下で実行してもよく、そしてハードウェアまたはその組み合わせによって、一つ以上のプロセッサにおいて集合的に実行するコード(例えば、実行可能命令、一つ以上のコンピュータプログラムまたは一つ以上のアプリケーション)として実施することができる。コードは、例えば、一つ以上のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形態において、コンピュータ可読記憶媒体に記憶してもよい。コンピュータ可読記憶媒体は非一時的であってもよい。
【0096】
本明細書に提供される任意の及びすべての実施例または例示の言語(例えば、「など」)の使用は、本発明の実施形態をより明らかにすることのみが意図され、別途主張されない限り、本発明の範囲を制限しない。明細書内のいかなる言語も、本発明の実践に不可欠な任意の請求されていない要素を示すものとして解釈されるべきではない。
【0097】
本開示の好ましい実施形態は、本発明を実行するための、本発明者が知る最良の形態を含むものとして本明細書に記述される。それらの好ましい実施形態の変形例が、前の説明を読んだ当業者に明らかになり得る。本発明者は、当業者が必要に応じてそのような変形例を採用することを期待し、本開示の実施形態が本明細書に特に記述したものとは別な様に実践されることを意図している。それ故に、本開示の範囲は、適用法によって許可されるものとしてこれに添付された特許請求の範囲に記載された主題のすべての修正及び均等物を含む。さらに、前述のそのすべての可能な変形例における前述の要素の任意の組み合わせが、本明細書に別途記載の無い限り、さもなければ文脈に明らかに矛盾しない限り、本開示の範囲に包含される。
【0098】
本明細書に引用される刊行物、特許出願及び特許品を含むすべての参照は、各々の参照が、参照により組み入れられるものとして個々にかつ具体的に示され、その全体が本明細書に記載されているように、同じ程度、参照により本明細書に組み入れられる。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15