(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-11-13
(54)【発明の名称】信頼できない環境におけるセキュア情報送出
(51)【国際特許分類】
G06F 21/62 20130101AFI20241106BHJP
G06F 21/64 20130101ALI20241106BHJP
G06F 21/44 20130101ALI20241106BHJP
H04L 9/32 20060101ALI20241106BHJP
【FI】
G06F21/62
G06F21/64
G06F21/44
H04L9/32 200B
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024529524
(86)(22)【出願日】2022-11-19
(85)【翻訳文提出日】2024-07-16
(86)【国際出願番号】 US2022050510
(87)【国際公開番号】W WO2023091731
(87)【国際公開日】2023-05-25
(32)【優先日】2021-11-19
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】519161872
【氏名又は名称】ライブランプ インコーポレーテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】ダンカン、ジョセフ、シャノン
(72)【発明者】
【氏名】ジマーマン、アダム、リチャード
(72)【発明者】
【氏名】ペンタパティ、ナガ、ヴェンカタ シヴァ プラカシュ
(57)【要約】
信頼できない環境へのデータ、アルゴリズム、又は知的財産のセキュア送出のためのシステムが、クライアント・コンピューティング環境内の組込みトランスコーダを利用する。組込みトランスコーダは、クライアント・アプリケーションと組込みトランスコーダとの間のプロキシ・ジャンクションにより、クライアント・アプリケーションから組込みトランスコーダを分離するためにクラウド・コンピューティング機能性を利用する。プロバイダ・クラウド環境への通信は、クライアント向けアプリケーション・プログラミング・インターフェース(API)をもつ一般認証アプライアンス・システム(GAAS)を通して維持され、GAASはまた、プロキシ・ジャンクションを通して顧客クラウド環境構成要素に通信する。プロバイダ・アプリケーション内の特定の構成要素にアクセスするための許可をクライアント・アプリケーションに提供するために、APIは、公開/非公開鍵によりアクティブにされるトークンを通して、クライアント・アプリケーションを認可する。
【特許請求の範囲】
【請求項1】
信頼できない環境において情報をセキュアに送出するための方法であって、
消費者クラウド環境においてホストされる組込みトランスコーダにおいて、アプライアンス公開鍵とアプライアンス非公開鍵とを生成する方法ステップと、
前記消費者クラウド環境においてホストされるクライアント・アプリケーションにおいて、前記消費者クラウド環境内でホストされるプロキシ機能に顧客証明のセットとINIT要求とを送る方法ステップと、
プロキシ機能において、アプリケーション公開鍵、及びアプライアンス識別子(アプライアンスID)と前記組込みトランスコーダからの前記アプライアンス公開鍵とを含むアプライアンス・トークンを要求する方法ステップと、
前記組込みトランスコーダにおいて、前記プロキシ機能に応答する方法ステップと、
前記プロキシ機能において、一般認証アプライアンス・システム(GAAS)に認可及びINITパケットを要求し、前記アプリケーション公開鍵とアプライアンス・トークンとを前記GAASに送る方法ステップと、
前記GAASにおいて、前記アプリケーション公開鍵を検証し、前記プロキシ機能にINITトークンを返す方法ステップであって、前記INITトークンが、公開セクションと非公開セクションとを含むペイロードを含む、方法ステップと、
前記プロキシ機能において、前記組込みトランスコーダに前記INITトークンを送る方法ステップと、
前記組込みトランスコーダにおいて、復号鍵を使用して前記INITトークン上の署名を検証する方法ステップと、
前記プロキシ機能において、前記組込みトランスコーダにトランスコード要求を送る方法ステップと、
前記組込みトランスコーダにおいて、トランスコード要求を受信し、結果を返す方法ステップと、
前記プロキシ機能において、前記組込みトランスコーダからの応答を検証し、前記クライアント・アプリケーションに前記応答を返す方法ステップと
を含む、方法。
【請求項2】
前記アプライアンス公開鍵が、前記組込みトランスコーダ内のアプリケーション非公開鍵によって署名され、アプリケーション公開鍵とともに前記プロキシ機能に送られ、前記プロキシ機能が、前記GAASに、前記署名されたアプライアンス公開鍵と前記アプリケーション公開鍵とをフォワーディングする、請求項1に記載の方法。
【請求項3】
前記アプリケーション公開鍵を検証する前記ステップは、前記GAASから秘密マネージャをコールし、前記アプリケーション公開鍵が前記秘密マネージャ内に存在するかどうかを検証するステップを含む、請求項2に記載の方法。
【請求項4】
前記GAASが前記GAASのアプリケーション公開鍵により前記アプライアンス・トークンを検証した後に、前記アプライアンス・トークンの中から前記アプライアンス公開鍵を抽出し、次いで、前記アプライアンス公開鍵を前記秘密マネージャに記憶するステップをさらに含む、請求項3に記載の方法。
【請求項5】
前記INITトークンの前記非公開セクションが、非公開鍵により暗号化される、請求項4に記載の方法。
【請求項6】
前記INITトークンが、前記組込みトランスコーダによる使用のための秘密データを含む、請求項5に記載の方法。
【請求項7】
前記プロキシ機能にINITトークンを返す前に、前記GAASにおいてIDAPIから秘密データを取り出すことによって、前記IDAPIにおいて顧客証明の前記セットを検証するステップをさらに含む、請求項6に記載の方法。
【請求項8】
前記アプライアンス公開鍵を使用して前記GAASにおいて前記秘密データを暗号化するステップをさらに含む、請求項7に記載の方法。
【請求項9】
符号化鍵により前記GAASにおいて前記INITトークンに署名し、前記プロキシ機能に前記INITトークンを送るステップと、
前記プロキシ機能において、前記組込みトランスコーダに前記INITトークンを送るステップと、
前記組込みトランスコーダにおいて、復号鍵により前記INITトークンを検証するステップと、
前記INITトークン検証が成功した後に、前記組込みトランスコーダが、前記組込みトランスコーダ自体が要求をサービスすることを可能にするステップと
をさらに含む、請求項8に記載の方法。
【請求項10】
SMARTトークンとトランスコード・データのセットとにより前記クライアント・アプリケーションから前記プロキシ機能をコールするステップと、
前記SMARTトークンを検証し、トランスコード・データの前記セットを受信するために、前記プロキシ機能から前記組込みトランスコーダをコールするステップと、
前記組込みトランスコーダにおいて前記トランスコード・データを処理し、前記プロキシ機能にトランスコード・データ結果のセットを返すステップと、
前記プロキシ機能から前記クライアント・アプリケーションにトランスコード・データ結果の前記セットを送るステップと
をさらに含む、請求項9に記載の方法。
【請求項11】
前記クライアント・アプリケーションから前記プロキシ機能にリフレッシュ要求を送るステップと、
前記プロキシ機能から前記GAASに前記リフレッシュ要求を受け渡すステップと、
前記GAASから前記IDAPIに新しいIDAPIトークンと秘密データとについての要求を送るステップと、
前記IDAPIからGAASに前記IDAPIトークンと秘密データとを返すステップと、
GAAS内の前記IDAPIトークンと秘密データとを使用して新しいSMARTトークンを作成するステップと、
前記GAASから前記プロキシ機能に前記新しいSMARTトークンを送るステップと、
前記プロキシ機能から前記クライアント・アプリケーションに前記新しいSMARTトークンを送るステップと
をさらに含む、請求項10に記載の方法。
【請求項12】
顧客のクラウド環境内でメトリクス・データ要求を生成し、前記プロキシ機能に前記メトリクス・データ要求を送るステップと、
前記プロキシ機能から前記組込みトランスコーダに前記メトリクス・データ要求を送るステップと、
前記組込みトランスコーダにおいてメトリクスのセットを生成するステップと、
前記組込みトランスコーダにおいてメトリクスの前記セットをメトリック・トークン中に埋め込むステップと、
前記組込みトランスコーダにおいて前記アプライアンス非公開鍵により前記メトリクス・トークンを符号化し、前記プロキシ機能に前記メトリクス・トークンを送るステップと、
前記プロキシ機能から前記GAASに前記メトリクス・トークンを送り、メトリクスの前記セットを復元するために前記GAASのアプライアンス公開鍵により前記GAASにおいて前記メトリクス・トークンを復号するステップと、
外部ロギング・サービスにメトリクスの前記セットを書き込むステップと
をさらに含む、請求項11に記載の方法。
【請求項13】
信頼できない環境において情報を送出することをセキュアにするためのシステムであって、
消費者クラウド・コンピューティング環境と、
ネットワークにわたって前記消費者クラウド・コンピューティング環境に接続されたプロバイダ・クラウド・コンピューティング環境と、
前記消費者クラウド・コンピューティング環境においてホストされるクライアント・アプリケーションであって、前記クライアント・アプリケーションが、クライアント・データのセットを処理するように構成された、クライアント・アプリケーションと、
前記プロバイダ・クラウド・コンピューティング環境においてホストされる一般認証アプライアンス・システム(GAAS)であって、前記GAASが、前記消費者クラウド・コンピューティング環境における1つ又は複数のプロバイダ・アプリケーションへのアクセスを制御するように構成され、さらに、前記GAASが、INITヘッダとINITペイロードとINIT署名とを含むINITトークンを生成するように構成され、前記INITペイロードが公開セクションと非公開セクションとを含む、一般認証アプライアンス・システム(GAAS)と、
前記消費者クラウド・コンピューティング環境における組込みトランスコーダであって、前記組込みトランスコーダが、前記消費者クラウド・コンピューティング環境内のネットワーク分離環境内に配置され、前記クライアント・アプリケーションが制限付きアクセスを有する、組込みトランスコーダと、
前記消費者クラウド・コンピューティング環境中に位置するプロキシ機能であって、前記プロキシ機能が、前記クライアント・アプリケーションと前記GAASとの間で通信を受け渡すように構成された、プロキシ機能と
を備える、システム。
【請求項14】
前記GAASが、消費者アプリケーションと通信し、前記消費者クラウド・コンピューティング環境においてホストされるプロバイダ・アプリケーションへのアクセスを提供するように構成された、アプリケーション・プログラミング・インターフェース(API)を備える、請求項13に記載のシステム。
【請求項15】
前記組込みトランスコーダが、プロバイダ・ソース・コード、プロバイダ・アルゴリズム、又はプロバイダ知的財産、或いはそれらの何らかの組合せを格納するコンテナを備え、前記ネットワーク分離環境が、前記クライアント・アプリケーションから前記組込みトランスコーダへのアクセスを制限する、請求項14に記載のシステム。
【請求項16】
プロキシ・アプリケーションが、認証トークンを受信するためにAPI要求を前記GAASにサブミットするようにさらに構成された、請求項15に記載のシステム。
【請求項17】
前記プロキシ・アプリケーションが、前記組込みトランスコーダに前記認証トークンとクライアント・データの前記セットとを送るようにさらに構成され、応答して、前記組込みトランスコーダが、クライアント・データの前記セットを処理し、結果のセットをレンダリングするようにさらに構成された、請求項16に記載のシステム。
【請求項18】
前記プロバイダ・クラウド・コンピューティング環境においてホストされ、前記GAASと通信しているIDAPIをさらに備え、前記IDAPIが、前記GAASからのデータを前記システムのための真実のソースとして検証するように構成された、請求項17に記載のシステム。
【請求項19】
前記組込みトランスコーダが、復号鍵と、アプリケーション公開鍵と、アプリケーション非公開鍵とを格納する、請求項18に記載のシステム。
【請求項20】
秘密マネージャをさらに備え、前記GAASが、前記プロキシ機能によって生成されたINIT要求に応答して、前記秘密マネージャ内の前記アプリケーション公開鍵の存在を検証するように構成された、請求項19に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、2021年11月19日に出願された米国仮特許出願第63/281,420号の利益を主張する。上記の出願は、その全体が参照により本明細書に組み込まれる。
【背景技術】
【0002】
(知的財産、データ、及び/又はアルゴリズムを含む)様々な種類の情報がコンピュータ・ネットワークにわたって、セキュアでない又はいくぶんセキュアである環境に送出される必要があり得ることは、よくあることである。この状況の一実例は、消費者情報が、消費者によってアクセスされるアプリケーションからネットワークにわたってアプリケーション・プロバイダに送られることである。情報のこの送出は、バッド・アクター(bad actor)によるデータ公開又は情報の悪用の潜在的リスクをもたらす。そのリスクは、送出されている情報が、プロバイダの秘密データ又は顧客の個人識別可能情報(PII:personally identifiable information)又は他の形式の機密扱いの情報のいずれかを含んでいるとき、及びアプリケーション・プロバイダが、その情報を守るための標準的なベスト・プラクティスに従わないとき、より大きくなる。
【0003】
関係する問題は、消費者がアプリケーションへの無限及び/又は無制限アクセスを有することを可能にするのではなく、アプリケーションを使用する消費者又は他の人が、アプリケーション内の特定の構成要素/サービスにアクセスすることを適切に許可される必要があり得ることである。これは、アプリケーション・プロバイダのデータ、アルゴリズム、及び/又は知的財産を保護するために必要であり得る。
【0004】
別の関係する問題は、アプリケーション・プロバイダがアプリケーションの消費者又は他のユーザの使用からのメトリクスを必要とし得ることである。これらのメトリクスは、情報がセキュアでないネットワーク及び/又は環境を通過するとことにもかかわらず、安全である様式で送出される必要がある。
【発明の概要】
【0005】
本発明は、アプリケーション・プロバイダが、消費者が消費者のデータを共有する必要なしに、アプリケーション・プロバイダのアプリケーションを直接消費者の環境に展開し、同時に、消費者がプロバイダのアプリケーションを使用することを可能にし得る、システム及び方法を対象とする。データが消費者の環境を出ないので、データがバッド・アクターによって公開又は悪用されることになるリスクがない。
【0006】
プロバイダ・アプリケーション内の特定の構成要素又はサービスにアクセスするための許可を消費者に提供しながら、同時に、プロバイダ・データ、アルゴリズム、及び知的財産を守るするためにアプリケーションの他の部分を保護するために、プロバイダの環境において認証(authentication)アプリケーション・プログラミング・インターフェース(API:application programming interface)が作成される。APIは、プロバイダの選好及び消費者の必要に従って、プロバイダのアプリケーションの特定の構成要素及び/又はサービスへのアクセスを可能にするためにトークンを通して消費者を認可する(authorize)。
【0007】
顧客使用に関するメトリクスをプロバイダに提供するために、アプリケーションは、消費者のネットワーク分離環境内でホストされるアプリケーションからプロバイダの環境にメトリクスを移しながら、同時に、トランスポートされているメトリクス・データの機密性及び完全性を維持する。
【0008】
本発明のいくつかの実施例では、アプリケーションの顧客、クライアント、加入者、又は他のユーザは、Amazon AWSなど、それらのクラウド環境にアプリケーション製品をインストールする。これは、一般に、それらのクラウド環境において、必要なインフラストラクチャをセット・アップすることによって行われる。セットアップ及びインストールは、AWS Cloudformationなどの自動インフラストラクチャ・セットアップ・サービスを通して行われ得る。プロバイダは、顧客がそれらのCloudformationサービスにおいて使用することになる構成テンプレートを提供し得る。構成テンプレートは、いくつかの実施例では、他のリソースとともに3つの主要なサービスを作成し得る。第1のものはAPIゲートウェイであり、これは、2つの主要なエンドポイント、INITとREQUESTとを有する顧客向けAPIである。第2のものはプロキシ機能であり、これは、トークンを送出し、顧客のインストールしたアプリケーションとプロバイダとの間の媒体として働く、AWS Lambda機能であり得る。第3のものは組込みトランスコーダであり、これは、いくつかの実装形態では、ネットワーク分離を通してAWS Sagemakerにおいてホストされ得る、プロバイダからのプロプライエタリ・アプリケーションである。AWS Sagemakerは、開発者がクラウドにおいて機械学習モデル及び他の設備を作成、トレーニング、及び展開することを可能にする、クラウドベース・セキュア・プラットフォームであり、他のプロバイダの製品が、代替実施例において使用され得る。
【0009】
いくつかの実施例では、本発明は、3つの重要な構成要素によって特徴づけられ得る。第1の構成要素は、一般認証アプライアンス・システム(GAAS:generic authentication appliance system)である。このシステムは、クライアント・アプリケーションに、顧客のデータを処理するプロバイダのアプリケーションにアクセスすることを認可する、認証APIを含む。それはまた、これらのクライアント・アプリケーションに特定の許可を提供し、それにより、顧客が、プロバイダが顧客によってアクセスされることを望む構成要素/サービスのみにアクセスすることを可能にする。第2の構成要素は、機密コンピュート環境である。AWSのような大きいのクラウド・プロバイダは、プロバイダがプロプライエタリ・アプリケーションを展開することができる(AWS Sagemakerなどの)ネットワーク分離環境を提供する。その環境がネットワーク分離されるので、誰も、この環境においてホストされるアプリケーションのデータ又はソース・コードにアクセスし、それをダウンロードすることができないが、それを、アプリケーション・プロバイダによって承認及び制御される様式で使用することができる。プロバイダは、次いで、それのプロプライエタリ・ソース・コード、アルゴリズム、及び/又は知的財産をコンテナとしてパッケージングし、そのコンテナを機密コンピュート環境に展開し得る。第3の構成要素は、プロキシ・アプリケーションである。プロキシ・アプリケーションは、顧客のネットワーク分離環境におけるプロバイダのホストされるアプリケーションと、プロバイダの環境においてホストされるGAASとの間の媒体として働く。プロキシ・アプリケーションは、2つの主要な目的を有する。1つの目的は、プロバイダのGAAS APIに証明とともにAPI要求をサブミットし、認証トークンを受信することである。別の目的は、クライアントの入力データとともにその認証トークンを使用し、(ネットワーク分離環境においてホストされる)プロバイダのアプリケーションをコールすることであり、プロバイダのアプリケーションは、クライアントの入力データを処理し、結果をレンダリングする。
【0010】
本発明のこれらの及び他の特徴、目的並びに利点は、以下で説明されるように、図面とともに、好ましい実施例の以下の詳細な説明、及び添付の特許請求の範囲を考慮するとより良く理解されるようになるであろう。
【図面の簡単な説明】
【0011】
【
図1】本発明の好ましい実施例による、全体的システム・アーキテクチャ図である。
【
図2】本発明の好ましい実施例による、初期化プロシージャのためのスイム・レーン図である。
【
図3】本発明の好ましい実施例による、要求プロシージャのためのスイム・レーン図である。
【
図4】本発明の好ましい実施例による、要求(リフレッシュ)プロシージャのためのスイム・レーン図である。
【
図5】本発明の好ましい実施例による、メトリクス取出しプロシージャのためのスイム・レーン図である。
【
図6】本発明の好ましい実施例による、一般認証アプライアンス・システム(GAAS)の動作のためのスイム・レーン図である。
【発明を実施するための形態】
【0012】
本発明がさらに詳細に説明される前に、本発明の範囲は特許請求の範囲によってのみ限定されるので、本発明が、説明される特定の実施例に限定されないこと、並びに特定の実施例を説明する際に使用される用語が、それらの特定の実施例を説明するためのものにすぎず、限定するものではないことを理解されたい。
【0013】
次に
図1を参照しながら、本発明の一実施例のための環境が次に説明され得る。顧客/クライアント・アプリケーション10は、顧客クラウド環境11中に常駐する。このアプリケーションは、顧客クラウド環境11中に格納される顧客データの処理など、様々なコンピューティング目的のために使用され得、プロバイダによって送出される。一般認証アプライアンス・システム(GAAS)12は、様々な特徴にアクセスするためのクライアント・アプリケーション10の認可を可能にするAPIゲートウェイを含む。それは、クライアント・アプリケーション10に対する特定の許可を可能にし、それにより、顧客が、プロバイダによりその顧客による使用のために承認される構成要素及びサービスのみにアクセスすることを可能にする。プロキシ機能/アプリケーション14は、顧客クラウド環境11におけるクライアント・アプリケーション10とプロバイダ・クラウド環境13におけるGAAS12との間の媒体として働く。プロキシ機能14は、証明とともにAPI要求をGAAS12にサブミットし、
図1に示されているネットワーク経路に沿ってGAAS12から認証トークンを受信し得る。プロキシ機能14は、次いで、クライアントの入力データとともに認証トークンを使用して、(顧客クラウド環境11におけるネットワーク分離環境においてホストされる)組込みトランスコーダ16をコールして、そのクライアントのデータを処理し、結果をレンダリングし得る。コンテナ19は、非公開プロバイダ・データ、アルゴリズム及び/又は知的財産を顧客クラウド環境11内にセキュアに格納し、それにより、クライアント・アプリケーション10による無制限アクセスを防ぐ。IDAPI18は、以下で説明されるように、システムにおけるソース・オブ・トゥルース(source of truth)として機能する。
【0014】
次に
図6を参照しながら、GAAS12(一般認証アプライアンス・システム)の役割、及び鍵がシステムのためにどのように生成されるかが、次に説明され得る。組込みトランスコーダ16は、3つの異なるタイプの鍵を伴ってパッケージングされ、3つの異なるタイプの鍵は、復号鍵、すなわち、opensslを使用して生成される公開リベスト・シャミア・エーデルマン(RSA:Rivest-Shamir-Adleman)鍵、application_pub_key、すなわち、opensslを使用して生成される公開RSA鍵、及びapplication_pem_key、すなわち、application_pub_keyに対応する非公開RSA鍵である。同時に、SMAuth(すなわち、AWS環境におけるGAAS12)は、それの秘密マネージャ30内の(組込みトランスコーダ16内部にパッケージングされた)同じapplication_pub_keyと、組込みトランスコーダ16内部にパッケージングされた復号鍵に対応する公開RSA鍵であるencode_keyとを保存するために更新される。
【0015】
組込みトランスコーダ16が、ステップ6Aにおいて、消費者のクラウド環境内にインストールされ、稼働しているとき、組込みトランスコーダ16は、ステップ6Bにおいて、開始時にappliance_pub_key(公開RSA鍵)及びappliance_pem_key(非公開RSA鍵)と呼ばれる鍵ペアを生成し、それらの鍵をメモリに記憶する。クライアント・アプリケーション10が、ステップ6Cにおいて、SM Proxy14にINIT要求を送るとき、それは3つの連続アクションを実施する。最初に、それは、ステップ6Dにおいて、init_keysとしてのrpc値とともに要求を組込みトランスコーダ16に送る。この要求を受信すると、組込みトランスコーダ16はステップ6Eにおいて、アプライアンス応答と呼ばれるJSON応答を作成し、その応答は2つの鍵、すなわち、アプライアンス・トークンと呼ばれるapplication_pem_keyにより署名されたappliance_pub_keyと、application_pub_keyとを含んでいる。この応答がSM Proxy14によって受信されると、第2のアクションは、ステップ6FにおいてGAAS12のinitエンドポイントをコールすることによって始まる。GAAS12は、検証についての要求を受信し、INITトークンを返送する。それは、次いで、要求内のapplication_pub_keyを読み取り、application_pub_keyがそれの秘密マネージャ30中に存在するかどうかを検証する。application_pub_keyの存在が検証されると、GAASは続いて、ステップ6Gにおいて、それのapplication_public_keyによりアプライアンス・トークンの署名を検証する。署名が検証されると、それは、次いで、ステップ6Hにおいて、それの秘密マネージャ30内にappliance_pub_keyを記憶する。以下、GAASは、秘密データを暗号化するための暗号化鍵とも呼ばれる公開鍵としてappliance_pub_keyを使用し、さらに、データを符号化/署名するための符号化鍵とも呼ばれる事前構成された非公開鍵を使用する。組込みトランスコーダ16では、対応する鍵は、秘密データを解読するための解読鍵とも呼ばれる非公開鍵として使用されるappliance_pem_keyと、符号化されたデータの署名を復号又は検証するためのdecode_keyとも呼ばれる事前構成された公開鍵とである。INITフローの第3のアクションが以下で説明される。
【0016】
顧客クラウド環境11をセット・アップするために、顧客は、AWS Cloudformationなど、自動インフラストラクチャ・セットアップ・サービスを使用し得る。プロバイダは、以下でさらに説明されるように、プロキシ機能14構成要素と、組込みトランスコーダ16構成要素とを構築するために構成テンプレートを使用し得る。
【0017】
次に、クライアント・アプリケーション10による、データ、アルゴリズム、又は知的財産の使用を可能にするためのプロセスが続けられ、
図2のスイム・レーン図を参照しながら示されるINITフローから始まり得る。組込みトランスコーダ16は、GAAS12内で符号化鍵と呼ばれる対応する非公開鍵を有する復号鍵と呼ばれる公開鍵を含んでいる。組込みトランスコーダ16はまた、GAAS12内で暗号化鍵と呼ばれる対応する公開鍵を有する解読鍵と呼ばれる非公開鍵を含んでいる。使用のために組込みトランスコーダ16のアプリケーションを始動するために、顧客アプリケーション10は、ステップ2Aにおいて、顧客証明を伴ってプロキシ機能14のAPIゲートウェイのINITエンドポイントをコールする。APIゲートウェイはプロキシ機能14を呼び出し、プロキシ機能14は、ステップ2BにおいてINITトークンを生成するために、プロバイダ・クラウド環境13内のGAAS12をコールする。INITトークンは、組込みトランスコーダ16が動作するために使用されることになる秘密鍵データを有する。このINITトークンを生成するために、GAAS12は、最初に、ステップ2Cにおいて、バックエンド・システムIDAPI18に対して顧客アプリケーション10の証明を検証する。GAAS12は、このシステムがプロバイダのための「ソース・オブ・トゥルース」であるとき、ステップ2Dにおいて、IDAPI18から秘密鍵データを取り出す。GAAS12は、次いで、続いて、ステップ2Eにおいて、IDAPI18からの秘密鍵データを使用してINITトークンと呼ばれるJSONウェブ・トークンを作成する。ステップ2Fにおいて、INITトークンはプロキシ14に送られる。
【0018】
INITトークン内の秘密鍵データは、機密扱いにされている必要があり、したがって、GAAS12は、ランダム・セッション鍵を、RSA公開鍵によりそれを暗号化することによって内部で生成し、次いで、AES(高度暗号化規格(Advanced Encryption Standard))仕様を使用して、暗号化されたセッション鍵により秘密データを暗号化し、暗号文を生成する。GAAS12はまた、非公開符号化鍵によりINITトークンに署名することによって、データの完全性を保証する。ステップ2Gにおいて、INITトークンは組込みトランスコーダ16に送られる。このINITトークンが組込みトランスコーダ16によって受信されると、それは、ソースを検証するためにそれの公開復号鍵によりトークンを復号する。ソースが検証されると、それは、次いで、それのRSA非公開解読鍵により、暗号化されたセッション鍵を解読し、次いで、解読されたセッション鍵を使用して、AES(高度暗号化規格)仕様を使用してGAAS12によって生成された暗号文を解読し、それが顧客クラウド環境11内でホストされる機械内にこのデータを記憶する。アプリケーションをホストする機械が、ネットワーク分離されるので、秘密鍵データが漏洩される可能性はない。
【0019】
組込みトランスコーダ16のアプリケーションが、秘密鍵データを保存するプロセスを完了した後に、それは、続いて、ステップ2Hにおいて、プロキシ機能14に確認応答を送る。プロキシ機能14は、次いで、ステップ2Iにおいて、顧客アプリケーション10に成功応答を送出する。このプロセス全体にわたって、検証のいずれかが、GAAS12又は組込みトランスコーダ16のうちのいずれかにおける無効な/不正確な情報のいずれかのために失敗した場合、顧客アプリケーション10は、検証が失敗したことを述べるエラー・メッセージを受信する。初期化が完了すると、顧客アプリケーション10は、同じくステップ2Iにおいて、SMARTトークンと呼ばれる別のJSONウェブ・トークンとともに成功確認応答を含んでいる応答を受信する。初期化は、24時間の間有効であり、クライアントは、その後に再初期化する必要があり、なぜなら、組込みトランスコーダ16が、24時間の終わりに秘密データを無効にするからである。
【0020】
REQUESTフローのための処理が、
図3のスイム・レーン図を参照しながら説明され得、これは、一実施例において、改善されたセキュリティのために15分ごとに繰り返されるREQUESTプロセスを示す。SMARTトークンは、組込みトランスコーダ16が顧客入力データを処理するために必要とする顧客アプリケーション10のアクセスに固有の詳細からなる。顧客アプリケーション10は、ステップ3Aにおいて、入力パラメータとして、それの入力データとSMARTトークンとを伴ってプロキシ機能14をコールする。プロキシ機能は、次いで、ステップ3Bにおいてこの要求を受け付けるために、顧客クラウド環境11内部の保護された環境内の組込みトランスコーダ16を呼び出す。次に、組込みトランスコーダ16は、続いて、ステップ3Cにおいて、SMARTトークンを検証するために、それの鍵による検証を実施する。検証されると、それは、入力データを処理し、ステップ3Dにおいて、プロキシ機能14に結果を返し、プロキシ機能14は、ステップ3Eにおいて、それを顧客アプリケーション10に返す。
【0021】
上記のREQUESTプロセスにおいて、検証のうちのいずれかが、組込みトランスコーダ16における無効な/不正確な情報のために失敗した場合、顧客アプリケーション10は、検証が失敗したことを述べるエラー・メッセージを受信することになる。SMARTトークンが、15分など、限られた時間期間の間のみ有効であるので、顧客アプリケーション10は、同じプロキシ機能14を使用してトークンをリフレッシュし、プロキシ機能14はGAAS12に認証要求を送り、GAAS12は、各リフレッシュ要求についての検証の後にフレッシュなトークンをレンダリングすることになる。
【0022】
リフレッシュ・プロセスが、SMARTトークンの使用中に、15分ごとになど、定期的に実施され得る。このリフレッシュ・プロセスは、
図4のスイム・レーン図を参照しながら説明され得る。リフレッシュが必要とされるとき、クライアント・アプリケーション10は、ステップ4Aにおいて、プロキシ機能14に要求を送る。ステップ4Bにおいて、プロキシ機能14は、(AWS環境実例では、SM Authとも呼ばれる)GAAS12にリフレッシュ要求を受け渡す。次に、ステップ4Cにおいて、GAAS12は、システム内のソース・オブ・トゥルースとして、IDAPI18に新しいトークンについての要求を送る。ステップ4Dにおいて、IDAPI18は、返信トークン(又はトークンが返され得ない場合はエラー)でGAAS12に応答する。GAAS12は、次いで、ステップ4Eにおいて、新しい(リフレッシュされた)SMARTトークンをプロキシ機能14に返し、プロキシ機能14は、ステップ4Fにおいて、クライアント・アプリケーション10へと新しいSMARTトークンを先へ送る。
【0023】
使用メトリクス・データは、
図5のスイム・レーン図を参照しながら示されるように生成及び記憶され得る。(AWSスケジューラなどの)スケジューラ20が、ステップ5Aにおいて、プロキシ機能14へのコールによりプロセスを始動し得る。ステップ5Bにおいて、プロキシ機能14から組込みトランスコーダ16への要求が行われる。組込みトランスコーダ16内で生成されるメトリクスは、組込みトランスコーダ16の公開鍵により暗号化され、それの非公開鍵により署名される。組込みトランスコーダ16は、次いで、このデータのすべてを、メトリクス・トークンと呼ばれるJSONウェブ・トークンにパッケージングし、ステップ5Cにおいて、周期的にプロキシ機能14によってポーリングされるときにそれを返す。プロキシ機能14は、次いで、ステップ5Dにおいて、GAAS12にメトリクス・トークンをトランスポートし、GAAS12は、対応する公開鍵を使用してそれを復号し、次いで、対応する非公開鍵を使用してそれを解読して、使用メトリクス・データを読み取る。このメトリクス・データは、Datadog22、外部ロギング・サービスに、書き込まれる。Datadog22は、ステップ5Eにおいて、確認応答を返し得、確認応答は、次いで、ステップ5Fにおいて、GAAS12からプロキシ機能14に受け渡される。
【0024】
次に、(AWSクラウド環境のコンテキストにおいてSageMaker又はSMプロキシ機能と呼ばれることもある)プロキシ機能14が、より詳細に説明され得る。プロキシ機能14は、2つの機能、すなわち、request_authとinit_authとを有する。request_auth(要求)機能は、基本的に、クライアント・サービスから、一般に以下のパラメータを含んでいる入力要求を受信する。
smart_token-認証のために使用される
transcode_data-トランスコード・データ入力を含んでいる
rpc-それがinitであるのか、要求であるのか、リフレッシュであるのかを示す。
【0025】
プロキシ機能14は、実際の動作を実施する前に、以下の検証を実施する。第1に、それは、smart_tokenが入力要求本文中に存在するかどうかを検証する。第2に、それは、transcode_dataが入力要求本文中に存在するかどうかを検証する。第3には、それは、rpcが入力要求本文中に存在し、その値が要求又はリフレッシュのいずれかであるかどうかを検証する。これらの検証のうちのいずれかが失敗した場合、それは、クライアントに適切なエラー応答を送る。
【0026】
rpcがリフレッシュに設定されたときのrequest_auth実行ステップは、以下の通りである。第1に、request_authは、クライアントidとクライアント秘密とを読み取るために入力要求本文を検証する。それは、次いで、(AWSクラウド環境においてSM Auth要求サービスとしても知られる)GAAS12をコールし、新しいsmart_tokenを受信するためにそれらの証明を受け渡す。次に、それは、署名と満了とについてトークンを検証する。無効又は満了の場合、それは、クライアントに適切なエラー応答を返す。それは、次いで、クライアント・サービスにsmart_tokenを返送する。
【0027】
この場合のrequest_authについての例示的なcurl要求は、以下の通りであり得る。
【数1】
【0028】
rpcが要求に設定されたときのrequest_auth実行ステップは、以下の通りである。第1に、request_authは、smart_tokenとtranscode_dataとについて入力要求本文を読み取る。それは、次いで、署名と満了とについてトークンを検証する。無効又は満了の場合、それは、クライアントに適切なエラー応答を返す。トークンが有効である場合、それは、トランスコード・データとスマート・トークンとを伴ってSageMakerエンドポイントを呼び出す。それは、次いで、SageMakerから、トランスコーディングされたリンクを受信し、クライアントに応答を返送する。
【0029】
この場合のrequest_authについての例示的なcurl要求は、以下の通りであり得る。
【数2】
【0030】
init_auth機能は、基本的にGAAS12からのドメイン鍵をフェッチし、24時間の間保持されるように、それらの鍵を組込みトランスコーダ16に受け渡す。それは、クライアント・サービスから、一般に以下のパラメータを含んでいる入力要求を受信する。
client_id-認証のために使用される。
client_secret-トランスコード・データ入力を含んでいる。
rpc-それがinitであるのか、要求であるのか、リフレッシュであるのかを示すもの。
【0031】
init_auth機能は、実際の動作を実施する前に、以下の検証を実施する。第1に、それは、client_idが入力要求本文中に存在するかどうかを検証する。次いで、それは、client_secretが入力要求本文中に存在するかどうかを検証する。次に、それは、rpcが入力要求本文中に存在し、その値がinitであるかどうかを検証する。これらの検証のうちのいずれかが失敗した場合、それは、クライアントに適切なエラー応答を送る。
【0032】
rpcがinitに設定されたときのinit_auth実行ステップは、以下の通りである。第1に、それは、クライアント証明を伴ってGAAS12をコールする。次いで、それは、署名と満了とについてトークンを検証する。無効又は満了の場合、それは、クライアントに適切なエラー応答を返す。トークンが有効である場合、それは、SageMakerエンドポイントを呼び出し、INITトークンを受け渡して、トランスコーディング初期化のステータスを示す応答を受信する。次いで、それは、INITトークンの中からスマート・トークンを抽出し、次いで、クライアントにsmart_tokenと初期化応答ステータスとを返送する。
【0033】
この場合のinit_authについての例示的なcurl要求は、以下の通りであり得る。
【数3】
【0034】
次に、(AWS環境においてSM Authとも呼ばれる)GAAS12が、より詳細に説明され得る。
【0035】
GAAS12は、3つの機能、すなわち、展開される、auth_tokenとinit_tokenとpush_metricsとを有する。auth_token機能は、顧客クラウド環境11においてプロキシ機能14によってコールされたとき、以下の動作を実施する。第1に、それは、クライアント証明とアプライアンス応答(たとえば、アプライアンス・トークン及びアプリケーションpub鍵)とについてのプロキシ機能14auth要求からの入力を読み取る。それは、次いで、それらの証明を伴ってIDAPI18トークン・エンドポイントをコールし、IDAPI認証トークンをフェッチする。次に、それは、IDAPI認証トークンを使用して、/domainsエンドポイントをコールし、トランスコーディングのために必要とされるドメイン鍵をフェッチする。それは、次いで、ドメインについてのトランスコーディング方向を示すscopesオブジェクトを作成する。最終的に、それは、満了タイム・スタンプとともにIDAPIトークンとSCOPESとをラッピングし、そのデータを符号化して、SMART TOKEN(別名sagemakerRequestToken)と呼ばれるJWTトークンを生成する。
【0036】
この場合のauth_tokenについての例示的なcurl要求は、以下の通りであり得る。
【数4】
【0037】
例示的なスマート・トークン応答は、以下の通りであり得る。
【数5】
【0038】
復号される例示的なスマート・トークン応答は、以下の通りであり得る。
【数6】
【0039】
init_token機能は、顧客クラウド環境11においてプロキシ機能14によってコールされたとき、以下の動作を実施する。それは、auth機能と比較して2つのより多くのステップを実行する。それは、クライアント証明についてのプロキシ機能14init要求からの入力を読み取る。それは、次いで、それらの証明を伴ってIDAPI18/トークン・エンドポイントをコールし、IDAPI認証トークンをフェッチする。次に、それは、IDAPI18認証トークンを使用して、/domainsエンドポイントをコールし、トランスコーディングのために必要とされるドメイン鍵をフェッチする。次いで、それは、ドメインについてのトランスコーディング方向を示すscopesオブジェクトを作成する。次に、それは、満了タイム・スタンプとともにIDAPI18トークンとSCOPESとをラッピングし、そのデータを符号化して、SMART TOKENと呼ばれるJWTトークンを生成する。さらに、それは、次いで、ドメイン鍵を暗号化し、プロキシ機能14を介して組込みトランスコーダ16にそれらをセキュアに転送するために暗号文とセッション鍵と初期化ベクトル(IV:initialization vector)とを生成する。最終的に、それは、SMART TOKEN(sagemakerRequestToken)、CIPHER TEXT(encryptedKeyPacket)、SESSION KEY(encSessionkey)、IVをラッピングし、そのデータを符号化して、INIT TOKENと呼ばれるJWTトークンを生成する。
【0040】
この場合のinit_tokenについての例示的なcurl要求は、以下の通りであり得る。
【数7】
【0041】
INITトークンは、以下のフォーマットを有する。
「<header>.<payload>.<signature>」
ここで、HEADERは、JWTのために使用されるタイプ及びアルゴリズムを指定し、PAYLOADはトークンのコンテンツであり、SIGNATUREは標準的なJWT署名である。この事例では、それは、jwtをタイプとして使用しており、RS256を署名タイプとして使用している。
【0042】
INITトークンは、PAYLOADセクション内のPUBLIC空間及びPRIVATE空間の極めて重要な概念を含む。
【0043】
PRIVATEセクション内のデータは、セッション鍵の解読、したがって、PRIVATEセクション(encryptedKeyPacket)の解読を始めるための正しい非公開鍵を有することによって、アクセスされるにすぎないことがある。信頼できるシステム又は個人のみが、この非公開鍵を有することになり、非公開鍵はデータの所有権を証明する。
【0044】
PRIVATE空間は、encryptedKeyPacket(CIPHERTEXT)内に含まれる任意のデータであり、限定はしないが、機密データ、知的財産、アプリケーション・データ、アプリケーション論理、秘密、鍵、認証Claims、Scopes、又は、保護されなければならない、バイナリ符号化され得る任意の他のデータを含んでいることがある。PRIVATE空間はまた、IVとencSessionKeyとを含む。
【0045】
PUBLIC空間内のデータは、トークンを消費又は閲覧する誰か又は何かによって公開であり、閲覧可能であることになる。データは、それに対する権限を有し、なぜなら、それは、認証エンドポイントによってトークンに追加され、authエンドポイントの非公開鍵により署名されているからである。その権限は、標準的なJWTプラクティスを使用して確かめられ得る。このPUBLIC空間のデータは、修正され得ず、したがって、署名検証が確認され得る場合、真であると信頼され得る。当事者は、このペイロードの公開空間においてデータにアクセスし、それを使用することができる。encryptedKeyPacket、encSessionKey、又はiv中にない項目は、公開空間の一部と見なされる。本文書の他の部分では、SMARTトークン(sagemakerRequestToken)は、公開空間の一部であるが、それに限定されない。PUBLIC空間は、PRIVATE空間中にないペイロード中に含まれる任意のタイプのデータにとって利用可能である。
【0046】
例示的なINITトークン応答は、以下の通りであり得る。
【数8】
【0047】
復号される例示的なINITトークン応答(PAYLOAD)は、以下の通りであり得る。
【数9】
【0048】
push_metrics機能は、プロキシ機能14によってコールされたとき、以下の動作を実施する。第1に、それは、プロキシ機能14プッシュ・メトリクス要求からの入力を読み取る。それは、次いで、アプライアンスpub鍵を使用してメトリクス・トークンを復号する。次いで、それは、datadogに組込みトランスコーダ16メトリクスを送る。
【0049】
この場合のpush_metricsについての例示的なcurl要求は、以下の通りであり得る。
【数10】
【0050】
例示的なメトリクス・トークンは、以下の通りであり得る。
【数11】
【0051】
復号される例示的なメトリクス・トークンは、以下の通りであり得る。
【数12】
【0052】
本明細書で説明されるシステム及び方法は、様々な実施例では、ハードウェアとソフトウェアとの任意の組合せによって実装され得る。たとえば、一実施例では、システム及び方法は、コンピュータ・システム又はコンピュータ・システムの集合によって実装され得、それらの各々は、プロセッサに結合されたコンピュータ可読記憶媒体に記憶されたプログラム命令を実行する1つ又は複数のプロセッサを含む。プログラム命令は、本明細書で説明される機能性を実装し得る。図において示されているような、本明細書で説明される様々なシステム及び表示は、例示的な実装形態を表す。任意の方法の順序が変更され得、様々な要素が追加、修正、又は省略され得る。
【0053】
本明細書で説明されるコンピューティング・システム又はコンピューティング・デバイスは、本発明の様々な実装形態の部分を形成するものとして、クラウド・コンピューティング・システム又は非クラウド・コンピューティング・システムのハードウェア部分を実装し得る。コンピュータ・システムは、限定はしないが、コモディティ・サーバ、パーソナル・コンピュータ・システム、デスクトップ・コンピュータ、ラップトップ又はノートブック・コンピュータ、メインフレーム・コンピュータ・システム、ハンドヘルド・コンピュータ、ワークステーション、ネットワーク・コンピュータ、消費者デバイス、アプリケーション・サーバ、ストレージ・デバイス、電話、携帯電話、或いは概して任意のタイプのコンピューティング・ノード、コンピュート・ノード、コンピュート・デバイス、及び/又はコンピューティング・デバイスを含む、様々なタイプのデバイスのうちのいずれかであり得る。コンピューティング・システムは、入出力(I/O)インターフェースを介してシステム・メモリに結合された(それらのうちのいずれかが単一又はマルチスレッドであり得る複数の処理コアを含み得る)1つ又は複数のプロセッサを含む。コンピュータ・システムは、I/Oインターフェースに結合されたネットワーク・インターフェースをさらに含み得る。
【0054】
様々な実施例では、コンピュータ・システムは、1つのプロセッサを含むシングル・プロセッサ・システム、又は複数のプロセッサを含むマルチプロセッサ・システムであり得る。プロセッサは、コンピューティング命令を実行することが可能な任意の好適なプロセッサであり得る。たとえば、様々な実施例では、プロセッサは、様々な命令セット・アーキテクチャのうちのいずれかを実装する汎用プロセッサ又は組込みプロセッサであり得る。マルチプロセッサ・システムでは、プロセッサの各々は、通常、必ずしもそうではないが、同じ命令セットを実装し得る。コンピュータ・システムはまた、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、又はインターネットなど、通信ネットワークにわたって他のシステム及び/又は構成要素と通信するための1つ又は複数のネットワーク通信デバイス(たとえば、ネットワーク・インターフェース)を含む。たとえば、コンピューティング・デバイス上で実行するクライアント・アプリケーションは、様々なサブシステムにおいて実装される、クラウド・コンピューティング又は非クラウド・コンピューティング環境において本明細書で説明されるシステムの構成要素のうちの1つ又は複数を実装する単一のサーバ上で又はサーバのクラスタ上で実行するサーバ・アプリケーションと通信するためのネットワーク・インターフェースを使用し得る。別の実例では、コンピュータ・システム上で実行するサーバ・アプリケーションのインスタンスは、他のコンピュータ・システム上に実装され得るアプリケーションの他のインスタンスと通信するためのネットワーク・インターフェースを使用し得る。
【0055】
コンピューティング・デバイスはまた、1つ又は複数の永続ストレージ・デバイス及び/又は1つ又は複数のI/Oデバイスを含む。様々な実施例では、永続ストレージ・デバイスは、ディスク・ドライブ、テープ・ドライブ、固体メモリ、他の大容量ストレージ・デバイス、又は任意の他の永続ストレージ・デバイスに対応し得る。コンピュータ・システム(或いはその上で動作する分散型アプリケーション又はオペレーティング・システム)は、要望に応じて、命令及び/又はデータを永続ストレージ・デバイスに記憶し得、必要に応じて、記憶された命令及び/又はデータを取り出し得る。たとえば、いくつかの実施例では、コンピュータ・システムは、制御プレーン又は制御システムの1つ又は複数のノードを実装し得、永続ストレージは、そのサーバ・ノードに取り付けられたSSDを含み得る。複数のコンピュータ・システムは、同じ永続ストレージ・デバイスを共有し得るか、或いは、永続ストレージ・デバイスのプールを共有し得、プール中のデバイスは、同じ又は異なるストレージ技術を表す。
【0056】
コンピュータ・システムは、(1つ又は複数の)プロセッサによってアクセス可能なコード/命令とデータとを記憶し得る1つ又は複数のシステム・メモリを含む。システムのメモリ能力は、たとえば、アクセス速度に基づいてメモリ中の情報をスワップするように設計されたシステムにおける複数のレベルのメモリ及びメモリ・キャッシュを含み得る。インターリービング及びスワッピングが、仮想メモリ実装形態において永続ストレージに拡張し得る。メモリを実装するために使用される技術は、実例として、スタティック・ランダムアクセス・メモリ(RAM:random-access memory)、ダイナミックRAM、読取り専用メモリ(ROM:read-only memory)、不揮発性メモリ、又はフラッシュタイプ・メモリを含み得る。永続ストレージの場合と同様に、複数のコンピュータ・システムは、同じシステム・メモリを共有し得るか、又はシステム・メモリのプールを共有し得る。1つ又は複数のシステム・メモリは、本明細書で説明されるルーチンを実装するために、(1つ又は複数の)プロセッサによって実行可能であるプログラム命令を含んでいることがある。様々な実施例では、プログラム命令は、バイナリ、アセンブリ言語、Javaなどの任意のインタープリタ型言語、C/C++などのコンパイルされた言語において、又はそれらの任意の組合せにおいて符号化され得、ここで与えられる特定の言語は、実例にすぎない。いくつかの実施例では、プログラム命令は、複数の別個のクライアント、サーバ・ノード、及び/又は他の構成要素を実装し得る。
【0057】
いくつかの実装形態では、プログラム命令は、UNIX(登録商標)、LINUX、Solaris(商標)、MacOS(商標)、又はMicrosoft Windows(商標)など、様々なオペレーティング・システムのうちのいずれかであり得る、オペレーティング・システム(図示せず)を実装するために実行可能な命令を含み得る。プログラム命令のいずれか又はすべては、様々な実装形態に従ってプロセスを実施するようにコンピュータ・システム(又は他の電子デバイス)をプログラムするために使用され得る、命令を記憶した非一時的コンピュータ可読記憶媒体を含み得る、コンピュータ・プログラム製品又はソフトウェアとして提供され得る。非一時的コンピュータ可読記憶媒体は、機械(たとえば、コンピュータ)によって可読な形態(たとえば、ソフトウェア、処理アプリケーション)で情報を記憶するための任意の機構を含み得る。概して、非一時的コンピュータアクセス可能媒体は、磁気媒体又は光媒体など、コンピュータ可読記憶媒体又はメモリ媒体、たとえば、I/Oインターフェースを介してコンピュータ・システムに結合されたディスク又はDVD/CD-ROMを含み得る。非一時的コンピュータ可読記憶媒体は、コンピュータ・システムのいくつかの実施例では、システム・メモリ又は別のタイプのメモリとして含まれ得る、RAM又はROMなど、任意の揮発性媒体又は不揮発性媒体をも含み得る。他の実装形態では、プログラム命令は、ネットワーク・インターフェースを介して実装され得るものなど、ネットワーク及び/或いはワイヤード又はワイヤレス・リンクなど、通信媒体を介して伝達される、伝搬される信号の光形態、音響形態、又は他の形態(たとえば、搬送波、赤外線信号、デジタル信号など)を使用して通信され得る。ネットワーク・インターフェースは、他のコンピュータ・システム又は任意のタイプの外部電子デバイスを含み得る、他のデバイスとインターフェースするために使用され得る。概して、ネットワークを通して他のデバイス上でアクセス可能なシステム・メモリ、永続ストレージ、及び/又はリモート・ストレージは、データ・ブロック、データ・ブロックのレプリカ、データ・ブロック及び/又はそれらの状態に関連付けられたメタデータ、データベース構成情報、並びに/或いは本明細書で説明されるルーチンを実装する際に使用可能な任意の他の情報を記憶し得る。
【0058】
いくつかの実装形態では、I/Oインターフェースは、ネットワーク・インターフェース又は他の周辺インターフェースを通してを含めて、システムにおけるプロセッサとシステム・メモリと任意の周辺デバイスとの間のI/Oトラフィックを協調させ得る。いくつかの実施例では、I/Oインターフェースは、ある構成要素(たとえば、システム・メモリ)からのデータ信号を、別の構成要素(たとえば、プロセッサ)による使用に好適なフォーマットにコンバートするために、任意の必要なプロトコル、タイミング又は他のデータ変換を実施し得る。いくつかの実施例では、I/Oインターフェースは、たとえば、周辺構成要素相互接続(PCI:Peripheral Component Interconnect)バス規格又はユニバーサルシリアルバス(USB:Universal Serial Bus)規格の変形態など、様々なタイプの周辺バスを通して取り付けられたデバイスのサポートを含み得る。また、いくつかの実施例では、システム・メモリへのインターフェースなど、I/Oインターフェースの機能性の一部又は全部が、(1つ又は複数の)プロセッサに直接組み込まれ得る。
【0059】
ネットワーク・インターフェースは、たとえば、データが、コンピュータ・システムと、(本明細書で説明される、1つ又は複数のストレージ・システム・サーバ・ノード、1次ノード、読取り専用ノード・ノード、及び/又はデータベース・システムのクライアントを実装し得る)他のコンピュータ・システムなど、ネットワークに取り付けられた他のデバイスとの間で交換されることを可能にし得る。さらに、I/Oインターフェースは、コンピュータ・システムと様々なI/Oデバイス及び/又はリモート・ストレージとの間の通信を可能にし得る。入出力デバイスは、いくつかの実施例では、1つ又は複数のディスプレイ端末、キーボード、キーパッド、タッチパッド、走査デバイス、ボイス又は光認識デバイス、或いは1つ又は複数のコンピュータ・システムによってデータを入れるか又は取り出すのに好適な任意の他のデバイスを含み得る。これらは、特定のコンピュータ・システムに直接接続するか、或いは、概して、クラウド・コンピューティング環境、グリッド・コンピューティング環境、又は複数のコンピュータ・システムを伴う他のシステムにおける、複数のコンピュータ・システムに接続し得る。複数の入出力デバイスが、コンピュータ・システムと通信して存在し得るか、又はコンピュータ・システムを含む分散型システムの様々なノード上に分散され得る。本明細書で説明されるユーザ・インターフェースは、CRTディスプレイと、LCDディスプレイと、LEDディスプレイと、他のディスプレイ技術とを含み得る、様々なタイプのディスプレイ・スクリーンを使用してユーザに可視であり得る。いくつかの実装形態では、入力は、タッチスクリーン技術を使用してディスプレイを通して受信され得、他の実装形態では、入力は、キーボード、マウス、タッチパッド、又は他の入力技術、或いはこれらの技術の任意の組合せを通して受信され得る。
【0060】
いくつかの実施例では、同様の入出力デバイスが、コンピュータ・システムとは別個であり得、ネットワーク・インターフェース上でなど、ワイヤード又はワイヤレス接続を通して、コンピュータ・システムを含む分散型システムの1つ又は複数のノードと対話し得る。ネットワーク・インターフェースは、通常、1つ又は複数のワイヤレス・ネットワーキング・プロトコル(たとえば、Wi-Fi/IEEE802.11、又は別のワイヤレス・ネットワーキング規格)をサポートし得る。ネットワーク・インターフェースは、たとえば、他のタイプのイーサネット・ネットワークなど、任意の好適なワイヤード又はワイヤレスの一般的なデータ・ネットワークを介した通信をサポートし得る。さらに、ネットワーク・インターフェースは、アナログ・ボイス・ネットワーク又はデジタル・ファイバー通信ネットワークなどの電気通信/テレフォニー・ネットワークを介した通信、ファイバー・チャネルSANなどのストレージ・エリア・ネットワークを介した通信、或いは任意の他の好適なタイプのネットワーク及び/又はプロトコルを介した通信をサポートし得る。
【0061】
本明細書で説明される分散型システム実施例のうちのいずれか、又はそれらの構成要素のうちのいずれかは、クラウド・コンピューティング環境における1つ又は複数のネットワークベース・サービスとして実装され得る。たとえば、データベース・システムのデータベース・ティア内の読取り書込みノード及び/又は読取り専用ノードは、本明細書で説明される分散型ストレージ・システムを採用するデータベース・サービス及び/又は他のタイプのデータ・ストレージ・サービスを、ネットワークベース・サービスとしてクライアントに提示し得る。いくつかの実施例では、ネットワークベース・サービスは、ネットワークを介した相互運用可能なマシンツーマシン対話をサポートするように設計されたソフトウェア及び/又はハードウェア・システムによって実装され得る。ウェブ・サービスは、ウェブ・サービス記述言語(WSDL:Web Services Description Language)などの機械処理可能なフォーマットで記述されたインターフェースを有し得る。他のシステムは、ネットワークベース・サービスのインターフェースの記述によって規定された様式でネットワークベース・サービスと対話し得る。たとえば、ネットワークベース・サービスは、他のシステムが呼び出し得る様々な動作を定義し得、様々な動作を要求するときに他のシステムが従うことが予想され得る特定のアプリケーション・プログラミング・インターフェース(API)を定義し得る。
【0062】
様々な実施例では、ネットワークベース・サービスは、ネットワークベース・サービス要求に関連付けられたパラメータ及び/又はデータを含むメッセージの使用を通して要求されるか又は呼び出され得る。そのようなメッセージは、拡張可能マークアップ言語(XML:Extensible Markup Language)などの特定のマークアップ言語に従ってフォーマットされ得、及び/又はシンプル・オブジェクト・アクセス・プロトコル(SOAP:Simple Object Access Protocol)などのプロトコルを使用してカプセル化され得る。ネットワークベース・サービス要求を実施するために、ネットワークベース・サービス・クライアントは、要求を含むメッセージをアセンブルし、ハイパーテキスト転送プロトコル(HTTP:Hypertext Transfer Protocol)などのインターネットベース・アプリケーション・レイヤ転送プロトコルを使用して、そのメッセージを、ウェブ・サービスに対応するアドレス指定可能なエンドポイント(たとえば、ユニフォーム・リソース・ロケータ(URL:Uniform Resource Locator))に伝達し得る。いくつかの実施例では、ネットワークベース・サービスは、メッセージ・ベース技法ではなく表現状態転送(REST:Representational State Transfer)技法を使用して実装され得る。たとえば、REST技法に従って実装されたネットワークベース・サービスが、PUT、GET、又はDELETEなど、HTTPメソッド内に含まれるパラメータを通して呼び出され得る。
【0063】
別段に明記されていない限り、本明細書で使用されるすべての技術用語及び科学用語は、本発明が属する当技術分野の当業者によって一般に理解されるものと同じ意味を有する。本明細書で説明されるものと同様の又は等価な方法及び材料が、本発明の実施又はテストにおいても使用され得るが、限られた数の例示的な方法及び材料が本明細書で説明される。はるかに多くの修正が、本明細書の発明概念から逸脱することなく可能であることが当業者には明らかであろう。
【0064】
本明細書で使用されるすべての用語は、コンテキストに一致する最も広い可能な様式で解釈されるべきである。グループ化が本明細書で使用されるとき、グループのすべての個々のメンバー、並びにグループの可能なすべての組合せ及び部分組合せが、個々に含まれるものとする。本明細書で範囲が明記されるとき、範囲は、範囲内のすべてのサブ範囲及び個々の点を含むものとする。本明細書で引用されるすべての参照は、本明細書の本開示との不整合がない範囲で、参照により本明細書に組み込まれる。
【0065】
本発明は、例にすぎないことが意図され、添付の特許請求の範囲に記載されたような本発明の完全な範囲に限定するものではない、いくつかの好ましい実施例及び代替実施例に関して説明された。
【国際調査報告】