様々な図面の同様の参照記号は、同様の構成要素を示す。
図1Aは、スマートデバイス120へのアクセスを管理する環境100の一例である。環境は、クライアントデバイス112とインタフェースするユーザ110を含む。クライアントデバイス112は、通信ネットワーク130を介してリモートシステム140と通信する。リモートシステム140は、リモート処理デバイス(例えば、データ処理ハードウェア)144およびリモート永続的(非一時的)ストレージ(例えば、メモリハードウェア)146を含み得る。リモート処理デバイス144は、スマートデバイス120にアクセスするためのアプリケーションプログラミングインタフェース(API:application-programming interface)を提供するソフトウェアを実行し得る。リモートシステム140は、スマートデバイス120への不正アクセスを防止するソフトウェアを実行し得る。スマートデバイス120は、一般に、通信ネットワーク130に接続されたセンサ、電気機器、および他のデバイスを指す。スマートデバイス120は、リモートで監視、制御、またはアクセスすることができるとともに、ユーザ110のニーズに対応するサービスを提供することができる。スマートデバイス120は、特に、サーモスタット、ドアロック、照明調光器、ガレージドア開閉器、スプリンクラーシステム、煙検出器、掃除機、およびホームセキュリティシステムを含む。いくつかの例では、スマートデバイス120は、構造物190、即ち、ユーザ110によって管理される物理的な建物内に設置される。構造物190は、ユーザ110によって所有または賃貸されたものであり得る。一例では、ユーザ110は、他のユーザ110に随時貸与される別荘190を所有している。いくつかの例では、スマートデバイス120は、通信ネットワーク130を介してスマートデバイスマネージャ(SDM:smart device manager)200に登録する(図2A)。SDMは、リモートシステム140上で実行されてもよい。SDM200は、スマートデバイス120のリモートでの監視および/または制御のためのAPIを提供することができる。ユーザ110は、構造物190から離れた場所にいながら、スマートデバイスを制御または監視することができる。ユーザデバイス120(即ち、スマートデバイス)は、リモートで監視され得るユーザデータ122を生成し得る。一例では、ホームセキュリティシステム120は、構造物190の内部または外部のビデオデータ122を生成し得る。ユーザデバイス120は、デバイス120を構成または制御するユーザコマンド124を受信し得る。一例では、サーモスタット120は、構造物190内で華氏72度(華氏22.2度)の温度を維持するためのユーザコマンド124を受信する。いくつかの例では、スマートデバイスは、様々なユーザデータ122を生成し、かつ/または様々なユーザコマンド124を受信して応答する。一例では、ホームセキュリティシステムは、1つまたは複数の動き検出システムからデータ122を生成し、ユーザコマンド124を受信して、セキュリティシステムに1つまたは複数の外部ドアのロックを解除させる。各タイプのユーザデータ122および各タイプのユーザコマンド124は、スマートデバイス120のリソースまたは特性であり得る。いくつかの例では、ユーザ110は、SDM200を介してスマートデバイス120のユーザリソースへのアクセスを管理する。
図1Aに示されるように、ユーザ110は、構造物190から離れた場所に位置している。いくつかの実装形態では、ユーザ110は、クライアントデバイス112を使用して、通信ネットワーク130を介してスマートデバイス120を制御および/または監視する。クライアントデバイス112は、汎用デスクトップ、ラップトップ、モバイルコンピューティングデバイス、ウェアラブルデバイス、または専用の制御および監視デバイスを含み得る。いくつかの例では、スマートデバイス120の製造業者またはベンダーは、クライアントデバイス112上で実行するためのソフトウェアアプリケーションを提供して、SDM200を介してスマートデバイス120を制御または監視する。他の例では、サードパーティ150は、サードパーティデバイス152を使用して、通信ネットワーク130を介してスマートデバイス120を制御および/または監視する。例えば、クライアントデバイス112上で実行されるソフトウェアアプリケーションは、SDM200を介してサードパーティデバイス152とインタフェースして、スマートデバイス120を制御または監視するようにサードパーティデバイス152に指示し得る。サードパーティ150は、スマートデバイス120の製造業者またはベンダーであり得る。一例では、サードパーティ150は、スマートホームセキュリティシステム120を含むスマートデバイス120を提供する。サードパーティデバイス152は、スマートホームセキュリティシステム120の状態を監視し得る。サードパーティ150は、サードパーティデバイス152によって監視されるスマートホームセキュリティシステム120の状態の概要を表示するためのソフトウェアアプリケーションを提供し得る。いくつかの例では、サードパーティ150は、他者が製造または販売するデバイス120を監視および制御する。一例では、スマートガレージドア開閉器120のユーザリソースは、ガレージドアを開閉するためのユーザコマンド124を含む。サードパーティ150は、ユーザ110の位置を監視し、SDM200を介してコマンド124を送信して、ユーザ110が構造物190の閾値距離内にいるときに、スマートガレージドア開閉器120にガレージドアを開放させることができる。SDM200は、許可されたサードパーティ150がスマートデバイス120を制御または監視することを可能にし、許可されていないサードパーティ150がスマートデバイス120を制御または監視することを防止することができる。いくつかの例では、ユーザは、サードパーティ150がスマートデバイス120を制御または監視することを許可する。いくつかの例では、クライアントデバイス112は、ディスプレイ210(図2Aおよび図2B)においてグラフィカルユーザインタフェース(GUI)210を実行する。GUI210は、ユーザ110が特定のサードパーティ150に、特定の構造物190内に位置する特定のスマートデバイス120の特定のユーザリソースにアクセスすることを許可することを可能にするための情報を、ユーザ110に提示することができる。ユーザ110がGUI210から選択を実行することに応答して、クライアントデバイス112は、通信ネットワークを介してリモートシステム140にアクセス設定同意202を送信して、SDM200にアクセス設定同意202を処理させることができる。いくつかの実装形態では、サードパーティ150は、アクセス要求250をSDMに送信し、スマートデバイス120へのアクセスを要求する。SDMは、クライアントデバイス112によって送信された設定同意202に基づいて、アクセス要求250を許可または拒否し得る。
図1Bを参照すると、構造物190が示されている。構造物190は、いくつかのスマートデバイス120を含む。図示されるように、構造物190は、スマートサーモスタット120、120aを含む。スマートサーモスタット120、120aは、構造物190の温度に関連するユーザデータ122を生成し得る。スマートサーモスタット120、120aは、構造物190内で維持する所望の温度に関連するユーザコマンド124を受信し得る。図示されるように、構造物190はまた、カメラを含むスマートドアベル120、102bを含む。スマートドアベル120、120bは、カメラによって生成されたストリーミングビデオユーザデータ122または静止画像ユーザデータ122を生成し得る。図示されるように、構造物190は、スマート玄関ドアロック120、120cを含む。ドアロック120、120cは、正面ドアのロックまたはロック解除に関連するユーザコマンド124を受信し得る。ドアロック120、120cは、ドアのロック状態に関連するユーザデータ122を生成し得る。いくつかの例では、ユーザ110は、モバイルコンピューティングデバイス112とインタフェースする。図示されるように、モバイルコンピューティングデバイス112は、サードパーティデバイス152とインタフェースして、SDMを介してスマートデバイス120を制御および監視する。SDM200は、構造物190内のスマートデバイス120の位置に基づいて、スマートデバイス120を階層に編成し得る。図示されるように、ユーザ110は、構造物190の唯一の居住者である。ユーザ110は、構造物190内に位置するスマートデバイス120へのアクセスを単独で(unilaterally)管理し得る。この場合、ユーザ110は、例えば、パスワードで保護されたオンラインアカウントによって一意に識別され得る。他の例では、複数のユーザ110が構造物190に居住している。ユーザ110は、構造物190内に位置するスマートデバイス120へのアクセスを多数で(multilaterally)管理することができる。この場合、複数のユーザ110は、パスワードで保護された別個のオンラインアカウントによって識別され得る。SDMを介してスマートデバイス120を制御および監視するために許可を変更または更新するためにはユーザ110の大多数が必要とされ得る。いくつかの例では、SDMを介してスマートデバイス120を監視することを許可するためにはユーザ110の大多数が必要とされ、SDMを介してデバイス120を制御することを許可するためにはユーザ110の全員一致が必要とされ得る。いくつかの例では、ユーザ110は、スマートデバイス120への読み取りアクセスおよび/または書き込みアクセスを許可し得る。他の多数による管理の取り決めも可能である。アクセス管理の責任は、第1のユーザ110から第2のユーザ110に移ってもよい。例えば、第1のユーザ110は、構造物190の所有権を第2のユーザ110に譲渡し得る。アクセス管理責任の移譲は、例えば、構造物190の家主から借主への一時的なものであり得る。アクセス管理責任は、あるグループのユーザ110から別のグループのユーザ110に、例えば、構造物190のある1組の借主から別の1組の借主に移譲し得る。いくつかの例では、SDMは、構造物190に対するアクセス管理責任の変更に基づいて、スマートデバイス120へのアクセスを防止する。ユーザ110によって管理される構造物190に関連付けられたユーザ110は、ユーザ110が管理している構造物190を発見することによって発見され、前のステップで発見された構造物190の管理者を発見し、前のステップで発見された管理者に関連付けられたサードパーティ150を発見し得る。
ユーザ110および/または1つまたは複数のサードパーティ150は、SDM200と通信する。SDM200は、ユーザデータ122に対する権限および/またはアクセスを調整するアプリケーション(例えば、ソフトウェア)を指す。いくつかの例では、SDM200は、アプリケーションプログラミングインタフェース(API)である。SDM200は、リモートまたはローカルでホストされ得る。例えば、リモートシステム140は、SDM200をホストすることができ、ユーザ110またはサードパーティ150は、通信チャネルを介してSDM200にアクセスすることができる。例えば、クライアントデバイス112は、リモートシステム140上で実行されているSDM200にアクセスするように構成されたアプリケーション(例えば、アプリケーションとしてのブラウザ)を実行し得る。別の例では、ユーザ110またはサードパーティ150のネットワーク接続デバイスは、ネットワーク接続デバイス(例えば、クライアントデバイス112)のデータ処理ハードウェアおよび/またはメモリハードウェアがSDM200を格納し、かつ/または実行するように、SDM200の一部または全部をローカルでホストする。いずれの場合も、SDM200は、ユーザのデータ122の特定の部分に対してサードパーティ150(例えば、サードパーティデベロッパ)を認証および許可するように構成される。いくつかの例では、ユーザ110からの許可(即ち、同意)なしに、SDM200は、ユーザ110に関連する任意のリソース(即ち、ユーザデータ122)へのアクセスの含意なしに、サードパーティ150によるSDM200を呼び出すためのアクセスを許可する。従って、SDM200は、サードパーティ150がユーザデータ122にアクセスするためのゲートウェイとして機能すると同時に、ユーザ110がサードパーティ150によるユーザデータ122へのアクセスを制御するためのリソースアクセスマネージャとしても機能する。
認証および/または許可を実行するために、SDM200は、ユーザ110がサードパーティ150に対して異なるタイプのユーザデータ122のアクセス可能性を設定するユーザ向け許可プロセスを含む。換言すれば、SDM200は、ユーザ110に対して、サードパーティ150と共有するユーザデータ122に対するきめの細かい制御を提供する。これにより、ユーザ110は、どのタイプのユーザデータ122をサードパーティ150と共有するかを指定することができる。認証プロセス中、SDM200は、ユーザ110が別個の変数によってユーザデータ122を制御することを可能にし得る。これらの変数のいくつかは、動作別(即ち、読み取り/書き込み等のユーザデータ122に対して実行される動作)、サードパーティ150別、ユーザデバイス120別、ユーザデバイス210が存在する環境別(例えば、定義されたエコシステムまたは建物または建物の一つの部屋等のユーザデバイス120に関連付けられた構造物190)などを含む。いくつかの実装形態では、ユーザ向け許可プロセス中に、SDM200は、ユーザ110が、これらの変数の1つまたは複数に関連するユーザデータ122に関する同意202を伝達することを可能にする。ここで、同意202は、特定のリソース(例えば、ユーザデータ122)に対する許可の付与を意味する。従って、同意202は、アクセスの程度を明示的に指定することによって、きめの細かい制御を定義することができる。アクセスの程度は、ユーザデバイス120によって生成された任意のユーザデータ122への一般的なアクセスから、ユーザデータ変数(例えば、動作、サードパーティ150、ユーザデバイス120、構造物190等)の異なる反復に基づくより具体的なアクセスまでの範囲であり得る。例えば、同意202は、特定のリソース(例えば、ユーザデータ122)が、特定のエンティティ(例えば、サードパーティ150)によって特定の方法で(例えば、動作によって)使用されることを許可する。SDM200により、ユーザ110は、特定のサードパーティ150に対する単純な何の制約のないアクセス(carte blanche access)よりも細かい粒度でリソースアクセスを定義することが可能となる。
いくつかの構成では、ユーザ110がアクセス制御管理にSDM200を使用することを決定した場合、ユーザ110は、一般に、SDM200に関連付けられたサードパーティ150がSDM200を使用して、任意の特定のリソースへのアクセスの含意なしに、リソースへのアクセスを試みることができるというデフォルト同意202を付与する。換言すれば、SDM200の認定パートナーであるサードパーティデベロッパ(例えば、SDM200に対する登録済みベンダー/認証済みベンダー)等のサードパーティ150が存在し得る。より具体的には、SDM200は、スマートデバイス(例えば、ユーザデバイス120)のためのサードパーティサービスを開発、刷新、および/または提供するために、サードパーティデベロッパとの関係を維持し得る。SDM200がそのような関係を有する場合、サードパーティ150は、SDM200によって制御されるリソース(例えば、ユーザデータ122)へのアクセスを要求するために、SDM200にアクセスすることが一般的に許可され得る。
図2A~図2Eを参照すると、SDM200は、ユーザインタフェース(UI)210、リソースピッカー220、ストレージシステム230、およびサードパーティインタフェース(3PI)240を含む。SDM200は、認証および許可手順を使用して、ユーザ110と、1つまたは複数のサードパーティ150との間のユーザデバイス120に関する相互作用を調整する。換言すれば、サードパーティ150は、ユーザデバイス(単数または複数)120と互換性のあるアプリケーション(即ち、ソフトウェア)を実装または開発するために、ユーザデバイス120および/またはユーザデータ122へのアクセスを必要とすること、および/または所望することが多い。SDM200は、ユーザ110に代わってユーザデータ122へのサードパーティのアクセス(またはアクセスの拒否)を可能にするように構成される。SDM200のUI210は、ユーザ向けのインタフェースを一般的に指す。例えば、UI210は、SDM200およびその機能のユーザバージョンにアクセスするために、ユーザ110がログインクレデンシャル(例えば、ユーザ名および/またはユーザパスワード)を入力するためのログインプロンプトを含む。UI210を3PI240とは別に設けることにより、SDM200は、ユーザ110(例えば、UI210における)とサードパーティ150(例えば、3PI240における)に対して固有の異なる機能および/または特徴を有することができる。図2Aは、SDM200の構成要素210、220、230、240をSDM200内の全ての統合モジュールとして示しているが、各モジュールは、他のモジュールによって実行される機能とは別の個々の機能を実行するように構成され得る。
いくつかの例では、UI210は、ユーザ110がリソースピッカー220を制御するためのインタフェースである。リソースピッカー220に対するインタフェースとして、UI210は、ユーザリソース(例えば、ユーザデバイス120またはユーザデバイス120によって収集されたユーザデータ122)のアクセス制御に関連する情報を表示するように構成される。例えば、図2Bおよび図2Cは、リソースピッカー220の選択可能な機能を備えたUI210の例示的なレイアウトを示す。いくつかの実装形態では、UI210は、SDM200のホワイトリスト232と相互作用することによって、リソースピッカー220の表示を生成する。ホワイトリスト232は、SDM200がパートナー(例えば、サービスパートナー)として認識する特定のサードパーティ150のリストを一般的に指す。例えば、ホワイトリスト232は、SDMアプリケーションのプロバイダに登録されているサードパーティ150のリストを含む。いくつかの実装形態では、ホワイトリスト232上の各サードパーティ150は、パーティ固有のアクセスレベルを有することができる。換言すれば、サードパーティ150がSDM200またはSDM200を提供するエンティティに登録すると、サードパーティ150は、特定のタイプのアクセス(例えば、あるタイプのスマートデバイスに関する読み取りアクセスであるが、書き込みアクセスではない)について認証される(即ち、許可される)。いくつかの例では、許可されるアクセスのタイプは、スマートデバイス(単数または複数)のタイプと、そのタイプのスマートデバイス(単数または複数)を有するサードパーティ150の能力とに依存する。例えば、スマートサーモスタットの機能を開発するサードパーティ150は、スマートサーモスタットのリソースに対する読み取りおよび/または書き込みを有しているが、スマートドアベルのリソースに対するアクセス(例えば、図2Cに、双方向オーディオまたはビデオストリーミングとして示される)は有していないものとしてホワイトリスト232に設定されることとなる。例えば、第1のサードパーティ150、150aは、ライブストリーミングおよびオーディオクリップに対してホワイトリストに登録され、第2のサードパーティ150、150bは、スマートサーモスタットを読み取るためにホワイトリストに登録される。この手法により、ホワイトリスト232は、一部のサードパーティ150が複数のスマートデバイスにわたる能力を有し、他のサードパーティ150が特定のリソースに限定された能力を有することを表すことが可能となる。換言すれば、ホワイトリスト232は、SDM200がサードパーティ150のサービスに関係のないユーザリソースへのアクセスを許可しないことを可能にする。従って、ユーザリソースに対して、サードパーティ150による潜在的な悪用からのある程度の初期セーフガードを提供する。
リソースピッカー220は、ユーザ110が自身のリソース(例えば、ユーザデータ122)へのアクセスを制御することを可能にするように構成される。前述したように、リソースピッカー220の機能の可視化は、UI210を使用してユーザ110に対して表示され得る。いくつかの例では、リソースピッカー220は、ホワイトリスト232に基づいて、選択可能なアクセス制御222をユーザ110にのみ提示するように構成される。換言すれば、リソースピッカー220は、サードパーティ150と、所与のサードパーティ150に対して既にホワイトリストに登録されたアクセスオプション234とのホワイトリストに登録された組み合わせをユーザ110に提示する。いくつかの例では、選択可能なアクセス制御222をホワイトリスト232のアクセスオプション234として表示することによって、ユーザ110は、意図的であっても、または意図的でなくても、ホワイトリスト232に含まれるアクセスオプション234を超えて、サードパーティ150に対する制御を拡張することができない。例えば、サードパーティ150がスマートサーモスタットに関連するソフトウェアのデベロッパであり、かつホワイトリスト232内のアクセスオプション234に関して、スマートサーモスタットデバイスに対する読み取りアクセスのみまたは読み取り/書き込みアクセスが許可されており、他のデバイスに対するアクセスが許可されていない場合、ユーザ110は、リソースピッカー220においてサードパーティ150にスマートドアベルのビデオストリームへのアクセス権限を付与するためのアクセス制御を生成することはできない。別の言い方をすれば、SDM200は(例えば、リソースピッカー220によって)、きめの粗いアクセス制御を維持しつつ、ユーザ110は、選択可能なアクセス制御222を用いて、きめの粗いアクセス制御をさらに限定して、きめの細かいアクセス制御の決定を行うことができる。ここで、ユーザ110は、選択可能なアクセス制御222に基づいてアクセス制御選択224を入力して、アクセス制御の決定を指示する。
リソースピッカー220は、選択可能なアクセス制御222を様々な構成で表示することが可能である。いくつかの例では、リソースピッカー220は、選択可能なアクセス制御222を階層226で表示する。階層226は、1つまたは複数のユーザリソース(例えば、ユーザデータ122またはユーザデバイス120)を、1つまたは複数のユーザリソースに関連付けられた変数のカスケードセットとして表すことができる。いくつかの構成では、リソースピッカー220は、ユーザ110によるサードパーティ150の選択に基づいて、ユーザリソースを表示する。例えば、図2Bにおいて、ユーザ110は、1つまたは複数のサードパーティ150、150a~dを選択し、リソースピッカー220は、1つまたは複数のサードパーティ150、150a~dに関連するユーザリソースに対する選択可能なアクセス制御222(例えば、図2Cに示される)を投入する。ここで、図2Bは、4つのサードパーティ150a~dに関連する3つのユーザリソース(例えば、ユーザデバイス120、120a~cとして示される)が、選択可能なアクセス制御222を有することを示している。図2Bおよび図2Cなどのいくつかの実装形態では、リソースピッカー220は、ユーザリソースとの関連付けを表示する。例えば、3つのユーザデバイス120、120a~c(例えば、ドアベル、サーモスタット、および玄関ドアロック)は、構造物190に関連付けられていることが示されている。構造物190は、ユーザデバイス120を収容するか、またはユーザデバイス120が取り付けられる物理的な構造物を意味する。ここで、リソースピッカー220は、ユーザリソース(例えば、ユーザデバイス120および/またはユーザデータ122)を含むユーザ110の4つの構造物190、190a~dを表示する。
付加的または代替的に、リソースピッカー220は、ユーザ110が管理する構造物190に関連する追加のユーザデバイスまたはデバイスのための選択可能なアクセス制御222を投入する。換言すれば、リソースピッカー220は、ユーザ110が共有関係を識別していること、またはSDM200がユーザリソースがリンクされていると判断していることのいずれかに基づいて、第1のユーザ110の1つまたは複数のユーザデバイス120を第2のユーザ110のユーザデバイス120とリンクさせることができる。例えば、セキュリティ管理会社は、ユーザ110が所有するユーザデバイス120を制御および/または監視する。この例では、SDM200は、セキュリティ管理会社がユーザデバイス120に対するアクセス制御選択224を生成するために、セキュリティ管理会社がユーザ110のユーザデバイス120を登録することを許可する。この種の関係では、SDM200は、ユーザデバイス(単数または複数)120の所有者に、ユーザデバイス120をSDM200を用いて初期設定することを要求してもよいが、SDM200においてユーザデバイス120をセキュリティ管理会社(例えば、セキュリティ管理会社に関連付けられたSDM200内のプロファイル)にリンクさせることを要求してもよい。
いくつかの実装形態では、リソースピッカー220がユーザリソースを表示する方法に対応する変数は、特性グループとして定義される。SDM200またはSDM200を管理するエンティティは、特性グループを生成し得る。特性グループは、関連する特性の集合を表す。特性グループのいくつかの例は、構造物190、構造物190を細分化する部屋、機能(例えば、メディアユーザデバイス120、セキュリティユーザデバイス120、電気機器ユーザデバイス120)、ネットワークの場所(例えば、ユーザデバイス120をホストする各ネットワークによる)などである。いくつかの実装形態では、SDM200は、SDM200が管理するリソースに関連付けられた特性グループを生成する特性モデルを含む。追加的または代替的に、SDM200は、ユーザ110が特性グループを定義するか、またはリソースピッカー220が(例えば、UI210を介して)表示するための特性グループの階層を生成することができるようにカスタマイズ可能であり得る。
いくつかの構成では、SDM200は特性グループを生成し、特性グループをホワイトリスト232に含ませる。換言すれば、SDM200は、ホワイトリスト232に関するアクセスオプション234を特性グループのレベルで生成する。例えば、図2Cは、特性グループとしての「メインホーム」の構造物190におけるユーザデバイス120、120a~bに対するアクセスオプション234を示す。いくつかの例では、SDM200がホワイトリスト232内に1つまたは複数の特性グループを含む場合、SDM200は、ホワイトリスト232に{特性、リソースタイプ、読み取り/書き込み}のエントリを生成する。
図2Cに示されるように、リソースピッカー220は、ホワイトリスト232のアクセスオプション234に対応する選択可能なアクセス制御222を各ユーザデバイス120、120a~cに投入することができる。例えば、ドアベル120aは、2つの選択可能なアクセス制御222、222a~b(双方向オーディオおよびビデオストリームとして示される)を有しており、サーモスタット120bは、2つの選択可能なアクセス制御222、222c~d(読み取り専用および読み取り/書き込みとして示される)を有する。ここで、図2Cは、ユーザ110が、ドアベル120aに対してビデオストリームを選択し、かつサーモスタット120bに対して読み取り/書き込みを選択することによって、各ユーザデバイス120a~bに対してアクセス制御選択224、224a~bを行ったことを示している。また、図2Cは、階層表示が、特定のユーザデバイス120に対する選択可能なアクセス制御222を展開するため、かつ折り畳むためのドロップダウンを含み得ることを示している。例えば、玄関ドアロック120、120cは、選択可能なアクセス制御装置がない状態で折り畳まれて示されている。
ユーザ110がアクセス制御選択224を生成すると、リソースピッカー220は、アクセス制御選択224をストレージシステム230に伝達するように構成される。ストレージシステム230は、アクセス制御リスト236、236a~nを格納および/または管理するように構成される。いくつかの例では、ストレージシステム230は、SDM200のホワイトリスト232をアクセス制御リスト236として管理および/または格納する。いくつかの例では、ユーザ110がアクセス制御選択224を生成すると、リソースピッカー220および/またはストレージシステム230は、アクセス制御リスト236を(例えば、ホワイトリスト232とは別に)追加する。いくつかの構成では、ストレージシステム230は、SDM200によって管理される各ユーザ110に固有のアクセス制御リスト236を維持する。他の構成では、ストレージシステム230は、SDM200の1人または複数人のユーザ110によって行われた全てのアクセス制御選択224を組み込んだユニバーサルアクセス制御リスト236を維持する。いくつかの実装形態では、リソースピッカー220が、ユーザリソースに対する以前のアクセス制御を変更または更新するアクセス制御選択224を受信すると、ストレージシステム230は、対応するアクセス制御リスト236内の以前のエントリを上書きする。アクセス制御リスト236は、ユーザ110のアクセス制御選択224に基づいて更新および/または変更され得るため、ストレージシステム230は、ストレージ活動を追跡または記録する活動ログを用いて構成され得る。
いくつかの例では、ストレージシステム230は、アクセス制御選択224をタプルとして格納する。いくつかの実装形態では、ストレージシステム230および/またはリソースピッカー220は、タプルをオブジェクト、リレーション、およびユーザ(オブジェクト、リレーション、ユーザ)の表現として構築する。オブジェクトの形式の例には、(i)「enterprise/<enterprise_id>/structure/<structure_id>:<trait_group>」(ii)「enterprise/<enterprise_id>/structure/<structure_id>/<device_type>:<trait_group>」(iii)「enterprise/<enterprise_id>/structure/<structure_id>/<device_type>/<device_id>:<trait_group>:<trait_group>」が含まれる。ここで、リレーションは、アクセス制御選択224を(例えば、ユーザリソースの実際の所有者とは対照的に)書き込むエンティティである。ユーザは、ユーザ110に関連付けられたユーザ識別子(UID)を参照する。ストレージシステム230は、単純または複雑なアクセス制御リストモデルとして構成することができ、単純なアクセス制御リストモデルは、複数のオブジェクトをアトミックに書き込むことができないモデルを指す。ストレージシステム230は単純なアクセス制御リストモデルであり得るが、ユーザ110は一度に複数のアクセス制御選択224を更新するか、または行う可能性があるため、ストレージシステム230が複雑なアクセス制御リストモデルであることは、SDM200にとって有益であり得る。
いくつかの構成では、ストレージシステム230は、サードパーティ150との統合(例えば、ユーザリソースの)が可能になる時期を示すデータベース238を含む。例えば、データベース238は、ユーザリソースのサードパーティ150との統合が可能になる時期を示すブールフラグを生成する。サードパーティ150との統合は可能であるが、SDM200は、悪用を回避するために特定のサードパーティの統合機能を無効にするように構成され得る。SDM200が統合制御を指示することにより、特定のイベント(例えば、開始日)に対して統合を有効または無効にすることができる。
3PI240は、許可要求250を生成するためにサードパーティ150によって使用されるインタフェースを一般的に指す。許可要求250は、ユーザ110に関連付けられたリソース(例えば、ユーザデータ122)等の特定のリソースへのアクセスをサードパーティ150に許可する要求である。ユーザ110が許可要求250に対して同意202で応答すると、SDM200は、同意202に基づいて、サードパーティ150のためのアクセストークン260を生成する。換言すれば、アクセストークン260は、同意202に基づいてユーザ110がサードパーティ150に具体的に付与したアクセスのタイプを伝達し、かつサードパーティ150がユーザ110に関連付けられたリソースへのアクセスを取得することを可能にする。ここで、許可要求250は、一般的にユーザデバイス120へのアクセスであってもよく、またユーザデバイス120の特定の動作へのアクセスであってもよい。より具体的には、要求250は、デバイス120(例えば、ユーザデバイス120の動作中にユーザデバイス120によって生成されるユーザデータ122)に関連する特定のリソース(例えば、ユーザデータ122)を指定することができる。例示すると、ユーザデバイス120がセキュリティシステムである場合、サードパーティ150は、セキュリティシステムによって生成されたビデオフィード(即ち、ユーザデータ122)へのアクセスを要求することができる。
いくつかの例では、許可要求250は、サードパーティ150がアクセスを要求しているユーザ110をSDM200が識別するためのユーザ識別子(UID)252を含む。いくつかの実装形態では、ユーザ110は、SDM200のUI210でサードパーティ150のアクセス制御を既に設定している。これらの実装形態では、SDM200は、ユーザ110によって実施された設定済みのアクセス制御に基づいて、ユーザ110に代わって同意202を自動的に生成することができる。いくつかの構成では、許可要求250は、特定のサードパーティ150に対するアクセス制御またはサードパーティ150によって要求されているリソースを指定するために、ユーザ110をUI210にリダイレクトするように構成されたユニフォームリソース識別子(URI)254を含む。例えば、許可要求250は、ユーザ110がサードパーティ150による許可要求250を規定するアクセス制御を指定することを要求する、(例えば、SDM200を介した)ユーザ110へのメッセージまたは通信を生成する。ユーザ110は、許可要求250内のURI254を使用して、許可要求250のサードパーティ150に許可(または拒否)されるアクセスのタイプを指示するアクセス制御選択を行うように促され得る。許可要求250を規定する制御が設定されると、SDM200またはSDM200を介したユーザ110は、許可要求250に応答する(例えば、同意202または同意の拒否202により)。ここで、許可要求250は、サードパーティ150がアクセストークン260を受信する前に、ユーザデータ共有設定を実施することを可能にする。以前に説明したように、許可要求250の生成をスキップするサードパーティ150は、SDM200とインタフェースすることを許可され得るが、ユーザデータ122へのアクセスを有することはない。
いくつかの実装形態では、ユーザ110は、特定のサードパーティ150のアクセストークン260を取り消す。ユーザ110がサードパーティ150のアクセストークン260を取り消すと、ストレージシステム230は、サードパーティ150に関連する既存のアクセス制御選択(単数または複数)224を維持し得る。他の例では、ユーザ110がサードパーティ150のアクセストークン260を取り消すと、SDM200は、サードパーティとユーザのペアに関連するアクセス制御選択(単数または複数)224を削除するようにストレージシステム230に通知する。いずれの場合も、アクセスが取り消されたサードパーティ150が新たな許可要求250を生成した場合、ユーザ110(例えば、URI254によって)は、サードパーティ150のアクセスのタイプを指示するアクセス制御選択を行うように促されるため、非アクティブなサードパーティとユーザのペアをクリーンアップしても、SDM200に支障が生じることはない。追加的または代替的に、ストレージシステム230は、ユーザ110の要求に応じてユーザデータ122をクリーンアップするように構成され得る。例えば、ストレージシステム230は、ストレージシステム230のアクセス制御リスト236からユーザ110を削除する。
図2Dは、ユーザ110、サードパーティ150、およびSDM200の間の許可プロセス270の例である。この例では、サードパーティ150は、3PI240において許可要求250を開始する。許可要求250に基づいて、ユーザ110は、UI210にログインして、許可要求250に応答するための同意202を生成する。ここで、ユーザ110がUI210にログインすると、SDM200は、ユーザ110を(例えば、許可コードを用いて)リソースピッカー220にリダイレクトする。リソースピッカー220にリダイレクトされると、動作272において、ユーザ110は、許可要求250に関連付けられたユーザリソースへのきめの細かいアクセスを管理する。例えば、ユーザ110は、サードパーティ150に関連するアクセス制御選択(単数または複数)224を生成する。動作274において、リソースピッカー220は、アクセス制御選択(単数または複数)224を伝達して、ストレージシステム230において少なくとも1つのアクセス制御リスト236を更新するか、または初期的に生成する。ストレージシステム230が少なくとも1つのアクセス制御リスト236を更新または生成すると、動作276において、ストレージシステム230は、アクセス制御リスト236の更新または生成が完了したことを伝達する。SDM200は、許可要求250が許可または拒否されたことをサードパーティ150に通知する(例えば、リソースピッカー230を介したリダイレクトとして示される)。動作278において、許可要求250が許可されると、SDM200は(例えば、3PI240を介して)、サードパーティ150がアクセストークン260を受信するために使用するコードを伝達する。次に、サードパーティ150は、アクセストークン260を3PI240に伝達して、SDM200と通信し、許可要求250に関連する1つまたは複数のユーザリソースにアクセスする。
図2Eを参照すると、いくつかの実装形態では、許可要求250(例えば、getdevice要求)を用いてSDM200を呼び出すサードパーティ150は、(例えば、ユーザリソース(単数または複数)の統合を実行しようと試行する)企業である。動作282において、サードパーティ150は、3PI240において許可トークン260を用いてgetdevice要求を伝達する。getdevice要求に基づいて、動作284において、3PI240は、データベース238と通信して、getdevice要求に関連付けられたサードパーティ150を確認する。動作286において、SDM200は、データベース238がサードパーティ150を含むことを確認するとともに、SDM200がストレージシステム230内のサードパーティの権限を取得することを許可するか、またはサードパーティ150がストレージシステム230にアクセスして、許可要求250によって識別されるユーザリソースに関するサードパーティの許可を取得する(動作288に示されるように)ことを許容することを許可する。動作286と動作288との間で、要求によるサードパーティ150のための統合が無効にされている場合、SDM200は、無効状態に基づいて、要求に対して例外を提供するか、または要求を拒否する。動作290において、SDM200は、ストレージシステム230との通信に基づいて、サードパーティがサードパーティの権限(ユーザリソース(単数または複数)に対するアクセス制御)を有することを内部的に確認する。ここで、図示されていないが、3PI240は、サードパーティ150に対してサードパーティの権限を有していることをサードパーティ150に確認してもよい。次に、動作292において、SDM200は、getdexte要求のユーザデバイス120に関する情報を取得するためにHG/CZ(例えば、3PI240)と通信し、動作292において、SDM200は、HG/CZからgetdevice要求のユーザデバイス120に関する情報を受信する。ここで、動作292と294の間またはそれらの動作中に、SDM200は、サードパーティ150が、getdevice要求のサードパーティ150を対象ユーザデバイス120の管理者として認証しない許可トークン260を有している場合、エラーまたは無許可のメッセージを伝達し得る。動作296において、3PI240は、サードパーティ150と通信して、ユーザデバイス120に関する情報によりgetdevice要求に応答する。
図3は、例示的な方法300のフローチャートである。フローチャートは、方法300が、デバイスマネージャ200のデータ処理ハードウェア410において、サードパーティ150からの許可要求250を受信することを含む場合に、動作302で開始し、許可要求250は、デバイスマネージャ200によって管理されるユーザリソースへのアクセスを要求し、デバイスマネージャ200は、複数のユーザデバイス120に関連付けられたアクセス制御222を管理する。動作304において、方法300は、データ処理ハードウェア410が、サードパーティ150がデバイスマネージャ200によって管理されるユーザリソースにアクセスすることを許可されているか否かを判定することを含む。動作306において、方法300は、サードパーティ150がデバイスマネージャ200によって管理されるユーザリソースにアクセスすることを許可されている場合、データ処理ハードウェア410が、ユーザ110がデバイスマネージャ200において許可要求250の対象となるユーザリソースを規定する任意のアクセス制御222を設定したか否かを判定することを含む。動作308において、方法300は、ユーザ110が、許可要求250の対象となるユーザリソースを規定する個々のアクセス制御222を設定した場合、データ処理ハードウェア410が、個々のアクセス制御222に基づいて許可要求250に対する応答を伝達することを含む。
図4は、本明細書で説明されるシステム(例えば、SMD200)および方法(例えば、方法300)を実施するために使用され得る例示的なコンピューティングデバイス(即ち、システム)400の概略図である。コンピューティングデバイス400は、ラップトップ、デスクトップ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータなどの様々な形態のデジタルコンピュータを代表することが意図されている。本明細書に示された構成要素、それらの接続および関係、およびそれらの機能は例示的なものに過ぎず、本明細書に記載および/または特許請求の範囲に記載される本発明の実施形態を限定するものではない。
コンピューティングデバイス400は、プロセッサ410(データ処理ハードウェアとも称される)、メモリ420(メモリハードウェアとも称される)、ストレージデバイス430、メモリ420および高速拡張ポート450に接続する高速インタフェース/コントローラ440、および低速バス470およびストレージデバイス430に接続する低速インタフェース/コントローラ460を含む。構成要素410,420,430,440,450,および460の各々は、様々なバスを使用して相互接続され、かつ共通のマザーボード上にまたは適切な他の方法で搭載され得る。プロセッサ410は、メモリ420またはストレージデバイス430に格納された命令を含むコンピューティングデバイス400内での実行のための命令を処理して、高速インタフェース440に接続されたディスプレイ480などの外部入力/出力デバイス上にグラフィカルユーザインタフェース(GUI)用のグラフィカル情報を表示する。他の実施形態では、複数のメモリおよび複数のタイプのメモリと共に、複数のプロセッサおよび/または複数のバスが適宜使用されてもよい。また、複数のコンピューティングデバイス400が接続され、各デバイスが(例えば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして)必要な処理の一部を提供してもよい。
メモリ420は、コンピューティングデバイス400内に非一時的に情報を記憶する。メモリ420は、コンピュータ可読媒体、揮発性メモリユニット、または不揮発性メモリユニットであってもよい。非一時的なメモリ420は、コンピューティングデバイス400による使用のための一時的または永久的な基準でプログラム(例えば、命令シーケンス)またはデータ(例えば、プログラム状態情報)を格納するために使用される物理的デバイスであってもよい。不揮発性メモリの例には、これらに限定されないが、フラッシュメモリおよび読み出し専用メモリ(ROM)/プログラム可能読み出し専用メモリ(PROM)/消去可能プログラム可能読み出し専用メモリ(EPROM)/電子消去可能プログラム可能読み出し専用メモリ(EEPROM)(例えば、通常、ブートプログラムなどのファームウェアに使用される)が含まれる。揮発性メモリの例には、これらに限定されないが、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、相変化メモリ(PCM)ならびにディスクまたはテープが含まれる。
ストレージデバイス430は、コンピューティングデバイス400の大容量ストレージを提供することができる。いくつかの実施形態では、ストレージデバイス430は、コンピュータ可読媒体である。種々の異なる実施形態では、ストレージデバイス430は、フロッピーディスク(登録商標)デバイス、ハードディスクデバイス、光ディスクデバイス、またはテープデバイス、フラッシュメモリまたは他の同様のソリッドステートメモリデバイス、またはストレージエリアネットワークまたは他の構成におけるデバイスを含むデバイスのアレイであり得る。追加の実施形態では、コンピュータプログラム製品は情報媒体に有形的に具体化される。コンピュータプログラム製品は、実行時に、上述したような1つまたは複数の方法を実行する命令を含む。情報担体は、メモリ420、ストレージデバイス430、またはプロセッサ410上のメモリのようなコンピュータ可読媒体または機械可読媒体である。
高速コントローラ440は、コンピューティングデバイス400の帯域幅を大量に使用する処理を管理し、低速コントローラ460は、より低い帯域幅を集中的に使用する処理を管理する。そのような役割の配分は、例示的なものに過ぎない。いくつかの実施形態では、高速コントローラ440は、メモリ420、ディスプレイ480(例えば、グラフィックスプロセッサまたはアクセラレータを介する)、および各種拡張カード(図示せず)を受け入れる高速拡張ポート450に接続される。いくつかの実施形態では、低速コントローラ460は、ストレージデバイス430および低速拡張ポート470に接続される。様々な通信ポート(例えば、USB、ブルートゥース(登録商標)、イーサネット(登録商標)、無線イーサネット(登録商標))を含む低速拡張ポート470は、キーボード、ポインティングデバイス、スキャナ、または例えばネットワークアダプタを介するスイッチまたはルータなどのネットワーキングデバイスなどの1つまたは複数の入力/出力デバイスに接続され得る。
コンピューティングデバイス400は、図面に示すように、いくつかの異なる形態で実施することができる。例えば、標準サーバ400aとして、またはそのようなサーバ400aのグループ内で複数回、ラップトップコンピュータ400bとして、またはラックサーバシステム400cの一部として実施することができる。
本明細書に記載のシステムおよび技術の様々な実施形態は、デジタル電子回路および/または光回路、集積回路、特別に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組み合わせにおいて実現することができる。これらの様々な実施形態は、ストレージシステム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスからデータおよび命令を受信し、それらにデータおよび命令を送信するように接続された、特別または一般的な目的であってもよい、少なくとも1つのプログラム可能なプロセッサを含むプログラマブルシステム上で実行可能および/または解釈可能な1つまたは複数のコンピュータプログラムにおける実施形態を含むことができる。
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーションまたはコードとしても知られている)は、プログラム可能なプロセッサ用の機械命令を含み、高水準の手続き型言語および/またはオブジェクト指向のプログラミング言語および/またはアセンブリ言語/機械語で実施することができる。本明細書で使用する場合、「機械可読媒体」および「コンピュータ可読媒体」という用語は、任意のコンピュータプログラム製品、非一時的なコンピュータ可読媒体、機械可読信号として機械命令を受け取る機械可読媒体を含む、プログラマブルプロセッサに機械命令および/またはデータを提供するために使用される装置および/またはデバイス(例えば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(PLD)を指す。「機械可読信号」という用語は、機械命令および/またはデータをプログラマブルプロセッサに提供するために使用される任意の信号を指す。
本明細書で説明するプロセスおよび論理フローは、入力データ処理して出力を生成することによって機能を実行する1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラム可能なプロセッサによって実行することができる。プロセスおよび論理フローはまた、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)などの特定用途論理回路によっても実行することができる。コンピュータプログラムの実行に適したプロセッサは、一例として、汎用マイクロプロセッサおよび専用マイクロプロセッサ、および任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。一般に、プロセッサは、読み出し専用メモリまたはランダムアクセスメモリまたはその両方から命令およびデータを受信する。コンピュータの必須要素は、命令を実行するプロセッサと、命令およびデータを格納するための1つまたは複数のメモリデバイスである。一般に、コンピュータは、データを格納するための1つまたは複数の大容量ストレージデバイス(例えば磁気ディスク、光磁気ディスク、または光ディスク)からのデータを受信するか、またはデータを転送するか、またはその両方を行うように動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有する必要はない。コンピュータプログラム命令およびデータを格納するのに適したコンピュータ可読媒体には、一例として、半導体メモリデバイス(例えば、EPROM、EEPROM、およびフラッシュメモリデバイス)、磁気ディスク(例えば、内部ハードディスクまたはリムーバブルディスク)、光磁気ディスク、およびCD-ROMおよびDVD-ROMディスクを含むすべての形態の不揮発性メモリ、メディアおよびメモリデバイスが含まれる。プロセッサおよびメモリは、特定用途論理回路によって補充または特定用途論理回路に組み込むことができる。
ユーザとのインタラクションを提供するために、本開示の1つまたは複数の態様は、例えばCRT(陰極線管)、LCD(液晶ディスプレイ)モニタ、またはタッチスクリーンなどのユーザに情報を表示するためのディスプレイデバイスと、任意選択でユーザがコンピュータに入力を提供するキーボードおよびマウスまたはトラックボールなどのポインティングデバイスとを有するコンピュータ上で実施することができる。他の種類の装置を使用して、例えば、任意の形態の感覚フィードバック(例えば、視覚フィードバック、聴覚フィードバック、または触覚フィードバック)であり得るユーザに提供されるフィードバックとともにユーザとのインタラクションを提供することもでき、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形態で受信することができる。さらに、コンピュータは、ユーザによって使用されるデバイスとの間でドキュメントを送受信することによって(例えば、ウェブブラウザから受信した要求に応答してユーザのクライアントデバイス上のウェブブラウザにウェブページを送信することによって)、ユーザとインタラクションすることができる。
いくつかの実施形態が説明されている。それにもかかわらず、本開示の技術思想および範囲から逸脱することなく、様々な変更がなされ得ることが理解されるであろう。従って、他の実施形態も以下の特許請求の範囲内にある。