(57)【要約】  【課題】情報処理装置の使用環境または使用状況に基づいて、アプリケーションプログラムによるソースアクセスを拒否し、または許可するための技術を提供【解決手段】情報処理装置は、情報処理装置に接続されるデバイスの接続状態または使用状態の変化を検知する検知部と、接続状態の変化の検知に応答して、検出した接続状態に基づき、情報処理装置に適用するリソースアクセス条件を選択する選択部と、選択したリソースアクセス条件を格納する条件格納部とを備える。更にアプリケーションプログラムによりオペレーティングシステムに対して発行されたリソースアクセスのための複数の関数呼び出しを捕捉する捕捉部と、捕捉した関数呼び出しの許可を判断する判断部と、関数呼び出しを拒否する制御部とを備え、関数呼び出しを捕捉すると、条件格納部から読み出したリソースアクセス条件に基づき許可を判断し、許可しないと判断したことに応答して関数呼び出しを拒否する。  【選択図】  図２
2008165325.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置において、前記情報処理装置上で動作するアプリケーションプログラムによるリソースアクセスを制御する方法であって、
前記情報処理装置に接続されるデバイスの接続状態または使用状態の変化を検知するステップと、
前記接続状態または前記使用状態の変化の検知に応答して、前記デバイスの前記接続状態または前記使用状態ごとに適用すべきリソースアクセス条件を対応付けるテーブルを参照して、前記情報処理装置に適用するリソースアクセス条件を選択するステップと、
選択した前記リソースアクセス条件を条件格納部に格納するステップと、
前記アプリケーションプログラムによりオペレーティングシステムに対して発行されるリソースアクセスのための複数の関数呼び出しを捕捉するステップと、
前記捕捉した関数呼び出しを、前記条件格納部から読み出した前記リソースアクセス条件に基づき、許可するか否か判断するステップと、
前記関数呼び出しを許可しないと判断したことに応答して、前記関数呼び出しを拒否するステップと
を含むリソースアクセスを制御する方法。
【請求項２】
前記デバイスは、ネットワークデバイス、外部ディスプレイ、及び外部メディアの少なくとも１つを含む、請求項１に記載の方法。
【請求項３】
前記検知するステップは、ネットワークデバイスの使用状態の変化を検知するステップを含み、
前記選択するステップは、無線のネットワークデバイスが使用可能となった場合に、有線のネットワークデバイスが使用可能となった場合に比べてより厳しいリソースアクセス条件を選択するステップを含む、請求項１に記載の方法。
【請求項４】
前記検知するステップは、ネットワークデバイスが使用可能となったことを検知した場合に、前記情報処理装置が接続されたネットワークの安全性を示しうる種類を取得するステップを更に含み、
前記選択するステップは、前記ネットワークデバイスが使用可能となり、かつ前記ネットワークの種類がセキュアなネットワークを示さない場合に、前記ネットワークデバイスが使用可能となり、かつ前記ネットワークの種類がセキュアなネットワークを示す場合に比べてより厳しいリソースアクセス条件を選択するステップを含む、請求項１に記載の方法。
【請求項５】
前記検知するステップは、外部ディスプレイの接続状態の変化を検知するステップを含み、
前記選択するステップは、前記外部ディスプレイが接続された場合に、所定のデータに対し閲覧のための関数呼び出しを拒否するリソースアクセス条件を選択するステップを含む、請求項１に記載の方法。    
【請求項６】
前記検知するステップは、外部メディアの接続状態または使用状態の変化を検知するステップを含み、
前記選択するステップは、前記外部メディアが接続されまたは使用可能となった場合に、前記外部メディアから起動されるプロセスとそれ以外のプロセスとに対し異なる条件でリソースをアクセスさせるリソースアクセス条件を選択するステップを含む、請求項１に記載の方法。  
【請求項７】
前記検知するステップは、外部メディアが接続されたことまたは使用可能となったことを検知した場合に、前記外部メディアのハードウェア識別情報を取得するステップを更に含み、
前記選択するステップは、前記外部メディアが接続されまたは使用可能となった場合に、前記外部メディアのハードウェア識別情報に基づいて、前記情報処理装置に適用するリソースアクセス条件を選択するステップを含む、請求項１に記載の方法。
【請求項８】
前記デバイスの接続状態または使用状態の変化の検知に応答して、検出した前記デバイスの接続状態または使用状態を状態格納部に格納するステップを更に含み、
前記テーブルは、複数のデバイスの接続状態または使用状態の組み合わせごとに適用すべきリソースアクセス条件を対応付け、
前記選択するステップは、前記状態格納部から現在の各デバイスの接続状態又は使用状態を読み出し、前記テーブルを参照して、前記情報処理装置に適用するリソースアクセス条件を選択するステップを含む、請求項１に記載の方法。
【請求項９】
アプリケーションプログラムによるリソースアクセスを制御する情報処理装置であって、
前記情報処理装置に接続されるデバイスの接続状態または使用状態の変化を検知する検知部と、
前記接続状態または前記使用状態の変化の検知に応答して、前記デバイスの前記接続状態または前記使用状態ごとに適用すべきリソースアクセス条件を対応付けるテーブルを参照して、前記情報処理装置に適用するリソースアクセス条件を選択する選択部と、
選択した前記リソースアクセス条件を格納する条件格納部と、
前記アプリケーションプログラムによりオペレーティングシステムに対して発行されたリソースアクセスのための複数の関数呼び出しを捕捉する捕捉部と、
前記捕捉した関数呼び出しを、前記条件格納部から読み出した前記リソースアクセス条件に基づき、許可するか否か判断する判断部と、
前記関数呼び出しを許可しないと判断したことに応答して、前記関数呼び出しを拒否する制御部と、
を含む情報処理装置。
【請求項１０】
情報処理装置上で動作するアプリケーションプログラムによるリソースアクセスを制御するためのプログラムであって、前記プログラムは、前記情報処理装置に、
前記情報処理装置に接続されるデバイスの接続状態または使用状態の変化を検知するステップと、
前記接続状態または前記使用状態の変化の検知に応答して、前記デバイスの前記接続状態または前記使用状態ごとに適用すべきリソースアクセス条件を対応付けるテーブルを参照して、前記情報処理装置に適用するリソースアクセス条件を選択するステップと、
選択した前記リソースアクセス条件を条件格納部に格納するステップと、
前記アプリケーションプログラムによりオペレーティングシステムに対して発行されるリソースアクセスのための複数の関数呼び出しを捕捉するステップと、
前記捕捉した関数呼び出しを、前記条件格納部から読み出した前記リソースアクセス条件に基づき、許可するか否か判断するステップと、
前記関数呼び出しを許可しないと判断したことに応答して、前記関数呼び出しを拒否するステップとを実行させる、  
リソースアクセスを制御するためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はアプリケーションプログラムによりオペレーティングシステムを介してなされるリソースアクセスの制御に関し、特にアプリケーションプログラムが動作している情報処理装置の使用環境や使用状況に応じてリソースアクセスを制御する技術に関する。
【背景技術】
【０００２】
従来、アクセス権限のないユーザに対して情報の持ち出しを全面的に拒否するために、ユーザのアクセス権限に応じて、印刷、ファイルの移動やコピー、フレキシブルディスクへの別名保存、画面のキャプチャー等の機能を情報処理装置において制限する技術が提案されている（例えば、特許文献１を参照。）。
【０００３】
特許文献１の技術では、ファイル、ネットワーク、記憶装置、表示画面、外部付属装置等のオペレーティングシステムが管理するコンピュータリソースに対する操作要求は、最初にソース管理プログラムによって捕捉される。操作要求を補足したソース管理プログラムは、操作要求によって指定されるコンピュータリソースに対するアクセス権限があるか否かを判定し、判定の結果、アクセス権限があれば当該操作要求通りにオペレーティングシステムに渡し、一方、アクセス権限がなければ当該操作要求を拒否する。
【特許文献１】特開２００３−４４２９７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記の技術においては、ユーザおよびコンピュータリソースの組に対応付けて、そのリソースに対するアクセスの可否が定められている。アクセスの可否は、管理者等により静的に定められる。このため、上記技術では、情報処理装置の使用環境または使用状況に基づいて、アクセスの可否を変更することはできなかった。例えば、情報処理装置が社内などの安全な場所で使用されているなど、情報処理装置の使用環境に基づいてアクセスを許可または拒否することができなかった。また、情報処理装置にＵＳＢメモリが接続されているなど、情報処理装置の使用状況に基づいてアクセスを許可または拒否することはできなかった。
【０００５】
そこで本発明は、上記の課題を解決することのできるアプリケーションプログラムによるオペレーティングシステムを介するデータアクセスを制御するための装置、方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記の目的を達成する本発明は、次のような、情報処理装置において実行される、情報処理装置上で動作するアプリケーションプログラムによるリソースアクセスを制御する方法によって実現される。この方法ではまず、情報処理装置に接続されるデバイスの接続状態または使用状態の変化を検知する。接続状態または使用状態の変化を検知すると、デバイスの接続状態または使用状態ごとに適用すべきリソースアクセス条件を対応付けるテーブルを参照して、情報処理装置に適用するリソースアクセス条件を選択する。選択したリソースアクセス条件は条件格納部に格納しておく。そして、アプリケーションプログラムによりオペレーティングシステムに対して発行されたリソースアクセスのための複数の関数呼び出しを捕捉すると、条件格納部からリソースアクセス条件を読み出し、当該リソースアクセス条件に基づいて捕捉した関数呼び出しを許可するか否か判断する。捕捉した関数呼び出しを許可しないと判断すると、関数呼び出しを拒否する。
【０００７】
ここで、リソースとは、ファイル、メインメモリ、外部記憶装置、プロセス等のオペレーティングシステムが管理するコンピュータリソースをいう。また、リソースアクセスのための複数の関数呼び出しとは、リソースの閲覧、作成、削除、複製、移動、共有メモリへの読み込み、印刷、及びプロセスの起動のための関数呼び出しを含むデータアクセスのための全種類の関数呼び出しである。
【０００８】
好ましくは、上記デバイスは、ネットワークデバイス、外部ディスプレイ、及び外部メディアの少なくとも１つを含む。ここで、外部メディアとは、情報処理装置から外付けドライブとして認識されるすべてのメディアをいい、例えばＵＳＢメモリ、ＣＤ−ＲＯＭ／ＤＶＤ−ＲＯＭ、コンパクトフラッシュ及びＳＤカードなどの記憶媒体や、外付けのハードディスクドライブ、デジタルカメラなどの周辺機器を含む。
【０００９】
好ましくは、上記検知するステップは、ネットワークデバイスの使用状態の変化を検知するステップを含む。そして、上記選択するステップは、無線のネットワークデバイスが使用可能となった場合に、有線のネットワークデバイスが使用可能となった場合に比べてより厳しいリソースアクセス条件を選択するステップを含む。  
【００１０】
また好ましくは、上記検知するステップは、ネットワークデバイスの使用状態の変化を検知した場合に、情報処理装置が接続されたネットワークの安全性を示しうる種類を取得するステップを更に含む。そして、上記選択するステップは、ネットワークデバイスが使用可能となり、かつ接続されたネットワークの種類がセキュアなネットワークを示さない場合に、ネットワークデバイスが使用可能となり、かつネットワークの種類がセキュアなネットワークを示す場合に比べてより厳しいリソースアクセス条件を選択するステップを含む。
【００１１】
また好ましくは、上記検知するステップは、外部ディスプレイの接続状態の変化を検知するステップを含む。そして上記選択するステップは、外部ディスプレイが接続された場合に、所定のデータに対し閲覧のための関数呼び出しを拒否するアクセス条件を選択するステップを含む。
【００１２】
また好ましくは、上記検知するステップは、外部メディアの接続状態または使用状態の変化を検知するステップを含む。そして上記選択するステップは、外部メディアが接続されまたは使用可能となった場合に、外部メディアから起動されるプロセスとそれ以外のプロセスとに対し異なる条件でリソースをアクセスさせるリソースアクセス条件を選択するステップを含む。
【００１３】
また好ましくは、上記検知するステップは、外部メディアが接続されたことまたは使用可能となったことを検知した場合に、外部メディアのハードウェア識別情報を取得するステップを更に含む。そして上記選択するステップは、外部メディアが接続されまたは使用可能となった場合に、外部メディアのハードウェア識別情報に基づいて、情報処理装置に適用するリソースアクセス条件を選択するステップを含む。なお、ハードウェア識別情報としては、製造元、型番、シリアル番号などを利用する。
【００１４】
また好ましくは、デバイスの接続状態または使用状態の変化の検知に応答して、検出したデバイスの接続状態または使用状態を状態格納部に格納するステップを更に含む。また、上記テーブルは、複数のデバイスの接続状態または使用状態の組み合わせごとに適用すべきリソースアクセス条件を対応付け、上記選択するステップは、状態格納部から現在の各デバイスの接続状態又は使用状態を読み出し、複数のデバイスの接続状態または使用状態の組み合わせごとに適用すべきリソースアクセス条件を対応付けるテーブルを参照して、情報処理装置に適用するリソースアクセス条件を選択するステップを含む。
【００１５】
以上、情報処理装置において、オペレーティングシステムを介するリソースアクセスを制御する方法として本発明を説明したが、本発明は、そのような方法を情報処理装置に実行させるためのプログラムとして把握することもできる。また本発明は、オペレーティングシステムを介するデータアクセスを制御するための情報処理装置として把握することもできる。
【発明の効果】
【００１６】
本発明によれば、情報処理装置の使用環境または使用状況に基づいて、オペレーティングシステムを介するリソースアクセスを拒否し、または許可することが可能となる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明を実施するための最良の形態を図面に基づいて詳細に説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。なお、実施の形態の説明の全体を通じて同じ要素には同じ番号を付している。
【００１８】
図１は、本発明の実施の形態において使用可能である情報処理装置のハードウェア構成の一例を示す。情報処理装置１００は、ホストコントローラ１１０により相互に接続されるＣＰＵ１０５、ＲＡＭ１１５、グラフィックコントローラ１２０、ディスプレイ１２５及び外部ディスプレイ１８０を含むＣＰＵ周辺部と、入出力コントローラ１３０によりホストコントローラ１１０に接続される通信インターフェース１４５、ハードディスクドライブ１３５、及びＣＤ−ＲＯＭドライブ１４０を含む入出力部と、入出力コントローラ１３０に接続されるスーパーＩ／Ｏコントローラ１５０及びスーパーＩ／Ｏコントローラ１５０に接続されるフレキシブルディスクドライブ１５５、フラッシュＲＯＭ１６０、並びにキーボードマウスコントローラ１６５を有するレガシー入出力部とを備える。
【００１９】
ホストコントローラ１１０は、高い転送レートでＲＡＭ１１５をアクセスするＣＰＵ１０５及びグラフィックコントローラ１２０をＲＡＭ１１５と接続する。ＣＰＵ１０５は、フラッシュＲＯＭ１６０に及びＲＡＭ１１５に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィックコントローラ１２０は、ＣＰＵ１０５等がＲＡＭ１１５内に設けたフレームバッファ上に生成する画像データを取得し、ディスプレイ１２５及び／又は外部ディスプレイ１８０上に表示させる。これに代えて、グラフィックコントローラ１２０は、ＣＰＵ１０５等が生成する画像データを格納するフレームバッファを、内部に含んでもよい。
【００２０】
入出力コントローラ１３０は、比較的高速な入出力装置である通信インターフェース１４５、ハードディスクドライブ１３５、及びＣＤ−ＲＯＭドライブ１４０をホストコントローラ１１０と接続する。通信インターフェース１４５は、ネットワークを介して外部装置と通信する。通信インターフェース１４５は、イーサーネット（登録商標）に接続するイーサーネットアダプタや、ケーブルを介さずに無線を用いてネットワークに接続する無線ＬＡＮアダプタである。最近では、通信インターフェース１４５としてイーサーネットアダプタと無線ＬＡＮアダプタの両方を備える情報処理装置１００も存在する。ノート型コンピュータとしての情報処理装置１００の場合、入出力コントローラ１３０は更にカードバス・コントローラ１９０をホストコントローラ１１０と接続する。カードバス・コントローラ１９０は、ＰＣカード・スロットに収容されたＰＣカードを制御し、ＰＣカードは、フラッシュメモリカードやハードディスク、ＳＣＳＩカード、ＬＡＮカード、無線ＬＡＮカードとして利用される。
【００２１】
ハードディスクドライブ１３５は、情報処理装置１００が使用するプログラム及びデータを格納する。ＣＤ−ＲＯＭドライブ１４０は、ＣＤ−ＲＯＭからプログラム又はデータを読み取り、ＲＡＭ１１５又はハードディスクドライブ１３５に提供する。また、入出力コントローラ１３０にはＵＳＢポートが設けられており、このＵＳＢポートは例えば情報処理装置１００の壁面に設けられたＵＳＢコネクタ１７０と接続されている。ＵＳＢコネクタ１７０には、ＵＳＢメモリ、ＵＳＢ外付けＨＤＤ等のリムーバブルデバイスを接続できる。
【００２２】
更に、入出力コントローラ１３０には、スーパーＩ／Ｏコントローラ１５０やキーボードマウスコントローラ１６５等の比較的低速な入出力装置と、フラッシュＲＯＭ１６０とが接続される。フラッシュＲＯＭ１６０は、情報処理装置１００の起動時にＣＰＵ１０５が実行するブートプログラムや、情報処理装置１００のハードウェアに依存するプログラム等を格納する。フレキシブルディスクドライブ１５５は、フレキシブルディスクからプログラムまたはデータを読み取り、ＲＡＭ１１５を介してスーパーＩ／Ｏコントローラ１５０に提供する。スーパーＩ／Ｏコントローラ１５０は、例えばパラレルポート、シリアルポート、キーボードポート、マウスポート等を介してプリンタ、フレキシブルディスク、キーボードやマウス等の入出力装置を接続する。
【００２３】
以下に説明する、本発明に係るオペレーティングシステムを介したリソースアクセスを制御するためのプログラム２２０は、フレキシブルディスク、ＣＤ−ＲＯＭ、又はＩＣカード等の記憶媒体に格納されて利用者によって提供される。プログラムは、入出力コントローラ１３０及び/又はスーパーＩ／Ｏコントローラ１５０を介して、記憶媒体から読み出され情報処理装置１００にインストールされて実行される。
【００２４】
上記プログラム２２０は、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク、ＣＤ−ＲＯＭの他に、ＤＶＤやＰＤ等の光学記録媒体、ＭＤ等の光磁気記録媒体、テープ媒体、ＩＣカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスク又はＲＡＭ等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムを情報処理装置１００に提供してもよい。
【００２５】
図２は、本発明に係る、オペレーティングシステムを介したリソースアクセスを制御するためのプログラム２２０を実行する情報処理装置１００の機能ブロック図である。図２に示すハードウェア２００は、図１に示す情報処理装置１００のハードウェアである。情報処理装置１００はハードウェア２００上でオペレーティングシステム（以下、ＯＳ）２０５を動作させる。ＯＳ２０５は、例えばＭｉｃｒｏｓｏｆｔ社のＷｉｎｄｏｗｓ(商標)ＯＳ、ＩＢＭ社のＯＳ／２（商標）ＯＳ、Ｌｉｎｕｘ（登録商標）ＯＳ等、各種のアプリケーション２１０を動作させる汎用のＯＳである。
【００２６】
汎用ＯＳ上で動作するアプリケーションプログラム２１０は、一般にリソースをアクセスする際にＯＳ２０５が提供するＡｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ（以下、ＡＰＩ）を利用する。例えば、アプリケーションプログラム２１０がファイルを複製する場合、アプリケーションプログラム２１０はＯＳ２０５に対して複製を実現するためのＡＰＩ関数呼び出しを発行する。同様に、アプリケーションプログラム２１０がある媒体から他の媒体へファイルを移動する場合、アプリケーションプログラム２１０はＯＳ２０５に対して移動を実現するためのＡＰＩ関数呼び出しを発行する。ＯＳ２０５がＷｉｎｏｄｏｗｓ（商標）ＯＳの場合、ＡＰＩ関数はダイナミック  リンク  ライブラリ（以下、ＤＬＬ）２１５として提供される。なお、本明細書において記載するアプリケーションプログラム２１０とは、ＯＳ２０５上で動作する全てのプログラムを意味するものとする。
【００２７】
従って、各種アプリケーションによるリソースアクセスの制御は、ＯＳ２０５により提供される複数のＡＰＩ関数のうち、処理内容を監視する対象として予め定められた所定のＡＰＩ関数の呼び出しを監視し、検出したＡＰＩ関数呼び出しを適切なリソースアクセス条件に基づいて許可するかどうか判断することにより達成される。本発明に係る情報処理装置１００は、検出したＡＰＩ関数呼び出しの許可／不許可を判断するそのリソースアクセス条件を、情報処理装置１００の使用環境または使用状況を考慮して動的に決定することを目的とする。情報処理装置１００の使用環境または使用状況は、情報処理装置１００に接続されるデバイスの接続状態または使用状態により推測される。
【００２８】
オペレーティングシステムを介したリソースアクセスを制御するためのプログラム２２０は、登録モジュール、検知モジュール、及び選択モジュールを含む常駐プログラム２２２と、判断モジュール、制御モジュール、及び捕捉モジュールを含むプログラム２２４とを含む。各モジュールは情報処理装置１００を各々、登録部２２５、検知部２３０、選択部２４０、判断部２６０、制御部２６５、及び捕捉部２７０として機能させる。
【００２９】
登録部２２５は、情報処理装置１００におけるデバイスのハードウェア構成の変化を知らせる通知をＯＳ２０５から受けるための登録を行う。一般にＯＳ２０５は、任意のアプリケーションに対しハードウェア構成の変化を知らせる通知を行うサービスを提供する。本実施例では、ネットワークデバイス、外部ディスプレイ、及び外部メディアについてデバイス通知の登録を行う。
【００３０】
デバイス通知のための登録は、一例としてＷｉｎｄｏｗｓ（商標）ＯＳでは、RegisterDeviceNotification関数を用いることができる。RegisterDeviceNotification関数では、デバイスイベントを受け取るサービスまたはウィンドウのハンドルと、通知を受け取るデバイス又はデバイスタイプを指定するデータブロックへのポインタを指定する。また、デバイスドライバの汎用的な管理方法であるWMI（WindowsManagement Instrumentation)のExecNotificationQuery関数を用いて、より詳細なデバイスのイベント通知を登録することもできる。
【００３１】
検知部２３０は、情報処理装置１００に接続されるデバイスの接続状態または使用状態の変化を検知する。RegisterDeviceNotification関数を用いてデバイス通知の登録を行う場合、検知部２３０は、Ｗｉｎｏｄｏｗｓ（商標）ＯＳからWM_Devicechangメッセージを受信することによりデバイスの接続状態または使用状態の変化の検知を行う。WM_DevicechangＥメッセージには、どのようなイベントが起きたかを示すパラメータと、イベントが起こったデバイスに関する情報を含むイベントに関する詳細な情報へのポインタとが含まれる。
【００３２】
例えば、デバイスまたはメディアが挿入され使用可能となった場合、パラメータとしてDBT_DEVICEARRIVALが設定されたWM_DEVICECHANGEメッセージが通知される。また、ネットワークが使用可能となった場合、DBT_DEVNODES_CHANGEDが設定されたWM_DEVICECHANGEメッセージが通知される。必要に応じて別途ＷＭＩイベントの通知を受け取ってケーブル接続状況の変化を判断する。
【００３３】
検知部２２５はまた、ネットワークデバイスの使用状態の変化を検知した場合、情報処理装置１００が接続されたネットワークの安全性を示しうる種類を取得する。安全性を示しうるネットワークの種類とは、例えばファイアウォールが設置された社内ネットワークや第三者の侵入に対し何ら対策が講じられていない社外ネットワーク等、情報処理装置１００が安全な環境において使用されているかどうかを判断するのに利用できるすべての種類をいう。ネットワークの種類は、一例としてｉｐｃｏｎｆｉｇコマンドを使用して、情報処理装置１００に割り当てられたＩＰアドレスのネットワーク部の値を調べることにより取得できる。また、ネットワークに常に存在する特定の機器のＩＰアドレスが分かっている場合、特定の機器にｐｉｎｇコマンドを投げることにより接続されたネットワークの種類を取得できる。例えば、特定の機器が社内サーバーであって、ｐｉｎｇコマンドに対する応答が得られた場合、接続されたネットワークは社内ネットワークということになる。
【００３４】
検知部２２５はまた、外部メディアが接続されたことまたは使用可能となったことを検知した場合、製造元、型番、シリアル番号など、外部メディアのハードウェア識別情報を取得する。このようなハードウェア識別情報は、一例として、デバイスドライバに対してＩ／Ｏ制御コード(DeviceIoControl)を送信してデバイス記述子（DeviceDescriptor）を入手することにより取得できる。
【００３５】
検知部２２５は更に、各デバイスの現在の接続状態または使用状態に関する情報を格納する状態格納部２３５を有し、検知したデバイスの接続状態または使用状態を用いて、状態格納部２３５に格納された情報を更新する。図３は、状態格納部２３５に格納される情報の一例を示す。図３の（ａ）に示すように本実施例では、１バイトを用いて、有線ネットワークデバイス、無線ネットワークデバイス、外部ディスプレイ、及び外部メディア＃１〜＃３の６種類のデバイスの接続状態または使用状態を格納する。ビットの割り当ては、ネットワークデバイスに対して２ビット、その他のデバイスについては１ビットとなっている。
【００３６】
図３の（ｂ）は、ネットワークデバイスに割り当てられる２ビットの意味を示す。「００」はネットワークデバイスが未使用であることを示す。「０１」、「１０」はどちらもネットワークデバイスが使用されていることを示すが、「０１」は社内ネットワークに、「１０」は社外ネットワークに接続されていることを示す。図３の（ｃ）は、その他のデバイスに割り当てられる１ビットの意味を示す。「０」はデバイスが情報処理装置１００に接続されていないことを示し、「１」はデバイスが情報処理装置１００に接続されていることを示す。
【００３７】
選択部２４０は、検知部２２５による接続状態または使用状態の変化の検知に応答して、検出した接続状態または使用状態に基づき、情報処理装置１００に適用するリソースアクセス条件を選択する。より具体的には、選択部２４０は、複数のデバイスの接続状態または使用状態の組み合わせごとに適用すべきリソースアクセス条件を対応付ける選択テーブル２４５を有し、当該選択テーブル２４５を参照して、状態格納部２３５から読み出した各デバイスの現在の接続状態または使用状態の組み合わせに対応付けられるリソースアクセス条件を情報処理装置１００に適用するリソースアクセス条件として選択する。そして選択部２４０は条件格納部２５０を有し、選択したリソースアクセス条件を条件格納部２５０に格納する。
【００３８】
図４は、有線ネットワークデバイス、無線ネットワークデバイス、外部ディスプレイ、及び外部メディア＃１、＃２の５種類のデバイスを対象とする選択テーブル２４５の一例を示す。図２を参照して説明したように、ネットワークデバイスは、社内ネットワーク接続中、社外ネットワーク接続中、及び未使用の３つの状態を取り得る。その他のデバイスは、接続及び未接続の２つの状態を取り得る。従ってこれら複数のデバイスの接続状態または使用状態の組み合わせは、３（有線ネットワークデバイスの取り得る状態数）×３（無線ネットワークデバイスの取り得る状態数）×２（外部ディスプレイの取り得る状態数）×２（外部メディア＃１の取り得る状態数）×２（外部メディア＃２の取り得る状態数）により７２通り存在し、各組み合わせに対し適用すべきアクセス条件が対応付けられている。なお７２通りのアクセス条件の各内容は全て異なる必要は無く、一部重複してもよい。
【００３９】
一般に、情報処理装置１００には複数種類の外部メディアを接続可能であり、全ての外部メディアに対して同一のリソースアクセス条件を適用することも可能である。しかし本実施例では、図４に示すように、情報処理装置１００に接続される外部メディアを区別して、特定の外部メディアに対し他の外部メディアと異なるリソースアクセス条件を選択する。これにより、例えば業務用に企業が社員に配付した信頼できる特定型番のメディア（指紋認証機能付きＵＳＢメモリなど）と、信頼できない不特定多数のメディアを区別してアクセス制御することが可能となる。
【００４０】
図５は、図４に示す７２通りのリソースアクセス条件のより詳細な内容の一例を示す。リソースアクセス条件は、情報処理装置１００を管理するシステム管理者やユーザが適宜決定し設定できるものである。リソースアクセス条件１は情報処理装置１００を有線ネットワークデバイスにより社内ネットワークに接続する場合に適用するリソースアクセス条件である。社内ネットワークに有線で接続されることから、情報処理装置１００は社内の自分のワークスペースなど原則同じ部門、課の社員のみが入室可能な安全な場所で使用されていると推測できる。従ってアクセス条件１は、閲覧、作成、削除、複製、移動、共有メモリへの読み込み、印刷、及びプロセスの起動等の、データアクセスのための全種類の関数呼び出しを許可する。
【００４１】
一方リソースアクセス条件６は、情報処理装置１００を無線ネットワークデバイスにより社内ネットワークに接続する場合に適用するリソースアクセス条件である。社内ネットワークに無線で接続されることから、情報処理装置１００は、社内の会議室や食堂など他の部門、他の課の社員、また会社を訪問するお客様や業者等が入ることのできる場所で使用されていると推測できる。そのため社内で使用されているものの情報漏洩などの危険にある程度配慮する必要がある。従ってリソースアクセス条件６は、機密情報等の所定のデータに対し、複製、削除、移動、共有メモリへの読み込み、印刷、及びプロセスの起動のための関数呼び出しを禁止する。このように本実施例では、リソースアクセス条件６はリソースアクセス条件１より厳しく、無線のネットワークデバイスが使用可能となった場合、有線のネットワークデバイスが使用可能となった場合に比べてより厳しいリソースアクセス条件が情報処理装置１００に適用される。
【００４２】
リソースアクセス条件９は、情報処理装置１００を無線ネットワークデバイスにより社外ネットワークに接続する場合に適用するリソースアクセス条件である。社外ネットワークに無線で接続されることから、情報処理装置１００は、空港やホテルのロビーなど不特定多数の者が存在する場所で使用されていると推測できる。従ってリソースアクセス条件９は、機密情報等の所定のデータに対し、閲覧、複製、削除、移動、共有メモリへの読み込み、印刷、及びプロセスの起動等の、データアクセスのための全種類の関数呼び出しを禁止する。このように、本実施例では、リソースアクセス条件９はリソースアクセス条件６より厳しく、情報処理装置１００がセキュアでないネットワークに接続された場合、情報処理装置１００がセキュアなネットワークに接続された場合に比べてより厳しいリソースアクセス条件が情報処理装置１００に適用される。
【００４３】
リソースアクセス条件１２は、情報処理装置１００に外部ディスプレイを接続する場合に適用するリソースアクセス条件である。外部ディスプレイはプレゼンテーション目的で使用されることも多く、参加者は外部ディスプレイを通して情報処理装置１００の画面に表示される情報を見ることができる。そのため情報処理装置１００を操作するユーザの誤操作により、予期せず機密情報が画面表示され内容が漏洩する危険がある。従ってリソースアクセス条件１２は、機密情報等の所定のデータに対し、閲覧のための関数呼び出しを禁止する。閲覧のための関数呼び出しを禁止する代わりに、画面表示のための関数呼び出しを禁止してもよい。
【００４４】
リソースアクセス条件１９は、情報処理装置１００を有線ネットワークデバイスにより社内ネットワークに接続し、かつ外部メディア＃１に接続する場合に適用するリソースアクセス条件である。情報処理装置１００に外部メディア＃１が接続されることから、ユーザは社内ネットワーク上の情報を外部メディア＃１に格納して容易に持ち出すことができる。従ってリソースアクセス条件１９は、外部メディア＃１を保存先とする、複製、作成、移動、及び共有メモリへの読み込みのための関数呼び出しを禁止する。    
【００４５】
また、リソースアクセス条件１９では外部メディア＃１を接続した情報処理装置１００を社内ネットワークに接続することから、外部メディア＃１にウィルスに汚染されたファイルが格納されている場合、ウィルス汚染が社内ネットワークまで拡散する可能性がある。そこで、上記リソースアクセス条件１９に代えて、あるいはこれに加えて、リソースアクセス条件１９は、外部メディア＃１内のデータに対し、複製、移動、及び共有メモリへの読み込みのための関数呼び出しを禁止する。
【００４６】
リソースアクセス条件２１は、情報処理装置１００に外部メディア＃１を接続する場合に適用するリソースアクセス条件である。外部メディア＃１は機密として扱う必要のないファイルやプログラムを格納し、従ってアクセス条件２１は、閲覧、作成、削除、複製、移動、共有メモリへの読み込み、印刷、及びプロセスの起動等の、データアクセスのための全種類の関数呼び出しを許可する。リソースアクセス条件１、１９、及び２１を比較して分かるように、本実施例では、複数のデバイスの接続状態または使用状態の組み合わせごとに適用すべきリソースアクセス条件を用意する。
【００４７】
リソースアクセス条件３９は、情報処理装置１００に外部メディア＃２を接続する場合に適用するリソースアクセス条件である。外部メディア＃２は、業務用の機密情報を扱うための専用デバイスで、例えば指紋認証機能と社内ＶＰＮアクセスプログラムとを備えた特別なデバイスであり、機密情報データを含んでいる。従ってリソースアクセス条件３９は、所定のハードウェア識別情報により識別される外部メディア＃２内のファイルに対し、閲覧や削除、複製、移動のための関数呼び出しを禁止すると同時に、外部メディア＃２内の特定プログラムのみ例外的にメディア＃２内のファイルの閲覧を許可する。このように本実施例では、特定の外部メディア＃２に対し他の外部メディア＃１と異なるリソースアクセス条件を適用する。
【００４８】
以上のように、情報処理装置１００に接続されるデバイスの接続状態又は使用状態から情報処理装置１００の使用環境又は使用状況を推測し、推測される使用環境又は使用状況に適用すべきデータのリソースアクセス条件を決定する。決定したリソースアクセス条件は、常駐プログラム２２２及びプログラム２２４の何れからもアクセス可能な共有の領域、例えばメインメモリだけでなく、ハードディスク、光磁気ディスク等の記録媒体の共有の領域に格納する。
【００４９】
捕捉部２７０は、アプリケーションプログラム２１０がＯＳ２０５に対して発行するリソースアクセスのための複数の関数呼び出しを捕捉する。より具体的には、捕捉部２７０は、アプリケーションプログラム２１０の動作開始に応じ、アプリケーションプログラム２１０がＯＳ２０５に対して発行するリソースアクセスのための複数の関数呼び出しの呼び出し先アドレスを、制御部２６５を実現する制御モジュールのアドレスに変更することにより、リソースアクセスのための複数の関数呼び出しを捕捉する。ここでリソースアクセスのための複数の関数呼び出しとは、閲覧、複製、作成、削除、移動、共有メモリへの読み込み、印刷、プロセスの起動のための関数呼び出しを含むリソースアクセスのための全種類の関数呼び出しである。本実施例ではこれら関数は、オペレーティングシステム２０５によりＤＬＬ＃１〜＃３  ２１５として提供される。
【００５０】
判断部２６０は、捕捉された関数呼び出しを、条件格納部２５０から読み出したリソースアクセス条件に基づいて、許可するか否か判断する。図５を参照して説明したように、リソースアクセス条件はその呼び出しによるデータ処理を許可する又はデータ処理を許可しない関数呼び出しやデータ及びプロセスの種類を指定する。そこで判断部２６０は、捕捉された関数呼び出しの関数とリソースアクセス条件として指定される関数とを比較することにより、捕捉された関数呼び出しを許可するかどうか判断する。
【００５１】
また、リソースアクセス条件が所定のデータに対してなされる関数呼び出しを禁止するものである場合、判断部２６０は更に捕捉された関数呼び出しの引数により指定されるデータの種類を調べることにより、捕捉された関数呼び出しを許可するかどうか判断する。例えば関数呼び出しが禁止される所定のデータの種類が機密データである場合、「機密」や「秘密」等の特定の文字列が、捕捉された関数呼び出しの引数により指定されるデータの中身、データ名、データが格納されるフォルダ名等に含まれないかどうか調べる。  
【００５２】
あるいは、リソースアクセス条件が所定のデータ保存先を指定してなされる関数呼び出しを禁止するものである場合、判断部２６０は更に、捕捉された関数呼び出しの引数により指定されるデータ保存先を調べることにより、捕捉された関数呼び出しを許可するかどうか判断する。例えば関数呼び出しが禁止される所定のデータ保存先が外部メディアである場合、捕捉された関数の引数で指定された保存先デバイスの属性を取得し、デバイスタイプが「リムーバブル」であるかどうか判断する。
【００５３】
更に、所定のデータ保存先として、例えば製造元を示すベンダーＩＤやプロダクトＩＤなどの所定のハードウェア識別情報により識別される特定の外部メディアが指定される場合、判断部２６０は、保存先デバイスのハードウェア識別情報を取得し、リソースアクセス条件により指定されるハードウェア識別子と一致するかどうか調べる。[f16]更にまた、リソースアクセス条件が、その起動場所が特定の場所である関数の呼び出し元プロセスに対してのみ関数呼び出しを許可するものである場合、判断部２６０は、呼び出し元プロセスのプログラムモジュールが存在するデバイスのタイプやハードウェア識別情報を取得して、リソースアクセス条件に一致するかどうか判断する。
【００５４】
制御部２６５は、アプリケーションプログラム２１０から呼び出されると判断部２６０を呼び出し、捕捉された関数呼び出しを許可するか否かを判断させる。そして制御部２６５は、判断部２６０がデータ処理を許可しないと判断したことに応答して、関数呼び出しを拒否する。より具体的には、制御部２６５は、判断部２６０がデータ処理を許可しないと判断したことに応答して、ＤＬＬ＃１〜ＤＬＬ＃３  ２１５の中の関数呼び出しを実行することなくエラーコードをアプリケーションプログラム２１０に返す。あるいは、制御部２６５は、単に空のデータをアプリケーションプログラム２１０に返してもよい。また制御部２６５は、判断部２６０がデータ処理を許可すると判断したことに応答して、アプリケーションプログラム２１０から指定された引数をそのまま引数として指定してＤＬＬ＃１〜ＤＬＬ＃３  ２１５の中の関数呼び出しを実行する。また、引数を変更してＤＬＬ＃１〜ＤＬＬ＃３  ２１５の中の関数呼び出しを実行したり、関数呼び出しの前後に異なる種類の関数呼び出しを追加してもよい。
【００５５】
以上のように、本発明に係る情報処理装置１００によれば、情報処理装置１００の使用環境または使用状況に応じたリソースのアクセス条件に基づいて、ＯＳを介するリソースアクセスを拒否し、または許可することが可能となる。  
【００５６】
次に、図６、図７のフローチャートを参照して、本発明に係る情報処理装置１００の各部の動作を説明する。図６は、常駐プログラム２２２によって登録部２２５、検知部２３０及び選択部２４０として機能する情報処理装置１００による処理の流れの一例を示す。なお、図６に示す処理に先立ち、少なくとも一度常駐プログラム２２２は情報処理装置１００上で実行され、情報処理装置１００を登録部２２５として機能させる。すなわち、情報処理装置１００は前処理としてＯＳ２０５からデバイスのハードウェア構成の変化を知らせる通知を受けるための登録を行う。そしてステップ６００において常駐プログラム２２２はＯＳ２０５と一緒に起動し、処理は開始する。
【００５７】
常駐プログラム２２２が起動されると、検知部２３０は、ＯＳ２０５から状態変化を知らせる通知を受け取ることにより、情報処理装置１００に接続されるデバイスの接続状態または使用状態の変化を検知する（ステップ６１０）。次に検知部２３０は、検知された接続状態又は使用状態の変化がネットワークデバイスまたは外部メディアについての変化であるか否か判断する（ステップ６２０）。外部メディアについての変化である場合、検知部２３０は当該外部メディアのハードウェア識別情報を取得する（ステップ６３０）。ネットワークデバイスについての変化である場合、検知部２３０は情報処理装置１００が接続されたネットワークの種類を取得する（ステップ６３５）。
【００５８】
ステップ６３０及び６３５の後又はステップ６２０でＮＯの場合処理はステップ６４０へ進み、検知部２３０は、検出したデバイスの接続状態又は使用状態を用いて、状態格納部２３５に格納される現在の各デバイスの接続状態または使用状態に関する情報を更新する。なお、検知部２３０による検知が行われるまで、処理はステップ６１０に留まる。
【００５９】
次に選択部２４０は、検知部２３０による状態の変化の検知に応答して、検出されたデバイスの接続状態または使用状態に基づき、情報処理装置１００に適用するリソースアクセス条件を選択する（ステップ６５０）。具体的には選択部２４０は、複数のデバイスの接続状態または使用状態の組み合わせごとに適用すべきリソースアクセス条件を対応付ける選択テーブル２４５を参照して、状態格納部２３５から読み出した各デバイスの現在の接続状態または使用状態の組み合わせに対応付けられるアクセス条件を選択する。そして選択部２４０は選択したリソースアクセス条件を条件格納部２５０に格納する（ステップ６６０）。
【００６０】
ステップ６６０の後、処理はステップ６１０に戻り上記一連の処理を繰り返す。その結果、条件格納部２５０には常に現在の情報処理装置１００の使用環境又は使用状況を反映した適切なアクセス条件が格納されることとなる。
【００６１】
図７は、プログラム２２４によって捕捉部２７０、判断部２６０及び制御部２６５として機能する情報処理装置１００による処理の流れの一例を示す。プログラム２２４は、データアクセスのための関数呼び出しを発行する可能性のあるアプリケーションプログラム２１０の起動中に動作すればよく、常駐プログラム２２２のように必ずしもＯＳ２０５と一緒に起動する必要はない。本実施例では、プログラム２２４は、データアクセスのための関数呼び出しを発行する可能性のあるアプリケーションプログラム２１０と一緒に起動する。  
【００６２】
プログラム２２４の起動をアプリケーションプログラム２１０の起動と同時とするために、捕捉モジュール、判断モジュール及び制御モジュールを含むプログラム２２４のオブジェクトファイル（例えば、ＤＬＬ）を、オペレーティングシステム標準のＤＬＬとして登録すする。一例として、Ｗｉｎｄｏｗｓ(商標)においては、これらのプログラムをＵＳＥＲ３２拡張ＤＬＬとしてレジストリに登録することにより、ＵＳＥＲ３２. ＤＬＬをリンクする全てのプロセスのスタートアップ時にこれらのプログラムを起動させることができる。
【００６３】
ステップ７００でプログラム２２４が起動することにより処理は開始し、捕捉部２７０は、アプリケーションプログラム２１０の動作開始に応じ、アプリケーションプログラム２１０がＯＳ２０５に対して発行するデータアクセスのための複数の関数呼び出しを、その呼び出し先アドレスを、制御部２６５を実現する制御モジュールのアドレスに変更することにより捕捉する（ステップ７１０）。
【００６４】
より具体的には、捕捉部２７０は、ＤＬＬ＃１〜＃３  ２１５におけるアプリケーションプログラム２１０から呼び出される部分の先頭の命令コードを、他の領域にバックアップしておく。そして、捕捉部２７０は当該命令コードを、制御部２６５を実現する制御モジュールへのジャンプ命令に書き換える。更に、捕捉部２７０は制御部２６５からＤＬＬ＃１〜＃３  ２１５を呼び出す処理に代えて、バックアップした先頭の命令コードを制御２６５から呼び出させる。
【００６５】
制御部２６５は、アプリケーションプログラム２１０から呼び出しを受けると（ステップ７２０）、捕捉された関数呼び出しを許可するか否かを判断させるために判断部２６０を呼び出す。制御部２６５からの呼び出しに応じて判断部２６０は、条件格納部２５０からリソースアクセス条件を読み出す（ステップ７３０）。そして判断部２６０はまず、リソースアクセス条件により許可されないものとして指定される関数が、捕捉された関数呼び出しの関数と一致するかどうか判断する（ステップ７４０）。
【００６６】
捕捉された関数呼び出しの関数が不許可としてリソースアクセス条件により指定されている場合（ステップ７４０：ＹＥＳ）、判断部２６０は次に、リソースアクセス条件が所定のデータに対してなされる関数呼び出しを禁止するものであるかどうか判断する（ステップ７５０）。リソースアクセス条件が所定のデータに対してなされる関数呼び出しを禁止するものである場合、判断部２６０は、捕捉された関数呼び出しの引数により指定されるデータの種類が、リソースアクセス条件により指定される所定のデータであるかどうか判断する（ステップ７６０）。
【００６７】
捕捉された関数呼び出しがリソースアクセス条件により指定される所定のデータに対してなされるものである場合（ステップ７６０：ＹＥＳ）又はステップ７５０でＮＯの場合、判断部２６０は更に、リソースアクセス条件が所定の保存先を指定してなされる関数呼び出しを禁止するものであるかどうか判断する（ステップ７７０）。リソースアクセス条件が所定の保存先を指定してなされる関数呼び出しを禁止するものである場合、判断部２６０は、捕捉された関数呼び出しの引数により指定されるデータ保存先が、リソースアクセス条件により指定される所定の保存先であるかどうか判断する（ステップ７７５）。
【００６８】
捕捉された関数呼び出しがリソースアクセス条件により指定される所定の保存先を指定してなされるものである場合（ステップ７７５：ＹＥＳ）又はステップ７７０でＮＯの場合、判断部２６０は更に、リソースアクセス条件が、その起動場所が特定の場所である関数の呼び出し元プロセスに対してのみ関数呼び出しを許可するものである場合ものであるかどうか判断する（ステップ７８０）。アクセス条件がその起動場所が特定の場所である関数の呼び出し元プロセスに対してのみ関数呼び出しを許可するものである場合、判断部２６０は、関数の呼び出し元プロセスのプログラムモジュールが存在するデバイスのタイプやハードウェア識別情報を取得して、アクセス条件により指定される所定の起動場所であるかどうか判断する（ステップ７８５）。
【００６９】
関数の呼び出し元プロセスの起動場所が、アクセス条件により指定される所定の起動場所でない場合（ステップ７８５：ＮＯ）又はステップ７８０でＮＯの場合、判断部２６０は、捕捉された関数呼び出しは許可しないとの判断結果を制御部２６５へ返す。許可しないとの判断部２６０による判断結果に応答して、制御部２６５は捕捉された関数呼び出しを拒否する（ステップ７９０）。一方、ステップ７４０、ステップ７６０、及びステップ７７５で各々ＮＯの場合又はステップ７８５でＹＥＳの場合、判断部２６０は、捕捉された関数呼び出しを許可するとの判断結果を制御部２６５へ返す。許可するとの判断部２６０による判断結果に応答して、制御部２６５は捕捉された関数呼び出しを続行する（ステップ７９５）。
【００７０】
以上、実施形態を用いて本発明の説明をしたが、本発明の技術範囲は上記実施形態に記載の範囲には限定されない。上記の実施形態に、種々の変更または改良を加えることが可能であることが当業者に明らかである。従って、そのような変更または改良を加えた形態も当然に本発明の技術的範囲に含まれる。
【図面の簡単な説明】
【００７１】
【図１】本発明の実施形態に係る情報処理装置１００のハードウェア構成の一例を示す。
【図２】本発明の一実施形態に係る、オペレーティングシステムを介したデータアクセスを制御するためのプログラム２２０を実行する情報処理装置１００の機能ブロック図を示す。
【図３】（ａ）は、各デバイスの現在の接続状態または使用状態を示す情報の一例を示す。（ｂ）は、ネットワークデバイスに割り当てられる２ビット意味を示す。（ｃ）は、ネットワークデバイス以外の他のデバイスに割り当てられる１ビット意味を示す。
【図４】選択テーブル２４５の一例を示す。
【図５】図４に示す３６通りのアクセス条件のより詳細な内容の一例を示す。
【図６】常駐プログラム２２２による処理の流れの一例を示すフローチャートである。
【図７】プログラム２２４による処理の流れの一例を示すフローチャートである。
【図１】
2008165325.tif 000003
【図２】
2008165325.tif 000004
【図３】
2008165325.tif 000005
【図４】
2008165325.tif 000006
【図５】
2008165325.tif 000007
【図６】
2008165325.tif 000008
【図７】
2008165325.tif 000009