(57)【要約】【課題】サービスプロキシは、データストレージを伴うことができるサービスのアプリケーションプログラミングインターフェースプロキシとして処理を行なう。【解決手段】データを記憶するためのリクエストがサービスプロキシによって受信されると、サービスプロキシは、データを暗号化し、サービスにおいて暗号化形式におけるデータを記憶する。同様に、データを取得するためのリクエストがサービスプロキシによって受信されると、サービスプロキシは、サービスから暗号化されたデータを入手し、データを解読する。データは、サービスにはアクセスできないように保持された鍵を使用して暗号化することができる。【選択図】図１
2018057045.tif 000002
【特許請求の範囲】
【請求項１】
一つ以上のプロセッサと、
コンピュータ実行可能命令を含むメモリと、を備えており、前記コンピュータ実行可能命令が、前記一つ以上のプロセッサによって実行されたときに、システムに、
ネットワークを通じてリクエストを提示可能なアプリケーションプログラミングインターフェースを動作させ、
前記アプリケーションプログラミングインターフェースに提示される少なくとも複数のリクエストのうちの各々の第一のリクエストについて、少なくとも、
鍵を使用して、前記第一のリクエストの処理に伴う、データについての一つ以上の暗号化オペレーションを実行し、
前記鍵へのアクセスを喪失し、前記第一のリクエストを単独で処理できるように構成されているサービスに、前記暗号化形式におけるデータについての一つ以上のオペレーションを実行させる前記サービスに第二のリクエストを、ネットワークを通じて伝送することによって、前記第一のリクエストを処理させる、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本願は、共に２０１３年７月１日に出願された同時係属米国特許出願第１３／９３２，８２４号及び同第１３／９３２，８７２号の優先権を主張するものであり、それらの内容はその全体が参照により本明細書に組み入れられる。本願は、２０１３年４月９日に公開された「ＮＥＴＷＯＲＫ  ＤＡＴＡ  ＴＲＡＮＳＭＩＳＳＩＯＮ  ＡＮＡＬＹＳＩＳ  ＭＡＮＡＧＥＭＥＮＴ」と題された米国特許第８，４１６，７０９号、２０１２年６月７日に出願された「ＦＬＥＸＩＢＬＹ  ＣＯＮＦＩＧＵＲＡＢＬＥ  ＤＡＴＡ  ＭＯＤＩＦＩＣＡＴＩＯＮ  ＳＥＲＶＩＣＥＳ」と題された米国特許出願第１３／４９１，４０３号、２０１３年２月１２日に出願された「ＤＡＴＡ  ＳＥＣＵＲＩＴＹ  ＳＥＲＶＩＣＥ」と題された米国特許出願第１３／７６４，９６３号、及び２０１３年７月１日に出願された「ＤＡＴＡ  ＬＯＳＳ  ＰＲＥＶＥＮＴＩＯＮ  ＴＥＣＨＮＩＱＵＥＳ」と題された米国特許出願第１３／９３２，８７２号の完全な開示をすべての目的のために参照により組み入れる（代理人整理番号００９７７４９−０５１ＵＳ０）。
【背景技術】
【０００２】
計算資源及び関連データのセキュリティは、多くの状況において重要度が高い。一実施例として、組織は、多くの場合、計算デバイスのネットワークを利用して、強固な一連のサービスをユーザに提供する。ネットワークは、多くの場合、複数の地理的境界に及び、そして多くの場合、他のネットワークに接続する。例えば、組織は、計算資源の内部ネットワーク、及び他者によって管理される計算資源の両方を使用してそのオペレーションをサポートすることができる。例えば、組織のコンピュータは、他の組織のコンピュータと通信してデータにアクセスし、及び／またはデータを提供し、その上、別の組織のサービスを使用することができる。組織は、複雑なデータストレージシステムを使用して、効率的にかつコスト効率よくデータを記憶することができる。組織は、多くの場合、他の組織によってホスト及び管理されているデータストレージシステムを構成及び利用することによって、インフラストラクチャのコストを減少し、他の利点を達成する。これらのデータストレージシステム及び他のサービスは、各々が独自の規則及び規制を持つ複数の異なる管轄区域下で動作する場合がある。計算資源を管理するためのそのような複雑な使用では、データへのアクセスに権限を付与し、通常、特にそのような構成のサイズが大きくなるにつれてかつ複雑性が増すにつれて困難となり得るデータの安全性が保証される。
【発明の概要】
【０００３】
本開示に従うさまざまな実施形態を、以下の図面を参照して記述する。
【図面の簡単な説明】
【０００４】
【図１】さまざまな実施形態を実践することができる環境の例示的な実施例を示す。
【図２】さまざまな実施形態を実践することができる環境の例示的な実施例を示す。
【図３】さまざまな実施形態を実践することができる環境の例示的な実施例を示す。
【図４】さまざまな実施形態を実践することができる別の環境の例示的な実施例を示す。
【図５】少なくとも一つの実施形態に従う暗号化サービスの例示的な実施例を示す。
【図６】少なくとも一つの実施形態に従う、データ鍵を求めるリクエストを処理するプロセスの例示的な実施例を示す。
【図７】少なくとも一つの実施形態に従う、データ鍵を解読するためのリクエストを処理するプロセスの例示的な実施例を示す。
【図８】少なくとも一つの実施形態に従う、データを記憶するためのリクエストを処理するプロセスの例示的な実施例を示す。
【図９】少なくとも一つの実施形態に従う、データを取得するためのリクエストを処理するプロセスの例示的な実施例を示す。
【図１０】少なくとも一つの実施形態に従う、データベーステーブル変換の例示的な実施例を示す。
【図１１】少なくとも一つの実施形態に従う、データベースクエリを処理するプロセスの例示的な実施例を示す。
【図１２】さまざまな実施形態を実践することができる環境の例示的な実施例を示す。
【図１３】少なくとも一つの実施形態に従う、顧客データを記憶するプロセスの例示的な実施例を示す。
【図１４】少なくとも一つの実施形態に従う、一つ以上のデータ損失防止技術を利用するプロセスの例示的な実施例を示す。
【図１５】さまざまな実施形態を実施することができる環境を図示する。
【発明を実施するための形態】
【０００５】
以下の説明において、さまざまな実施形態を記述する。説明のために、そして実施形態の完全な理解を与えるために特定の構成及び詳細を説明する。しかしながら、特定の詳細がなくても実施形態を実践できることも当業者に明らかである。さらに、周知の特徴は、記述する実施形態を曖昧にしないために、省略または簡略化される場合がある。
【０００６】
本明細書に記述及び提案される技術は、さまざまなゾーン内に完全なインフラストラクチャを作ることを必要とせずに、それらのゾーン内にデータストレージサービスなどのさまざまな計算資源サービスを提供する能力を与える。いくつかの実施例において、ゾーンは、異なる地政学的境界内の施設に対応する。さまざまな地理的地域は、他者のデータの扱いに関してのその独自の規則、法律及び／または規制を有する場合がある。例えば、ある規制では、特定のタイプのデータを国内に留めることが要求される場合がある。同様の規制は、複数の地理的地域において実施される場合がある。同時に、多くの組織は、さまざまな計算資源サービスを利用することが有利であると考えている。そのようなサービスはすべての管轄区域において利用可能なわけではなく、あるいは他の地域においてより優れた及び／またはより経済的なサービスが提供される場合がある。
【０００７】
多くの場合、そのような規制の順守は、規制された管轄区域からデータを出す前にデータを暗号化することによって達成することができる。それ故に、本開示の技術は、異なる規則、法律及び／または規制の順守を維持しつつ、さまざまなデータ関連サービスを複数の地理的地域に提供することができる。通常、本明細書に記述及び提案される技術は、必ずしもこれに限らないが、種々の独立した事業体に相当し得る複数のゾーンへのサービスの提供を可能にする。例えば、種々のゾーンは、独立して存在する政府機関、企業、組織、組織内の課、個人及び／または他の団体であってもよい種々の事業体によって運営される種々のコンピュータネットワークであってもよい。他の実施例のゾーンの詳細については後述する。
【０００８】
さまざまな実施形態において、ウェブサービスインターフェースなどのサービスインターフェースは、一つのゾーンに提供される。いくつかの実施例において、サービスは、インターネットプレゼンスポイント（ＰｏＰ）内で動作する。サービスインターフェースは、そのサポーティングインフラストラクチャが別のゾーン内（例えば、別の行政上の（法律上の）管轄区域下）にあるサービスのための仮想アプリケーションプログラミングインターフェース（ＡＰＩ）エンドポイントとして動作することができる。それ故に、サービスインターフェースは、サービスインターフェースに提示されるリクエストを受信してそれに応答し、その上、一部さらにはすべてのリクエストの実現において、他のゾーン内のインフラストラクチャの使用を要求するように動作することができる。このように、顧客は、サービスインターフェースを使用して、そのゾーン内においてインフラストラクチャが完全にサポートされているサービスを利用しているかのようにそのサービスを利用することができる。つまり、顧客の観点からすれば計算資源は複数のゾーン内のサービスのインスタンスを提供するが、裏では、少なくともある程度、別のゾーンのサービスのインスタンスを使用した、特定のゾーンにおけるリクエストの処理が発生し得る。例えば、データを記憶するためのウェブサービスリクエストは、サービスインターフェースが永続記憶のためにデータを他のゾーン内のサービスに伝送することによって実現することができる。同様に、データ取得リクエストは、他のゾーン内のサービスのインフラストラクチャ内に永続的に記憶されているデータを取得することによって実現することができる。このように、特定のタイプの情報のエクスポートについての法律上の制限が存在し得るゾーンごとに完全なインフラストラクチャを構築及び維持する必要はない。
【０００９】
さまざまな規則、法律、規制及び／または優先事項に従うために、サービスインターフェースを通じて別のゾーン内のサービスに送られる一部さらにはすべてのデータは、サービスインターフェースのゾーン内、及び／または通常ではサポーティングサービスインフラストラクチャのゾーンの外部にあるゾーン内に維持された暗号鍵を使用して暗号化することができる。このように、サポーティングサービスインフラストラクチャのゾーン内にある間、データは、安全であり、別のゾーン内の適切な暗号鍵にアクセスしない限りはアクセスできない。暗号化されるデータは、大まかにまたは選択的に暗号化することができる。暗号化されるデータは、データを記憶する者に代わる顧客によっても構成することができる。さらに、暗号化されるデータ及びデータを暗号化するか否かは、一つ以上のデータ損失防止（ＤＬＰ）ポリシに従い決定することができる。さらに、本開示のさまざまな例示的な実施形態は、例証目的のために暗号化を利用するが、さまざまな他の技術も用いることができる。例えば、本明細書に記述するさまざまな技術は、データのさまざまな操作（マングリング）を含む。利用されるマングリングのタイプは、顧客が構成可能なものであってもよい。
【００１０】
データの暗号化の例示的な実施例に戻ると、いくつかの実施形態において、ＡＰＩプロキシとして動作するサービスインターフェースは、同じゾーン内の暗号化サービスを利用する。暗号化サービスは、暗号化及び解読、場合によってはメッセージ署名などの他の暗号化オペレーションを実行するために使用される暗号鍵を安全に管理することができる。データを暗号化する場合には、サービスインターフェースは、データが他のゾーン内の他のサービスに伝送される前に、暗号化サービスを利用してデータを暗号化することができる。同様に、データを解読する場合には、サービスインターフェースは、暗号化サービスを利用してデータを解読することができる。暗号化サービスを利用することができる例示的な方法については後述する。実施例の暗号化サービスは、参照により本明細書に組み入れられる、２０１３年２月１２日に出願された「ＤＡＴＡ  ＳＥＣＵＲＩＴＹ  ＳＥＲＶＩＣＥ」と題された米国特許出願第１３／７６４，９６３号に見ることができる。
【００１１】
サービスプロバイダのサービスタイプのインスタンスは、顧客によって利用され、例えば、一つ以上の規制に従うために、特定のデータへの特定の個人によるアクセスを制限することができる。実施例として、オペレータの組（例えば、顧客に代わって計算資源サービスプロバイダのサービスをリクエストする権限を持つ個人）は、別のサービスに関する別のオペレータの組とは異なる審査特性または資格を有し得る。例えば、前述のかつ詳細については後述するように、サービスプロバイダは、第一の地域内の第一のサービス、及び第一のサービスについての少なくともいくつかのリクエストのための（例えば、第一の地域とは異なる法律上の管轄区域内の）第二の地域内の第二のサービスを動作させることができる。この第一のサービスは、第二のサービスのプロキシとして作用する。第一のサービスのオペレータは、（もし存在すれば）第二のサービスを利用するために要求される資格とは異なる特定の資格を有することを要求される場合がある。実施例の資格は、これらに限定されないが、身元確認の提示、特定の国籍または所在地を有すること、特定の守秘義務に従うこと、特定のセキュリティクリアランスレベルを有すること、特定の職位（例えば、弁護士）を有することなどを含む。そのような制限の実施を可能にするために、サービスプロバイダは、サービスごとに異なる認証信任状を要求する場合がある。一実施例として、第一のサービスに対するリクエストを署名するのに使用される署名鍵は、第二のサービスには使用できない場合がある。このように、適切な資格を持つ個人への署名鍵の分配を使用して、データがある地域から別の地域に送られても、さまざまな規制に従うデータアクセスを保証することができる。
【００１２】
図１は、さまざまな実施形態を実践することができる環境１００の例示的な実施例を示す。図１に図示する環境において、仮想サービス１０２が提供される。仮想サービス１０２は、さまざまな計算資源サービスを利用する目的のために顧客１０４が使用可能なウェブサービスインターフェースなどのサービスインターフェースを提供するように構成できる。いくつかの実施形態において、仮想サービス１０２は、バッキングサービス１０６のプロキシとして動作する。詳細については後述するように、仮想サービス１０２とバッキングサービス１０６とは、同じサービスタイプ全体のうちの別個のインスタンス（例えば、種々の地理的地域内にネットワークエンドポイントを持つデータストレージサービス）であってもよい。例えば、バッキングサービス１０６は、サーバ、データストレージデバイス、及びネットワーク内の計算資源の動作を可能にするように構成されたネットワーク機器などの計算資源の集合であってもよい。バッキングサービス１０６は、仮想サービス１０２に提示されたリクエストの処理に必要なインフラストラクチャを提供することができる。例えば、仮想サービス１０２は、データストレージサービスを提供するために十分な記憶容量が不足している場合がある。つまり、仮想サービス１０２は、データストレージデバイスを含むことはできるが、バッキングサービス１０６を使用しないと仮想サービス１０２内に保持される記憶量が受信するリクエストを処理するのに不十分である場合がある。それでもなお、顧客１０４は、データストレージサービスを利用する目的のために仮想サービス１０２を利用することができる。
【００１３】
図１に図示するように、例えば、顧客１０４は、例えば仮想サービス１０２へのウェブサービスＡＰＩコールを通じて、仮想サービス１０２にデータを伝送することができる。データは、例えば、データを記憶するためのリクエストに関連させて転送することができる。仮想サービス１０２は、リクエストがバッキングサービス１０６に提示されたかのように、データを記憶するためのリクエストを処理することができる。例えば、顧客１０４にデータストレージサービスを提供するために十分な記憶容量が仮想サービス１０２に不足していても、仮想サービス１０２に提供されたデータを、バッキングサービス１０６のインフラストラクチャを利用して記憶することができる。前述のように、データストレージサービスを利用する場合に、さまざまな管轄区域上の考慮すべき事柄が生じることがある。それ故に、図１に図示するように、いくつかの実施形態における仮想サービス１０２及びバッキングサービス１０６は、一つ以上のデータセンタ施設及び／またはサーバ、ネットワーク機器、データストレージなどの集合といった物理インフラストラクチャを使用して実施される。図１に図示する実施例において、仮想サービス１０２とバッキングサービス１０６とは、異なる国に存在してもよい。ただし、異なる管轄区域上の事業体も、本開示の範囲内にあるとみなされる。
【００１４】
仮想サービス１０２に伝送されるデータが、一つ以上の規則、法律、規制及び／または優先事項に違反し得るプレーンテキストの形態においてバッキングサービス１０６に記憶されることを防止するために、仮想サービス１０２からバッキングサービス１０６に伝送される顧客からのデータは、暗号化することができる。さまざまな実施形態において、データは、バッキングサービス１０６が位置する管轄区域内の計算デバイスに（顧客１０４の承諾及び／または命令が無い限り）決して提供されない暗号鍵を使用して暗号化される。例えば、いくつかの実施形態において、データの暗号化に使用される鍵は、仮想サービス１０２が位置する管轄区域内に安全に保持される。詳細については後述するように、一部のデータをプレーンテキスト（クリアテキスト）の形態において仮想サービス１０２からバッキングサービス１０６に提供し、一方で、他のデータを暗号化してもよい。さらに、仮想サービス１０２に提供される一部のデータは、例えば、そのような情報の転送が一つ以上のＤＬＰポリシに違反する場合には、バッキングサービス１０６に伝送しなくてもよい。
【００１５】
図１には顧客１０４によって仮想サービス１０２に伝送されるデータを図示するが、バッキングサービス１０６に伝送されるデータを仮想サービス１０２が入手できる他の方式が提供され得ることが留意すべきである。例えば、いくつかの実施形態において、顧客１０４である複数の顧客は、計算資源サービスプロバイダの計算資源を使用して実施される顧客１０４のサービスを利用する。データは、顧客１０４であるこれらの複数の顧客から直接に仮想サービス１０２に伝送することができる。別の実施例として、仮想サービス１０２に伝送される顧客データは、仮想サービス１０２を動作させる計算資源サービスプロバイダによって物理的にホストされた計算デバイスから伝送することができる。例えば、顧客１０４は、後述するような仮想コンピュータシステムサービスを利用する計算資源サービスプロバイダによって実施される仮想マシンインスタンスから仮想サービス１０２データを提供することができる。
【００１６】
さらに、図１は、仮想サービス１０２が位置する管轄区域の外部から仮想サービス１０２に移動する、顧客１０４からのデータを図示するが、データは、その管轄区域内から、またはバッキングサービス１０６が位置する管轄区域などの異なる管轄区域からも提供することができる。本開示は、顧客１０４または他の事業体から得るものとしてさまざまな通信及び伝送を論じるが、別途記載がない限り、そのような通信が、顧客１０４の一つ以上の計算デバイスによって起動され、同期ユーザ入力に準じて及び／または自動処理に従い動作できることが理解されるべきであることもさらに留意すべきである。つまり、データを顧客１０４から移動するものとして記述する場合には顧客１０４は組織などの事業体を指し得るが、別途記載がない限り、データは、顧客１０４の計算デバイスから、または顧客１０４に代わって動作する計算デバイスからも提供される。他の変形例及び追加の特徴の詳細については後述する。
【００１７】
図２は、本開示のさまざまな実施形態を実践することができる環境２００の例証的な実施例を示す。環境２００において、計算資源サービスプロバイダ２０２が、様々なサービスを顧客２０４に提供することができる。顧客２０４は、計算資源サービスプロバイダ２０２によって提供される、情報を保持してさまざまな地理的位置に位置し得るその従業員に送達するためのさまざまなサービスを利用できる組織であってもよい。さらに、顧客２０４は、リモートに位置するワーキンググループにコンテンツを送達するためのさまざまなサービスを利用できる個人であってもよい。図２に図示するように、顧客２０４は、インターネットなどの一つ以上の通信ネットワーク２０６を通じて、計算資源サービスプロバイダ２０２と通信することができる。顧客２０４から計算資源サービスプロバイダ２０２への一部の通信によって、計算資源サービスプロバイダ２０２を、本明細書に記述するさまざまな技術またはその変形例に従い動作させることができる。
【００１８】
前述のように、計算資源サービスプロバイダ２０２は、さまざまな計算資源サービスをその顧客に提供することができる。計算資源サービスプロバイダによって提供されるサービスは、この実施例では、仮想コンピュータシステムサービス２０８、ブロックレベルデータストレージサービス２１０、暗号化サービス２１２（鍵管理サービスとも呼ばれる）、データストレージサービス２１４、及び一つ以上の他のサービス２１６を含む。ただし、本開示のすべての実施形態がすべてのそのようなサービスを含むわけではなく、また、追加のサービスを、本明細書に明白に記述するサービスに追加してまたはその代わりに提供することができる。サービスの各々は、適切に構成されたＡＰＩコールを、ウェブサービスリクエストを通じてさまざまなサービスに顧客２０４が提示できる一つ以上のウェブサービスインターフェースを含むことができる。さらに、サービスの各々は、サービスを互いにアクセスさせることができる（例えば、仮想コンピュータシステムサービス２０８の仮想コンピュータシステムが、データストレージサービスにデータを記憶するもしくはそれからデータを取得する、及び／またはブロックデータストレージサービスによって提供される一つ以上のブロックレベルデータストレージデバイスにアクセスすることができる）一つ以上のサービスインターフェースを含むことができる。
【００１９】
仮想コンピュータシステムサービス２０８は、計算資源サービスプロバイダ２０２の顧客２０４に代わって、仮想計算システムにおいて仮想マシンインスタンスをインスタンス化するように構成された計算資源の集合であってもよい。計算資源サービスプロバイダ２０２の顧客２０４は、（適切に構成され、かつ認証されたＡＰＩコールを通じて）仮想コンピュータシステムのサービスと相互作用し、計算資源サービスプロバイダ２０２によってホスト及び動作する物理計算デバイスにおいてインスタンス化された仮想コンピュータシステムをプロビジョン及び動作させることができる。仮想コンピュータシステムは、さまざまな目的に使用することができる。例えば、ウェブサイトをサポートするサーバとして動作する、ビジネスアプリケーションを動作する、または通常、顧客のための計算能力としての機能を果たす。仮想コンピュータシステムの他のアプリケーションは、データベースアプリケーション、電子商取引アプリケーション、ビジネスアプリケーション及び／または他のアプリケーションをサポートすることができる。
【００２０】
ブロックレベルデータストレージサービス２１０は、ブロックレベルストレージデバイス（及び／またはその仮想化）を使用して、顧客２０４用のデータを記憶するように集合的に動作する計算資源の集合を備えることができる。ブロックレベルデータストレージサービス２１０のブロックレベルストレージデバイスは、例えば、仮想コンピュータシステムサービス２０８によって提供された仮想コンピュータシステムに動作可能に取り付けられ、コンピュータシステムのための論理ユニット（例えば、仮想ドライブ）としての機能を果たすことができる。ブロックレベルストレージデバイスは、仮想コンピュータシステムサービス２０８が短期のデータ記憶のみしか提供できない場合に、対応する仮想コンピュータシステムによって使用または生成されるデータを永続記憶することができる。
【００２１】
図２に図示するように、計算資源サービスプロバイダ２０２は、図３に関連してより詳細については後述する暗号化サービスを動作させることができる。通常、暗号化サービスは、計算資源サービスプロバイダの顧客用の暗号鍵を管理及び使用するように集合的に構成された計算資源の集合であってもよい。暗号化サービス２１２によって使用される鍵は、暗号化オペレーション（暗号化、解読及びメッセージ署名など）及び／または鍵ローテーションなどの他のオペレーションを実行するためのリクエストを提示したときを顧客が参照することができる関連した識別子を有することができる。暗号化サービスは、権限のない団体によるアクセスを回避するために、暗号鍵を安全に保持することができる。
【００２２】
前述のように、計算資源サービスプロバイダ２０２は、オンデマンドデータストレージサービス及び／またはアーカイバルデータストレージサービスを含み得る一つ以上のデータストレージサービス２１４も含むことができる。オンデマンドデータストレージサービスは、データを記憶及び／またはそれにアクセスするためのリクエストを同期的に処理するように構成された計算資源の集合であってもよい。オンデマンドデータストレージサービスは、データを求めるリクエストに応答してデータを提供できるようにデータを迅速にオンデマンドデータストレージサービス２０８が検出及び取得できる計算資源（例えば、データベース）を使用して動作することができる。例えば、オンデマンドデータストレージサービスは、データオブジェクトを求めるリクエストを取得したときに、そのリクエストに対する応答においてデータオブジェクトを提供できる（または、データオブジェクトのストリーミングを起動できる）ように、記憶したデータを保持することができる。前述のように、オンデマンドデータストレージサービスに記憶されたデータは、データオブジェクトに組織化することができる。データオブジェクトは、ことによるとサイズについての特定の制約以外の任意のサイズを有することができる。故に、オンデマンドデータストレージサービスは、いろいろなサイズの多数のデータオブジェクトを記憶することができる。オンデマンドデータストレージサービスは、オンデマンドデータストレージサービス２１０に記憶されたデータオブジェクトに関連する他のオペレーションを取得または実行するために、データオブジェクトを、顧客２０４が使用できるデータオブジェクトの識別子に関連付ける鍵値ストアとして動作することができる。オンデマンドデータストレージサービスは、暗号化サービス２１２にもアクセスできるものであってもよい。例えば、いくつかの実施形態において、暗号化サービスは、オンデマンドデータストレージサービスを利用して暗号化形式において顧客鍵を記憶する。顧客鍵を解読するのに使用可能な鍵は、暗号化サービス２１２の特定のデバイスのみにおいてアクセスできる。顧客、別のサービスまたは他の事業体によるデータストレージサービスへのアクセスは、適切に構成されたＡＰＩコールを通じたものであってもよい。
【００２３】
アーカイバルストレージシステムは、オンデマンドデータストレージサービスとは異なって動作することができる。例えば、アーカイバルストレージシステムは、データアクセスに関連する性能を低下させてストレージコストを減少するような方式でデータを記憶するように構成できる。例示的な一実施例として、アーカイバルストレージシステムは、バッチ処理及び並列処理によってコストを節約するように、非同期的にデータオペレーションを実行する（すなわち、データを記憶及び取得する）ように構成できる。例えば、アーカイバルストレージシステムのクライアントは、アーカイバルストレージシステムに記憶されているデータオブジェクトにアクセスするためのリクエストを受信し、リクエストを収集し、リクエストをバッチ処理し、リクエストされたデータを、追加のリクエストを使用した取得に利用可能にすることができる。非同期処理の故に、アーカイバルストレージシステムは、データオブジェクトが取得される状態になると、データオブジェクトを取得するための別のリクエストを要求する場合がある。これは例えば、一つ以上のアーカイバルデータストレージデバイスからデータオブジェクトを読み出し、データオブジェクトを利用可能な一つ以上のステージングデータストレージデバイスにデータを書き込むことによって行われる。
【００２４】
他方では、オンデマンドストレージシステムは、データアクセスに関するより優れた性能を提供するように構成できる。例えば、オンデマンドストレージシステムは、データを記憶及び／またはそれにアクセスするためのリクエストを同期的に処理するように構成できる。アーカイバルストレージシステムに対してより優れた性能を可能にするために、オンデマンドストレージシステムは、アーカイバルストレージシステムに対して迅速にオンデマンドストレージシステムがデータを検出及び取得できる追加の計算資源（例えば、データベース）を使用して動作することができる。オンデマンドストレージシステムは、同期データアクセスを提供することができる。例えば、オンデマンドストレージシステムは、データオブジェクトを求めるリクエストが取得されたときに、そのリクエストに対する応答においてデータオブジェクトを提供できる（または、データオブジェクトのストリーミングを起動できる）ように、記憶したデータを保持することができる。
【００２５】
図２に図示する環境には、通知サービス２１６が含まれる。通知サービス２１６は、関連するアプリケーション（または、人達）に顧客が通知することを望むトピックスを作り出し、これらのトピックスをクライアントに購読させ、メッセージを公表し、これらのメッセージをクライアントが選択したプロトコル（すなわち、ＨＴＴＰ、電子メール、ＳＭＳなど）を通じて送達するのに使用できるウェブサービスまたは他のインターフェース及びブラウザベースのマネージメントコンソールを提供するように集合的に構成された計算資源の集合を備えることができる。通知サービスは、定期的に確認する必要のない「プッシュ」機構、または新規の情報及び更新のための「ポール」を使用して、クライアントに通知を提供することができる。通知サービスは、仮想コンピュータシステムサービスにおいて実行されるモニタリングアプリケーション、ワークフローシステム、時間依存情報の更新、モバイルアプリケーション、及び多くの他のアプリケーションなどのさまざまな目的に使用することができる。
【００２６】
計算資源サービスプロバイダ２０２は、その顧客２０４のニーズに基づく一つ以上の他のサービス２１８をさらに保持することができる。例えば、計算資源サービスプロバイダ２０２は、その顧客２０４に関するデータベースサービスを保持することができる。データベースサービスは、一人以上の顧客２０４に関する一つ以上のデータベースを稼動するための集合的に動作する計算資源の集合であってもよい。計算資源サービスプロバイダ２０２の顧客２０４は、適切に構成されたＡＰＩコールを利用することによって、データベースサービスからのデータベースを動作及び管理することができる。これにより、次に、顧客２０４は、オペレーションをデータベースに保持及び潜在的にスケールすることができる。他のサービスは、これらに限定されないが、オブジェクトレベルアーカイバルデータストレージサービス、他のサービスを管理及び／もしくは監視するサービス、並びに／または他のサービスを含む。
【００２７】
図２に図示するように、計算資源サービスプロバイダ２０２は、さまざまな実施形態において、認証システム２２０及びポリシマネジメントサービス２２２を含む。認証システムは、一実施形態において、顧客のユーザの認証に伴うオペレーションを実行するように構成されたコンピュータシステム（すなわち、計算資源の集合）である。例えば、サービスのうちの一つは、ユーザからの情報を認証サービスに提供し、その応答として、ユーザリクエストが認証されたか否かを示す情報を受信することができる。ユーザリクエストが認証されたか否かの決定は、任意の適切な方法において実行してもよいし、認証の実行方法は、さまざまな実施形態において変えることもできる。例えば、いくつかの実施形態において、ユーザは、サービスに伝送されるメッセージに電子的に署名する（すなわち、コンピュータシステムは、ユーザがメッセージに電子的に署名することによって動作する）。電子署名は、認証される実在者（例えば、ユーザ）及び認証システムの両方に利用可能な機密情報（例えば、ユーザに関連する鍵の対のうちのプライベート鍵）を使用して生成することができる。リクエスト及びリクエストに関する署名は、認証システムに提供され、認証システムは、機密情報を使用して、参照署名を受信した署名と比較して計算し、リクエストが認証されたか否かを決定することができる。
【００２８】
リクエストが認証された場合には、認証サービスは、サービスが使用できる情報をサービスに提供し、ペンディングリクエストを遂行するか、及び／または暗号化サービスなどの他のサービスに証明するなどの他のアクションを実行するか否かを決定することができる。リクエストが認証されると、それに応じて他のサービスを動作させることができる。例えば、認証サービスは、トークンを解析してリクエストの信頼性を確認できる別のサービスにトークンを提供することができる。電子署名及び／またはトークンは、さまざまな方式において制限された有効性を有することができる。例えば、電子署名及び／またはトークンは、特定の時間だけ有効にすることができる。一実施例において、電子署名及び／またはトークンは、確認のための電子署名及び／またはトークンに含まれるタイムスタンプを入力としてとる関数（例えば、ハッシュベースメッセージ認証コード）に少なくともある程度基づいて生成される。提示された電子署名及び／またはトークンを確認する事業体は、受信したタイムスタンプが十分に最新（例えば、現在から所定の時間内）であるかを確認し、受信したタイムスタンプに代用される参照署名またはトークンを生成することができる。提示された電子署名もしくはトークンを生成するのに使用されるタイムスタンプが十分に最新でない、及び／または提示された署名もしくはトークンと参照署名もしくはトークンとが一致しない場合には、認証に失敗し得る。このように、電子署名が危険にさらされた場合には、それは短時間だけ有効となり、それによって、このセキュリティ侵害によって引き起こされる潜在的な危害を限定する。信頼性を確認する他の方式も、本開示の範囲内にあるとみなされることに留意すべきである。
【００２９】
ポリシマネジメントサービス２２２は、一実施形態において、計算資源サービスプロバイダの顧客に代わってポリシを管理するように構成されたコンピュータシステムである。ポリシマネジメントサービス２２２は、ポリシの管理に関連するリクエストを顧客が提示できるインターフェースを含むことができる。そのようなリクエストは、例えば、顧客についてのポリシを追加、削除、変更、さもなければ修正するための、または既存のポリシの一覧表などを提供することなどの他の管理上のアクションリクエストのためのリクエストであってもよい。ポリシマネジメントサービス２２２は、ペンディングリクエストの実現がリクエストを要請した顧客に対応するポリシに従い許容可能であるか否かの決定をサービスができるようになる他のサービスともインターフェースすることができる。例えば、サービスは、リクエストを受信したときに、（そのような情報をローカルにキャッシュしていない場合に）リクエストについての情報（及び／またはリクエストそれ自体）をポリシ管理システムに伝送することができる。このポリシ管理システムは、顧客についてのポリシを解析して、顧客の既存のポリシによってリクエストの実現が可能であるか否かを決定し、その決定に従い情報をサービスに提供することができる。
【００３０】
図３は、さまざまな実施形態を実践することができる環境３００の例示的な実施例を示す。図３に図示するように、環境３００は、三つのゾーン、すなわち、顧客構内３０２、仮想ゾーン３０４及びバッキングゾーン３０６を含む。顧客構内３０２は、図１に参照するような前述の顧客１０４によって及び／またはそれに代わって動作する施設を含むことができる。同様に、仮想ゾーン３０４は、バッキングゾーン３０６に対応する管轄区域（例えば、行政上の（法律上の）管轄区域）とは異なる管轄区域内の計算資源サービスプロバイダによって動作する施設に対応することができる。つまり、顧客構内３０２は顧客１０４に対応し、仮想ゾーン３０４は仮想サービス１０２に対応し、バッキングゾーン３０６はバッキングサービス１０６に対応し得る。しかしながら、前述のように、ゾーンは、必ずしも異なる地政学的境界に対応せず、他のタイプの管理上の統制に対応し得る。例えば、顧客構内３０２は、図１に関連して前述した顧客１０４であってもよい顧客３０８の管理上の統制下の計算資源のネットワークに対応し得る。同様に、仮想ゾーン３０４は、計算資源サービスプロバイダ３０４の管理上の統制下の計算資源のネットワークに対応し得る。
【００３１】
バッキングゾーン３０６は、計算資源サービスプロバイダまたは別の計算資源サービスプロバイダの管理上の統制下の計算資源のネットワークに対応し得る。仮想ゾーン３０４は、様々な方式において実施でき、通常、後述するように、顧客の観点から見て、仮想ゾーン３０４がバッキングゾーン３０６を使用しなくても単独でリクエストを処理できる完全に進行するバッキングゾーンであるかのように動作するよう実施される。つまり、バッキングゾーン３０６の使用にかかわらず、仮想ゾーン３０４は、リクエストがバッキングゾーンに直接提示されたかのように、（リクエストがバッキングゾーン３０６に直接提示された場合にはさもなければ生じない暗号化などのデータの特定の操作以外の）リクエストを受信し、それを処理することができる。例えば、前述のように、場合によっては、仮想ゾーン３０４は、特定の行政上の管轄区域内のインターネットＰｏＰとして実施することができる。バッキングゾーン３０６は、図２に関連して前述した一つ以上の計算資源サービスなどを提供できるインフラストラクチャを有する一つ以上のデータセンタ施設に対応し得る。
【００３２】
仮想ゾーン３０４に戻ると、前述のように、仮想ゾーン３０４は、ストレージサービスプロキシ３１０及び暗号化サービス３１２を含むことができる。より詳細については後述するように、ストレージサービスプロキシ３１０は、顧客３０８がリクエストを提示することができるサービスインターフェースを提供できる。サービスインターフェースは、一つ以上のパブリックＩＰアドレスなどの一つ以上のパブリックネットワークアドレスにおいてアクセス可能であってもよい。ストレージサービスプロキシ３１０は、暗号化サービス３１２を利用して、バッキングゾーン３０６のストレージサービス３１４に送信されるデータの暗号化を確かに保証することができる。ストレージサービス３１４は、顧客３０８及び／または他の顧客が直接アクセスできるそれぞれのストレージインターフェースも提供することができる。バッキングゾーン３０６は、認証サービス３１６も含むことができる。認証サービス３１６は、ストレージサービスプロキシ３１０、暗号化サービス３１２及びストレージサービス３１４が、顧客３０８または環境３００内の別の構成要素によって提示されたリクエストを実現するか否かを決定できるように機能する前述のような計算資源の集合であってもよい。
【００３３】
ストレージサービスプロキシ３１０及びストレージサービス３１４が、一つ以上の計算資源サービスプロバイダのデータストレージサービスに対応し得ることが留意すべきである。例えば、ストレージサービス３１４は、オンデマンドストレージサービス、アーカイバルデータストレージサービス、ブロックレベルデータストレージサービス、リレーショナルデータベースサービスなどのデータベースサービス、ｎｏＳＱＬデータベースストレージサービス、またはデータウェアハウスデータストレージサービスであってもよい。通常、一人以上の顧客に代わってデータを記憶するように動作する任意のサービスを、環境３００において利用することができる。例証目的のためにストレージサービスが使用されるが、仮想ゾーン３０４及びバッキングゾーン３０６が、仮想コンピュータシステムサービス、計算資源管理サービス、及び／または通常、計算資源プロバイダによって提供され得、顧客もしくは他の極秘データへのアクセスを含むことができる任意の計算資源サービスなどの他のタイプのサービスのための計算資源を含むことができることも留意すべきである。それ故に、バッキングゾーン３０６は、そのようなサービスを実施するための施設を含み、仮想ゾーン３０４は、そのサービスのためのＡＰＩプロキシとして動作する対応するサービスインターフェースを含むことができる。さらに、仮想ゾーン３０４は、仮想ゾーン３０４内の対応するサービスプロキシを各々が有する複数の異なるサービスも含むことができる。前述のように、仮想ゾーンは、さまざまな方式において提供され得、仮想ゾーンが提供され得る方式は、図１に図示するかつ前述の方式に限定されない。
【００３４】
図４は、それ故に、さまざまな実施形態を実践することができる環境４００の例示的な実施例を示す。例えば、図４に図示するように、環境４００は、図３に関連して前述したなどの顧客構内４０２、仮想ゾーン４０４及びバッキングゾーン４０６を含む。例えば、顧客構内４０２は、顧客４０８の計算資源を有する、または顧客４０８に代わって利用される一つ以上の施設を含むことができる。図４に図示するように、仮想ゾーン４０４は、顧客構内４０２に位置するゾーンであってもよい。例えば、顧客構内４０２のネットワークの計算デバイスは、リクエストを提示できるウェブサービスインターフェースを提供することができる。いくつかの実施形態において、ウェブサービスインターフェースは、一つ以上のプライベートＩＰアドレスなどの一つ以上のプライベートネットワークアドレスにおいてアクセス可能である。顧客計算デバイス、またはいくつかの実施形態においては任意の計算デバイスは、バッキングゾーン４０６の施設の使用を含み得る、リクエストの処理を行うために、仮想ゾーン４０４に関するインターフェースにリクエストを提示することができる。
【００３５】
図４に図示するように、仮想ゾーン４０４は、図３に関連して前述したような、ストレージサービスプロキシ４１０及び暗号化サービスを含む。前述のように、ストレージサービスプロキシ４１０は、バッキングゾーン４０６内に位置するストレージサービス４１４のＡＰＩプロキシとして機能するストレージサービスインターフェースを含むことができる。ストレージサービスプロキシ４１０と同様に、リクエストは、顧客４０８によってストレージサービスプロキシ４１０に提示され得、それらのリクエストの実現には、ストレージサービス４１４を利用することができる。暗号化サービス４１２は、ストレージサービスプロキシ４１０によって利用することができ、さまざまな実施形態に従い適切な場合に、ストレージサービスプロキシ４１０によってストレージサービス４１４に伝送されるデータの暗号化を保証することができる。同様に、バッキングゾーン４０６内の認証サービス４１６は、ストレージサービスプロキシ暗号化サービス４１２及びストレージサービス４１４によって利用することができ、リクエストが確かに提示され、それ故に実現可能であるか否か、（例えば、任意の適用可能なポリシに従い実現する場合に、）他の方法で実現可能かどうかを決定することができる。
【００３６】
ここに記述したすべての環境と同様の変形例が、本開示の範囲内にあるものとしてみなされることに留意すべきである。例えば、図４は、仮想ゾーン４０４内部の暗号化サービス４１２を示す。暗号化サービスは、例えば、ハードウェアセキュリティモジュール（ＨＳＭ）、または顧客４０８に代わって暗号鍵を管理する他の計算デバイスとして動作することができる。しかしながら、暗号化サービスが、バッキングゾーン４０６などの他のゾーン、または図面に図示しない別の仮想ゾーンに位置してもよいことに留意すべきである。例えば、暗号化サービスは、図３に関連して前述したような仮想ゾーン内に存在してもよい。通常、暗号化サービスは、顧客４０８に専用のサービスであってもよいし、必要に応じて、計算資源サービスプロバイダの複数の顧客に代わって暗号鍵を管理するマルチテナントサービスであってもよい。図４には唯一の仮想ゾーン４０４を有する顧客構内を示すが、顧客構内が、さまざまな目的に利用できる複数の仮想ゾーンを含むことができることにも留意すべきである。例えば、顧客４０８は組織であってもよく、異なる仮想ゾーンが、組織内の異なる管理上の事業体によって使用され得る。このように、データの混入、及び顧客４０８に関係し得る他の問題点は、複数の仮想ゾーンの使用を通じて管理することができる。同様に、ストレージサービス４１４及びストレージサービスプロキシ４１０が例証目的のために利用されるが、顧客構内４０２の一つ以上の仮想ゾーンは、複数のサービスに対応する複数のサービスプロキシを含むことができる。通常、本明細書に記述及び提案される技術を使用して、対応するプロキシを各々が持つ複数のサービスを使用することができる。
【００３７】
さらに、前述のように、さまざまなサービスプロキシは、ＩＰアドレスなどのパブリックネットワークアドレスを通じてアクセス可能であってもよい。いくつかの実施形態において、サービスプロキシは、対応するバッキングサービスに使用されるＵＲＬとは異なる対応するユーアールエル（ＵＲＬ）を有する。例えば、プロキシとサービスとが異なる地理的管轄区域に存在する実施例において、プロキシは、ｓｔｏｒａｇｅｓｅｒｖｉｃｅ＜ｄｏｔ＞ｃｏｕｎｔｒｙ１＜ｄｏｔ＞ｓｅｒｖｉｃｅｐｒｏｖｉｄｅｒ＜ｄｏｔ＞ｃｏｍの形態のＵＲＬを有し、一方で、バッキングサービスは、ｓｔｏｒａｇｅｓｅｒｖｉｃｅ＜ｄｏｔ＞ｃｏｕｎｔｒｙ２＜ｄｏｔ＞ｓｅｒｖｉｃｅｐｒｏｖｉｄｅｒ＜ｄｏｔ＞ｃｏｍの形態のＵＲＬを有することができる。ここで、＜ｄｏｔ＞は、ドメイン及びサブドメインの範囲を定めるのに使用される、ブラケット内の文字を表す。他の実施例において、プロキシとストレージサービスとは、同じＵＲＬであるが、異なるパブリックＩＰアドレスを有することができる。分散ＤＮＳサーバは、ＵＲＬを、地理的に最も近いプロキシまたはバッキングサービスに関するＩＰアドレスに決定するように構成することができる。本開示の範囲内にあるものとみなされる変形例のなおも別の実施例として、バッキングサービスは、適切な場合に、バッキングサービスが暗号化形式におけるデータを受信するように、プロキシを通すようにリクエストを経路変更するように構成できる。他の変形例も、本開示の範囲内にあるとみなされる。
【００３８】
図５は、本開示のさまざまな実施形態を実施するのに使用できる暗号化サービスの例示的な実施例を示す。図５に図示する暗号化サービス５００は、例えば、図２、図３及び図４に関連して前述した暗号化サービスとして使用することができる。一実施形態において、暗号化サービス５００は、暗号化サービス５００によって安全に管理された暗号鍵を使用した暗号化オペレーションを暗号化サービス５００が実行できるさまざまなサブシステムを含む。例えば、図５に図示するように、暗号化サービス５００は、リクエスト処理サブシステム５０２を含む。リクエスト処理サブシステム５０２は、リクエスト処理サブシステム５０２に提示されるリクエストを受信して処理するように集合的に動作する一つ以上のウェブサーバ及び一つ以上のアプリケーションサーバを含むことができる。
【００３９】
一実施形態において、リクエスト処理サブシステム５０２は、ウェブサービスインターフェースを暗号化サービス５００に提供する一つ以上のウェブサーバを含み、これにより（顧客または他のサービスからの）ウェブサービスコールを、ウェブサービスインターフェースを通じてリクエスト処理サブシステム５０２に送ることができ、さまざまな暗号化オペレーションを実行することができる。前述のように、暗号化サービス５００は、暗号鍵を安全に管理することができる。それ故に、暗号化サービス５００のさまざまな構成要素は、そのように安全に管理することができる。一実施形態において、暗号化サービス５００は、複数の暗号化モジュール５０４及び顧客鍵ストレージ５０６を含む。各暗号化モジュール５０４は、ドメインキーとも呼ばれる暗号鍵を安全に管理する暗号化サービス５００のサブシステムであってもよい。一実施形態において、暗号化モジュール５０４は、その各々が、暗号化モジュール５０４のすべてに共通する一つ以上のドメインキーのセットを記憶する。つまり、暗号化モジュール５０４の各々は、同じドメインキーの一つ以上を記憶することができる。ドメインキーの記憶は、ドメインキーが決して暗号化モジュール５０４から出ず、通常、暗号化サービス５００の任意のサブシステムまたは他のシステムにはアクセスできないように実行することができる。
【００４０】
一実施形態において、例えば、暗号化モジュールは、ハードウェアセキュリティモジュール（ＨＳＭ）であってもよいセキュリティモジュールである。ハードウェアセキュリティモジュールは、プロセッサなどの計算資源、及び暗号化モジュールが暗号化オペレーションを実行できる実行可能命令を記憶するメモリを備えて構成することができる。暗号化モジュールは、暗号化モジュール５０４内部への侵入が検出された場合に、暗号化モジュール内に記憶されたドメインキーを消去し、それによって、暗号化モジュール５０４内への物理的侵入の方式によるドメインキーへのアクセスを防止するような不正開封防止となるように構成することができる。前述のように、一実施形態において、暗号化サービス５００は、顧客鍵ストレージ５０６として図５に図示する顧客鍵のリポジトリを含む。しかしながら、代替の実施形態においては、外部の顧客鍵ストレージ５０６を使用せずに、一つ以上のセキュリティモジュールが顧客鍵を記憶する。そのような実施形態では、顧客鍵は、メモリからアクセスすることができ、解読するためにドメインキーを使用しなくてもよい。
【００４１】
図示した実施形態に戻ると、各顧客鍵は、暗号化サービス５００の対応する顧客に対応し、一人の顧客が複数の対応する顧客鍵を有し得るが、鍵は顧客の間で共有されない。そのようなものとして、暗号化サービス５００は、顧客鍵ストレージ５０６内に、複数の顧客の顧客鍵を記憶することができる。同様に、暗号化サービス５００は、暗号化モジュール５０４を通じて、複数の顧客のためのさまざまな暗号化オペレーションを実行することができる。図５に図示するように、顧客鍵ストレージ５０６内に記憶されている顧客鍵は、暗号化モジュール５０４に記憶されているドメインキーに基づいて暗号化される。右側ブラケットに注記するドメインキーを持つ顧客鍵の周囲のブラケットが、ドメインキーに基づく顧客鍵の暗号化を示す表記として提供されることに留意すべきである。このように、顧客鍵ストレージ５０６内に記憶されている顧客鍵は、顧客鍵にアクセスするためにドメインキーへのアクセスが必要となるような方式で記憶される。故に、顧客鍵ストレージ５０６内のデータへのアクセスは、それ自体では、顧客鍵に基づいて暗号化されたデータへのアクセスは提供しない。それ故に、複数の顧客の顧客鍵を暗号化モジュール５０４の外部に記憶し、それ故に、暗号化オペレーションを実行するのに使用され得るすべての鍵を記憶するためのセキュリティモジュール５０４を必要とせずに、スケーラビリティを提供することができる。
【００４２】
暗号化モジュールは、詳細については後述するように、リクエストに応じて、指定の顧客鍵を使用して暗号化オペレーションを実行し、顧客鍵ストレージ５０６からの暗号化された指定の顧客鍵にアクセスし、ドメインキーを使用して顧客鍵を解読し、解読された顧客鍵を使用して暗号化オペレーションを実行するように構成できる。顧客鍵ストレージ５０６は、暗号化サービス５００内に存在するものとして図示したが、暗号化サービス５００と同じゾーン内に存在してもよいし、異なるゾーン内に存在してもよいデータストレージサービスなどの別のシステム内に位置してもよいことに留意すべきである。
【００４３】
図６は、データを暗号化するのに使用されるデータ鍵を暗号化するように実行できるプロセス６００の例示的な実施例である。プロセス６００は、図５に関連して前述した暗号化サービス５００などの任意の適切なシステムによって実行することができる。一実施形態において、プロセス６００は、データ鍵を求めるリクエストを受信すること６０２を含む。リクエスト６０２は、より詳細については後述するように、データ鍵を提供するのに使用される顧客鍵を、プロセス６００を実行するシステムが選択できるさまざまなパラメータを持つ、ウェブサービスコールなどの適切に構成されたＡＰＩコールの形態であってもよい。例えば、ＡＰＩコールは、顧客鍵についての識別子を特定する値を有するパラメータを含むことができる。顧客鍵は、暗示的に決定されてもよいことに留意すべきである。例えば、特定の顧客からのリクエストによって、暗号化サービスは、顧客鍵を顧客に関連付け、どの顧客鍵を使用するかを決定することができる。一実施形態において、プロセス６００は、リクエストが認証されたか否かを決定すること６０４を含む。
【００４４】
リクエストが認証されたか否かの決定６０４は、任意の適切な方法で実行することができる。例えば、いくつかの実施形態において、リクエストは、プロセス６００を実行するシステム、またはプロセス６００を実行するシステムが通信する別のシステムによって確認可能な方式で電子的に（デジタル的に）署名することができる。図３を参照するように、リクエストは、顧客３０８と認証サービス３１６との間で共有される秘密鍵を使用して署名することができる。暗号化サービスは、プロセス６００を実行する場合に、リクエスト及びリクエストに関する署名を認証サービス３１６に提供することができる。認証サービス３１６は、リクエスト、及び秘密鍵自身のコピーに基づいて参照署名を生成し、リクエストとともに受信されたデジタル署名がそれに一致するか否かを決定することができる。認証サービスによって生成された署名がそれと一致する場合には、認証サービス３１６は、リクエストが認証されたことの通信を暗号化サービス３１２に提供し、それによって、暗号化サービス３１２は、リクエストを実現すべきことを決定することができる。図４に関連しても同様のプロセスを実行することができる。
【００４５】
図面には図示しないが、リクエストを処理すべきか否かについての追加の決定を為すことができることに留意すべきである。例えば、プロセス６００は、そのポリシによってリクエストを実現できるか否かを決定することを含むことができる。リクエストは、リクエストを提示したユーザなどの一人以上の本人にまたは別な様に使用される鍵に関するポリシであってもよい。そのような追加のオペレーションも、後述するものを含む他のプロセスの一部として実行することができる。リクエストが認証されたことが決定された６０６の場合には、プロセス６００は、データ鍵を生成すること６０６を含むことができる。データ鍵は、ストレージサービス内にデータを記憶するためのリクエストのデータなどのデータを暗号化するのに使用される暗号鍵であってもよい。データ鍵は、ランダムに、疑似ランダムに、または別な様に生成することができる。さらに、プロセス６００は、データ鍵の生成６０６を図示するが、データ鍵は、事前に生成され、メモリからアクセスしてもよい。
【００４６】
一実施形態において、プロセス６００は、暗号化された顧客鍵にアクセスすること６０８を含む。図５を参照するように、例えば、暗号化サービス５００の暗号化モジュール５０４は、ドメインキーに基づいて暗号化することができる暗号化された顧客鍵を求めるリクエストを顧客鍵ストレージ５０６に提示することができる。顧客鍵ストレージ５０６へのリクエストは、入手される顧客鍵の識別子を含むことができる。暗号化された顧客鍵がアクセスされる６０８時点で、プロセス６００は、ドメインキーを使用して顧客鍵を解読すること６１０を含むことができる。次に、解読された顧客鍵を使用して、データ鍵を暗号化すること６１２ができる。次に、リクエストに応答してデータ鍵及び暗号化されたデータ鍵を提供する６１４、それによって、リクエスタは、詳細については後述するように、データの暗号化のためにデータ鍵を利用することができる。
【００４７】
リクエストが認証されたか否かの決定６０４に戻ると、リクエストが認証されなかったことが決定された６０４場合、例えば、リクエストが認証されなかったことを認証サービスが示す場合には、プロセス６００は、リクエストを拒否すること６１６を含むことができる。リクエストの拒否６１６は、さまざまな実施形態に従うさまざまな方式において実行することができる。リクエストの拒否は、例えば、リクエストを拒否したことの表示及び／または拒否の一つ以上の理由を有するリクエストに応答することによって実行することができる。リクエストの拒否は、リクエストに応答しないなどの単なる不活動も含むことができる。通常、リクエストを拒否できる任意の適切な方式を使用することができる。図６及び本明細書に記述するほぼすべてのプロセスが、特定の順序またはオペレーションを示すが、本開示の範囲は、そこで実行される順序またはオペレーションに必ずしも限定されないことに留意すべきである。例えば、図６では、暗号化された顧客鍵にアクセス６０８する前にデータ鍵を生成する６０６を示す。さらに、オペレーションは、異なる順序で実行されてもよいし、並行して実行されてもよい。同様に、顧客鍵を解読するためのドメインキーの使用６０１は、データ鍵の生成６０６、さもなければデータ鍵の入手前に実行することができる。他の変形例も、本開示の範囲内にあるとみなされる。
【００４８】
図７は、データを解読するのに使用され、そして後のデータ取得のために暗号化形式において存続するデータ鍵などのデータ鍵を解読するのに使用できるプロセス７００の例示的な実施例を示す。データ鍵は、図６に関連して前述したプロセス６００の実行などの任意の適切な方法で暗号化することができる。さらに、プロセス７００は、図６に関連して前述したプロセス６００を実行したのと同じシステムまたは別のシステムなどの任意の適切なシステムによって実行することができる。一実施形態において、プロセス７００は、データ鍵を解読するためのリクエストを受信すること７０２を含む。リクエストは、前述のような適切に構成されたＡＰＩコールであってもよい。リクエストは、例えば、前述のようなサービスプロキシから発生することができる。例えば、電子署名を解析し、その署名が認証されたか否かの表示を提供する認証サービスと通信することによって、リクエストが認証されたか否かを決定することができる７０４。さらに、図６に関連して前述したように、リクエストを実現するか否かの決定において、ポリシの実施に関連するオペレーションなどの他のオペレーションを実行することができる。
【００４９】
図面に図示した実施形態に戻ると、リクエストが認証されたことが決定された７０４の場合には、プロセス７００は、前述のような暗号化された顧客鍵にアクセスすること７０６を含むことができる。次に、アクセスした顧客鍵を使用してデータ鍵を解読することができる７１０。次に、リクエストに応答してデータ鍵を提供することができる７１２。このように、リクエストを提示したコンピュータシステムは、解読したデータ鍵を使用して、データ鍵に基づいて暗号化されたデータの解読などの一つ以上の暗号化オペレーションを実行することができる。リクエストが認証されたか否かの決定７０４に戻ると、プロセス７００は、リクエストが認証されなかったことが決定された７０４の場合、さもなければ、リクエストを実現すべきでないことの決定に基づき、リクエストを拒否すること７１４を含むことができる。
【００５０】
図８は、データストレージサービス内にデータを記憶するのに使用できるプロセス８００の例示的な実施例を示す。プロセス８００は、前述のサービスプロキシなどの任意の適切なシステムによって実行することができる。一実施形態において、プロセス８００は、データを記憶するためのリクエストを受信すること８０２を含む。リクエストは、リクエストを実現でき、かつリクエストを実現すべきか否かを決定できるパラメータに関する値を含む、ウェブサービスコールなどの適切に構成されたＡＰＩコールの形態であってもよい。リクエストは、前述のような顧客コンピュータシステムなどの任意の適切なコンピュータシステムから発生させることができる。リクエストを受信する８０２と、リクエストが認証されたか否かの決定を為すことができる８０４。リクエストが認証されたか否かの決定８０４は、それぞれ、図６及び図７に関連して記述したプロセス６００及び７００に関連して前述したような任意の適切な方式において為すことができる。例えば、サービスプロキシは、認証サービスと通信して、リクエストが認証されたか否かの決定を認証サービスから受信することができる。前述のプロセスと同様に、リクエストの実現がポリシに従うか否かの確認などの追加のオペレーションも実行することができる。
【００５１】
リクエストが認証されたこと及び／または概してリクエストを実現すべきことを決定した８０４の場合には、プロセス８００は、ローカル暗号化サービスが提供するデータ鍵をリクエストすること８０６を含むことができる。ローカル暗号化サービスは、プロセス８００を実行するシステムと同じゾーン内に存在する、前述のような暗号化サービスであってもよい。例えば、暗号化サービスは、図３に参照される暗号化サービス３１２であってもよい。暗号化サービスは、図４に参照される暗号化サービス４１２であってもよい。本明細書に記述するすべてのプロセスと同様に、変形例が、本開示の範囲内にあるものとしてみなされ、暗号化サービスが、必ずしもローカル暗号化サービスではなく、データが最終的に記憶されるデータストレージサービスが位置するゾーンとは異なるゾーン内に存在する暗号化サービスであってもよいことに留意すべきである。このように、暗号化サービスは、必ずしもローカルではなく、データが記憶されるゾーンとは異なるゾーン内に存在してもよい。さらに、データにアクセスするのに必要な鍵は、暗号化されたデータそれ自体とは異なるゾーン内に記憶される。
【００５２】
図８に図示するように、ローカル暗号化サービスからデータ鍵を求めるリクエストに対する応答が提供され、暗号化されたデータ鍵を暗号化サービスから受信することができる８０８。データ鍵は、暗号化サービスによって暗示的に決定することができる、またはローカル暗号化サービスへのリクエストにおいて指定することができる顧客鍵によって暗号化することができる。次に、受信したデータ鍵を使用してデータを暗号化することができる８１０。データが暗号化される８１０の時点で、プロセス８００は、暗号化されたデータ及び暗号化されたデータ鍵を包含するデータオブジェクトを生成すること８１２を含むことができる。８１２において生成されたデータオブジェクトを、別のゾーン内のバッキングストレージサービスに伝送することができる８１４。図３を参照するように、例えば、ストレージサービスプロキシ３１０は、データオブジェクトを、ストレージサービス３１４へのウェブサービスコールなどの適切に構成されたＡＰＩコールを通じてストレージサービス３１４に伝送することができる。図４を参照するように、ストレージサービスプロキシ４１０は、適切に構成されたＡＰＩコールを通じてストレージサービス４１４にデータオブジェクを伝送することができる。
【００５３】
プロセス８００を実行するシステムにデータ鍵がもはや必要でなくなると、プロセス８００は、暗号化されていないデータ鍵を破壊することを含むことができる。暗号化されていないデータ鍵の破壊８１６は、任意の適切な方法で、かつ通常、データ鍵へのアクセスがプロセス８００を実行するシステムによって喪失される方法で実行することができる。一実施例として、暗号化されていない形式のデータ鍵は、ランダムアクセスメモリ（ＲＡＭ）などの揮発性メモリ、または中央処理装置（ＣＰＵ）レジスタにおいてのみデータ鍵が記憶されるように、プロセス８００を実行するシステムによって管理することができる。このように、揮発性メモリへの電力が遮断されると、記憶されている暗号化されていないデータ鍵へのアクセスが喪失される、または電力が全く遮断されない場合には、プロセス８００を実行するシステムが、例えば、将来のリクエストが受信される追加の時間だけプロセス８００を実行することによって動作し続けるときに、データ鍵が記憶されているメモリロケーションが最終的には上書きされる。別の実施例として、データ鍵は、０ビットのシーケンス、１ビットのシーケンス、ランダムビットのシーケンス、または極秘情報を含有しないビットのシーケンスであってもよい他のデータを含む揮発性メモリまたは不揮発性メモリにかかわらず、データ鍵が記憶されている任意のメモリロケーションをオーバーライドすることによって破壊することができる。通常、データ鍵へのアクセスを喪失する任意の方法を使用することができる。さらに、前述のように、暗号化されていないデータ鍵の破壊８１８は、プロセス８００の実行と同期的に実行してもよく、かつ必ずしも図８に図示する順序のオペレーションでなくてもよく、または例えば、データ鍵を最終的に破壊するように動作する、もしくはデータ鍵を他のデータに上書きできるプロセスの一部において非同期的に実行してもよい。
【００５４】
リクエストが認証されたか否かの決定８０４に戻ると、リクエストが認証されなかったこと、さもなければ、リクエストを実現すべきでないことが決定された８０４の場合には、プロセス８００は、前述のようなリクエストを拒否すること８１８含むことができる。本明細書に論じるすべてのプロセスと同様に、変形例が、本開示の範囲内にあるものとしてみなされる。例えば、図８に図示するように、データ鍵を求めるリクエストが暗号化サービスに提示され、この暗号化サービスは、データ鍵を生成、さもなければ入手し、それに応じて、プレーンテキスト及び暗号文の形態におけるデータ鍵を提供する。代案として、プロセス８００を実行するシステムは、データ鍵をそれ自体で生成または入手し、暗号化のためにデータ鍵を暗号化サービスに提供することができる。その結果、プロセス８００を実行するシステムがデータ鍵へのアクセスを既に有し得るので、暗号化サービスは、暗号化されたデータ鍵を戻し、そしてデータ鍵は必ずしも戻さなくてもよい。ここでも前述のように、８０２において受信されたデータを記憶するためのリクエストは、前述のような顧客計算システムから受信したものとして記述される。さまざまな実施形態において、リクエストは、必ずしも顧客コンピュータシステムから発生しなくてもよく、顧客のためのサービスとして最終的に記憶されるデータにかかわらず、別のコンピュータシステムから発生してもよい。
【００５５】
さらに、変形例の別の実施例として、データを記憶するためのリクエストは、外部の別のシステムから受信しなくてもよい。例えば、プロセス８００の実行がデータの生成を含み、データの生成において、前述のように、暗号化され、データストレージサービスに伝送されるデータを得るオペレーションを実行できる。さらに、プロセス８００は、図８に図示するように、暗号化されたデータ及び暗号化されたデータ鍵を包含するデータオブジェクトの生成８１２を含む。一実施例として、暗号化されたデータと暗号化されたデータ鍵とは、共に連結して、データオブジェクトを形成することができる。このように、暗号化されたデータ鍵と暗号化されたデータオブジェクトとは、後述するような後のアクセスのために共に存続する。しかしながら、さまざまな実施形態において、暗号化されたデータ鍵と暗号化されたデータとは、必ずしも共に存続しなくてもよいが、種々のストレージサービスにおけるデータストレージサービスの種々の論理データコンテナにおいて、または他の方式において存続することができる。例えば、暗号化されたデータ鍵は、ローカルに記憶することができ、一方で、暗号化されたデータは、前述の技術に従いストレージサービスに伝送される。保持されたメタデータは、暗号化されたデータ鍵と、鍵に基づいて暗号化されたデータとの間の関連付けを存続させることができる。他の変形例も、本開示の範囲内にあるとみなされる。
【００５６】
図９は、データストレージサービスからデータを取得するのに実行できるプロセス９００の例示的な実施例を図示する。このデータは、図８に関連して前述したプロセス８００に従いデータストレージサービスによって記憶することができる。プロセス９００は、図８に関連して前述したプロセス８００を実行したシステム、またはデータストレージサービスが位置するゾーンとは異なるゾーン内の別のシステムなどの任意の適切なシステムによって実行することができる。図９に図示するように、プロセス９００は、前述のような適切に構成されたＡＰＩコールの形態であってもよい、データを取得するためのリクエストを受信すること９０２を含む。前述のように、リクエストが認証されたか否かの決定を為すことができる９０４、リクエストが認証されたことを決定した９０４の場合には、プロセス９００は、バックエンドストレージサービスから暗号化されたデータ及び暗号化されたデータ鍵を入手すること９０６を含むことができる。例えば、図３を参照するように、ストレージサービスプロキシ３１０は、暗号化されたデータ内に暗号化されたデータ鍵を含むデータオブジェクトを取得するためのリクエストをストレージサービス３１４に提示することができる。ストレージサービス３１４は、そのリクエストに応答して、暗号化されたデータ及び暗号化されたデータ鍵を包含するデータオブジェクトを提供することができる。図４を参照するように、例えば、ストレージサービスプロキシ４１０は、暗号化されたデータ及び暗号化されたデータ鍵を包含するデータオブジェクトを求めるリクエストをストレージサービス４１４に提示し、ストレージサービス４１４は、そのリクエストに応答して、暗号化されたデータ及び暗号化されたデータ鍵を包含するデータオブジェクトを提供することができる。しかしながら、前述のように、暗号化されたデータ及び暗号化されたデータ鍵は、必ずしも共に存続しなくてもよく、プロセス９００の実行は、さまざまな方式においてかつさまざまな実施形態に従い、暗号化されたデータを入手することを含み、そして暗号化されたデータ鍵を含むことができる。これは例えば、暗号化されたデータを記憶するシステムから暗号化されたデータを取得し、暗号化されたデータ鍵を記憶する別のシステムから暗号化されたデータ鍵を取得することを含む。
【００５７】
暗号化されたデータ及び暗号化されたデータ鍵が入手される９０６の時点で、プロセス９００は、前述のようなローカル暗号化サービス、またはデータストレージサービスが位置するゾーンとは異なるゾーン内に存在する暗号化サービスなどの任意の適切な暗号化サービスであってもよい暗号化サービスが提供するデータ鍵の解読をリクエストすること９０８を含むことができる。暗号化サービスが提供するデータ鍵の解読を求めるリクエスト９０８に応答し、解読したデータ鍵を、リクエストが提示された暗号化サービスから受信することができる９１０。次に、解読したデータ鍵を使用して暗号化されたデータを解読し、次に、データを取得するためのリクエストに応答して解読したデータを提供することができる９１４。リクエストが認証されたか否かの決定９０４に戻ると、リクエストが認証されなかったこと、さもなければ、リクエストを実現すべきでないことが決定された９０４場合、プロセス９００は、リクエストを拒否すること９１６を含むことができる。さらに、図面には図示しないが、プロセス９００は、前述のような暗号化されていないデータ鍵を破壊することを含むことができる。例えば、データを暗号化形式においてストレージサービスに記憶したままにし、それ故に、データ鍵への権限のないアクセスが問題となり得る場合には、暗号化されていないデータ鍵は、破壊することができる。
【００５８】
前述のように、本明細書に記述するさまざまな技術を利用できるサービスのタイプは、さまざまな実施形態に従い異なってもよい。例えば、いくつかの実施例において、データベースサービスのサービスプロキシは、サービスプロキシが別のゾーン内のデータベースサービスのＡＰＩプロキシとしてサービスする場合には、一つのゾーン内に位置することができる。図３を参照するように、例えば、ストレージサービスプロキシ３１０は、ストレージサービス３１４であってもよいデータベースサービスのサービスプロキシであってもよい。同様に、図４を参照するように、ストレージサービス４１４は、ストレージサービスプロキシ４１０がＡＰＩプロキシとして作用するデータベースサービスであってもよい。前述のように、サービスプロキシからバッキングサービスに送信されるすべてではないが一部のデータは、暗号化することができる。それ故に、図１０は、データベースサービスによって記憶できるデータの例示的な実施例を示す。特に、図１０は、例えば、前述のようなサービスプロキシであってもよい仮想データベースサービスに記憶された、リレーショナルテーブル１００２内において組織化されたデータの例示的な図を示す。図１０に図示するように、データベーステーブル１００２は、例えば、販売取引についてのデータであってもよいさまざまなデータからなる。ただし、本開示の範囲は、本明細書に言及する特定のタイプのデータに限定されない。この特定の実施例において、テーブル１００２の各列は、異なるタイプの情報に対応する。例えば、示す第一の列は、ファーストネームに対応し、第二の列は、ラストネームに対応し、図示した第三の列は、取引金額に対応し、最後の列は、対応する取引が発生した日付に対応し得る。テーブル１００２内の行は、例えば、取引をした人物、取引及び取引が発生した日付を特定することができる。省略符号に示すように、その上、購買したアイテムの識別子、購買したアイテム、支払方法（クレジットカードなど）、及び他のタイプのデータなどの他の情報も含むことができる。テーブル１００２内のデータの一部は、極秘として考慮することができる。例えば、顧客の氏名であり得るファースト及びラストネームは、極秘データとして考慮し、さまざまなプライバシー法、規則、規制または一般的な優先事項に従わせることができる。取引金額及びそれが発生した日付などのデータの一部は、極秘として考慮しなくてもよい。
【００５９】
それ故に、前述のさまざまな技術の実行は、テーブル１００２内のデータをバッキングデータベースサービスに送信する前に、そのデータのすべてではないが一部を暗号化することを含むことができる。図１０は、バッキングデータベースサービスにおいて同じデータがどのように組織化され得るかを図示するテーブル１００４の例示的な実施例を示す。特に、仮想データベースサービスとバッキングデータベースサービスとの間を移行する矢印に示すように、テーブル１００２内のデータは変換され、ファースト及びラストネームに対応する第一の二つの列がそれぞれ、場合によっては他の列が暗号化されたテーブル１００４が得られる。しかしながら、金額に対応するテーブル内の値は、暗号化されていないままである。このように、詳細については後述するように、バッキングデータベースサービスは、例えば、暗号化されていないデータを使用してクエリを処理することによって、暗号化されていないデータに関する少なくともいくつかの機能性を提供することができる。リレーショナルデータベーステーブルのうちの暗号化された列は連続しているが、暗号化される列は、必ずしも連続していなくてもよい。さらに、図１０は、リレーショナルデータベーステーブルの例示的な実施例を示すが、本開示の範囲は、リレーショナルデータベース、及びデータセットの関連組織に限定されず、他のタイプのデータベース及び概して、構造化された方法においてデータを記憶する任意のタイプのデータストレージサービスにも及ぶ。通常、クエリを処理できる任意のタイプのデータベースを、さまざまな実施形態に従い使用することができる。
【００６０】
計算資源プロバイダのデータベースが、例えば、前述の技術に従い、暗号化されたデータのすべてではないが一部を記憶する場合には、データベースクエリの処理が種々のゾーンにわたって発生する場合がある。つまり、一部の処理が一つのゾーン内で発生し、他の処理が他のゾーン内で発生する場合がある。それ故に、図１１は、データベースクエリを処理するのに使用できるプロセス１１００の例示的な実施例を示す。プロセス１１００は、前述のサービスプロキシなどの任意の適切なシステムによって実行することができる。例えば、サービスプロキシは、プロセス１１００を実行して、別のゾーン内のバッキングサービスに記憶されている実際のデータにかかわらず、受信するクエリを処理することができる。一実施形態において、プロセス１１００は、データベースに関するクエリを受信すること１１０２を含む。クエリは、適切に構成されたＡＰＩコールにおいてエンコードされ、プロセス１１００を実行するシステムにおいて受信することができる。次に、クエリを構文解析、さもなければ別の様に解析して極秘クエリ及び非極秘クエリを生成することができる１１０４。この極秘クエリ及び非極秘クエリの構成においては、非極秘クエリの結果としていくらかの中間データの修正を伴う、非極秘クエリその後の極秘クエリの順次実行が、より詳細については後述するように、クエリを実行するのと同じ結果をもたらす。
【００６１】
クエリの構文解析は、任意の適切な方法で実行することができる。例えば、いくつかの実施形態において、データベーステーブルの列は、極秘データを含有する列であるか否かを示すようにタグが付けられる。図１０を参照するように、例えば、図示する第一の二つの列に、極秘としてのタグを付け、他の列には、非極秘としてのタグを付けることができる。この極秘または非極秘としてのタグ付けは、タグの欠如によって暗示的にすることもできる。タグによって、ストレージプロキシは、データをバッキングサービスに伝送する前に、どのデータを暗号化するかを決定することができる。サービスプロキシは、例えば、そのＡＰＩインターフェースを通じてデータを受信し、データが影響を及ぼすデータベース内の列を特定し、極秘としてのタグが付けられた列が存在する場合には、その列を決定し、特定した列内のデータをバッキングサービスに伝送する前に、そのデータを暗号化するように構成できる。クエリの構文解析は、極秘としてのタグが付けられた列の検索、または通常、極秘としてのタグが付けられたデータの検索を要求するクエリの一部を特定することによって実行することができる。同様に、クエリの構文解析は、非極秘としてのタグが付けられたデータの検索を要求するクエリを特定することによって実行することができる。図１０の例示的な実施例に戻ると、例えば、クエリは、ラストネームに関する一つ以上の条件、並びに取引金額に関する一つ以上の条件を満たす、リレーショナルデータベース内のデータを特定するように構成することができる。前述のように、ラストネームの列には、極秘としてのタグを付け、一方で、取引金額の列に、非極秘としてのタグを付けることができる。このように、そのようなクエリの構文解析は、取引金額に関する一つ以上の条件を満たすデータを特定するためのサブクエリをクエリから抽出することによって実行することができる。特定されたデータの一部は、ラストネームに関する一つ以上の条件を満たさなくてもよい。このように、ラストネームに関する一つ以上の条件を満たすデータを特定するように構成されたサブクエリを、極秘クエリとして特定することができる。
【００６２】
図１１に戻ると、非極秘クエリは、例えば、バッキングデータベースサービスへの適切に構成されたＡＰＩコールの形態において、バッキングデータベースサービスに転送することができる１１０６。バッキングデータベースサービスは、非極秘クエリを受信し、１１０２においてクエリを受信した顧客に代わって、バッキングデータベースサービスが保持するデータベースにおける非極秘クエリを処理することができる。次に、バッキングデータベースサービスは、予備応答を生成し、１１０４において生成された極秘クエリに一致しないデータを含み得る場合に、前述のように、過剰包摂であり得る生成した予備応答を提供することができる。それ故に、プロセス１１００は、バッキングデータベースサービスから予備応答を受信すること１１０８を含む。予備応答は、例えば、バッキングデータベースサービスへのＡＰＩコールに対する応答として受信することができる。
【００６３】
予備応答をバッキングデータベースサービスから受信する１１０８時点で、プロセス１１００は、暗号化されたデータ鍵を入手すること１１１０を含むことができる。暗号化されたデータ鍵の入手１１１０は、任意の適切な方法で実行することができる。例えば、暗号化されたデータ鍵は、予備応答に含まれてもよい。また、別の実施例として、暗号化されたデータ鍵は、プロセス１１００を実行するシステムが位置するゾーンと同じゾーン内に存在してもよいし、異なるゾーン内に存在してもよい別のストレージサービスにおいてローカルに記憶されてもよい。暗号化されたデータ鍵が入手される１１１０の時点で、プロセス１１００は、前述のような暗号化サービスが提供するデータ鍵の解読をリクエストすること１１１２を含むことができる。それ故に、解読したデータ鍵は、暗号化サービスから１１１４を受信することができ、データ鍵は、バッキングデータベースサービスから受信した予備的結果の暗号化された部分１１１６を解読するために１１１６を使用することができる。
【００６４】
暗号化、それ故に解読を、さまざまな実施形態に従うさまざまな方式において実行できることに留意すべきである。例えば、暗号化された、データベーステーブル内の各入力は、別々に暗号化することができる。このように、予備的結果において戻されたデータは、予備的結果が暗号化されたすべてのデータを含むか否かにかかわらず、解読することができる。さらに、前述のように、単一のデータ鍵を使用して、予備的結果における暗号化されたすべてのデータを解読することができる。それ故に、使用される暗号文に応じて、暗号化された、データベース内の各入力を、異なる初期化ベクトル（ノンス）を使用して暗号化することができる。異なるデータ鍵を用いた各入力の暗号化、異なるデータ鍵を用いた各列の暗号化、及び概して、さまざまな方式における暗号化の実行などの多数の変形例が、本開示の範囲内にあるものとしてみなされる。
【００６５】
図１１に戻ると、データ鍵を使用して予備的結果の暗号化された部分を解読する１１１６の時点で、プロセス１１００は、解読した予備的結果についての極秘クエリを実行してクエリ結果を入手することができる１１１８。次に、クエリ結果を、１１０２において受信したクエリに応答して提供することができる１１２０。このように、さまざまな技術的利点が達成される。例えば、前述のように、仮想データベースサービスとも呼ばれ得るサービスプロキシは、限られたインフラストラクチャを含むことができる。他方において、データベースサービスは、大量のデータを処理するために、遥かに大きなインフラストラクチャを含むことができる。仮想データベースサービスは、例えば、バッキングデータベースサービスが処理するデータ量を処理できるだけの仮想データサービスを可能にするインフラストラクチャに不足している場合がある。このように、バッキングデータベースサービスの膨大なインフラストラクチャを使用して、前述したさまざまな理由のためにデータの一部が暗号化された場合に、ゾーン内の非極秘クエリの初期の処理を実行することができる。仮想データベースサービスの大いに限られたインフラストラクチャを使用して、クエリの処理を完了することができる。このように、極秘とみなされたデータの存在にかかわらず、データベースサービスのインフラストラクチャを利用することができる。
【００６６】
さらに、図１１は、クエリがサービスプロキシにおいて受信され、一つがバッキングサービスにおいて実行され、もう一つがサービスプロキシにおいて実行される二つのクエリをサービスプロキシが生成する場合のプロセスを示すが、プロセス１１００は、異なる方式において動作するように適応することもできる。例えば、いくつかの実施形態において、完全なクエリを、それ自体が二つのクエリを生成できるバッキングサービスに転送し、その少なくとも一つを予備的結果とともにサービスプロキシに送ることもできる。別の実施例として、バッキングサービスは、極秘としてのタグが付けられたデータのサブセットに伴う任意の条件を無視（または、満たすことが要求される条件などの特定の条件を無視）しつつ、完全なクエリを処理することができる。プロキシは、予備的結果についての全クエリも処理することもできる。他のタイプのデータベースに対する適応を含む他の変形例も使用することができる。
【００６７】
前述のように、本開示のさまざまな実施形態は、多数のゾーン、多数のサービスプロキシ及び多数のバッキングゾーンを利用することができる。場合によっては、サービスプロキシは、種々のバッキングゾーンにデータを選択的に提供することができる。例えば、ストレージサービスは、種々のゾーンにおける異なる利点を有することができる。例えば、一つのゾーン内のデータストレージサービスは、別のゾーン内の同一または同様のデータストレージサービスよりも安価である場合がある。別の実施例として、一つのゾーン内のデータストレージサービスは、別のゾーン内の同一または同様のデータストレージサービスよりも待ち時間の点で優れている場合がある。別のゾーンに勝るあるゾーンの利点にかかわらず、前述のように、さまざまな懸案事項が、あるゾーンまたは別のゾーンに記憶されているデータの要件または優先事項について生じることがある。例えば、異なる管轄区域は、さまざまなタイプのデータについて異なる規制を有する場合がある。故に、いくつかの利点を達成し、及び／または通常、さまざまな規制に従うために、一部のデータをあるゾーンに記憶し、他のデータを、さまざまな要件及び／または優先事項に従うために別のゾーンに記憶することができる。
【００６８】
それ故に、ストレージサービスプロキシ（または、別のサービス用のプロキシ）は、さまざまな要因に少なくともある程度基づいて、データを記憶する場所を能動的に決定することができる。例えば、一部の顧客は、アカウント構成を通じて、またはＡＰＩコールにおけるパラメータとして、それらのデータを特定のゾーン内に記憶するようリクエストすることができる。別の実施例として、同じ顧客用の一部のタイプのデータを、あるゾーン内に記憶し、一方で、他のタイプのデータを、いろいろな規制要件の理由から、別のゾーン内に記憶することができる。なおも別の実施例として、顧客は、サービスプロキシが一つ以上のＤＬＰポリシを利用し、一部のデータがあるゾーンに送信され、かつ他のデータが別のゾーンに送信されるように、計算資源サービスプロバイダの計算資源を構成することができる。それ故に、図１２は、複数のゾーンからの選択を利用するさまざまな実施形態を実践することができる環境１２００の例示的な実施例を示す。
【００６９】
図１２に図示するように、環境１２００は、顧客構内１２０２、仮想ゾーン１２０４及び一つ以上のバッキングゾーン１２０６を含む。この特定の実施例において、図１２は、ｎが正の整数であるｎ個のバッキングゾーンを図示する。顧客構内１２０２に関する仮想ゾーン１２０４は、図３と同様に図示するが、図４に示すような変形例も本開示の範囲内にあるものとみなされることに留意すべきである。図１２に図示するように、顧客１２０８は、リクエストを提示し、ストレージサービスプロキシ１２１０または他のサービスプロキシ及び暗号化サービス１２１２からの応答を受信する。バッキングゾーン１２０６の各々は、前述のようなバッキングサービス及び認証サービスを含むことができるが、簡略化の目的のために、図１２にはそのようなサービスは図示しない。一実施形態において、顧客１２０８は、ストレージサービスプロキシ１２１０にリクエストを提示し、次に、このストレージサービスプロキシ１２１０は、対応するリクエストを選択し、必要に応じて、それをバッキングゾーン１２０６の一つに提示することができる。ＤＬＰポリシ、顧客の優先事項、アカウント構成、ＡＰＩコールパラメータなどに従い妥当性を決定することができる。
【００７０】
図１３は、さまざまな実施形態に従う、図１２に図示するなどのさまざまなバッキングサービスを利用するのに使用できるプロセス１３００の例示的な実施例を示す。図１３に図示するように、プロセス１３００は、顧客データを入手すること１３０２を含む。顧客データは、例えば、顧客が、計算資源サービスプロバイダを利用して、さまざまな一般人または通常、その顧客の他の顧客にサービスを提供する場合に、例えば、顧客のコンピュータシステムそれ自体または顧客に代わる他のコンピュータシステムから入手することができる。顧客データが入手される１３０２のときに、プロセス１３００は、顧客データ用のバッキングゾーンを決定すること１３０４を含むことができる。バッキングゾーンの決定１３０４は、相違する実施形態に従うさまざまな方式において実行することができる。例えば、前述のように、顧客のアカウント構成は、どのバッキングゾーンが使用できるかを示すことができる。別の実施例として、データそれ自体の性質を使用して、どのバッキングゾーンを使用するかを決定することができる。例えば、データがスキーマに従い組織化された場合には、スキーマに従うデータの位置を使用して、どのバッキングゾーンを使用するかを決定することができる。なおも別の実施例として、顧客データのソース（ネットワークアドレス、ユーザＩＤ、行政上の管轄区域など）を使用してバッキングゾーンを決定することができる。通常、バッキングゾーンを決定できる任意の方式を使用することができる。
【００７１】
顧客データ用のバッキングゾーンを決定する１３０４と、プロセス１３００は、前述のようなローカル暗号化サービス、または通常、前述のような別の適切な暗号化サービスが提供するデータ鍵をリクエストすること１３０６を含むことができる。それ故に、データ鍵及び暗号化されたデータ鍵を、データ鍵を求めるリクエストが提示された暗号化サービスから受信することができる１３０８。次に、データ鍵を使用して顧客データを暗号化する１３１０、暗号化された顧客データ及び暗号化されたデータ鍵を含むデータオブジェクトを生成することができる１３１２。次に、データオブジェクトを、決定したバッキングゾーン内のバッキングストレージサービスに伝送することができる１３１４。次に、暗号化されていないデータ鍵を、前述のように破壊することができる１３１６。
【００７２】
データをバッキングサービスに伝送するためのさまざまな前述のプロセスの変形例を含むプロセス１３００の変形例も、本開示の範囲内にあるものとしてみなされることに留意すべきである。図１４は、一実施形態に従う、データを選択的に暗号化し、データをバッキングサービスに提供するためのプロセス１４００の例示的な実施例を示す。特に、プロセス１４００は、参照により本明細書に組み入れられる米国特許第８，４１６，７０９号に記述されているようなさまざまなデータ損失防止技術を利用する。図１４のプロセス１４００は、前述のサービスプロキシなどの任意の適切なシステムによって実行することができる。トラフィックは、例えば、ＩＰもしくは伝送制御プロトコル（ＴＣＰ）パケットなどの一つ以上のデータパケット、３部構成のＴＣＰハンドシェイクもしくはＳＳＬハンドシェイクの一部などのハンドシェイクリクエスト、または他の適切なデータパケットを含むことができる。ネットワークトラフィックは、前述のような顧客または前述のような顧客に関連する別の事業体から受信することができる。いくつかの実施形態において、トラフィックは、プロセス１４００を実行するシステムのアプリケーションプログラミングインターフェース（例えば、ウェブサービスインターフェース）を通じて受信される。ネットワークトラフィックは、一つ以上のＤＬＰポリシ基準に関して解析することができる１４０４。ＤＬＰポリシ基準は、前述の米国特許第８，４１６，７０９号に論じられているものを含むことができる。例えば、ＩＰまたはＴＣＰパケット内のデータは、クレジットカード番号、社会保障番号、及び／または極秘とみなされ得る、さもなければ修正が所望され得る任意の他のタイプのデータなどの特定のデータタイプのデータを検査することができる。
【００７３】
ＤＬＰの基準が満たされているか否かの決定を為すことができる１４０６。ＤＬＰ基準が満たされていることを決定した１４０６の場合には、プロセス１４００は、受信したネットワークトラフィックを暗号化する１４０８、ネットワークトラフィックをバッキングサービスに伝送すること１４１０を含むことができる。しかしながら、ＤＬＰ基準が満たされていないことを決定した１４０６の場合には、次に、ネットワークトラフィックを、１４１０を暗号化せずにバッキングサービスに伝送してもよい。
【００７４】
前述したように、ＤＬＰ基準が満たされた場合にデータのすべてではないが一部を解読することを含むさまざまな変形例が、本開示の範囲内にあるものとしてみなされる。さらに、データの暗号化に追加してまたはその代わりに追加のアクションを取り込むことができる。実例のアクションは、これらに限定されないが、受信したネットワークトラフィックのスナップショット、すなわち、コピー、バッキングサービスなどのデータストレージサービスまたはパケットトレーシングを実行する別のデータストレージサービス内でのスナップショットの存続、受信したネットワークトラフィックの隔離の実行、ネットワークトラフィックの改善されたロギングの起動、及び／またはアクションの拒否を含む。通常、ＤＬＰの懸案事項に対処するように構成された任意のタイプのアクションを使用することができる。さらに、ＤＬＰまたは他のポリシ基準が満たされたときにとられるアクションは、顧客が構成することができる。通常、データは、参照により本明細書に組み入れられる、２０１２年６月７日に出願された「ＦＬＥＸＩＢＬＹ  ＣＯＮＦＩＧＵＲＡＢＬＥ  ＤＡＴＡ  ＭＯＤＩＦＩＣＡＴＩＯＮ  ＳＥＲＶＩＣＥＳ」と題された米国特許出願第１３／４９１，４０３号に記述されているような技術を利用する顧客仕様書に従い操作することができる。
【００７５】
特に、顧客は、例えば、パケットマングリング技術を使用する、規則を実施するために利用される分散型計算システムのさまざまな構成要素に応じて、顧客デバイスまたは他のデバイスからのさまざまなタイプのデータ、インバウンド及び／またはアウトバウンドを修正できる特定の規則を指定することができる。例えば、顧客は、サービスプロキシを通じた特定の外部デバイスタイプへのデータ、またはロケールが、それらを利用するのに必要な変更及びデータパターン（または、他のマーカ）の分散型計算システムによる決定に応じて、（例えば、法規制の順守及び／またはパフォーマンスの最適化のために）顧客提供の仕様書に適合することを指定することができる。その後、与えられた実施例では、実施は、顧客とバッキングサービスなどの分散型計算システムの構成要素に問い合わせる外部デバイスとの間のネットワークトラフィックのいくつかまたはすべての出力先変更を含むことができる。決定した方法における処理において、出力先変更されたデータを、元々の宛先に中継することができる。考慮されるように、同様のプロセスを、インバウンドネットワークトラフィックに利用することができる。
【００７６】
別の実施例において、データ変更サービスは、サービスをリクエストする顧客によって制御されるインスタンスと、異なる顧客によって制御される別のインスタンスである、分散型計算システムの二つの仮想化されたインスタンスの間の、サービスプロキシを通じたデータ輸送を修正するのに有効となり得る。サービスプロキシにおいて実施される分散型計算システムの別個の仮想化されたインスタンスを、顧客がリクエストした規則を実施するために呼び出すことができ、またはいくつかの実施形態において、修正を所望されるデータからの（または、そのデータへの）同じインスタンスが、例えば、隔離位置における実際の修正または「サンドボックス」を実行することができる。サービスをリクエストする顧客によって制御される任意のデバイスもしくは構成要素に、またはそこから（その性質にかかわらず）顧客によって制御されないデバイスに輸送されるデータは物理的、仮想、集合、別な方式であるにかかわらず、サービスによってパケットマングリングに従うことができることが考えられる。サービスは、いくつかの実施形態において、顧客または外部デバイスタイプ、地理的な位置などを含む多くの基準に基づいて細かい粒度で制御可能なものであってもよい。
【００７７】
そのようなデータ変更サービスの実施例の実施は、所与のデータ取引タイプに伴う、いくつかまたはすべての構成要素に適合する一つ以上のポリシの生成を含むことができる。ポリシは、いくつかの実施形態において、顧客が規定した規則の受信時に分散型計算システムによって生成され、データタイプ、接続されたデバイスタイプ、顧客特性、ネットワークトポロジ、または有効なポリシの生成に関する任意の他の特性を考慮に入れることができる。そのようなポリシは、関連するデバイスに分配されると、すべての制御されたデバイス（または、その所望のサブセット）が、関連する顧客が規定した規則を統合された予測可能な方法において実施するように作用することを保証することができる。いろいろなレベルの抽出及び／またはアクセスにおいて非常に多い数のデバイスを顧客が制御する実施形態では、そのようなポリシは、例えば、極めて重要なまたは厳しい規則が、すべての影響を受けたデバイスにわたって効力を及ぼすことも保証することができる。
【００７８】
さらに、プロセス１４００に関連する追加のオペレーションを実行することができる。例えば、ネットワークトラフィックの解析１４０４は、一つ以上の他のオペレーションの実行に情報を与えることができる。いくつかの実施形態において、例えば、暗号鍵は、解析に少なくともある程度基づいて決定することができる。一部のタイプのデータは、例えば、（例えば、一つ以上の規制及び／または優先事項に従い）他のタイプのデータよりも強固な暗号化を要求することができる。解析によってデータのタイプがわかった場合には、そのデータを、解析によって決定することができる別のタイプのデータよりも小さい鍵を使用して暗号化することができる。第一のタイプのデータは、例えば、１２８ビットの鍵を使用する暗号化を要求し、一方で、別のタイプのデータは、２５６ビットの鍵を使用する暗号化を要求することができる。鍵は、それ故に、解析に基づいて決定（例えば、データストレージから生成または入手）することができる。
【００７９】
本開示の実施形態は、以下の条項に照らして記述することができる。  
〔１〕
複数のデータストレージデバイス、及び第一のウェブサービスインターフェースに伝送されるウェブサービスリクエストを受信するように構成された第一のウェブサービスインターフェースを備えており、複数のデータストレージデバイスを使用して、第一のウェブサービスインターフェースに伝送されるウェブサービスリクエストを処理するように構成された第一のデータストレージサービスと、
第二のウェブサービスインターフェースを備えている第二のデータストレージサービスと、を備えており、第二のデータストレージサービスが、第一のデータストレージサービスのプロキシとして、少なくとも、
第二のウェブサービスインターフェースにおいて、データを記憶するための、リクエスタからのリクエストを受信し、
第一のデータストレージサービスにはアクセスできない暗号鍵を使用してデータを暗号化し、
暗号化されたデータを、永続記憶のために、リクエスタに代わって第一のデータストレージサービスに伝送し、
第一のデータストレージサービスによる暗号鍵へのアクセスを防止しつつ、暗号鍵へのアクセスを維持するよう動作するように構成された、システム。  
〔２〕
第一のデータストレージサービスが、一つ以上の施設のうちの第一のセットにおける計算資源を含んで実施され、
第二のデータストレージサービスが、一つ以上の施設のうちの第一のセットとは互いに素の一つ以上の施設のうちの第二のセットにおける計算資源を含んで実施される、条項１に記載のシステム。  
〔３〕
第一のウェブサービスインターフェース及び第二のウェブサービスインターフェースの両方が、各々、パブリック通信ネットワークにおける公的にアドレス可能なインターフェースである、条項１または２に記載のシステム。  
〔４〕
第二のデータストレージサービスが、データを暗号化すべきことをリクエスタが指定することを必要とせずに、データを暗号化するように構成された、先行する条項のいずれか１項に記載のシステム。  
〔５〕
第二のデータストレージサービスが、さらに、第二のウェブサービスインターフェースにおいて、データを取得するためのリクエストを受信し、
第一のデータストレージサービスから暗号化されたデータを入手し、
鍵を使用して暗号化されたデータを解読し、
解読したデータを提供するように構成された、先行する条項のいずれか１項に記載のシステム。  
〔６〕
第一のデータストレージサービス及び第二のデータストレージサービスが、異なる法律上の管轄区域内において実施される、先行する条項のいずれか１項に記載のシステム。  
〔７〕
第一のデータストレージサービスが、規制の第一のセットに従い動作するように構成されており、第二のデータストレージサービスが、規制の第一のセットとは異なる規制の第二のセットに従い動作するように構成された、先行する条項のいずれか１項に記載のシステム。  
〔８〕
一つ以上のプロセッサと、
コンピュータ実行可能命令を含むメモリと、を備えており、コンピュータ実行可能命令が、一つ以上のプロセッサによって実行されたときに、システムに、
ネットワークを通じてリクエストを提示可能なアプリケーションプログラミングインターフェースを動作させ、
アプリケーションプログラミングインターフェースに提示される少なくとも複数のリクエストのうちの各々の第一のリクエストについて、第一のリクエストを処理し、少なくとも、
鍵を使用して、第一のリクエストの処理に伴う、データについての一つ以上の暗号化オペレーションを実行させ、
鍵へのアクセスを喪失し、第一のリクエストを単独で処理できるように構成されているサービスに、暗号化形式におけるデータについての一つ以上のオペレーションを実行させる第二のリクエストを、ネットワークを通じて伝送させる、システム。  
〔９〕
システムが、サービスプロバイダによって提供されたサービスタイプの第一のインスタンスの一部として動作し、
サービスが、サービスプロバイダによって提供されたサービスタイプの第二のインスタンスの一部として動作する、条項８に記載のシステム。  
〔１０〕
アプリケーションプログラミングインターフェースがウェブサービスインターフェースである、条項８または９に記載のシステム。  
〔１１〕
複数のリクエストのうちの少なくともいくつかが異なる事業体によって伝送され、各々の異なる事業体がサービスのアカウントに対応する、条項８〜１０のいずれか１項に記載のシステム。  
〔１２〕
実行可能命令が、さらに、システムに、リクエストを処理するときに一つ以上の暗号化オペレーションを実行するか否かを選択的に決定させ、
複数のリクエストが、システムによって処理されたリクエストのセットのうちのサブセットであり、サブセットが、システムが一つ以上の暗号化オペレーションを実行することを選択的に決定したリクエストからなる、条項８〜１１のいずれか１項に記載のシステム。  
〔１３〕
実行可能命令が、さらに、システムに、複数のサービスから、第一のリクエストを処理するのに使用できるサービスを選択させる、条項８〜１２のいずれか１項に記載のシステム。  
〔１４〕
サービスへの第二のリクエストが、サービスに、暗号化されていないデータについての一つ以上のオペレーションを実行させ、システムに、一つ以上のオペレーションの実行結果、及び暗号化形式におけるデータを提供させ、
鍵を使用して、暗号化形式におけるデータの解読を含む一つ以上の暗号化オペレーションを実行させ、
実行可能命令が、さらに、システムに、暗号化されていないデータ及び解読したデータを含むデータの集合についての一つ以上のオペレーションを実行させる、条項８〜１３のいずれか１項に記載のシステム。  
〔１５〕
サービスが、システムを動作する第二の組織的な事業体とは異なる第一の組織的な事業体によって動作する、条項８〜１４のいずれか１項に記載のシステム。  
〔１６〕
実行可能命令を含んで構成された一つ以上のコンピュータシステムの制御下で、
一つ以上のコンピュータシステムのネットワークアドレスにおけるリクエスタから、一つ以上のオペレーションを実行するための、アプリケーションプログラミングインターフェースリクエストを受信することと、少なくとも、
ネットワークを通じて、一つ以上のオペレーションを単独で実行できるように構成されたサービスにリクエストを伝送することと、ここで、リクエストが、サービスに、暗号化されたデータについての一つ以上のサービスオペレーションを実行させるように構成され、サービスにはアクセスできない鍵に基づいて暗号化されたデータが暗号化され、
鍵を使用して、暗号化されたデータに関連する一つ以上の暗号化オペレーションを実行することと、によって、アプリケーションプログラミングインターフェースリクエストを処理することと、を含む、コンピュータ実施方法。  
〔１７〕
一つ以上の暗号化オペレーションが、暗号化されたデータを入手するためのデータの暗号化を含み、
一つ以上のサービスオペレーションが、暗号化されたデータの永続記憶を含む、条項１６に記載のコンピュータ実施方法。  
〔１８〕
ネットワークアドレスがパブリックインターネットプロトコルアドレスである、条項１６または１７に記載のコンピュータ実施方法。  
〔１９〕
複数のサービスから、一つ以上のオペレーションを各々が単独で実行できるサービスを選択することをさらに含む、条項１６〜１８のいずれか１項に記載のコンピュータ実施方法。  
〔２０〕
一つ以上の暗号化オペレーションの実行が、一つ以上のコンピュータシステム及びサービスの両方にはアクセスできない暗号化情報を使用して一つ以上の他の暗号化オペレーションを暗号化サービスに実行させるためのリクエストを、ネットワークを通じて暗号化サービスに伝送することを含む、条項１６〜１９のいずれか１項に記載のコンピュータ実施方法。  
〔２１〕
ネットワークアドレスが、ドメインネームサービスからネットワークアドレスを入手するために使用可能なストリングに関連付けられ、このストリングが、任意のドメインネームサービスによるサービスのためのネットワークアドレスに関連付けられていない、条項１６〜２０のいずれか１項に記載のコンピュータ実施方法。  
〔２２〕
コンピュータシステムの一つ以上のプロセッサによって実行されたときに、コンピュータシステムに、
ネットワークアドレスにおいてアクセス可能なアプリケーションプログラミングインターフェースを提供させ、
アプリケーションプログラミングインターフェースにおいて、データのセットについての一つ以上のオペレーションを実行するための、アプリケーションプログラミングインターフェースリクエストを受信させ、少なくとも部分的に、
このデータのセットのうちの少なくともサブセットを、リモートサービスにはアクセスできないように保持された鍵に基づいて暗号化し、
このデータのセットのうちのサブセットにおいて、暗号化形式のみのデータのセットのうちのサブセットへのアクセスを有するリモートサービスを利用して、このデータのセットうちの少なくともサブセットについての一つ以上のオペレーションを実行することによって、受信したリクエストを実現させる、そこに集合的に記憶されたコンピュータ実行可能命令を有する一つ以上のコンピュータ可読記憶媒体。  
〔２３〕
ネットワークアドレスがパブリックインターネットプロトコルアドレスであり、
リモートサービスの利用が、リモートサービスのパブリックインターネットプロトコルアドレスにアドレスされたリモートサービスにリクエストを伝送することを含む、条項２２に記載の一つ以上のコンピュータ可読記憶媒体。  
〔２４〕
アプリケーションプログラミングインターフェースリクエストが、リクエストされたオペレーションを実行するための、リクエスタからのリクエストであり、
リモートサービスが、リクエスタに関するリクエストされたオペレーションを単独で実行できる、条項２２または２３に記載の一つ以上のコンピュータ可読記憶媒体。  
〔２５〕
コンピュータ実行可能命令が、さらに、コンピュータシステムに、暗号化形式におけるデータのサブセットへのリモートサービスによるアクセスを制限するか否かを決定するために、アプリケーションプログラミングインターフェースリクエストを解析させ、
リモートサービスが、暗号化形式におけるデータのサブセットへのリモートサービスによるアクセスを制限するかどうかの決定の結果として、暗号化形式におけるデータのサブセットのみへのアクセスを有する、条項２２〜２４のいずれか１項に記載のコンピュータ可読記憶媒体。  
〔２６〕
サブセットへのリモートサービスによるアクセスを制限するかどうかの決定の結果として、命令が、さらに、コンピュータシステムに、解析に少なくともある程度基づいて、暗号化鍵を決定させ、
リモートサービスによるアクセスの制限が、決定された暗号化鍵を使用してサブセットの少なくとも一部を暗号化することを含む、条項２５に記載の一つ以上のコンピュータ可読記憶媒体。  
〔２７〕
アプリケーションプログラミングインターフェースリクエストが、リクエスタから提供され、
リモートサービスを含む複数のサービスが、アプリケーションプログラミングインターフェースリクエストを実現するために、コンピュータシステムによって利用することができ、
コンピュータ実行可能命令が、さらに、コンピュータシステムに、複数のサービスから、リクエスタに特有の構成設定に少なくともある程度基づいて、リモートサービスを選択させる、条項２２〜２６に記載の一つ以上のコンピュータ可読記憶媒体。  
〔２８〕
コンピュータ実行可能命令が、さらに、コンピュータシステムに、鍵を使用してデータのセットのうちのサブセットを暗号化させ、
リモートサービスを利用した一つ以上のオペレーションの実行が、データのセットを記憶するためのストレージリクエストをリモートサービスに提示することを含む、条項２２〜２７に記載の一つ以上のコンピュータ可読記憶媒体。  
〔２９〕
複数のデータストレージデバイス、及び第一のウェブサービスインターフェースに伝送されるウェブサービスリクエストを受信するように構成された第一のウェブサービスインターフェースを備えており、複数のデータストレージデバイスを使用して、第一のウェブサービスインターフェースに伝送されるウェブサービスリクエストを処理するように構成された第一のデータストレージサービスと、
第二のウェブサービスインターフェースを備えている第二のデータストレージサービスと、を備えており、第二のデータストレージサービスが、第一のデータストレージサービスのプロキシとして、少なくとも、
データを記憶するための、リクエスタからの、第二のウェブサービスインターフェースに提示されたリクエストに関連するデータを受信し、
受信したデータを解析して、受信したデータが一つ以上のデータ損失防止ポリシの一つ以上の基準を満たしているか否かの決定を生成し、
生成した決定に従い受信したリクエストを処理するよう動作するように構成されており、
受信したデータが一つ以上のデータ損失防止ポリシの一つ以上の基準を満たしていることを決定が示した場合の、受信したリクエストの処理が、
第一のデータストレージサービスにはアクセスできないように保持されている鍵を使用して、受信したデータを暗号化することと、
第二のリクエストを第一のウェブサービスインターフェースに提示することによって、暗号化された受信したデータを第二のデータストレージサービスに伝送することと、を含む、システム。  
〔３０〕
一つ以上のデータ損失防止ポリシの一つ以上の基準を受信したデータが満たしていないことを決定が示した場合の、受信したリクエストの処理が、受信したデータを暗号化されていない形式において第一のデータストレージサービスから取得できるように、データを第一のデータストレージサービスに永続的に記憶させる第三のリクエストを、ウェブサービスインターフェースに提示することを含む、条項２９に記載のシステム。  
〔３１〕
一つ以上のデータ損失防止ポリシが、第二のウェブサービスインターフェースを通じて構成可能である、条項２９または３０に記載のシステム。  
〔３２〕
第一のウェブサービスインターフェースが、少なくとも一つのパブリックインターネットプロトコルアドレスを有する、条項２９〜３１のいずれか１項に記載のシステム。  
〔３３〕
第一のデータストレージサービスが位置している別の法律上の管轄区域の外部の行政上の管轄区域内に鍵を保持するように構成された暗号化サービスをさらに備えた、条項２９〜３２のいずれか１項に記載のシステム。  
〔３４〕
第二のストレージサービスが、さらに、第二のウェブサービスインターフェースにおいて、データを取得するための第三のリクエストを受信し、少なくとも、
第四のリクエストを第一のウェブサービスインターフェースに提示することによって、第一のデータストレージサービスから暗号化されたデータを入手し、
鍵を使用して入手した暗号化されたデータを解読し、
解読された入手した暗号化されたデータを提供することによって、第三のリクエストを処理するように構成された、条項２９〜３３のいずれか１項に記載のシステム。  
〔３５〕
一つ以上のプロセッサと、
コンピュータ実行可能命令を含むメモリと、を備えており、コンピュータ実行可能命令が、一つ以上のプロセッサによって実行されたときに、システムに、
ネットワークアドレスにおいてアクセス可能なアプリケーションプログラミングインターフェースを提供させ、
アプリケーションプログラミングインターフェースに提示された一つ以上のオペレーションを実行するためのリクエストに関連するデータを受信させ、
データを解析して、一つ以上のデータポリシの一つ以上の基準を満たすデータのサブセットを特定させ、
一つ以上のデータポリシに従いデータのサブセットを修正させ、
一つ以上のオペレーションを実行するためのリクエストを単独で処理できるリモートサービスに、修正したデータのサブセットを伝送させる、システム。  
〔３６〕
命令が、さらに、システムに、
一つ以上の基準を満たしていることに対応する一つ以上の通知を提供すること、または
特定したサブセットについての改善されたロギングを実行することの少なくとも一つを実行させる、条項３５に記載のシステム。  
〔３７〕
データのサブセットの修正が、データのサブセットを暗号化することを含む、条項３５または３６に記載のシステム。  
〔３８〕
コンピュータ実行可能命令が、さらに、システムに、
アプリケーションプログラミングインターフェースを通じて、データを修正するためのユーザ定義の規則を受信させ、
データの修正がユーザ定義の規則に従い実行される、条項３５〜３７のいずれか１項に記載のシステム。  
〔３９〕
データの解析が、データにおける、極秘として指定されたデータタイプの一つ以上のインスタンスを検出することを含み、
データのサブセットが、極秘として指定されたデータタイプの検出された一つ以上のインスタンスを含む、条項３５〜３８のいずれか１項に記載のシステム。  
〔４０〕
コンピュータ実行可能命令が、さらに、コンピュータシステムに、受信したデータの第二のサブセットを、この第二のサブセットを修正せずにリモートサービスに伝送させる、条項３５〜３９のいずれか１項に記載のシステム。  
〔４１〕
コンピュータ実行可能命令が、さらに、コンピュータシステムに、
その実現がデータのサブセットの入手を含む第二のリクエストを受信させ、
リモートサービスから修正したサブセットを取得させ、
修正したサブセットを逆に修正してサブセットを再び生成させ、
再び生成されたサブセットを使用して第二のリクエストを実現させる、条項３５〜４０のいずれか１項に記載のシステム。  
〔４２〕
実行可能命令を含んで構成された一つ以上のコンピュータシステムの制御下で、
リモートサービスへのアプリケーションプログラミングインターフェースプロキシにおいて、その実現がリモートサービスの利用を伴う、データを処理するためのリクエストを受信することと、
データを解析して、データが一つ以上のデータポリシに関与しているか否かの決定を生成することと、
生成した決定に従いデータを処理することと、を含み、データの処理が、リモートサービスを利用する前に、一つ以上のデータポリシのうちの一つ以上の関与するデータポリシに従いデータを修正することを含む、コンピュータ実施方法。  
〔４３〕
データの修正がデータを暗号化することを含む、条項４２に記載のコンピュータ実施方法。  
〔４４〕
リクエストが、アプリケーションプログラミングインターフェースプロキシのプライベートインターネットプロトコルアドレスにおいて受信される、条項４２または４３に記載のコンピュータ実施方法。  
〔４５〕
データを処理するためのリクエストが、データを記憶するためのリクエストである、条項４２〜４４のいずれか１項に記載のコンピュータ実施方法。  
〔４６〕
アプリケーションプログラミングインターフェースプロキシにおいて、一つ以上のデータポリシに関する一つ以上のユーザ定義の基準を受信することをさらに含み、
決定の生成がユーザ定義の基準に少なくともある程度基づく、条項４２〜４５のいずれか１項に記載のコンピュータ実施方法。  
〔４７〕
アプリケーションプログラミングインターフェースにおいて、その実現がリモートサービスの利用を伴う、第二のデータを処理するための第二のリクエストを受信することと、
一つ以上のデータポリシの一つ以上の基準を第二のデータが満たしていることの結果として、第二のデータがリモートサービスに伝送されることを防止することと、をさらに含む、条項４２〜４６のいずれか１項に記載のコンピュータ実施方法。  
〔４８〕
システムの一つ以上のプロセッサによって実行されたときに、システムに、
リモートサービスへのアプリケーションプログラミングインターフェースプロキシを提供させ、
このリモートサービスへの提供されたアプリケーションプログラミングインターフェースプロキシを通じて受信されたデータに一つ以上のデータ損失防止ポリシを実施させ、この実施が、少なくとも、
一つ以上のデータ損失防止ポリシの一つ以上のデータ損失防止基準を満たす受信したデータのサブセットを特定させることと、
一つ以上のデータ損失防止基準に従い、特定したサブセットについての一つ以上のアクションを実行させることと、を含み、一つ以上のアクションが、特定したサブセットにおけるデータを修正すること、及び修正したデータをリモートサービスに伝送することを含む、そこに集合的に記憶された実行可能命令を有する一つ以上のコンピュータ可読記憶媒体。  
〔４９〕
システムが計算資源サービスプロバイダによって動作し、
アプリケーションプログラミングインターフェースプロキシが、一つ以上のパブリックネットワークアドレスにおいて計算資源サービスプロバイダの複数の顧客に利用可能である、条項４８に記載の一つ以上のコンピュータ可読記憶媒体。  
〔５０〕
アプリケーションプログラミングインターフェースプロキシとリモートサービスとが、別個の施設内で実施される、条項４８または４９に記載の一つ以上のコンピュータ可読記憶媒体。  
〔５１〕
一つ以上のデータ損失防止ポリシが、アプリケーションプログラミングインターフェースプロキシを通じて、プログラム的に構成可能である、条項４８〜５０のいずれか１項に記載の一つ以上のコンピュータ可読記憶媒体。  
〔５２〕
アプリケーションプログラミングインターフェースプロキシとリモートサービスとが、種々のユーアールエルによってアクセス可能である、条項４８〜５１のいずれか１項に記載の一つ以上のコンピュータ可読記憶媒体。  
〔５３〕
データの修正が、リモートサービスに伝送する前にデータを暗号化することを含む、条項４８〜５２のいずれか１項に記載の一つ以上のコンピュータ可読記憶媒体。
【００８０】
図１５は、さまざまな実施形態に従う、態様を実施するための実施例の環境１５００の態様を図示する。認識されるように、説明のためにウェブベースの環境を使用するが、必要に応じて、さまざまな実施形態を実施するための種々の環境を使用することができる。環境は電子クライアントデバイス１５０２を含み、これは、適切なネットワーク１５０４を通じてリクエスト、メッセージまたは情報を送信及び受信し、かつ情報をデバイスのユーザに戻すように動作可能な任意の適切なデバイスを含むことができる。そのようなクライアントデバイスの実施例は、パーソナルコンピュータ、携帯電話、ハンドヘルドメッセージングデバイス、ラップトップコンピュータ、タブレットコンピュータ、セットトップボックス、パーソナルデータアシスタント、組込型コンピュータシステム、電子ブックリーダなどを含む。ネットワークは、イントラネット、インターネット、セルラーネットワーク、ローカルエリアネットワークを含む任意の適切なネットワーク、または任意の他のそのようなネットワークもしくはそれらの組み合わせを含むことができる。そのようなシステムに使用される構成要素は、ネットワークのタイプ及び／または選択された環境に少なくともある程度依存し得る。そのようなネットワークを通じて通信するためのプロトコル及び構成要素は、よく知られており、本明細書に詳細には論じない。ネットワークを通じた通信は、有線または無線接続及びそれらの組み合わせによって有効にすることができる。この実施例では、リクエストを受信し、それに応答してコンテンツを供給するためのウェブサーバ１５０６を環境が含む場合には、ネットワークはインターネットを含む。ただし、当業者に明らかであるように、他のネットワークにおいて、同様の目的を果たす代替的なデバイスを使用することができる。
【００８１】
例示的な環境は、少なくとも一つのアプリケーションサーバ１５０８及びデータストア１５１０を含む。いくつかのアプリケーションサーバ、層または他の要素が存在してもよく、プロセスまたは構成要素は、つなげられるかまたは別な様に構成されてもよく、適切なデータストアからデータを入手するなどのタスクを実行するために相互作用できることが理解すべきである。本明細書に使用されるようなサーバは、ハードウェアデバイスまたは仮想コンピュータシステムなどのさまざまな方式において実施することができる。一部の文脈において、サーバは、コンピュータシステムにおいて実行されるプログラミングモジュールを意味することがある。本明細書に使用される「データストア」という用語は、データを記憶、それにアクセス及びそれを取得することができる任意のデバイスまたはデバイスの組み合わせを意味し、任意の標準の分散されたまたはクラスタ化された環境において、任意の組み合わせ及び数のデータサーバ、データベース、データストレージデバイス及びデータストレージ媒体、を含むことができる。アプリケーションサーバは、クライアントデバイスの一つ以上のアプリケーションの態様を実行するために、必要に応じて、アプリケーションのデータアクセス及びビジネスロジックの一部（大部分ですら）を処理する、データストアを一体化させるための任意の適切なハードウェア及びソフトウェアを含んでもよい。アプリケーションサーバは、データストアと協働してアクセス制御サービスを提供し、ユーザに転送されるテキスト、グラフィックス、音声及び／またはビデオなどのコンテンツを生成することができ、そのコンテンツを、本実施例では、ハイパーテキストマークアップ言語（「ＨＴＭＬ」）、拡張マークアップ言語（「ＸＭＬ」）、または別の適切な構造化言語の形態で、ウェブサーバによってユーザに供給してもよい。すべてのリクエスト及び応答の処理、並びにクライアントデバイス１５０２とアプリケーションサーバ１５０８との間のコンテンツの送達を、ウェブサーバによって処理することができる。本明細書の他の箇所に論じられるように、本明細書に論じられる構造化されたコードを、任意の適切なデバイスまたはホストマシンにおいて実行することができるので、ウェブ及びアプリケーションサーバは必須ではなく、単に実施例の構成要素にすぎないことを理解すべきである。さらに、単一のデバイスによって実行されるような本明細書に記述するオペレーションは、別途記載がない限り、分散システムを形成し得る複数のデバイスによって集合的に実行することができる。
【００８２】
データストア１５１０は、本開示の特定の態様に関するデータを記憶するための、いくつかの別々のデータテーブル、データベースまたは他のデータストレージ機構及び媒体を含むことができる。例えば、図示するデータストアは、製作データ１５１２及びユーザ情報１５１６を記憶するための機構を含み、これらは、製作側でコンテンツを供給するために使用することができる。データストアは、報告及び解析または他のそのような目的のために使用することができる、ログデータ１５１４を記憶するための機構も含むようにも示される。ページイメージ情報及びアクセス権情報などのためにデータストアに記憶される必要があり得る多くの他の態様が存在し、必要に応じて、それを上記の機構のうちのいずれかに、またはデータストア１５１０内の追加の機構に記憶できることを理解すべきである。データストア１５１０は、それに関連するロジックを介して、アプリケーションサーバ１５０８から命令を受信し、かつそれに応答してデータを入手、更新、または別な様に処理するように動作可能である。一実施例において、ユーザは、ユーザによって動作するデバイスを通じて、ある特定のタイプのアイテムについての検索リクエストを提示する場合がある。この場合、データストアは、ユーザの身元を確認するためにユーザ情報にアクセスしてもよく、そのタイプのアイテムについての情報を入手するためにカタログ詳細情報にアクセスすることができる。その後、ユーザがユーザデバイス１５０２のブラウザを介して見ることができるウェブページ上の結果リストにおいてなどの情報をユーザに戻すことができる。対象とする特定のアイテムについての情報を、ブラウザの専用ページまたはウィンドウで見ることができる。しかしながら、本開示の実施形態が、必ずしもウェブページのコンテキストに限定されず、一般にリクエストを処理するのに適用可能なより一般的なものであってもよいことに留意すべきである。このリクエストは、必ずしもコンテンツについてのリクエストでなくてもよい。
【００８３】
各サーバは、典型的には、そのサーバの一般管理及び動作についての実行可能なプログラム命令を提供するオペレーティングシステムを含み、かつ典型的には、サーバのプロセッサによって実行されるときに、サーバがその意図された機能を実行することを可能にする命令を記憶するコンピュータ可読記憶媒体（例えば、ハードディスク、ランダムアクセスメモリ、読み取り専用メモリなど）を含む。サーバのオペレーティングシステム及び一般的な機能性についての適切な実施が公知であるかまたは市販されており、特に本明細書における本開示を考慮した当業者によって容易に実施される。
【００８４】
一実施形態における環境は、一つ以上のコンピュータネットワークまたは直接接続を使用した通信リンクを介して相互接続されるいくつかのコンピュータシステム及び構成要素を利用する分散型コンピューティング環境である。しかしながら、そのようなシステムが、図１５に図示される構成要素よりも少ないまたは多い数の構成要素を有するシステムにおいても同じ様に良好に動作できることが当業者に認識される。故に、図１５のシステム１５００の描写は、本質的に例示的であり、かつ本開示の範囲を限定しないとみなされるべきである。
【００８５】
さまざまな実施形態は、さらに、場合によっては、任意のいくつかのアプリケーションを動作させるために使用することができる一つ以上のユーザコンピュータ、計算デバイスまたは処理デバイスを含むことができる多種多様な動作環境において実施することができる。ユーザまたはクライアントデバイスは、標準のオペレーティングシステムを稼動しているデスクトップ、ラップトップまたはタブレットコンピュータなどのいくつかの汎用パーソナルコンピュータ、並びにモバイルソフトウェアを稼動し、多くのネットワーク及びメッセージングプロトコルをサポートできるセルラー、ワイヤレス及びハンドヘルドデバイスのうちのいずれかを含むことができる。そのようなシステムはまた、様々な市販されているオペレーティングシステム並びに開発及びデータベース管理などの目的の他の公知のアプリケーションのうちのいずれかを稼動する多くのワークステーションを含むことができる。これらのデバイスはまた、ネットワークを経由して通信できるダミー端末、シンクライアント、ゲームシステム及び他のデバイスなどの他の電子デバイスを含むことができる。
【００８６】
本開示のさまざまな実施形態は、伝送制御プロトコル／インターネットプロトコル（「ＴＣＰ／ＩＰ」）、オープンシステムインターコネクション（「ＯＳＩ」）モデルのさまざまな層において動作するプロトコル、ファイル転送プロトコル（「ＦＴＰ」）、ユニバーサルプラグアンドプレイ（「ＵｐｎＰ」）、ネットワークファイルシステム（「ＮＦＳ」）、共通インターネットファイルシステム（「ＣＩＦＳ」）、及びアップルトークなどの様々な市販されているプロトコルのうちのいずれかを使用する通信をサポートするために、当業者が熟知しているであろう少なくとも一つのネットワークを利用する。例えば、ネットワークは、ローカルエリアネットワーク、ワイドエリアネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公共回線電話網、赤外線ネットワーク、無線ネットワーク、及びそれらの任意の組み合わせであってもよい。
【００８７】
ウェブサーバを利用する実施形態において、ウェブサーバは、ハイパーテキスト転送プロトコル（「ＨＴＴＰ」）サーバ、ＦＴＰサーバ、共通ゲートウェイインターフェース（「ＣＧＩ」）サーバ、データサーバ、Ｊａｖａサーバ、及びビジネスアプリケーションサーバを含む、様々なサーバまたは中間層アプリケーションのうちのいずれかを稼動することができる。サーバ（複数可）はまた、例えば、Ｊａｖａ（登録商標）、Ｃ、Ｃ＃またはＣ＋＋、あるいはＰｅｒｌ、ＰｙｔｈｏｎまたはＴＣＬなどの任意のスクリプト言語、並びにそれらの組み合わせなどの任意のプログラム言語で書き込まれた一つ以上のスクリプトまたはプログラムとして実施されてもよい一つ以上のウェブアプリケーションを実行することによって、ユーザデバイスからのリクエストに応答して、プログラムまたはスクリプトを実行できるものであってもよい。サーバ（複数可）はまた、これらに限定されないが、Ｏｒａｃｌｅ（登録商標）、Ｍｉｃｒｏｓｏｆｔ（登録商標）、Ｓｙｂａｓｅ（登録商標）及びＩＢＭ（登録商標）から市販されているデータベースサーバも含むことができる。
【００８８】
環境は、前述したように、様々なデータストア並びに他のメモリ及び記憶媒体を含むことができる。これらは、コンピュータのうちの一つ以上にローカルの（及び／または内部に常駐）、あるいはネットワーク全体のコンピュータのうちのいずれかまたはすべてからリモートの記憶媒体などの様々な場所に常駐することができる。特定の組の実施形態において、情報は、当業者が熟知するストレージエリアネットワーク（「ＳＡＮ」）の中に存在してもよい。同様に、コンピュータ、サーバまたは他のネットワークデバイスに帰属する機能を実行するために必要な任意のファイルは、必要に応じて、ローカルに及び／またはリモートに記憶されてもよい。システムがコンピュータ化されたデバイスを含む場合、そのようなデバイス各々は、バスを介して電気的に結合されてもよいハードウェア要素を含むことができる。この要素は、例えば、少なくとも一つの中央処理装置（「ＣＰＵ」または「プロセッサ」）、少なくとも一つの入力デバイス（例えば、マウス、キーボード、コントローラ、タッチ画面またはキーパッド）、及び少なくとも一つの出力デバイス（例えば、表示デバイス、プリンタまたはスピーカ）を含む。そのようなシステムはまた、例えば、ランダムアクセスメモリ（「ＲＡＭ」）または読み取り専用メモリ（以下「ＲＯＭ」）、並びに取り外し可能媒体デバイス、メモリカード、フラッシュカードなどのディスクドライブ、光学式記憶装置及びソリッドステート記憶装置などの一つ以上の記憶装置も含むことができる。
【００８９】
そのようなデバイスはまた、コンピュータ可読記憶媒体リーダ、通信デバイス（例えば、モデム、ネットワークカード（無線または有線）、赤外線通信デバイスなど）、及び前述のようなワーキングメモリも含むことができる。コンピュータ可読記憶媒体リーダは、コンピュータ可読情報を一時的及び／またはより永久的に含有、記憶、伝送及び取得するための、リモート、ローカル、固定及び／または取り外し可能記憶装置並びに記憶媒体を代表するコンピュータ可読記憶媒体と接続、またはこれを受信するように構成することができる。システム及びさまざまなデバイスはまた、典型的に、クライアントアプリケーションまたはウェブブラウザなどのオペレーティングシステム及びアプリケーションプログラムを含む、多くのソフトウェアアプリケーション、モジュール、サービスまたは少なくとも一つのワーキングメモリ装置内部に位置する他の要素も含む。代替の実施形態は、前述からの多数の変形を有してもよいことを認識するべきである。例えば、カスタマイズされたハードウェアが使用される場合もあり、及び／または特定の要素が、ハードウェア、ソフトウェア（アプレットなどの高移植性ソフトウェアを含む）、または両方に実装される場合がある。さらに、ネットワーク入力／出力デバイスなどの他の計算デバイスへの接続が採用されてもよい。
【００９０】
コード、またはコードの一部を含むための記憶媒体及びコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、電気的消去可能プログラマブルＲＯＭ（「ＥＥＰＲＯＭ」）、フラッシュメモリまたは他のメモリ技術、シーディーロム（「ＣＤ−ＲＯＭ」）、デジタル多用途ディスク（ＤＶＤ）または他の光学式ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは所望の情報を記憶するために使用することができ、システムデバイスによってアクセスすることができる任意の他の媒体を含む、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなどの情報の記憶及び／または伝送のための任意の方法または技術において実装された揮発性及び不揮発性の取り外し可能な及び固定の媒体などであるがこれらに限定されない記憶媒体及び通信媒体を含む、当技術分野において公知または使用される任意の適当な媒体を含むことができる。本明細書に提供された開示及び教示に基づいて、当業者は、さまざまな実施形態を実施するための他の方式及び／または方法を認識するであろう。
【００９１】
明細書及び図面は、それ故に、制限的な意味ではなく、例示的なものとみなされる。しかしながら、特許請求の範囲に記載の本発明の広義の精神及び範囲から逸脱することなく、さまざまな修正及び変更を為せることは自明である。
【００９２】
他の変形例も本開示の精神内にある。故に、開示した技術は、さまざまな修正及び代替構成を受けやすいが、その特定の図示した実施形態を、図面に示し、詳細に前述した。しかしながら、開示した特定の一つ以上の形態に本発明を限定することは意図せず、むしろ、その意図は、添付の特許請求の範囲に規定されるものとして、本発明の精神及び範囲内に収まるすべての修正、代替構成及び均等物などを含み得ることを理解すべきである。
【００９３】
開示した実施形態を記述する文脈（特に、以下の特許請求の範囲の文脈）における「ａ」及び「ａｎ」並びに「ｔｈｅ」という用語、並びに類似の指示対象の使用は、本明細書に別途記載の無い限りまたは文脈に明らかに矛盾しない限り、単数及び複数の両方を包含するものとして解釈されるべきである。「を備える」、「を有する」、「を含む」及び「を含有する」という用語は、別途記載の無い限り、オープンエンド用語（すなわち、「を含むが、これらに限定されない」の意味）として解釈されるべきである。「接続されている」という用語は、修正されていなくかつ物理的接続を言及している場合には、何らかの介在物があったとしても、その内部に部分的にもしくは全体的に収容されている、付着しているまたは接合しているものとして解釈されるべきである。本明細書における値の範囲の記載は、本明細書に別途記載の無い限り、その範囲に含まれる個別の値に個々に言及する簡略的な方法としての機能を果たすことを目的にしているに過ぎず、個別の値は、それが本明細書において個々に記載されたものとして本明細書に組み込まれる。「セット」（例えば、「アイテムのセット」）または「サブセット」という用語の使用は、別途記載の無い限りまたは文脈に矛盾しない限り、一つ以上の要素を含む非空の集合として解釈されるべきである。さらに、別途記載の無い限りまたは文脈に矛盾しない限り、対応するセットの「サブセット」という用語は、対応するセットの真部分集合を必ずしも意味するものではなく、サブセットと対応するセットとが等しい場合もある。
【００９４】
「Ａ、Ｂ及びＣの少なくとも一つ」または「Ａ、Ｂ及びＣの少なくとも一つ」という形態の表現などの接続的な言葉は、別途記載の無い限り、さもなければ文脈に明らかに矛盾しない限り、アイテム、用語などが、ＡまたはＢもしくはＣ、またはＡ及びＢ並びにＣのセットの任意の非空サブセットのいずれかであり得ることを示すのに通常使用されるものとして文脈においてさもなければ理解される。例えば、前述の接続的な表現において使用される三つの要素を有するセットの例示的な実施例において、「Ａ、Ｂ及びＣの少なくとも一つ」及び「Ａ、Ｂ及びＣの少なくとも一つ」は、以下の組、すなわち、「Ａ単独」、「Ｂ単独」、「Ｃ単独」、「Ａ及びＢ」、「Ａ及びＣ」、「Ｂ及びＣ」、「Ａ、Ｂ及びＣ」のいずれかを意味する。故に、そのような接続的な言葉は、通常、特定の実施形態が、各々に存在するものとして、Ａの少なくとも一つ、Ｂの少なくとも一つ及びＣの少なくとも一つを必要とすることを暗示することは意図しない。
【００９５】
本明細書に記述するプロセスのオペレーションは、本明細書に別途記載の無い限り、さもなければ文脈に明らかに矛盾しない限り、任意の適切な順序において実行することができる。本明細書に記述するプロセス（または、それらの変形例及び／もしくは組み合わせ）は、実行可能命令を含んで構成された一つ以上のコンピュータシステムの制御下で実行してもよく、そしてハードウェアまたはその組み合わせによって、一つ以上のプロセッサにおいて集合的に実行するコード（例えば、実行可能命令、一つ以上のコンピュータプログラムまたは一つ以上のアプリケーション）として実施することができる。コードは、例えば、一つ以上のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形態において、コンピュータ可読記憶媒体に記憶してもよい。コンピュータ可読記憶媒体は非一時的であってもよい。
【００９６】
本明細書に提供される任意の及びすべての実施例または例示の言語（例えば、「など」）の使用は、本発明の実施形態をより明らかにすることのみが意図され、別途主張されない限り、本発明の範囲を制限しない。明細書内のいかなる言語も、本発明の実践に不可欠な任意の請求されていない要素を示すものとして解釈されるべきではない。
【００９７】
本開示の好ましい実施形態は、本発明を実行するための、本発明者が知る最良の形態を含むものとして本明細書に記述される。それらの好ましい実施形態の変形例が、前の説明を読んだ当業者に明らかになり得る。本発明者は、当業者が必要に応じてそのような変形例を採用することを期待し、本開示の実施形態が本明細書に特に記述したものとは別な様に実践されることを意図している。それ故に、本開示の範囲は、適用法によって許可されるものとしてこれに添付された特許請求の範囲に記載された主題のすべての修正及び均等物を含む。さらに、前述のそのすべての可能な変形例における前述の要素の任意の組み合わせが、本明細書に別途記載の無い限り、さもなければ文脈に明らかに矛盾しない限り、本開示の範囲に包含される。
【００９８】
本明細書に引用される刊行物、特許出願及び特許品を含むすべての参照は、各々の参照が、参照により組み入れられるものとして個々にかつ具体的に示され、その全体が本明細書に記載されているように、同じ程度、参照により本明細書に組み入れられる。
【図１】
2018057045.tif 000003
【図２】
2018057045.tif 000004
【図３】
2018057045.tif 000005
【図４】
2018057045.tif 000006
【図５】
2018057045.tif 000007
【図６】
2018057045.tif 000008
【図７】
2018057045.tif 000009
【図８】
2018057045.tif 000010
【図９】
2018057045.tif 000011
【図１０】
2018057045.tif 000012
【図１１】
2018057045.tif 000013
【図１２】
2018057045.tif 000014
【図１３】
2018057045.tif 000015
【図１４】
2018057045.tif 000016
【図１５】
2018057045.tif 000017
【手続補正書】
【提出日】平成30年2月5日(2018.2.5)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
システムであって、
前記システムの１つまたは複数のプロセッサによって実行されると、前記システムに、
第１の位置における第１のデータストレージデバイスと、異なる第２の位置における第２のデータストレージデバイスとに記憶されるデータを識別し、
前記異なる第２の位置に関連付けられたストレージ要件に少なくとも部分的に基いて、前記データの一部を暗号化し、
前記第２のデータストレージデバイスへの前記暗号化された前記データの一部の記憶を実行すること、
を実行させる命令を記憶するメモリを備える、システム。
【請求項２】
前記ストレージ要件は、前記第１の位置に関連付けられた他のストレージ要件とは異なる、請求項１に記載のシステム。
【請求項３】
前記ストレージ要件は、第２の法律上の管轄区域に関連付けられた第２の規制のセットを含む前記他のストレージ要件とは異なる法律上の管轄区域に関連付けられた規制のセットを含む、請求項２に記載のシステム。
【請求項４】
前記ストレージ要件は、第２の管理上の統制のセットを含む前記他のストレージ要件とは異なる、管理上の統制のセットを含む、請求項２に記載のシステム。
【請求項５】
前記第１の位置における前記第１のデータストレージデバイスは、前記異なる第２の位置における前記第２のデータストレージデバイスのプロキシとして動作する、請求項１に記載のシステム。
【請求項６】
前記暗号化された前記データの一部は、暗号化されたデータを生成する鍵を使用して暗号化され、前記鍵は、前記第１のデータストレージデバイスはアクセス可能であるが、前記第２のデータストレージデバイスはアクセスできない、請求項１に記載のシステム。
【請求項７】
前記鍵は、前記第１のデータストレージデバイスに関連付けられた暗号化サービスによって管理される、請求項６に記載のシステム。
【請求項８】
コンピュータ実装方法であって、
第１の位置における第１のデータストレージデバイスと、異なる第２の位置における第２のデータストレージデバイスとに記憶されるデータを識別するステップと、
前記異なる第２の位置に関連付けられたストレージ要件に少なくとも部分的に基いて、前記データの一部を暗号化するステップと、
前記第２のデータストレージデバイスへの前記暗号化された前記データの一部の記憶を実行するステップと、
を含む、方法。
【請求項９】
前記ストレージ要件は、前記第１の位置に関連付けられた他のストレージ要件とは異なる、請求項８に記載の方法。
【請求項１０】
前記ストレージ要件は、第２の法律上の管轄区域に関連付けられた第２の規制のセットを含む前記他のストレージ要件とは異なる法律上の管轄区域に関連付けられた規制のセットを含む、請求項９に記載の方法。
【請求項１１】
前記ストレージ要件は、第２の管理上の統制のセットを含む前記他のストレージ要件とは異なる、管理上の統制のセットを含む、請求項９に記載の方法。
【請求項１２】
前記第１の位置における前記第１のデータストレージデバイスは、前記異なる第２の位置における前記第２のデータストレージデバイスのプロキシとして動作する、請求項８に記載の方法。
【請求項１３】
前記暗号化された前記データの一部は、暗号化されたデータを生成する鍵を使用して暗号化され、前記鍵は、前記第１のデータストレージデバイスはアクセス可能であるが、前記第２のデータストレージデバイスはアクセスできない、請求項８に記載の方法。
【請求項１４】
前記鍵は、前記第１のデータストレージデバイスに関連付けられた暗号化サービスによって管理される、請求項１３に記載の方法。
【請求項１５】
コンピュータシステムの１つまたは複数のプロセッサによって実行されると、前記コンピュータシステムに、少なくとも、
第１の位置における第１のデータストレージデバイスと、異なる第２の位置における第２のデータストレージデバイスとに記憶されるデータを識別し、
前記異なる第２の位置に関連付けられたストレージ要件に少なくとも部分的に基いて、前記データの一部を暗号化し、
前記第２のデータストレージデバイスへの前記暗号化された前記データの一部の記憶を実行すること、
を実行させる実行可能命令を記憶したコンピュータ可読記録媒体。
【請求項１６】
前記ストレージ要件は、前記第１の位置に関連付けられた他のストレージ要件とは異なる、請求項１５に記載のコンピュータ可読記録媒体。
【請求項１７】
前記ストレージ要件は、
第２の法律上の管轄区域に関連付けられた第２の規制のセットを含む前記他のストレージ要件とは異なる法律上の管轄区域に関連付けられた規制のセット、または、
第２の管理上の統制のセットを含む前記他のストレージ要件とは異なる、管理上の統制のセット、
のうちの少なくとも１つを含む、請求項１６記載のコンピュータ可読記録媒体。
【請求項１８】
前記第１の位置における前記第１のデータストレージデバイスは、前記異なる第２の位置における前記第２のデータストレージデバイスのプロキシとして動作する、請求項１５に記載のコンピュータ可読記録媒体。
【請求項１９】
前記暗号化された前記データの一部は、暗号化されたデータを生成する鍵を使用して暗号化され、前記鍵は、前記第１のデータストレージデバイスはアクセス可能であるが、前記第２のデータストレージデバイスはアクセスできない、請求項１５に記載のコンピュータ可読記録媒体。
【請求項２０】
前記鍵は、前記第１のデータストレージデバイスに関連付けられた暗号化サービスによって管理される、請求項１９に記載のコンピュータ可読記録媒体。