(58)【調査した分野】(Int.Cl.,DB名)
計算環境において、ソース・サービスとターゲット・サービスとの間で1組のパスワード資格証明を同期させる方法であって、前記1組のパスワード資格証明が、前記ソース・サービスおよび前記ターゲット・サービスの各々へのアクセスを可能にし、前記方法が、
プロセッサーにより、同期タイムスタンプを提供するステップであって、前記同期タイムスタンプが、前記ソース・デバイスおよび前記ターゲット・サービス間の最後のパスワード資格証明同期に対応する、ステップと、
ハッシュされた1組の変更されたパスワード資格証明を受けるステップであって、前記ハッシュされた1組の変更されたパスワード資格証明が、前記最後のパスワード資格証明同期から前記1組のパスワード資格証明に対し行われた変更のみを含む、ステップと、
前記ハッシュされた1組の変更されたパスワード資格証明を、アイデンティティ認証における使用のために、前記ターゲット・サービスにエクスポートするステップと、
を含み、
前記ハッシュされた1組の変更されたパスワード資格証明が、一次ハッシング・アルゴリズムによって計算され、前記方法が更に、前記ターゲット・サービスにエクスポートするために、前記ハッシュされた1組の変更されたパスワード資格証明に対応する二次ハッシュ・アルゴリズムを使用して、前記ハッシュされた1組の変更されたパスワード資格証明を秘密保護データーに二次的にハッシングするステップを含む、方法。
コンピューター実行可能命令を有する1つ以上のコンピューター読み取り可能記憶媒体であって、前記コンピューター実行可能命令が1つ以上のプロセッサーによって実行されると、前記1つ以上のプロセッサーに動作を実行させ、前記動作が、
ターゲット・サービスにおいて、平文パスワードに対応する保護パスワード・データーを含む複数組のデーターを維持する動作であって、保護パスワード・データーがそれぞれのアイデンティティと関連し、前記保護パスワード・データーが、少なくとも2つのハッシング・アルゴリズムの組み合わせによって平文パスワードから計算され、前記ターゲット・サービスに同期される、動作と、
前記ターゲット・サービスにおいて、アイデンティティおよびパスワードに対応する資格証明を含むログイン試行を受ける動作と、
前記パスワードに対して少なくとも1つのハッシング・アルゴリズムを実行することに基づいて第1の値を計算する動作と、
前記アイデンティティを認証するために、前記第1の値を、前記アイデンティティに関連する保護パスワード・データーと比較する動作と、
を含む、1つ以上のコンピューター読み取り可能記憶媒体。
【発明を実施するための形態】
【0012】
[0020] 本明細書において説明する技術の種々の形態は、全体的に、オンプレミス・リソース・アクセスおよびクラウド・リソース・アクセスの双方に、1組の資格証明が使用されることを可能にするパスワード同期技術を対象とする。理解されるであろうが、この技術は、比較的単純にオンプレミスを設置および維持しつつ、同時に安全である解決手段を提供する。
【0013】
[0021] 1つの形態では、同期エージェントが、オンプレミス・ディレクトリー・サービスからのクラウド・ディレクトリー・サービスとの同期動作を実行する。一実現例では、ドメイン・メッシュ内の各ドメイン・コントローラーにおいて実行するのではなく、この同期エージェントをドメイン・コントローラー・メッシュに1つのコンポーネントとして追加することができる(例えば、ドメインに結合された1つのマシンにおいて実行する)。
【0014】
[0022] 1つの形態では、最初に1つ以上のハッシュ・アルゴリズムを使用してパスワードをハッシュすることによって、オンプレミス・ディレクトリー・サービスにおいて維持される資格証明が、クラウド・ディレクトリー・サービスと同期される。一次ハッシュが使用され、少なくとも1つの二次ハッシュと組み合わせて使用されてもよい。平文パスワードは決してクラウドに送られない。
【0015】
[0023] 1つの形態では、本技術は、ユーザーが彼らの既存のパスワードを変更する必要なく、またそうでなければユーザーの平文パスワードを再度取り込む必要なく、オンプレミス・システムに、新たな一次ハッシュ・アルゴリズムに切り替えさせることをサポートする。更に、二次ハッシュ・アルゴリズムが劣化した場合、または更に安全な二次ハッシュ・アルゴリズムを使用することが望ましくなった場合、ユーザーが彼らの既存のパスワードを変更する必要なく、またそうでなければユーザーの平文パスワードを再度取り込む必要なく、二次ハッシュ・アルゴリズムを変更することができる。
【0016】
[0024] 尚、本明細書における例はいずれも非限定的であることは理解されてしかるべきである。例えば、本明細書における例の多くは、一般に、Active Directory(登録商標)のような、ディレクトリー・サービス環境において説明される。しかしながら、同様のアイデンティティ・インフラストラクチャー/環境はいずれも、本明細書において説明する技術から利益を得ることができる。更に、これらの例は安全な資格証明同期を対象とするが、安全に同期される必要がある他のタイプのデーターも、本明細書において説明する技術から利益を得ることができる。したがって、本発明は、本明細書において説明する特定の実施形態、形態、概念、構造、機能、そして例のいずれにも限定されない。逆に、本明細書において説明する実施形態、形態、概念、構造、機能、および例はいずれも非限定的であり、本発明は、データー同期、データー・セキュリティ、および/またはクラウド・サービス一般において利益および利点を提供する種々の方法で使用することができる。
【0017】
[0025]
図1は、オンプレミス・コンポーネントからクラウド・ディレクトリー・サービス102への資格証明データーを含むデーターを安全に同期させるために使用することができるコンポーネント例を示すブロック図である。オンプレミス・コンポーネント104は、パスワード同期エージェント108を含む同期ホスト・プロセス106(例えば、アイデンティティ管理同期エンジン)を含む。一般に、同期ホスト・プロセス106は、ソース・ディレクトリー・サービス110からの資格証明の引き出しおよびエクスポートを能動的に駆動するプロセスを含む。
【0018】
[0026] 一実現例では、同期はパスワード同期エージェント108によって遂行される。パスワード同期エージェント108は、該当するインターフェース112を介してオンプレミス(ローカル)ディレクトリー・サービス108(ソース・ディレクトリー)にコールして、以下で説明するように、ハッシュされたパスワードを含む資格証明関係データーを得る。ハッシュされたパスワードの内最後の同期時以降に変更されたもの(デルタ)のみを得るように、コールは同期タイムスタンプを与えることができる。例えば、Active Directory(登録商標)は公に文書化されたAPI(IDL DRSGetNCChanges)を有し、これがコールされると、与えられたタイムスタンプ以降の変更のリストを引き出して戻す。与えられたタイムスタンプは、パスワード同期エージェント108によって与えられた最後の同期時刻である。変更データーがパスワード関係データーよりも多くを含むシナリオでは、同期エージェント108は、戻されたデーターを解析/フィルタリングして、最後の同期時刻以降に更新された1組の資格証明を判定する。
【0019】
[0027] 1組の変更された資格証明は、1組のハッシュされた資格証明として、パスワード同期エージェント108に戻される。一実現例では、これらのハッシュは、同期ホスト・プロセス106によっても、パスワード同期エージェント108によっても保存されず、資格証明ハッシュをターゲット・ディレクトリー・サービス、例えば、
図1におけるクラウド・ディレクトリー・サービス102に同期させる試行において一時的に使用されるだけである。一実現例では、オンプレミス・パスワード・ハッシュは、ターゲット(クラウド)ディレクトリー・サービス102に送られる前に、ランダム生成(ソルト)値を使用して、複数回繰り返して二次的にハッシュされる。
【0020】
[0028] 一実現例では、パスワード同期エージェント108は、範囲内アイデンティティ(in-scope identities)(範囲は、アイデンティティ・インフラストラクチャーにおいて周知の概念である)の資格証明のみをターゲット・ディレクトリー・サービス102に同期させようとする。範囲外アイデンティティに属する資格証明は、ターゲット・ディレクトリー・サービス102に同期されない。更に、ターゲット・ディレクトリー・サービス102にプロビジョニングされていないアイデンティティに属する資格証明も同期されず、代わりに、そのアイデンティティがターゲット・ディレクトリー・サービス102において首尾良くプロビジョニングされたときに、後の時点においてこれらを同期させることができる。
【0021】
[0029]
図1において、クラウド管理エージェント114として表されるターゲット・ディレクトリー・コネクター・コンポーネントは、ハッシュされた資格証明のクラウド116へのエクスポートを扱うことを責務とする。このために、クラウド・フロント・エンド・コンポーネント118(例えば、ディレクトリー・サービス同期フロント・エンド・サーバー)は、資格証明を更新する要求を受け、次いで、(例えば、プライベート)プログラム・インターフェース(programmatic interface)122を介して、ハッシュされた資格証明をターゲット・ディレクトリー・サービス記憶システム120に保存しようとする。資格証明キャッシュがターゲット・ディレクトリー・サービスに首尾良く保存された場合、成功ステータスがフロント・エンド・コンポーネント118に戻され、フロント・エンド・コンポーネント118は成功ステータスを同期ホスト・プロセス106に戻す。「成功」応答を受けた時に、同期ホスト・プロセス106は、資格証明がターゲット・ディレクトリー・サービス102に首尾良く同期されたと見なす。失敗応答が発見された場合、後の時点における再試行のために、エクスポートを待ち行列に入れることもできる。
【0022】
[0030]
図2は、以上の動作を1組のステップ例として示す。これらのステップの一部は、1つの資格証明について示されるが、容易に認めることができるように、資格証明同期は、一括処理することもでき、および/またはこれらのステップの一部または全部が並列に実行されてもよい。
【0023】
[0031] ステップ202において、パスワード同期エージェント108(
図1)は変更を要求し、ソース・ディレクトリー・サービス110から(所与のタイムスタンプ以来の)変更を受ける。要求は、同期時点において行われ、周期的でもそれ以外でもよい。前述のように、パスワードは一次ハッシュ関数でハッシュされ、例えば、MD4(パスワード)というような、Ha(パスワード)となる。
【0024】
[0032] ステップ204によって表されるように、変更を受けると、パスワード同期エージェント108はこれらの変更を解析して、どれを同期させるべきか、例えば、どれが範囲内でプロビジョニングされたアイデンティティのパスワード変更か判定する。前述のように、この時点では1つの資格証明だけが扱われていると考える。
【0025】
[0033] ステップ206は、ハッシュされたパスワード、例えば、SHA256(MD4(パスワード))のような、H1(Ha(パスワード))を二次的にハッシュすることを表す。二次的ハッシングについては、以下で更に説明する。
【0026】
[0034] ステップ208では、ハッシュされた資格証明をターゲット・ディレクトリー・サービス102にエクスポートし、ターゲット・ディレクトリー・サービス102はこれを保存しようとする。ステップ210では、エクスポート要求の結果を、戻されたステータスとして受け、ステップ212において評価されるように、成功が受け入れられた場合、資格証明はターゲット・ディレクトリー・サービスに首尾良く同期されたことになり(ステップ214)、本プロセスは終了する。ステップ212によって失敗が検出された場合、ステップ216によって表されるように、エクスポートは、後の時点における再試行のために、待ち行列に入れられる。
【0027】
[0035]
図3において全体的に表されるように、オンプレミス・ドメイン・メッシュ330は、ドメイン1(ドメイン1コントローラー1〜ドメイン1コントローラーjを有する)からドメインn(ドメインnコントローラー1〜ドメインnコントローラーkを有する)までを含む。1つの形態では、このメッシュは、ディレクトリー・サービス・ドメイン・コントローラー・ロケーター・サービス332として実行する、マシン等において実行するコンポーネントを追加することもできる(例えば、加入されるまたそうでなければ結合されるのでもよい)。周知のように、パスワード変更は、1つのドメイン・コントローラーにおいて行われ(例えば、ユーザーから最も近いところであるが、他の方式も実現可能である)、そのドメインの他のドメイン・コントローラーに複製される。本明細書において説明するように、複製されるのは、一次ハッシュによってハッシュされた変更パスワードであって、平文パスワードではない。
【0028】
[0036] 同期ホスト・プロセス106は、ディレクトリー・サービス・ドメイン・コントローラー・ロケーター・サービス332と連絡を取り、資格証明変更データーを引き出すドメイン・コントローラー・インスタンスを判定する。例えば、同期ホスト・プロセス106に変更を提供するために各ドメインにおいて識別される1つのドメイン・コントローラーがある場合がある。このように、メッシュの既存の複製方式を利用して、クラウド・サービスとのパスワード変更同期を実行することも可能である(尚、これは、全ての資格証明変更が取り込まれターゲット・ディレクトリーに同期されることを確保するためには、ソース・ディレクトリー/メッシュに関連する全てのマシンにコンポーネント/コード拡張DLLを登録しなければならない既存のシステムとは対照的であることを注記しておく)。
【0029】
[0037]
図4は、
図3の実現例およびドメイン・コントローラーの動作一般に関するステップ例を要約したものである。ステップ402は、平文のパスワード変更を受けることを表し、これは、通例、ユーザーに最も近いドメイン・コントローラーにおいて行われる(しかし、負荷均衡に基づくというような、他の方式も実現可能である)。ステップ404は、そのドメイン・コントローラーにおいて、パスワードが一次ハッシュ、例えば、Ha(パスワード)によってハッシュされることを表す。ステップ406は、ハッシュされたパスワードを他のドメイン・コントローラーに複製することを表す。
【0030】
[0038] ステップ408は、同期ホスト・プロセス106がディレクトリー・サービス・ドメイン・コントローラー・ロケーター・サービス332と通信して、変更データーのためにどのドメイン・コントローラー(1つまたは複数)に連絡を取るか決定することを表す。一般に、各ドメインから1つのドメイン・コントローラーが、ドメイン・コントローラー・ロケーター・サービス332によって、同期ホスト・プロセス106に識別される。
【0031】
[0039] ステップ410は、パスワード同期エージェントが変更パスワード・ハッシュをディレクトリー・サービス・ドメイン・コントローラーから引き出すことを表す。尚、代案として、要求に応じた同期のため、または何らかの他のスケジュールによって、変更をパスワード同期エージェントにプッシュしてもよいことを注記しておく。同期ホスト・プロセスが、ディレクトリー・サービス・ドメイン・コントローラー・ロケーター・サービス332と同じマシンにおいて実行することは実現可能であるが、先に説明したように、同期ホスト・プロセスは、ターゲット・サービスとの同期を実行するために必要な以外は、ハッシュされたパスワードを保存しない。
【0032】
[0040] ターゲットをハッシュされたパスワードと同期させ、ハッシュされたパスワードを格納することは実現可能であるが、二次ハッシングを有することによって、本明細書において説明するように、多数の利益が得られる。ステップ412は、二次ハッシング、例えば、H1(Ha(パスワード)を表す。1つの形態では、二次ハッシングは、被保護パスワード・ブロブを生成し、これは、ハッシング・アルゴリズムの名称およびバージョン、ならびにランダム・ソルト、繰り返し回数、およびダイジェストを含む。この二次ハッシングの結果は、ターゲット・ディレクトリー・サービスと同期され(ステップ414)、格納される(416)。尚、クラウドが、格納の前に再度ハッシュするためというように、このような二次ハッシングを実行してもよいことを注記しておく。
【0033】
[0041] ログインの形態に移り、例えば、AuthNフロント・エンド・サーバー124(
図1)を介して、アイデンティティ(identity)が、ターゲット・ディレクトリー・サービスに関連するサービスまたはソフトウェアにアクセスしようとするとき、資格証明に、ターゲット・ディレクトリー・サービスの認証プラットフォームにおいて「ソース・ディレクトリーから同期された」という印がある場合、認証プラットフォームは、しかるべきログイン検証手順を実行し、このアイデンティティによって提示された資格証明を、ソース・ディレクトリーから同期された資格証明ハッシュと比較することを理解する。
【0034】
[0042] ターゲット認証プラットフォームは、オンプレミス・ハッシング・アルゴリズムと調和する(match)アルゴリズムを使用するように命令されるが、これは任意の1つのアルゴリズムまたは1組のアルゴリズムでもよい。これは、暗号化方式の指定を含む複数のシナリオに役に立つ。一般に、暗号化方式の指定は、複数のハッシング・アルゴリズムを使用すること、および/またはハッシング・アルゴリズムの組み合わせを可能にする。その結果、一次ハッシング・アルゴリズムはときの経過と共に変わることができ、二次ハッシング・アルゴリズムはときの経過と共に変わることができ、異なる(例えば、第三者)サービスのアルゴリズムを使用してもよい等となる。
【0035】
[0043]
図5は、クラウド・サービスにおけるログオン動作に関係するいくつかのステップ例を示し、ステップ502において開始し、ここで資格証明を使用するログオン試行を受ける。ステップ504において、資格証明に「ソース・ディレクトリーから同期された」等という印がない場合、例えば、クラウドは、認証およびリソース・アクセスのためにのみクラウドを使用する非常に小さな組織のユーザーというような、オンプレミス・ディレクトリー・サービスの一部ではないユーザーによってアクセスされていることになる。また、ユーザーは、オンプレミス・ディレクトリー・サービスの一部かもしれないが、本明細書において説明する技術を使用しておらず、つまり、資格証明に同期されたという印がない。その場合、ステップ506では、この要求を他の方法で、例えば、従来のクラウド・ログオンによって扱う。
【0036】
[0044] 代わりに、ステップ504において、資格証明に「ソース・ディレクトリーから同期された」という印が付けられたことを検出した場合、ステップ508において、例えば、ユーザー・アイデンティティに基づいて、どのハッシュ・アルゴリズム/データーを使用するか調べる。ステップ510では、このハッシュのパラメーター、例えば、ソルトおよび繰り返しを判定する。尚、1つのハッシュ・アルゴリズムしか存在しないというシナリオでは、ステップ508および510は不要であるが、容易に認めることができるように、これらのステップは、暗号化方式の指定を可能にする(provide for)。
【0037】
[0045] ステップ512では、ログオン・パスワード・データーを、被保護パスワード・ブロブに変換し、ステップ514において、ターゲット・サービスのデーターベースに格納されているブロブと比較する。一致があった場合(ステップ516)、ステップ518によってアクセスが許可され、そうでない場合、ステップ520によってアクセスは拒否される。
【0038】
[0046] 尚、暗号化方式の指定は、サービスに影響を与えることなく、そしてユーザーの平文パスワードを再度取り込む必要なく、新たなオンプレミス(一次)ハッシング・アルゴリズム(Ha)をサポートすることを注記しておく。例えば、オンプレミス・システムがHaからHbに切り替える場合について検討する(例えば、ディレクトリー・サービスの次のバージョンが、もっと進んだ何かを優先して、MD4を軽視する)。新たなパスワード/変更パスワード(changed password)が計算され、(H1(Hb(パスワード)))として同期される。ログオンの時点で、ユーザーが彼らのユーザー名および(平文)パスワードをタイプ入力すると、システムは、(H1(Ha))または(H1(Hb))がデーターベース内にあるか否か判定し、比較のために該当するものを平文パスワードに適用する。
【0039】
[0047] 更に、認証プラットフォームは、所望に応じて、格納されているハッシュの追加のハッシングを実行することができる。これは、暗号化方式の指定により、使用されていない(at rest)パスワードの耐時間データー保護(time-resistant data protection)を容易にする。一例として、二次ハッシング・アルゴリズム(H1)が劣化した、即ち、もはや十分に安全とは見なされない場合について検討する。ユーザーの平文パスワードを再度取り込む必要なく、H1ハッシング・アルゴリズムを効果的に置き換えることができる。
【0040】
[0048] 一例として、現在計算および格納されたデーター・ブロブがH1(Ha(パスワード))である場合について検討する。セキュリティのために、新たな二次ハッシング・アルゴリズム(H2)が導入される。
図6のステップ602、604、および606において表されるように、ユーザー毎に、ターゲット・システムはデーターベース全体を解析し、(H2(H1(Ha(パスワード)))を計算し、新たな値を格納する。ステップ608によって解析が完了したと評価されたとき、システムは、ステップ610において全てのユーザーに対して(H1(Ha(パスワード)))を削除し、(H2(H1))アルゴリズムを使用するように切り替える。このように、ターゲット・システムは、もはや劣化して使用されないハッシュを格納しない。尚、ステップ606において既存のブロブを交換することは実現可能であるが、解析プロセスが長大である場合、解析プロセスが完了するまで、ユーザーがログオンするのを禁止してもよい。
【0041】
[0049] ログオンの時点で、ユーザーの観点からは、全てが以前と同じ動作を行う。ユーザーがログインすると、ターゲットは、(H2(H1(Ha)))が、与えられたパスワードに対するハッシュ値を計算しそのハッシュ値を格納されているものと比較するためのハッシング・アルゴリズムであると判定する。
【0042】
[0050] また、ターゲット・システムは、新たなパスワードのために他のハッシュ関数に切り替えることもできる。例えば、既存のものよりもある面で優れていると考えられる他のハッシング・アルゴリズムH3が開発された場合について検討する。例えば、H3はH1よりも遙かに優れている、および/または高速である。この例では、変更はセキュリティの問題ではなく、つまり(H1(Ha(パスワード)))は安全であり、無変化のまま残されている。同期ホスト・プロセス(およびターゲット・サービス)は、任意の新たなユーザー/変更パスワードのために(H3)をサポートするように更新される。このように、ユーザーが彼らのパスワードを変更すると、(H3(Ha(パスワード)))を使用して同期される。ユーザーが彼らのパスワードを変更していない場合、引き続き(H1(Ha(パスワード)))アルゴリズムによって認証される。
【0043】
[0051] パスワード履歴は、クラウド・サービスにおいて保持され、ログオンのときに、ユーザーを締め出すのを回避するために使用することができる。例えば、ユーザーが彼または彼女のパスワードを1つのデバイスにおいて変更し、その結果ブロブをクラウド・サービスに同期させたが、他のデバイスではパスワードを変更していないという場合について検討する。他のデバイスはいつも通りに以前のパスワードを使用してログイン・サービスと通信することができるが、問題を生ずるおそれがある。この問題を回避するために、ユーザーが与える平文パスワードを、「現在のパスワード」として格納されている既存のブロブ(1つまたは複数)と比較すればよく、一致するものがない場合、「以前のパスワード」として格納されているブロブ(1つまたは複数)と比較すればよい。任意の所望組数の以前の1つ以上のパスワード・ブロブ(1つまたは複数)を維持することができる。例えば、現在のパスワードに加えて、最後の2つのパスワード等も有効にしてもよい(work)。
【0044】
[0052] 更に、パスワード履歴の制約が、例えば、パスワードをオンプレミスで変更しないユーザーに対して、保存中に(at rest)ハッシングによって実施されてもよい。例えば、ユーザーが彼らの5つの以前のパスワードをいずれも再使用することが許可されない方針について検討する。クラウド・サービスは、(H3(Ha(パスワード_現行)))のような最新のパスワード・ブロブ、更に方針の制限までの(H3(Haパスワード_以前)))、(H1(Ha(パスワード_以前2)))、(H2((H1(Ha(パスワード_以前3)))等のような、パスワード履歴を格納する。尚、これらのブロブが、同じハッシング・アルゴリズムで生成された必要はないことを注記しておく。実際に、これらの一部は、元のハッシュが安全でないことが分かった場合、または他の理由で変更された場合に、再度ハッシュされたのでもよい。
【0045】
[0053] パスワード変更の時点で、新たなパスワードが収集されるとき、サービスは、パスワード履歴フィールドにおいてアルゴリズムのリストを調べ、対応するハッシュを計算し、これらを、格納されているダイジェストと比較して、変更が許されるか否か判断する。
ネットワーク接続および分散型環境例
[0054] 当業者であれば、本明細書において説明した種々の実施形態および方法は、コンピューター・ネットワークの一部としてまたは分散型計算環境において配備することができ、任意の種類の1つまたは複数のデーター・ストアに接続することができる任意のコンピューターあるいは他のクライアントまたはサーバー・デバイスと併せて実現できることを認めることができよう。これに関して、本明細書において説明した種々の実施形態は、任意の数のメモリーまたは記憶ユニット、ならびに任意の数の記憶ユニットに跨がって実行する任意の数のアプリケーションおよびプロセスを有する任意のコンピューター・システムまたは環境において実現することができる。これは、ネットワーク環境において配備されたサーバー・コンピューターおよびクライアント・コンピューターを有する環境、あるいはリモートまたはローカル・ストレージを有する分散型計算環境を含むが、これらに限定されるのではない。
【0046】
[0055] 分散型コンピューティングは、計算デバイスおよびシステム間の通信交換によって、コンピューター・リソースおよびサービスの共有を可能にする。これらのリソースおよびサービスは、情報の交換、ファイルのような、オブジェクトのキャッシュ・ストレージおよびディスク・ストレージを含む。また、これらのリソースおよびサービスは、負荷均衡化、リソースの拡大、処理の特殊化等のために、複数の処理ユニットに跨がる処理パワーの共有も含む。分散型コンピューティングは、ネットワーク接続を利用し、クライアントが彼らの集合的パワーを利用して企業全体に役立つことを可能にする。これに関して、種々のデバイスは、本開示の種々の実施形態について説明したように、リソース管理メカニズムに関与することができる多くのアプリケーション、オブジェクト、またはリソースを有することができる。
【0047】
[0056]
図7は、ネットワーク型または分散型計算環境例の模式図を示す。分散型計算環境は、計算オブジェクト710、712等、および計算オブジェクトまたはデバイス720、722、724、726、728等を含み、これらは、アプリケーション例730、732、734、736、738によって表されるように、プログラム、メソッド、データー・ストア、プログラマブル・ロジック等を含むことができる。尚、計算オブジェクト710、712等、および計算オブジェクトまたはデバイス720、722、724、726、728等は、パーソナル・ディジタル・アシスタント(PDA)、オーディオ/ビデオ・デバイス、移動体電話機、MP3プレーヤ、パーソナル・コンピューター、ラップトップ等というような、異なるデバイスを含んでもよいことは認めることができよう。
【0048】
[0057] 各計算オブジェクト710、712等および計算オブジェクトまたはデバイス720、722、724、726、728等は、1つ以上の他の計算オブジェクト710、712等および計算オブジェクトまたはデバイス720、722、724、726、728等と、通信ネットワーク740を介して、直接的または間接的のいずれかで通信することができる。
図7では、1つのエレメントとして図示されているが、通信ネットワーク740は、
図7のシステムにサービスを提供する他の計算オブジェクトおよび計算デバイスを含むこともでき、および/または図示されていない複数の相互接続されたネットワークを表すこともできる。また、各計算オブジェクト710、712等あるいは計算オブジェクトまたはデバイス720、722、724、726、728等は、アプリケーション730、732、734、736、738のようなアプリケーションを含むことができる。これらのアプリケーションは、本開示の種々の実施形態にしたがって提供されるアプリケーションとの通信、またはその実装(implementation)に適したAPI、あるいは他のオブジェクト、ソフトウェア、ファームウェア、および/またはハードウェアを利用することもできる。
【0049】
[0058] 分散型計算環境をサポートする種々のシステム、コンポーネント、およびネットワーク構成がある。例えば、計算システムを一緒に、有線システムまたはワイヤレス・システムによって、ローカル・ネットワークによって、あるいは広く分散されたネットワークによって接続することができる。現在、多くのネットワークがインターネットに結合され、広く分散されたコンピューティングのためのインフラストラクチャーを提供し、多くの異なるネットワークを含む(encompass)が、種々の実施形態において説明したようなシステムに付随して行われる通信例には、任意のネットワーク・インフラストラクチャーを使用することができる。
【0050】
[0059] つまり、クライアント/サーバー、ピア・ツー・ピア、または混成アーキテクチャーというような、ネットワーク・トポロジーおよびネットワーク・インフラストラクチャーのホストを利用することができる。「クライアント」とは、それが関係しない他のクラスまたはグループのサービスを使用するクラスまたはグループのメンバーである。クライアントは、他のプログラムまたはプロセスによって提供されるサービスを要求するプロセス、例えば、大まかに1組の命令またはタスクとすることができる。クライアント・プロセスは、他のプログラムやサービス自体について作業詳細(working details)を全く「知る」必要なく、要求したサービスを利用する。
【0051】
[0060] クライアント/サービス・アーキテクチャー、特にネットワーク型システムでは、クライアントは、通常、他のコンピューター、例えば、サーバーによって提供される共有ネットワーク・リソースにアクセスするコンピューターである。
図7の図では、非限定的な例として、計算オブジェクトまたはデバイス720、722、724、726、728等をクライアントとして考えることができ、計算オブジェクト710、712等をサーバーとして考えることができ、サーバーとして機能する計算デバイス710、712等は、クライアント計算オブジェクトまたはデバイス720、722、724、726、728等からデーターを受け、データーを格納し、データーを処理し、データーをクライアント計算オブジェクトまたはデバイス720、722、724、726、728等に送信するというような、データー・サービスを提供するが、状況に依存して、任意のコンピューターをクライアント、サーバー、または双方と見なすことができる。
【0052】
[0061] サーバーは、通例、インターネットまたはワイヤレス・ネットワーク・インフラストラクチャーというような、リモート・ネットワークまたはローカル・ネットワークを介してアクセス可能なリモート・コンピューター・システムである。クライアント・プロセスは、第1コンピューター・システムにおいてアクティブであってもよく、サーバー・プロセスは第2コンピューター・システムにおいてアクティブであってもよく、通信媒体を介して互いに通信し、このようにして分散機能を提供し、複数のクライアントがサーバーの情報収集能力を利用することを可能にする。
【0053】
[0062] 通信ネットワーク740またはバスがインターネットであるネットワーク環境では、例えば、計算デバイス710、712等がウェブ・サーバーであることができ、他の計算オブジェクトまたはデバイス720、722、724、726、728等は、ハイパーテキスト・トランスファ・プロトコル(HTTP)のような、複数の周知のプロトコルの内任意のものによってこのウェブ・サーバーと通信する。また、サーバーとして機能する計算オブジェクト710、712等が、クライアント、例えば、計算オブジェクトまたはデバイス720、722、724、726、728等として役割を果たしてもよい。これは、分散型計算環境の特性と言える。
計算デバイス例
[0063] 前述のように、本明細書において説明した技法は任意のデバイスに適用できるという利点がある。したがって、全ての種類のハンドヘルド、携帯用、および他の計算デバイスならびに計算オブジェクトが、種々の実施形態との使用に考えられることは理解できよう。したがって、
図8において以下に説明する以下の汎用リモート・コンピューターは、計算デバイスの一例に過ぎない。
【0054】
[0064] 実施形態は、部分的に、デバイスまたはオブジェクト用サービスの開発者による使用のためのオペレーティング・システムによって実現されること、および/または本明細書において説明した種々の実施形態の1つ以上の機能的形態を実行するために動作するアプリケーション・ソフトウェア内に含まれることが可能である。ソフトウェアは、クライアント・ワークステーション、サーバー、または他のデバイスというような1つ以上のコンピューターによって実行される、プログラム・モジュールのような、コンピューター実行可能命令という一般的なコンテキストで説明されてもよい。データーを通信するために使用することができるコンピューター・システムは、種々の構成およびプロトコルを有し、したがって特定の構成またはプロトコルが限定的と見なされないことが、当業者には認められよう。
【0055】
[0065] つまり、
図8は、本明細書において説明した実施形態の1つ以上の形態を実現することができる、適した計算システム環境800の一例を示すが、先に明確にしたように、計算システム環境800は、適した計算環境の一例に過ぎず、使用範囲や機能に関して全く限定を示唆することを意図していない。加えて、計算システム環境800は、計算システム環境例800に示されるコンポーネントの任意の1つまたは組み合わせに関して依存性を有するように解釈されることは全く意図していない。
【0056】
[0066]
図8を参照すると、1つ以上の実施形態を実現するためのリモート・デバイス例は、コンピューター810の形態とした汎用計算デバイスを含む。コンピューター810のコンポーネントは、処理ユニット820、システム・メモリー830、およびシステム・メモリーから処理ユニット820までを含む種々のシステム・コンポーネントを結合するシステム・バス822を含むことができるが、これらに限定されるのではない。
【0057】
[0067] コンピューター810は、通例、種々のコンピューター読み取り可能媒体を含み、コンピューター810によってアクセスすることができる任意の入手可能な媒体とすることができる。システム・メモリー830は、リード・オンリー・メモリー(ROM)および/またはランダム・アクセス・メモリー(RAM)というような揮発性および/または不揮発性メモリーの形態としたコンピューター記憶媒体を含むことができる。一例として、そして限定ではなく、システム・メモリー830は、オペレーティング・システム、アプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データーも含むことができる。
【0058】
[0068] ユーザーは、入力デバイス840を介して、コマンドおよび情報をコンピューター810に入力することができる。また、モニターまたは他のタイプのディスプレイ・デバイスも、出力インターフェース850のようなインターフェースを介して、システム・バス822に接続される。モニターに加えて、コンピューターは、スピーカーおよびプリンターのような、他の周辺出力デバイスも含むことができ、これらは出力インターフェース850を介して接続されればよい。
【0059】
[0069] コンピューター810は、リモート・コンピューター870のような、1つ以上の他のリモート・コンピューターへの論理接続を使用して、ネットワーク型または分散型環境において動作することができる。リモート・コンピューター870は、パーソナル・コンピューター、サーバー、ルーター、ネットワークPC、ピア・デバイスまたは他の共通ネットワーク・ノード、あるいは任意の他のリモート・メディア消費または送信デバイスであってもよく、更にコンピューター810に関して以上で説明したエレメントの内任意のものまたは全てを含んでもよい。
図8に示す論理接続は、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)のようなネットワーク872を含むが、他のネットワーク/バスも含んでもよい。このようなネットワーキング環境は、家庭、事務所、企業規模のコンピューター・ネットワーク、イントラネット、およびインターネットにおいては極普通である。
【0060】
[0070] 前述のように、種々の計算デバイスおよびネットワーク・アーキテクチャーと関連付けて実施形態例について説明したが、基礎となる概念は、リソース使用の効率を向上させることが望ましいあらゆるネットワーク・システムおよび計算デバイスまたはシステムにも適用することができる。
【0061】
[0071] また、アプリケーションおよびサービスが本明細書において提供された技法を利用することを可能にする同じ機能または同様の機能、例えば、しかるべきAPI、ツール・キット、ドライバー・コード、オペレーティング・システム、制御手段、単独のまたはダウンロード可能なソフトウェア・オブジェクト等を実現するには複数の方法がある。したがって、本明細書における実施形態は、API(または他のソフトウェア・オブジェクト)の観点から、更には本明細書において説明した1つ以上の実施形態を実現するソフトウェアまたはハードウェア・オブジェクトの観点からも考えられる。つまり、本明細書において説明した種々の実施形態は、全体的にハードウェア、部分的にハードウェアであり部分的にソフトウェア、およびソフトウェアである態様を有することができる。
【0062】
[0072] 「一例の」(exemplary)という用語は、本明細書において用いられる場合、例(example)、実例(instance)、または例示(illustration)として役割を果たすことを意味する。疑問回避のために、本明細書において開示される主題は、このような例によって限定されないこととする。加えて、本明細書において「例示」(exemplary)として記載される態様または設計(design)はいずれも、他の態様または設計よりも好ましいまたは有利であるとは必ずしも解釈されず、当業者には知られている等価の構造および技法例を除外することを意味するのでもない。更に、「含む」(include)、「有する」(has)、「収容する」(contain)という用語、およびその他の同様の単語が使用されている限りでは、このような用語は、疑問回避のために、いずれの追加のエレメントまたは他のエレメントも除外しない、開いた移行語(open transition word)として請求項において用いられるときの「備える」(comprising)という用語と同様に、包含的であることを意図している。
【0063】
[0073] 前述のように、本明細書において説明した種々の技法は、ハードウェアまたはソフトウェア、あるいはしかるべきときには、双方の組み合わせによって実現することができる。本明細書において使用する場合、「コンポーネント」、「モジュール」、「システム」等の用語は、同様に、ハードウェア、ハードウェアおよびソフトウェアの組み合わせ、ソフトウェア、または実行中のソフトウェアのいずれかである、コンピューター関係エンティティに言及することを意図している。例えば、コンポーネントは、プロセッサーにおいて実行するプロセス、プロセッサー、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および/またはコンピューターであってもよいが、これらに限定されるのではない。例示として、コンピューターにおいて実行するアプリケーション、およびこのコンピューターの双方がコンポーネントであることができる。1つ以上のコンポーネントが1つのプロセスおよび/または実行のスレッド内に存在することもでき、コンポーネントは、1つのコンピューターに局在すること、および/または2つ以上のコンピューター間で分散されるのでもよい。
【0064】
[0074] 前述のシステムは、様々なコンポーネント間における相互作用に関して説明した。尚、このようなシステムおよびコンポーネントは、それらのコンポーネントまたは指定されたサブコンポーネント、指定されたコンポーネントまたはサブコンポーネントの一部、および/または追加のコンポーネントを、以上のことの種々の置換(permutation)および組み合わせにしたがって、含むことができることを認めることができよう。また、サブコンポーネントは、親コンポーネント内に含まれる代わりに(階層的)、他のコンポーネントに通信可能に結合されるコンポーネントとして実現することもできる。加えて、1つ以上のコンポーネントを組み合わせて1つのコンポーネントにして総合的な機能を設けることができ、または数個の別個のサブコンポーネントに分割することもでき、そして統合機能を得るためにこのようなサブコンポーネントに通信可能に結合する、管理レイヤーのようないずれの1つ以上の中間レイヤーが設けられてもよいことも特筆することができる。本明細書において説明したいずれのコンポーネントも、本明細書では具体的に説明しなかったが当業者には一般に知られている1つ以上の他のコンポーネントと相互作用することもできる。
【0065】
[0075] 以上で説明したシステム例に関して、説明した主題にしたがって実現することができる方法は、種々の図のフローチャートを参照しても認識する(appreciate)ことができる。説明を簡素化するために、これらの方法を一連のブロックで示し説明したが、種々の実施形態はそのブロックの順序には限定されないことは言うまでもないことであり認められてしかるべきである。何故なら、一部のブロックは、本明細書において図示および説明したものとは異なる順序で出て来ても、および/または他のブロックと同時に出てきてもよいからである。連続しないフローまたは分岐するフローがフローチャートによって示される場合、同じまたは同様の結果が得られる種々の他の分岐、フロー・パス、およびブロックの順序も実現できることは、認めることができよう。更に、図示したブロックの中には、以下で説明する方法を実現するときには任意であるものもある。
結論
[0076] 本発明には種々の変更や代替構造が可能であるが、その内のある種の例示実施形態を図面に示し、以上で詳細に説明した。しかしながら、開示した特定の形態に本発明を限定する意図はなく、逆に、本発明は、本発明の主旨および範囲に該当する全ての変更、代替構造、および均等物を包含することを意図していることは理解されてしかるべきである。
【0066】
[0077] 本明細書において説明した種々の実施形態に加えて、他の同様の実施形態も用いることができ、あるいは対応する実施形態(1つまたは複数)の同じ機能または同等の機能を実行するために、本発明から逸脱することなく、説明した実施形態(1つまたは複数)に対して変更および追加を行うことができることは言うまでもない。更にまた、多数の処理チップまたは多数のデバイスが、本明細書において説明した1つ以上の機能の実行を共有することもでき、同様に、複数のデバイスに跨がって格納を行うことができる。したがって、本発明は、いずれの1つの実施形態にも限定されず、逆に、添付する特許請求の範囲にしたがって、その広さ、主旨、および範囲が解釈されてしかるべきである。