(58)【調査した分野】(Int.Cl.,DB名)
前記設定コマンドに対応する設定レポートを、前記特定のノードから前記ネットワークを介して受信するステップをさらに含み、前記設定レポートは、前記特定のノードによる前記設定コマンドの実行に関するレポート情報を含む、請求項1に記載の方法。
前記情報要求は、受信したときに前記特定のノードによって実行されるべき1つ以上のコマンドを含み、前記情報要求に対する前記応答は、前記特定のノードによって前記1つ以上のコマンドを実行することによって生成される出力を含む、請求項5に記載の方法。
前記特定のノードが設定のために認可されていることを確認するステップは、前記クラウドコンピューティングネットワークに関連付けられた管理コンポーネントが、前記特定のノードから受信したのと一致するノード情報を備えたノードを作成したことと、前記ノードがまだ設定されていないこととを判断するステップを含む、請求項1〜4のいずれか1項に記載の方法。
前記作成情報は、前記特定のノードを作成した管理コンポーネント、前記特定のノードを作成した前記管理コンポーネントのユーザ、前記特定のノードが作成された目的であるプロジェクト、または前記特定のノードについてのノードタイプ、のうち少なくとも1つを含む、請求項8に記載の方法。
少なくとも1つのプロセッサに以下の演算を行なわせるために実行されるときに実施可能である命令を格納した非一時的なコンピュータ読取り可能媒体であって、前記以下の演算は、
クラウドコンピューティングネットワークにおける特定のノードから、ネットワークを介して、設定要求を受信することを備え、前記設定要求は、前記特定のノードについてのノード情報を含み、
設定コントローラが、前記ノード情報に少なくとも部分的に基づいて、かつ、一連の計算を実行して一定の期間内にそれぞれの結果を提供するように前記特定のノードに指示して当該特定のノードから受信した結果に基づいて、前記特定のノードが設定されることが認可されていることを確認することと、
前記特定のノードが設定のために認可されていることを確認したことに応じて、前記ノード情報に少なくとも部分的に基づいて前記特定のノード上で実行すべき設定動作を識別
することと、
識別された1つ以上の前記設定動作に対応する設定コマンドを、前記ネットワークを介して、前記特定のノードに送信することとを含み、前記特定のノードは、前記設定コマンドを受信すると前記設定コマンドを実行して、前記対応する設定動作を実行する、非一時的なコンピュータ読取り可能媒体。
前記情報要求は、受信したときに前記特定のノードによって実行されるべき1つ以上のコマンドを含み、前記情報要求に対する前記応答は、前記特定のノードによって前記1つ以上のコマンドを実行することによって生成される出力を含む、請求項15に記載のコンピュータ読取り可能媒体。
前記特定のノードが設定のために認可されていることを確認することは、前記クラウドコンピューティングネットワークに関連付けられた管理コンポーネントが、前記特定のノードから受信したのと一致するノード情報を備えたノードを作成したことと、前記ノードがまだ設定されていないこととを判断することを含む、請求項11〜14のいずれか1項に記載のコンピュータ読取り可能媒体。
前記ノード情報は、前記特定のノードがどのように作成されたかを詳述する作成情報を含み、前記特定のノードが設定のために認可されていることを確認することは、前記作成情報が前記クラウドコンピューティングネットワークに関連付けられたセキュリティポリシーに一致していることを確認することを含む、請求項11〜14のいずれか1項に記載のコンピュータ読取り可能媒体。
前記作成情報は、前記特定のノードを作成した管理コンポーネント、前記特定のノードを作成した前記管理コンポーネントのユーザ、前記特定のノードが作成された目的であるプロジェクト、または前記特定のノードについてのノードタイプ、のうち少なくとも1つを含む、請求項18に記載のコンピュータ読取り可能媒体。
コンピュータによって実行されるプログラムであって、前記プログラムは、前記コンピュータに、請求項1から10のいずれか1項に記載の方法を実行させる、プログラム。
【発明を実施するための形態】
【0017】
さまざまな図面における同様の参照番号および符号は同様の要素を示す。
詳細な説明
CHEF(登録商標)、PUPPET、SALTおよびANSIBLEなどの設定マネージャは、ネットワークを介してソフトウェアをコンピューティングデバイスにデプロイするためのソフトウェアプログラムである。これらの設定マネージャは、内部ネットワークを介してソフトウェアを分散させるためにオンプレミス環境において用いられることが多い。これらの設定マネージャが多くの有用な特徴を提供しているので、より大規模なクラウドコンピューティングシステムにおいてこれら設定マネージャを用いるための努力が払われてきた。しかしながら、これらの設定マネージャは主に内部ネットワーク使用のために設計されているので、このような努力は、これまで、ロバストなセキュリティ、他のフレームワークとの相互運用性および融通性のあるデプロイメント能力などのクラウドコンピューティングシステムにおいて望ましい多くの特徴によって妨害されてきた。
【0018】
本開示は、クラウドコンピューティングシステムにおいてノードをセキュアに設定するための方法およびシステムを記載する。記載された解決策は、設定プロセス中にノードに設定アイテムを提供するためのリソースとして既存の設定マネージャを利用する。この解決策は、さまざまなアプリケーションプログラミングインターフェイス(application programming interface:API)を用いて複数のさまざまな種類の設定マネージャをサポートし得るとともに、単一のクラウドコンピューティングシステムにおいてこれらを一緒に用いることを可能にし得る。さらに、この解決策は、リソースに対する需要の増加または変化するネットワーク条件などに応じて、リソースの融通性のあるデプロイメントをサポートする。加えて、潜在的に機密に関わる設定リソースのためのアクセスクレデンシャルの割当て、分布および管理などのセキュリティ対策は、クラウドコンピューティングシステムにおいて、設定リソースまたはノードではなく、上述のシステムによって全体的に管理される。
【0019】
上述の解決策は、設定時に設定マネージャとノードとの間に間接層を追加する。たとえば、ノードが設定リソースによって設定される場合、信頼関係は設定されるべきノードと設定リソースとの間に確立され得る。概して、設定リソースまたはノードは、セキュアな設定プロセスを確実にするために、信頼されたコンピューティング基盤の一部をなしている(たとえば、認可されていないノードまたは確認されていないノードが、機密情報を含み得る設定リソースにアクセス要求することが防止される)。この明細書中に記載される解決策においては、信頼されたコンピューティング基盤に含まれる設定コントローラは、ノードと設定リソースとの間の信頼関係を仲介し得るものであって、これにより、ノードおよび設定リソースは、信頼されたコンピューティング基盤の一部を設定することなく相互信頼を確立し得る。設定コントローラは、たとえば、設定リソース上のノードのためのアクセスクレデンシャルを設定してリソースへのアクセスに使用されるクレデンシャルをノードに提供することによって、この信頼関係を確立してもよい。設定コントローラによって提供されるこの間接層に基づけば、ノードまたは設定リソースが信頼されたコンピューティング基盤の一部をなしていなくても、ノードのセキュアな設定が実現され得る。信頼されたコンピューティング基盤は、たとえば、潜在的に機密のアクセスクレデンシャルを管理しセキュアにするコンポーネントをシステム内に含み得る。
【0020】
アドミニストレータは、どの設定マネージャからのどの設定が特定のノードに適用されるべきであるかを規定する1セットの設定ポリシーでシステムを設定し得る。設定ポリシーは1セットのルールとして特定されてもよい。各々のルールは、ノードの特性(たとえば、名前、作成日、所有者など)を1セットの設定データに一致させる。各々のルールはまた、成功したノード設定または失敗したノード設定に対してシステムが取るべき設定動作を特定し得る。設定を得るために、ノードは(たとえばネットワークを介して)システムに要求を送信する。システムがマシンを設定するようにとの要求を受信すると、当該システムは、実行すべき設定動作を決定するために、設定ポリシーのうちノードの特性に一致する1つ以上のルールを見つけ出す。
【0021】
本解決策は、リソースについての要求に応じて、自動的なノード設定によって融通性をもたらすために既存の設定マネージャと統合されてもよい。既存の設定マネージャは、概して、アドミニストレータが新しいノードをプロビジョニングするために設定マネージャを対話形式で用いている対話環境において機能する。この対話形式のシナリオは、システムの現在の状態に応じて顧客がノードをプロビジョニングすることを希望している融通性のあるシナリオに対しては有用でないかもしれない。本解決策は、要望に応じてノードをプロビジョニングするアドミニストレータの能力を増大させて、設定マネージャを融通性のあるシナリオに適用できるようにする。既存の解決策を備えたこの統合機能はまた、さまざまな異なる既存のクラウド設定において本システムをより容易にデプロイさせる。各々の既存のクラウド設定は、本システムを統合させることのできる1つ以上の設定マネージャを用いてもよい。
【0022】
セキュリティに関して、いくつかのクラウド設定マネージャは、設定時にノードにアクセスクレデンシャル(たとえば、暗号化キー、ログインクレデンシャルなど)を提供し得るので、設定のために必要とされるアイテム(たとえば、ソフトウェアライブラリ、ソースコードなど)を得るためにネットワークリソースにアクセスできるようになる。このような設定は、セキュリティ上のリスクを呈する可能性がある。というのも、攻撃者がこれらのアクセスクレデンシャルを得るためにいくつかのノードに侵入することができるからである。本開示において記載されるシステムにおいては、アクセスクレデンシャルは、設定システムによって管理され得るとともに、設定されているノードによって管理または維持される必要がない。この局面は、システムの全体的なセキュリティを高めて、セキュアな設定を容易にする。さらに、本システムは、個々のノードがどのように設定されるかを制御するために個々のノードの能力を排除し、これにより、損なわれたノードが、アドホックな態様で、機密情報を含み得る設定リソースを要求するのを防止する。これにより、認可されていないノード、確認されていないノードまたは損なわれたノードが機密に関わる設定情報にアクセスし得るリスクが低減される。
【0023】
本解決策はまた、特定のノード要求設定が実際にそのように設定されることが認可されていることを確認することによって、高度なセキュリティを提供し得る。当該システムは、ノードが設定されることが認可されていることを確認するために、アドミニストレータによって、特定のノードから受信された設定要求を対応する動作と相互に関連付けてもよい。当該システムはまた、ノードに指示して、さまざまな命令を実行させ得るとともに、当該ノードが本物であって、たとえば攻撃者によって指示された損なわれたノードではないことを確認するための命令を出力させ得る。たとえば、システムは、損なわれたノードが人の攻撃者によって手動で制御されていないことを確認するために短時間に多数の計算を実行するようにノードに指示してもよい。システムはまた、その初期設定に含まれている一意識別子などの情報を提供するようにノードに指示してもよい。このような情報は、ノードが設定を受信することが認可されていることを確認するために、ノードに対する元の作成要求と相互に関連付けることができる。
【0024】
図1は、クラウドコンピューティングシステムにおいてリソースをセキュアに設定するための例示的な環境100を示す図である。図示のとおり、環境100は、デプロイメントマネージャ120と通信するユーザまたは自動化システム110を含む。デプロイメントマネージャ120は、ユーザ/自動化システム110からの要求に応答して、ノード130(たとえば、仮想マシンインスタンス、コンテナインスタンスまたはクラウドコンピューティングシステムの他のコンポーネント)をデプロイする。設定コントローラ140は、ノード130と対話して、これに設定を提供する。設定コントローラ140は設定ポリシー160に基づいて動作する。設定コントローラ140はまた、ノード130がリソースから設定アイテムを検索することも認可しないように、設定リソース150と対話する。動作時に、ユーザ/自動化システム110は、デプロイメントマネージャ120がノードを作成する(170)ことを要求する。これに応答して、デプロイメントマネージャ120はノード130をデプロイする(172)。初期化されると、ノード130は設定要求174を設定コントローラ140に送信する。設定コントローラ140は、設定要求174に含まれるパラメータに基づいてノード130の設定ポリシー164を識別する。設定コントローラ140は、ノード130に設定コマンド176を発行する。ノード130は、設定コマンド176を実行し、設定コントローラ140にコマンドの結果を提供する。設定コントローラ140はまた、設定リソース150に設定コマンド178を送信してもよい。たとえば、設定コントローラ140のための設定は、ノード130が設定リソース150から設定アイテムを検索する(180)ことを認可するように設定リソース150を設定してもよい。設定コントローラ140はまた、ノード130を、これが設定リソース150にアクセスすることを可能にするアクセスクレデンシャルで(たとえば、設定コマンド176によって)設定してもよい。
【0025】
ユーザ/自動化システム110は、デプロイメントマネージャ120によってデプロイされるノード130などの、ノードインスタンスを要求するエンティティである。たとえば、ユーザ/自動化システム110は、新しいノードインスタンスを作成するためにユーザインターフェイスと対話するユーザを含み得る。ユーザ/自動化システム110はまた、たとえば、特定のアプリケーションのためのコンピューティングリソースに対する要求の増加に応じて、デプロイメントマネージャ120によって管理されているクラウドコンピューティングシステムの性能の低下に応じて、または、他の事象に応じて、デプロイメントマネージャにノードインスタンスの作成を自動的に要求する自動化システムを含んでもよい。いくつかの実現例においては、ユーザ/自動化システム110は、ノードの作成(170)を要求するために、かつ、ノードが作成された(182)という通知を受信するために、ネットワーク(図示せず)を介してデプロイメントマネージャ120と通信してもよい。ユーザ/自動化システム110のアイデンティティ、作成されるべきノードの属性または他の情報などの付加的な情報は、以下においてより詳細に説明されるように、作成要求(170)および通知(182)において呈示されてもよい。
【0026】
デプロイメントマネージャ120は、クラウドコンピューティングシステムなどの分散コンピューティング環境におけるコンピューティングコンポーネントであってもよい。いくつかの実現例においては、デプロイメントマネージャ120は、新しいノードインスタンスをデプロイするとともに分散コンピューティング環境内における既存のノードインスタンスを管理するように動作可能である1つ以上のコンピューティングコンポーネントであってもよい。場合によっては、デプロイメントマネージャ120は、ソフトウェアコンポーネントとして実現されてもよく、ユーザ/自動化システム110などのエンティティが分散コンピューティング環境内で新しいノードの作成を要求することを可能にするAPIを提供してもよい。いくつかの実現例においては、デプロイメントは、1つ以上の仮想実行環境内においてノードをデプロイして管理するハイパーバイザコンポーネントであってもよい。このような場合、ハイパーバイザによってデプロイおよび管理されるノードは、仮想マシンインスタンス、コンテナインスタンス、仮想リソース(たとえば、ディスク、プロセッサなど)または他の仮想コンポーネントであってもよい。
【0027】
ノード130は、172においてデプロイメントマネージャ120によってデプロイされる。ノード130は、仮想環境内において物理的なコンピューティングデバイスによってデプロイされて実行されるノードインスタンスであってもよい。場合によっては、ノード130は、デプロイメントマネージャ120に関連付けられるとともに作成要求170においてユーザ/自動化システム110によって特定される仮想マシンまたはコンテナ画像に従って作成されてもよい。いくつかの実現例においては、ノード130は、それが設定コントローラ140と通信することを可能にするのに十分な最小の設定でデプロイされてもよい。たとえば、ノード130は、最小限に設定されたオペレーティングシステムと、当該ノード130がネットワーク(図示せず)を介して設定コントローラ140にアクセスすることを可能にする限られたネットワーク設定と、設定コントローラ140に設定要求174を送信して設定コントローラ140からの応答を待つ命令とを用いて、デプロイされてもよい。このようなデプロイメントは、設定コントローラ140がノード130の設定のほとんどの局面を制御することを可能にし得る。対照的に、非最小の設定でデプロイされたノードは、構成設定、ソフトウェアパッケージ、および、ノードを作成するのに用いられる画像内の他の設定アイテムを含み得る。このような方策により、新しいノードのための初期設定に変更を加えることが困難になる可能性がある。なぜなら、ノードを作成するための元となる画像が、このような変更を実現するために更新されなければならないからである。本解決策はまた、たとえば、予めインストールされたソフトウェアパッケージを最新バージョンに更新するために、画像における初期設定内に含まれている設定を更新済みの値に変更するために、かつ、他の設定動作を実行するために、ノードがこのような非最小の設定でデプロイされている状況において利用されてもよい。このような方策は、画像に含まれている初期設定を変更することの困難さをいくらか緩和し得る。なぜなら、非最小に設定されたノード130は、最小に設定されたノードと同じ態様で、初期化されると、設定コントローラ140に設定を要求して設定コントローラ140からこの設定を受信し得るからである。
【0028】
設定コントローラ140は、ネットワーク(図示せず)を介してノード130から設定要求174を受信する。いくつかの実現例においては、ノード130は、設定コントローラ140によって提供されるレプレゼンテーショナル・ステート・トランスファ(Representational State Transfer:REST)APIに従って設定要求174を送信する。ノード130は、ハイパーテキスト転送プロトコル(Hypertext Transfer Protocol:HTTP)、HTTPセキュア(HTTP Secure:HTTPS)または他のプロトコルを用いて、設定コントローラ140に対応するユニフォームリソースロケータ(Uniform Resource Locator:URL)にアクセスするように指示され得る。たとえば、ノード130は、設定コントローラ140にURL「http://configcontroller.internal.net/start」についてのHTTP要求を送信してもよい。この場合、ドメイン名「configcontroller.internal.net」は設定コントローラ140に関連付けられたネットワークアドレスに分解され、目的である「start」は、ノード130が設定を要求していることを設定コントローラ140に示している。
【0029】
設定要求174はまた、ノード130についての情報を識別することを含み得る。たとえば、ユーザ/自動化システム110は、デプロイメントマネージャ120によって作成されるべきノード130についての情報、たとえば、あるタイプのノードインスタンス、ノード130の作成を要求しているユーザまたはシステムのアイデンティティ、ノードを作成するようにとの要求についての一意識別子、または他の情報など、を特定し得る。場合によっては、この情報は設定要求174において符号化されてもよい。いくつかの実現例においては、設定コントローラ140は、この情報を用いて、ノード130が設定されることが認可されていることを確認してもよい。たとえば、設定コントローラ140は、設定要求174でノードを作成するようにとの要求についての一意識別子を受信してもよく、この識別子を用いることで、ノード130が実際にデプロイされていて、有効な作成要求に基づいて設定を要求していることを確認してもよい。このような確認は、認可されていないノードインスタンスが内部の、場合によっては機密の、設定データにアクセスするのを防止することによって、高度なセキュリティを提供し得る。一例においては、このようなノードインスタンスは、このような内部データにアクセスしようと試みる悪意のあるエンティティによって作成されるはずである。設定コントローラ140はまた、ノード要求設定の特定の属性を備えたノードインスタンスを作成することが認可されているユーザまたはシステムによってノードインスタンスが作成されたことを確認してもよい。
【0030】
いくつかの実現例においては、設定コントローラ140はデプロイメントマネージャ120から設定要求174を受信してもよい。このような場合、デプロイメントマネージャ120が新しいノードをデプロイすると、デプロイメントマネージャ120は、新しくデプロイされたノードについての情報とともに設定要求174を設定コントローラ140に送信してもよい。設定コントローラ140は、ノードによって開始された上述の設定シナリオと同様に、上述と同様の態様でノードについての情報を用いてノードのアイデンティティを識別および確認してからこれを設定し得る。
【0031】
いくつかの実現例においては、設定コントローラ140は、設定を待っている新しくデプロイされたノードのためにネットワークをスキャンするように設定されてもよい。このような場合、設定コントローラ140は、特定のノードの設定を開始するようにとの設定要求174を受信しない可能性があるが、代わりに、設定を待っているノードが発見されたときに設定プロセスを開始する可能性がある。たとえば、設定コントローラ140は、設定を待っているノードのリストを含むデータベースまたは他のリソースを定期期的にチェックし得るとともに、設定プロセスを開始するためにこのようなノードとの通信を開始し得る。設定コントローラ140はまた、いずれかの新しくデプロイされたノードを設定する準備ができていることを示すブロードキャストメッセージをネットワーク上で送信してもよい。このような場合、新しくデプロイされたノードは、このブロードキャストメッセージに応答して設定プロセスを開始するように設定されるだろう。
【0032】
設定コントローラ140は、設定要求174からの情報を用いて、ノード130を設定するために用いるべき設定ポリシー160のうちの1つを識別してもよい。いくつかの実現例においては、設定ポリシー160は、ルールと、設定されるべきノードが当該ルールに一致する場合に実行するべき1セットの設定コマンドとを含み得る。たとえば、設定ポリシー160は、「データベース」のノードタイプで設定されるべきノードが設定プロセス中にインストールされたデータベース管理ソフトウェアプログラムを有するべきであることを規定してもよい。設定コントローラ140がノード130のタイプが「データベース」であることを特定する設定要求をノード130から受信する場合、設定コントローラは、ノード130がノードタイプ「データベース」についての設定ポリシー160に一致することを特定し、データベース管理ソフトウェアプログラムをインストールするために設定ポリシー160において規定されている設定コマンドをノード130に発行するだろう。設定ポリシー160におけるルールは、ノード130から受信された設定要求において受信された情報について一致する値を規定する基準を含み得る。いくつかの実現例においては、設定ポリシー160は、設定を実行するために用いられる特定の設定リソース152を特定してもよい。
【0033】
設定コントローラ140がノード130を設定するために用いられる設定ポリシー162を識別すると、設定コントローラ140は1つ以上の設定コマンド176をノード130に送信し得る。上述されたように、ノード130は、設定要求174を送信した後、設定コントローラ140からのこのようなコマンドをリッスンする。いくつかの実現例においては、ノード130が設定コマンド176を受信すると、ノード130をデプロイするための命令は、受信されたコマンドを実行させるとともに、実行されたコマンドの出力または結果を設定コントローラ140に提供する。
【0034】
この配置設定は、ノード130を設定する際に高い融通性を提供し得る。なぜなら、設定コントローラ140は、ユーザがノード130に直接コマンドを入力することによって実行され得るいずれのコマンドも有効に実行するようにノード130に指示し得るからである。いくつかの実現例においては、ノード130は、オペレーティングシステム・シェルまたはコマンドラインインターフェイスにおいて、たとえば、ボーン・シェル(Bourne shell)(sh)、ボーン・アゲイン・シェル(Bourne-Again shell)(bash)、コーン・シェル(Korn shell)(ksh)、Cシェル(csh)もしくは他のシェル、または、コマンドラインインターフェイスなどにおいて、受信した各々の設定コマンド176を実行し得る。このような配置設定は、リダイレクト(「>」)およびパイプ(「|」)などのスクリプティングおよびフロー制御動作など、ノード130を設定する際にこのようなシェルのリッチな特徴を設定コントローラ140が利用することを可能にし得る。
【0035】
たとえば、タイプ「データベース」のノード130からの例示的な設定要求174に応じて、設定コントローラ140は、特定の設定リソース150にアクセスするためにアドバンスドパッケージングツール(Advanced Packaging Tool:APT)、RPMパッケージマネージャまたは他のクライアントなどのパッケージ管理クライアントをノード130上で設定するために設定コマンド176をノード130に送信してもよい。たとえば、この設定コマンド176は、「add-apt-repository ‘deb http://config.blah.com/config/ database-manager main’」であってもよく、この場合、「http://config.blah.com/config/」はリソース150に対応するURLである。ノード130は、設定コマンド176を受信して、上述のとおりシェルまたはコマンドラインインターフェイスにおいてこれを実行し得る。設定コマンド176を実行することにより、ノード130上の「add-apt-repository」プログラムが特定されたパラメータで実行され、これにより、この場合には、APTパッケージ管理クライアントプログラムの設定が更新されることとなる。次いで、設定コントローラ140は、ノード130上でパッケージ管理クライアントを呼出し、適切なパッケージを検索するようにこれに指示する設定コマンド176を送信してもよい。たとえば、上述の例から「データベース・マネージャ」コンポーネントを検索するための設定コマンド176は、「apt-get install database-manager」であってもよい。ノード130は、設定コマンド176を受信して、これを上述のとおりシェルまたはコマンドラインインターフェイスにおいて実行し得る。設定コマンド176を実行することにより、ノード130上の「add-get」プログラムが特定のパラメータで実行されることとなり、さらに、この場合には、ノード130に、上述のコマンドで設定された設定リソース150から「database-manager」ソフトウェアパッケージを検索させてインストールさせることとなるだろう。
【0036】
設定コントローラ140はまた、ノード130が設定されることが認可されていることをさらに確認するために選択された設定コマンド176を送信してもよい。たとえば、設定コントローラ140は、一連の計算を実行して一定の期間内で結果を提供するようにノード130に指示してもよい。このようなメカニズムは、ノード130が実際にはコンピューティングリソースであって、システムに電子的にアクセスしようと試みる人の攻撃者ではないことを確認するために用いられてもよい。上記期間は、上記期間の終了前においては人の攻撃者が計算を実行できなくなるように選択されてもよい。別の例においては、設定コントローラ140は、ノード130に指示して、その環境についての不変の特徴、たとえば、物理的な媒体アクセス制御(Medium Access Control:MAC)アドレス、シリアル番号、または、それが実行される物理的なコンピューティングデバイスの他の一意識別子など、を読出させてもよい。ノード130は、確認のためにこのデータを設定コントローラ140に提供してもよい。このようなチェックは、ノード130が、ユーザ/自動化システム110からの要求に応答してデプロイメントマネージャ120によってデプロイされたノードインスタンスであって、場合によっては悪意のある目的のためにデプロイされたインスタンスを模倣する攻撃者ではないことを確実にし得る。
【0037】
設定リソース150は、ノード130がそこから設定アイテムを検索し得る(180)1つのコンピューティングコンポーネントまたはコンピューティングコンポーネントのセットであってもよい。たとえば、設定リソース150は、たとえばCHEF、PUPPET、SALT、ANSIBLEまたは別の設定管理ツールなどの設定管理ツールを実行する設定管理サーバであってもよい。設定リソース150はまた、データベース、デポジトリまたは設定アイテムの他の集合であってもよい。いくつかの実現例においては、設定コントローラは、API、通信プロトコルまたは各々の特定のタイプの設定リソース150に特有の他のメカニズムを用いて、複数の異なるタイプの設定リソース150と通信するように設定されてもよい。設定コントローラ140は、ノード130が設定リソース150にアクセスすることを認可するために設定リソース150に設定コマンド178を送信してもよい。設定コントローラ140は、同様に、ノード130に設定コマンド176を送信して、設定リソース150にアクセスする際に用いるべきクレデンシャルを提供してもよい。場合によっては、このようなクレデンシャルは、ノード130が設定される必要のあるアクセスのレベル分だけ当該ノード130が許可されるように制限されてもよい。たとえば、ノード130には、設定プロセスの開始時に設定コントローラ140によって作成されるとともに設定プロセスの終了時に設定コントローラ140によって削除される、設定リソース150のためのアクセスクレデンシャルが提供されてもよい。このような技術は、ノード130が設定リソース150のためにそれ自体のアクセスクレデンシャルを格納して維持する必要性を軽減することにより、従来の技術を上回る高度なセキュリティにつながり得る。代わりに、設定コントローラ140は、このようなクレデンシャルを管理し、設定のために必要な場合にのみノード130にこれらクレデンシャルを提供してもよい。これにより、ノード130の制御を掌握している攻撃者によってアクセス可能なリソースが制限され得るとともに、潜在的に機密に関わるアクセスクレデンシャルを管理してセキュアにすることを必要とするシステム内のコンポーネントの数が制限される。
【0038】
いくつかの実現例においては、
図1に示されるコンポーネント間の対話は、これらコンポーネントが接続される1つ以上のネットワークを介してコンポーネント間で送信されるメッセージとして実現されてもよい。たとえば、1つ以上のネットワークは、インターネットプロトコル(Internet Protocol:IP)または他のタイプのネットワークを含んでもよく、トランスポート層において伝送制御プロトコル(Transmission Control Protocol:TCP)、ユニバーサルデータグラムプロトコル(Universal Datagram Protocol:UDP)または他のプロトコルを利用してもよい。コンポーネント間で送信されるメッセージは、たとえば、ハイパーテキスト転送プロトコル(Hypertext Transfer Protocol:HTTP)、リモート・プロシージャ・コール(Remote Procedure Call:RPC)、簡易オブジェクトアクセスプロトコル(Simple Object Access Protocol:SOAP)または他の通信プロトコルなどの通信プロトコルに従って設定されてもよい。1つ以上のネットワークは、イーサネット(登録商標)、同期光ネットワーキング(Synchronous Optical Networking:SONET)、非同期転送モード(Asynchronous Transfer Mode:ATM)、および、他の有線または無線ネットワーキング技術を含むがこれらに限定されない1つ以上の物理層ネットワーキング技術を用いて実現されてもよい。
【0039】
いくつかの実現例においては、設定コントローラ140は、ネットワーク上の既存のノードを交互にずらして更新してもよい。このようなローリング更新プロセスにおいては、設定コントローラ140は、特定の基準に基づいて更新済みの設定を受信するためにノードを選択する。たとえば、基準は、ネットワーク上のノードが1時間当たり100のレートで更新されるように規定してもよい。これに応じて、設定コントローラ140は、1時間当たり100のノードを選択して、これらのノードに対して上述と同じ態様で更新済みの設定を得るように指示し得る。場合によっては、設定コントローラ140は、更新されるべきとのメッセージをノードに送信することによって更新プロセスを開始してもよい。設定コントローラ140はまた、更新プロセスを開始するメッセージを更新されるべき各々のノードから受信し得る。設定コントローラ140はまた、更新プロセスを開始するメッセージをデプロイメントマネージャ120から受信してもよい。
【0040】
図2は、クラウドコンピューティングシステムにおいてリソースをセキュアに設定するための例示的なプロセスのスイムレーン図である。205において、ユーザ/自動化システム110は、デプロイメントマネージャ120がノードを作成することを要求する。210において、デプロイメントマネージャ120はノード130を作成してデプロイする。215において、ノード130は、初期化ごとに、設定を要求するメッセージを設定コントローラ140に送信する。220において、ノード130は設定コントローラ140からの設定コマンドについてポーリングする。いくつかの実現例においては、ノード130は、設定コントローラ140から受信された設定コマンドを定期的にチェックする「ビジーウェイト(busy wait)」ループに入り得る。
【0041】
225において、ノード130から設定についての要求を受信したことに応答して、設定コントローラ140がノード130に設定コマンドを送信する。230において、ノード130が、受信した設定コマンドを実行する。235として、ノード130は、設定コントローラ140に設定コマンドの結果を送信する。たとえば、ノード130は、オペレーティングシステム・シェルにおいて設定コマンドを実行し、結果として、実行されたコマンドの出力を設定コントローラ140に提供してもよい。240において、ノード130が、再び、設定コントローラ140からの設定コマンドについてポーリングする。
【0042】
図3は、設定コントローラ140を用いてノード130および設定リソース150を設定するための例示的なプロセスを示すスイムレーン図である。305において、設定コントローラ140は、設定リソース150にアクセスするようにノード130を設定する。たとえば、設定コントローラ140は、設定リソース150にアクセスするための情報、たとえば、設定リソース150にコンタクトするのに用いられるネットワークアドレス、設定リソース150にアクセスするのに用いるべきアクセスクレデンシャル、または他の情報などを、ノード130を提供し得る。いくつかの実現例においては、当該設定は、設定コントローラ140が(以下に記載される)310および315において設定リソースを準備した後に、行われてもよい。いくつかの実現例においては、設定コントローラ140は、ノード130上に設定リソース150に関連付けられたクライアントアプリケーションをインストールしてもよく、設定リソース150から設定アイテムを検索するようにノード130に指示する際にこのクライアントアプリケーションを呼出してもよい。
【0043】
310において、設定コントローラ140は、ノード130に設定アイテムを提供するように設定リソース150を準備するためのセットアップ動作を実行する。いくつかの実現例においては、このようなセットアップ動作は、設定リソース150がノード130を設定するのに必要な特定の設定アイテムを提供することができるかどうかを判断する動作を含み得る。315において、設定コントローラ140は、設定リソース150にアクセスするノード130を認可するように設定リソース150に指示する。たとえば、設定コントローラ140は、ノード130のために設定リソース150上に1セットのアクセスクレデンシャルを作成してもよい。場合によっては、設定コントローラ140は、設定リソース150に、そのネットワークアドレスまたは他の識別情報などのノード130についての情報を提供してもよく、これにより、設定リソース150は、リソースにアクセスしようと試みる際にノード130を確認することができるようになる。いくつかの実現例においては、設定コントローラ140は、設定リソース150に特有のAPIを利用することによってステップ310および315を実行してもよい。設定コントローラ140は、複数のさまざまなAPIを用いて複数のさまざまな種類の設定リソース150と通信するように動作可能であり得る。
【0044】
320において、設定コントローラ140は、設定リソース150から設定アイテムを検索するようにノード130に指示する。たとえば、設定コントローラ140は、設定リソース150にアクセスするために305においてインストールされたクライアントアプリケーションを呼出すようにノード130に指示してもよい。設定コントローラ140は、検索されるべき1つの設定アイテムまたは複数の設定アイテムの識別を含み得る。いくつかの実現例においては、設定コントローラ140は、設定アイテムを検索するために設定リソース150に特有のプロトコルに従って設定されたメッセージをネットワークを介して送信するようにノード130に指示してもよい。330において、設定リソース150は、325において送信された要求によって示される設定アイテムを戻す。
【0045】
335において、ノード130は、設定リソース150から受信した設定アイテムを適用する。いくつかの実現例においては、設定アイテムを適用することは、受信された設定アイテムをノード130上にインストールする、設定リソース150に関連付けられたクライアントアプリケーションを含み得る。ノード130はまた、330において設定リソース150から設定アイテムを受信すると、設定コントローラ140に結果を戻してもよい。これに応じて、設定コントローラ140は、設定アイテムをインストールするようにとの命令を含む設定コマンドをノード130に送信してもよい。340において、ノード130は、設定コントローラ140に設定アイテムを適用した結果を送信する。いくつかの実現例においては、ステップ320〜ステップ340は、複数の異なる設定アイテムをノード130に適用するために複数回繰返されてもよい。ノード130について設定コントローラ140によって識別された設定ポリシー160は、どの設定アイテムがノード130にインストールされるべきであるかを特定し得るとともに、これにより、回数を特定し、どのようなパラメータでステップ320〜340を繰返し得るかを特定し得る。
【0046】
345において、設定コントローラ140は、ノード130の設定が完了していると判断する。いくつかの実現例においては、設定コントローラ140は、ノード130に適用されるべき各々の設定アイテムについての好結果をノード130から受信したことに基づいて設定が完了していると判断してもよい。350において、設定コントローラ140は、設定プロセスが完了しているという表示をノード130に送信する。355において、ノード130は、デプロイに成功したという表示をデプロイメントマネージャ120に送信する。360において、デプロイメントマネージャ120は、ノード130を作成するのに成功したという表示をユーザ/自動化システム110に送信する。いくつかの実現例においては、設定コントローラ140は、適用されるべき設定アイテムのうち1つ以上についてノード130から好成績を受信しない場合、当該設定コントローラは、「設定の失敗」などを示すネガティブな表示をノード130に送信してもよい。ノード130は、この表示をデプロイメントマネージャ120に伝達してもよく、デプロイメントマネージャ120が次いで、この表示をユーザ/自動化システム110に伝達してもよい。場合によっては、ノード130はこのような失敗の表示に応じてそれ自体を削除するかもしれない。ノードの削除は、設定コントローラ140またはデプロイメントマネージャ120によって実行されてもよい。
【0047】
図4は、
図1に示される設定コントローラ140を含む例示的な環境400を示す図である。図示のとおり、設定コントローラ140は、設定サービス410、設定ワーカー420、1セットの設定データ432およびユーザインターフェイス450を含む。動作時に、設定イニシエータ440が、REST APIを用いて設定サービス410と通信してもよい。設定イニシエータ440は、新しいノード130がデプロイされていることを設定サーバ410に示してもよく、さらに、設定コントローラ140に設定を要求することになるだろう。場合によっては、設定イニシエータ440は、
図1に示されるユーザ/自動化システム110、
図1に示されるデプロイメントマネージャ120、または、デプロイされたノード130もしくは作成されたノード130である他の任意のコンピューティングコンポーネントもしくはエンティティであり得る。設定イニシエータ440は、ノード130についての情報、たとえば、ノード130についての、または、ノード130をデプロイさせるかもしくは作成させる要求についての固有の識別情報など、を示してもよい。この情報は、設定コントローラ140によって受信された設定についての要求が、設定イニシエータ440によって作成されたかまたはデプロイされたノード130からのものであることを確認するために、用いられてもよい。
【0048】
設定イニシエータ440からのこのような表示を受信したことに応じて、設定サービス410は、ノード130を設定するタスクを設定ワーカー420に割当ててもよい。いくつかの実現例においては、設定ワーカー420は、ノード130からの設定要求を処理するのに必要であるとともに必要な設定を実行するための必要な設定コマンドをノード130に提供するのに必要である機能を含むスレッド、モジュールまたはオブジェクトなどのソフトウェアコンポーネントであってもよい。場合によっては、設定サービス410はまた、設定コントローラ140内において受信されたメッセージの内部ルーティングの役割を果たすネットワークモジュール(図示せず)を設定することなどによって、ノード130から発生するものとして識別された設定に対する要求を、ノード130を設定するために割当てられた設定ワーカー420にルーティングさせてもよい。設定ワーカー420は、設定についての要求をノード130から受信すると、
図1〜
図3に関して上述したように、ノード130を設定するように設定リソース150におけるノード130と対話し得る。
【0049】
設定サービス410および設定ワーカー420は、1セットの設定データ432を作成して維持し得る。いくつかの実現例においては、設定データ432は、ペンディング中の設定動作についての情報、以前の設定動作の結果(たとえば成功もしくは失敗)、または、設定コントローラ140において失敗があった場合にペンディング中の設定動作を回復させるかもしくは再開させるのに用いられるリカバリデータを含み得る。
【0050】
図示のとおり、設定サービス410は課金記録470およびログ480を作成する。いくつかの実現例においては、課金記録470およびログ480は、完了した設定動作についての情報を含む。たとえば、課金記録470は、ノード130のデプロイを成功させるために、設定イニシエータ440または別のエンティティに課金されるべき料金を含み得る。ログ480は、ノード130のための設定プロセスに関する詳細情報、たとえば、どの設定コマンドが設定コントローラ140によって発行されたか、コマンドの結果などを含み得る。ログ480は、設定コントローラ140の活動の履歴記録を提供してもよい。
【0051】
ユーザインターフェイス450は、課金記録470、ログ480からアドミニストレータ460への情報に対するアクセスを提供する。たとえば、アドミニストレータ460は、HTTPを用いてネットワークを介してユーザインターフェイス450にアクセスするためにウェブブラウザを用いてもよく、課金記録470およびログ480からの情報を含むウェブページをユーザインターフェイスから検索してもよい。いくつかの実現例においては、ユーザインターフェイス450、または図示されるものとは異なるユーザインターフェイスは、アドミニストレータ460が課金記録470およびログ480内の情報をサーチすること、情報をフィルタリングすること、さまざまな方法で情報を閲覧すること、情報をさまざまなフォーマットでエクスポートすること、または、他の動作を実行することを可能にし得る。
【0052】
図5は、クラウドコンピューティングシステムにおいてリソースをセキュアに設定するための例示的なプロセス500のフローチャートである。明瞭にするために、プロセス500は
図1に示されるコンポーネントに関連付けて説明することとする。505において、設定コントローラ140は、クラウドコンピューティングネットワークにおける特定のノード130から設定要求を受信する。場合によっては、設定要求は、特定のノードについてのノード情報を含む。ノード情報は、特定のノードのアイデンティティを含み得る。
【0053】
510において、設定コントローラ140は、ノード情報に少なくとも部分的に基づいて、特定のノード130が設定のために認可されていることを確認する。場合によっては、特定のノード130が設定のために認可されていることを確認することは、設定コントローラ140が、情報要求をネットワークを介して特定のノード130に送信すること、情報要求に対する応答をネットワークを介して特定のノード130から受信すること、特定のノード130から受信した応答が予想される応答と一致することを確認することを含む。いくつかの実現例においては、情報要求は、それが受信されたときに特定のノード130によって実行されるべき1つ以上のコマンドを含むとともに、情報要求に対する応答は、特定のノード130によって1つ以上のコマンドを実行することによって生成される出力を含む。特定のノード130が設定のために認可されていることを確認することはまた、クラウドコンピューティングネットワークに関連付けられた管理コンポーネントが、特定のノード130から受信したのと一致するノード情報を有するノードを作成したことと、ノードがまだ設定されていないこととを判断し得る。いくつかの実現例においては、ノード情報は、特定のノード130がどのように作成されたかを詳述する作成情報を含むとともに、特定のノード130が設定のために認可されていることを確認することは、作成情報がクラウドコンピューティングネットワークに関連付けられたセキュリティポリシーに一致することを確認することを含む。作成情報は、特定のノード130を作成した管理コンポーネント、特定のノード130を作成した管理コンポーネントのユーザ、特定のノードが作成された目的であるプロジェクト、または特定のノード130についてのノードタイプ、のうち少なくとも1つを含み得る。
【0054】
515において、
図1に関して上述したように、特定のノード130が設定のために認可されていることを確認したことに応じて、設定コントローラ140は、ノード情報に少なくとも部分的に基づいて特定のノード130上で実行すべき設定動作を識別する。520において、
図1に関して上述したように、設定コントローラ140は、識別された1つ以上の設定動作に対応する設定コマンドを特定のノード130に送信するとともに、特定のノード130は、設定コマンドを受信するとこれを実行して、対応する設定動作を実行する。
【0055】
場合によっては、プロセス500はさらに、設定コマンドに対応する設定レポートをネットワークを介して特定のノード130から受信する設定コントローラ140を含む。設定レポートは、特定のノード130による設定コマンドの実行に関するレポート情報を含む。
【0056】
場合によっては、設定コマンドは第1の設定コマンドである。プロセス500はさらに、設定コントローラ140が、レポート情報に基づいて特定のノード130によって第1の設定コマンドを実行するのに成功したと判断することと、第1の設定コマンドを実行するのに成功したと判断したことに応じて、1つ以上の付加的な設定動作に対応する第2の設定コマンドを、ネットワークを介して、特定のノード130に送信することとを含む。この場合、1つ以上の付加的な設定動作は、識別された設定動作から選択されるものであって、第1の設定コマンドに対応する設定動作とは異なる。
【0057】
いくつかの実現例においては、プロセス500はさらに、設定コントローラ140が、レポート情報に基づいて、特定のノード130によって設定コマンドを実行するのに成功しなかったと判断することと、設定コマンドを実行するのに成功しなかったと判断したことに応じて、特定のノード130を設定することに成功しなかったことを、特定のノード130に関連付けられた管理コンポーネントに通知することとを含む。
【0058】
図6は、クライアントまたは1つのサーバまたは複数のサーバとして、この明細書中に記載されるシステムおよび方法を実現するために用いられ得るコンピューティングデバイス600および650のブロック図である。コンピューティングデバイス600は、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレームおよび他の適切なコンピュータなどのデジタルコンピュータのさまざまな形態を表わすように意図されている。コンピューティングデバイス650は、携帯情報端末、携帯電話、スマートフォンおよび他の同様のコンピューティングデバイスなどのモバイルデバイスのさまざまな形態を表わすように意図されている。加えて、コンピューティングデバイス600または650はユニバーサルシリアルバス(Universal Serial Bus:USB)フラッシュドライブを含み得る。USBフラッシュドライブはオペレーティングシステムおよび他のアプリケーションを格納し得る。USBフラッシュドライブは、別のコンピューティングデバイスのUSBポートへ挿入され得るワイヤレス送信機またはUSBコネクタのような入出力コンポーネントを含み得る。ここに示すコンポーネント、それらの接続および関係、ならびにそれらの機能は例示であることが意図されているに過ぎず、本文書に記載のおよび/または請求項に記載の発明の実現例を限定することを意図していない。
【0059】
コンピューティングデバイス600は、プロセッサ602、メモリ604、ストレージデバイス606、メモリ604および高速拡張ポート610に接続している高速インターフェイス608、ならびに低速バス614およびストレージデバイス606に接続している低速インターフェイス612を含む。コンポーネント602,604,606,608,610および612の各々はさまざまなバスを用いて相互に接続されており、共通のマザーボード上にまたは他の態様で適宜搭載され得る。プロセッサ602は、コンピューティングデバイス600内で実行される命令を処理可能であり、この命令には、GUIのためのグラフィック情報を高速インターフェイス608に結合されているディスプレイ616などの外部入出力デバイス上に表示するためにメモリ604内またはストレージデバイス606上に格納されている命令が含まれる。他の実現例では、複数のプロセッサおよび/または複数のバスが、複数のメモリおよび複数種類のメモリとともに必要に応じて用いられ得る。また、複数のコンピューティングデバイス600が接続されてもよく、各デバイスは(たとえばサーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして)必要な動作の一部を提供する。
【0060】
メモリ604は情報をコンピューティングデバイス600内に格納する。一実現例では、メモリ604は1つまたは複数の揮発性メモリユニットである。別の実現例では、メモリ604は1つまたは複数の不揮発性メモリユニットである。また、メモリ604は、磁気ディスクまたは光ディスクといった別の形態のコンピュータ読取り可能媒体であってもよい。
【0061】
ストレージデバイス606は、コンピューティングデバイス600にマスストレージを提供可能である。一実現例では、ストレージデバイス606は、フロッピー(登録商標)ディスクデバイス、ハードディスクデバイス、光ディスクデバイス、またはテープデバイス、フラッシュメモリもしくは他の同様のソリッドステートメモリデバイス、またはストレージエリアネットワークもしくは他の構成におけるデバイスを含む多数のデバイスといった、コンピュータ読取り可能媒体であってもよく、または当該コンピュータ読取り可能媒体を含んでいてもよい。コンピュータプログラムプロダクトが情報媒体内に有形に具体化され得る。また、コンピュータプログラムプロダクトは、実行されると上述のような1つ以上の方法を実行する命令を含み得る。情報媒体は、メモリ604、ストレージデバイス606、またはプロセッサ602上のメモリといった、コンピュータ読取り可能媒体またはマシン読取り可能媒体である。
【0062】
高速コントローラ608はコンピューティングデバイス600のための帯域幅集約的な動作を管理するのに対して、低速コントローラ612はより低い帯域幅集約的な動作を管理する。そのような機能の割当ては例示に過ぎない。一実現例では、高速コントローラ608はメモリ604、ディスプレイ616に(たとえばグラフィックスプロセッサまたはアクセラレータを介して)、およびさまざまな拡張カード(図示せず)を受付け得る高速拡張ポート610に結合される。当該実現例では、低速コントローラ612はストレージデバイス606および低速拡張ポート614に結合される。さまざまな通信ポート(たとえばUSB、ブルートゥース(登録商標)、イーサネット(登録商標)、無線イーサネット)を含み得る低速拡張ポートは、キーボード、ポインティングデバイス、スキャナ、またはスイッチもしくはルータといったネットワーキングデバイスなどの1つ以上の入出力デバイスに、たとえばネットワークアダプタを介して結合され得る。
【0063】
コンピューティングデバイス600は、図に示すように多数の異なる形態で実現されてもよい。たとえば、コンピューティングデバイス600は標準的なサーバ620として、またはそのようなサーバのグループ内で複数回実現されてもよい。また、コンピューティングデバイス600はラックサーバシステム624の一部として実現されてもよい。さらに、コンピューティングデバイス600はラップトップコンピュータ622などのパーソナルコンピュータにおいて実現されてもよい。代替的には、コンピューティングデバイス600からのコンポーネントは、デバイス650などのモバイルデバイス(図示せず)内の他のコンポーネントと組合されてもよい。そのようなデバイスの各々がコンピューティングデバイス600,650のうち1つ以上を含んでいてもよく、システム全体が、互いに通信する複数のコンピューティングデバイス600,650で構成されてもよい。
【0064】
コンピューティングデバイス650は、数あるコンポーネントの中でも特に、プロセッサ652、メモリ664、ディスプレイ654などの入出力デバイス、通信インターフェイス666、およびトランシーバ668を含む。また、デバイス650には、付加的なストレージを提供するために、マイクロドライブまたは他のデバイスなどのストレージデバイスが設けられてもよい。コンポーネント650,652,664,654,666および668の各々はさまざまなバスを用いて相互に接続されており、当該コンポーネントのいくつかは共通のマザーボード上にまたは他の態様で適宜搭載され得る。
【0065】
プロセッサ652は、メモリ664に格納されている命令を含む、コンピューティングデバイス650内の命令を実行可能である。プロセッサは、別個の複数のアナログおよびデジタルプロセッサを含むチップのチップセットとして実現されてもよい。さらに、プロセッサは、いくつかのアーキテクチャのうちのいずれかを使用して実現され得る。たとえば、プロセッサ610は、CISC(Complex Instruction Set Computers(複雑命令セットコンピュータ))プロセッサ、RISC(Reduced Instruction Set Computer(簡略化命令セットコンピュータ))プロセッサ、または、MISC(Minimal Instruction Set Computer(最小命令セットコンピュータ))プロセッサであり得る。プロセッサは、たとえば、ユーザインターフェイスの制御、デバイス650が実行するアプリケーション、およびデバイス650による無線通信といった、デバイス650の他のコンポーネントの協調を提供し得る。
【0066】
プロセッサ652は、ディスプレイ654に結合された制御インターフェイス658およびディスプレイインターフェイス656を介してユーザと通信し得る。ディスプレイ654は、たとえば、TFTディスプレイ(Thin-Film-Transistor Liquid Crystal Display:薄膜トランジスタ液晶ディスプレイ)もしくはOLED(Organic Light Emitting Diode:有機発光ダイオード)ディスプレイ、または他の適切なディスプレイ技術であり得る。ディスプレイインターフェイス656は、ディスプレイ654を駆動してグラフィックおよび他の情報をユーザに提示するための適切な回路を含み得る。制御インターフェイス658はユーザからコマンドを受け、当該コマンドをプロセッサ652に提示できるように変換し得る。さらに、デバイス650と他のデバイスとの隣接通信を可能にするために、プロセッサ652と通信する外部インターフェイス662が設けられてもよい。外部インターフェイス662は、たとえば、ある実現例では有線通信を提供し、他の実現例では無線通信を提供してもよく、また、複数のインターフェイスが用いられてもよい。
【0067】
メモリ664は情報をコンピューティングデバイス650内に格納する。メモリ664は、1つもしくは複数のコンピュータ読取り可能媒体、1つもしくは複数の揮発性メモリユニット、または1つもしくは複数の不揮発性メモリユニットの1つ以上として実現され得る。さらに、拡張メモリ674が設けられてもよく、たとえばSIMM(Single In Line Memory Module)カードインターフェイスを含み得る拡張インターフェイス672を介してデバイス650に接続されてもよい。このような拡張メモリ674はデバイス650に余分のストレージスペースを提供し得るか、またはデバイス650のためのアプリケーションもしくは他の情報をさらに格納し得る。具体的には、拡張メモリ674は上述のプロセスを実行または補足するための命令を含み得るとともに、セキュアな情報も含み得る。このため、たとえば、拡張メモリ674はデバイス650のためのセキュリティモジュールとして設けられてもよく、デバイス650のセキュアな使用を許可する命令でプログラムされてもよい。さらに、ハッキング不可能なようにSIMMカード上に識別情報を置くなどして、セキュアなアプリケーションが付加的な情報とともにSIMMカードを介して設けられてもよい。
【0068】
メモリは、以下に記載のように、たとえばフラッシュメモリおよび/またはNVRAMメモリを含み得る。一実現例では、コンピュータプログラムプロダクトが情報媒体内に有形に具体化される。コンピュータプログラムプロダクトは、実行されると上述のような1つ以上の方法を実行する命令を含む。情報媒体は、メモリ664、拡張メモリ674、またはプロセッサ652上のメモリなどのコンピュータ読取り可能媒体またはマシン読取り可能媒体であって、たとえばトランシーバ668または外部インターフェイス662を介して受信され得る。
【0069】
デバイス650は、必要に応じてデジタル信号処理回路を含み得る通信インターフェイス666を介して無線通信し得る。通信インターフェイス666は、とりわけ、GSM(登録商標)音声通話、SMS、EMS、またはMMSメッセージング、CDMA、TDMA、PDC、WCDMA(登録商標)、CDMA2000、またはGPRSといった、さまざまなモードまたはプロトコル下の通信を提供し得る。そのような通信は、たとえば無線周波数トランシーバ668を介して行われてもよい。さらに、ブルートゥース、Wi−Fi、または他のそのようなトランシーバ(図示せず)を用いるなどして、短距離通信が行われてもよい。さらに、GPS(Global Positioning System:全地球測位システム)レシーバモジュール670が付加的なナビゲーション関連および位置関連の無線データをデバイス650に提供し得るとともに、当該データはデバイス650上で実行されるアプリケーションによって適宜用いられ得る。
【0070】
また、デバイス650は、ユーザから口頭情報を受けて当該情報を使用可能なデジタル情報に変換し得る音声コーデック660を用いて可聴的に通信し得る。音声コーデック660も同様に、たとえばデバイス650のハンドセット内で、スピーカを介すなどしてユーザに可聴音を生成し得る。そのような音は音声電話からの音を含んでいてもよく、録音された音(たとえば音声メッセージ、音楽ファイル等)を含んでいてもよく、さらに、デバイス650上で実行されるアプリケーションが生成する音を含んでいてもよい。
【0071】
コンピューティングデバイス650は、図に示すように多数の異なる形態で実現されてもよい。たとえば、コンピューティングデバイス650はセルラー電話680として実現されてもよい。また、コンピューティングデバイス650は、スマートフォン682、携帯情報端末、または他の同様のモバイルデバイスの一部として実現されてもよい。
【0072】
本明細書に記載のシステムおよび技術のさまざまな実現例は、デジタル電子回路、集積回路、特別に設計されたASIC(application specific integrated circuit:特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組合せで実現され得る。これらのさまざまな実現例は、少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステム上で実行可能および/または解釈可能な1つ以上のコンピュータプログラムにおける実現例を含んでいてもよく、当該プロセッサは専用であっても汎用であってもよく、ストレージシステム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスからデータおよび命令を受信するように、かつこれらにデータおよび命令を送信するように結合されている。
【0073】
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーションまたはコードとしても公知)はプログラマブルプロセッサのためのマシン命令を含んでおり、高レベル手続きおよび/もしくはオブジェクト指向プログラミング言語で、ならびに/またはアセンブリ/マシン言語で実現され得る。本明細書において使用する「マシン読取り可能媒体」および「コンピュータ読取り可能媒体」という用語は、マシン命令および/またはデータをプログラマブルプロセッサに提供するために用いられる任意のコンピュータプログラムプロダクト、装置および/またはデバイス(たとえば磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(Programmable Logic Device:PLD))を指し、マシン命令をマシン読取り可能信号として受信するマシン読取り可能媒体を含む。「マシン読取り可能信号」という用語は、マシン命令および/またはデータをプログラマブルプロセッサに提供するために用いられる任意の信号を指す。
【0074】
ユーザと対話できるようにするために、本明細書に記載のシステムおよび技術は、情報をユーザに表示するためのディスプレイデバイス(たとえばCRT(cathode ray tube:陰極線管)またはLCD(液晶ディスプレイ)モニタ)と、ユーザがコンピュータに入力することを可能にするキーボードおよびポインティングデバイス(たとえばマウスまたはトラックボール)とを有するコンピュータ上で実現され得る。他の種類のデバイスを用いてユーザと対話できるようにすることもでき、たとえば、ユーザに提供されるフィードバックは任意の形態の感覚フィードバック(たとえば視覚フィードバック、聴覚フィードバック、または触覚フィードバック)であり得るとともに、ユーザからの入力は、音響入力、スピーチ入力または触覚入力を含む任意の形態で受け付けられ得る。
【0075】
本明細書に記載のシステムおよび技術は、バックエンドコンポーネントを(たとえばデータサーバとして)含むコンピューティングシステムにおいて実現され得るか、またはミドルウェアコンポーネント(たとえばアプリケーションサーバ)を含むコンピューティングシステムにおいて実現され得るか、またはフロントエンドコンポーネント(たとえば、ユーザが上記のシステムおよび技術の実現例と対話する際に使用可能なグラフィックユーザインターフェイスもしくはウェブブラウザを有するクライアントコンピュータ)を含むコンピューティングシステムにおいて実現され得るか、またはそのようなバックエンド、ミドルウェア、もしくはフロントエンドコンポーネントの任意の組合せを含むコンピューティングシステムにおいて実現され得る。システムのコンポーネントは、任意の形態または媒体のデジタルデータ通信(たとえば通信ネットワーク)によって相互に接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(local area network:LAN)、ワイドエリアネットワーク(wide area network:WAN)、(アドホックまたはスタティックメンバーを有する)ピアツーピアネットワーク、グリッドコンピューティングインフラストラクチャ、および、インターネットを含む。システムのコンポーネントはまた、仮想マシンインスタンスまたはコンテナインスタンスなどのソフトウェアインスタンスを実行するための1つ以上の仮想環境を含むコンピューティングデバイス(たとえば、クライアントまたはサーバ)であり得る。仮想環境は、実行するソフトウェアインスタンスに対して、ハードウェア、ソフトウェアおよび他のリソースの仮想表現を提供し得る。
【0076】
コンピューティングシステムはクライアントおよびサーバを含み得る。クライアントおよびサーバは一般に互いにリモートであり、典型的には通信ネットワークを介して対話する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行されて互いにクライアント−サーバ関係を有するコンピュータプログラムによって発生する。いくつかの実現例においては、サーバは、通信ネットワークを介してクライアントによってアクセスされるクラウドコンピューティングシステム内のノードであってもよい。
【0077】
いくつかの実現例を詳細に上述してきたが、他の変更例も実現可能である。加えて、図に示されている論理のフローは、望ましい結果を実現するために、図示された特定の順序または連続する順序を必要としない。他のステップが提供されてもよく、または、ステップが上述のフローから省かれてもよく、他のコンポーネントが上述のシステムに追加されてもよく、または上述のシステムから省かれてもよい。したがって、他の実現例も添付の特許請求の範囲内にある。