[実施の形態1]
本実施の形態では、状況に係るコンテキストに基づいて、Webアプリケーションに対して利用者端末のオペレーティングシステムで提供するAPI(Application Program Interface)の呼び出しを制限する。
まず、図1及び2に基づいて、機能制限システムの利用態様について説明する。図1に示す機能制限システムの利用態様は、位置条件とネットワーク条件とに基づいて、コンテキストが判定される例を示している。つまり、この利用態様におけるコンテキストは、利用者端末100の位置と利用者端末100が接続するネットワークとによる状況を識別する情報である。また、この利用態様では、コンテキストに基づいて、アドレス帳機能に係るAPIと署名機能に係るAPIとの利用可否が判定される例を示している。
利用者端末100が社内ネットワークに接続している状況では、コンテキスト「CNT_A」が生成される。そして、コンテキスト「CNT_A」では、すべてのWebアプリケーションにおいてアドレス帳機能に係るAPIについての判定結果が「利用可」となり、署名機能に係るAPIについての判定結果も「利用可」となる。
つまり、利用者端末100は、その位置に関わらず、社内ネットワークに接続していれば、あらゆるWebアプリケーションにおいてアドレス帳の機能と署名の機能とが動作する。この場合には、例えば社員間の連絡や社用文書の発行などが許可される。
利用者端末100が社内ネットワーク以外に接続し、且つ利用者端末100が会社敷地内(以下、社内という。)に位置している状況では、コンテキスト「CNT_B」が生成される。そして、コンテキスト「CNT_B」では、すべてのWebアプリケーションにおいてアドレス帳機能に係るAPIについての判定結果が「利用可」となり、署名機能に係るAPIについての判定結果が「利用不可」となる。
つまり、利用者端末100が社内で社内ネットワーク以外に接続していれば、あらゆるWebアプリケーションにおいてアドレス帳の機能は動作するが、署名の機能は動作しない。この場合には、例えば社員間の連絡は許可されるが、社用文書の発行は拒否される。
利用者端末100が社内ネットワーク以外に接続し、且つ利用者端末100が会社敷地外(以下、社外という。)に位置している状況では、コンテキスト「CNT_C」が生成される。そして、コンテキスト「CNT_C」では、すべてのWebアプリケーションにおいてアドレス帳機能に係るAPIについての判定結果が「利用不可」となり、署名機能に係るAPIについての判定結果も「利用不可」となる。
つまり、利用者端末100が社外で社内ネットワーク以外に接続していれば、あらゆるWebアプリケーションにおいてアドレス帳の機能も、署名の機能も動作しない。この場合には、例えば社員間の連絡も、社用文書の発行も拒否される。以上で、図1に示す機能制限システムの利用態様の説明を終える。
図2に示す機能制限システムの利用態様の説明に移る。図2に示す機能制限システムの利用態様は、時刻条件とWebアプリケーション条件とに基づいて、コンテキストが判定される例を示している。つまり、この利用態様におけるコンテキストは、現在時刻と利用者端末100で動作しているWebアプリケーションとによる状況を識別する情報である。
現在時刻が、勤務時間帯内であり、利用者端末100でWebアプリケーション「APL_X」が動作している状況では、コンテキスト「CNT_D」が生成される。そして、コンテキスト「CNT_D」では、Webアプリケーション「APL_Z」においてGPS(Global Positioning System)機能に係るAPIについての判定結果が「利用可」となり、復号機能に係るAPIについての判定結果も「利用可」となる。
つまり、利用者端末100は、勤務時間帯内に、Webアプリケーション「APL_X」を動作させていれば、Webアプリケーション「APL_Z」においてGPSの機能と復号の機能とが動作する。この場合には、例えば所在位置に関連する秘密文書を閲覧することが許可される。
現在時刻が、勤務時間帯内であり、利用者端末100でWebアプリケーション「APL_X」が動作していない状況では、コンテキスト「CNT_E」が生成される。そして、コンテキスト「CNT_E」では、Webアプリケーション「APL_Z」においてGPS機能に係るAPIについての判定結果が「利用可」となり、復号機能に係るAPIについての判定結果が「利用不可」となる。
つまり、利用者端末100は、勤務時間帯内に、Webアプリケーション「APL_X」を動作させていなければ、Webアプリケーション「APL_Z」においてGPSの機能は動作するが、復号の機能は動作しない。この場合には、例えば所在位置に関連する一般文書を閲覧することは許可されるが、所在位置に関連する秘密文書を閲覧することは拒否される。
現在時刻が、勤務時間帯外である状況では、コンテキスト「CNT_F」が生成される。そして、コンテキスト「CNT_F」では、Webアプリケーション「APL_Z」においてGPS機能に係るAPIについての判定結果が「利用不可」となり、復号機能に係るAPIについての判定結果も「利用不可」となる。
つまり、利用者端末100は、勤務時間帯外であれば、Webアプリケーション「APL_Z」においてGPSの機能も、復号の機能も動作しない。この場合には、例えば所在位置に関連する一切の文書を閲覧することは許可されない。以上で、機能制限システムの利用態様についての説明を終える。
次に、機能制限システムの構成について説明する。図3に、機能制限システムの構成例を示す。インターネットには、Webアプリケーションを提供するサービスを実現するWebアプリケーションサーバ301a乃至cが接続されている。利用者端末100は、Webアプリケーションサーバ301a乃至cと接続する場合には、インターネットを介してWebアプリケーションサーバ301a乃至cの各々にアクセスする。
また、社内ネットワークは、ルータ303を介してインターネットに接続している。社内ネットワークには、社内サーバ305が設けられている。利用者端末100は、社内サーバ305と接続する場合には、インターネットと社内ネットワークとを介して社内サーバ305にアクセスする。但し、利用者端末100は、直接社内ネットワークを介して社内サーバ305にアクセスするようにしてもよい。
社内サーバ305は、利用者端末100に対して社内サービスを提供する。また、社内サーバ305は、利用者端末100における動作に用いられるデータを配信するようにしてもよい。以上で、機能制限システムの構成についての説明を終える。
次に、利用者端末100のモジュール構成について説明する。図4に、利用者端末100のモジュール構成例を示す。利用者端末100は、オペレーティングシステム(OS)401、Webブラウザ405、制限部407、格納部409、記憶部411、送信部413、受信部415、表示部417及び受付部419を有している。
オペレーティングシステム401は、API群を備えるフレームワーク403を有している。この例で、API群には、GPS機能に係るAPI431a、署名機能に係るAPI431b、通信機能に係るAPI431c、復号機能に係るAPI431d、アドレス帳機能に係るAPI431e及び時計機能に係るAPI431fが含まれている。但し、他の機能に係るAPIを設けるようにしてもよい。
Webブラウザ405は、スクリプトエンジン451を含んでいる。スクリプトエンジン451は、スクリプトを実行する。Webブラウザ405には、プラグイン453を追加される場合がある。本実施の形態における一部のモジュールを、プラグイン453により実現するようにしてもよい。
制限部407は、WebアプリケーションによるAPIの利用を制限する。格納部409は、制限部407の処理に用いられるデータを予め格納する。記憶部411は、制限部407の処理により生じるデータを記憶する。送信部413は、データをインターネットに向けて送信する。受信部415は、インターネットからデータを受信する。表示部417は、例えば操作に係る画面を表示する。受付部419は、例えば利用者の操作によるデータ入力を受け付ける。
更に、図5を用いて、格納部409と制限部407と記憶部411との詳細について説明する。格納部409は、この例では生成ルールテーブル、判定ルールテーブル及び検証データを格納する。
生成ルールは、コンテキストを生成するためのルールである。図6に、生成ルールテーブルの例を示す。図6のレコードは、コンテキストを生成するルールに相当する。レコードには、コンテキスト、時刻条件、位置条件、ネットワーク条件及びWebアプリケーション条件のフィールドが設けられている。
第1レコードには、時刻条件、位置条件及びWebアプリケーション条件は設定されておらず、ネットワーク条件としては、利用者端末100が社内ネットワークに接続していることが定められている。従って、第1レコードによれば、現在時刻、利用者端末100の位置及び利用者端末100で動作しているWebアプリケーションの如何に関わらず、利用者端末100が社内ネットワークに接続していれば、コンテキスト「CNT_A」が生成される。
第1レコードの条件を、例えば条件式「ネットワーク=社内ネットワーク」で表してもよい。
第2レコードには、時刻条件及びWebアプリケーション条件は設定されておらず、位置条件としては、利用者端末100の位置が社内に含まれることが定められ、ネットワーク条件としては、利用者端末100が社内ネットワーク以外に接続していることが定められている。従って、第2レコードによれば、現在時刻及び利用者端末100で動作しているWebアプリケーションの如何に関わらず、利用者端末100が社内で社内ネットワーク以外に接続していれば、コンテキスト「CNT_B」が生成される。
第2レコードの条件を、例えば条件式「位置=社内 AND ネットワーク=NOT 社内ネットワーク」で表してもよい。
第3レコードには、時刻条件及びWebアプリケーション条件は設定されておらず、位置条件としては、利用者端末100の位置が社外であることが定められ、ネットワーク条件としては、利用者端末100が社内ネットワーク以外に接続していることが定められている。
従って、第3レコードによれば、現在時刻及び利用者端末100で動作しているWebアプリケーションの如何に関わらず、利用者端末100が社外で社内ネットワーク以外に接続していれば、コンテキスト「CNT_C」が生成される。
第3レコードの条件を、例えば条件式「位置=NOT 社内 AND ネットワーク=NOT 社内ネットワーク」で表してもよい。
第4レコードには、位置条件及びネットワーク条件は設定されておらず、時刻条件としては、現在時刻が業務時間帯内であることが定められ、Webアプリケーション条件としては、利用者端末100が「xxx.jp/xx」のURLで特定されるWebアプリケーション(「APL_X」という。)を動作させていることが定められている。従って、第4レコードによれば、利用者端末100の位置及び利用者端末100が接続しているネットワークの如何に関わらず、業務時間中にWebアプリケーション「APL_X」を動作させていれば、コンテキスト「CNT_D」が生成される。
第4レコードの条件を、例えば条件式「現在時刻>始業時刻 AND 現在時刻<終業時刻 AND Webアプリケーション=xxx.jp/xx」で表してもよい。
第5レコードには、位置条件及びネットワーク条件は設定されておらず、時刻条件としては、現在時刻が業務時間帯内であることが定められ、Webアプリケーション条件としては、利用者端末100が「xxx.jp/xx」のURLで特定されるWebアプリケーション(「APL_X」という。)を動作させていないことが定められている。従って、第5レコードによれば、利用者端末100の位置及び利用者端末100が接続しているネットワークの如何に関わらず、業務時間中にWebアプリケーション「APL_X」を動作させていなければ、コンテキスト「CNT_E」が生成される。
第5レコードの条件を、例えば条件式「現在時刻>始業時刻 AND 現在時刻<終業時刻 AND Webアプリケーション=NOT xxx.jp/xx」で表してもよい。
第6レコードには、位置条件、ネットワーク条件及びWebアプリケーション条件は設定されておらず、時刻条件としては、現在時刻が業務時間帯外であることが定められている。従って、第6レコードによれば、利用者端末100の位置、利用者端末100が接続しているネットワーク及び利用者端末100で動作しているWebアプリケーションの如何に関わらず、業務時間外であれば、コンテキスト「CNT_F」が生成される。
第6レコードの条件を、例えば条件式「現在時刻<始業時刻 OR 現在時刻>終業時刻」で表してもよい。図6の例では、生成ルールをレコード形式で表したが、上述のように条件式形式で表してもよい。
図5の説明に戻って、格納部409に格納されている判定ルールは、APIの利用可否の判定に用いられるルールである。
図7に、判定ルールテーブルの例を示す。図7におけるレコードは、判定ルールに相当する。レコードには、コンテキスト、Webアプリケーション、アドレス帳機能に係るAPI、署名機能に係るAPI、GPS機能に係るAPI及び復号機能に係るAPIのフィールドが設けられている。
Webアプリケーションのフィールドは、当該判定ルールを適用するWebアプリケーションを限定する場合に用いられる。具体的には、当該判定ルールを適用するWebアプリケーションを提供するサービスのURLが設定される。従って、このURLは、Webアプリケーションを特定する情報であるとともに、Webアプリケーションを提供するサービスを特定する情報でもある。
アドレス帳機能に係るAPI、署名機能に係るAPI、GPS機能に係るAPI及び復号機能に係るAPIには、各APIの利用の可否が設定される。
第1レコードは、コンテキスト「CNT_A」に基づき、すべてのWebアプリケーションに対して、アドレス帳機能に係るAPIが、「利用可」であることを示している。同様に、署名機能に係るAPIは、「利用可」であるが、GPS機能に係るAPIは、「利用不可」であり、復号機能に係るAPIも、「利用不可」であることを示している。
従って、第1レコードによれば、例えば任意のWebアプリケーションが、アドレス帳機能に係るAPIを呼び出そうとした場合には、コンテキスト「CNT_A」に基づいて許可される。同様に、任意のWebアプリケーションが、署名機能に係るAPIを呼び出そうとした場合にも、コンテキスト「CNT_A」に基づいて許可され、一方、GPS機能に係るAPIを呼び出そうとした場合には、コンテキスト「CNT_A」に基づいて拒否され、復号機能に係るAPIを呼び出そうとした場合にも、コンテキスト「CNT_A」に基づいて拒否される。
第2レコードは、コンテキスト「CNT_B」に基づき、すべてのWebアプリケーションに対して、アドレス帳機能に係るAPIが、「利用可」であることを示している。同様に、署名機能に係るAPIは、「利用不可」であり、GPS機能に係るAPIも、「利用不可」であり、復号機能に係るAPIも、「利用不可」であることを示している。
従って、第2レコードによれば、例えば任意のWebアプリケーションが、アドレス帳機能に係るAPIを呼び出そうとした場合には、コンテキスト「CNT_B」に基づいて許可される。同様に、任意のWebアプリケーションが、署名機能に係るAPIを呼び出そうとした場合には、コンテキスト「CNT_B」に基づいて拒否され、GPS機能に係るAPIを呼び出そうとした場合にも、コンテキスト「CNT_B」に基づいて拒否され、復号機能に係るAPIを呼び出そうとした場合にも、コンテキスト「CNT_B」に基づいて拒否される。
第3レコードは、コンテキスト「CNT_C」に基づき、すべてのWebアプリケーションに対して、アドレス帳機能に係るAPIが、「利用不可」であることを示している。同様に、署名機能に係るAPIも、「利用不可」であり、GPS機能に係るAPIも、「利用不可」であり、復号機能に係るAPIも、「利用不可」であることを示している。
従って、第3レコードによれば、例えば任意のWebアプリケーションが、アドレス帳機能に係るAPIを呼び出そうとした場合には、コンテキスト「CNT_C」に基づいて拒否される。同様に、任意のWebアプリケーションが、署名機能に係るAPIを呼び出そうとした場合にも、コンテキスト「CNT_C」に基づいて拒否され、GPS機能に係るAPIを呼び出そうとした場合にも、コンテキスト「CNT_C」に基づいて拒否され、復号機能に係るAPIを呼び出そうとした場合にも、コンテキスト「CNT_C」に基づいて拒否される。
第4レコードは、コンテキスト「CNT_D」に基づき、利用者端末100が「zzz.jp/zz」のURLで特定されるWebアプリケーション(「APL_Z」という。)に対して、アドレス帳機能に係るAPIが、「利用不可」であることを示している。同様に、署名機能に係るAPIも、「利用不可」であるが、GPS機能に係るAPIは、「利用可」であり、復号機能に係るAPIも、「利用可」であることを示している。
従って、第4レコードによれば、例えばWebアプリケーション「APL_Z」が、アドレス帳機能に係るAPIを呼び出そうとした場合には、コンテキスト「CNT_D」に基づいて拒否される。同様に、Webアプリケーション「APL_Z」が、署名機能に係るAPIを呼び出そうとした場合にも、コンテキスト「CNT_D」に基づいて拒否されるが、GPS機能に係るAPIを呼び出そうとした場合には、コンテキスト「CNT_D」に基づいて許可され、復号機能に係るAPIを呼び出そうとした場合にも、コンテキスト「CNT_D」に基づいて許可される。
第5レコードは、コンテキスト「CNT_E」に基づき、利用者端末100が「zzz.jp/zz」のURLで特定されるWebアプリケーションに対して、アドレス帳機能に係るAPIが、「利用不可」であることを示している。同様に、署名機能に係るAPIも、「利用不可」であるが、GPS機能に係るAPIは、「利用可」である。また復号機能に係るAPIは、「利用不可」であることを示している。
従って、第5レコードによれば、例えばWebアプリケーション「APL_Z」が、アドレス帳機能に係るAPIを呼び出そうとした場合には、コンテキスト「CNT_E」に基づいて拒否される。同様に、Webアプリケーション「APL_Z」が、署名機能に係るAPIを呼び出そうとした場合には、コンテキスト「CNT_E」に基づいて拒否され、GPS機能に係るAPIを呼び出そうとした場合には、コンテキスト「CNT_E」に基づいて許可される。また、復号機能に係るAPIを呼び出そうとした場合には、コンテキスト「CNT_E」に基づいて拒否される。
第6レコードは、コンテキスト「CNT_F」に基づき、利用者端末100が「zzz.jp/zz」のURLで特定されるWebアプリケーションに対して、アドレス帳機能に係るAPIが、「利用不可」であることを示している。同様に、署名機能に係るAPIも、「利用不可」であり、GPS機能に係るAPIも、「利用不可」であり、復号機能に係るAPIも、「利用不可」であることを示している。
従って、第6レコードによれば、例えばWebアプリケーション「APL_Z」が、アドレス帳機能に係るAPIを呼び出そうとした場合には、コンテキスト「CNT_F」に基づいて拒否される。同様に、Webアプリケーション「APL_Z」が、署名機能に係るAPIを呼び出そうとした場合にも、コンテキスト「CNT_F」に基づいて拒否され、GPS機能に係るAPIを呼び出そうとした場合にも、コンテキスト「CNT_F」に基づいて拒否され、復号機能に係るAPIを呼び出そうとした場合にも、コンテキスト「CNT_F」に基づいて拒否される。
図5の説明に戻って、格納部409に格納されている検証データは、Webアプリケーションを提供するWebアプリケーションサーバ301を検証する際に用いられるデータである。検証データは、例えば、ルート証明書である。
制限部407は、生成ルール設定部501、判定ルール設定部503、検証データ登録部505、抽出部507、検証部509、Webアプリケーション登録部511、検出部513、コンテキスト生成部515及び判定部517を有している。
生成ルール設定部501は、上述した生成ルールテーブルを格納部409に格納させる。生成ルール設定部501は、例えば、表示部417に生成ルールの入力画面を表示させ、生成ルール入力画面に対する入力の操作を受付部419で受け付けることによって、利用者に生成ルールを設定させる。あるいは、生成ルール設定部501は、インターネットを介して、生成ルールテーブルを配信する装置(例えば、社内サーバ305)から生成ルールテーブルをダウンロードするようにしてもよい。利用者は、例えば準備段階で生成ルール設定部501を起動し、生成ルールテーブルを用意する。
判定ルール設定部503は、上述した判定ルールテーブルを格納部409に格納させる。判定ルール設定部503は、例えば、表示部417に判定ルールの入力画面を表示させ、判定ルール入力画面に対する入力の操作を受付部419で受け付けることによって、利用者に判定ルールを設定させる。あるいは、判定ルール設定部503は、インターネットを介して、判定ルールテーブルを配信する装置(例えば、社内サーバ305)から判定ルールテーブルテーブルをダウンロードするようにしてもよい。利用者は、例えば準備段階で判定ルール設定部503を起動し、判定ルールテーブルを用意する。
検証データ登録部505は、検証データを所定の機関(例えば認証局)から取得し、格納部409に格納させる。利用者は、例えば準備段階で検証データ登録部505を起動し、検証データを用意する。
抽出部507は、通信状況を監視し、通信に係る情報(接続先ネットワークのURLやWebアプリケーションを提供するサービスのURLなど)を抽出する。また、抽出部507は、接続先のネットワークのURLを記憶部411に記憶させる。
本実施の形態では、抽出部(プロキシ型)507aの例について説明する。抽出部(プロキシ型)507aは、Webブラウザ405とWebアプリケーションサーバ301との間の通信を中継する。そのため、Webブラウザ405は、抽出部(プロキシ型)507aをプロキシに設定しておく。尚、実施の形態2では、抽出部(API監視型)507bの例について説明する。
検証部509は、Webアプリケーションサーバ301からダウンロードされるWebアプリケーションを検証する。例えば、WebアプリケーションがHTML(HyperText Markup Language)5ファイル形式である場合、検証部509は、ダウンロードされるHTML5ファイルに相当するHTTP(HyperText Transfer Protocol)レスポンスの署名を検証する。検証部509は、Webアプリケーションサーバ301を認証するようにしてもよい。Webアプリケーション登録部511は、Webアプリケーションサーバ301のURLを記憶部411に記憶させる。検出部513は、APIの呼び出しの発生を検出する。本実施の形態に係る検出部(エンジン監視型)513aは、Webブラウザ405におけるスクリプトエンジン451への働きかけを監視し、APIの呼び出しを要する特定のスクリプトを検出することによって、APIの呼び出しの発生を検出する。尚、実施の形態2では、検出部(API監視型)513bの例について説明する。
コンテキスト生成部515は、コンテキストを生成する。判定部517は、コンテキストに基づき、APIの利用可否の判定を行う。
記憶部411は、例えば、ネットワークアドレスとWebアプリケーションリストとを記憶する。ネットワークアドレスは、接続先ネットワークのURLである。Webアプリケーションリストは、利用者端末100で動作しているWebアプリケーションを提供したサービスのURLのリストである。動作を終えたWebアプリケーションについても、当該URLが残されるようにしてもよい。以上で、機能制限システムのモジュール構成についての説明を終える。
続いて、図8乃至11に基づいて、シーケンスについて説明する。まず、図8のシーケンスの例について説明する。このシーケンスは、Webブラウザ405からWebアプリケーションサーバ301にアクセスすることを想定している。Webブラウザ405から送出されるHTTPリクエストは、Webブラウザ405におけるプロキシの設定に従って、抽出部(プロキシ型)507aに送られる(S801)。このHTTPリクエストは、Webアプリケーションサーバ301のURLへのアクセス要求に相当する。そして、抽出部(プロキシ型)507aは、HTTPリクエストをWebアプリケーションサーバ301に転送する(S803)。
HTTPリクエストに対するHTTPレスポンスは、Webアプリケーションサーバ301から抽出部(プロキシ型)507aへ返される(S805)。HTTPレスポンスは、例えばHTML5ファイルに相当する。
監視していたHTTPリクエストとHTTPレスポンスとに基づいて、抽出部(プロキシ型)507aは、ネットワークアドレスを抽出する処理を行う(S807)。具体的には、抽出部(プロキシ型)507aは、接続先ネットワークのURLを特定する。このとき、接続先ネットワークのURLは、Webアプリケーションサーバ301のURLと一致する。抽出した接続先ネットワークのURLは、前述の通り記憶部411に記憶される。この例では、Webアプリケーションサーバ301へのアクセスの例を示したが、他の装置にアクセスする場合にも、抽出部(プロキシ型)507aは、ネットワークアドレスを抽出するようにしてもよい。
抽出部(プロキシ型)507aは、検証部509に、Webアプリケーションサーバ301のURLとHTTPレスポンスとを渡す(S809)。URLとHTTPレスポンスとを受けると、検証部509は検証処理を行う(S811)。具体的には、検証部509は、HTTPレスポンスに付されている署名データを検証する。署名データの検証に成功した場合には、Webアプリケーションは真正であると判断される。署名データの検証に失敗した場合には、Webアプリケーションは不正であると判断される。
また、検証部509は、SSL(Secure Socket Layer)通信の開始時にWebアプリケーションサーバ301を認証するようにしてもよい。Webアプリケーションサーバ301の認証に成功した場合には、Webアプリケーションサーバ301は真正であり、Webアプリケーションサーバ301の認証に失敗した場合には、Webアプリケーションサーバ301は不正であると判断される。
検証部509は、抽出部(プロキシ型)507aへ検証結果を返す(S813)。検証結果が失敗である場合には、抽出部(プロキシ型)507aは処理を中断する。
検証結果が成功である場合には、抽出部(プロキシ型)507aは、Webアプリケーション登録部511にWebアプリケーションサーバ301のURLを渡す(S815)。Webアプリケーションサーバ301のURLを受けると、Webアプリケーション登録部511は、Webアプリケーション登録処理を行う(S817)。具体的には、Webアプリケーション登録部511は、Webアプリケーションサーバ301のURLを記憶部411に記憶されているWebアプリケーションリストに加える。
そして、抽出部(プロキシ型)507aは、Webブラウザ405へHTTPレスポンスを渡す(S819)。
図9に、続きのシーケンスの例を示す。HTTPレスポンスを受けると、Webブラウザ405は、HTML5のデータに対する構文解析や表示等の処理を行う。このとき、Webブラウザ405は、HTML5のデータ中のスクリプトを検出部(エンジン監視型)513aに渡す(S901)。
スクリプトが前述のAPI群のうちのいずれかのAPIの機能に関する記述を含む場合には、検出部(エンジン監視型)513aは、判定部517に当該APIについての利用可否の判定を求める。そのため、検出部(エンジン監視型)513aは、判定部517に判定リクエスト(API種別を含む。)を渡す(S903)。
判定リクエストを受けると、判定部517は、コンテキスト生成部515にコンテキストを生成するリクエストを渡す(S905)。
コンテキストを生成するリクエストを受けると、コンテキスト生成部515は、コンテキスト生成処理を行う(S907)。コンテキスト生成部515は、ネットワークアドレスの情報を用いる場合に、記憶部411からネットワークアドレスを読み出す。また、コンテキスト生成部515は、動作しているWebアプリケーションの情報を用いる場合に、記憶部411からWebアプリケーションリストを読み出す。更に、コンテキスト生成部515は、APIから取得する情報(例えば、位置情報や時間情報)を用いる場合に、API431を呼び出し(S909)、API431から戻り値(以下、API戻り値という。)を得る(S913)。そして、コンテキスト生成部515は、収集した情報と生成ルールとに基づいてコンテキストを生成する。
生成されたコンテキストは、コンテキスト生成部515から判定部517に返される(S915)。
コンテキストを受けると、判定部517は、利用可否判定処理を行う(S917)。具体的には、判定部517は、コンテキストと判定ルールとに基づいて、当該APIの利用可否を判定する。そして、判定部517は、検出部(エンジン監視型)513aに判定結果を返す(S919)。
図10に、判定結果が成功である場合のシーケンスの例を示す。検出部(エンジン監視型)513aが成功の判定結果(S1001)を受けた場合には、検出部(エンジン監視型)513aは、スクリプトをスクリプトエンジン451に渡す(S1003)。スクリプトエンジン451はWebブラウザ405に含まれるが、便宜的にWebブラウザ405と分けて説明している。
スクリプトエンジン451は、当該機能に係るAPI431を呼び出す(S1005)。そして、API431は、スクリプトエンジン451にAPI戻り値を返す(S1007)。スクリプトエンジン451は、検出部(エンジン監視型)513aに処理を戻す(S1009)。更に、検出部(エンジン監視型)513aは、Webブラウザ405に処理を戻す(S1011)。それぞれの処理の復帰において、API戻り値が返されるようにしてもよい。
図11に、判定結果が失敗である場合のシーケンスの例を示す。検出部(エンジン監視型)513aが失敗の判定結果(S1101)を受けた場合には、検出部(エンジン監視型)513aは、Webブラウザ405にAPI利用不可の通知を渡す(S1103)。以上でシーケンスについての説明を終える。
続いて、処理の詳細について説明する。まず、検出部(エンジン監視型)513aの処理について説明する。図12に、検出処理(エンジン監視型)フローの例を示す。検出部(エンジン監視型)513aは、Webブラウザ405からスクリプトを受ける(S1201)。この処理は、図9のS901に示したステップに相当する。
検出部(エンジン監視型)513aは、受け取ったスクリプトに前述のAPI群のうちのいずれかのAPIの機能に関する記述が含まれているか否かを判定する(S1203)。スクリプトに前述のAPI群のいずれのAPIの機能に関する記述も含まれていないと判定した場合には、検出部(エンジン監視型)513aは、スクリプトをスクリプトエンジン451に渡す(S1205)。検出部(エンジン監視型)513aは、スクリプトエンジン451におけるスクリプト処理の終了を待つ(S1207)。検出部(エンジン監視型)513aは、Webブラウザ405へ処理を戻す(S1209)。
受け取ったスクリプトに前述のAPI群のうちのいずれかのAPIの機能に関する記述が含まれていると判定した場合には、検出部(エンジン監視型)513aは、判定部517に判定リクエストを渡す(S1211)。このとき、判定リクエストに当該APIの種別を含める。この処理は、図9のS903に示したステップに相当する。
検出部(エンジン監視型)513aは、判定部517から判定結果を受ける(S1213)。図9のS919に示したステップに相当する。
そして、検出部(エンジン監視型)513aは、判定結果が成功であるか、あるいは失敗であるかを判定する(S1215)。判定結果が成功であると判定した場合には、検出部(エンジン監視型)513aは、スクリプトエンジン451へスクリプトを渡す(S1217)。この処理は、図10のS1003に示したステップに相当する。
そして、検出部(エンジン監視型)513aは、スクリプトエンジン451におけるスクリプト処理の終了を待つ(S1219)。図10のS1009に示したステップに相当する。
スクリプトエンジン451におけるスクリプト処理が終了すると、検出部(エンジン監視型)513aは、Webブラウザ405へ処理を戻す(S1221)。検出部(エンジン監視型)513aは、API戻り値を返すようにしてもよい。図10のS1011に示したステップに相当する。
S1215において判定結果が失敗であると判定した場合には、検出部(エンジン監視型)513aは、Webブラウザ405へAPI利用不可の通知を渡す(S1223)。図11のS1103に示したステップに相当する。以上で、検出部513の処理についての説明を終える。
次に、判定部517の処理について説明する。図13に、判定処理フローの例を示す。判定部517は、判定リクエストを待つ(S1301)。判定リクエストには、判定対象となるAPI種別が含まれている。判定リクエストを受けると、判定部517は、呼び出し元のWebアプリケーションを特定する(S1303)。判定部517は、例えば、抽出部(プロキシ型)507aからWebアプリケーションサーバ301のURLを取得し、当該URLによって呼び出し元のWebアプリケーションを特定する。あるいは、判定部517は、記憶部411に記憶されているWebアプリケーションリストに登録されているWebアプリケーションサーバ301のURLによって判定対象のWebアプリケーションを特定する。WebアプリケーションリストにWebアプリケーションサーバ301のURLが複数含まれている場合には、判定部517は、最も遅く登録されたWebアプリケーションサーバ301のURLによって呼び出し元のWebアプリケーションを特定するようにしてもよい。
判定部517は、コンテキストを生成するリクエストを渡す(S1305)。この処理は、図9のS905に示したステップに相当する。
そして、判定部517は、生成されたコンテキストを受ける(S1307)。この処理は、図9のS915に示したステップに相当する。
判定部517は、判定ルールテーブルから、生成されたコンテキストに適合し、更に呼び出し元のWebアプリケーションにも適合するレコードを特定する(S1309)。判定部517は、当該レコードにおいて判定対象のAPI種別に対応する利用可否を読む(S1311)。S1309とS1311とは、図9のS917に示した利用可否判定処理に相当する。
判定部517は、検出部(エンジン監視型)513aに判定結果を返す(S1313)。図9のS919に示したステップに相当する。以上で、判定部517の処理についての説明を終える。
次に、コンテキスト生成部515の処理について説明する。図14に、コンテキスト生成処理フローの例を示す。コンテキスト生成部515は、コンテキストを生成するリクエストを待つ(S1401)。コンテキストを生成するリクエストを受けると、コンテキスト生成部515は、格納部409に格納されている生成ルールテーブルのうち、未処理のレコードを1つ特定する(S1403)。コンテキスト生成部515は、例えば順次レコードを特定する。
コンテキスト生成部515は、未処理の条件のフィールドを1つ特定する。コンテキスト生成部515は、例えば順次条件のフィールドを特定する(S1405)。コンテキスト生成部515は、当該条件のフィールドに条件があるか否かを判定する(S1407)。当該条件のフィールドに条件がないと判定した場合には、当該条件のフィールドについての判定を行わずに、S1413の処理に移る。
当該条件のフィールドに条件があると判定した場合には、コンテキスト生成部515は、当該条件の対象データを取得する(S1409)。時刻条件であれば、時計機能に係るAPI431fから現在時刻を取得する。位置条件であれば、API431aから位置情報を取得する。ネットワーク条件であれば、記憶部411からネットワークアドレスを読み取る。Webアプリケーション条件であれば、記憶部411のWebアプリケーションリストから動作している他のWebアプリケーションのURLを読み取る。そして、コンテキスト生成部515は、対象データが条件に合致するか否かを判定する(S1411)。
対象データが条件に合致すると判定した場合には、コンテキスト生成部515は、未処理の条件フィールドがあるか否かを判定する(S1413)。未処理の条件フィールドがあると判定した場合には、S1405の処理に戻る。未処理の条件フィールドがないと判定した場合には、合致しない条件が無いので、コンテキスト生成部515は、当該レコードのコンテキストを特定する(S1415)。
一方、S1411で対象データが条件に合致しないと判定した場合には、コンテキストを生成しない。
コンテキスト生成部515は、未処理のレコードがあるか否かを判定する(S1417)。未処理のレコードがあると判定した場合には、S1403の処理に戻る。
未処理のレコードがないと判定した場合には、コンテキスト生成部515は、S1415で特定したコンテキストを判定部517に返す(S1419)。この処理は、図9のS915に示したステップに相当する。
そして、S1401に戻り、次の生成リクエストを待つ。以上で、コンテキスト生成部515の処理についての説明を終える。
本実施の形態によれば、Webアプリケーションによる特定機能の利用を、自動的に制限できる。例えば、利用者端末100で計測された情報(位置情報や時刻情報など)や秘密に符号処理された情報(暗号化されたデータ、復号されたデータ、署名データなど)が不正使用されることを防ぐことができる。
また、Webアプリケーション又はWebアプリケーションを提供するサービスに応じて、Webアプリケーションによる特定機能の利用を制限できる。
また、ネットワークとの接続状況に応じて、Webアプリケーションによる特定機能の利用を制限できる。
また、他のWebアプリケーションの動作状況に応じて、Webアプリケーションによる特定機能の利用を制限できる。
本実施の形態によれば、スクリプトエンジン451を監視するので、オペレーティングシステム401に依存しない。
[実施の形態2]
実施の形態1で説明した抽出部(プロキシ型)507aに代えて、抽出部(API監視型)507bを用いる例を説明する。また、実施の形態1で説明した検出部(エンジン監視型)513aに代えて、検出部(API監視型)513bを用いる例についても併せて説明する。
抽出部(API監視型)507bは、通信機能に係るAPI431cの呼び出しをフックすることによって、通信状況を監視し、通信に係る情報(接続先ネットワークのURLやWebアプリケーションを提供するサービスのURLなど)を抽出する。
また、検出部(API監視型)513bは、各機能に係るAPIの呼び出しをフックすることによって、API431の呼び出しの発生を検出する。
図15乃至18に基づいて、実施の形態2に係るシーケンスについて説明する。まず、図15のシーケンスの例について説明する。この例では、ソケットを用いた通信を想定する。この図では、ソケットを用いた通信のシーケンスの一部を示している。例えば、Webブラウザ405によるソケットオープンを抽出部(API監視型)507bでフックし(S1501)、ソケットオープンを通信機能に係るAPI431cに渡す(S1503)。データの送信も、抽出部(API監視型)507bを介する(S1505,S1507)。
そして、通信機能に係るAPI431cからWebアプリケーションサーバ301へHTTPリクエストが送出される(S1509)。Webアプリケーションサーバ301から返されたHTTPレスポンスは、通信機能に係るAPI431cから抽出部(API監視型)507bに渡される(S1511、S1513)。
HTTPレスポンスに相当するデータを受信すると、抽出部(API監視型)507bは、ネットワークアドレスを抽出する処理を行う(S1515)。具体的には、抽出部(API監視型)507bは、接続先ネットワークのURLを特定する。このとき、接続先ネットワークのURLは、Webアプリケーションサーバ301のURLと一致する。抽出した接続先ネットワークのURLは、前述の通り記憶部411に記憶される。この例では、Webアプリケーションサーバ301へのアクセスの例を示したが、他の装置にアクセスする場合にも、抽出部(API監視型)507bは、ネットワークアドレスを抽出するようにしてもよい。
抽出部(API監視型)507bは、検証部509に、Webアプリケーションサーバ301のURLとHTTPレスポンスとを渡す(S1517)。URLとHTTPレスポンスとを受けると、検証部509は検証処理を行う(S1519)。具体的には、検証部509は、HTTPレスポンスに付されている署名データを検証する。署名データの検証に成功した場合には、Webアプリケーションは真正であると判断される。署名データの検証に失敗した場合には、Webアプリケーションは不正であると判断される。
また、検証部509は、SSL通信の開始時にWebアプリケーションサーバ301を認証するようにしてもよい。Webアプリケーションサーバ301の認証に成功した場合には、Webアプリケーションサーバ301は真正であり、Webアプリケーションサーバ301の認証に失敗した場合には、Webアプリケーションサーバ301は不正であると判断される。
検証部509は、抽出部(API監視型)507bへ検証結果を返す(S1521)。検証結果が失敗である場合には、抽出部(API監視型)507bは処理を中断する。
検証結果が成功である場合には、抽出部(API監視型)507bは、Webアプリケーション登録部511にWebアプリケーションサーバ301のURLを渡す(S1523)。Webアプリケーションサーバ301のURLを受けると、Webアプリケーション登録部511は、Webアプリケーション登録処理を行う(S1525)。具体的には、Webアプリケーション登録部511は、Webアプリケーションサーバ301のURLを記憶部411に記憶されているWebアプリケーションリストに加える。
そして、抽出部(API監視型)507bは、Webブラウザ405へHTTPレスポンスを渡す(S1527)。
図16に、続きのシーケンスの例を示す。Webブラウザ405からAPIが呼び出されると、検出部(API監視型)513bは当該API呼び出しをフックする(S1601)。フックする箇所によって、呼び出されるAPIの種別は特定される。
API呼び出しをフックすると、検出部(API監視型)513bは、判定部517に当該APIについての利用可否の判定を求める。そのため、検出部(API監視型)513bは、判定部517に判定リクエスト(API種別を含む。)を渡す(S1603)。
判定リクエストを受けると、判定部517は、コンテキスト生成部515にコンテキストを生成するリクエストを渡す(S1605)。
コンテキストを生成するリクエストを受けると、コンテキスト生成部515は、コンテキスト生成処理を行う(S1607)。コンテキスト生成部515は、ネットワークアドレスの情報を用いる場合に、記憶部411からネットワークアドレスを読み出す。コンテキスト生成部515は、動作しているWebアプリケーションの情報を用いる場合に、記憶部411からWebアプリケーションリストを読み出す。コンテキスト生成部515は、APIから取得する情報(例えば、位置情報や時間情報)を用いる場合に、API431を呼び出し(S1609)、API戻り値を得る(S1613)。そして、コンテキスト生成部515は、収集した情報と生成ルールとに基づいてコンテキストを生成する。
生成されたコンテキストは、コンテキスト生成部515から判定部517に返される(S1615)。
コンテキストを受けると、判定部517は、利用可否判定処理を行う(S1617)。具体的には、判定部517は、コンテキストと判定ルールに基づいて、当該APIの利用可否を判定する。そして、判定部517は、検出部(API監視型)513bに判定結果を返す(S1619)。
図17に、判定結果が成功である場合のシーケンスの例を示す。検出部(API監視型)513bが成功の判定結果(S1701)を受けた場合には、検出部(API監視型)513bは、API431を呼び出す(S1703)。検出部(API監視型)513bは、API431から戻り値を受けると(S1705)、Webブラウザ405にその戻り値を渡す(S1707)。
図18に、判定結果が失敗である場合のシーケンスの例を示す。検出部(API監視型)513bが失敗の判定結果(S1801)を受けた場合には、検出部(API監視型)513bは、Webブラウザ405にAPI利用不可の通知を渡す(S1803)。以上でシーケンスについての説明を終える。
続いて、処理の詳細について説明する。まず、検出部(API監視型)513bの処理について説明する。図19に、検出処理(API監視型)フローの例を示す。検出部(API監視型)513bは、API呼び出しをフックする(S1901)。図16のS1601に示したステップに相当する。このとき、検出部(API監視型)513bは、APIの種別も特定する。
検出部(API監視型)513bは、判定部517に判定リクエストを渡す(S1903)。このとき、判定リクエストに当該APIの種別を含める。図16のS1603に示したステップに相当する。
検出部(API監視型)513bは、判定部517から判定結果を受ける(S1905)。図16のS1619に示したステップに相当する。
そして、検出部(エンジン監視型)513aは、判定結果が成功であるか、あるいは失敗であるかを判定する(S1907)。判定結果が成功であると判定した場合には、検出部(API監視型)513bは、種別に応じてAPI431を呼び出す(S1909)。図17のS1703に示したステップに相当する。
そして、検出部(API監視型)513bは、API431から戻り値を受ける(S1911)。図17のS1705に示したステップに相当する。
検出部(API監視型)513bは、API戻り値をWebブラウザ405に返す(S1913)。図17のS1707に示したステップに相当する。
S1907において判定結果が失敗であると判定した場合には、検出部(API監視型)513bは、API利用不可の通知を渡す(S1915)。図18のS1803に示したステップに相当する。以上で、検出部(API監視型)513bの処理についての説明を終える。
抽出部(プロキシ型)507aと検出部(API監視型)513bとを組み合わせる形態としてもよい。また、抽出部(API監視型)507bと検出部(エンジン監視型)513aとを組み合わせる形態としてもよい。
本実施の形態によれば、API呼び出しをフックするので、Webブラウザ405に依存しない。更に、プロセス単位で通信を監視することができる。
[実施の形態3]
上述の実施の形態では、Webブラウザを有する利用者端末100内でAPI431の利用を制限する処理を行う例について説明したが、本実施の形態では、Webブラウザを有する利用者端末100とは別に設けた中継装置200においてAPIの利用を制限する例について説明する。
図20に、実施の形態3に係る機能制限システムの構成例を示す。中継装置200は、インターネットに接続する機能を有している。そして、中継装置200は、Webアプリケーションサーバ301a乃至c、利用者端末100及び社内サーバ305とインターネットを介して通信する。尚、中継装置200と利用者端末100との間は、近距離無線通信や無線LANなどの他の通信媒体によって接続されるようにしてもよい。
中継装置200は、利用者端末100とWebアプリケーションサーバ301a乃至cとの間の通信を中継する。また、中継装置200は、利用者端末100にAPIの機能を提供する。そして、利用者端末100にAPIの機能を提供する前に、コンテキストを生成し、APIの利用可否判定を行い、利用可と判定されたAPIの機能を提供するように動作する。
図21に、中継装置200のモジュール構成例を示す。中継装置200は、オペレーティングシステム(OS)2101、制限部2107、格納部2109、記憶部2111、送信部2113、受信部2115、表示部2117及び受付部2119を有している。
オペレーティングシステム2101は、API群を備えるフレームワーク2103を有している。この例で、API群には、GPS機能に係るAPI2131a、署名機能に係るAPI2131b、通信機能に係るAPI2131c、復号機能に係るAPI2131d及び時計機能に係るAPI2131fが含まれている。但し、他の機能に係るAPIを設けるようにしてもよい。
図22を用いて、格納部2109と制限部2107と記憶部2111との詳細について説明する。格納部2109は、この例では生成ルールテーブル、判定ルールテーブル及び検証データを格納する。
制限部2107は、生成ルール設定部2201、判定ルール設定部2203、検証データ登録部2205、抽出部(プロキシ型)2207a、検証部2209、Webアプリケーション登録部2211、コンテキスト生成部2215、判定部2217及び中継部2219を有している。
生成ルール設定部2201は、上述した生成ルールテーブルを格納部2109に格納させる。生成ルール設定部2201は、例えば、表示部2117に生成ルールの入力画面を表示させ、生成ルール入力画面に対する入力の操作を受付部2119で受け付けることによって、利用者に生成ルールを設定させる。あるいは、生成ルール設定部2201は、インターネットを介して、生成ルールテーブルを配信する装置(例えば、社内サーバ305)から生成ルールテーブルをダウンロードするようにしてもよい。利用者は、例えば準備段階で生成ルール設定部2201を起動し、生成ルールテーブルを用意する。
判定ルール設定部2203は、上述した判定ルールを格納部2109に格納させる。判定ルール設定部2203は、例えば、表示部2117に判定ルールの入力画面を表示させ、判定ルール入力画面に対する入力の操作を受付部2119で受け付けることによって、利用者に判定ルールを設定させる。あるいは、判定ルール設定部2203は、インターネットを介して、判定ルールテーブルを配信する装置(例えば、社内サーバ305)から判定ルールテーブルをダウンロードするようにしてもよい。利用者は、例えば準備段階で判定ルール設定部2203を起動し、判定ルールテーブルを用意する。
検証データ登録部2205は、検証データを所定の機関(例えば認証局)から取得し、格納部2109に格納させる。利用者は、例えば準備段階で検証データ登録部2205を起動し、検証データを用意する。
抽出部(プロキシ型)2207aは、通信状況を監視し、通信に係る情報(接続先ネットワークのURLやWebアプリケーションを提供するサービスのURLなど)を抽出する。また、抽出部(プロキシ型)2207aは、接続先のネットワークのURLを記憶部2111に記憶させる。
検証部2209は、Webアプリケーションサーバ301からダウンロードされるWebアプリケーションを検証する。例えば、WebアプリケーションがHTML5ファイル形式である場合、検証部2209は、ダウンロードされるHTML5ファイルに相当するHTTPレスポンスの署名を検証する。検証部2209は、Webアプリケーションサーバ301を認証するようにしてもよい。Webアプリケーション登録部2211は、Webアプリケーションサーバ301のURLを記憶部2111に記憶させる。
コンテキスト生成部2215は、コンテキストを生成する。判定部2217は、コンテキストに基づき、APIの利用可否の判定を行う。
中継部2219は、利用者端末100からのAPI利用を中継する。
記憶部2111は、例えば、ネットワークアドレスとWebアプリケーションリストとを記憶する。ネットワークアドレスは、接続先ネットワークのURLである。Webアプリケーションリストは、利用者端末100で動作しているWebアプリケーションを提供したサービスのURLのリストである。動作を終えたWebアプリケーションについても、当該URLが残されるようにしてもよい。
図23に、実施の形態3に係る利用者端末のモジュール構成例を示す。利用者端末100は、検出部(エンジン監視型)2301aを有している。検出部(エンジン監視型)2301aは、スクリプトエンジン451を監視する。
図24に、実施の形態3に係るシーケンスの例を示す。利用者端末100のWebブラウザ405から送出されるHTTPリクエストは、利用者端末100のWebブラウザ405におけるプロキシの設定に従って、中継装置200の抽出部(プロキシ型)2207aに送られる(S2401)。このHTTPリクエストは、Webアプリケーションサーバ301のURLへのアクセス要求に相当する。そして、中継装置200の抽出部(プロキシ型)2207aは、HTTPリクエストをWebアプリケーションサーバ301に転送する(S2403)。
HTTPリクエストに対するHTTPレスポンスは、Webアプリケーションサーバ301から中継装置200の抽出部(プロキシ型)2207aへ返される(S2405)。HTTPレスポンスは、例えばHTML5ファイルに相当する。
監視していたHTTPリクエストとHTTPレスポンスとに基づいて、中継装置200の抽出部(プロキシ型)2207aは、ネットワークアドレスを抽出する処理を行う(S2407)。具体的には、中継装置200の抽出部(プロキシ型)2207aは、接続先ネットワークのURLを特定する。このとき、接続先ネットワークのURLは、Webアプリケーションサーバ301のURLと一致する。抽出した接続先ネットワークのURLは、前述の通り記憶部2111に記憶される。この例では、Webアプリケーションサーバ301へのアクセスの例を示したが、他の装置にアクセスする場合にも、中継装置200の抽出部(プロキシ型)2207aは、ネットワークアドレスを抽出するようにしてもよい。
中継装置200の抽出部(プロキシ型)2207aは、中継装置200の検証部2209に、Webアプリケーションサーバ301のURLとHTTPレスポンスとを渡す(S2409)。URLとHTTPレスポンスと受けると、中継装置200の検証部2209は検証処理を行う(S2411)。具体的には、中継装置200の検証部2209は、HTTPレスポンスに付されている署名データを検証する。署名データの検証に成功した場合には、Webアプリケーションは真正であると判断される。署名データの検証に失敗した場合には、Webアプリケーションは不正であると判断される。
また、中継装置200の検証部2209は、SSL通信の開始時にWebアプリケーションサーバ301を認証するようにしてもよい。Webアプリケーションサーバ301の認証に成功した場合には、Webアプリケーションサーバ301は真正であり、Webアプリケーションサーバ301の認証に失敗した場合には、Webアプリケーションサーバ301は不正であると判断される。
中継装置200の検証部2209は、中継装置200の抽出部(プロキシ型)2207aへ検証結果を返す(S2413)。検証結果が失敗である場合には、中継装置200の抽出部(プロキシ型)2207aは処理を中断する。
検証結果が成功である場合には、中継装置200の抽出部(プロキシ型)2207aは、中継装置200のWebアプリケーション登録部2211にWebアプリケーションサーバ301のURLを渡す(S2415)。Webアプリケーションサーバ301のURLを受けると、中継装置200のWebアプリケーション登録部2211は、Webアプリケーション登録処理を行う(S2417)。具体的には、中継装置200のWebアプリケーション登録部2211は、Webアプリケーションサーバ301のURLを記憶部2111に記憶されているWebアプリケーションリストに加える。
そして、中継装置200の抽出部(プロキシ型)2207aは、利用者端末100のWebブラウザ405へHTTPレスポンスを渡す(S2419)。
図25に、続きのシーケンスの例を示す。利用者端末100の検出部(エンジン監視型)2301aは、利用者端末100のWebブラウザ405から受けたスクリプトに前述のAPI群のうちのいずれかのAPIの機能に関する記述が含まれている場合に、中継装置200の中継部2219に当該APIの利用を求める。そのため、利用者端末100の検出部(エンジン監視型)2301aは、インターネットを介して中継装置200の中継部2219にAPI利用リクエストを送る(S2501)。このとき、インターネットに代えて、近距離無線通信や無線LANなどの他の通信媒体が用いられるようにしてもよい。
中継装置200の中継部2219は、中継装置200の判定部2217に判定リクエスト(API種別を含む。)を渡す(S2503)。
判定リクエストを受けると、中継装置200の判定部2217は、中継装置200のコンテキスト生成部2215にコンテキストを生成するリクエストを渡す(S2505)。
コンテキストを生成するリクエストを受けると、中継装置200のコンテキスト生成部2215は、コンテキスト生成処理を行う(S2507)。中継装置200のコンテキスト生成部2215は、ネットワークアドレスの情報を用いる場合に、記憶部2111からネットワークアドレスを読み出す。また、中継装置200のコンテキスト生成部2215は、動作しているWebアプリケーションの情報を用いる場合に、記憶部2111からWebアプリケーションリストを読み出す。更に、中継装置200のコンテキスト生成部2215は、APIから取得する情報(例えば、位置情報や時間情報)を用いる場合に、中継装置200のAPI2131を呼び出し(S2509)、中継装置200のAPI2131から戻り値を得る(S2513)。そして、中継装置200のコンテキスト生成部2215は、収集した情報と生成ルールとに基づいてコンテキストを生成する。
生成されたコンテキストは、中継装置200のコンテキスト生成部2215から中継装置200の判定部2217に返される(S2515)。
コンテキストを受けると、中継装置200の判定部2217は、利用可否判定処理を行う(S2517)。具体的には、中継装置200の判定部2217は、コンテキストと判定ルールとに基づいて、当該APIの利用可否を判定する。そして、中継装置200の判定部2217は、中継装置200の中継部2219に判定結果を返す(S2519)。
図26に、判定結果が成功である場合のシーケンスの例を示す。中継装置200の中継部2219が成功の判定結果(S2601)を受けた場合には、中継装置200の中継部2219は、中継装置200における当該機能に係るAPI2131を呼び出す(S2603)。そして、中継装置200のAPI2131は、中継装置200の中継部2219にAPI戻り値を返す(S2605)。そして、中継装置200の中継部2219は、インターネットを介して利用者端末100の検出部(エンジン監視型)2301aにAPI利用結果を送る(S2607)。API利用結果は、API戻り値を含んでいる。利用者端末100側は、API戻り値を用いて処理を続行する。このとき、インターネットに代えて、近距離無線通信や無線LANなどの他の通信媒体が用いられるようにしてもよい。
図27に、判定結果が失敗である場合のシーケンスの例を示す。中継装置200の中継部2219が失敗の判定結果(S2701)を受けた場合には、中継装置200の中継部2219は、インターネットを介して利用者端末100の検出部(エンジン監視型)2301aにAPI利用不可の通知を送る(S2703)。このとき、インターネットに代えて、近距離無線通信や無線LANなどの他の通信媒体が用いられるようにしてもよい。
本実施の形態によれば、プログラムを実行する装置とは別の装置の状況に応じて、プログラムによる特定機能の利用を制限できる。
[実施の形態4]
利用者端末100で監視するAPIの呼び出しに基づいて、利用者端末100と中継装置200とが連携する形態について説明する。
図28に、実施の形態4に係る格納部2109と制限部2107と記憶部2111の構成例を示す。図22の抽出部(プロキシ型)2207aに代えて、抽出部(API監視型)2207bを有している。
図29に、実施の形態4に係る利用者端末100のモジュール構成例を示す。利用者端末100は、図23に示した検出部(エンジン監視型)2301aに代えて、検出部(API監視型)2301bを有している。更に、利用者端末100は、転送部2901を有している。
図30に、実施の形態4に係るシーケンスの例を示す。この例では、ソケットを用いた通信を想定する。この図では、ソケットを用いた通信のシーケンスの一部を示している。例えば、利用者端末100のWebブラウザ405からのソケットオープンをフックした利用者端末100の転送部2901は、インターネットを介してソケットオープンを中継装置200の抽出部(API監視型)2207bに送る(S3001)。中継装置200の抽出部(API監視型)2207bは、ソケットオープンを中継装置200における通信機能に係るAPI2131cに渡す(S3003)。データ送信の場合も、利用者端末100の転送部2901と中継装置200の抽出部(API監視型)2207bとを介して送られる(S3005,S3007)。このとき、インターネットに代えて、近距離無線通信や無線LANなどの他の通信媒体が用いられるようにしてもよい。
そして、中継装置200における通信機能に係るAPI2131cからWebアプリケーションサーバ301へHTTPリクエストが送出される(S3009)。Webアプリケーションサーバ301から返されたHTTPレスポンスは、中継装置200における通信機能に係るAPI2131cから中継装置200の抽出部(API監視型)2207bに渡される(S3011、S3013)。
HTTPレスポンスに相当するデータを受信すると、中継装置200の抽出部(API監視型)2207bは、ネットワークアドレスを抽出する処理を行う(S3015)。具体的には、中継装置200の抽出部(API監視型)2207bは、接続先ネットワークのURLを特定する。このとき、接続先ネットワークのURLは、Webアプリケーションサーバ301のURLと一致する。抽出した接続先ネットワークのURLは、前述の通り記憶部2111に記憶される。この例では、Webアプリケーションサーバ301へのアクセスの例を示したが、他の装置にアクセスする場合にも、中継装置200の抽出部(API監視型)2207bは、ネットワークアドレスを抽出するようにしてもよい。
中継装置200の抽出部(API監視型)2207bは、中継装置200の検証部2209に、Webアプリケーションサーバ301のURLとHTTPレスポンスとを渡す(S3017)。URLとHTTPレスポンスとを受けると、中継装置200の検証部2209は検証処理を行う(S3019)。具体的には、中継装置200の検証部2209は、HTTPレスポンスに付されている署名データを検証する。署名データの検証に成功した場合には、Webアプリケーションは真正であると判断される。署名データの検証に失敗した場合には、Webアプリケーションは不正であると判断される。
また、中継装置200の検証部2209は、SSL通信の開始時にWebアプリケーションサーバ301を認証するようにしてもよい。Webアプリケーションサーバ301の認証に成功した場合には、Webアプリケーションサーバ301は真正であり、Webアプリケーションサーバ301の認証に失敗した場合には、Webアプリケーションサーバ301は不正であると判断される。
中継装置200の検証部2209は、中継装置200の抽出部(API監視型)2207bへ検証結果を返す(S3021)。検証結果が失敗である場合には、中継装置200の抽出部(API監視型)2207bは処理を中断する。
検証結果が成功である場合には、中継装置200の抽出部(API監視型)2207bは、中継装置200のWebアプリケーション登録部2211にWebアプリケーションサーバ301のURLを渡す(S3023)。Webアプリケーションサーバ301のURLを受けると、中継装置200のWebアプリケーション登録部2211は、Webアプリケーション登録処理を行う(S3025)。具体的には、中継装置200のWebアプリケーション登録部2211は、Webアプリケーションサーバ301のURLを記憶部2111に記憶されているWebアプリケーションリストに加える。
そして、中継装置200の抽出部(API監視型)2207bは、インターネットを介して利用者端末100の転送部2901へHTTPレスポンスに相当するデータを送信する(S3027)。このとき、インターネットに代えて、近距離無線通信や無線LANなどの他の通信媒体が用いられるようにしてもよい。
図31に、続きのシーケンスの例を示す。利用者端末100のWebブラウザ405からのAPI呼び出しをフックした利用者端末100の検出部(API監視型)2301bは、インターネットを介して中継装置200の中継部2219にAPI利用のリクエストを送る(S3101)。このとき、インターネットに代えて、近距離無線通信や無線LANなどの他の通信媒体が用いられるようにしてもよい。
中継装置200の中継部2219は、中継装置200の判定部2217に当該APIについての利用可否の判定を求める。そのため、中継装置200の中継部2219は、中継装置200の判定部2217に判定リクエスト(API種別を含む。)を渡す(S3103)。
判定リクエストを受けると、中継装置200の判定部2217は、中継装置200のコンテキスト生成部2215にコンテキストを生成するリクエストを渡す(S3105)。
コンテキストを生成するリクエストを受けると、中継装置200のコンテキスト生成部2215は、コンテキスト生成処理を行う(S3107)。中継装置200のコンテキスト生成部2215は、ネットワークアドレスの情報を用いる場合に、記憶部2111からネットワークアドレスを読み出す。中継装置200のコンテキスト生成部2215は、動作しているWebアプリケーションの情報を用いる場合に、記憶部2111からWebアプリケーションリストを読み出す。中継装置200のコンテキスト生成部2215は、APIから取得する情報(例えば、位置情報や時間情報)を用いる場合に、中継装置200のAPI2131を呼び出し(S3109)、API戻り値を得る(S3113)。そして、中継装置200のコンテキスト生成部2215は、収集した情報と生成ルールとに基づいてコンテキストを生成する。
生成されたコンテキストは、中継装置200のコンテキスト生成部2215から中継装置200の判定部2217に返される(S3115)。
コンテキストを受けると、中継装置200の判定部2217は、利用可否判定処理を行う(S3117)。具体的には、中継装置200の判定部2217は、コンテキストと判定ルールに基づいて、当該APIの利用可否を判定する。そして、中継装置200の判定部2217は、中継装置200の中継部2219に判定結果を返す(S3119)。
図32に、判定結果が成功である場合のシーケンスの例を示す。中継装置200の中継部2219が成功の判定結果(S3201)を受けた場合には、中継装置200の中継部2219は、中継装置200のAPI2131を呼び出す(S3203)。中継装置200の中継部2219は、中継装置200のAPI2131から戻り値を受けると(S3205)、インターネットを介して利用者端末100の検出部(API監視型)2301bにAPI利用結果を送る(S3207)。API利用結果には、API戻り値が含まれる。このとき、インターネットに代えて、近距離無線通信や無線LANなどの他の通信媒体が用いられるようにしてもよい。利用者端末100側は、API戻り値を用いて処理を続行する。
図33に、判定結果が失敗である場合のシーケンスの例を示す。中継装置200の中継部2219が失敗の判定結果(S3301)を受けた場合には、中継装置200の中継部2219は、インターネットを介して利用者端末100の検出部(API監視型)2301bにAPI利用不可の通知を送る(S3303)。このとき、インターネットに代えて、近距離無線通信や無線LANなどの他の通信媒体が用いられるようにしてもよい。以上でシーケンスについての説明を終える。
本実施の形態によれば、プログラムを実行する装置とは別の装置の状況に応じて、プログラムによる特定機能の利用を制限できる。
以上本技術の一実施の形態を説明したが、本技術はこれに限定されるものではない。例えば、上述の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
また、上で説明した各記憶領域の構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
利用者端末100と中継装置200とは、例えば携帯型情報処理装置である。図34に、携帯型情報処理装置のハードウエア構成例を示す。携帯型情報処理装置は、RAM(Random Access Memory)3403、スピーカ3405、LCD(Liquid Crystal Display:液晶ディスプレイ)3407、タッチパネル3409、マイク3411、NAND(Not AND)メモリ3413、通信CPU(Central Processing Unit)3415、アプリCPU3417、近距離通信デバイス3419、GPSセンサー3421、無線LAN(Local Area Network)デバイス3423、DSP(Digital Signal Processor)3425、ISP(Image Signal Processor)3427、カメラ3429、バス3431、サブプロセッサ3433、地磁気センサー3435、ジャイロセンサー3437及び加速度センサー3439を有している。そのうち、RAM3403、スピーカ3405、LCD3407、タッチパネル3409、マイク3411、NANDメモリ3413、通信CPU3415、アプリCPU3417、近距離通信デバイス3419、GPSセンサー3421、無線LANデバイス3423、DSP3425、ISP3427及びカメラ3429は、バス3431を介して接続されている。LCD3407は、表示装置の例である。
RAM3403は、例えばプログラムやデータを記憶する。スピーカ3405は、音声を出力する。LCD3407は、画像や画面を表示する。タッチパネル3409は、接触状態と接触位置などを検出する。マイク3411は、音声を入力する。NANDメモリ3413は、不揮発性記憶素子のフラッシュメモリである。このNANDメモリ3413は、例えばプログラムやデータを記憶する。通信CPU3415は、通信処理に係る演算処理を行う。アプリCPU3417は、アプリケーションソフトを実行する演算装置である。近距離通信デバイス3419は、近距離通信を制御するデバイスである。GPSセンサー3421は、位置を測定する装置である。無線LANデバイス3423は、無線LANの通信を制御するデバイスである。DSP3425は、デジタル信号処理を行うプロセッサである。ISP3427は、画像処理を行うプロセッサである。カメラ3429は、撮影する装置である。また、アプリCPU3417は、サブプロセッサ3433と接続している。サブプロセッサ3433は、地磁気センサー3435、ジャイロセンサー3437、及び加速度センサー3439に接続している。サブプロセッサ3433は、地磁気センサー3435、ジャイロセンサー3437、及び加速度センサー3439を制御する。
この例では、アプリCPU3417は、サブプロセッサ3433を介して地磁気センサー3435、ジャイロセンサー3437、及び加速度センサー3439の計測結果を取得するが、アプリCPU3417は、直接に地磁気センサー3435、ジャイロセンサー3437、及び加速度センサー3439の計測結果を取得するようにしてもよい。
以上述べた本発明の実施の形態をまとめると、以下のようになる。
本実施の形態に係る情報処理装置は、プログラムの実行中に、特定機能に係る呼び出しの発生を検出すると、自装置の状況に係るコンテキストを生成する生成部と、コンテキストに基づいて、呼び出しの許否を判定する判定部とを有する。
このようにすれば、プログラムによる特定機能の利用を、自動的に制限できる。
また、上記判定部は、更に、プログラム又はプログラムを提供するサービスに対応するルールに従って、呼び出しの許否を判定するようにしてもよい。
このようにすれば、プログラム又はプログラムを提供するサービスに応じて、プログラムによる特定機能の利用を制限できる。
また、上記自装置の状況は、情報処理装置におけるネットワークとの接続状況であってもよい。
このようにすれば、ネットワークとの接続状況に応じて、プログラムによる特定機能の利用を制限できる。
また、上記自装置の状況は、情報処理装置における他のプログラムの動作状況であってもよい。
このようにすれば、他のプログラムの動作状況に応じて、プログラムによる特定機能の利用を制限できる。
本実施の形態に係るシステムは、プログラムの実行中に、特定機能に係る呼び出しの発生を検出する検出部を有する第1の情報処理装置と、呼び出しの発生を検出すると、自装置の状況に係るコンテキストを生成する生成部と、コンテキストに基づいて、呼び出しの許否を判定する判定部とを有する第2の情報処理装置とを含む。
このようにすれば、プログラムを実行する装置とは別の装置の状況に応じて、プログラムによる特定機能の利用を制限できる。
なお、上で述べた処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納されるようにしてもよい。尚、中間的な処理結果は、一般的にメインメモリ等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
プログラムの実行中に、特定機能に係る呼び出しの発生を検出すると、自装置の状況に係るコンテキストを生成する生成部と、
前記コンテキストに基づいて、前記呼び出しの許否を判定する判定部と
を有する情報処理装置。
(付記2)
前記判定部は、更に、前記プログラム又は前記プログラムを提供するサービスに対応するルールに従って、前記呼び出しの許否を判定する
付記1記載の情報処理装置。
(付記3)
前記自装置の状況は、前記情報処理装置におけるネットワークとの接続状況である
付記1又は2記載の情報処理装置。
(付記4)
前記自装置の状況は、前記情報処理装置における他のプログラムの動作状況である
付記1乃至3のいずれか1つ記載の情報処理装置。
(付記5)
プログラムの実行中に、特定機能に係る呼び出しの発生を検出する検出部
を有する第1の情報処理装置と、
前記呼び出しの発生を検出すると、自装置の状況に係るコンテキストを生成する生成部と、
前記コンテキストに基づいて、前記呼び出しの許否を判定する判定部と
を有する第2の情報処理装置と
を含むシステム。
(付記6)
プログラムの実行中に、特定機能に係る呼び出しの発生を検出すると、自装置の状況に係るコンテキストを生成する処理と、
前記コンテキストに基づいて、前記呼び出しの許否を判定する処理と
を含む情報処理方法。
(付記7)
プログラムの実行中に、特定機能に係る呼び出しの発生を検出すると、自装置の状況に係るコンテキストを生成する処理と、
前記コンテキストに基づいて、前記呼び出しの許否を判定する処理と
をコンピュータに実行させるためのプログラム。