(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-13
(45)【発行日】2023-12-21
(54)【発明の名称】履歴セキュリティデータの記憶および構造化検索
(51)【国際特許分類】
G06F 16/23 20190101AFI20231214BHJP
【FI】
G06F16/23
(21)【出願番号】P 2022135855
(22)【出願日】2022-08-29
(62)【分割の表示】P 2021528341の分割
【原出願日】2019-09-26
【審査請求日】2022-08-29
(32)【優先日】2018-11-21
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】100142907
【氏名又は名称】本田 淳
(72)【発明者】
【氏名】ランバート、コリン
(72)【発明者】
【氏名】バスモフ、インノケンティ
(72)【発明者】
【氏名】ゲーベル、イーサン ダニエル
(72)【発明者】
【氏名】チャン、アンドリュー リャン ピン
(72)【発明者】
【氏名】イオン、イウリア
【審査官】原 秀人
(56)【参考文献】
【文献】特表2018-523862(JP,A)
【文献】特表2017-522664(JP,A)
【文献】特開2000-040063(JP,A)
【文献】特開2017-102922(JP,A)
【文献】特開2015-172862(JP,A)
【文献】特開2000-224228(JP,A)
【文献】特表2017-501515(JP,A)
【文献】米国特許出願公開第2016/0306871(US,A1)
【文献】米国特許出願公開第2015/0134795(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
G06F 21/62
(57)【特許請求の範囲】
【請求項1】
コンピュータ実装方法であって、データ処理ハードウェア上で実行されたとき、前記データ処理ハードウェアに、
前記データ処理ハードウェアと通信する複数の異なるコンピューティングリソースによって取得されたイベントを、ネットワークを介して受信することであって、前記イベントは、前記イベントに関連付けられた取り込み属性を含む、受信することと、
前記イベントに関連付けられた前記取り込み属性が、取り込み基準を満たすかどうか判定することと、
前記イベントに関連付けられた前記取り込み属性が、前記取り込み基準を満たさない場合、前記複数の異なるコンピューティングリソースの1つによって取得された前記イベントを破棄することと、
前記イベントに関連付けられた前記取り込み属性が、前記取り込み基準を満たす場合、前記複数の異なるコンピューティングリソースの1つによって取得された前記イベントをデータストアの永続ストレージへと取り込むことと、
前記イベントが、排除期間閾値を満たす期間において前記データストアに記憶されていたかどうか判定することと、
前記イベントが、前記排除期間閾値を満たす前記期間において前記データストアに記憶されていた場合、前記イベントを前記データストアから排除することと、
一組の有効性規則を前記イベントに適用することと、
前記一組の有効性規則に基づいて、前記イベントが有効であるかどうかを判定することと、
前記イベントが有効である場合、構造化データとして前記データストアへと前記イベントのインデックス付けを行うことと、
を含む動作を実行させ
、
前記一組の有効性規則は、前記イベントの優先順位を判定するための一組の優先順位規則を含む、コンピュータ実装方法。
【請求項2】
前記イベントを取り込むことは、
取り込み要求を受信すること、
タイムスケジュールからの指示、または
イベントからの指示
のうちの少なくとも1つに応じて行われる、
請求項1に記載のコンピュータ実装方法。
【請求項3】
前記動作は、前記イベントが、イベントのインデックス付けを行うためにユーザによって定義されたいずれかの複数のカスタムインデックス付け属性に関連付けられているかどうかを識別することをさらに含む、
請求項1に記載のコンピュータ実装方法。
【請求項4】
前記動作は、前記イベントが無効である場合、前記データストアへとインデックス付けを行うことに関し前記イベントを拒否することをさらに含む、
請求項
1に記載のコンピュータ実装方法。
【請求項5】
前記動作は、前記データストアに記憶されているデータについて取り出し要求を受信することをさらに含み、
前記取り出し要求を受信することは、データ取り出しオフセットを受信することを含み、前記データ取り出しオフセットは、取り出されるデータのリストにおける位置を示し、データの前記リストにおける前記位置よりも後のデータのみが取り出される、
請求項1に記載のコンピュータ実装方法。
【請求項6】
前記データストアは、分散ストレージシステムを含む、
請求項1に記載のコンピュータ実装方法。
【請求項7】
前記イベントを取り込むことは、アプリケーションプログラミングインターフェースを介して、前記複数の異なるコンピューティングリソースの1つによって前記イベントを取得することを含む、
請求項1に記載のコンピュータ実装方法。
【請求項8】
前記イベントは、前記複数の異なるコンピューティングリソースのうちの対応する1つに係る測定された特性を示す、
請求項1に記載のコンピュータ実装方法。
【請求項9】
データ処理ハードウェアと、
前記データ処理ハードウェアと通信するメモリハードウェアと、を備えるシステムであって、前記メモリハードウェアは命令を記憶し、前記命令は、前記データ処理ハードウェア上で実行されるとき、前記データ処理ハードウェアに、
前記データ処理ハードウェアと通信する複数の異なるコンピューティングリソースによって取得されたイベントを、ネットワークを介して受信することであって、前記イベントは、前記イベントに関連付けられた取り込み属性を含む、受信することと、
前記イベントに関連付けられた前記取り込み属性が、取り込み基準を満たすかどうか判定することと、
前記イベントに関連付けられた前記取り込み属性が、前記取り込み基準を満たさない場合、前記複数の異なるコンピューティングリソースの1つによって取得された前記イベントを破棄することと、
前記イベントに関連付けられた前記取り込み属性が、前記取り込み基準を満たす場合、前記複数の異なるコンピューティングリソースの1つによって取得された前記イベントをデータストアの永続ストレージへと取り込むことと、
前記イベントが、排除期間閾値を満たす期間において前記データストアに記憶されていたかどうか判定することと、
前記イベントが、前記排除期間閾値を満たす前記期間において前記データストアに記憶されていた場合、前記イベントを前記データストアから排除することと、
一組の有効性規則を前記イベントに適用することと、
前記一組の有効性規則に基づいて、前記イベントが有効であるかどうかを判定することと、
前記イベントが有効である場合、構造化データとして前記データストアへと前記イベントのインデックス付けを行うことと、
を含む動作を実行させ
、
前記一組の有効性規則は、前記イベントの優先順位を判定するための一組の優先順位規則を含む、システム。
【請求項10】
前記イベントを取り込むことは、
取り込み要求を受信すること、
タイムスケジュールからの指示、または
イベントからの指示
のうちの少なくとも1つに応じて行われる、
請求項
9に記載のシステム。
【請求項11】
前記動作は、前記イベントが、イベントのインデックス付けを行うためにユーザによって定義されたいずれかの複数のカスタムインデックス付け属性に関連付けられているかどうかを識別することをさらに含む、
請求項
9に記載のシステム。
【請求項12】
前記動作は、前記イベントが無効である場合、前記データストアへとインデックス付けを行うことに関し前記イベントを拒否することをさらに含む、
請求項
9に記載のシステム。
【請求項13】
前記動作は、前記データストアに記憶されているデータについて取り出し要求を受信することをさらに含み、
前記取り出し要求を受信することは、データ取り出しオフセットを受信することを含み、前記データ取り出しオフセットは、取り出されるデータのリストにおける位置を示し、データの前記リストにおける前記位置よりも後のデータのみが取り出される、
請求項
9に記載のシステム。
【請求項14】
前記データストアは、分散ストレージシステムを含む、
請求項
9に記載のシステム。
【請求項15】
前記イベントを取り込むことは、アプリケーションプログラミングインターフェースを介して、前記複数の異なるコンピューティングリソースの1つによって前記イベントを取得することを含む、
請求項
9に記載のシステム。
【請求項16】
前記イベントは、前記複数の異なるコンピューティングリソースのうちの対応する1つに係る測定された特性を示す、
請求項
9に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、履歴セキュリティデータの記憶および構造化検索のためのシステムに関する。
【背景技術】
【0002】
個人識別情報、アクセス、データ、およびリソースのセキュリティインシデントは急速に拡大し続けている。同様に、収集および分析に供される未処理のセキュリティ信号の量も指数関数的に増加している。これらのセキュリティ信号は、企業がセキュリティ違反およびダウンタイムから身を守るために必要な重要なリソースである。このニーズにより、人間のアナリストとセキュリティエンジニアは、このリソースを扱う際の効率と優先順位を上げるようになっている。
【発明の概要】
【発明が解決しようとする課題】
【0003】
本開示は、履歴セキュリティデータの記憶および構造化検索のためのシステムに関する。
【課題を解決するための手段】
【0004】
本開示の一態様によれば、データ処理ハードウェアによって、データ処理ハードウェアと通信する複数の異なるコンピューティングリソースによって取得された複数のイベントについて、ネットワークを介してイベントデータを取り込むことを含む方法が提供される。イベントデータは、イベントが複数の異なるコンピューティングリソースのうちの1つによって取得された時点を示す、イベントデータの各イベントのそれぞれのタイムスタンプを含む。イベントデータは、イベントデータの各イベントに関連付けられた少なくとも1つの取り込み属性であって、関連付けられたイベントの取り込みを許可するために必要な取り込み基準を満たす少なくとも1つの取り込み属性を含む。イベントデータの複数のイベントのそれぞれについて、方法は、データ処理ハードウェアによって、対応するイベントが、イベントのインデックス付けを行うためにユーザによって定義されたいずれかの複数のカスタムインデックス付け属性に関連付けられているかどうかを識別することを含む。方法は、データ処理ハードウェアによって、対応するイベントのそれぞれのタイムスタンプと、対応するイベントに関連付けられている少なくとも1つの取り込み属性と、対応するイベントに関連付けられている識別された複数のカスタムインデックス付け属性と、に基づいて、構造化データとして、データストアへと対応するイベントのインデックス付けを行うことを含む。方法は、データ処理ハードウェアによって、排除期間閾値を満たす期間において、データストアに構造化データとして、インデックス付けされていたイベントデータの複数のイベントのいずれかを排除することをさらに含む。方法は、データ処理ハードウェアにおいて、データストアに記憶されている構造化データについて取り出し要求を受信することであって、取り出し要求は、取り出し要求によって指定された時間範囲、取り出し要求によって指定された1つまたは複数の取り込み属性、または取り出し要求によって指定された1つまたは複数のカスタムインデックス付け属性のうちの少なくとも1つに関連付けられる構造化データを要求する、受信することをさらに含む。方法は、データ処理ハードウェアによって、取り出し要求によって指定された時間範囲、取り出し要求によって指定された1つまたは複数の取り込み属性、または取り出し要求によって指定された1つまたは複数のカスタムインデックス付け属性のうちの少なくとも1つに関連付けられる構造化データをデータストアから取り出すことをさらに含む。
【0005】
本開示の実装形態は、以下の任意の特徴のうちの1つまたは複数を含み得る。一部の例では、複数のイベントのインデックス付けを行うためにユーザによって定義されたカスタムインデックス付け属性はそれぞれ、複数の異なるコンピューティングリソースの顧客によって定義されたそれぞれのキーと値のペアを含む。一部の例では、方法は、イベントデータの複数のイベントのそれぞれについて、データ処理ハードウェアによって、一組の有効性規則を適用して、対応するイベントが有効であるかどうかを判定することを含む。対応するイベントが、適用された一組の有効性規則に基づいて有効である場合、方法は、構造化データとしてデータストアへと対応するイベントのインデックス付けを行うことを含む。対応するイベントが適用された一組の有効性規則に基づいて無効である場合、方法は、データ処理ハードウェアによって、データストアへとインデックス付けを行うことに関し対応するイベントを拒否することを含む。一組の有効性規則は、対応するイベントの優先順位を判定するための一組の優先順位規則を含んでいてもよい。一部の実装形態では、取り出し要求を受信するとき、方法は、構造化データ取り出しオフセットを受信することを含み、構造化データ取り出しオフセットは、取り出される構造化データのリストにおける位置を示し、構造化データのリストにおける位置よりも後の構造化データのみが取り出される。方法は、データ処理ハードウェアによって、取り出された構造化データの一部と、ページトークンと、を送信することをさらに含んでいてもよく、ページトークンは、取り出された構造化データのリストにおける位置を示している。取り出された構造化データの一部は、リスト内のページトークンよりも前の位置からのデータのみを含む。一部の例では、データストアは、分散ストレージシステムを含む。他の例では、データストアは、リレーショナルデータベースを含む。イベントデータの複数のイベントのうちの少なくとも1つは、複数の異なるコンピューティングリソースのうちの対応する1つに係る測定された特性を示し得る。一組の優先順位規則に基づいて測定された特性の優先順位を判定してもよい。任意選択により、構造化データを要求する取り出し要求は、第1の時間範囲および第2の時間範囲に関連付けられており、第2の時間範囲は、第1の時間範囲とは異なる。一部の実装形態では、イベントデータを取り込むことは、アプリケーションプログラミングインターフェイスを介して、複数の異なるコンピューティングリソースからネットワークによってイベントデータを取得することを含む。方法は、データ処理ハードウェアにおいて、データを排除するための排除要求であって、排除要求によって指定された時間範囲、排除要求によって指定された1つまたは複数の取り込み属性、または排除要求によって指定された1つまたは複数のカスタムインデックス付け属性のうちの少なくとも1つに関連付けられ得るデータを排除するための排除要求を受信することをさらに含み得る。方法は、データ処理ハードウェアによって、排除要求によって指定された時間範囲、排除要求によって指定された1つまたは複数の取り込み属性、または排除要求によって指定された1つまたは複数のカスタムインデックス付け属性のうちの少なくとも1つに関連付けられる構造化データをデータストアから排除することをさらに含み得る。一部の実装形態では、イベントデータを取り込むことは、取り込み要求を受信すること、タイムスケジュールからの指示、またはイベントからの指示のうちの少なくとも1つに応じて行われる。構造化データを取り出すことは、取り出し要求に関連付けられる構造化データの許可の検証を含み得る。
【0006】
本開示の別態様によれば、データ処理ハードウェアと、データ処理ハードウェアと通信するメモリハードウェアと、を備えるシステムが提供される。メモリハードウェアは命令を記憶し、命令は、データ処理ハードウェアによって実行されるとき、データ処理ハードウェアに動作を実行させる。動作は、データ処理ハードウェアと通信する複数の異なるコンピューティングリソースによって取得された複数のイベントについて、ネットワークを介してイベントデータを取り込むことを含む。イベントデータは、イベントが複数の異なるコンピューティングリソースのうちの1つによって取得された時点を示す、イベントデータの各イベントのそれぞれのタイムスタンプを含む。イベントデータは、イベントデータの各イベントに関連付けられた少なくとも1つの取り込み属性であって、関連付けられたイベントの取り込みを許可するために必要な取り込み基準を満たす少なくとも1つの取り込み属性を含む。イベントデータの複数のイベントのそれぞれについて、動作は、対応するイベントが、イベントのインデックス付けを行うためにユーザによって定義されたいずれかの複数のカスタムインデックス付け属性に関連付けられているかどうかを識別することを含む。動作は、対応するイベントについて、それぞれのタイムスタンプに基づいて、構造化データとしてデータストアへと対応するイベントのインデックス付けを行うことをさらに含む。少なくとも1つの取り込み属性は対応するイベントに関連付けられており、いずれかの識別された複数のカスタムインデックス付け属性も対応するイベントに関連付けられている。動作は、排除期間閾値を満たす期間において、データストアに構造化データとして、インデックス付けされていたイベントデータの複数のイベントのいずれかを排除することを含む。動作は、データストアに記憶されている構造化データの取り出し要求を受信することも含む。取り出し要求は、取り出し要求によって指定された時間範囲、取り出し要求によって指定された1つまたは複数の取り込み属性、または取り出し要求によって指定された1つまたは複数のカスタムインデックス付け属性のうちの少なくとも1つに関連付けられる構造化データを要求する。動作は、取り出し要求によって指定された時間範囲、取り出し要求によって指定された1つまたは複数の取り込み属性、または取り出し要求によって指定された1つまたは複数のカスタムインデックス付け属性のうちの少なくとも1つに関連付けられている構造化データをデータストアから取り出すことも含む。
【0007】
本開示の実装形態は、以下の任意の特徴のうちの1つまたは複数を含み得る。一部の例では、複数のイベントのインデックス付けを行うためにユーザによって定義されたカスタムインデックス付け属性はそれぞれ、複数の異なるコンピューティングリソースの顧客によって定義されたそれぞれのキーと値のペアを含む。動作は、イベントデータの複数のイベントのそれぞれについて、一組の有効性規則を適用して、対応するイベントが有効であるかどうかを判定することをさらに含み得る。動作は、次いで、対応するイベントが、適用された一組の有効性規則に基づいて有効である場合、構造化データとしてデータストアへと対応するイベントのインデックス付けを行うことを含み得る。一組の有効性規則は、対応するイベントの優先順位を判定するための一組の優先順位規則を含んでいてもよい。一部の実装形態では、動作は、対応するイベントが適用された一組の有効性規則に基づいて無効である場合、データストアへとインデックス付けを行うことに関し対応するイベントを拒否することをさらに含む。取り出し要求は、構造化データ取り出しオフセットを受信することを含み、構造化データ取り出しオフセットは、取り出される構造化データのリストにおける位置を示していてもよい。構造化データのリストにおける位置の後の構造化データのみが取り出されてよい。一部の例では、動作は、取り出された構造化データの一部を送信することをさらに含む。動作は、次いで、ページトークンを送信することを含み、ページトークンは、取り出された構造化データのリストにおける位置を示している。動作は、取り出された構造化データの一部は、リスト内のページトークンよりも前の位置からのデータのみを含むといったことも含み得る。一部の例では、データストアは、分散ストレージシステムを含む。他の例では、データストアは、リレーショナルデータベースを含む。イベントデータの複数のイベントのうちの少なくとも1つは、複数の異なるコンピューティングリソースのうちの対応する1つに係る測定された特性を示し得る。動作は、一組の優先順位規則に基づいて測定された特性の優先順位を判定することをさらに含んでいてもよい。一部の実装形態では、構造化データを要求する取り出し要求は、第1の時間範囲および第2の時間範囲に関連付けられており、第2の時間範囲は、第1の時間範囲とは異なる。イベントデータを取り込むことは、アプリケーションプログラミングインターフェースを介して、複数の異なるコンピューティングリソースからネットワークを介してイベントデータを取得することを含み得る。一部の実装形態では、動作は、データを排除するための排除要求であって、排除要求によって指定された時間範囲、排除要求によって指定された1つまたは複数の取り込み属性、または排除要求によって指定された1つまたは複数のカスタムインデックス付け属性のうちの少なくとも1つに関連付けられるデータを排除するための排除要求を受信することをさらに含む。動作は、排除要求によって指定された時間範囲、排除要求によって指定された1つまたは複数の取り込み属性、または排除要求によって指定された1つまたは複数のカスタムインデックス付け属性のうちの少なくとも1つに関連付けられる構造化データをデータストアから排除することをさらに含む。一部の実装形態では、イベントデータを取り込むことは、取り込み要求を受信すること、タイムスケジュールからの指示、またはイベントからの指示のうちの少なくとも1つに応じて行われる。構造化データを取り出すことは、取り出し要求に関連付けられる構造化データの許可の検証を含み得る。
【0008】
本開示の1つまたは複数の実装形態の詳細は、添付の図面および以下の説明に記載されている。他の態様、特徴、および利点は、説明、図面、および特許請求の範囲から明らかとなる。
【図面の簡単な説明】
【0009】
【
図1A】構造化されたイベントデータを記憶および検索するための例示的なシステムの概略図。
【
図1B】構造化されたイベントデータを記憶および検索するための例示的なシステムの概略図。
【
図2】
図1Aおよび
図1Bのシステムの取り込みインターフェースの例示的な構成要素の概略図。
【
図3】
図1Aおよび
図1Bのシステムの永続性サブシステムの例示的な構成要素の概略図。
【
図4】
図1Aおよび
図1Bのシステムの取り出しインターフェースの例示的な構成要素の概略図。
【
図5】イベントデータを記憶および構造化する方法の動作の例示的な構成のフローチャート。
【
図6】本明細書で説明されるシステムおよび方法を実装するために使用され得る例示的なコンピューティングデバイスの概略図。
【発明を実施するための形態】
【0010】
さまざまな図面での同様の参照番号は、同様の要素を示す。
収集および分析する必要のある利用可能な未処理のセキュリティ信号の量が指数関数的に増加するにつれて(たとえば、広大な分散コンピューティングシステム全体のリソースのセキュリティに係る発見またはイベント)、企業は、クラウド環境でのセキュリティ問題の検出と対応の効率を高める方法を模索している。
【0011】
本開示の実装は、プログラムによる分析および人間による分析と、データの優先順位付けとを加速して、洞察を提供し、人間の理解と優先順位付けされた応答アクションを推進するため、以前において異なるソースにわたり大規模な現在および履歴の未処理のセキュリティデータのインデックス付けおよび結合を可能にするシステムと方法を対象とする。加えて、本開示の実装により、ユーザは、ユーザの資産、ワークロード、および関連する脅威の抽象化に基づいて、組織化、管理、調査、十分な情報に基づく意思決定、および行動を行うことができ、その一方ユーザの認知と労力の負荷をさらに軽減する。これらの貢献により、クラウドリソースについての構造化されたタイムスタンプ付き情報と、クラウドリソースに関連付けられるセキュリティ情報に関するの効率的な取り込みと取り出しを提供することによって、問題の検出と対処にかかる時間が短縮され、インシデントのリスクと影響範囲(blast radius)が最小限に抑えられる。
【0012】
図1Aおよび
図1Bを参照して、一部の実装形態では、例示的なシステム100は、リモートシステム112を含む。リモートシステム112は、スケーラブル/エラスティックコンピューティングリソース114(例えば、データ処理ハードウェア610(
図6))および/またはストレージリソース116(例えば、メモリハードウェア620(
図6))を有する単一のコンピュータ、複数のコンピュータ、または分散システム(例えば、クラウド環境)であり得る。リモートシステム112は、ネットワーク120を介して、複数の異なるコンピューティングリソースまたはクライアント118、118a~nに接続されている。ストレージ抽象化150(例えば、分散ストレージシステムまたはデータストア)は、ストレージリソース116上にオーバーレイされて、クライアントまたはコンピューティングリソース118のうちの1つまたは複数によるストレージリソース116のスケーラブルな使用を可能にする。リモートシステム112は、構造化データ検索システム160を実行する。検索システム160は、コンピューティングリソース118からイベントデータ162を取得して取り込む。イベントデータ162は、クラウドリソースに関連付けられるイベントを表す。一部の実装形態では、イベントデータ162または関連付けるイベントは、複数の異なるコンピューティングリソース118のうちの対応する1つに係る測定された特性を示す。例えば、イベントデータ162は、クラウドリソース、セキュリティおよびプライバシーの脆弱性、ならびに発信者が提供するアノテーションデータに関連付けられる特性を含む。一部の実装形態では、イベントデータ162は、親子関係を有する階層(例えば、クラウドリソースの階層)を形成する。システム160は、一組の優先順位規則に基づいて、測定された特性の優先順位を判定することができる。イベントデータ162はまた、要素間の1対多または多対多の関係を有するグラフを形成し得る。例えば、イベントデータ162は、クラウドリソースと、クラウドリソースに関連付けられる全てのセキュリティ問題とを表すことができる。
【0013】
検索システム160によって受信されたイベントデータ162は、タイムスタンプ164と、少なくとも1つの取り込み属性166と、カスタムインデックス付け属性168とをさらに含む。カスタムインデックス付け属性168は、イベントデータ162に含まれる場合と含まれない場合がある。一部の例では、検索システム160は、取り込みインターフェース200、永続性サブシステム300、および取り出しインターフェース400を含む。取り込みインターフェース200は、イベントデータ162を受信し、データ162を処理し、そして取り込みを行ったデータ162を永続性サブシステム300に渡す。永続性サブシステム300は、イベントデータ162を構造化データとしてストレージ抽象化150に記憶する。ストレージ抽象化150は、コンピューティングリソース118からのイベントデータ162を記憶するように構成される。分散ストレージシステム150は、回復の目的で、記憶されたイベントデータ162をバックアップするように構成されたアーカイブ190(例えば、テープアーカイブ)を実装することができる。アーカイブ190は、長い保持期間(例えば、3年)を含み得る。取り出しインターフェース400は、データ要求者119からの取り出し要求410に応じて、取り出しデータ420をデータ要求者119に提供する。データ要求者119は、イベントデータ162および対応する取り出しデータ420を所有するユーザ/顧客またはエンティティに関連付けられていてもよく、したがって、取り出しデータ420に含める内容を指定して取り出し要求410を送信することによって、取り出しデータ420にアクセスして取り出しデータ420の内容を検査することができる。
【0014】
図1Bを参照して、一部の実装形態では、分散システム140は、緩く結合されたメモリホスト114、114a~n(すなわち、データ処理ハードウェア)を含み、それぞれが、データをキャッシュするために使用することができるストレージリソース116(例えば、メモリハードウェア、フラッシュメモリ、ダイナミックランダムアクセスメモリ(DRAM)、相変化メモリ(PCM)、および/またはディスク)と通信するコンピューティングリソース122(例えば、1つまたは複数のプロセッサまたは中央処理装置(CPU))を有する。ストレージ抽象化150は、ストレージリソース116上にオーバーレイされて、1つまたは複数のクライアント118、119によるストレージリソース116のスケーラブルな使用を可能にする。クライアント118、119は、ネットワーク120を介して(例えば、リモートプロシージャコール(RPC)を介して)メモリホスト114と通信することができる。一部の実装形態では、リモート分散システム112は「シングルサイド形態(single-sided)」である。「シングルサイド形態」とは、メモリホスト114上での要求処理のほとんどが、メモリホスト114のCPU122上で実行されるソフトウェアによってではなく、ハードウェアにおいて実行され得る方法を指す。
【0015】
分散システム112は、クライアント118、119から取得されたイベントデータ162を、リモートメモリホスト114のストレージリソース116(例えば、ストレージ抽象化150)に記憶することができるとともに、ネットワークインターフェースコントローラ(NIC)126を介してリモートメモリホスト114から取り出しデータ420を得ることが可能である。ネットワークインターフェースコントローラ126(ネットワークインターフェースカード、ネットワークアダプタ、またはLANアダプタとしても知られている)は、コンピューティングデバイス/リソース122をネットワーク120に接続するコンピュータハードウェアコンポーネントであり得る。メモリホスト114a~nとクライアント118、119の両方は、それぞれ、ネットワーク通信のためのネットワークインターフェースコントローラ126を有することができる。各メモリロケーション124は、イベントデータ162を記憶するように構成される。本明細書で使用されるように、クライアント118、119は、構造化データシステム160によって取り込まれたイベントデータ162を収集/取得/測定する複数の異なるコンピューティングリソース118と、構造化データシステム160によって取り込みを行ったイベントデータ162、および、取り出し要求410の送信に応じて構造化データシステム160から取り出された対応する取り出しデータ410に関連付けられる顧客/ユーザに関連付けられるデータ要求者119と、を含み得る。
【0016】
図2を参照して、取り込みインターフェース200は、イベントデータ162を取り込む。取り込みインターフェース200は、複数の異なるコンピューティングリソース118からイベントデータ162を受信することによって、および/または、複数の異なるコンピューティングリソースからネットワーク120を介して(例えば、アプリケーションプログラミングインターフェース(API)を介して)イベントデータ162を能動的にフェッチすることによって、イベントデータ162を取り込むことができる。任意選択により、イベントデータ162は、APIを介して書き込まれるか、または更新され得る。すなわち、クライアント118、119は、APIを介してイベントデータ162を取り込みインターフェース200にプッシュすることができる。取り込みインターフェース200は、任意の数の刺激に応じてデータを取り込むことができる。例えば、イベントデータの取り込みは、取り込み要求の受信に応じて行われる場合がある。すなわち、ユーザまたはクライアントは、データを取り込むよう取り込みインターフェース200に要求する。取り込みインターフェース200はまた、タイムスケジュールからの指示に応じてデータを取り込むことができる。たとえば、取り込みインターフェースのタイムスケジュールでは、イベントデータを取り込む必要がある特定の時間または時間の範囲を指定できる。任意選択により、取り込みインターフェース200は、イベントからの指示に応じてデータを取り込むことができる。すなわち、特定のイベントデータを取り込むことは、同じまたは異なるクライアント118からの追加のイベントデータ162の取り込みをトリガーすることができる。
【0017】
前述のように、イベントデータ162は、タイムスタンプ164を含む。タイムスタンプ164は、それぞれのコンピューティングリソース118がそれぞれのイベントを取得した時点を示す。一部の例では、イベントは、クラウドリソースに関連付けられており、クラウドリソースの動作に関連付けられた特性またはその他の測定可能なパラメータを含む場合がある。例えば、イベントデータ162は、リモートコンピューティングリソース118をスキャンしたセキュリティスキャナからの結果を含み得る。別の例では、イベントデータ162は、リモートデータベースに関連付けられたコンピューティングリソース118にパスワードが設定されたという通知を含む。タイムスタンプ164は、イベントが発生した時刻を示し得る。すなわち、スキャナの上記例を参照して、タイムスタンプ164は、セキュリティスキャナがスキャンを完了したとき、またはリモートコンピューティングリソース118がスキャナからスキャン結果を受信したときを示し得る。一部の実装形態では、タイムスタンプ164は、イベントデータ162が構造化データ検索システム160によって取り込まれた時刻を示し得る。一部の実装形態では、取り込みインターフェース200は、タイムスタンプ164を欠くイベントデータ162を取り込むときに、(例えば、現在の時刻の)タイムスタンプ164を提供する。
【0018】
イベントデータ162はまた、1つまたは複数の取り込み属性166を含む。これらの属性166は、データ162の取り込みを許可するのに、取り込みインターフェース200に必要である。例えば、イベントデータ162は、取り込み規則210(すなわち、有効性規則または取り込み基準)と比較することができる。規則210が満たされない場合(例えば、取り込み属性166が欠落している場合)、データ162は無効であると判定されることがあり、データ162は破棄される(すなわち、無視または拒否され)か、あるいは取り込まれない。規則210が満たされている場合(例えば、全ての取り込み属性166が存在し、適切なフォーマットである)、取り込みインターフェース200は、データ162が有効であると判定し、データ162を取り込み、取り込まれたデータ162を永続性サブシステム300に送信して、インデックス付けを行うことができる。一部の実装形態では、取り込み規則210は、取り込み属性166の単なる存在以上のものを検証する。例えば、取り込み規則210は、時間および/または帯域幅の制約(例えば、データ162の量またはデータ162が取得される速度)を加えることができる。別の例では、取り込み規則210は、データ162および/またはシステム100へのアクセス制御(すなわち、許可)を実施する(すなわち、データ162がシステム100へのアクセスまたは許可を有すること、および/またはシステム100がデータ162へのアクセスまたは許可を有することを検証する)。さらに別の例では、取り込み規則210は順序付けを実施し、順序が正しくない更新を拒否する場合がある。取り込み規則は、対応するイベントの優先順位を判定する一組の優先順位規則を含む場合がある。データは、判定された優先順位に部分的に基づいて取り込まれるか、インデックス付けが行われてよい。取り込み属性166は、強い型付けであってもよい(つまり、属性の型とフォーマットを厳密に適用する)。取り込み属性166は、ペア(例えば、キー、値)として表すことができる。
【0019】
図2の参照を続けて、イベントデータ162は、一部の実装形態では、カスタムインデックス付け属性168を含む。カスタムインデックス付け属性168は、取り込みインターフェース200がデータ162を取り込むために必須ではないが、クライアント(例えば、データ要求者119)が、イベントデータ162にインデックス付けを行うときおよびイベントデータ162を取り出すときに、さらなる柔軟性およびカスタマイズを可能にする。すなわち、イベントデータ162は、カスタムインデックス付け属性168の存在に拘わらず取り込むことができる。例えば、クライアントによって定義された記述属性はオプションであってもよく、取り込みインターフェース200は、記述を欠くイベントデータ162を依然として取り込むことができる。取り込み属性166のように、カスタムインデックス付け属性168は、顧客またはクライアントが定義するペア(キー、値)として表すことができる。一部の実装形態では、カスタムインデックス付け属性168は、発信者が提供する追加のタプル(例えば、キー、値、有効期間)でイベントデータ162を増強する。
【0020】
図3を参照して、取り込まれたデータ162(依然としてタイムスタンプ164、少なくとも1つの取り込み属性166、および任意のカスタムインデックス付け属性168を含む)は、インデックス付け前データ162aとして永続性サブシステム300によって受信される。一部の実装形態では、永続性サブシステムは、データインデクス付け部310を含む。データインデクス付け部310は、インデックス付け前データ162aを受け付けて、インデックス付け前データ162aが、クライアント119(またはクライアントのユーザ)によって定義されたいずれかのカスタムインデックス付け属性168に関連付けられているかどうかを識別する。次に、データインデクス付け部310は、それぞれのタイムスタンプ164、取り込み属性166、およびいずれかのカスタムインデックス付け属性168に基づいて、取り込んだデータ162を構造化データ162bとしてデータストア(例えば、ストレージ抽象化)150へとインデクス付け(すなわち、構造化)する。すなわち、データインデクス付け部310は、永続ストレージでの効率的な更新および取り出しのためにデータ162を順序付けおよび組織化する。一部の実装形態では、データストア150は、リレーショナルデータベースに関連付けられており、データインデクス付け部310は、データ162をリレーショナルデータベースへとインデックス付けする。追加的にまたはこれに代えて、データストア150は、分散データベースに関連付けられていてもよく、データインデクス付け部310は、データ162bを分散データベースへとインデックス付けする。
【0021】
一部の実装形態では、データインデクス付け部310は、データ162(例えば、インデックス付け前データ162a)を構造化するときに、カスタムインデックス付け属性168を追加する。例えば、データインデクス付け部310は、指定された期間にわたるそれぞれのデータ162の属性、プロパティ、拡張、および関係構造(例えば、親子関係)などのすべての変更を含むタイムライン属性を追加することができる。
【0022】
一部の例では、永続性サブシステム300は、データ排除部320を含む。データ排除部320は、保持閾値322を含み得る。永続性サブシステム300は、データ排除部320を介して、構造化データ162bがデータストア150に記憶される期間を制限することができる。すなわち、構造化データ162bは、それぞれの保持閾値または排除期間閾値322(例えば、3ヶ月)を有していてもよく、データ162bがデータストア150に記憶されている時間が当該閾値322を満たすとき、データ162bは、データストア150から排除(すなわち、削除)され得る。データ162の異なる複数の要素は、互いに異なる保持閾値322を有し得る。構造化データ162bの要素に適用される閾値は、それぞれのタイムスタンプ164、取り込み属性166、およびいずれかのカスタムインデックス付け属性168のうちの1つまたは複数に依存し得る。例えば、取り込み属性166は、構造化データ162bの所有者(すなわち、構造化データ162bのイベントに関連付けられるクラウドリソースの所有者)を含み得る。保持閾値322は、所有者の取り込み属性166のステータスに基づいて、構造化データ162bに割り当てられ得る。
【0023】
一部の実装形態では、構造化データ162bは、2つ以上のそれぞれの保持閾値322を有する。例えば、構造化データ162bは、最後修正保持閾値324および総保持閾値326に関連付けられ得る。構造化データ162bは、場合によっては、以前に受信された取り込まれたデータ162への更新であり得る。例えば、構造化データ162bは、クラウドリソースのステータス(例えば、可用性)を更新することができる。サブシステム300は、構造化データ162bの古い「バージョン」を、総保持閾値326よりも短い時間で(すなわち、「最新の」バージョンよりも短い時間で)記憶する場合がある。例えば、最後修正保持閾値324は3ヶ月であってもよく、一方、総保持閾値326は13ヶ月であり得る。構造化データ162bが更新されると、古いバージョンのデータ162(すなわち、それが更新される前のデータ)は、最後修正保持閾値324(3ヶ月)の間維持されることがあり、一方、最新の更新162bは、後で再度更新しない限り、総保持閾値326(13か月)の間維持され得る。
【0024】
図3の参照を続けて、一部の実装形態では、永続性サブシステム300は、構造化データ検索システム160のユーザまたはクライアントから排除要求328を受信する。例えば、排除要求328を送信するユーザまたはクライアントは、データ要求者119に関連付けられた同じユーザまたはクライアントであり得る。排除要求328は、排除要求328によって指定された時間範囲165、排除要求328によって指定された1つまたは複数の取り込み属性166、または排除要求328によって指定された1つまたは複数のカスタムインデックス付け属性168のうちの少なくとも1つに関連付けられる構造化データ162bをデータストア150から排除することを要求する。データ排除部320は、排除要求328に基づいて、任意の量の構造化データ162bを排除することができる。例えば、ユーザまたはクライアント119は、対応する取り込み属性166による指定に従い、それぞれのクライアント119に関連付けられるすべてのデータの排除を要求することができる。別の例では、クライアント119は、排除要求328によって指定された時間範囲165内にあるタイムスタンプ164を有するすべてのデータの排除を要求することができる。データ排除部320は、要求者119が要求されたデータ162を排除することを許可されていることの検証(例えば、ユーザ名およびパスワード)を要求し得る。
【0025】
図4を参照して、取り出しインターフェース400(すなわち、クエリインターフェース)は、データストア150に記憶された構造化データ162bの取り出し要求410を受信する。取り出し要求410は、取り出し要求410がデータストア150からの取り出しデータ420として構造化データ162bの取り出しを要求していることを除いて、
図3の排除要求328と実質的に同様であり得る。したがって、取り出し要求410は、取り出し要求410によって指定された時間範囲165、取り出し要求410によって指定された1つまたは複数の取り込み属性166、または取り出し要求410によって指定された1つまたは複数のカスタムインデックス付け属性168のうちの少なくとも1つに関連付けられる構造化データ162bをデータストア150から、要求し得る。取り出し要求410によって指定されたカスタムインデックス付け属性168は、データインデクス付け部310によって生成された属性(例えば、タイムライン属性)を含み得る。一部の例では、取り出し要求410は、特定の時点からデータを取り出す要求、またはそれぞれ時間範囲が異なる第1の時間範囲と第2の時間範囲との間でデータ162bを比較する(「差分(diff)」としても知られる)要求を含む。差分は、3つ以上の時間範囲による差分でもよい。比較により、追加の属性が生成される場合がある。例えば、比較により、データ162bがある時点または両方の時点で存在したかどうか、またはデータ162bの属性、プロパティ、または拡張のいずれかが2つの時点の間で変更されたかどうかを示す属性が生成される場合がある。別の例では、取り出し要求410は、特定のクラウドリソース118に関連付けられたすべてのデータ162bを要求することができる。取り出しインターフェース400は、要求された構造化データ162bをデータストア150からフェッチし、データ162bを取り出しデータ420として要求者119に返す。一部の実装形態では、取り出しインターフェース400は、属性166、168および/またはタイムスタンプ164に基づいて取り出しデータ420をソートおよび/またはグループ化する。
【0026】
取り出しインターフェース400はまた、拡張および関係構造(例えば、親子関係)などのデータ420の任意の要素で、取り出しデータ420をフィルタリング、ソート、またはグループ化することができる。フィルタリングは、標準化されたクエリ言語または独自のクエリ言語で指定されてよい。取り出しインターフェースは、取り出しデータ420を集約関数でさらにグループ化することができる。例えば、集約関数には、カウント、合計、および/または平均が含まれる場合がある。一部の実装形態では、取り出し要求410は、それぞれのタイムスタンプ164、属性166、168、または他のいずれかのイベントに関連付けられた構造化イベントデータ162b間のクラスタリング、相関、および因果関係を明らかにするために、「連鎖」または他の方法で共に順序付けられ得る。
【0027】
一部の実装形態では、取り出し要求410を受信することは、構造化データ取り出しオフセット412を受信することを含む。構造化データ取り出しオフセット412は、取り出される構造化データ162bのリストにおける位置を示す。次いで、構造化データ162bのリストにおける位置よりも後の構造化データ162bのみが取り出される。例えば、取り出し要求410が50の構造化データ取り出しオフセット412を含み、取り出しインターフェース400が取り出し要求410に対応する構造化データ162bの100の要素のリストをフェッチする場合、取り出しインターフェース400は、すべてのデータ要素ではなく、50から100の要素を返す。一部の実装形態では、構造化データ取り出しオフセット412は、一度に返す構造化データ162bの要素の量を示す。例えば、取り出し要求410は、取り出しインターフェース400が一度に10個の結果のみを返すことを要求することができる。任意選択により、取り出しインターフェース400によって返される取り出しデータ420は、ページトークン422を含み得る。取り出しインターフェース400が、取り出し要求410に対応する取り出しデータ420の一部のみを返す場合、ページトークン422は、返されたデータ420に対応するリストにおける位置を示し得る。すなわち、取り出しインターフェース400が、返すリストにおいて100個の取り出しデータ420の要素を有し、10個の要素のみを返す場合、ページトークン422は、取り出しインターフェース400が返すこととなる取り出しデータ420の次の要素が11番目の要素であることを示し得る。次に、フォローアップ取り出し要求410は、要求者が次の「バッチ」またはデータのグループ420の準備ができていることを取り出しインターフェース400に示すために、ページトークン422を含み得る。
【0028】
したがって、システム100は、顧客およびクライアントが高レベルの抽象化で自身をセキュアにすることを可能にする。すなわち、資産、脆弱性、脅威とリスクの評価と検出は、それぞれの顧客またはクライアントが展開した関連するクラスのビジネスおよびコンテキスト化されたアプリケーション(またはワークロード、サービスなど)に合わせて、大規模に優先順位が付けられ、パーソナライズされる。システム100は、個々のリソースを戦術的に保護する代わりに、クライアントの環境を全体的にセキュアにする。具体的には、システム100は、大規模において、ワークロードおよびその基礎となるサービスおよびリソースの宣言された関係および推論された関係の自動および支援された発見の両方を可能にする。システム100は、大規模において、特定のワークロード(またはワークロードクラス)に従う静的および動的な振る舞いおよび関係の変化の自動および支援された理解およびベースライン化の両方を可能にする。システム100はまた、大規模な統計および動的異常の自動および支援された検出の両方、ならびに特定のアプリケーション、ワークロード、およびワークロードクラスのコンテキストに存在するターゲットデータのタイプおよび/または値の理解を可能にする。システム100は、特定のクライアントまたは顧客、クライアントの特定のビジネスコンテキスト、アプリケーション、ワークロード、およびワークロードクラスのためにパーソナライズされた一般的な脅威アクターの方法および脆弱性にマッピングされた自動または支援されたターゲティングおよび発見の優先順位付けを可能にする。
【0029】
図5は、イベントデータを記憶および構造化するための例示的な方法500のフローチャートである。フローチャートは、データ処理ハードウェア114によって、データ処理ハードウェア114と通信する複数の異なるコンピューティングリソース118によって取得された複数のイベントについて、ネットワーク120を介してイベントデータ162を取り込むことによって、動作502を開始する。一部の実装形態では、イベントデータを取り込むことは、取り込み要求を受信すること、タイムスケジュールからの指示、またはイベントからの指示のうちの少なくとも1つに応じて行われる。イベントデータ162は、イベントが複数の異なるコンピューティングリソース118のうちの1つによって取得された時点を示す、イベントデータ162の各イベントのそれぞれのタイムスタンプ164を含む。イベントデータ162は、イベントデータ162の各イベントに関連付けられた少なくとも1つの取り込み属性166をさらに含む。少なくとも1つの取り込み属性166は、関連付けられたイベントの取り込みを許可するために必要な取り込み基準210を満たす。一部の実装形態では、イベントデータ162を取り込むことは、アプリケーションプログラミングインターフェースを介して、複数の異なるコンピューティングリソース118からネットワーク120を介してイベントデータ162をフェッチすることを含む。
【0030】
イベントデータ162の複数のイベントのそれぞれについて、方法500は、ステップ504において、データ処理ハードウェア114によって、対応するイベントが、イベントのインデックス付けを行うためにユーザによって定義されたいずれかの複数のカスタムインデックス付け属性168に関連付けられているかどうかを識別することを含む。一部の例では、複数のイベントのインデックス付けを行うためにユーザによって定義されたカスタムインデックス付け属性168はそれぞれ、複数の異なるコンピューティングリソース118の顧客によって定義されたそれぞれのキーと値のペアを含む。ステップ506で、方法500は、イベントデータ162の複数のイベントのそれぞれについて、データ処理ハードウェア114によって、対応するイベントのそれぞれのタイムスタンプ164と、対応するイベントに関連付けられている少なくとも1つの取り込み属性166と、対応するイベントに関連付けられている識別された複数のカスタムインデックス付け属性168と、に基づいて、構造化データ162bとして、データストア150へと対応するイベントのインデックス付けを行うこと、を含む。一部の例では、データストア150は、分散ストレージシステムを含む。他の例では、データストア150は、リレーショナルデータベースを含む。
【0031】
ステップ508において、方法500は、データ処理ハードウェア114によって、排除期間閾値322を満たす期間において、データストア150に構造化データ162bとして、インデックス付けされていたイベントデータ162の複数のイベントのいずれかを排除することを含む。方法500は、ステップ510において、データ処理ハードウェア114において、データストア150に記憶されている構造化データ162bについて取り出し要求410を受信することであって、取り出し要求410は、取り出し要求410によって指定された時間範囲165、取り出し要求410によって指定された1つまたは複数の取り込み属性166、または取り出し要求410によって指定された1つまたは複数のカスタムインデックス付け属性168のうちの少なくとも1つに関連付けられる構造化データ162bを要求する、受信することを含む。構造化データ162bを要求する取り出し要求410は、第1の時間範囲165および第2の時間範囲165に関連付けられていてもよい。第2の時間範囲165は、第1の時間範囲165とは異なる。
【0032】
ステップ512において、方法500は、データ処理ハードウェア114によって、取り出し要求410によって指定された時間範囲165、取り出し要求410によって指定された1つまたは複数の取り込み属性166、または取り出し要求410によって指定された1つまたは複数のカスタムインデックス付け属性168のうちの少なくとも1つに関連付けられる構造化データ162bをデータストア150から取り出すことを含む。例えば、指定された時間範囲165内にある対応するタイムスタンプ164を構造化データ162bが含む場合、構造化データ162bは、取り出し要求410によって指定された時間範囲165に関連付けられ得る。一部の実装形態では、取り出し要求410を受信することは、構造化データ取り出しオフセットを受信することを含み、構造化データ取り出しオフセット412は、取り出される構造化データ162bのリストにおける位置を示し、構造化データ162bのリストにおける位置よりも後の構造化データ162bのみが取り出される。構造化データ162bを取り出すことは、取り出し要求410に関連付けられる構造化データの許可の検証を含み得る。
【0033】
任意選択により、方法500は、イベントデータ162の複数のイベントのそれぞれについて、データ処理ハードウェア114によって、一組の有効性規則210を適用して、対応するイベントが有効であるかどうかを判定することを含む。方法500は、対応するイベントが、適用された一組の有効性規則210に基づいて有効である場合、構造化データ162bとしてデータストア150へと対応するイベントのインデックス付けを行うことをさらに含んでいてもよい。一組の有効性規則210は、対応するイベントの優先順位を判定するための一組の優先順位規則を含んでいてもよい。対応するイベントが、適用された一組の有効性規則に基づいて無効である場合、方法500は、データ処理ハードウェア114によって、データストア150へとインデックス付けを行うことに関し対応するイベントを拒否することを含んでいてもよい。一部の例では、方法500は、データ処理ハードウェア114によって、取り出された構造化データ162bの一部およびページトークン422を送信することを含む。ページトークン422は、取り出された構造化データ162bのリストにおける位置を示し、取り出された構造化データ162bの一部は、リストにおけるページトークン422よりも前の位置からのデータ162bのみを含む。イベントデータ162の複数のイベントのうちの少なくとも1つは、複数の異なるコンピューティングリソース118のうちの対応する1つに係る測定された特性を示していてもよい。任意選択により、方法500は、一組の優先順位規則に基づいて、測定された特性の優先順位を判定することを含む。
【0034】
ソフトウェアアプリケーション(すなわち、ソフトウェアリソース)は、コンピューティングデバイスにタスクを実行させるコンピュータソフトウェアを指す場合がある。いくつかの例では、ソフトウェアアプリケーションは、「アプリケーション」、「アプリ」、または「プログラム」を指す場合がある。アプリケーションの例には、システム診断アプリケーション、システム管理アプリケーション、システムメンテナンスアプリケーション、ワード処理アプリケーション、スプレッドシートアプリケーション、メッセージングアプリケーション、メディアストリーミングアプリケーション、ソーシャルネットワーキングアプリケーション、およびゲームアプリケーションが含まれるが、これらに限定されない。
【0035】
図6は、この文書で説明されているシステムおよび方法を実装するために使用され得る例示的なコンピューティングデバイス600の概略図である。コンピューティングデバイス600は、ラップトップ、デスクトップ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータなどの様々な形態のデジタルコンピュータを表すことを目的としている。ここに示されているコンポーネント、それらの接続と関係、およびそれらの機能は、例示のみを目的としており、本書で説明および/または主張されている発明の実装を制限することを意味するものではない。
【0036】
コンピューティングデバイス600は、プロセッサ610、メモリ620、記憶装置630、メモリ620に接続する高速インターフェース/コントローラ640、高速拡張ポート650、および低速バス670、および記憶装置630に接続する低速インターフェース/コントローラ660を含む。コンポーネント610、620、630、640、650、および660のそれぞれは、様々なバスを使用して相互接続されており、共通のマザーボードに、または必要に応じて他の方法で取り付けることができる。プロセッサ610は、メモリ620または記憶装置630に格納された命令を含む、コンピューティングデバイス600内で実行するための命令を処理することができる。ハードウェア206、146は、高速インターフェース640に結合されたディスプレイ680などの外部入力/出力デバイス上のグラフィカルユーザインターフェース(GUI)のグラフィカル情報を表示する。他の実装形態では、複数のメモリおよび/またはメモリのタイプとともに、必要に応じて、複数のプロセッサおよび/または複数のバスを使用することができる。また、複数のコンピューティングデバイス600を接続することができ、各デバイスは、必要な操作の一部を提供する(例えば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして)。
【0037】
メモリ620は、コンピューティングデバイス600内に非一時的に情報を格納する。メモリ620は、コンピュータ可読媒体、揮発性メモリユニット、または不揮発性メモリユニットであり得る。非一時的メモリ620は、コンピューティングデバイス600によって使用するために一時的または永続的にプログラム(例えば、命令のシーケンス)またはデータ(例えば、プログラム状態情報)を格納するために使用される物理デバイスであり得る。不揮発性メモリの例には、フラッシュメモリおよび読み取り専用メモリ(ROM)/プログラム可能な読み取り専用メモリ(PROM)/消去可能なプログラム可能な読み取り専用メモリ(EPROM)/電子的に消去可能なプログラム可能な読み取り専用メモリ(EEPROM)が含まれるが、これらに限定されない(例えば、通常、ブートプログラムなどのファームウェアに使用される)。揮発性メモリの例には、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、相変化メモリ(PCM)、およびディスクまたはテープが含まれるが、これらに限定されない。
【0038】
記憶装置630は、コンピューティングデバイス600に大容量記憶装置を提供することができる。いくつかの実装形態では、記憶装置630は、コンピュータ可読媒体である。様々な異なる実施形態では、記憶装置630は、フロッピー(登録商標)ディスク装置、ハードディスク装置、光ディスク装置、またはテープ装置、フラッシュメモリまたは他の同様のソリッドステートメモリ装置、またはストレージエリアネットワークまたはその他の構成における装置を含む装置のアレイであり得る。追加の実装では、コンピュータプログラム製品は、情報キャリアに具体的に具体化される。コンピュータプログラム製品は、実行されると、上記のような1つまたは複数の方法を実行する命令を含む。情報キャリアは、メモリ620、記憶装置630、またはプロセッサ610上のメモリなどの、コンピュータまたは機械で読み取り可能な媒体である。
【0039】
高速コントローラ640は、コンピューティングデバイス600の帯域幅集約型の動作を管理し、低速コントローラ660は、帯域幅集約型のより低い動作を管理する。このような役目の割り当ては例示に過ぎない。いくつかの実装形態では、高速コントローラ640は、メモリ620、ディスプレイ680(例えば、グラフィックプロセッサまたはアクセラレータを介して)、および様々な拡張カード(図示せず)を受け入れることができる高速拡張ポート650に結合される。いくつかの実装形態では、低速コントローラ660は、記憶装置630および低速拡張ポート690に結合されている。低速拡張ポート690は、様々な通信ポート(例えば、USB、ブルートゥース(登録商標)、イーサネット(登録商標)、イーサネットワイヤレス)を含んでいてもよく、例えばネットワークアダプタを介して、キーボード、ポインティングデバイス、スキャナなどの1つまたは複数の入力/出力デバイス、またはスイッチまたはルータなどのネットワークデバイスに結合することができる。
【0040】
コンピューティングデバイス600は、図に示されるように、いくつかの異なる形態で実装され得る。例えば、それは、標準サーバ600aとして、またはそのようなサーバ600aのグループ内での複数回のものとして、ラップトップコンピュータ600bとして、またはラックサーバシステム600cの一部として実装され得る。
【0041】
本明細書に記載のシステムおよび技術の様々な実装は、デジタル電子および/または光回路、集積回路、特別に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組み合わせで実現することができる。これらの様々な実装は、記憶システム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスからデータおよび命令を受信し、データおよび命令を送信するために結合された、特別または汎用であり得る少なくとも1つのプログラム可能なプロセッサを含むプログラム可能なシステム上で実行可能および/または解釈可能な1つまたは複数のコンピュータプログラムでの実装を含むことができる。
【0042】
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、またはコードとも呼ばれる)は、プログラム可能なプロセッサのマシン命令を含み、高レベルの手続き型および/またはオブジェクト指向プログラミング言語、および/またはアセンブリ/機械語で実装され得る。本明細書で使用される場合、「機械可読媒体」および「コンピュータ可読媒体」という用語は、機械命令および/またはデータをプログラム可能なプロセッサに提供するために使用される、任意のコンピュータプログラム製品、非一時的なコンピュータ可読媒体、装置および/またはデバイス(例えば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(PLD))を指す場合があり、機械命令を機械可読信号として受信する機械可読媒体が含まれる。「機械可読信号」という用語は、プログラム可能なプロセッサに機械命令および/またはデータを提供するために使用される任意の信号を指す。
【0043】
本明細書に記載のプロセスおよび論理フローは、1つまたは複数のプログラム可能なプロセッサ(データ処理ハードウェアとも称される)によって実行でき、1つまたは複数のコンピュータプログラムを実行して、入力データを操作し、出力を生成することによって機能を実行する。プロセスとロジックフローは、FPGA(フィールドプログラマブルゲートアレイ)やASIC(特定用途向け集積回路)などの特殊用途のロジック回路によっても実行できる。コンピュータプログラムの実行に適したプロセッサには、例として、汎用および特殊目的の両方のマイクロプロセッサ、および任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサが含まれる。一般に、プロセッサは、読み取り専用メモリまたはランダムアクセスメモリ、あるいはその両方から命令とデータを受信する。コンピュータの重要な要素は、命令を実行するためのプロセッサと、命令とデータを格納するための1つまたは複数のメモリデバイスである。一般に、コンピュータはまた、データを格納するための1つまたは複数の大容量記憶装置、例えば、磁気、光磁気ディスク、または光ディスクを含むか、またはデータを受信するか、データを転送するか、またはその両方に動作可能に結合される。ただし、コンピュータにそのようなデバイスが必要としない。コンピュータプログラムの命令およびデータを格納するのに適したコンピュータ可読媒体には、不揮発性メモリ、メディア、およびメモリデバイスの全ての形態が含まれ、例として、半導体メモリデバイス(例えば、EPROM、EEPROM、およびフラッシュメモリデバイス)、磁気ディスク(例えば、内蔵ハードディスクまたはリムーバブルディスク)光磁気ディスク、CDROMおよびDVD-ROMディスクが含まれる。プロセッサとメモリは、特別な目的の論理回路によって補完または組み込むことができる。
【0044】
ユーザとの対話を提供するために、本開示の1つまたは複数の態様は、ユーザに情報を表示するためのCRT(ブラウン管)、LCD(液晶ディスプレイ)モニター、またはタッチスクリーン等のディスプレイデバイス、任意選択でユーザがコンピュータに入力を提供可能とするキーボードとポインティングデバイス(マウスやトラックボールなど)を有するコンピュータ上に実装することができる。他の種類のデバイスを使用して、ユーザとの対話を提供することもできる。例えば、ユーザに提供されるフィードバックは、視覚的フィードバック、聴覚的フィードバック、または触覚的フィードバックなど、任意の形態の感覚的フィードバックであり得る。また、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形式で受信できる。さらに、コンピュータは、ユーザが使用するデバイスとの間でドキュメントを送受信することにより、ユーザと対話できる。例えば、Webブラウザから受信した要求に応答して、ユーザのクライアントデバイス上のWebブラウザにWebページを送信する。
【0045】
いくつかの実装形態が説明されている。しかしながら、本開示の趣旨および範囲から逸脱することなく、様々な変更を行うことができることが理解されるであろう。したがって、他の実装形態は、以下の特許請求の範囲内にある。