(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-09-12
(54)【発明の名称】アクセス・トークンの段階的検証
(51)【国際特許分類】
G06F 21/33 20130101AFI20240905BHJP
【FI】
G06F21/33
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024515861
(86)(22)【出願日】2022-09-15
(85)【翻訳文提出日】2024-03-12
(86)【国際出願番号】 CN2022119007
(87)【国際公開番号】W WO2023040953
(87)【国際公開日】2023-03-23
(32)【優先日】2021-09-20
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】ジアン、ペンフイ
(72)【発明者】
【氏名】リュウ、シンペン
(72)【発明者】
【氏名】ウー、ウェイ
(72)【発明者】
【氏名】チェン、シャオリン
(57)【要約】
アクセス・トークンの段階的検証に関する方法、システム、およびコンピュータ・プログラム製品が提供される。クライアントからのサービスに関するトランザクションの初期呼び出しの傍受に応答して、サービスに関するトランザクションの初期呼び出し用のトークンが検証され、この検証は、認証サーバに問い合わせることと、トークンに対して受信された有効期間をローカルに格納することと、を含む。クライアントからのサービスに関するトランザクションの少なくとも1つの連続呼び出しの傍受に応答して、ローカルに保存された有効期間に基づいて、少なくとも1つの連続呼び出し用のトークンが有効であるものと判定される。認証サーバに問い合わせることなく、サービスに関するトランザクションの少なくとも1つの連続呼び出しの受け渡しが許可される。
【特許請求の範囲】
【請求項1】
コンピュータ実装方法であって、
クライアントからのサービスに関するトランザクションの初期呼び出しの傍受に応答して、前記サービスに関する前記トランザクションの前記初期呼び出し用のトークンを検証することであり、認証サーバに問い合わせること、および前記トークンに対して受信された有効期間をローカルに格納することを含む、前記検証することと、
前記クライアントからの前記サービスに関する前記トランザクションの少なくとも1つの連続呼び出しの傍受に応答して、ローカルに保存された前記有効期間に基づいて、前記少なくとも1つの連続呼び出し用の前記トークンが有効であるものと判定することと、
前記認証サーバに問い合わせることなく、前記サービスに関する前記トランザクションの前記少なくとも1つの連続呼び出しの受け渡しを許可することと、
を含むコンピュータ実装方法。
【請求項2】
前記少なくとも1つの連続呼び出しが前記トランザクションの最終呼び出しであるものと判定することと、
前記トランザクションを実行することと、
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
ローカルに保存された前記有効期間の終了に基づいて、最終連続呼び出し用の前記トークンが無効であるものと判定することと、
前記サービスに関する前記トランザクションの前記最終連続呼び出しの受け渡しを阻止することと、
前記トランザクションを後退させることと、
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項4】
前記トランザクションの実行または後退に応答して、前記トークンの前記有効期間をクリアすることにより、前記トークンの未許可再利用を回避することをさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項5】
ローカルに保存された前記有効期間に基づいて、前記少なくとも1つの連続呼び出し用の前記トークンが有効であるものと判定することが、前記少なくとも1つの連続呼び出し用の前記トークンの検証のためにバックエンド・サービス・コンピュータ・システムが前記認証サーバに問い合わせることを阻止することを含む、請求項1に記載のコンピュータ実装方法。
【請求項6】
ローカルに保存された前記有効期間に基づいて、前記少なくとも1つの連続呼び出し用の前記トークンが有効であるものと判定することが、前記少なくとも1つの連続呼び出し用の前記トークンの検証のためにバックエンド・サービス・コンピュータ・システムが前記認証サーバに問い合わせることの要求を回避する、請求項1に記載のコンピュータ実装方法。
【請求項7】
前記トランザクションが、バックエンド・サービス・コンピュータ・システムと関連付けられた少なくとも1つのリソースに変更を加える、請求項1に記載のコンピュータ実装方法。
【請求項8】
システムであって、
コンピュータ可読命令を有するメモリと、
前記コンピュータ可読命令を実行するための1つまたは複数のプロセッサであって、前記コンピュータ可読命令が、
クライアントからのサービスに関するトランザクションの初期呼び出しの傍受に応答して、前記サービスに関する前記トランザクションの前記初期呼び出し用のトークンを検証することであり、認証サーバに問い合わせること、および前記トークンに対して受信された有効期間をローカルに格納することを含む、前記検証することと、
前記クライアントからの前記サービスに関する前記トランザクションの少なくとも1つの連続呼び出しの傍受に応答して、ローカルに保存された前記有効期間に基づいて、前記少なくとも1つの連続呼び出し用の前記トークンが有効であるものと判定することと、
前記認証サーバに問い合わせることなく、前記サービスに関する前記トランザクションの前記少なくとも1つの連続呼び出しの受け渡しを許可することと、
を含む動作を実行するように前記1つまたは複数のプロセッサを制御する、前記1つまたは複数のプロセッサと、
を備えるシステム。
【請求項9】
前記動作が、
前記少なくとも1つの連続呼び出しが前記トランザクションの最終呼び出しであるものと判定することと、
前記トランザクションを実行することと、
をさらに含む、請求項8に記載のシステム。
【請求項10】
前記動作が、
ローカルに保存された前記有効期間の終了に基づいて、最終連続呼び出し用の前記トークンが無効であるものと判定することと、
前記サービスに関する前記トランザクションの前記最終連続呼び出しの受け渡しを阻止することと、
前記トランザクションを後退させることと、
をさらに含む、請求項8に記載のシステム。
【請求項11】
前記動作が、前記トランザクションの実行または後退に応答して、前記トークンの前記有効期間をクリアすることにより、前記トークンの未許可再利用を回避することをさらに含む、請求項8に記載のシステム。
【請求項12】
ローカルに保存された前記有効期間に基づいて、前記少なくとも1つの連続呼び出し用の前記トークンが有効であるものと判定することが、前記少なくとも1つの連続呼び出し用の前記トークンの検証のためにバックエンド・サービス・コンピュータ・システムが前記認証サーバに問い合わせることを阻止することを含む、請求項8に記載のシステム。
【請求項13】
ローカルに保存された前記有効期間に基づいて、前記少なくとも1つの連続呼び出し用の前記トークンが有効であるものと判定することが、前記少なくとも1つの連続呼び出し用の前記トークンの検証のためにバックエンド・サービス・コンピュータ・システムが前記認証サーバに問い合わせることの要求を回避する、請求項8に記載のシステム。
【請求項14】
前記トランザクションが、バックエンド・サービス・コンピュータ・システムと関連付けられた少なくとも1つのリソースに変更を加える、請求項8に記載のシステム。
【請求項15】
コンピュータ実装方法であって、
クライアントからのサービスに関するトランザクションのアプリケーション・プログラミング・インターフェース(API)キーを伴うトークン呼び出しの傍受に応答して、アクセス決定エンジンに問い合わせることにより、前記APIキーのトークン・リストおよび前記APIキーのアクセス・ポリシーを取得することであり、前記APIキー、前記トークン・リスト、および前記アクセス・ポリシーが一体的に関連付けられ、ローカルに格納された、前記取得することと、
前記APIキーを有する前記サービスに関する呼び出しおよびトークンの傍受に応答して、ローカルに格納された前記APIキーの前記トークン・リストおよび前記アクセス・ポリシーに基づいて、前記呼び出しが前記サービスへのアクセスを与えられるものと判定することと、
前記アクセス決定エンジンに問い合わせることなく、前記サービスに関する前記呼び出しのリソースへのアクセスを許可することと、
を含むコンピュータ実装方法。
【請求項16】
ローカルに格納された前記APIキーの前記トークン・リストおよび前記アクセス・ポリシーに基づいて、前記APIキーを有する前記サービスに関する後続呼び出しおよび別のトークンが前記サービスへのアクセスを与えられるものと判定することをさらに含む、請求項15に記載のコンピュータ実装方法。
【請求項17】
ローカルに格納された前記APIキーの前記トークン・リストおよび前記アクセス・ポリシーに基づいて、前記呼び出しが前記サービスへのアクセスを与えられるものと判定することが、前記アクセス決定エンジンに問い合わせることなく、前記トークンが前記トークン・リストに載っていることを確認することと、前記アクセス・ポリシーが前記APIキーによる前記サービスへのアクセスを許可することを確認することと、を含む、請求項15に記載のコンピュータ実装方法。
【請求項18】
APIキー失効イベントを監視することをさらに含む、請求項15に記載のコンピュータ実装方法。
【請求項19】
前記APIキー失効イベントが発生していることに応答して、失効した前記APIキーと関連付けられた前記トークン・リストを無効化することにより、前記APIキーの別途使用を阻止することをさらに含む、請求項18に記載のコンピュータ実装方法。
【請求項20】
前記APIキー失効イベントが発生していないことに応答して、ローカルに格納された前記トークン・リストが前記APIキーのアクセスの決定に継続して使用されることを許可することをさらに含む、請求項18に記載のコンピュータ実装方法。
【請求項21】
コンピュータ可読媒体において具現化され、請求項15ないし20のいずれか一項に記載の方法を実行するように構成されたコンピュータ可読命令を含むコンピュータ・プログラム製品。
【請求項22】
システムであって、
コンピュータ可読命令を有するメモリと、
前記コンピュータ可読命令を実行するための1つまたは複数のプロセッサであり、前記コンピュータ可読命令が、請求項15ないし20のいずれか一項に記載の方法を実行するように前記1つまたは複数のプロセッサを制御する、前記1つまたは複数のプロセッサと、
を備えるシステム。
【請求項23】
コンピュータ可読媒体において具現化され、請求項15ないし20のいずれか一項に記載の方法を実行するように構成されたコンピュータ可読命令を含むコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般的にはコンピュータ・システムに関し、より詳細には、アクセス・トークンを段階的に検証するように構成および設定されたコンピュータ実装方法、コンピュータ・システム、およびコンピュータ・プログラム製品に関する。
【背景技術】
【0002】
現代のセキュアなアプリケーションでは、ユーザが適当なリソースにアクセスし得るようにアクセス・トークンを使用することが多く、これらのアクセス・トークンの有効期限は通常、限られている。これは、セキュリティ上のさまざまな理由によるが、その1つとして、アクセス・トークンの有効期限を制限することにより、攻撃者が盗んだトークンを使用し得る時間を制限することである。また、アクセス・トークンに含まれる情報またはアクセス・トークンが参照する情報が古くなってしまう可能性もある。アクセス・トークンの有効期限が切れたり無効になったりする一方、アプリケーションが依然として、保護されたリソースにアクセスする必要がある場合、このアプリケーションは、ユーザに再度アクセス許可を強いることなく新たなアクセス・トークンを取得する、という問題に直面する。この問題を解決するため、OAuth2.0(権限付与の業界標準)は、リフレッシュ・トークンと称するアーチファクトを導入している。リフレッシュ・トークンによれば、アプリケーションは、ユーザへの指示なく新たなアクセス・トークンを取得可能となる。
【0003】
アクセス・トークンは、トークンに基づく認証に使用され、アプリケーションによるアプリケーション・プログラミング・インターフェース(API)へのアクセスを可能にする。アプリケーションは、ユーザがアクセスの認証および許可に成功した後、アクセス・トークンを受け取り、(たとえば、ターゲット・リソースと関連付けられた)ターゲットAPIを呼び出す際に、アクセス・トークンを認証情報として受け渡す。受け渡されたトークンは、APIへのアクセスおよび権限付与時に与えられた範囲により指定された特定の動作の実行をトークンの所有者が許可された旨をAPIに通知する。
【0004】
Auth0は、認証リクエストに応答して、アクセス・トークンまたは識別(ID)トークンを発行する。アプリケーションは、アクセス・トークンを使用して、セキュアなAPIに対する認証呼び出しを行うことができる。一方、IDトークンは、クレームの形態で表現されたユーザ・プロファイル属性を含む。いずれも、JSON(Java(R)Script Object Notation)ウェブ・トークン(JWT)であるため、「exp」(有効期限)クレームにより示された有効期限の他、シグネチャ等のセキュリティ対策を有する。通常は、リソースに初めてアクセスする場合または過去に付与されたアクセス・トークンの有効期限が切れた後に、ユーザが新たなアクセス・トークンを必要とする。上述の通り、リフレッシュ・トークンは、更新されたアクセス・トークンの取得に用いられる特別な種類のトークンであり、アプリケーションは、それ以上の使用があり得ないことを示すDenyListにリフレッシュ・トークンが載るまで、新たなアクセス・トークンを要求することができる。アプリケーションは、リフレッシュ・トークンをセキュアに格納する。これらは、ユーザの認証を維持し得るためである。
【0005】
トークンを使用するための既存の技術は、それらの意図する目的に適してはいるものの、本発明の実施形態の特定の特徴を有するシステムが求められている。
【発明の概要】
【0006】
本発明の実施形態は、アクセス・トークンを段階的に検証するためのコンピュータ実装方法を対象とする。非限定的かつ例示的なコンピュータ実装方法は、クライアントからのサービスに関するトランザクションの初期呼び出しの傍受に応答して、サービスに関するトランザクションの初期呼び出し用のトークンを検証することであり、認証サーバに問い合わせること、およびトークンに対して受信された有効期間をローカルに格納することを含む、検証することを含む。このコンピュータ実装方法は、クライアントからのサービスに関するトランザクションの少なくとも1つの連続呼び出しの傍受に応答して、ローカルに保存された有効期間に基づいて、少なくとも1つの連続呼び出し用のトークンが有効であるものと判定することを含む。このコンピュータ実装方法は、認証サーバに問い合わせることなく、サービスに関するトランザクションの少なくとも1つの連続呼び出しの受け渡しを許可することを含む。
【0007】
これは、トランザクション用のトークンを段階的に検証することで既知の方法を改良することにより、管理されたシステムおよびサービスのセキュリティを大幅に確保することができる。他の改良点として、トークンの持続期間が短期間に限定されず、無効なトークンが常に可能な限り早く捕捉され、トークンの検証のコスト(たとえば、時間および通信の繰り返し)が抑制され、複数種類のトークンに対応可能である。
【0008】
上述もしくは後述の特徴のうちの1つもしくは複数の追加または代替として、本発明の他の実施形態において、この方法は、少なくとも1つの連続呼び出しがトランザクションの最終呼び出しであるものと判定することと、トランザクションを実行することと、を含む。これにより、認証サーバに問い合わせることなくトークンを検証する技術が提供されるため都合が良い。
【0009】
上述もしくは後述の特徴のうちの1つもしくは複数の追加または代替として、本発明の他の実施形態において、この方法は、ローカルに保存された有効期間の終了に基づいて、最終連続呼び出し用のトークンが無効であるものと判定することと、サービスに関するトランザクションの最終連続呼び出しの受け渡しを阻止することと、トランザクションを後退させることと、を含む。これにより、認証サーバに問い合わせることなく、ローカルに格納された情報を使用してトークンを検証し得る技術が提供されるため都合が良い。
【0010】
上述もしくは後述の特徴のうちの1つもしくは複数の追加または代替として、本発明の他の実施形態において、この方法は、トランザクションの実行または後退に応答して、トークンの有効期間をクリアすることにより、トークンの未許可再利用を回避することを含む。これにより、認証サーバに問い合わせることなく、ローカルに格納された情報を使用してトークンを検証し得る一方、トークンの誤用を防止する技術が提供されるため都合が良い。
【0011】
上述もしくは後述の特徴のうちの1つもしくは複数の追加または代替として、本発明の他の実施形態において、ローカルに保存された有効期間に基づいて、少なくとも1つの連続呼び出し用のトークンが有効であるものと判定することは、少なくとも1つの連続呼び出し用のトークンの検証のためにバックエンド・サービス・コンピュータ・システムが認証サーバに問い合わせることを阻止することを含む。これにより、認証サーバに問い合わせることなく、ローカルに格納された情報を使用してトークンを迅速に検証し得る技術が提供されるため都合が良い。
【0012】
上述もしくは後述の特徴のうちの1つもしくは複数の追加または代替として、本発明の他の実施形態において、ローカルに保存された有効期間に基づいて、少なくとも1つの連続呼び出し用のトークンが有効であるものと判定することは、少なくとも1つの連続呼び出し用のトークンの検証のためにバックエンド・サービス・コンピュータ・システムが認証サーバに問い合わせることの要求を回避する。これにより、認証サーバに問い合わせることなく、ローカルに格納された情報を使用してトークンを迅速に検証し得る技術が提供されるため都合が良い。
【0013】
非限定的かつ例示的なコンピュータ実装方法は、クライアントからのサービスに関するトランザクションのアプリケーション・プログラミング・インターフェース(API)キーを伴うトークン呼び出しの傍受に応答して、アクセス決定エンジンに問い合わせることにより、APIキーのトークン・リストおよびAPIキーのアクセス・ポリシーを取得することであり、APIキー、トークン・リスト、およびアクセス・ポリシーが一体的に関連付けられ、ローカルに格納された、取得することを含む。このコンピュータ実装方法は、APIキーを有するサービスに関する呼び出しおよびトークンの傍受に応答して、ローカルに格納されたAPIキーのトークン・リストおよびアクセス・ポリシーに基づいて、呼び出しがサービスへのアクセスを与えられるものと判定することと、アクセス決定エンジンに問い合わせることなく、サービスに関する呼び出しのリソースへのアクセスを許可することと、を含む。
【0014】
これは、アクセス決定エンジンへのトークン検証アクセスを抑えることで既知の方法を改良して、アタッチされたAPIキーが失効した場合のトークンの誤用のリスクを低減することができる。
【0015】
上述もしくは後述の特徴のうちの1つもしくは複数の追加または代替として、本発明の他の実施形態において、この方法は、ローカルに格納されたAPIキーのトークン・リストおよびアクセス・ポリシーに基づいて、APIキーを有するサービスに関する後続呼び出しおよび別のトークンがサービスへのアクセスを与えられるものと判定することを含む。これにより、決定エンジンにアクセスする必要なく、ローカルに格納された情報を使用し得る技術が提供されるため都合が良い。
【0016】
上述もしくは後述の特徴のうちの1つもしくは複数の追加または代替として、本発明の他の実施形態において、この方法は、ローカルに格納されたAPIキーのトークン・リストおよびアクセス・ポリシーに基づいて、呼び出しがサービスへのアクセスを与えられるものと判定することは、アクセス決定エンジンに問い合わせることなく、トークンがトークン・リストに載っていることを確認することと、アクセス・ポリシーがAPIキーによるサービスへのアクセスを許可することを確認することと、を含むということを含む。これにより、決定エンジンにアクセスする必要なく、ローカルに格納された情報を使用し得る技術が提供されるため都合が良い。
【0017】
上述もしくは後述の特徴のうちの1つもしくは複数の追加または代替として、本発明の他の実施形態において、この方法は、APIキー失効イベントを監視することを含む。これにより、APIキーを直ちに無効化することでAPIキーの誤用を防止し得る技術が提供されるため都合が良い。
【0018】
上述もしくは後述の特徴のうちの1つもしくは複数の追加または代替として、本発明の他の実施形態において、この方法は、APIキー失効イベントが発生していることに応答して、失効したAPIキーと関連付けられたトークン・リストを無効化することにより、APIキーの別途使用を阻止することを含む。これにより、APIキーを直ちに無効化することでAPIキーの誤用を防止し得る技術が提供されるため都合が良い。
【0019】
上述もしくは後述の特徴のうちの1つもしくは複数の追加または代替として、本発明の他の実施形態において、この方法は、APIキー失効イベントが発生していないことに応答して、ローカルに格納されたトークン・リストがAPIキーのアクセスの決定に継続して使用されることを許可することを含む。これにより、APIキー失効イベントが存在しない場合にサービスへのアクセスが許可されるものと迅速に判定し得る技術が提供されるため都合が良い。
【0020】
本発明の他の実施形態は、コンピュータ・システムおよびコンピュータ・プログラム製品において、上述の方法の特徴を実装する。
【0021】
付加的な技術的特徴および利益については、本発明の技術によって実現される。本発明の実施形態および態様を本明細書において詳しく説明するが、これらは、特許請求の範囲に係る主題の一部と考えられる。より深い理解のため、詳細は説明および図面を参照する。
【0022】
本明細書に記載の独占権の明細は、本明細書の最後の特許請求の範囲において詳細に示されるとともに明確に請求される。本発明の実施形態の上記および他の特徴および利点については、添付の図面と併用する以下の詳細な説明から明らかである。
【図面の簡単な説明】
【0023】
【
図1】本発明の1つまたは複数の実施形態と併せて使用する例示的なコンピュータ・システムのブロック図である。
【
図2】本発明の1つまたは複数の実施形態に係る、アクセス・トークンを段階的に検証するように構成された例示的なコンピューティング環境のブロック図である。
【
図3】本発明の1つまたは複数の実施形態に係る、傍受されたトランザクション呼び出しの相互作用パターンに関するコンピュータ実装プロセスのフローチャートである。
【
図4】本発明の1つまたは複数の実施形態に係る、ID・アクセス管理(IAM)ポリシーで使用するトークン傍受器としてのサイドカー・コンピュータ・システムの一例を示したブロック図である。
【
図5】本発明の1つまたは複数の実施形態に係る、IAMポリシーで使用するトークン傍受器としてのサイドカー・コンピュータ・システムの一例をさらに示したブロック図である。
【
図6】本発明の1つまたは複数の実施形態に係る、IAMポリシーで使用するトークン傍受器としてのサイドカー・コンピュータ・システムの一例をさらに示したブロック図である。
【
図7】本発明の1つまたは複数の実施形態に係る、トークン初期化器を示したブロック図である。
【
図8】本発明の1つまたは複数の実施形態に係る、ポリシー管理器を示したブロック図である。
【
図9】本発明の1つまたは複数の実施形態に係る、ポリシー・データベースにおけるルールの例を示したブロック図である。
【
図10】本発明の1つまたは複数の実施形態に係る、トークン管理器を示したブロック図である。
【
図11】本発明の1つまたは複数の実施形態に係る、トークン更新器を示したブロック図である。
【
図12】本発明の1つまたは複数の実施形態に係る、トークン無効化器を示したブロック図である。
【
図13】本発明の1つまたは複数の実施形態に係る、トークン傍受器を示したブロック図である。
【
図14】本発明の1つまたは複数の実施形態に係る、トークンの段階的検証によってバックエンド・サービスとのトランザクションを可能にするためのコンピュータ実装方法のフローチャートである。
【
図15】本発明の1つまたは複数の実施形態に係る、トークンの段階的検証によって、バックエンド・サービスとのトランザクションまたはバックエンド・サービスへのアクセスあるいはその両方を可能にするためのコンピュータ実装方法のフローチャートである。
【
図16】本発明の1つまたは複数の実施形態に係る、クラウド・コンピューティング環境を示した図である。
【
図17】本発明の1つまたは複数の実施形態に係る、抽象化モデル・レイヤを示した図である。
【発明を実施するための形態】
【0024】
本発明の1つまたは複数の実施形態は、アクセス・トークンを段階的に検証するように設定および構成されたコンピュータ実装方法、コンピュータ・システム、およびコンピュータ・プログラム製品を提供する。本明細書に記載の通り、リフレッシュ・トークンによって、アプリケーションは、ユーザへの指示なく新たなアクセス・トークンを取得可能となる。ただし、リフレッシュ・トークンが失効となる一方でアクセス・トークンが依然として有効となっている場合もある。この問題に対処するため、いくつかの手法では、アクセス・トークンの有効期限または有効期間を短く設定する場合もあるし、傍受によりトークン・バケットを使用してアクセス・トークンを検証する場合もある。本発明の1つまたは複数の実施形態では、サイドカーを使用してサービスへのトラフィックを傍受するとともに、トラフィックを分析してトークン使用パターンおよびトラフィック種別を抽出することにより、アクセス・トークンを段階的に検証する。トランザクション・トラフィックの場合、1つまたは複数の実施形態では、トランザクションの最初のサービス呼び出しにおけるトークンを検証し、有効期間をサイドカーのトークン・トランザクション管理器に保存する。連続トラフィック(すなわち、トランザクションの連続サービス呼び出しまたは後続サービス呼び出しあるいはその両方)の場合、1つまたは複数の実施形態では、認証サーバとの対話または通信あるいはその両方によって検証を実行する代わりに、計算された有効期間を使用する。実行または後退を伴うトランザクションの場合、本発明の1つまたは複数の実施形態では、トークンを再度チェックしてトランザクションを終了する。アプリケーション・プログラミング・インターフェース(API)キー(APIキー)を使用して生成されるアクセス・トークンの場合、1つまたは複数の実施形態では、APIキーとトークン・リストにおいて識別可能なトークンとの間の関係の構築または生成あるいはその両方を行い、認証サーバ(または、アクセス決定エンジン)との対話または通信あるいはその両方の代わりに、検出されたルールを使用してアクセス・トークンを検証することにより、すべてのトークンを検証し、APIキー失効イベントをチェック/監視するが、APIキーの失効をシステムが発見した場合は、失効したAPIキーと関連付けられたトークン・リストも失効となる。
【0025】
トランザクションのアクセス・トークンを段階的に検証することによって、さまざまな技術的利益および技術的解決手段がもたらされる。たとえば、アクセス・トークンの持続期間は、短期間に限定されない。1つまたは複数の実施形態では、無効なトークンを常に可能な限り早く捕捉するため、トークンの検証のコスト(たとえば、時間、認証サーバに対するリクエスト等)が抑制される。さらに、本発明の1つまたは複数の実施形態では、複数の種類のトークンに対応可能である。さらに、トランザクションのアクセス・トークンを段階的に検証するためのシステムは、管理されたシステムおよびサービスのセキュリティを大幅に確保するため、ペン/紙の補助の有無に関わらず人間の頭では実行できない技術的問題に対する技術的解決手段である。さらに、トランザクションのアクセス・トークンを段階的に検証するためのシステムでは、悪意のあるコンピュータ攻撃または侵入を阻止または軽減可能であるとともに、コンピュータ・セキュリティの脅威を阻止また軽減可能であり、コンピュータ・システムが相互通信している場合の機密性およびセキュリティを提供することから、コンピュータ・システム自体の他、クラウド環境において相互接続された複数のコンピュータ・システムの機能の向上によって、潜在的なコンピュータ問題または現行のコンピュータ問題にこれ以上は曝されなくなる。
【0026】
ここで
図1を参照して、これは、本発明の1つまたは複数の実施形態に係るコンピュータ・システム100を大略示している。本明細書に記載の通り、コンピュータ・システム100としては、さまざまな通信技術を利用した任意数のコンピューティング装置およびネットワークならびにコンピューティング装置およびネットワークの組合せの包含または採用あるいはその両方による電子コンピュータ・フレームワークが可能である。コンピュータ・システム100は、容易なスケーリング、拡張、およびモジュール化が可能であり、異なるサービスへの変更または一部機能の他機能から独立した再構成が可能である。コンピュータ・システム100は、たとえばサーバ、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、またはスマートフォンであってもよい。いくつかの例において、コンピュータ・システム100は、クラウド・コンピューティング・ノードであってもよい。コンピュータ・システム100は、プログラム・モジュール等のコンピュータ・システム実行可能命令がコンピュータ・システムにより実行されるという一般的な背景で説明され得る。一般的に、プログラム・モジュールは、特定のタスクの実行または特定の抽象データ型の実装を行うルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造等を含んでもよい。コンピュータ・システム100は、通信ネットワークを通じてリンクされたリモート処理装置によりタスクが実行される分散クラウド・コンピューティング環境において実現されてもよい。分散クラウド・コンピューティング環境においては、メモリ記憶装置を含むローカルおよびリモートの両コンピュータ・システム記憶媒体にプログラム・モジュールが配置されていてもよい。
【0027】
図1に示すように、コンピュータ・システム100は、1つまたは複数の中央演算処理装置(CPU)101a、101b、101c等(プロセッサ101と総称または汎称する)を有する。プロセッサ101としては、シングルコアプロセッサ、マルチコアプロセッサ、コンピューティング・クラスタ、または任意数の他の構成が可能である。プロセッサ101(処理回路とも称する)は、システム・バス102を介してシステム・メモリ103および他のさまざまな構成要素に結合されている。システム・メモリ103は、リード・オンリー・メモリ(ROM)104およびランダム・アクセス・メモリ(RAM)105を含み得る。ROM104は、システム・バス102に結合されており、コンピュータ・システム100の特定の基本機能を制御する基本入出力システム(BIOS)または統合拡張ファームウェア・インターフェース(UEFI)のような後継システムを含んでもよい。RAMは、システム・バス102に結合されてプロセッサ101が使用する読み書き可能メモリである。システム・メモリ103は、動作中に前記命令の動作のための一時的なメモリ空間を提供する。システム・メモリ103は、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ、フラッシュ・メモリ、またはその他の任意の好適なメモリ・システムを含み得る。
【0028】
コンピュータ・システム100は、システム・バス102に結合された入出力(I/O)アダプタ106および通信アダプタ107を備える。I/Oアダプタ106は、ハード・ディスク108またはその他の任意の類似の構成要素あるいはその両方と通信する小型コンピュータ・システム・インターフェース(SCSI)アダプタであってもよい。本明細書においては、I/Oアダプタ106およびハード・ディスク108を大容量ストレージ110と総称する。
【0029】
コンピュータ・システム100上で実行されるソフトウェア111が大容量ストレージ110に格納されていてもよい。大容量ストレージ110は、プロセッサ101により読み出し可能な有形記憶媒体の一例であり、ソフトウェア111は、プロセッサ101により実行される命令として格納され、さまざまな図面に関して後述する通り、コンピュータ・システム100を動作させる。コンピュータ・プログラム製品およびこのような命令の実行の例については、本明細書においてより詳しく論じる。通信アダプタ107は、システム・バス102をネットワーク112(外部ネットワークであってもよい)と相互接続して、コンピュータ・システム100がこのような他のシステムと通信できるようにする。一実施形態においては、システム・メモリ103および大容量ストレージ110の一部がオペレーティング・システムをまとめて格納するが、これは、
図1に示すさまざまな構成要素の機能を連係させる任意の適当なオペレーティング・システムであってもよい。
【0030】
ディスプレイ・アダプタ115およびインターフェース・アダプタ116を介してシステム・バス102に接続されるものとして、付加的な入出力装置を示している。一実施形態において、アダプタ106、107、115、および116は、中間バス・ブリッジ(図示せず)を介してシステム・バス102に接続された1つまたは複数のI/Oバスに接続されていてもよい。ディスプレイ・アダプタ115によってディスプレイ119(たとえば、スクリーンまたはディスプレイ・モニタ)がシステム・バス102に接続されているが、これは、グラフィックスを多用するアプリケーションの性能を向上させるグラフィックス・コントローラおよびビデオ・コントローラを含み得る。たとえば複数のデバイス・アダプタを単一の集積回路に統合したスーパーI/Oチップを含み得るインターフェース・アダプタ116を介して、キーボード121、マウス122、スピーカ123等がシステム・バス102に相互接続され得る。ハード・ディスク・コントローラ、ネットワーク・アダプタ、およびグラフィックス・アダプタ等の周辺装置を接続するための好適なI/Oバスは通常、ペリフェラル・コンポーネント・インターコネクト(PCI)およびペリフェラル・コンポーネント・インターコネクト・エクスプレス(PCIe)等の共通プロトコルを含む。このように、
図1の構成の通り、コンピュータ・システム100は、プロセッサ101の形態の処理能力と、システム・メモリ103および大容量ストレージ110を含む記憶能力と、キーボード121およびマウス122等の入力手段と、スピーカ123およびディスプレイ119を含む出力能力と、を含む。
【0031】
いくつかの実施形態において、通信アダプタ107は、とりわけインターネット小型コンピュータ・システム・インターフェース等の任意の好適なインターフェースまたはプロトコルを使用してデータを送信することができる。ネットワーク112は、とりわけセルラー・ネットワーク、無線ネットワーク、ワイド・エリア・ネットワーク(WAN)、ローカル・エリア・ネットワーク(LAN)、またはインターネットであってもよい。コンピュータ・システム100には、ネットワーク112を通じて外部コンピューティング装置がつながっていてもよい。いくつかの例において、外部コンピューティング装置は、外部ウェブサーバであってもよいし、クラウド・コンピューティング・ノードであってもよい。
【0032】
図1のブロック図は、
図1に示すすべての構成要素をコンピュータ・システム100が具備することを示す意図ではないことが了解されるものとする。むしろ、コンピュータ・システム100は、より少ない任意の適当な構成要素を含むことも可能であるし、
図1に示していない付加的な構成要素(たとえば、付加的なメモリ・コンポーネント、組み込みコントローラ、モジュール、付加的なネットワーク・インターフェース等)を含むことも可能である。さらに、コンピュータ・システム100に関して本明細書に記載の実施形態は、任意の適当なロジックにより実装されてもよく、種々の実施形態において、本明細書に言及されるロジックは、任意の好適なハードウェア(たとえば、とりわけプロセッサ、組み込みコントローラ、または特定用途向け集積回路)、ソフトウェア(たとえば、とりわけアプリケーション)、ファームウェア、またはハードウェア、ソフトウェア、およびファームウェアの任意の好適な組合せを含むことができる。
【0033】
図2は、本発明の1つまたは複数の実施形態に係る、アクセス・トークンを段階的に検証するように構成された例示的なコンピューティング環境200のブロック図である。コンピューティング環境200は、コンピュータ・システム202、サイドカー・コンピュータ・システム205、クライアント・コンピュータ・システム240、認証サーバ270、およびバックエンド・サービス・コンピュータ・システム280を具備可能であり、これらのいずれかが、
図1のコンピュータ・システム100において論じたハードウェアおよびソフトウェア・コンポーネントおよび機能のいずれかを含んでもよい。コンピューティング環境200は、クラウド・コンピューティング環境の1つまたは複数の部分を表していてもよい。コンピューティング環境200の機能は、ワークロード・レイヤ90のワークロードおよび
図17に記載のハードウェアおよびソフトウェア・レイヤ60の構成要素のいずれかの使用または実装あるいはその両方が可能である。
【0034】
図3は、1つまたは複数の実施形態に係る、傍受されたトランザクション呼び出しの相互作用パターンに関するコンピュータ実装プロセス300のフローチャートである。
図3は、REST(Representational State Transfer)呼び出しの相互作用パターンにより説明され得る。RESTは、ワールド・ワイド・ウェブのアーキテクチャの設計および開発を導くために作成されたソフトウェア・アーキテクチャ・スタイルである。REST APIは、アプリケーションを統合するための柔軟かつ軽量な方法を提供するものであり、マイクロサービス・アーキテクチャにおいてコンポーネントを接続するための最も一般的な方法として現れた。REST APIは、REST(Representational State Transfer)アーキテクチャ・スタイルの設計原理に準拠したAPIであるため、RESTful APIと称する場合もある。
【0035】
1つまたは複数の実施形態によれば、各トランザクションについて、(唯一の)最初のトランザクション生成呼び出しでは、検証のため認証サーバに問い合わせることになる。これは、すべてのREST呼び出しで検証のため、認証サーバまたは何らかのエンティティあるいはその両方に問い合わせる必要がある従来のトランザクションREST呼び出しとは異なる。
【0036】
コンピュータ実装プロセス300のブロック302において、クライアント・コンピュータ・システム240が、バックエンド・サービス・コンピュータ・システム280のバックエンド・トランザクション・サービスに対してヘッダのアクセス・トークンでREST呼び出しを行う場合、サイドカー・コンピュータ・システム250のトークン傍受器218は、クライアント・コンピュータ・システム240から認証サーバ270へのトランザクションREST呼び出しを傍受し、トークン・コンピュータ・システム202からトランザクション識別(ID)(TIDとも称する)を取得するPOSTリクエストを送信することによって、マルチステートメント・トランザクションを生成するように構成されている。REST呼び出しは、トランザクションに対するトランザクション・リクエストである。クライアント・コンピュータ・システム240は、予めトークン・コンピュータ・システム202にログインして、トランザクションRESTの構成に使用するアクセス・トークンを取得することができる。クライアント・コンピュータ・システム240は、動作主体の代表であって、コンピュータ・システム上で動作するアプリケーション、クライアント等も可能である。
【0037】
トランザクションは、動作を実行するための論理的なワーク単位である。トランザクションとしては、すべてが失敗または成功となる一組の1つまたは複数のステートメントが可能である。トランザクションとしては、トランザクション種別およびトランザクションのステートメントの種類に応じて、更新トランザクションも可能であるし、クエリー(読み出し専用)トランザクションも可能である。トランザクションは、生成時の実行モードに応じて、シングルステートメント・トランザクションであってもよいし、マルチステートメント・トランザクションであってもよい。トランザクションは、実行モードが明示的に設定された背景において生成された場合、マルチステートメント・トランザクションとなる。トランザクションIDは、各トランザクションを規定する特殊な一組の数字であってもよい。
【0038】
POSTリクエストは、ワールド・ワイド・ウェブで使用されるハイパーテキスト転送プロトコル(HTTP)によりサポートされている要求方法である。設計上、POST要求方法は、リクエスト・メッセージの本文に囲まれたデータのサーバによる受け入れを要求する。たとえば、POSTリクエストは、データをAPIサーバに送ってリソースを生成または更新するのに用いられる。サーバに送られたデータは、HTTPリクエストのリクエスト本文に格納される。
【0039】
ブロック304において、サイドカー・コンピュータ・システム250のトークン傍受器218は、アクセス・トークンでトランザクションを要求するトランザクションREST呼び出しによって、クライアント・コンピュータ・システム240(または、クライアント・アプリケーション・コンピュータ・システム)の検証のため、認証サーバ270に問い合わせるように構成されるとともに、クライアント・コンピュータ・システム240と関連付けられたアクセス・トークンの有効期間(TTL)を受信して保存するように構成されている。サイドカー・コンピュータ・システム250は、トークン・コンピュータ・システム202を介して認証サーバ270に問い合わせ得るものの、1つまたは複数の実施形態においては、認証サーバ270に直接問い合わせて通信を行うようにしてもよい。トークン・コンピュータ・システム202から有効期間を受け取った後、サイドカー・コンピュータ・システム250は、アクセス・トークンの有効期間をローカルTTLデータベース252に保存することができる。説明の便宜上、トランザクションの最初のトランザクション生成呼び出しは、クライアント・コンピュータ・システム240により要求されるものと仮定する。クライアント・コンピュータ・システム240による(同じ)トランザクションの後続または連続あるいはその両方のトランザクション呼び出し/リクエストの場合、サイドカー・コンピュータ・システム250、クライアント・コンピュータ・システム240、およびバックエンド・サービス・コンピュータ・システム280は、検証のために認証サーバ270またはトークン・コンピュータ・システム202あるいはその両方に問い合わせる必要がない。
【0040】
ブロック306において、クライアント・コンピュータ・システム240が希望するトランザクションの一連のトランザクション呼び出し/リクエストの場合、サイドカー・コンピュータ・システム250は、アクセス・トークンの検証のために認証サーバ270に問い合わせることなく、トランザクションの関連するアクセス・トークンの検証のため、ローカルTTLデータベース252に保存された有効期間を使用するように構成されている。たとえば、クライアント・コンピュータ・システム240は、(同じ)アクセス・トークンを使用して、トランザクションの後続呼び出しをバックエンド・サービス・コンピュータ・システム280に送るようにしてもよい。ここで、トランザクションの後続呼び出し/リクエストは、サイドカー・コンピュータ・システム250が検証のため、最初に認証サーバ270に問い合わせることを要求したトランザクションの最初の呼び出しの後である。クライアント・コンピュータ・システム240からバックエンド・サービス・コンピュータ・システム280への後続呼び出し/リクエストの傍受に際して、サイドカー・コンピュータ・システム250は、最初のサービス呼び出しに後続するトランザクションのサービス呼び出し/リクエストにアクセス・トークンが利用されている旨を解析して認識するように構成されている。このため、サイドカー・コンピュータ・システム250は、ローカルTTLデータベース252でアクセス・トークンを検索して、これが後続サービス呼び出し/リクエストであることを確認することができる。1つまたは複数の実施形態において、サイドカー・コンピュータ・システム250は、後続呼び出し/リクエストのアクセス・トークンの検証のため、トークン・コンピュータ・システム202が認証サーバ270に問い合わせること、または、後続呼び出し/リクエストのアクセス・トークンの検証のため、バックエンド・サービス・コンピュータ・システム250が認証サーバ270に問い合わせること、あるいはその両方を阻止するように構成されている。代わりに、ブロック308において、サイドカー・コンピュータ・システム250は、認証サーバ270への問い合わせまたは認証サーバ270による問い合わせあるいはその両方を伴うことなく、ローカルTTLデータベース252中のアクセス・トークンの有効期間が依然として有効であることをチェックするように構成されている。たとえば、サイドカー・コンピュータ・システム250は、ローカルTTLデータベース252中のアクセス・トークンの有効期間が切れたかをチェックするように構成されている。
【0041】
ブロック310において、トランザクションの後続呼び出し/リクエストと関連付けられたアクセス・トークンの有効期間がもはや有効ではない(すなわち、期限切れである)場合、サイドカー・コンピュータ・システム250は、バックエンド・サービス・コンピュータ・システム280の1つまたは複数のリソースの潜在的な変更が一切実行されず、有効とならないように、トランザクションを後退させるように構成されている。
【0042】
ブロック312において、トランザクションの後続呼び出し/リクエストと関連付けられたアクセス・トークンの有効期間が依然として有効である(すなわち、期限切れではない)場合、サイドカー・コンピュータ・システム250は、トランザクションを実行することにより、バックエンド・サービス・コンピュータ・システム280の1つまたは複数のリソースの変更を実行するように構成されている。トランザクション・システムにおいて、実行および後退は、アプリケーション・プログラムが単一の回復単位(UR)により表されるリソースの全変更を行うか、または、変更を一切行わないようにするための一組の動作を表す。さらに、同じアクセス・トークンを使用するトランザクションの後続呼び出し/リクエスト(すなわち、トランザクションの最初のサービス呼び出し/リクエスト後のトランザクションの任意のサービス呼び出し/リクエスト)は、有効期間が切れていないことが確認された後、バックエンド・サービス・コンピュータ・システム280によってバックエンド・トランザクション・サービスへの直接受け渡しが許可される。
【0043】
1つまたは複数の実施形態において、サイドカー・コンピュータ・システム250は、元のクライアントPOSTリクエストをバックエンド・サービス・コンピュータ・システム280(たとえば、バックエンド・サーバ)にリダイレクトするため、HTTPプロキシの機能を含んでもよい。バックエンド・サービスの観点から、バックエンド・サービス・コンピュータ・システム280は、このPOSTリクエストがサイドカー・コンピュータ・システム250からのものであるとは認識しておらず、クライアント・コンピュータ・システム240からのものであるかのようにPOSTリクエストが受信される。バックエンド・サービス・コンピュータ・システム280は、トランザクション識別を生成した後、応答を送り返す。サイドカー・コンピュータ・システム250は、応答を傍受し、トランザクション識別をローカルTTLデータベース252に記録し、トランザクション識別をトークンの保存されたTTLと関連付ける。サイドカー・コンピュータ・システム250は、応答をクライアント・コンピュータ・システム240に再プロキシする。トランザクション識別を有するトランザクションは、クライアント・コンピュータ・システム240により生成される。サイドカー・コンピュータ・システム250は、認証サーバ270にアクセスすることなく、(トランザクション識別をヘッダに含む)後続のトランザクション呼び出しのトランザクション識別およびTTLを傍受および取得した後、ローカルTTLデータベース252に保存されたトランザクション識別と照合して、TTLを取得する。
【0044】
図4は、1つまたは複数の実施形態に係る、ID・アクセス管理(IAM)ポリシーで使用するトークン傍受器としてのサイドカー・コンピュータ・システム250の一例を示したブロック図である。本例においては、IAMエンジン222、アクセス決定エンジン224、およびIAMポリシー・データベース226を含むIAMシステム276を利用可能である。IAMエンジン222およびアクセス決定エンジン224は、トークン・コンピュータ・システム202上で実行される1つまたは複数のソフトウェア・アプリケーションまたはモジュールあるいはその両方であってもよい。IAMシステム276は、トークン・コンピュータ・システム202において示すものの、1つまたは複数の実施形態においては、一部がトークン・コンピュータ・システム202上にあってもよいし、全部がトークン・コンピュータ・システム202とは別個のコンピュータ・システム上にあってもよい。IAMポリシー管理APIを使用することにより、IAMエンジン222は、IAMポリシー・データベース226におけるIAMポリシーの生成、更新、閲覧、および消去が可能である。IAMポリシーは、対象のリソースへのアクセスを可能にする。これらのポリシーは、クライアント・コンピュータ・システムがIAM対応サービスに対してAPIを呼び出す場合のアクセス決定に用いられる。
【0045】
図4において、IAMエンジン222により実行されるIAMポリシーは通例、APIキーを使用して、アクセス・トークンを生成する。
図4に見られるように、アクセス・トークンは、特定の許可(たとえば、フィールド406)を伴うターゲット(たとえば、フィールド404)への対象アクセス(たとえば、フィールド402)を規定する。通常、バックエンド・サービス・コンピュータ・システム280へのアクセス・トークンによるすべての呼び出しは、呼び出しが許可されるか拒否されるかの決定をアクセス決定エンジン224に要求する必要がある。ただし、認証サーバ270に関する
図3の説明と同様でありながら、代替としてIAMシステム276のアクセス決定エンジン224を使用することにより、サイドカー・コンピュータ・システム250のトークン傍受器218は、1つまたは複数の実施形態に係るIAMシステム276のアクセス決定エンジン224へのトークン検証アクセス(量)を低減して、アタッチされたAPIキーが失効した場合のアクセス・トークンの誤用リスクを低減するように構成されている。
【0046】
図5は、1つまたは複数の実施形態に係る、IAMシステム276のIAMポリシーで使用するトークン傍受器としてのサイドカー・コンピュータ・システム250の一例をさらに示したブロック図である。動作501.1において、サイドカー・コンピュータ・システム250のトークン傍受器218は、トークン・コンピュータ・システム202のIAMシステム276を意図したクライアント・コンピュータ・システム240からのAPIキー1を伴う第1のIAM生成トークン呼び出しを傍受するように構成されている。動作501.2において、サイドカー・コンピュータ・システム250のトークン傍受器218は、トークン・コンピュータ・システム202のIAMシステム276を意図したクライアント・コンピュータ・システム240からのAPIキー2を伴う第2のIAM生成トークン呼び出しを傍受するように構成されている。1つまたは複数の実施形態において、IAMシステム276は、APIキー1、APIキー2を伴うIAM生成トークン呼び出しをサイドカー・コンピュータ・システム250のトークン傍受器218に通知することができる。
【0047】
動作502.1において、サイドカー・コンピュータ・システム250のトークン傍受器218は、IAMシステム276のIAMエンジン222に問い合わせて、APIキー1(および同様に、APIキー2)のIAM生成トークン呼び出しのアクセス・トークンを生成するように構成されている。IAMエンジン222は、トークン・リストにおいて特定されるトークンを生成するようにしてもよい。動作502.2において、サイドカー・コンピュータ・システム250のトークン傍受器218は、IAMシステム276のアクセス決定エンジン224に問い合わせて、生成されたアクセス・トークンがバックエンド・サービス・コンピュータ・システム280の関連するリソースへのアクセスの特権を有することをチェックするように構成されている。動作502.3において、サイドカー・コンピュータ・システム250は、APIキー(たとえば、APIキー1、APIキー2)、アクセス決定エンジン224からの特権(および、トークン・リスト中のトークンに関する特権の種類)を含むアクセス・ポリシー、およびトークン・リストをサイドカー・コンピュータ・システム250のローカル・ポリシー・データベース254に格納するように構成されている。
【0048】
トークン傍受器218は、トークン・リスト中のトークン、ターゲット・リソースへのアクセス・ポリシー、およびローカル・ポリシー・データベース254中のAPIキー間の関連付けの構築または生成あるいはその両方を行って、APIキーおよびそのトークンがサービス呼び出し/リクエストで識別されるたびに、この付加的なデータがローカル・ポリシー・データベース254から読み出され、ターゲット・リソースへのアクセスの許可または拒否のために適用されるようにする。
図5は、この例示的なシナリオにおいて、クライアント・コンピュータ・システム240のバックエンド・サービス・コンピュータ・システム280のバックエンド・サービスへのアクセスの許可または拒否に利用されるトークン1、トークン2の他、APIキー1のアクセス・ポリシーへのローカル・アクセスをサイドカー・コンピュータ・システム250が有することを示している。
【0049】
図6は、1つまたは複数の実施形態に係る、IAMポリシーで使用するトークン傍受器としてのサイドカー・コンピュータ・システム250の一例をさらに示したブロック図である。認証サーバ270に関する
図3の説明と同様に、
図6は、トランザクションREST呼び出しの使用を示している。当然のことながら、1つまたは複数の実施形態が他種のサービス呼び出しに適用されてもよい。
【0050】
動作601.1において、サイドカー・コンピュータ・システム250のトークン傍受器218は、クライアント・コンピュータ・システム240からバックエンド・サービス・コンピュータ・システム280へのAPIキー1のトークン1を伴うトランザクションREST呼び出しを傍受するように構成されている。動作601.2において、サイドカー・コンピュータ・システム250は、クライアント・コンピュータ・システム240からバックエンド・サービス・コンピュータ・システム280へのAPIキー1のトークン2を伴うトランザクションREST呼び出しを傍受するように構成されている。
【0051】
動作602において、サイドカー・コンピュータ・システム250は、アクセス・トークン(たとえば、APIキー1のトークン1およびトークン2)について、ローカル・ポリシー・データベース254におけるローカル・トークン・リスト中のトークン・アクセス特権をチェックするように構成されている。ローカル・ポリシー・データベース254におけるローカル・トークン・リスト中のトークン・アクセス・ポリシー(特権)によれば、サイドカー・コンピュータ・システム250のトークン傍受器218は、アクセス・トークンおよびAPIキーで要求されたトランザクションが許可されるか否かを判定する。
【0052】
動作603において、サイドカー・コンピュータ・システム250のトークン傍受器218は、ローカル・ポリシー・データベース254におけるローカル・トークン・リストにおいて、APIキー(たとえば、APIキー1)のアクセス・トークンがアクセスを許可されるか拒否されるかに応じて、バックエンド・サービス・コンピュータ・システム280のリソースへのアクセスを許可するか、または、バックエンド・サービス・コンピュータ・システム280のリソースへのアクセスを拒否するように構成されている。
【0053】
動作604において、サイドカー・コンピュータ・システム250のトークン傍受器218は、APIキー失効イベントを継続的にチェック/監視するように構成され、サイドカー・コンピュータ・システム250がAPIキーの失効を見つけた場合は、サイドカー・コンピュータ・システム250は、失効したAPIキーと関連付けられたトークン・リストを無効化/削除することにより、バックエンド・サービス・コンピュータ・システム250のターゲット・リソースへのアクセスをブロックするように構成されている。たとえば、APIキー失効イベントは、IAMエンジン222からプッシュされ得、またはIAMエンジン222からプルされ得、あるいはその両方が可能である。IAMエンジン222は、標準的な方法を使用して、APIキー(APIキー1等)を無効化することができる。APIキーの無効化は、通例トークン・コンピュータ・システム202に結合された(たとえば、IAMエンジン222と連通した)クラウド・グラフィカル・ユーザ・インターフェース(GUI)から管理者により開始される動作であってもよく、APIキーの無効化動作では、APIキー失効イベントを生成する。このAPIキー失効イベントが監視され、その発生時には、サイドカー・コンピュータ・システム250がこのAPIキーと関連するすべてのトークンを無効化する。
図4、
図5、および
図6に見られるように、トークン傍受器としてのサイドカー・コンピュータ・システム250は、1つまたは複数の実施形態に係るIAMシステム276のアクセス決定エンジンへのトークン検証アクセスを低減して、アタッチされたAPIキーが失効した場合のアクセス・トークンの誤用リスクを低減するように構成されている。
【0054】
図7は、1つまたは複数の実施形態に係る、トークン初期化器を示したブロック図である。トークン初期化器204は、トークン・コンピュータ・システム202上で実行される1つまたは複数のソフトウェア・アプリケーションまたはモジュールあるいはその両方を表し得る。トークン初期化器204は、クライアント・コンピュータ・システム240(たとえば、動作主体)からのログイン・リクエストを受け入れ、認証サーバ270のうちの1つ等、認証識別情報プロバイダから、アクセス・トークンおよびリフレッシュ・トークンを取得するように構成されている。トークン初期化器204は、アクセス・トークンの有効期限が切れた場合、すなわち、有効期間が切れた場合、リフレッシュ・トークンを使用して新たなアクセス・トークンを取得するように構成されている。また、トークン初期化器204は、リフレッシュ・トークンをトークン・バケット206に格納して別途使用するように構成されている。
【0055】
図8は、1つまたは複数の実施形態に係る、ポリシー管理器を示したブロック図である。ポリシー管理器208は、トークン・コンピュータ・システム202上で実行される1つまたは複数のソフトウェア・アプリケーションまたはモジュールあるいはその両方を表し得る。ポリシー管理器208は、ポリシー・データベース210において規定されたポリシーを解析し、ポリシーをアクセス・トークンおよびリフレッシュ・トークンに適用する入力をトークン管理器212に与え、既存のトークン群におけるパターンを分析して新たな潜在的トークン・ポリシーを生成するように構成されている。
【0056】
ポリシー・データベース210に関する別途詳細に移って、このポリシー・データベース210は、動作主体(たとえば、クライアント・コンピュータ・システム240)、ユーザまたはグループ、アクセス・トークンまたはリフレッシュ・トークンあるいはその両方、サービスを含み、トークンを使用してサービスの管理リソースおよび条件にアクセスし、トリガ状況を決定するエンティティを有する。また、ポリシー・データベース210は、アクセス・トークンの更新の方法およびタイミング、アクセス・トークンおよびリフレッシュ・トークンの無効化の方法およびタイミング、あるユーザが従うべきアクセス・トークンまたはリフレッシュ・トークンあるいはその両方、あるグループが従うべきアクセス・トークンまたはリフレッシュ・トークンあるいはその両方、ならびにサービス群が従うべきアクセス・トークンまたはリフレッシュ・トークンあるいはその両方を含むルールを有する。ポリシー・データベース210に規定のように、ユーザおよびサービスに対するさまざまなトークン動作を実現するために、各トークンまたはトークン群あるいはその両方は、さまざまなルールの異なる組合せに対する適用が可能である。ポリシー・データベース210中のポリシーを示すため、
図9は、1つまたは複数の実施形態に係る、ポリシー・データベース210中のルールの例を示したブロック図である。
【0057】
図10は、1つまたは複数の実施形態に係る、トークン管理器を示したブロック図である。トークン管理器212は、トークン・コンピュータ・システム202上で実行される1つまたは複数のソフトウェア・アプリケーションまたはモジュールあるいはその両方を表し得る。トークン管理器212は、ポリシー・データベース210において規定されたポリシーに応じてトークンを管理するように構成されるとともに、
図11に別途詳述するトークン更新器214、
図12に別途詳述するトークン無効化器216、およびトークン傍受器218を呼び出すことにより、単一のユーザまたは複数のユーザあるいはその両方に対して、トークンのライフ・サイクル(すなわち、有効期間)を管理するように構成されている。
【0058】
図11は、1つまたは複数の実施形態に係る、トークン更新器214を示したブロック図である。トークン更新器214は、トークン・コンピュータ・システム202上で実行される1つまたは複数のソフトウェア・アプリケーションまたはモジュールあるいはその両方を表し得る。トークン更新器214は、トークンの持続期間(すなわち、有効期間)を更新して使用可能な時間を延長するとともに、リフレッシュ・トークンを使用して更新されたアクセス・トークンを取得するように構成されている。
【0059】
図12は、1つまたは複数の実施形態に係る、トークン無効化器216を示したブロック図である。トークン無効化器216は、トークン・コンピュータ・システム202上で実行される1つまたは複数のソフトウェア・アプリケーションまたはモジュールあるいはその両方を表し得る。トークン無効化器216は、トークン管理器212が強制する命令またはポリシーあるいはその両方に従って、トークン・バケット206中のトークンの明示的な無効化または破棄あるいはその両方を行うように構成されている。トークン無効化器216は、アクセス・トークンが有効ではない場合(のみ)アクセス・トークンを無効化し、リフレッシュ・トークンが有効ではない場合にアクセス・トークンおよびリフレッシュ・トークンの両者を無効化するように構成されている。
【0060】
図13は、1つまたは複数の実施形態に係る、トークン傍受器218を示したブロック図である。トークン傍受器218は、サイドカー・コンピュータ・システム250上で実行される1つまたは複数のソフトウェア・アプリケーションまたはモジュールあるいはその両方を表し得る。トークン傍受器218は、クライアント・コンピュータ・システム240からのHTTP認証ヘッダおよび統一リソース識別子(URI)クエリ・パラメータを伴うAPI呼び出しを傍受し、トークン・バケット206に格納された情報を用いてトークンを検証して、バックエンド・サービス・コンピュータ・システム280のバックエンド・サービスへのリクエスト(すなわち、HTTP認証ヘッダおよびURIクエリ・パラメータを伴うAPI呼び出し)の受け渡し、または、トークン期限切れによるリクエストの拒否を行うように構成されている。
【0061】
図14は、本発明の1つまたは複数の実施形態に係る、アクセス・トークンの段階的検証によって、バックエンド・サービス・コンピュータ・システム280とのトランザクションを可能にするためのコンピュータ実装方法1400のフローチャートである。コンピュータ実装方法1400は、
図2のサイドカー・コンピュータ・システム250を用いて実行されてもよい。コンピュータ・システムの機能は、
図17に示すハードウェアおよびソフトウェア・レイヤ60のハードウェア・コンポーネントならびに/またはワークロード・レイヤ90のワークロードの使用ならびに/または実装が可能である。
【0062】
コンピュータ実装方法1400のブロック1402において、サイドカー・コンピュータ・システム250のトークン傍受器218(たとえば、1つまたは複数のソフトウェア・アプリケーション)は、クライアントからの(たとえば、クライアント・コンピュータ・システム240からバックエンド・サービス・コンピュータ・システム280への)サービスに関するトランザクションの初期呼び出しの傍受に応答して、サービスに関するトランザクションの初期呼び出し用のトークンを検証するように構成されており、この検証は、(このサイドカー・コンピュータ・システム250が)認証サーバ270に問い合わせることと、トークンに対して受信された有効期間をローカルに(たとえば、ローカルTTLデータベース252に)格納することと、を含む。
【0063】
ブロック1404において、サイドカー・コンピュータ・システム250のトークン傍受器218は、クライアントからの(たとえば、クライアント・コンピュータ・システム240からバックエンド・サービス・コンピュータ・システム280への)サービスに関するトランザクションの少なくとも1つの連続呼び出しの傍受に応答して、ローカルTTLデータベース252にローカルに保存された有効期間に基づいて、少なくとも1つの連続呼び出し用のトークンが有効であるものと判定するように構成されている。
【0064】
ブロック1406において、サイドカー・コンピュータ・システム250のトークン傍受器218は、認証サーバ270に問い合わせることなく、(たとえば、バックエンド・サービス・コンピュータ・システム280により管理された1つまたは複数のリソースに対する少なくとも1つの動作の実行のため、バックエンド・サービス・コンピュータ・システム280への)サービスに関するトランザクションの少なくとも1つの連続呼び出しの受け渡しを許可するように構成されている。
【0065】
1つまたは複数の実施形態において、サイドカー・コンピュータ・システム250のトークン傍受器218は、少なくとも1つの連続呼び出しがトランザクションの最終呼び出しであるものと判定し、トランザクションを実行するように構成されている。トランザクションの初期呼び出しおよび(最終連続呼び出しを含む)連続呼び出しは、同じトークンを使用する。
【0066】
サイドカー・コンピュータ・システム250のトークン傍受器218は、ローカルTTLデータベース252においてローカルに保存された有効期間の終了に基づいて、最終連続呼び出し用のトークンが無効であるものと判定し、サービスに関するトランザクションの最終連続呼び出しの受け渡しを阻止するとともに、トランザクションを後退させるように構成されている。たとえば、トークン傍受器218は、ローカルTTLデータベース252における有効期間をチェックして、有効期間が切れたことを確認するが、これはトークンが無効であることを意味する。したがって、トークン傍受器218は、最終連続呼び出しのバックエンド・サービス・コンピュータ・システム280への受け渡しまたはバックエンド・サービス・コンピュータ・システム280による最終連続呼び出しの処理、あるいはその両方を阻止する。さらに、トークン傍受器218は、トランザクションを後退させるが、これは、トランザクションの過去の任意の呼び出しを含む。
【0067】
サイドカー・コンピュータ・システム250のトークン傍受器218は、トランザクションの実行または後退に応答して、ローカルTTLデータベース252からトークンの有効期間をクリア/削除することにより、トークンの未許可再利用を回避するように構成されている。
【0068】
ローカルTTLデータベース252においてローカルに保存された有効期間に基づいて、少なくとも1つの連続呼び出し用のトークンが有効であるものと判定することは、少なくとも1つの連続呼び出し用のトークンの検証のためにバックエンド・サービス・コンピュータ・システム280が(たとえば、トークン・コンピュータ・システム202を介して)認証サーバ270に問い合わせることを阻止することを含む。ローカルTTLデータベース252においてローカルに保存された有効期間に基づいて、少なくとも1つの連続呼び出し用のトークンが有効であるものと判定することは、少なくとも1つの連続呼び出し用のトークンの検証のためにバックエンド・サービス・コンピュータ・システム280が(たとえば、トークン・コンピュータ・システム202を介して)認証サーバ270に問い合わせることの要求を回避する。トランザクションは、バックエンド・サービス・コンピュータ・システム280と関連付けられた少なくとも1つのリソースに変更を加える。
【0069】
図15は、本発明の1つまたは複数の実施形態に係る、アクセス・トークンの段階的検証によって、バックエンド・サービス・コンピュータ・システム280とのトランザクションまたはバックエンド・サービス・コンピュータ・システム280へのアクセスあるいはその両方を可能にするためのコンピュータ実装方法1500のフローチャートである。コンピュータ実装方法1500は、
図2のサイドカー・コンピュータ・システム250を用いて実行されてもよい。コンピュータ・システムの機能は、
図17に示すハードウェアおよびソフトウェア・レイヤ60のハードウェア・コンポーネントならびに/またはワークロード・レイヤ90のワークロードの使用ならびに/または実装が可能である。
【0070】
コンピュータ実装方法1500のブロック1502において、サイドカー・コンピュータ・システム250のトークン傍受器218(たとえば、1つまたは複数のソフトウェア・アプリケーション)は、クライアント(たとえば、クライアント・コンピュータ・システム240)からのサービスに関するトランザクションのアプリケーション・プログラミング・インターフェース(API)キーを伴うトークン呼び出しの傍受に応答して、認証サーバ270(たとえば、IAMエンジン222およびアクセス決定エンジン224)に問い合わせることにより、APIキーのトークン・リストおよびAPIキーのアクセス・ポリシーを取得するように構成されており、APIキー、トークン・リスト、およびポリシーは、一体的に関連付けられ、ローカル・ポリシー・データベース254においてローカルに格納されている。たとえば、トークン傍受器218は、APIキーを伴う傍受トークン呼び出しを使用してIAMエンジン222に問い合わせ、アクセス・トークンを生成するとともに、アクセス決定エンジン224に問い合わせて、生成されたトークンのアクセス・ポリシーを取得可能であるが、これらはすべて、ローカル・ポリシー・データベース254に格納される。
【0071】
ブロック1504において、トークン傍受器218は、APIキーを有するサービスに関する呼び出しおよび過去に生成されたトークンの傍受に応答して、ローカル・ポリシー・データベース254でローカルに格納されたAPIキーのトークン・リストおよびアクセス・ポリシーに基づいて、呼び出しがサービスへのアクセスを与えられるものと判定するように構成されている。たとえば、トークン傍受器218は、ローカル・ポリシー・データベース254をチェックして、認証サーバ270に問い合わせることなく、呼び出しがバックエンド・サービス・コンピュータ・システム280上で所望のサービスへのアクセスを与えられることを確認する。
【0072】
ブロック1506において、トークン傍受器218は、認証サーバ270に問い合わせることなく、サービスに関する呼び出しがバックエンド・サービス・コンピュータ・システム280上のリソースにアクセスすることを許可するように構成されている。
【0073】
トークン傍受器218は、ローカル・ポリシー・データベース254でローカルに格納されたAPIキーのトークン・リストおよびアクセス・ポリシーに基づいて、APIキーを有するサービスに関する後続呼び出しおよび別のトークンがサービスへのアクセスを与えられるものと判定するように構成されている。ローカル・ポリシー・データベース254でローカルに格納されたAPIキーのトークン・リストおよびアクセス・ポリシーに基づいて、呼び出しがサービスへのアクセスを与えられるものと判定することは、すべて認証サーバ270に問い合わせることなく、トークンがトークン・リストに載っていることを確認することと、アクセス・ポリシーがAPIキーによるサービスへのアクセスを許可することを確認することと、を含む。トークン傍受器218は、たとえば認証サーバ270によるチェック(たとえば、プッシュまたはプルあるいはその両方)によって、APIキー失効イベントを監視するように構成されている。
【0074】
トークン傍受器218は、APIキー失効イベントが発生していることに応答して、失効したAPIキーと関連付けられたトークン・リストを無効化することにより、APIキーの別途使用を阻止するように構成されている。トークン傍受器218は、APIキー失効イベントが発生していないことに応答して、ローカル・ポリシー・データベース254においてローカルに格納されたトークン・リストがAPIキーのアクセスの決定に継続して使用されることを許可するように構成されている。
【0075】
本開示は、クラウド・コンピューティングに関する詳細な説明を含むが、本明細書に列挙する教示内容の実装は、クラウド・コンピューティング環境に限定されないことが了解されるものとする。むしろ、本発明の実施形態は、現在既知または今後開発のその他の任意の種類のコンピューティング環境と併せて実装可能である。
【0076】
クラウド・コンピューティングは、最小限の管理労力またはサービス提供者との相互作用で迅速に設定および公開し得る設定可能な演算リソース(たとえば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共用プールへの簡便なオンデマンド・ネットワーク・アクセスを可能にするサービス提供のモデルである。このクラウド・モデルは、少なくとも5つの特性、少なくとも3つのサービス・モデル、および少なくとも4つの配置モデルを含み得る。
【0077】
特性は、以下の通りである。
【0078】
オンデマンド・セルフサービス:クラウド利用者は、サービス提供者との人間の相互作用の必要なく、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージ等の演算機能を一方的に設定可能である。
【0079】
広範なネットワーク・アクセス:機能は、ネットワーク上で利用可能であり、異種のシン・クライアントまたはシック・クライアント・プラットフォーム(たとえば、携帯電話、ラップトップ、およびPDA)による使用を促進する標準的な機構を通じてアクセスされる。
【0080】
リソース・プーリング:マルチテナント・モデルを用いることにより、複数の利用者に対して、提供者の演算リソースがプールされる。その際、要求に応じて、さまざまな物理的リソースおよび仮想的リソースが動的に割り当ておよび再割り当てされる。利用者は一般的に、提供されるリソースの正確な場所を制御も把握もできないが、より高い抽象化レベル(たとえば、国、州、またはデータセンタ)では場所を特定し得る点において、ある意味で場所の独立性が存在する。
【0081】
迅速な柔軟性:機能は、場合によっては自動的に、高速スケール・アウトするように迅速かつ柔軟に設定され、高速スケール・インするように迅速に公開され得る。利用者にとって、設定に利用可能な機能は、多くの場合見かけ上は制限なく、いつでも如何なる量でも購入可能である。
【0082】
サービス測定:クラウド・システムは、サービスの種類(たとえば、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウント)に適した何らかの抽象化レベルでの測定機能を利用することによって、リソースの使用を自動的に制御および最適化する。リソースの使用量は、モニタリング、制御、および報告によって、利用サービスの提供者および利用者の両者に透明性をもたらし得る。
【0083】
サービス・モデルは、以下の通りである。
【0084】
サービスとしてのソフトウェア(SaaS):利用者に提供される機能は、クラウド・インフラ上で動作する提供者のアプリケーションを使用することである。これらのアプリケーションは、ウェブ・ブラウザ等のシン・クライアント・インターフェースを通じて、さまざまなクライアント・デバイスからアクセス可能である(たとえば、ウェブベースの電子メール)。利用者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能を含む、下層のクラウド・インフラを管理も制御もしない。ただし、ユーザ固有の限定されたアプリケーション構成の設定については、この限りではない。
【0085】
サービスとしてのプラットフォーム(PaaS):利用者に提供される機能は、提供者がサポートするプログラミング言語およびツールを用いて作成された利用者作成または取得アプリケーションをクラウド・インフラ上に配置することである。利用者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む、下層のクラウド・インフラを管理も制御もしない。ただし、配置されたアプリケーションと、場合によっては、アプリケーション・ホスティング環境の構成とを制御する。
【0086】
サービスとしてのインフラ(IaaS):利用者に提供される機能は、処理、ストレージ、ネットワーク、および他の基本的な演算リソースを設定することであるが、利用者は、オペレーティング・システムおよびアプリケーションを含み得る、任意のソフトウェアを配置および実行可能である。利用者は、下層のクラウド・インフラを管理も制御もしない。ただし、オペレーティング・システム、ストレージ、配置されたアプリケーションを制御するとともに、場合によっては、選択されたネットワーク・コンポーネント(たとえば、ホストのファイアウォール)を限定的に制御する。
【0087】
配置モデルは、以下の通りである。
【0088】
プライベート・クラウド:このクラウド・インフラは、ある組織のために単独で運用される。それはこの組織またはサード・パーティにより管理され得、オンプレミスまたはオフプレミスで存在し得る。
【0089】
コミュニティ・クラウド:このクラウド・インフラは、複数の組織により共有され、共有された懸案事項(たとえば、ミッション、セキュリティ要件、ポリシー、およびコンプライアンス事項)を共有する特定のコミュニティをサポートする。それはこの組織またはサード・パーティにより管理され得、オンプレミスまたはオフプレミスで存在し得る。
【0090】
パブリック・クラウド:このクラウド・インフラは、一般の人々または大規模な業界団体が利用可能で、クラウド・サービスを販売する組織により所有される。
【0091】
ハイブリッド・クラウド:このクラウド・インフラは、2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の組合せであり、固有のエンティティを維持する一方、データおよびアプリケーションの移植性を実現する標準または専有技術(たとえば、クラウド間の負荷分散のためのクラウド・バースティング)により結合される。
【0092】
クラウド・コンピューティング環境は、ステートレス性、低結合性、モジュール性、およびセマンティック相互運用性に焦点を当てたサービス指向型である。クラウド・コンピューティングの中心には、相互接続されたノードのネットワークを含むインフラがある。
【0093】
ここで
図16を参照して、この図は、例示的なクラウド・コンピューティング環境50を示している。図示のように、クラウド・コンピューティング環境50は、たとえば個人用デジタル補助装置(PDA)もしくは携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54N、あるいはその組合せ等、クラウド利用者が使用するローカルのコンピューティング装置の通信を可能にする1つまたは複数のクラウド・コンピューティング・ノード10を具備する。ノード10は、互いに通信するようにしてもよい。これらは、上述のプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、もしくはハイブリッド・クラウド、またはその組合せ等、1つまたは複数のネットワークにおいて物理的または仮想的にグループ化されていてもよい(図示せず)。これにより、クラウド・コンピューティング環境50は、クラウド利用者がローカルのコンピューティング装置上でリソースを維持する必要のないサービスとしてのインフラ、サービスとしてのプラットフォーム、またはサービスとしてのソフトウェア、あるいはその組合せを提供することができる。
図16に示すコンピューティング装置54A~54Nの種類は、例示を意図したものに過ぎず、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、(たとえば、ウェブ・ブラウザを用いることにより)任意の種類のネットワークまたはネットワーク・アドレス指定可能な接続、あるいはその両方において、任意の種類のコンピュータ化された機器と通信可能であることが了解される。
【0094】
ここで
図17を参照して、この図は、クラウド・コンピューティング環境50(
図16)が提供する一組の機能的抽象化レイヤを示している。
図17に示すコンポーネント、レイヤ、および機能は、例示を意図したものに過ぎず、本発明の実施形態はこれらに限定されないことが予め了解されるものとする。図示のように、以下のレイヤおよび対応する機能が提供される。
【0095】
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェア・コンポーネントおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例としては、メインフレーム61、RISC(縮小命令セット・コンピュータ)アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ64、記憶装置65、ならびにネットワークおよびネットワーキング・コンポーネント66が挙げられる。いくつかの実施形態において、ソフトウェア・コンポーネントとしては、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68が挙げられる。
【0096】
仮想化レイヤ70は抽象化レイヤを提供し、これによって、仮想サーバ71、仮想ストレージ72、仮想ネットワーク73(仮想プライベート・ネットワークを含む)、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75といった仮想エンティティの例が提供され得る。
【0097】
一例において、管理レイヤ80は、後述の機能を提供するようにしてもよい。リソース設定81は、クラウド・コンピューティング環境におけるタスクの実行に利用される演算リソース等のリソースの動的な調達を提供する。測定および価格設定82は、クラウド・コンピューティング環境においてリソースが利用される場合のコスト追跡およびこれらリソースの消費に対する請求もしくはインボイスを提供する。一例において、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含み得る。セキュリティは、クラウド利用者およびタスクの識別情報確認の他、データおよび他のリソースの保護を提供する。ユーザ・ポータル83は、利用者およびシステム管理者に対してクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理84は、所要サービス・レベルを満足するように、クラウド・コンピューティング・リソースの割り当ておよび管理を提供する。サービス・レベル合意(SLA)計画および実行85は、SLAに従って将来的な要件が見込まれるクラウド・コンピューティング・リソースの事前の取り決めおよび調達を提供する。
【0098】
ワークロード・レイヤ90は、クラウド・コンピューティング環境を利用可能な機能の例を提供する。このレイヤから提供可能なワークロードおよび機能の例としては、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室教育提供93、データ解析処理94、トランザクション処理95、ならびにワークロードおよび機能96が挙げられる。ワークロードおよび機能96は、本明細書で論じるトークン・コンピュータ・システム202、サイドカー・コンピュータ・システム250、バックエンド・サービス・コンピュータ・システム280、認証サーバ270等において、さまざまなソフトウェア・アプリケーションを含み得る(またはさまざまな機能を実行する、あるいはその両方である)。
【0099】
本明細書においては、関連する図面を参照して、本発明の種々の実施形態を説明している。本発明の範囲から逸脱することなく、本発明の代替実施形態を考案可能である。以下の説明および図面においては、さまざまな接続および位置関係(たとえば、上方、下方、隣接等)が要素間に規定される。これらの接続または位置関係あるいはその両方は、別段の指定のない限り、直接的でも間接的でも可能であり、この点に関して、本発明は限定することを意図していない。したがって、エンティティの結合は、直接的または間接的な結合を表すことができ、エンティティ間の位置関係としては、直接的または間接的な位置関係が可能である。さらに、本明細書に記載のさまざまなタスクおよびプロセス・ステップは、本明細書に詳しく記載していない付加的なステップまたは機能を有するより包括的な手順またはプロセスに組み込み可能である。
【0100】
データ信号に対して論理機能を実行するための論理ゲートを有する離散論理回路、適当な組合せ論理ゲートを有する特定用途向け集積回路(ASIC)、プログラマグル・ゲート・アレイ(PGA)、フィールド・プログラマグル・ゲート・アレイ(FPGA)等、当技術分野においてそれぞれが周知である技術のいずれかまたは組合せによって、本明細書に記載の方法のうちの1つまたは複数を実現可能である。
【0101】
簡素化のため、本発明の態様の構成および使用と関連する従来の技術は、本明細書において詳しく説明する場合もあれば、詳しく説明しない場合もある。特に、本明細書に記載のさまざまな技術的特徴を実装するコンピューティング・システムおよび特定のコンピュータ・プログラムのさまざまな態様がよく知られている。したがって、本明細書においては簡素化のため、従来の多くの実施態様詳細について、周知のシステムまたはプロセスあるいはその両方の詳細を与えることなく、簡単に述べるのみとするか、または、全体を省略する。
【0102】
いくつかの実施形態においては、所与の場所または1つもしくは複数の装置もしくはシステムの動作との関連、あるいはその両方においてさまざまな機能および動作が発生し得る。いくつかの実施形態においては、所与の機能または動作の一部が第1のデバイスまたは場所で実行され得、この機能または動作のその他の部分が1つまたは複数の付加的なデバイスまたは場所で実行され得る。
【0103】
本明細書において使用する専門用語は、特定の実施形態を説明することを目的としているに過ぎず、限定することを意図していない。本明細書で使用される、単数形「a」、「an」、および「the」は、文脈上の別段の明確な指定のない限り、複数形も同様に含むことが意図される。本明細書において使用する場合の用語「備える(comprise)」または「備えている(comprising)」、あるいはその両方は、記載の特徴、整数、ステップ、動作、要素、または構成要素、あるいはその組合せの存在を指定するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、またはその群、あるいはその組合せの存在を除外するものでもなければ、追加を除外するものでもないことがさらに了解される。
【0104】
以下の特許請求の範囲において、すべてのミーンズ・プラス・ファンクション要素またはステップ・プラス・ファンクション要素の対応する構造、材料、動作、および均等物は、具体的に請求される他の特許請求された要素との組合せで機能を実行するための任意の構造、材料、または動作を含むことが意図される。本開示は、例示および説明を目的として提示したものであるが、網羅性を意図したものでもなければ、開示の形態への限定を意図したものでもない。当業者には、本開示の範囲から逸脱することなく、多くの改良および変形が明らかとなるであろう。実施形態は、本開示の原理および実際の用途を最もよく説明するとともに、考えられる特定の使用に適した種々の改良を伴う種々の実施形態について他の当業者が本開示を理解できるように選定および記載したものである。
【0105】
本明細書に記載の図面は例示である。本開示の範囲から逸脱することなく、図面またはそこに記載のステップ(もしくは、動作)には多くの変形が存在し得る。たとえば、動作を異なる順序で実行することも可能であるし、動作を追加、消去、または変更することも可能である。また、用語「結合された(coupled)」は、2つの要素間に信号経路を有することを表し、要素/接続の介在を伴わない要素間の直接接続を暗示してはいない。これらの変形例はすべて、本開示の一部と考えられる。
【0106】
以下の定義および略語は、特許請求の範囲および本明細書の解釈のために使用するものとする。本明細書で使用される、用語「備える(comprise)」、「備えている(comprising)」、「具備する(include)」、「具備している(including)」、「有する(have)」、「有している(having)」、「含む(contain)」、もしくは「含んでいる(containing)」、またはこれらのその他の任意の変形は、非排他的な包含を網羅することが意図される。たとえば、要素の一覧を含む組成物、混合物、プロセス、方法、品目、または装置は、必ずしもこれらの要素だけに限定されず、このような組成物、混合物、プロセス、方法、品目、または装置に対して明示的に一覧化もされていなければ固有でもない他の要素を含み得る。
【0107】
また、本明細書において、用語「例示的な(exemplary)」は、「一例、事例、または実例として機能する」を意味するものとして使用している。本明細書で「例示的(exemplary)」として記載する如何なる実施形態も設計も、他の実施形態または設計より好ましいものまたは有利なものとしては必ずしも解釈されないものとする。用語「少なくとも1つ(at least one)」および「1つまたは複数(one or more)」は、1以上の任意の整数すなわち1、2、3、4等を含むものと理解される。用語「複数(a plurality)」は、2以上の任意の整数すなわち2、3、4、5等を含むものと理解される。用語「接続(connection)」は、間接的な「接続(connection)」および直接的な「接続(connection)」の両者を含み得る。
【0108】
用語「およそ(about)」、「実質的に(substantially)」、「約(approximately)」、およびこれらの変形は、本願の出願時点で利用可能な機器に基づく特定の量の測定と関連付けられた誤差の程度を含むことが意図される。たとえば、「およそ(about)」は、所与の値の±8%、5%、または2%の範囲を含み得る。
【0109】
本発明は、任意の可能な技術的詳細統合レベルにおけるシステム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであってもよい。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体(または複数の媒体)を具備していてもよい。
【0110】
コンピュータ可読記憶媒体としては、命令実行デバイスが使用する命令を保持および格納し得る有形デバイスが可能である。コンピュータ可読記憶媒体は、たとえば電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置、またはこれらの任意の好適な組合せであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的な一覧は、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、消去・プログラム可能リード・オンリー・メモリ(EPROMもしくはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、携帯型コンパクト・ディスク・リード・オンリー・メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック(R)、フロッピー(R)・ディスク、パンチカードもしくは命令が記録された溝中の隆起構造等の機械的符号化デバイス、およびこれらの任意の好適な組合せを含む。本明細書で使用される、コンピュータ可読記憶媒体は、電波もしくはその他の自由に伝搬する電磁波、導波路もしくはその他の伝送媒体を伝搬する電磁波(たとえば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを通じて伝送される電気信号等、一過性の信号自体としては解釈されないものとする。
【0111】
本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から各コンピュータ/処理装置にダウンロードすることも可能であるし、たとえばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワーク、あるいはその組合せを介して外部コンピュータまたは外部記憶装置にダウンロードすることも可能である。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含んでもよい。各コンピュータ/処理装置のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、このコンピュータ可読プログラム命令を転送して、各コンピュータ/処理装置内のコンピュータ可読記憶媒体に格納する。
【0112】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路の設定データ、あるいはSmalltalk(R)、C++等のオブジェクト指向プログラミング言語およびCプログラミング言語もしくは類似のプログラミング言語等の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで記述されたソース・コードまたはオブジェクト・コードであってもよい。コンピュータ可読プログラム命令は、独立型ソフトウェア・パッケージとして全部または一部をユーザのコンピュータ上で実行するようにしてもよいし、一部をユーザのコンピュータ上、一部をリモート・コンピュータ上で実行するようにしてもよいし、全部をリモート・コンピュータまたはサーバ上で実行するようにしてもよい。後者のシナリオでは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む、任意の種類のネットワークを通じてリモート・コンピュータをユーザのコンピュータに接続するようにしてもよいし、(たとえば、インターネット・サービス・プロバイダを用いることによりインターネットを通じて)外部コンピュータに接続するようにしてもよい。いくつかの実施形態においては、本発明の態様を実行するため、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個人向けにすることにより、たとえばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路がコンピュータ可読プログラム命令を実行するようにしてもよい。
【0113】
本明細書においては、本発明の実施形態に係る方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して、本発明の態様を説明している。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方のブロックの組合せは、コンピュータ可読プログラム命令により実装可能であることが了解される。
【0114】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャート図またはブロック図あるいはその両方の1つまたは複数のブロックに規定の機能/動作を実装する手段を生成するように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出してもよい。また、これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読記憶媒体が、フローチャート図またはブロック図あるいはその両方の1つまたは複数のブロックに規定の機能/動作の態様を実装する命令を含む製造品を含むように、コンピュータ可読記憶媒体に格納され、コンピュータ、プログラムな可能データ処理装置、または他のデバイス、あるいはその組合せに対して特定の様態で機能するように指示してもよい。
【0115】
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに規定の機能/動作を実装するように、コンピュータ実装プロセスを生成するために、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスへロードされ、一連の動作ステップをコンピュータ、他のプログラム可能装置、または他のデバイス上で実行させてもよい。
【0116】
図中のフローチャートおよびブロック図は、本発明の種々の実施形態に係るシステム、方法、およびコンピュータ・プログラム製品の可能な実施態様のアーキテクチャ、機能、および動作を示している。この点に関して、フローチャートまたはブロック図の各ブロックは、特定の論理機能を実装するための1つまたは複数の実行可能命令を含むモジュール、セグメント、または命令の一部を表していてもよい。いくつかの代替実施態様において、ブロックに記載の機能は、図面に記載の順序とは異なる順序で行われてもよい。たとえば、連続して示す2つのブロックは実際のところ、関与する機能に応じて、実質的に同時に実行されてもよいし、場合により逆の順序で実行されてもよい。また、ブロック図またはフローチャート図あるいはその両方の各ブロックおよびブロック図またはフローチャート図あるいはその両方のブロックの組合せは、特定の機能または動作を実行するか、または専用ハードウェアおよびコンピュータ命令の組合せを実行する、専用ハードウェアベースのシステムにより実装することが可能であることにも留意されたい。
【0117】
本発明の種々の実施形態の説明は、例示を目的として提示しており、網羅的であること、または開示の実施形態に限定されることを意図したものでもない。当業者には、記載の実施形態の範囲から逸脱することなく、多くの改良および変形が明らかとなるであろう。本明細書において使用する専門用語は、実施形態の原理、実際の用途、もしくは市場において見られる技術の技術的改良を最もよく説明するために、または、他の当業者が本明細書に記載の実施形態を理解できるように選定されている。
【国際調査報告】