以下の説明において、種々の実施形態が述べられる。説明のために、特定の構成及び詳細が、実施形態の完全な理解を提供するために述べられる。しかし、実施形態を、特定の詳細無しで実施することができることも当業者に明らかになるであろう。更に、よく知られている特徴を、述べられる実施形態を曖昧にしないために省略または簡略化することができる。
本明細書で述べられ提案される技法は、コンピューティングリソースに関連するポリシーの効果的な管理に関する。ポリシーのセットは、種々のコンピューティングリソースに対するアクセスを制御するためコンピュータシステムによって強制することができる。ポリシーのセットは、ユーザが所望に応じてポリシーのセットを増やす(add to)かつ/またはその他の方法で変更することができるように構成することができる。種々の実施形態において、ポリシーは、ポリシーのセットを変更する能力を制御する。ポリシーは、例えば、ポリシーを変更できる人を制限するため、どんな変更を行うことができるかを制限するため、またそうでなければ、ポリシー変更が、ポリシーが強制されるものを代表するエンティティにとって有益であることを保証するのに役立つために作成することができる。
幾つかの実施形態において、システムは、ポリシーのセットに対する変更が効力を生じる前に遅延を強制する。遅延は、一般に、システムによって強制されることが可能であり、または、遅延を必要とするポリシーのせいで強制される場合がある。或る実施形態において、ポリシーを追加する要求が受信されると、要求は、必要とされる遅延に従って要求が提出されるかどうかに少なくとも部分的に基づいて承認される(履行されることを許可される)かまたは拒否されることができる。例えば、追加されることを要求されるポリシーは、ポリシーが効力を生じるべきときを示す、遅延を定義する将来時間または継続時間等の情報を含むことができる。別の例として、要求は、アプリケーションプログラミングインタフェース(API:application programming interface)呼出しの形態であるとすることができ、その呼出しは、ポリシーが効力を生じるべきときを示す情報を指定するパラメータを有する。ポリシーを追加する要求は、ポリシーが効力を生じるべきときを示す情報が要件に適合する場合に履行されることができる。換言すれば、要求は、要求されるポリシー追加が、要求される遅延以上の長さである遅延を示すかどうかに少なくとも部分的に基づいて許可されることができる。要求が履行されることを許可されると、システムは、ポリシーが効力を生じるべきときを示す情報に従って、対応するポリシーが効力を生じることを可能にすることができる。以下で論じるように、ポリシーが将来時間に効力を生じることを可能にした後、ポリシーは、発効する前に取消し可能であることができる。ポリシーが取消されると、ポリシーは、発効することが不可能になることができる。
種々の実施形態において、ユーザがポリシーを変更する(例えば、ポリシーのセットに1つのポリシーを追加する)要求を提出するとき、1つまたは複数の通知がトリガーされる。通知システム(例えば、電子メールシステムまたは通知を提供する他のシステム)は、通知され、結果として、指定された1人または複数人の関係者(例えば、1人または複数人のポリシー管理者、コンプライアンス責任者、及び/または他の者)に通知を送出することができる。1人または複数人の関係者を、ポリシーを追加/変更することに関するポリシーにおいてまたは別の方法で指定することができ、また、ポリシーを追加/変更することに関するポリシーにおいて、その効力が遅延されることを必要とされるポリシーを取消す権限を有しているとして指定することができる。通知はまた、選択される場合、ポリシー変更を取消させるハイパーリンク等のポリシー変更を取消すためのメカニズムを含むことができる。こうして、指定された関係者は、必要とされる遅延後に普通なら効力を生じることを許可するポリシー変更を取消す機会を提供されることができる。更に、効力を生じていないポリシー変更(すなわち、システムによってまだ強制されていないポリシー変更)を取消すための条件は、効力を生じたポリシー変更を取消すための条件に比べて厳しくないとすることができる。例えば、まだ発効していないポリシーを取消すための要件は、既に発効しているポリシーを取消すための要件に比べて低い(厳しくない)とすることができる。例えば、より大きな認証要件が、まだ発効していないポリシーに比べて既に発効しているポリシーについて存在する場合がある。更に、既に発効しているポリシーの取消しは、ポリシー指定遅延を必要とする場合があり、一方、まだ発効していないポリシーの取消しは、遅延を必要しない場合がある、または、より短い遅延を必要とする場合がある。限定はしないが、以下で明示的に論じられる変形を含む多数の変形が、本開示の範囲内にあるものと考えられる。
図1は、本開示の種々の態様を示す図である。先に論じたように、本明細書で述べる種々の実施形態に従って動作するシステムは、動的なポリシーセットの効果的な管理を可能にする。種々の実施形態において、権限のあるユーザは、種々のコンピューティングリソースについてシステムポリシーを更新することができる。ユーザは、例えば、ウェブサービス呼出し等の適切に構成されたアプリケーションプログラミングインタフェース(API)をサービスプロバイダのポリシー管理システムに提出するコンピュータシステムを利用することができる。図1に示すように、本開示の種々の態様は、要求されたポリシー変更が効力を生じる前の遅延に関する。幾つかの実施形態において、図の砂時計で示すように、ポリシー管理システムは、ポリシーが効力を生じる前に遅延を強制する。更に、図のアラームベルで示すように、種々のアラームを、ポリシーのセットを変更する或るタイプの要求の結果として実装することができる。アラームは、種々の方法で、例えば、電子通知、エンハンスド監査ロギング、実際のアラームによって、また、一般に、要求されるポリシー変更に関する1人または複数人の利害関係者に通知を提供する任意の方法で実装することができる。こうして、ポリシー管理者等の利害関係者は、ポリシー変更が効力を生じる前にポリシー変更を取消す機会を有する。以下でより詳細に論じるように、ポリシーが効力を生じる前の強制された遅延は、システムがどのポリシーを強制するかに対する頑健な管理上の制御を可能にする。
図2は、本開示の種々の実施形態を実装することができる環境200の例証的な例を示す。環境200において、コンピューティングリソースサービスプロバイダ202は、種々のサービスを顧客204に提供することができる。顧客204は、コンピューティングリソースサービスプロバイダ202によって提供される種々のサービスを利用して、情報を、維持し、種々の地理的場所に位置し得る顧客204の従業者に送出することができる組織であるとすることができる。更に、顧客204は、種々のサービスを利用して、コンテンツを遠隔に位置する作業グループに送出する可能性がある個人であるとすることができる。図2に示すように、顧客204は、インターネット等の1つまたは複数の通信ネットワーク206を通してコンピューティングリソースサービスプロバイダ202と通信することができる。顧客204からコンピューティングリソースサービスプロバイダ202への一部の通信は、コンピューティングリソースサービスプロバイダ202を、本明細書で述べる種々の技法またはその変形に従って動作させることができる。
先に述べたように、コンピューティングリソースサービスプロバイダ202は、種々のコンピューティングリソースサービスをその顧客に提供することができる。コンピューティングリソースサービスプロバイダによって提供されるサービスは、この例では、仮想コンピュータシステムサービス208、ブロックレベルデータ記憶サービス210、暗号サービス212(鍵管理サービスとも呼ばれる)、オンデマンドデータ記憶サービス214、及び1つまたは複数の他のサービス216を含むが、本開示の全ての実施形態が全てのこうしたサービスを含むことになるわけではなく、また、更なるサービスが、本明細書で明示的に述べるサービスに加えてまたはそれの代替として提供される場合がある。サービスのそれぞれは、1つまたは複数のウェブサービスインタフェースを含むことができ、1つまたは複数のウェブサービスインタフェースは、顧客204が、適切に構成されたAPI呼出しを、ウェブサービス要求を通して種々のサービスに提出することを可能にする。更に、サービスのそれぞれは、1つまたは複数のサービスインタフェースを含むことができ、1つまたは複数のサービスインタフェースは、サービスが、互いにアクセスすることを可能にする(例えば、仮想コンピュータシステムサービス208の仮想コンピュータシステムが、オンデマンドデータ記憶サービスにデータを記憶するかまたはオンデマンドデータ記憶サービスからデータを取出すこと、及び/または、ブロックデータ記憶サービスによって提供される1つまたは複数のブロックレベルデータ記憶デバイスにアクセスすることを可能にする)。
仮想コンピュータシステムサービス208は、コンピューティングリソースサービスプロバイダ202の顧客204のために仮想コンピュータシステム上で仮想マシンインスタンスをインスタンス化するように構成されるコンピューティングリソースの集合体であるとすることができる。コンピューティングリソースサービスプロバイダ202の顧客204は、(適切に構成され認証されたAPI呼出しによって)仮想コンピュータシステムのサービスと対話して、コンピューティングリソースサービスプロバイダ202によってホストされ動作させられる物理的コンピューティングデバイス上でインスタンス化される仮想コンピュータシステムをプロビジョニングし動作させることができる。仮想コンピュータシステムは、種々の目的で、例えば、ウェブサイトを支持するサーバとして動作するため、ビジネスアプリケーションを動作させるため、または、一般に、顧客用のコンピューティングパワーとして役立つために使用することができる。仮想コンピュータシステム用の他のアプリケーションは、データベースアプリケーション、電子商取引アプリケーション、ビジネスアプリケーション、及び/または、他のアプリケーションを支持するためのものである場合がある。
ブロックレベルデータ記憶サービス210は、ブロックレベル記憶デバイス(及び/またはその仮想化)を使用して顧客204用のデータを記憶するように集合的に動作するコンピューティングリソースの集合体を備えることができる。ブロックレベルデータ記憶サービス210のブロックレベル記憶デバイスは、例えば、仮想コンピュータシステムサービス208によって提供される仮想コンピュータシステムに動作可能にアタッチされて、コンピュータシステム用の倫理ユニット(例えば、仮想ドライブ)として役立つことができる。ブロックレベル記憶デバイスは、対応する仮想コンピュータシステムによって使用/生成されるデータの持続的記憶を可能にすることができ、仮想コンピュータシステムサービス208は、一過性のデータストレージを提供することができるだけである。
図2に示すように、コンピューティングリソースサービスプロバイダ202は、図3に関連して以下でより詳細に述べる暗号サービスを動作させることができる。一般に、暗号サービスは、コンピューティングリソースサービスプロバイダの顧客用の暗号鍵を管理し使用するように集合的に構成されるコンピューティングリソースの集合体であるとすることができる。暗号サービス212によって使用される鍵は、暗号オペレーション(暗号化、復号化、及びメッセージ署名等)及び/または鍵回転等の他のオペレーションを実施する要求を提出するとき顧客が参照できる関連する識別子を有することができる。暗号サービスは、暗号鍵をセキュアに維持して、権限のない関係者によるアクセスを回避することができる。
コンピューティングリソースサービスプロバイダ202はまた、オンデマンドデータ記憶サービスを含むことができる。オンデマンドデータ記憶サービス214は、データを記憶するかつ/またはデータにアクセスする要求を同期して処理するように構成されるコンピューティングリソースの集合体であるとすることができる。オンデマンドデータ記憶サービス208は、オンデマンドデータ記憶サービス208が迅速にデータを位置特定しデータを取出すことを可能にするコンピューティングリソース(例えば、データベース)を使用して動作して、データが、データを求める要求に応答して提供されることを許可することができる。例えば、オンデマンドデータ記憶サービスは、データオブジェクトを求める要求が取出されるときに、要求に応答してデータオブジェクトが提供されることができるように(または、データオブジェクトのストリーミングが始動されることができるように)、記憶されたデータを維持することができる。述べたように、オンデマンドデータ記憶サービス214に記憶されたデータは、データオブジェクトに編成することができる。データオブジェクトは、例えば、サイズに関する一定の制約を除いて、任意のサイズを有することができる。そのため、オンデマンドデータ記憶サービス214は、いろいろなサイズの多数のデータオブジェクトを記憶することができる。オンデマンドデータ記憶サービス214は、オンデマンドデータ記憶サービス210によって記憶されるデータオブジェクトに関連して他のオペレーションを取出すかまたは実施するために顧客204が使用することができるデータオブジェクトの識別子にデータオブジェクトを関連付けるキーバリューストア(key value store)として動作することができる。オンデマンドデータ記憶サービス214はまた、暗号サービス212にアクセス可能であるとすることができる。例えば、幾つかの実施形態において、暗号サービスは、オンデマンドデータ記憶サービスを使用して、顧客の鍵を暗号化形態で記憶し、顧客鍵を復号化するために使用可能な鍵は暗号サービス212の特定のデバイスだけにアクセス可能である。顧客、別のサービス、または他のエンティティによるデータ記憶サービスに対するアクセスは、適切に構成されたAPI呼出しを通して行うことができる。
図2に示す環境において、通知サービス216が含まれる。通知サービス216は、ウェブサービスまたは他のインタフェース、及び、ブラウザベース管理コンソールであって、顧客がアプリケーション(または人々)に通知したいと思うトピックスを生成し、クライアントにこれらのトピックを申し込ませ、メッセージを発行し、これらのメッセージを顧客が選好するクライアントのプロトコル(すなわち、HTTP、電子メール、SMS等)を通じて送出させるために使用することができる、ブラウザベース管理コンソールを提供するように集合的に構成されるコンピューティングリソースの集合体を備えることができる。通知サービスは、新しい情報及び更新のための定期的にチェックするかまたは「ポーリング(poll)」する必要性なしで、「プッシュ(push)」メカニズムを使用して通知をクライアントに提供することができる。通知サービスは、仮想コンピュータシステムサービスで実行されるアプリケーション、ワークフローシステム、時間依存情報更新、モバイルアプリケーション、及び多くの他のものをモニタリングすること等の種々の目的で使用することができる。
コンピューティングリソースサービスプロバイダ202は、その顧客204のニーズに基づいて1つまたは複数の他のサービス218を更に維持することができる。例えば、コンピューティングリソースサービスプロバイダ202は、その顧客204のためにデータベースサービスを維持することができる。データベースサービスは、1人または複数人の顧客204のために1つまたは複数のデータベースを実行するように集合的に動作するコンピューティングリソースの集合体であるとすることができる。コンピューティングリソースサービスプロバイダ202の顧客204は、適切に構成されたAPI呼出しを利用することによって、データベースサービスからのデータベースを動作させ管理することができる。これは、次に、顧客204が、データベースにおいてオペレーションを維持し、おそらくはオペレーションをスケーリングすることを可能にすることができる。他のサービスは、オブジェクトレベルアーカイブデータ記憶サービス、他のサービスを管理及び/またはモニタリングするサービス及び/または他のサービスを含むが、それらに限定されない。
図2に示すように、コンピューティングリソースサービスプロバイダ202は、種々の実施形態において、認証システム220及びポリシー管理サービス222を含む。認証システムは、或る実施形態において、顧客のユーザの認証に関わるオペレーションを実施するように構成されるコンピュータシステム(すなわち、コンピューティングリソースの集合体)である。例えば、サービスのうちの1つは、ユーザからの情報を認証サービスに提供して、ユーザ要求が真正であるか否かを示す情報を代わりに受信することができる。ユーザ要求が真正かどうかを判定することは、任意の適した方法で実施することができ、認証が実施される方法は、種々の実施形態の間で変わる場合がある。例えば、幾つかの実施形態において、ユーザは、サービスに送信されるメッセージに電子的に署名する(すなわち、ユーザによって操作されるコンピュータシステムがメッセージに電子的に署名する)。電子署名は、認証エンティティ(例えば、ユーザ)と認証システムの両方に利用可能である秘密情報(例えば、ユーザに関連する鍵対の私有鍵)を使用して生成することができる。要求及び要求についての署名は、認証システムに提供することができ、認証システムは、秘密情報を使用して、受信された署名と比較するための基準署名を計算して、要求が真正であるかどうかを判定することができる。
要求が真正である場合、認証サービスは、保留要求を履行するかどうか、及び/または、他のアクションを実施するかどうかを判定するためにサービスが使用することができる情報をサービスに提供することができ、例えば、暗号サービス等の他のサービスに対して、要求が真正であることを証明し、それにより、他のサービスが、相応して動作することを可能にすることができる。例えば、認証サービスは、別のサービスが解析することができるトークンを提供して、要求の真正性を検証することができる。電子署名及び/またはトークンは、種々の方法で制限される有効性を有することができる。例えば、電子署名及び/またはトークンは、一定時間の間、有効であるとすることができる。一例において、電子署名及び/またはトークンは、検証のために電子署名及び/またはトークンと共に含まれるタイムスタンプを入力として取る関数(例えば、ハッシュベースメッセージ認証コード)に少なくとも部分的に基づいて生成される。提出される電子署名及び/またはトークンを検証するエンティティは、受信されるタイムスタンプが、十分に最近(例えば、現在時間から所定の時間以内)であることをチェックし、受信されるタイムスタンプのために使用する基準署名/トークンを生成することができる。提出される電子署名/トークンを生成するために使用されるタイムスタンプが十分に最近でない、かつ/または、提出される署名/トークン及び基準署名/トークンが一致しない場合、認証は失敗する場合がある。こうして、電子署名が危殆化(compromise)する場合、電子署名は、短い時間の間、有効であるだけであることになり、それにより、危殆化によって引起され得る害を制限する。真正性を検証する他の方法もまた、本開示の範囲内にあるものと考えられることが留意されるべきである。
ポリシー管理サービス222は、或る実施形態において、コンピューティングリソースサービスプロバイダの顧客のためにポリシーを管理するように構成されるコンピュータシステムである。ポリシー管理サービス222は、顧客が、ポリシーの管理に関連する要求を提出することを可能にするインタフェースを含むことができる。こうした要求は、例えば、顧客のために、または、既存のポリシーのインベントリを提供すること及び同様なこと等の管理上の他のアクションのために、ポリシーを、追加する、削除する、変更する、またはその他の方法で修正する要求であるとすることができる。ポリシー管理サービス222はまた、他のサービスにインタフェースして、要求が行われた顧客に対応するポリシーに従って保留要求の履行が許可可能であるかどうかを、サービスが判定することができる。例えば、サービスが要求を受信すると、サービスは、(サービスがこうした情報をローカルにキャッシュしていない場合)要求(及び/または要求自体)に関する情報をポリシー管理システムに送信することができ、ポリシー管理システムは、顧客についてのポリシーを解析して、顧客の既存のポリシーが要求の履行を許可するかどうかを判定し、その判定に従って情報をサービスに提供することができる。例示的なポリシー管理システムは、以下で図4に関連して述べられる。他のサービス及び/またはコンポーネントもまた環境200に含まれる場合がある。同様に、本開示の技法は、他の環境に適用される。
図3は、種々の実施形態によるサービス300の例証的な例を示す。サービス300は、例えば、図2に関連して上述したサービスのうちの1つであるとすることができる。例えば、サービス300は、仮想コンピュータシステム208、ブロックデータ記憶サービス210、暗号サービス212、オンデマンドデータ記憶サービス214、通知サービス216、または上述したような1つまたは複数の他のサービス218である可能性がある。図3がサービス300の種々のコンポーネントを示すが、種々のサービスが、種々に従って変わることになり、また、本明細書で示すコンポーネントと異なるコンポーネントを含むことができることが留意されるべきである。図3に示すように、サービス300は、サービスフロントエンド302を含む。サービスフロントエンド302は、フロントエンドサービス302に対するアプリケーションプログラミングインタフェース(API)呼出し等を通して顧客が通信することができるインタフェースを提供するように集合的に構成されるコンピューティングリソースの集合体を含むことができる。フロントエンドサービス302は、例えば、1つまたは複数のウェブサーバ、1つまたは複数の負荷バランサ、1つまたは複数のアプリケーションサーバ、及び一般的に本明細書で述べる他のコンピューティングリソースを含むことができる。
或る実施形態において、サービスフロントエンド302は、顧客要求を受信し、これらの要求に対する応答を提供するように構成される。サービスフロントエンド302はまた、他のサービスからの要求の受信及び処理を可能にするインタフェースを含むことができる。要求を処理するために、サービスフロントエンド302は、サービス300の種々の他のコンポーネントと対話することができる。例えば、図3に示すように、サービス300は、認証ランタイムサービス304を含む。認証ランタイムサービス304は、フロントエンド302でのサービスのように、サービスフロントエンド302が、適宜要求を拒否または履行することを可能にするため、認証に関する判定を行うように集合的に構成されるコンピューティングリソースの集合体を備えるサービス300のサブシステムであるとすることができる。或る実施形態において、サービスフロントエンド302が要求を受信するとき、サービスフロントエンド302は、認証ランタイムサービス304と通信して、要求が真正であるかどうかを判定する。要求は、例えば、図2に関連して上述したような、顧客と認証システムの間で共有される秘密を使用して生成される電子署名を含むことができる。認証ランタイムサービス304は、認証システムインタフェース306を介して情報を送信することができ、認証システムインタフェース306は、認証ランタイムサービス304が、要求が真正であるかどうかという、図2に関連して上述したような認証システムからの判定を得ることを可能にする。要求が真正であるかどうか判定するために動作するとき、認証ランタイムサービス304は、一定の情報をキャッシュして、認証ランタイムサービス304が、認証システムインタフェース306を通した認証システムに対する認証なしで、認証に関する判定を行うことを可能にすることができる。図3は特定の実施形態を示すが、サービス300が、必ずしも示した方法ではなく、任意の適した方法で要求を認証することができることが留意されるべきである。
図3に示すように、サービスフロントエンド302はまた、ポリシー強制サービス308と通信して、一定の要求を履行するかどうかを判定する。ポリシー強制サービス308は、サービスフロントエンド302が要求を履行または拒否するかどうかを判定することを可能にするように集合的に構成されるコンピューティングリソースの集合体を備えるサービス300のサブシステムであるとすることができる。認証ランタイムサービス304の場合と同様に、ポリシー強制サービス308は、要求の履行がポリシーに適合しているかどうかを判定するためにポリシー管理システム(図には示さず)と通信することができる。例えば、サービスフロントエンド302が要求を受信すると、サービスフロントエンド302は、要求または要求に少なくとも部分的に基づく情報をポリシー強制サービス308に送信することができる。ポリシー強制サービス308は、ポリシー管理システムインタフェース310を介して情報をポリシー管理システムに送信して、判定を行うことができる。認証ランタイムサービス304の場合と同様に、ポリシー強制サービス308は、種々の情報をキャッシュして、ポリシー管理システムと通信することなく、要求の履行がポリシーに適合するかどうかについての判定を可能にすることができる。
種々の実施形態において、サービスフロントエンド302はまた、受信される要求が、真正であると共にポリシーに適合して履行可能であると判定されると、サービスネットワーク312と通信する。サービスネットワーク312は、或るサービスを提供することを支援して動作するように構成されるコンピューティングリソースの集合体を備えるサービス300のサブシステムであるとすることができる。例えば、サービス300が仮想コンピュータシステムサービスである実施形態において、サービスネットワーク312は、サービス300の顧客のために仮想コンピュータシステムを実装する複数の物理的ホストコンピューティングデバイスを備えることができる。サービスフロントエンド302を通した要求は、サービスネットワーク312を使用して実装される仮想コンピュータシステムの動作に関連する場合がある。例えば、要求は、仮想コンピュータシステムを、プロビジョニングするため、デプロビジョニングするため、修正するため、またはその他の方法でリモートで管理するために、サービスフロントエンド302に提出することができる。ブロックデータ記憶サービス210の例において、サービスネットワーク312は、対応するデータ記憶デバイスを有するデータ記憶サーバの集合体を備えることができる。サービスフロントエンド302は、記憶空間を顧客に割当てること、顧客用の記憶空間を割当て解除すること等の種々の目的で、また、一般に、サービス300によって提供される1つまたは複数の仮想ブロックレベルデータ記憶デバイスの管理に関連して、サービスネットワーク312と対話することができる。暗号サービスの例において、サービスネットワーク312は、暗号鍵のセキュアな管理を可能にする種々のハードウェアデバイスを含むことができる。例えば、サービスネットワーク312は、暗号鍵素材をセキュアに記憶するデバイスである場合がある複数のセキュリティモジュール(例えば、ハードウェアセキュリティモジュール)を備えることができる。暗号サービス用のサービスネットワークはまた、顧客のために鍵を記憶するためのデータ記憶デバイス及び一般に暗号サービスの動作を支持する他のデバイスを含むことができる。オンデマンドデータ記憶サービスの例において、サービスネットワーク312は、ブロックデータ記憶デバイスの場合と同様に、データ記憶サーバ及び対応するデータ記憶デバイスを含むことができる。サービスネットワークはまた、1つまたは複数のデータベースを含んで、キーバリューストアとして動作し、それにより、サービスネットワーク312内でのデータの効率的な位置付けを可能にすることができる。サービスネットワーク312はまた、ガーベッジコレクションプロセス及び同様なものを実施するためデータを耐久性よく、すなわち冗長的に記憶するように動作するデバイス等の他のデバイス(例えば、サーバコンピュータシステム)を含むことができる。一般に、サービスネットワーク312は、提供されるサービスに適用可能なコンピューティングリソースを含むことができる。同様に、示さないが、サービスネットワーク312は、ルータ、スイッチ、負荷バランサ、及び、記憶ネットワーク312内でのデバイスの集合的動作を可能にする他のデバイス等の適切なネットワーキングデバイスを含むことができる。もちろん、含まれる正確なリソース及びそれらの集合的構成は、それらが実装される種々のサービス及び種々の実施形態に従って変わることになる。
図4は、種々の実施形態によるポリシー管理サービス400の例証的な例を示す。図4に示すように、ポリシー管理サービス400は、ポリシー管理システムフロントエンド402を含む。ポリシー管理システムフロントエンド402は、図3に関連して上述したサービスフロントエンド302のように構成することができる。特に、ポリシー管理システムフロントエンド402は、顧客の要求を受信し、これらの要求に対して応答を提供するように構成することができる。特に、ポリシー管理システムフロントエンド402は、要求がポリシーに従って履行可能であるかどうかを判定すること等のために、他のサービスからの要求を受信するように構成することができる。ポリシー管理システムフロントエンド402に対する要求は、コンピューティングリソースプロバイダのポリシーまたはアカウントの管理に関連する種々の要求であるとすることができる。例えば、ポリシー管理システムフロントエンドに対する要求は、ポリシーを追加する、ポリシーを削除する、ポリシーを変更する、また一般に、ポリシーのインベントリを提供すること及び同様なもの等の、ポリシーに関連する種々のアクションを実施する、適切に構成されたAPI呼出しであるとすることができる。本明細書で述べる他のフロントエンドシステムの場合と同様に、ポリシー管理システムフロントエンド402は、異なるオペレーションを実施する1つまたは複数のウェブサーバを含むことができる。例えば、或る実施形態において、ポリシー管理システムフロントエンド402は、インターネット等のネットワークを通じて、ポリシーを管理するためのコンソールインタフェースを提供するウェブサーバを含むことができる。コンソールインタフェースは、ポリシーの管理に関連してユーザが種々のアクションを実施することを可能にする種々のグラフィカルユーザインタフェース(GUI)コントロールを有するGUIであるとすることができる。例示的なアクションは、ポリシーの定義及び定義されたポリシーの提出を含む。ユーザは、例えば、ポリシーを定義するための種々のGUIコントロール(ドロップダウンメニュー、チェックボックス、テキストエントリボックス、及び同様なもの)を使用し、その後、GUIと対話して、ウェブサーバに定義されたポリシーを提出させることができる。要求における定義されたポリシーの提出(または、一般に、GUIを介して送信される任意の要求の提出)は、以下で述べるように、GUIを提供するウェブサーバから、要求の処理を組織化する別のウェブサーバに要求を送信させることができる。他のウェブサーバはまた、GUIを提供するウェブサーバを通す代わりに、要求を直接提出するために顧客に利用可能であるとすることができる。他の変形もまた、本開示の範囲内にあると考えられる。
図3に関連して上述したサービス300の場合と同様に、ポリシー管理サービス400は、認証ランタイムサービス404及び認証システムインタフェース406を含んで、ポリシー管理システムフロントエンド402が、適宜、要求を履行または拒否することを可能にすることができる。サービスフロントエンド302の場合と同様に、ポリシー管理システムフロントエンド402は、(例えば、適切に構成された通信信号を介して)種々のコンポーネントと対話して、ポリシー管理サービスを提供することができる。例えば、図4に示すように、ポリシー管理システムフロントエンド402は、通知システムインタフェース408を利用して、上述したような通知システムと通信することができる。以下でより詳細に論じるように、通知システムは、一定のタイプの活動のアカウントに関連するユーザに、そのアカウントのポリシーに関連して警報するために使用することができる。例えば、以下でより詳細に述べるように、アカウントについてのポリシーのセットに対する追加の試みは、ポリシー追加の試みの1つまたは複数の通知を通知システムに提供させるようポリシー管理システムフロントエンド402にさせることができる。こうして、通知の受信は、ポリシーの追加が不適切であるとき等に適切なアクションがとられることを可能にする。
ポリシー管理システムフロントエンド402は、或る実施形態において、ポリシーを評価するように集合的に構成されるコンピューティングリソースの集合体を備えるポリシー管理サービス400のサブシステムであるとすることができるポリシーエンジン410を利用する。ポリシーエンジン410は、ポリシー管理システムフロントエンド402から、受信された要求及び/または受信された要求に少なくとも部分的に基づく情報を受信することができる。ポリシーエンジン410は、要求に適用可能な任意のポリシーを識別し、要求の履行が任意の適用可能なポリシーに適合しているかどうかを評価し、要求の履行が既存のポリシーに適合しているかどうかという通知をポリシー管理システム402に提供することができる。ポリシーエンジン410は、種々の実施形態に従って種々の方法で動作することができる。例えば、以下で論じるように、ポリシーは、プリンシパル、リソース、及びポリシーが適用される先の他のアイテムに関する種々の情報をエンコードするポリシー文書においてエンコードすることができる。ポリシーエンジン(またはポリシーエンジンと連携して作業する別のシステム)は、ポリシー内の情報を使用して、ポリシーのセットのうちのどのポリシーが特定の要求に適用されるかを決定することができる。たとえば、要求が、その要求において識別される特定のアイデンティティによって提出される場合、ポリシーエンジンは、そのエンティティに適用可能なポリシーを選択することができる。要求が特定のリソースを含む場合、ポリシーエンジンは、特定のリソースに適用可能であるポリシーを選択することができる。更に、以下でより詳細に論じるように、ポリシー文書は、ポリシー文書においてエンコードされる1つまたは複数のポリシーの効力が始まる(begin)時間を示す情報等の、ポリシー文書が現在効力があるかどうか(すなわち、ポリシー文書においてエンコードされる1つまたは複数のポリシーが現在強制されるか)を示す情報を含むことができる。適用可能なポリシー文書を識別することは、効力のあるポリシー文書を選択すること、及び、効力のないポリシー文書を無視することを含むことができる。
ポリシーエンジンは、ポリシーを順次またはその他の方法で処理して、選択されたポリシーのそれぞれが要求の履行を許可するかどうかを判定することができる。ポリシーエンジンは、ポリシーに対応するアカウントについてのポリシーのセットが要求の履行を許可するかまたは不可能にするかを示す通知を(例えば、ポリシー管理システムフロントエンド402によって提出されるポリシーを評価する要求に対する応答の形態で)ポリシー管理システムフロントエンド402に送信することができる。要求の履行がポリシーによって不可能にされる1つまたは複数の理由などの更なる情報(例えば、要求の履行によって違反されることになる1つまたは複数のポリシーを識別する情報及び/または要求の履行によって違反されることになるポリシーに少なくとも部分的に基づく情報)。
複数のユーザのための大規模ポリシー管理を可能にするため、ポリシー管理サービス400は、コンピューティングリソースサービスプロバイダの種々のアカウントのポリシーをエンコードするポリシー文書を記憶する1つまたは複数のデータ記憶デバイスを備えることができるポリシーリポジトリ412を含むことができる。幾つかの実施形態において、ポリシーリポジトリ412は、複数のエンティティ(例えば、コンピューティングリソースサービスプロバイダの顧客)についてのポリシーを記憶し、相応して、ポリシーが対応するエンティティに直接的に関連するかまたは間接的に関連するポリシーを記憶する。
図4に示すように、ポリシー管理システムフロントエンド402は、要求を受信すると、認証ランタイムサービス404を利用して、要求が真正であるかどうかを判定することができる。要求が真正である場合、ポリシー管理システムフロントエンド402は、ポリシー評価要求をポリシーエンジン410に提出して、適用可能な既存のポリシーに要求が適合しているかどうかを判定することができる。ポリシーエンジン410は、こうした情報がキャッシュされていない場合、適用可能なポリシーを取得するためにポリシーリポジトリ412と対話することができる。ポリシーエンジン410は、例えば、ポリシーリポジトリ412からの要求に関連するアカウントについて全てのポリシーにアクセスし、アクセスされたポリシーから、要求に適用可能である任意のポリシーを識別することができる。述べたように、ポリシーエンジンは、ポリシーをキャッシュして、ポリシーエンジン410からネットワークにわたって実装することができるリポジトリ412との通信を回避することができる。
一定のタイプの要求の場合、ポリシー管理システムフロントエンド402は、ポリシーリポジトリ412と対話することができる。例えば、こうしたアクションが既存のポリシーによって許可される場合、ポリシー管理システムフロントエンド402は、新しいポリシーをポリシーリポジトリ412に送信することができ、1つまたは複数のポリシーを削除する、かつ/または、一般にポリシーのセットまたは要求に関連するアカウントを(例えば、既存のポリシーを修正することによって)変更するコマンドをポリシーリポジトリ412に送信することができる。
先に述べたように、コンピューティングリソースサービスプロバイダの顧客によって利用される種々のポリシーは、ポリシー文書の形態でエンコードすることができる。或る実施形態のポリシー文書は、1つまたは複数の文用の格納庫として機能する文書、すなわち、情報の編成された集合体である。ポリシー文書は、ジャバスクリプト・オブジェクト・ノーテーション(JSON:Javascript Object Notation)、拡張可能マークアップ言語(XML:eXtensible Markup Langugae)文書、構造化マークアップ言語または編成情報の他の方法を使用する別の文書であるとすることができる。ポリシー文書が、対応する文によって定義される1つまたは複数の文書をエンコードすることができることが留意されるべきである。ポリシーが1つまたは複数のサブポリシーを含むことができることも留意されるべきである。換言すれば、ポリシーはポリシーの集合体を備えることができる。例えば、コンピューティングリソースサービスプロバイダのアカウントは、それぞれが特定の許可を定義する複数の個々のポリシーを備えるデータ記憶サービスについてのポリシー(「データ記憶サービスポリシー(data storage service policy)」)を有することができる。更に、用語「ポリシー(policy)」が異なる文脈において異なる意味を有する場合があることが留意されるべきである。或る例として、用語「ポリシー」は、計数可能(可算(count))名詞として使用されるときと比べて異なる意味を、計数不能(質量(mass))名詞として使用されるときに有する可能性がある。例えば、「ポリシーが要求の履行を許可するかどうか(whether policy allows fulfillment of a request)」等のフレーズは、個々のポリシーの集合体が要求の履行を許可するかどうかを意味すると解釈することができる。同様に、ポリシー文書が例証のために使用されるが、ポリシーをエンコードする他の方法(例えば、ポリシー文書によってエンコードされることになる種々の情報を記憶するためリレーショナルデータベースのリレーショナルテーブルを使用することによる)を、種々の実施形態に従って使用することができる。文は、文に関する任意の制限または詳細であることができる条件を含む場合がある。その条件は、例えば、ポリシーが発効するための状況を指定することができる。
種々の実施形態において、ポリシーは、コンピューティングリソースサービスプロバイダのアカウントについてのポリシーのセット等のポリシーのセットを変更するための条件を定義することができる。ポリシー追加に関するポリシー(「ポリシー追加ポリシー(policy addition policy)」と呼ぶことができる)は、履行可能であるために、或る基準時点から測定して将来に向けて進んだ指定される時間等の将来時間まで、提案されるポリシーが効力を生じない(すなわち、ポリシーのセットを強制するシステムによって強制されない)ように、提案されるポリシーをポリシーのセットに追加する要求が、構成されなければならないことを要求する。ポリシー追加に関するポリシーは、ポリシーが適用されるプリンシパルのセット、ポリシーが適用されるリソース、充足されなければならない1つまたは複数の他の条件、及び、条件が充足されない場合の拒否(または代替的に、条件が充足される場合の許可)のほかに1つまたは複数のアクションを定義することができる。ポリシーによって定義される更なるアクションは、例えば、ポリシーを追加する要求の1つまたは複数のプリンシパルの通知をもたらす1つまたは複数のアクションを含むことができる。ポリシー管理者は、例えば、1人または複数人の他の者がポリシーのセットにポリシーを追加することを許可できるが、ポリシー管理者が、必要とされる遅延なしでポリシーを追加できるように、ポリシー追加に関するポリシーを構成することができる。しかし、許可された1人または複数人の他の者は、必要とされる遅延に適合して効力を生じるようにポリシーが追加される場合のみ、ポリシーを成功裡に追加することができる。
図5は、或る実施形態によるポリシー文書の例証的な例を示す。或る実施形態において、ポリシー文書500は、ポリシー文書によってエンコードされるポリシーに関連する種々の情報をエンコードする。ポリシーは、拡張可能アクセス制御マークアップ言語(XACML:eXtensible Access Control Markup Language)、エンタープライズ・プライバシー・オーソライゼーション言語(EPAL:Enterprise Privacy Authorization Language)、アマゾン・ウェブサービス・アクセスポリシー言語等の宣言型アクセスポリシー制御言語、マイクロソフトSecPol、または暗号オペレーションが実施されるために満たされなければならない1つまたは複数の条件をエンコードする任意の適した方法でエンコードすることができる。図5に示すように、ポリシー文書500は、ポリシー文書500用のストリングを含むことができる名前502を含む。名前502は、例えば、人間可読項目を使用するときに好都合な識別子を提供するために使用することができる。或る例として、名前502は、自分のデータ記憶サービスポリシーの趣旨でのストリングであるとすることができる。同様に図5に示すように、ポリシー文書500はバージョン504を含むことができる。バージョン504は、種々の要求がポリシーを更新するために受信され履行されるにつれてポリシー文書500が経時的にどのように変化するかを追跡するために使用することができる。ポリシー文書500に対するそれぞれの更新は、バージョン504を新しい値に更新させることができる。ポリシー文書500はまた、現在のバージョンを有するポリシー文書500の生成をもたらした要求を提出したユーザについての識別子である場合がある発行者506を含むことができる。
図5に示しまた先に述べたように、ポリシー文書500は、1つまたは複数の文508を含むことができる。ポリシー文書内の文は、論理ORを使用して処理することができる。以下でより詳細に論じるように、1つまたは複数の文508は、ポリシー文書500によってエンコードされるポリシーが効力がある将来時間を示す情報を、エンコードすることができる。例えば、文は、ポリシー文書500によってエンコードされるポリシーが効力を生じる将来時間についてのタイムスタンプをエンコードすることができる。文は、ポリシー文書500が効力を生じる前に経過しなければならない時間を示す継続期間をエンコードすることができ、継続期間は、グローバル時間(例えば、Unix時間)であり得る或る時点から測定することができる、または、文を含むポリシーを追加する要求の提出またはポリシー管理システムによるポリシーの承認等の、特定の事象から測定することができる。一般に、文は、ポリシー文書500によってエンコードされるポリシーが効力を生じる将来時間を即座にまたは最終的に確定可能であるようにする任意の情報をエンコードすることができる。文がまた、(少なくともポリシー文書内の)文を一意に識別する文識別子等の、図に示さない更なる情報、及び、ポリシー管理システムによって使用される場合がある他の情報を含むことができることが留意されるべきである。
図6は、種々の実施形態によるポリシー文書600の別の例証的な例を示す。ポリシー文書600は、図5に関連して先に論じたポリシー文書500と同様に構成することができる。例えば、図6に示すように、ポリシー文書600は、上述したような、名前602、バージョン604、発行者606、及び1つまたは複数の文608を含むことができる。しかし、ポリシー文書600によってエンコードされるポリシーが効力を生じるときについて文608が確定的である代わりに(またはそれに加えて)、ポリシー文書600は、文608及び特に効力タイミング情報610に加えて、更なる情報を含むことができる。換言すれば、効力タイミング情報は、ポリシー文書の内部で及び/または外部でエンコードすることができる。先に述べたように、効力タイミング情報610は、任意の情報であって、それから、ポリシー文書600によってエンコードされるポリシーが効力を生じる将来時間が確定される可能性がある、任意の情報であるとすることができる。ポリシー文書600によってエンコードされるポリシーが効力を生じる継続期間または時点を示す値等の、例示的な効力タイミング情報は、先に論じられている。
先に述べたように、文は、許可についての公式な説明であるとすることができる。図7は、上述したような、ポリシー文書においてエンコードされることができる文700の例証的な例を相応して示す。図7に示すように、文700は1つまたは複数のプリンシパル702を識別する情報を含むことができる。プリンシパルは、文700が適用されるエンティティ(例えば、ユーザ、コンピュータシステム、またはシステムに対するアクセスについての許可が認められる場合がある任意のエンティティ)であるとすることができる。或る例として、コンピューティングリソースサービスプロバイダの顧客はアカウントを有することができる。アカウントは、それぞれが顧客のユーザに対応する複数のサブアカウントに関連する場合がある。各ユーザは、文内のプリンシパルとして含むことが可能である場合がある対応する識別子を有することができる。プリンシパルはまた、他の方法で識別することができる。例えば、プリンシパルのセットは、そのセットについての識別子によって識別することができる。或る例証的な例として、組織内の部署は対応する識別子を有することができる。文は、部署についての識別子を文の中で挙げることによって、部署に関連するユーザに適用可能であるとすることができる。プリンシパルのセットについての識別子は、例えば、従業者が、組織及び/またはその組織の中の部署によって雇われる及び/またはそこを辞めるとき等、そのセットが、動的に変化しているときに有用である場合がある。プリンシパルの識別子もまたオープンエンドであることができる。例えば、文700が、誰にでも、すなわち、コンピューティングリソースサービスプロバイダ又は一般に全てのユーザのアカウントのために要求を提出することが可能な全てのユーザに適用可能であることを示す情報が含まれる場合がある。
図7に示すように、文700はまた、1つまたは複数のリソース704を識別する。リソースは、上述したようなコンピューティングリソースであるとすることができる。リソースは、例えば、コンピューティングリソースサービスプロバイダによって提供されるサービスの題目であるとすることができる。或る例として、リソースは、仮想コンピュータシステムである場合がある、データオブジェクトを共に関連付けるために使用される論理データ格納庫である場合がある、ブロックレベルデータ記憶デバイスのボリューム識別子、データベース、データベースに記憶されるアイテム、データオブジェクト(例えば、ファイル)、及び、サービスとして提供される場合がある一般に任意のタイプのリソースであるとすることができる。プリンシパルの場合と同様に、リソースは、リソースのセットの識別子を使用して記述することができる。例えば、幾つかの実施形態において、仮想コンピュータシステムは、仮想コンピュータシステムによって履行される役割を記述する場合があるユーザ生成タグに関連付けられる。或る例として、仮想コンピュータシステムのグループは、タグ「ウェブサーバ(web server)」に関連付けられる場合がある。リソースは、相応して、こうしたタグによって識別することができる。別の例として、リソースは、論理データ格納庫に対応する場合があり、それにより、文700を、論理データ格納庫に記憶された、すなわち、論理データ格納庫に関連付けられた任意のデータオブジェクトに適用可能にさせることができる。
図7に示すように、文700はまた、1つまたは複数の条件を含むことができる。条件は、或る実施形態において、ポリシー文書内の文が、特定の文脈において適用可能であるかどうか、すなわち、要求が提出された文脈において提出された要求に適用可能であるかどうかについて確定的である。条件は、ブール演算子(equal、less than等)を利用して、文内の他の値(プリンシパル、リソース等)、及び、ポリシーがそれについて評価されている要求に設けられる場合があるかまたは設けられない場合があるオーソライゼーション文脈内の他の値に対する条件の評価を可能にすることができる。条件値は、年月日、時間、要求者のインターネットプロトコル(IP)アドレス、要求源の識別子、ユーザ名、ユーザ識別子、及び/または要求者のユーザエージェント、並びに/または他の値を含む可能性がある。値はまた、条件が適用されるサービスに一意であるとすることができる。条件は、AND及びOR等の論理的コネクタを使用する評価のために論理的に接続することができる。
文はまた、1つまたは複数のアクション708をエンコードすることができる。エンコードされるアクションは、条件(複数可)706が充足されるかつ/または充足されないときに起こるオペレーションを示すことができる。例証的なアクションは、要求が履行されることを許可すること(例えば、要求されるアクセスを許可すること)または要求を拒否することを含む。他のアクションは、文700において指定される1つまたは複数の電子メールアドレスに対する電子メールメッセージの送信等の文700においてエンコードされる情報に従う通知の送信、通知サーバのトピックに対して通知を発行すること、及び/または他のアクションを含む。相応して、エンコードされるアクション708は、アクションを実施するのに十分な情報を含むことができる。
本開示の種々の実施形態が、要件であって、ポリシー文書によって定義されるポリシー(すなわち、ポリシー文書によって定義される1つまたは複数のポリシーのセット)が、要件に適合する将来の年月日に効力を生じる、要件を例証的な方法で論じることが留意されるべきである。換言すれば、本明細書で論じる例証的な例は、ポリシー文書が将来時間に効力を生じる要件に関連する。本明細書で論じる全ての実施形態の場合と同様に、変形が、本開示の範囲内にあるものと考えられる。例えば、各文は、文が発効する将来時間を決定するために使用可能である効力タイミング情報を含むことができる。種々の実施形態は、遅延された効力に関するポリシー文書レベルの要件の代替としてまたはそれに加えて、文レベルで定義されるポリシーに関する要件を含むことができる。文が発効するかどうかを判定することは、(遅延が必要とされる)各文が遅延についての要件に適合するかどうかを判定することを含むことができる。ポリシー文書における異なる文は異なる遅延を有する場合があり、ポリシー変更/追加に関する既存のポリシーは、異なる文について異なる遅延要件を有する場合がある。
図8は、或る実施形態による、要求を処理するプロセスの例証的な例を示す。プロセス800は、図3に関連して上述したサービス300及び/または図4に関連して述べたポリシー管理サービス400等の、任意の適したシステムまたはそのコンポーネントによって実施することができる。或る実施形態において、プロセス800は、要求を受信する802ことを含む。要求は、例えば、上述したサービスフロントエンド302またはポリシー管理システムフロントエンド402等のフロントエンドに対する適切に構成されたAPI呼出しとして受信することができる。API呼出しは、例えば、要求に対して適用可能な種々のパラメータによって構成されるウェブサービス呼出しの形態であるとすることができる。要求を受信する802と、プロセス800は、要求が真正であるかどうかを判定する804ことを含むことができる。要求が真正であるかどうかを判定する804ことは、任意の適した方法で実施することができる。例えば、幾つかの実施形態において、要求は、電子署名によって署名される場合がある。要求が真正であるかどうかを判定する804ことは、電子署名を検証することを含むことができる。電子署名の検証は、任意の適したシステムまたはそのコンポーネントによって行うことができる。例えば、上述した実施形態を参照すると、認証ランタイムサービスまたは認証システムが検証を実施することができる。検証が他のエンティティによって実施される場合があることが留意されるべきである。例えば、幾つかの実施形態において、検証は、分散方法で行われるのではなく、上述したようなフロントエンドシステムによって行われる。一般的に、要求の真正性を判定することができるいずれの方法も使用することができる。
要求が真正でないと判定される804場合、要求は拒否される806場合がある。要求を拒否することは、単に何の対策も取らないことによる拒否を示す情報によって要求に応答すること、並びに/または、要求が拒否される1つまたは複数の理由を示す情報及び/または拒否のための理由に対処することを可能にするのに必要である場合がある更なる情報を提供すること等によって、任意の適した方法で実施することができる。しかし、要求が真正であると判定される804場合、プロセス800は、1つまたは複数の適用可能なポリシーにアクセスする808ことを含むことができる。適用可能なポリシーにアクセスする808ことは、上述したポリシー管理サービス等によって任意の適したシステムまたはそのコンポーネントによって実施することができる。適用可能なポリシーは、例えば、ポリシー文書を、上述したようなポリシーリポジトリから取出すことによってアクセスされる場合がある。幾つかの実施形態において、ポリシーが効力を生じるときを示すタイミング情報は、適用可能であるポリシーのセット(例えば、タイミング情報を考慮することなく、要求に適用されることになるポリシーのセット)からポリシーのサブセットを選択するために使用される。選択されるサブセットは、現在発効しているサブセット内のポリシーを示すタイミング情報を有するポリシーを含むことができる。
その後、適用可能なポリシーが要求の履行を許可するかどうかという判定を行う810ことができる。ポリシーが要求の履行を許可するかどうかという判定810は、図4に関連して上述したポリシーエンジン410等によって任意の適した方法で実施することができる。ポリシーが要求の履行を許可するかどうかを判定するポリシーエンジンまたは他のシステムは、適用可能なポリシーを解析して、ポリシーが要求の履行を許可するかどうかを判定することができる。論じたように、解析が行われる方法は、種々の実施形態に応じて変わる場合がある。例えば、適用可能なポリシー、または一般に、おそらくは適用可能なポリシーはシーケンスで解析される場合がある。ポリシーが、ポリシーのシーケンスにおいて、要求の履行によって違反される場合、(もしあれば)シーケンスの残りを解析しなければ、要求の履行を許可しないという判定を行うことができる。更に、ポリシーが要求の履行を許可するかどうかを判定する810ことは、ポリシー文書においてエンコードされる情報に少なくとも部分的に基づいて、ポリシー文書が、現在効力があるかどうか、または、ポリシー文書の強制が遅延されているかどうかを判定することを含むことができる。ポリシー文書が、現在効力があるかどうかを判定することは、例えば、1つまたは複数の前のオペレーションの実施中のポリシーを排除するためにタイミング情報が使用されない実施形態において実施することができる。
より複雑な処理もまた実施される場合がある。例えば、要求の履行が、文においてエンコードされるポリシーに違反することになることをポリシー文書内の文が示す場合、任意の更なるポリシーが、そのポリシーに取って代わり、要求の履行を許可するかどうかという判定を行うことができる。一般に、ポリシーは、任意の適した方法で解析することができ、方法は、種々のシステムのどのシステムが構成されるか及びポリシーがどのようにエンコードされるかに応じて変わる場合がある。要求が履行されることをポリシーが許可しないと判定される810場合、プロセス800は、上述したような要求を拒否する806ことを含むことができる。しかし、要求の履行をポリシーが実際に許可すると判定される810場合、要求を履行する812ことができる。
先に述べたように、種々の実施形態による要求は、著しく変わる場合がある。したがって、要求の履行は、相応して変わる場合がある。一般に、要求の履行は、1つまたは複数のコンピューティングリソースを構成すること、データに対してアクセスを提供すること、また一般に、要求に従って1つまたは複数のアクションを実施することを含むことができる。先に述べたように、本開示の種々の実施形態は、ポリシーを追加するかまたはポリシーをその他の方法で変更する要求に適用される。図9は、既存のポリシーを変更することに関連してポリシーを強制するために使用される場合があるプロセス900の例証的な例を相応して示す。図9に示すように、プロセス900は、ポリシーを追加する要求を受信する902ことを含む。ポリシーを追加する要求は、適切に構成されたAPI呼出しの形態であるとすることができる。図9はポリシーを追加する要求を論じるが、プロセス900が、既存のポリシーを変更する要求等の他のタイプの要求のために適合することができることが留意されるべきである。或る実施形態において、ポリシーを変更する要求を受信する902と、要求が、上述したように真正であるかどうかという判定を行う904ことができる。要求が真正でないと判定される904場合、ポリシーを変更する要求を拒否する906ことができる。要求の拒否は、上述したように実施することができる。しかし、要求が真正であると判定される904場合、プロセス900は、上述したように適用可能なポリシーにアクセスする908ことを含むことができる。
図9に示すように、プロセス900は、時間遅延要件を検出する910ことを含む。時間遅延要件を検出する910ことは、種々の実施形態に従って種々の方法で実施することができる。例えば、簡単にするため図9から省略されるが、図に示されないが、プロセス900は、アクセスされる適用可能なポリシーを処理すること、及び、任意の適用可能なポリシーが、ポリシーを追加する要求の履行を排除することになるかどうかを判定することを含むことができる。こうした処理中に、時間遅延要件を有するポリシーを検出することができる。時間遅延要件が、他のポリシーと共に記憶されるポリシーにおいて必ずしもエンコードされるのではなく、こうした要件がポリシー文書においてコード化されることなく遅延を強制するようにシステムをコード化するかまたはその他の方法で構成することができることが留意されるべきである。時間遅延要件が、アカウント用のポリシーのセットにおいてエンコードされない実施形態において、適用可能なポリシーがアクセスされる908前に、時間遅延要件を検出することを、実施することができることが留意されるべきである。一般に、図が、ここで、特定の順序で起こる種々のオペレーションを示すが、多くの事例において、オペレーションの順序は、示す順序と異なる場合があることが留意されるべきである。更に、オペレーションは、厳格な順序付けに従わない方法で実施することができるが、例えば、オペレーションは、並列に、または、少なくとも部分的に並列に実施することができる。
図9に示す特定の実施形態に戻ると、時間遅延要件を検出する910と、要求されるポリシーエディションが時間遅延要件に適合しているかどうかという判定を行う912ことができる。判定912は、任意の適した方法で行うことができ、判定912が行われる方法は、ポリシーに関する情報がエンコードされる方法に従って変わる場合がある。例えば、要求されるポリシー追加の効力についての将来の時間が、ポリシー文書内の文から確定可能である実施形態において、当該文が評価されて、時間遅延要件に適合しているかどうかを判定することができる。或る例証的な例として、時間遅延要件は、ポリシーの効力年月日が将来に向かって48時間である場合にだけ、ポリシーを追加することができるようなものであることができる。文においてエンコードされる情報が解析されて、ポリシーを追加する要求が要件に適合しているかどうかを判定することができる。同様に、効力時間及び情報が、ポリシー文書の文の外部でエンコードされる実施形態において、効力時間及び情報を、相応して解析することができる。例えば、追加されることを要求されるポリシーが効力を生じる時間を示すタイムスタンプを、効力時間及び情報が含む実施形態において、タイムスタンプがチェックされて、ポリシーを追加する要求が受信された時間等の或る基準時点を基準にして、タイムスタンプが将来に向かって48時間より長い時間であるかどうかを判定することができる。一般に、要求されるポリシーが時間遅延要件に適合しているという判定912は、種々の実施形態に従って種々の方法で実施することができ、本開示は、ここで明示的に述べる実施形態に限定されない。
要求されるポリシー追加が時間遅延要件に適合していないと判定される場合、プロセス900は、上述したようにポリシーを追加する要求を拒否する906ことを含むことができる。しかし、要求されるポリシー追加が、時間遅延要件に適合していると実際に判定される912場合、プロセス900は、上述したように要求を履行する914ことを含むことができる。種々の実施形態において、ポリシーに対する一定の変更が必要とされると、1つまたは複数の通知を送信することができる。顧客またはコンピューティングリソースプロバイダのためのポリシー管理者は、例えば、ポリシーを変更する試みを示す電子メールまたは他の電子メッセージを受信することができる。したがって、実施形態におけるプロセス900は、通知プロセスを起動する916ことを含む。通知プロセスの起動は、上述したような通知システムに、1つまたは複数のエンティティに対して1つまたは複数の通知を発行させること等によって任意の適した方法で実施することができる。
通知プロセスは、種々のアラーム/通知アクションの実施をもたらすように構成されるワークフローの実行を含むことができる。アラーム/通知アクションは、例えば、(上述したような)通知システムに、1人または複数人の個人または1つまたは複数のシステム、例えば、ポリシーセットに関連するアカウントに関連する組織のコンプライアンス責任者またはポリシー管理者に対して1つまたは複数のメッセージを送信させることを含むことができる。別の例として、アラーム/通知アクションは、監査システムに、強化された監査を実施させることを含むことができ、例えば、より多くの情報が、システムに対する種々のアクセスに関連して収集される。幾つかの実施形態において、アラーム/通知アクションはまた、アラームの可聴及び/または視覚指示を含む場合があるアラーム信号送信を含むことができる。他のアラームアクションは、本開示の範囲内にあるものとして考えられる。通知はまた、選択されると、要求を取消す要求が、要求を取消すことが可能なシステム(例えば、ポリシー管理システム)に送信されるように要求にさせる、ハイパーリンク(または他のメカニズム)を含むメッセージの送信を含むことができる。メッセージは、メッセージの受信者による認証なしで取消しを許可することができる。通知を通して要求が取消されることを可能にする他の方法もまた使用することができる。
本開示の種々の実施形態において先に述べたように、ポリシーの影響についての遅延は、こうしたポリシーの効力を取消す機会を提供するために強制される。図10は、取消されない場合、普通なら発効することになるポリシーを取消す機会を提供するために使用することができるプロセス1000の例証的な例を相応して示す。プロセス1000は、図2の種々のサービスを備えるシステム及び/または図4に関連して先に論じたポリシー管理サービス400等の任意の適したシステムによって実施することができる。或る実施形態において、プロセス1000は、将来時間において効力があるポリシーを追加する要求を受信する1002ことを含む。将来時間において効力のあるポリシーを追加する要求は、適切に構成されたAPI呼出し等、任意の適した方法で受信することができる。効力時間は、追加されることを必要とされるポリシーにおいてエンコードすることができる、またはその他の方法でエンコードすることができる。例えば、幾つかの実施形態において、将来時間、または一般に、上述したような効力タイミング情報は、ポリシー文書自体の中にある代わりに、API呼出し内のパラメータとして含まれる。先に論じたように、要求が真正であるかどうかという判定を行う1004ことができ、要求が真正でないと判定される1004場合、プロセス1000は、ポリシーを追加する要求を拒否する1006ことを含むことができる。
しかし、要求が真正であると判定される1004場合、プロセス1000は、既存のポリシーまたは一般にポリシー追加が許可されるかどうかを確認する1008ことを含むことができる。ポリシー追加が許可されるかどうかを確認する1008ことは、上述したプロセス800及び900の適用可能なオペレーションを実施すること等によって任意の適した方法で実施することができる。図10に示さないが、プロセス1000が、ポリシーを追加する要求を拒否する1006ことを含むことができることが留意されるべきである。ポリシー追加が許可されることが確認されない場合、ポリシー追加が許可されることを確認する1008と、ポリシーは、ポリシーリポジトリに追加され1010、また、適用可能である場合、任意の通知を、上述したように発行することができる。
ポリシーがポリシーリポジトリに追加された後の或る時点で、上述したように(例えば、通知によって)、または、管理コンソールにログインすることによって、また、要求を提出するための対応するGUIを使用して等の別の方法で、ポリシー追加を取消す要求を受信する1012ことができる。ポリシー追加を取消す要求を受信する1012と、プロセス1000は、追加されるポリシーが上述したように効力があるかどうかを判定する1014ことを含むことができる。例えば、ポリシーリポジトリに追加されたポリシーをエンコードするポリシー文書の文の中においてまたは文の外部においてエンコードされる効力タイミング情報が解析されて、ポリシーが効力を生じるのに十分な時間が経過したかどうかを判定することができる。追加されるポリシー効力がないと判定される1014場合、プロセス1000は、緩められた取消し条件のセットによって取り消しが許可されるかどうかを判定する1016ことを含むことができる。緩められた条件は、既に発効しているポリシーを取消すための条件と比べて厳しくない場合がある。例えば、要求されるポリシー追加/変更の通知が、ポリシー追加を取消すためのメカニズム(例えば、ハイパーリンク)を提供する実施形態において、ポリシー追加は、既に発効しているポリシーについて必要とされる場合がある更なる認証なしで取消すことができる。同様に、発効しているポリシーを取消すことができるプリンシパルのセットに比べて、プリンシパルのより大きなセットが、まだ発効していないポリシーについてポリシー追加を取消すことを許可される場合がある。更に別の例として、ポリシー変更は、ポリシー変更の取消しに合意するプリンシパルに関して定足数ルール(quorum rule)の強制を必要とする場合がある。定足数ルールは、既に発効しているポリシーについての定足数ルールに比べて、まだ発効していない追加されるポリシーについて厳しくない場合がある。他の例もまた、本開示の範囲内にあるものとして考えられる。
緩められた取消し条件によって取消しが許可されないと判定される1016場合、プロセス1000は、取消す要求を拒否する1018こと、それにより、ポリシーがまだ効力がなく、別の取消し要求が受信されない場合にポリシーが効力を生じることを許可すること、または、ポリシーが、効力があり続けることを許可することを含むことができる。しかし、取消しが、緩められた取消し条件のセットによって許可されると判定される1016場合、プロセス1000は、取消す要求を履行する1020ことを含むことができる。取消す要求を履行する1020ことは、ポリシーリポジトリからポリシーを削除するかまたはその他の方法で取除くこと、または、(例えば、ポリシーについてメタデータを更新することによって)発効していないとしてポリシーを電子的にマーク付けすること等によって、単純な方法で実施することができる。
追加されるポリシーが、効力があると判定される1014場合、取消しが、上述したようにより厳しい取消し条件のセットによって許可されるかどうかという判定を行1022ことができる。取消しが、より厳しい取消し条件によって許可されないと判定される1022場合、プロセス1000は、上述したように取消す要求を拒否する1018ことを含むことができる。しかし、取消しが、より厳しい取消し条件によって許可されると判定される1022場合、プロセス1000は、ポリシー追加を取消す要求を履行する1020ことを含むことができる。
本開示の実施形態は、以下の項の観点で述べることができる。
第1項。ポリシーを管理するためのコンピュータ実装式方法であって、実行可能命令によって構成される1つまたは複数のコンピュータシステムの制御下で、
ポリシー追加ポリシーを含む1つまたは複数のポリシーのセットを記憶することであって、前記ポリシー追加ポリシーは、提案されるポリシーについて強制の遅延についての要件を含む1つまたは複数の条件を指定する、記憶すること、
提案されるポリシーを追加する要求を受信することであって、当該ポリシー追加ポリシーは当該提案されるポリシーに適用可能である、受信すること、
当該要求に関連して提供される情報に少なくとも部分的に基づいて当該提案されるポリシーが当該要件に適合するかどうかを判定することを含み、
当該提案されるポリシーが当該要件に適合すると判定する結果として、当該提案されるポリシーは当該要件に従って効力を生じ、当該提案されるポリシーが当該要件に適合するのに失敗すると判定する結果として、当該要求は拒否される、コンピュータ実装式方法。
第2項。当該ポリシーに効力を生じさせることは、当該提案されるポリシーを追加する当該要求の1つまたは複数の通知を送信させることを含む、第1項に記載のコンピュータ実装式方法。
第3項。当該提案されるポリシーに効力を生じさせることは、1つまたは複数のポリシーの当該セットからポリシーを取除くための1つまたは複数の要件の別のセットより厳しくない1つまたは複数の要件のセットの下で当該提案されるポリシーが効力を生じることを防止する能力を提供することを含む、第1項または第2項に記載のコンピュータ実装式方法。
第4項。当該要求と共に提供される情報は、当該提案されるポリシーを定義するポリシー文書のエンコーディングを含み、当該ポリシー文書は、当該要件に対する適合性が確定的である値をエンコードする、第1項から第3項のいずれか1項に記載のコンピュータ実装式方法。
第5項。当該要求は、アプリケーションプログラミングインターフェースパラメータのセットを有するアプリケーションプログラミングインターフェース呼出しであり、
当該要求と共に提供される情報は、アプリケーションプログラミングインターフェースパラメータの当該セットからのパラメータである、第1項から第4項のいずれか1項に記載のコンピュータ実装式方法。
第6項。1つまたは複数のポリシーの当該セットは、コンピューティングリソースサービスプロバイダの顧客のために管理されるコンピューティングリソースのセッに適用され、
当該1つまたは複数のポリシーを記憶することは、当該コンピューティングリソースサービスプロバイダの他の顧客の1つまたは複数のポリシーの他のセットと共に、1つまたは複数のポリシーの当該セットを記憶することを含む、第1項から第5項のいずれか1項に記載のコンピュータ実装式方法。
第7項。当該提案されるポリシーは、当該提案されるポリシーが効力を生じる時間を示す値を含み、
方法は、
当該提案されるポリシーを1つまたは複数のポリシーの当該セットに追加すること、
当該提案されるポリシーが適用される第2の要求を受信すること、
当該示された時間に少なくとも部分的に基づいて、当該要求を履行するかどうか判定するときに当該提案されるポリシーを使用するかどうかを判定すること、
当該判定することに整合して、当該第2の要求を履行するかどうかを評価することを更に含む、第1項から第6項のいずれか1項に記載のコンピュータ実装式方法。
第8項。ポリシーを管理するためのコンピュータ実装式方法であって、実行可能命令によって構成される1つまたは複数のコンピュータシステムの制御下で、
1つまたは複数のポリシーのセットに対する変更のための要求を受信すること、
当該要求に少なくとも部分的に基づいて、当該要求された変更が、将来効力を生じるための1つまたは複数の要件を満たすかどうかを判定すること、及び、
当該要求された変更が当該1つまたは複数の要件を満たすと判定する結果として、当該変更が、当該要件に従って効力を生じることを可能にすることを含む、コンピュータ実装式方法。
第9項。当該変更は、1つまたは複数のポリシーの当該セットに対する1つのポリシーの追加である、第8項に記載のコンピュータ実装式方法。
第10項。当該要件は、1つまたは複数のポリシーの当該セットからの1つのポリシーの結果である、第8項または第9項に記載のコンピュータ実装式方法。
第11項。当該要求の1つまたは複数の通知を送信させることを更に含む、第8項から第10項のいずれか1項に記載のコンピュータ実装式方法。
第12項。当該変更が効力を生じる前に当該変更を取消す要求を受信すること、及び、
当該変更を取消す当該要求を受信する結果として、当該変更が効力を生じることを不可能にすることを更に含む、第8項から第11項のいずれか1項に記載のコンピュータ実装式方法。
第13項。当該要求された変更が当該1つまたは複数の要件を満たすかどうかを判定することは、提案されたポリシーのエンコーディングが、当該1つまたは複数の要件と整合性がある強制遅延を示すパラメータを含むかどうかを判定することを含む、第8項から第12項のいずれか1項に記載のコンピュータ実装式方法。
第14項。システムであって、
ポリシーを変更する要求を受信するように構成されるフロントエンドサブシステムと、
ポリシー管理サブシステムであって、ポリシーに対する変更についての要求を当該フロントエンドサブシステムが受信すると、
当該要求に少なくとも部分的に基づいて当該フロントエンドサブシステムから情報を受信し、
当該受信された情報に少なくとも部分的に基づいて、当該要求された変更が、当該変更の遅延された効力についての1つまたは複数の要件に適合しているかどうかを判定し、
当該要求された変更が当該1つまたは複数の要件に適合していると判定する結果として、当該要求された変更が効力を生じることを可能にする、当該ポリシー管理サブシステムと、を含む、システム。
第15項。当該要求はウェブサービス要求である、第14項に記載のシステム。
第16項。当該情報は提案されたポリシーのエンコーディングである、第14項または第15項に記載のシステム。
第17項。当該要求を受信する結果として、1つまたは複数の通知を送信するように構成される通知システムを更に備える、第14項から第16項のいずれか1項に記載のシステム。
第18項。当該ポリシー管理サブシステムは、第2の要求を受信すると、
ポリシーのセットから、現在効力があることを示す効力時間をエンコードするポリシーのサブセットを選択し、
当該選択されたポリシーのセットに少なくとも部分的に基づいて当該第2の要求を履行するかどうかという判定を提供する
ように更に構成される、第14項から第17項のいずれか1項に記載のシステム。
第19項。当該要件は、当該システムによって強制された既存のポリシーの結果である、第14項から第18項のいずれか1項に記載のシステム。
第20項。当該ポリシー管理サブシステムは、効力を生じる当該要求された変更の取消しを可能にするように更に構成される、第14項から第19項のいずれか1項に記載のシステム。
第21項。1つまたは複数のコンピュータ可読記憶媒体であって、命令が1つまたは複数のコンピュータ可読記憶媒体上に集合的に記憶されており、当該命令は、システムの1つまたは複数のプロセッサによって実行されると、当該システムに、
エンティティのためのコンピューティングリソースアクセスに対してアクセス用のポリシーのセットを管理させ、
ポリシーの当該セットに対する変更についての要求を受信させ、
ポリシー変更のための遅延された効力についての1つまたは複数の要件に従って、効力を生じる前に、或る時間の間、当該変更が取消し可能であるように当該要求を処理させる、1つまたは複数のコンピュータ可読記憶媒体。
第22項。当該命令は、当該システムに、当該変更の1つまたは複数の通知の送信を更にもたらさしめる、第21項に記載の1つまたは複数のコンピュータ可読記憶媒体。
第23項。当該1つまたは複数の通知の送信は、当該変更を取消す権限を有するものとして指定されるアイデンティティに対する通知の送信を含む、第22項に記載の1つまたは複数のコンピュータ可読記憶媒体。
第24項。当該変更が効力を生じる前に、当該変更は、当該変更が効力を生じた後に効力がある他の要件に比べて厳しくない1つまたは複数の要件に従って取消し可能である、第21項から第23項のいずれか1項に記載の1つまたは複数のコンピュータ可読記憶媒体。
第25項。当該変更のための当該要求は、新しいポリシーのエンコーディングを含み、当該エンコーディングは、当該新しいポリシーが効力を生じるための提案される遅延を示す情報を含む、第21項から第24項のいずれか1項に記載の1つまたは複数のコンピュータ可読記憶媒体。
第26項。当該要求を処理することは、ポリシー変更のための遅延された効力についての当該1つまたは複数の要件による遅延を示す情報を当該要求が欠いている結果として、当該要求を拒否することを含む、第21項から第25項のいずれか1項に記載の1つまたは複数のコンピュータ可読記憶媒体。
本明細書で論じる全てのプロセスの場合と同様に、変形は、本開示の範囲内にあるものとして考えられる。例えば、図10に示すように、ポリシーが任意の時間遅延要件に適合していると判定されると、ポリシーは、まだ効力がないときでもポリシーリポジトリに追加される場合がある。本開示の変形は、強制された遅延が発生してしまうまで、ポリシーリポジトリへのポリシーの追加を遅延させることによって、システムが時間遅延要件を強制する実施形態を含む。こうして、種々の要求を履行するかどうかを判定するためにポリシーを処理することは、適用可能なポリシーがもう効力を生じたかどうかを判定することなく、実施することができる。他の変形もまた、本開示の範囲内にあるものとして考えられる。
図11は、種々の実施形態による態様を実装するための例示的な環境1100の態様を示す。認識されるように、ウェブベース環境が説明のために使用されるが、種々の実施形態を実装するため、異なる環境を適宜使用することができる。環境は、電子クライアントデバイス1102を含み、電子クライアントデバイス1102は、適切なネットワーク1104を通じて、要求、メッセージ、または情報を送受信し、デバイスのユーザに戻るように情報を伝達するように動作可能な任意の適切なデバイスを含むことができる。こうしたクライアントデバイスの例は、パーソナルコンピュータ、携帯電話、手持ち式メッセージングデバイス、ラップトップコンピュータ、タブレットコンピュータ、セットトップボックス、携帯情報端末、埋め込み式コンピュータシステム、電子ブックリーダ、及び同様なものを含む。ネットワークは、インラネット、インターネット、セルラーネットワーク、ローカルエリアネットワーク、または任意の他のこうしたネットワーク、或いはその組合せを含む任意の適したネットワークを含むことができる。こうしたシステムのために使用されるコンポーネントは、ネットワークのタイプ及び/または選択される環境に少なくとも部分的に依存する可能性がある。こうしたネットワークを介して通信するためのプロトコル及びコンポーネントは、よく知られており、本明細書で詳細に論じられない。ネットワークを通じた通信は、有線または無線接続及びその組合せによって可能にされる。この例において、ネットワークは、要求を受信し要求に応答してコンテンツをサーブするためのウェブサーバ1106を環境が含むため、インターネットを含むが、他のネットワークの場合、当業者に明らかになるように、同様な目的の役割を果たす代替のデバイスが使用される可能性がある。
例証的な環境は、少なくとも1つのアプリケーションサーバ1108及びデータストア1110を含む。チェーン接続されるかまたはその他の方法で構成されることができ、適切なデータストアからデータを取得すること等のタスクを実施するために対話することができる、幾つかのアプリケーションサーバ、層または他の要素、プロセスまたはコンポーネントが存在する可能性があることが理解されるべきである。サーバは、本明細書で使用されるとき、ハードウェアデバイスまたは仮想コンピュータシステム等、種々の方法で実装することができる。幾つかの文脈において、サーバは、コンピュータシステム上で実行されるプログラミングモジュールを指すことができる。明細書で使用されるとき、用語「データストア(data store)」は、任意の標準型、分散型、またはクラスター型環境において、任意の組合せ及び任意の数のデータサーバ、データベース、データ記憶デバイス、及びデータ記憶媒体を含むことができる、データを記憶し、データにアクセスし、データを取出すことが可能な任意のデバイスまたはデバイスの組合せを指す。アプリケーションサーバは、アプリケーション用のデータアクセス及びビジネスロジックの幾つか(更に大多数)を扱う、クライアントデバイス用の1つまたは複数のアプリケーションの態様を実行するために必要に応じてデータストアと統合するための任意の適したハードウェア及びソフトウェアを含むことができる。アプリケーションサーバは、データストアと連携してアクセス制御サービスを提供することができ、また、この例では、ハイパテキストマークアップ言語(「HTML:HyperText Markup Language」)、拡張可能マークアップ言語(「XML:Extensible Markup Language」)、または別の適切な構造化言語の形態でウェブサーバによってユーザにサーブされることができる、ユーザに転送される、テキスト、グラフィクス、オーディオ、及び/またはビデオ等のコンテンツを生成することができる。全ての要求及び応答の扱い並びにクライアントデバイス1102とアプリケーシィンサーバ1108との間のコンテンツの送出はウェブサーバによって扱うことができる。本明細書で論じる構造化コードが、任意の適したデバイスまたは本明細書の他の所で論じるホストマシン上で実行されることができる、ウェブサーバ及びアプリケーションサーバは必要とされず、例示的なコンポーネントに過ぎないことが理解されるべきである。更に、単一デバイスによって実施されるものとして本明細書で述べるオペレーションは、別途文脈から明らかにならない限り、分散システムを形成する場合がある複数のデバイスによって集合的に実施することができる。
データストア1110は、幾つかの別個のデータテーブル、データベース、または他のデータ記憶メカニズム及び本開示の特定の態様に関連するデータを記憶するための媒体を含むことができる。例えば、示すデータストアは、生産サイドのためのコンテンツをサーブするために使用される可能性がある生産データ1112及びユーザ情報1116を記憶するためのメカニズムを含むことができる。データストアはまた、報告、解析、または他のこうした目的のために使用される可能性があるログデータ1114を記憶するためのメカニズムを含むように示される。多くの他の態様であって、画像情報をページングするため、また、権利情報にアクセスするため等でデータストアに記憶される必要がある場合があり、適宜先に挙げたメカニズムのうちの任意のメカニズム内にまたはデータストア1110内の更なるメカニズム内に記憶される可能性がある、多くの他の態様が存在する可能性があることが理解されるべきである。データストア1110は、データストア1110に関連するロジックを通して、アプリケーションサーバ1108から命令を受信し、命令に応答して、データを取得する、更新する、またはその他の方法で処理するように動作可能である。一例において、ユーザは、ユーザによって操作されるデバイスを通して、或るタイプのアイテムについて検索要求を提出することができる。この場合、データストアは、ユーザ情報にアクセスして、ユーザのアイデンティティを検証することができ、また、カタログ詳細情報にアクセスして、そのタイプのアイテムに関する情報を取得することができる。情報は、その後、ユーザデバイス1102上のブラウザによってユーザが閲覧できるウェブページ上の結果リスティング等において、ユーザに返送される可能性がある。特定の関心アイテムについての情報は、ブラウザの専用ページまたはウィンドウにおいて閲覧することができる。しかし、本開示の実施形態が、必ずしもウェブページの文脈に限定されるというわけではなく、より一般的に、一般的な要求(request in general)であって、必ずしもコンテンツのための要求でない、一般的な要求を処理することに適用可能である場合があることが留意されるべきである。
各サーバは、通常、そのサーバの全体的な管理及び運用のために実行可能プログラム命令を提供するオペレーティングシステムを含むことになり、また、通常、命令であって、サーバのプロセッサによって実行されると、サーバがその意図される機能を実施することを許可する、命令を記憶するコンピュータ可読記憶媒体(例えば、ハードディスク、ランダムアクセスメモリ、読出し専用メモリ等)を含むことになる。オペレーティングシステムのための適した実装及びサーバの一般的な機能は、知られているかまたは商業的に入手可能であり、特に本明細書の開示を考慮して当業者によって容易に実装される。
一実施形態における環境は、1つまたは複数のコンピュータネットワークを使用する通信リンクまたは直接接続によって相互接続される幾つかのコンピュータシステム及びコンポーネントを利用する分散型コンピューティング環境である。しかし、こうしたシステムが、図11に示されるより少ないかまたは多い数のコンポーネントを有するシステムにおいて等しくうまく動作することができることが当業者によって認識されるであろう。そのため、図11におけるシステム1100の叙述は、本質的に例証的であり、本開示の範囲に対して制限的でないと考えられるべきである。
種々の実施形態は、いろいろな動作環境において実装される可能性があり、いろいろな動作環境は、幾つかの場合に、幾つかのアプリケーションのうちの任意のアプリケーションを動作させるために使用される可能性がある1つまたは複数のユーザコンピュータ、コンピューティングデバイス、または処理デバイスを含む可能性がある。ユーザデバイスまたはクライアントデバイスは、標準的なオペレーティングシステムを実行するデスクトップ、ラップトップコンピュータ、またはタブレットコンピュータ等の幾つかの汎用パーソナルコンピュータ、並びに、モバイルソフトウェアを実行し、幾つかのネットワーキング及びメッセージングプロトコルを支持することが可能なセルラーデバイス、無線デバイス、及び手持ち式デバイスのうちの任意のものを含む可能性がある。こうしたシステムはまた、種々の市販のオペレーティングシステム、及び、開発及びデータベース管理等の目的のための他の知られているアプリケーションのうちの任意のものを実行する幾つかのワークステーションを含む可能性がある。これらのデバイスはまた、ダミー端末、シンクライアント、ゲーミングシステム、及びネットワークを介して通信することが可能な他のデバイス等の他の電子デバイスを含む可能性がある。
本開示の種々の実施形態は、種々の市販のプロトコル、例えば、伝送制御プロトコル/インターネットプロトコル(「TCP/IP:Transmission Control Protocol/Internet Protocol」)、開放型システム間相互接続(「OSI:Open System interconnecion」)モデルの種々の層で動作するプロトコル、ファイル転送プロトコル(「FTP」)、ユニバーサルプラグアンドプレイ(「UpnP:Universal Plug and Play」)、ネットワークファイルシステム(「NFS:Network File System」)、共通インターネットファイルシステム(「CIFS:Common Internet File System」)、及びAppleTalkのうちの任意のものを使用して通信を支持するための、当業者によく知られている少なくとも1つのネットワークを利用する。ネットワークは、例えば、ローカルエリアネットワーク、ワイドエリアネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク、及びその任意の組合せである可能性がある。
ウェブサーバを利用する実施形態において、ウェブサーバは、ハイパーテキスト転送プロトコル(「HTTP:Hypertext Transfer Protocol」)サーバ、FTPサーバ、共通ゲートウェイインタフェース(「CGI:Common Gateway Interface」)サーバ、データサーバ、Javaサーバ、及びビジネスアプリケーションサーバを含む、種々のサーバまたは中間層アプリケーションのうちの任意のものを実行することができる。サーバ(複数可)はまた、Java(登録商標)、C、C♯、またはC++等の任意のプログラミング言語、或いは、Perl、PythonまたはTCL等の任意のスクリプティング言語、並びに、その組合せで書かれた1つまたは複数のスクリプトまたはプログラムとして実装される場合がある1つまたは複数のウェブアプリケーションを実行すること等によって、ユーザデバイスからの要求に応答してプログラムまたはスクリプトを実行することが可能である。サーバ(複数可)はまた、限定することなしで、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、及びIBM(登録商標)から商業的に入手可能なものを含むデータベースサーバを含むことができる。
環境は、先に論じたように、種々のデータストア及び他のメモリ及び記憶媒体を含む可能性がある。これらは、コンピュータの1つまたは複数にローカルな(及び/またはそこに存在する)またはネットワークにわたるコンピュータの任意のものまたは全てからリモートの記憶媒体上等、種々の場所に存在する可能性がある。特定の実施形態のセットにおいて、情報は、当業者によく知られているストレージエリアネットワーク(「SAN:storage−area network」)内に存在することができる。同様に、コンピュータ、サーバ、または他のネットワークデバイスに帰せられる機能を実施するための任意の必要なファイルは、適宜、ローカルに及び/またはリモートに記憶することができる。システムがコンピュータ化デバイスを含む場合、こうした各デバイスは、バスを介して電気的に結合される場合があるハードウェア要素を含む可能性があり、その要素は、例えば、少なくとも1つの中央処理ユニット(「CPU」または「プロセッサ」)、少なくとも1つの入力デバイス(例えば、マウス、キーボード、コントローラ、タッチスクリーン、またはキーパッド)、及び少なくとも1つの出力デバイス(例えば、ディスプレイデバイス、プリンタ、またはスピーカ)を含む。こうしたシステムはまた、ディスクドライブ、光記憶デバイス等の1つまたは複数の記憶デバイス、及び、ランダムアクセスメモリ(「RAM」)または読出し専用メモリ(「ROM」)等の固体記憶デバイス、並びに、取外し可能メディアデバイス、メモリカード、フラッシュカード等を含むことができる。
こうしたデバイスはまた、上述したように、コンピュータ可読記憶媒体リーダ、通信デバイス(例えば、モデム、ネットワークカード(無線または有線)、赤外線通信デバイス等)、及び作業メモリを含む可能性がある。コンピュータ可読記憶媒体リーダは、リモートの、ローカルの、固定の、及び/または取外し可能な記憶デバイスを示すコンピュータ可読記憶媒体、並びに、コンピュータ可読情報を、一時的に及び/またはより永久的に含み、記憶し、送信し、取出すための記憶媒体に接続されるかまたはそれを受取るように構成される可能性がある。システム及び種々のデバイスはまた、通常、オペレーティングシステム及びクライアントアプリケーションまたはウェブブラウザ等のアプリケーションプログラムを含む、少なくとも1つの作業メモリデバイス内に位置付けられる幾つかのソフトウェアアプリケーション、モジュール、サービス、または他の要素を含むことになる。代替の実施形態が、上述したものから多数の変形を有することができることが認識されるべきである。例えば、カスタマイズされたハードウェアを、同様に使用することができる、かつ/または、特定の要素を、ハードウェア、ソフトウェア(アプレット等のポータブルソフトウェア)、または両方で実装することができる。更に、ネットワーク入力/出力デバイス等の他のコンピューティングデバイスに対する接続を使用することができる。
コードまたはコードの複数の部分を含むための記憶媒体及びコンピュータ可読媒体は、限定はしないが、RAM、ROM、電気的消去可能プログラム可能読出し専用メモリ(「EEPROM」)、フラッシュメモリまたは他のメモリ技術、コンパクトディスク読出し専用メモリ(「CD−ROM」)、デジタル多用途ディスク(DVD)、または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気記憶デバイスを含む、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータ等の情報の記憶及び/または伝送のための任意の方法または技術で実装される、揮発性の及び不揮発性の取外し可能な及び取外し不能な媒体、或いは、所望の情報を記憶するために使用される可能性があり、システムデバイスによってアクセスされる可能性がある任意の他の媒体等の、記憶媒体及び通信媒体を含む、当技術分野で知られているかまたは使用される任意の適切な媒体を含む可能性がある。本明細書で提供される開示及び教示に基づいて、当業者は、種々の実施形態を実装する他の仕方及び/または方法を認識するであろう。
したがって、本明細書及び図面は、制限的な意味ではなく、例証的な意味で考えられる。しかし、特許請求の範囲で述べる本発明のより広い精神及び範囲から逸脱することなく、種々の修正及び変更を、実施形態に対して行うことができることが明白である。
他の変形は本開示の精神内にある。そのため、開示される技法は、種々の修正及び代替の構造を受け易いが、その例証される或る実施形態が、図面で示され、上記で詳細に述べられてきた。しかし、本発明を、開示される1つまたは複数の特定の形態に制限する意図は存在せず、逆に、意図は、添付特許請求の範囲において規定される本発明の精神及び範囲内に入る全ての修正、代替の構造、及び等価物をカ網羅することであることが理解されるべきである。
開示される実施形態を述べる文脈における(特に、添付特許請求の範囲の文脈における)用語「ある(a)」及び「ある(an)」及び「その(the)」及び同様の参照は、本明細書で別途指示されない限りまたは文脈によって明確に否定されない限り、単数形と複数形の両方を網羅するように解釈される。用語「備える(comprising)」、「有する(having)」、及び「含む(containing)」は、別途述べられない限り、制限的でない用語として解釈される(すなわち、「含むが、それに限定されない(including,but not limited to)を意味する」)。用語「接続される(connected)」は、未修正のときでかつ物理的接続が参照されると、何か介入するものが存在する場合でも、部分的にまたは完全に、中に含まれる、それに取付けられる、または共に結合されるものとして解釈される。本明細書の値の範囲の列挙は、本明細書で別途指示しない限り、その範囲内に入るそれぞれの別個の値を個々に参照する省略表現法として役立つことを意図されるだけであり、それぞれの別個の値は、本明細書で個々に列挙されるかのように本明細書に組込まれる。用語「セット(set)」(例えば「アイテムのセット(a set of items)」)または「サブセット(subset)」の使用は、別途述べられない限りまたは文脈によって否定されない限り、1つまたは複数のメンバーを含む空でない集合体として解釈される。更に、別途述べられない限りまたは文脈によって否定されない限り、対応するセットの用語「サブセット(subset)」は、対応するセットの適切なサブセットを必ずしも示すのではないが、サブセット及び対応するセットは同じであり得る。
「A、B、及びCの少なくとも1つ」または「A、B、及びCの少なくとも1つ」という形態のフレーズ等の接続的言語は、別途特に述べられない限りまたは文脈によって別途明確に否定されない限り、アイテム、用語等が、Aか,Bか、またはC、或いは、AとBとCのセットの空でない任意のサブセットであるとすることができることを提示するために一般に使用される文脈によって普通なら理解される。例えば、上記の接続的フレーズにおいて使用される3つのメンバーを有するセットの例証的な例において、「A、B、及びCの少なくとも1つ」または「A、B、及びCの少なくとも1つ」は、以下のセット、すなわち、{A}、{B}、{C}、{A,B}、{A,C}、{B,C}、{A,B,C}のうちの任意のものを指す。そのため、こうした接続的言語は、或る実施形態が、少なくとも1つのA、少なくとも1つのB、及び少なくとも1つのCそれぞれが存在することを要求することを示唆することを一般に意図しない。
本明細書で述べるオペレーションは、本明細書で別途指示されない限りまたは文脈によって明確に否定されない限り、任意の適した順序で実施される可能性がある。本明細書で述べるプロセス(または、その変形及び/またはその組合せ)は、実行可能命令によって構成される1つまたは複数のコンピュータシステムの制御下で実施することができ、また、ハードウェアまたはハードウェアの組合せによって1つまたは複数のプロセッサ上で集合的に実行されるコード(例えば、実行可能命令、1つまたは複数のコンピュータプログラム、或いは1つまたは複数のアプリケーション)として実装することができる。コードは、例えば、1つまたは複数のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形態で、コンピュータ可読記憶媒体上に記憶することができる。コンピュータ可読記憶媒体は、非一時的であるとすることができる。
本明細書において提供される、任意のまた全ての例または例示的な言語(例えば、「等(such as)」)は、単に本発明の実施形態をより明確にすることが意図され、別途特許請求されない限り、本発明の範囲に制限を課さない。本明細書の言語はどれも、特許請求されないいずれの要素も本発明の実施にとって本質的であることを示していると解釈されるべきでない。
本発明を実施するための、本発明者に知られている最良モードを含む、本開示の好ましい実施形態が本明細書で述べられる。これらの好ましい実施形態の変形は、先の説明を読むと、当業者に明らかになり得る。本発明者等は、熟練した技術者が適宜こうした変形を使用することを期待し、また、本発明者等は、本開示の実施形態が、本明細書で特に述べる以外の方法で実施されることを意図する。したがって、本開示の範囲は、適用可能な法律によって許可される、添付特許請求の範囲において列挙される主題の全ての修正物及び等価物を含む。更に、考えられる全てのその変形における上述した要素の任意の組合せが、本明細書で別途指示されない限りまたは文脈によって別途明確に否定されない限り、本開示の範囲によって包含される。
本明細書で挙げられる、出版物、特許出願、及び特許を含む全ての参考文献は、各参考文献が、参照により組込まれるよう個々にかつ具体的に示され、かつ、その全体が本明細書で述べられる場合と同じ程度に、参照により組込まれる。