以下、本発明を実施するための形態について図面を用いて説明する。なお、以下に述べる実施例は、本発明の説明をしやすいように様々な制約が付加されている。しかしながら本発明の範囲は、以下の説明において特に記載がない限り、これらの態様に限られるものではない。
[実施例1]
図1は、本実施例に係る文書管理システムの構成を示すシステム構成図である。図1には、文書管理サーバ101と、クライアントPC102(1)、102(2)、・・・、102(N)とを示す。クライアントPC102は、ネットワーク100を介して文書管理サーバ101に常時接続され。クライアントPC102は、ダイアルアップ回線を介して接続されてもよい。
なお、クライアントPC102(1)、102(2)、・・・、102(N)は、同様の構成を持つ。したがって本明細書では、説明の簡略化のために、クライアントPC102(1)、102(2)、・・・、102(N)の中から特定されたクライアントPCを、クライアントPC102(X)又は102(Y)のように示す。また、クライアントPC102(1)、102(2)、・・・、102(N)の全体を、単にクライアントPC102と呼ぶ。
クライアントPC102は、本実施形態における文書管理サーバ101のユーザが用いる情報処理装置である。例えばユーザはクライアントPC102を、自宅又は会社において直接操作する。クライアントPC102については、図2を参照して後に詳しく説明する。文書管理サーバ101のユーザは、ネットワーク100を介して文書管理サーバ101にアクセスすることができる。ユーザは、クライアントPC102に保持されているアプリケーションやWebブラウザ等を用いて、文書管理サーバ101にアクセスすることができる。
こうしてユーザは、文書管理サーバ101に文書を送信し、文書管理サーバ101に文書を格納することができる。またユーザは、文書管理サーバ101に格納されている文書情報等を取得することができる。本実施例において、文書データは、文書管理サーバ101内の格納装置に格納される。しかしながら文書データは、文書管理サーバ101外の格納装置に格納されてもよい。この場合文書管理サーバ101は、外部の格納装置に格納された文書データへの、クライアントPC102からのアクセスを制御する。
文書管理サーバ101は、クライアントPC102と通信をおこなうことができる情報処理装置である。文書管理サーバ101は、クライアントPC102からネットワーク100を介して送信される文書を受信し、文書管理サーバ101内の所定の場所に文書を格納することができる。また文書管理サーバ101は、格納された文書を検索及び取得することができる。文書管理サーバの構成については、図3を参照して後に詳しく説明する。ネットワーク100は、本実施例ではインターネットである。しかしながらネットワーク100は、Local Area Network(以下、LAN)等の他のネットワークであってもよい。
図2は、本実施例における文書管理サーバ101及びクライアントPC102の内部構成を示す。本実施例では、文書管理サーバ101及びクライアントPC102において必要とされる内部構成は、ほぼ同一である。したがって説明の簡略化のために、文書管理サーバ101とクライアントPC102とを、同一の図を参照して説明する。以下の説明では、文書管理サーバ101とクライアントPC102とをまとめて情報処理装置と呼ぶ。
201は、中央演算装置(以下、CPUと記す)である。CPU201は、演算を行い、情報処理装置を制御する。202は、ランダムアクセスメモリ(以下、RAMと記す)である。RAM202は、CPU201の主メモリ、プログラムの格納領域、プログラムの実行領域、並びにデータ領域として働く。
203は、CPU201の動作処理手順を記憶しているリードオンリーメモリ(以下、ROMと記す)である。ROM203は、情報処理装置の機器制御をおこなうためのシステムプログラムである基本ソフト(OS)を記録したプログラムROMを含む。またROM203は、システムを稼動させるために必要な情報等が記録されているデータROMを含む。ROM203の代わりに後述のHDD212を用いることもできる。
204は、フロッピー(登録商標)ディスクドライブ(FDD)やCD−ROMドライブのような外部記憶メディアとデータを交換するデータ入出力装置である。データ入出力装置204は、対応する記憶メディアと情報を交換することができる。本実施例においては、データ入出力装置としてCD−ROM204が用いられる。
205は、ネットワークインターフェース(NETIF)である。NETIF205は、ネットワーク100に接続することができる。またNETIF205は、後述するモデム206を介して、外部ネットワークに接続することができる。さらにNETIF205は、ネットワークを介してデータ転送をおこなうために、データ転送の制御及び接続状況の診断をおこなうことができる。
206は、モデム等の信号変換器である。モデム206は、データ通信のために、外部ネットワークと情報処理装置とを電話回線等を介して接続することができる。207はビデオRAM(VRAM)である。VRAM207は、後述するCRT208に表示される画面を制御することができる。
208は、表示装置である。表示装置としては、例えばCRT等のディスプレイ装置を用いることができる。本実施例においては、表示装置としてCRTが用いられる。CRT208は、情報処理装置の稼動状態を示すことができる。209は、後述する外部入力装置210及び212からの入力信号を取得することができるコントローラ(以下、KBCと記す)である。210は、情報処理装置の利用者が入力操作をおこなうために用いるキーボード(以下、KBと記す)である。211は、情報格納装置の利用者が入力操作をおこなうために用いるポインティングデバイス(以下、マウスと記す)である。
212は、ハードディスクドライブ(以下、HDDと記す)である。HDD212は、アプリケーションプログラムや各種データを保存するために用いられる。本実施例におけるアプリケーションプログラムとは、本実施例における各種処理手段を構成するソフトウェアプログラム等のことである。200は、上述した各ユニット間を接続するための伝送バス(アドレスバス、データバス、入出力バス及び制御バス)である。
図3は、本実施例に係る文書管理サーバ101内で動作する処理モジュールと、及び情報を格納する格納装置とを示す。図3において、300は処理モジュール群である。処理モジュール群300に含まれる各モジュールは、図2に示したROM203、FDD204、またはHDD212より読み込まれ、RAM202へと展開され、CPU201によって使用されるアプリケーションプログラムによって実現される。
301は、ウィルスチェック部である。ウィルスチェック部301は、たとえばROM203に格納されたウィルスチェックプログラムをCPU201が実行することにより実現される(第2の保持手段)。ウィルスチェック部301は、クライアントPC102から送信される文書データを受信する。そしてウィルスチェック部301は、ウィルス対策ソフトウェアを実行することにより、受信した文書データにウィルスが感染していないかどうかをチェックする。さらにウィルスチェック部301は、後述する登録文書管理部311内によって管理される文書データにウィルスが感染していないかどうかを定期的にチェックする。ウィルスチェック部301は、後述する定義ファイル管理部313によって管理される、ウィルスパターンを定義したパターンファイルを用いて、ウィルスのチェックをおこなう。
302は、ウィルス駆除部である。ウィルス駆除部302は、ウィルスが感染している文書データから、ウィルスを駆除することを試みる。303は、感染文書削除部である。感染文書削除部303は、ウィルス駆除部302が文書データからウィルスをできなかった場合、その文書データを後述する感染文書管理部316から削除する。
304は通知部である。通知部304は、ウィルスチェック部301が文書データに感染したウィルスを検出した場合、クライアントPC102のユーザに対して、ウィルスが感染した文書が見つかったことを通知する。本実施例においては通知部304は、クライアントPC102に対してメールを送信することにより、ウィルスが見つかったことを通知する。しかしながら通知部304は任意の方法により通知を行うことができる。例えば通知部304がクライアントPC102にダイアログ表示命令を送ることにより、クライアントPC102のCRT208に警告ダイアログを表示させることもできる。
305は、表示情報処理部である。表示情報処理部305は、クライアントPC102の画面に表示させる、文書管理サーバ101についての情報を生成する。表示情報処理部305は、例えばクライアントPC102がアップロードした文書データがウィルスに感染している場合に、そのことを示す情報をクライアントPC102に表示させることができる。
さらに表示情報処理部305は、クライアントPC102がアップロードした文書の状態をクライアントPC102に表示させることができる。たとえば表示情報処理部305は、アップロードされた文書データからウィルスが駆除されたことを示す情報をクライアントPC102に表示させることができる。
また表示情報処理部305は、アップロードされた文書データが削除されていることを示す情報をクライアントPC102に表示させることができる。また表示情報処理部305は、アップロードされた文書データのアクセス権を示す情報をクライアントPC102に表示させてもよい。306は、アクセス権設定部である。アクセス権設定部306は、後述する登録文書管理部311内の文書データ及びバージョン管理部312内のバージョンデータへの、クライアントPC102のユーザのアクセス権を設定する。
307は、文書復帰部である。文書復帰部307は、ウィルスに感染していない文書データを、後述する感染文書管理部316から、後述する登録文書管理部311に移動する。例えば、ウィルス駆除部302が感染文書管理部316に隔離されている文書データのウィルスを駆除した後に、文書復帰部307はこの文書データを登録文書管理部311に移動する。定義ファイル管理部313に格納されている最新のパターンファイルが用いた検索が行われた際に、感染文書管理部316に隔離されている文書データからウィルスが検出されない場合もある。この場合、文書復帰部307はこの文書データを登録文書管理部311に移動してもよい。308は、履歴参照部である。履歴参照部308は、後述する履歴管理部314で管理される操作履歴を参照する。
310は情報格納装置である。情報格納装置310は後述する各部311〜317を備える。情報格納装置310は、RAM202、FDD204又はHDD212の少なくとも一つを用いて、ファイルシステムまたはデータベースシステムとして実現される。情報格納装置310に格納された情報へは、情報を特定するキー又は検索条件を指定することにより、直接アクセスすることが可能である。
311は、登録文書管理部である(第1の保持手段)。登録文書管理部311は、クライアントPC102の登録指示部322からの要求に従い、文書データを格納する。文書データはクライアントPC102から取得しても良いし、他の情報処理装置から取得してもよい。312は、バージョン管理部である。バージョン管理部312は、文書管理サーバ101が文書のバージョン管理をおこなう場合に使用される。
バージョン管理が行われる場合、文書管理サーバ101には、1つの文書について複数のバージョンのデータ(バージョンデータ)が格納される。例えば、文書管理サーバ101内の文書402(X)を更新する場合、更新前の文書と更新後の文書とが、ともにバージョンデータとして文書管理サーバ内に格納される。最新のバージョンが登録文書管理部311に格納され、古いバージョンが、バージョン管理部312に格納されてもよい。ただし、登録文書管理部311とバージョン管理部312とを分けることは必須ではない。1つの文書について複数のバージョンを格納できれば十分である。
313は定義ファイル管理部である。定義ファイル管理部313は、ウィルス定義ファイルを格納する。ウィルスチェック部301は、定義ファイル管理部313に格納されたウィルス定義ファイルを使用することにより、ウィルスチェックを行う。314は履歴管理部である。履歴管理部314は、クライアントPC102による文書管理サーバ101データに対する操作の履歴を格納する。例えば、クライアントPC102が文書管理サーバ101内に文書データを格納した際に、この文書データを特定のクライアントPC102が格納したことを示す履歴情報を、履歴管理部314は格納することができる。また履歴管理部314は、クライアントPC102が文書管理サーバ内の文書データを取得した際に、この文書データを特定のクライアントPC102が取得したことを示す履歴情報を、格納することができる。
315は、ユーザ管理部である。ユーザ管理部315は、文書管理サーバ101を利用するクライアントPC102のユーザの情報を格納する。ユーザ管理部315は、文書管理サーバ101にアクセスし利用するための認証をユーザが得るためのシステムを構成する。ユーザ管理部315には、ユーザに対して一意なユーザIDや、メールアドレス、パスワード等の情報を格納することができる。
316は、感染文書管理部である。感染文書管理部316は、ウィルス感染している文書データを隔離するための一時領域である。ウィルスチェック部301によって文書データからウィルスが検出された場合、ウィルスチェック部301はこの文書データを感染文書管理部316へと移動する。
317は、アクセス権管理部である。アクセス権管理部317は、文書管理サーバ101内のデータに対する、クライアントPC102のユーザのアクセス権を管理する。例えばアクセス権管理部317は、文書管理サーバ101の登録文書管理部311内のそれぞれの文書データへと、ユーザがアクセスできるか否かを示す情報を管理する。さらにアクセス権管理部317は、バージョン管理部312内のそれぞれのバージョンデータへと、ユーザがアクセスできるか否かを示す情報を管理する。
321は、表示制御部である。表示制御部321は、文書管理システムについての様々な情報を、クライアントPC102のCRT208上に表示させる。この情報は、文書管理サーバ101の表示情報処理部305によって生成される。322は、登録指示部である。登録指示部322は、クライアントPC102上の文書データを文書管理サーバ101内の登録文書管理部311又はバージョン管理部312に登録するために、文書管理サーバ101に対して要求を送る。また登録指示部322は、クライアントPC102上の文書データを文書管理サーバ101に対して送信する。
文書管理サーバ101内の各処理モジュールは、自動的に起動されてもよい。また文書管理サーバ101内の各処理モジュールは、クライアントPC102からの指示により必要に応じて起動されてもよい。処理モジュールは、例えば以下のように実現することができる。すなわち、ROM203、FDD204、HDD212等の情報記憶装置から、処理モジュールを実現するブログラムがRAM202へと展開される。CPU201はプログラムに従って、情報格納装置310に格納された情報をRAM202へと展開し、これらの情報を用いて演算を行う。またCPU201は、演算結果を必要に応じてRAM202又は情報格納装置310へと書き込む。
図4は、クライアントPC102(X)のユーザが操作する文書管理サーバ101上のフォルダ構成を、ツリー構造によって論理的に表す。文書管理サーバ101で使用されるフォルダ構成は、一般的にツリー構造によって表されるものが多い。図4においても、説明の簡略化のため、ツリー構造のフォルダ構成が使用されている。しかしながら、ツリー構造のフォルダ構成を用いることは必須ではない。
401は、文書管理サーバ101に作成されたフォルダを示す。フォルダ401(1)、402(2)、及び401(N)は、ツリー構造における同じ階層のフォルダである。また401(3)は、フォルダ401(2)内に作成された子フォルダである。402は、文書管理サーバ101のフォルダ401内に格納された文書を示す。フォルダ401(1)内には複数の文書、例えば文書402(1)、402(2)、及び402(N)を格納することができる。
フォルダ401(1)、401(2)、・・・、401(N)は、各々同様の構成を有する。本明細書では説明の簡略化のために、複数のフォルダ401(1)、401(2)、・・・、401(N)の中から特定されたフォルダは、フォルダ401(X)や401(Y)等として示される。また、フォルダ401(1)、401(2)、・・・、401(N)の全体は、単にフォルダ401と呼ばれる。文書402についても、フォルダ401と同様に記述される。
図5は、バージョン管理が行われる場合の、クライアントPC102(X)のユーザが操作する文書管理サーバ101上のフォルダ構成を、ツリー構造によって論理的に表す。501は、フォルダ401内に格納される文書402のバージョンを表す。ひとつの文書402(X)に対して、ふたつ以上のバージョン501(1)、501(2)、・・・、501(N)が作成されている。
通常は、文書402(X)が最初に文書管理サーバ101に登録される時に、バージョン501(1)が作成される。その後、文書402(X)が更新される際に、バージョン501(2)、・・・501(N)が順次作成されていく。それぞれのバージョン501はバージョン管理部312に格納されてもよい。また、最新のバージョンのみが登録文書管理部311に格納され、他のバージョンはバージョン管理部312に格納されてもよい。文書が読み出された際にも新しいバージョンが作成されてよい。
図6は、文書管理サーバ101内の履歴管理部314に格納される履歴情報の一例を示す。履歴情報は、ユーザが文書に対して、いつ、どのような操作をしたかを示す。本実施例においては、ユーザが文書402(X)を操作する度にひとつずつ、履歴情報を示すレコードが作成される。本実施例においては、ユーザが文書402を登録した場合、ユーザが文書402を削除した場合、及びユーザが文書402を取得(ダウンロード)した場合に、レコードが作成される。
例えば、ユーザは文書管理サーバ101に文書送信要求を送ることにより、文書管理サーバ101から文書を取得することができる。ユーザからの文書送信要求を受けると、例えば履歴参照部308は要求された文書(要求ファイル)をユーザに送信し、文書の送信履歴を履歴管理部314に保存してもよい(送信手段)。履歴情報としては、文書管理サーバに登録されたファイルと、そのファイルを登録したユーザ(送信元のユーザ)とを示す情報が含まれてもよい(第1の履歴情報)。また履歴情報として、文書管理サーバからダウンロードされたファイルと、そのファイルをダウンロードしたユーザ(送信先のユーザ)とを示す情報が含まれてもよい(第2の履歴情報)。
ただし、記録されるユーザの操作は任意かであり、ユーザが文書402をダウンロードしたことを示す履歴が記録されれば十分である。記録形式も図6のものには限られない。また図6においては説明の簡略化のため、文書に対する操作のみが履歴テーブル600に記録されている。しかしながら、文書に対する操作だけではなく、フォルダに対する操作等の他の操作が記録されてもよい。
601には、クライアントPC102(X)のユーザが文書を操作した際に、その操作日時が記録される。602には、クライアントPC102(X)のユーザが操作した文書を特定する情報が記録される。例えば、文書管理サーバ101における文書402のファイル名が格納されてもよい。また、文書管理システムにおいて提供される機能に従って、ユーザが文書402に対して任意に設定した文書名が格納されてもよい。
603には、文書管理サーバ101に登録されている文書を操作したユーザのユーザ名が記録される。ここでユーザ名とは、クライアントPC102(X)を使用しているユーザを特定する、ユーザに対して一意な情報である。ユーザ名とは例えば、メールアドレス、又は文書管理システムを利用するために割り当てられるユーザID、であってもよい。このユーザ名はユーザ管理部315に格納されることができる。上述のように、ユーザ管理部315に格納されたユーザ名と、アクセス権管理部317に格納されたアクセス権情報とを用いて、文書管理サーバ101は文書データに対するアクセス権を制御できる。604には、文書データに対するユーザの操作内容が記録される。例えば、文書データのダウンロード、文書データの登録、文書データの削除等の処理が記録される。
図7は、文書管理サーバ101内のアクセス権管理部317で管理されるアクセス権情報の一例である、アクセス権テーブル700を示す。アクセス権テーブル700は、クライアントPC102のユーザがフォルダ401や文書402へアクセスできるかどうかを示す。本実施例においては、文書管理サーバ101内の1つのフォルダ401又は文書402に対する1つのユーザのアクセス権を定義するために、1つのレコードが作成される。
701には、アクセス対象が記録される。ユーザに対して文書管理サーバ101内のフォルダ401又は文書402へのアクセスが許可される場合に、そのアクセス対象となるフォルダ401又は文書402が701に記録される。702には、アクセス対象701に対してアクセスが許可されているユーザのユーザ名が記録される。702に記録されるユーザ名は、図6の603に記録されるユーザ名と同じものである。すなわち702に記録されるユーザ名は、ユーザ管理部315に格納されているクライアントPC102(X)のユーザの情報であってもよい。
703は、アクセス対象701に対してユーザ702が有するアクセス権限を示す。アクセス権限としては、任意の種類を用いることができる。一般的には、フォルダ又は文書の読み出しのみが許可される読出権、フォルダ又は文書の変更及び修正が許可される変更権、フォルダ又は文書の削除が許可される削除権等が用いられる。しかしながら文書管理システムに依存して、用いられるアクセス権限の種類は異なる。
図8は、履歴情報が、クライアントPC102のCRT208上に表示されている様子を示す。この履歴情報は上述のように、文書又はフォルダに対するユーザの操作履歴を示す。より詳細には、図8には文書402(X)についての履歴情報が表示されている。図8の情報は、履歴テーブル600から生成することができる。図8の表示を行うために、履歴参照部308は履歴テーブル600を参照する。そして表示情報処理部305は、履歴テーブル600に従って表示情報を作成する。さらに表示制御部321は、表示情報処理部305が作成した表示情報にしたがってCRT208上に表示を行う。
801は、ユーザが対象となる文書402(X)を操作した日時を表している。801は、操作日時を示す項目601に対応する。802は、対象となる文書402(X)を操作したユーザ名を示す。802は、ユーザ名を示す項目603に対応する。803は、対象となる文書402(X)について行われた操作内容を示す。803は、操作内容を示す項目604に対応する。
図8は、アクセス権情報が、クライアントPC102のCRT208上に表示されている様子を示す。このアクセス情報は上述のように、文書又はフォルダに対するユーザのアクセス権を示す。より詳細には、図9には文書402(X)についてのアクセス権情報が表示されている。図9の情報は、アクセス権テーブル700から生成することができる。図9の表示を行うために、アクセス権設定部306はアクセス権テーブル700を参照する。そして表示情報処理部305は、アクセス権テーブル700に従って表示情報を作成する。さらに表示制御部321は、表示情報処理部305が作成した表示情報にしたがってCRT208上に表示を行う。
901は、表示されているアクセス権が設定されている文書402(X)を示す。901は、アクセス対象を示す項目701に対応する。902は、文書402(X)についてアクセス権が設定されているユーザを示す。902は、ユーザ名を示す項目702に対応する。903は、文書402(X)についてそれぞれのユーザに設定されたアクセス権を示す。903は、アクセス権を示す項目703に対応する。
次に、本実施例における、登録されている文書データに対して文書管理サーバ101がウィルスチェックを行う処理を、図10のフローチャートを参照して説明する。上述のように文書管理サーバ101には、クライアントPC102から送信された文書データが登録されている。文書管理サーバ101には、クライアントPC102の指示に従って外部から取得された文書データが登録されていてもよい。
上述のように文書管理サーバ101は、文書データを登録する際に、定義ファイル管理部313に格納されたパターンファイルに従ってその文書データがウィルスに感染していないかチェックしてもよい。ただし、このチェックは必須ではない。こうして登録された文書データに対して、文書管理サーバ101は以下のようにウィルスチェックを行う。文書管理サーバ101内の文書データは、既に何れかのユーザにダウンロードされている(送信処理後である)かもしれない。以下の処理によって、ユーザにダウンロードされている文書データに対しても、ウィルスチェックを行うことができる。
以下で説明するウィルスチェックは、定期的に実行されてもよいし、ユーザの指示に従って実行されてもよい。例えば、タイマ(不図示)から定期的に実行指示が入力され、実行指示に従ってウィルスチェックが行われてもよい。さらには、定義ファイル管理部313に格納されたパターンファイルが更新された際に、実行指示が入力され、ウィルスチェックが実行されてもよい。
このパターンファイル更新処理は、ウィルスチェック部301が行うことができる。例えばウィルスチェック部301は、パターンファイルが供給される外部のサーバに、新しいパターンファイルが存在するか否かを定期的に問い合わせてもよい。新しいパターンファイルが存在する場合、ウィルスチェック部301は新しいパターンファイルをダウンロードし、定義ファイル管理部313内のパターンファイルを更新することができる。さらには、新しいパターンファイルを入手したユーザが、定義ファイル管理部313内のパターンファイルを直接更新することもできる。
ステップS1001〜S1015の処理は、1つの文書データに対するウィルスチェック処理を示す。文書管理サーバ101に複数の文書データが格納されている場合、それぞれの文書データについてステップS1001〜S1015の処理が行われる。ステップS1001においてウィルスチェック部301は、ウィルスチェックの対象となる文書データを登録文書管理部311から取得する。ここでは文書402(X)がウィルスチェックの対象となっているものと仮定する。
ステップS1002においてウィルスチェック部301は、S1001で取得した文書402(X)に対して、定義ファイル管理部313内のウィルス定義ファイルを使用してウィルスチェックを行う。ステップS1003においてウィルスチェック部301は、ステップS1002において文書402(X)にウィルスが感染していかか否かを判断する。文書402(X)がウィルスに感染していた場合、処理はステップS1004に進む。文書402(X)がウィルスに感染していなかった場合は、文書402(X)へのウィルスチェック処理は終了し、上述のように次の文書に対するウィルスチェック処理が行われる。
ステップS1004においてウィルスチェック部301は、ウィルスに感染している文書402(X)を、登録文書管理部311から感染文書管理部316へと移動する。こうして、ウィルスに感染している文書402(X)が隔離される。感染文書管理部316へと移動された文書402(X)に対するユーザのアクセスは禁止されてもよい。また、一部のユーザ、例えば管理者、にのみ感染文書管理部316内の文書データに対するアクセスを許可するように、アクセス権管理部317内のアクセス権情報を構成することもできる。
ステップS1005においてウィルス駆除部302は、感染文書管理部316内の文書402(X)からウィルスを駆除することを試みる。例えばウィルス駆除部302は、定義ファイル管理部313に格納されたパターンファイルに従って、ウィルスの駆除を行うことができる。ステップS1006においてウィルス駆除部302は、ステップS1005において文書402(X)からウィルスを駆除できたか否かを判断する。ウィルスが駆除されている場合、処理はステップS1007に進む。ウィルスが駆除できた場合、処理はステップS1012に進む。
ステップS1007においてウィルス駆除部302は、感染文書管理部316内の文書402(X)を、登録文書管理部311に移動する。ステップS1008において、ウィルス駆除部302は、ウィルスに感染していた文書402(X)をこれまでにダウンロードしているクライアントPC102(X)のユーザ(送信先のユーザ)を検索する。ステップS1009においてウィルス駆除部302は、ステップS1008においてこれまでに文書402(X)をダウンロードしたユーザを発見したか否かを判断する。文書402(X)をダウンロードしたユーザがいた場合、処理はS1010に進む。文書402(X)をダウンロードしたユーザがいなかった場合、処理は終了し、次の文書データについてのウィルスチェックが開始される。
ステップS1010においてウィルス駆除部302は、ウィルスに感染していた文書402(X)をダウンロードしたユーザが、現在も文書402(X)に対してアクセス権を有するか否かを判断する。この判断は、ウィルス駆除部302がアクセス権設定部306を介してアクセス権管理部317内のアクセス権情報をチェックすることによって行われる。ユーザが現在も文書402(X)に対してアクセス権を有する場合は、処理はステップS1011に課かむ。ユーザの文書402(X)に対するアクセス権がなくなっている場合、処理はステップS1015に進む。
ステップS1011においてウィルス駆除部302は、ウィルスに感染していた文書402(X)をダウンロードしたユーザに対して通知を行う。ステップS1011においてウィルス駆除部302は、ユーザに対して、ウィルスが駆除された文書402(X)を再びダウンロードするように促す。ウィルス駆除部302は、ユーザに対する通知を、通知部304を介して行うことができる。通知部304が、例えばユーザにメールを送信することにより、この通知が実現される。
この処理によって、過去にウィルスに感染していた文書402(X)をダウンロードしたユーザが、この文書を削除することが可能となる。さらにユーザは、ウィルスが駆除されている文書402(X)を取得することが可能となる。こうして、クライアントPC102(X)からのウィルスの拡散を防ぐことが可能となる。
ウィルス駆除部302が文書402(X)に感染しているウィルスを駆除できなかった場合、ステップS1012においてウィルス駆除部302は、感染文書管理部316上にある文書402(X)を削除する。ステップS1013においてウィルス駆除部302は、ステップS1008と同様に、文書402(X)をこれまでにダウンロードしているクライアントPC102(X)のユーザを検索する。
ステップS1014においてウィルス駆除部302は、ステップS1013で文書402(X)をこれまでにダウンロードしているユーザを発見したか否かを判断する。文書402(X)をダウンロードしたユーザがいた場合、処理はS1015の処理に進む。ダウンロードしたユーザがいなかった場合は、処理は終了し、次の文書データについてのウィルスチェックが開始される。
ステップS1015においてウィルス駆除部302は、ウィルスに感染している文書402(X)をダウンロードしたユーザに対して報知を行う。ステップS1015においてはウィルス駆除部302は、過去にダウンロードした文書402(X)を削除するようにユーザに促す。ステップS1015の処理は、ステップS1011と同様に行うことができる。こうして、クライアントPC102(X)からのウィルスの拡散を防ぐことが可能となる。
本実施例においては、1つの文書データに対して、ウィルスチェック部301がステップS1001〜S1004の処理を行い、続けて同じ文書データに対してウィルス駆除部302がステップS1005〜S1015の処理を行った。しかしながら、ウィルスチェック部301の処理と、ウィルス駆除部302の処理とは、別個に行うことができる。例えば、ウィルスチェック部301が登録文書管理部311内のそれぞれの文書データについてウィルスチェックを行った後に、ウィルス駆除部302が感染文書管理部316内のそれぞれの文書データについて駆除処理をおこなってもよい。
本実施例においてはウィルスに感染していた文書402(X)をダウンロードしたユーザに対して報知を行ったが、他のユーザに対して報知を行うこともできる。例えば、ウィルスに感染していた文書402(X)をダウンロードしたユーザの一覧を、システム管理者に通知することもできる。また、ウィルスに感染していた文書402(X)を登録したユーザに対して、文書402(X)がウィルスに感染していたことを通知することもできる。報知の方法はこれらには限られず、様々な方法を用いることができる。さらには、ウィルスに感染していた文書402(X)をダウンロードしたユーザの一覧をログとして記録しておくこともできる。このログを例えばシステム管理者に送信することにより、システム管理者を経由してユーザに対する報知が行われてもよい。
本実施例においてはユーザに対して文書がウィルスに感染していたことを通知するが、これはクライアントPC102に対して行われてもよい。例えば、履歴管理部314には、文書データをダウンロードしたユーザ名だけではなく、文書データをダウンロードするのに用いられたクライアントPC102を特定する情報が記録されてもよい。例えば、クライアントPC102のコンピュータ名、又はIPアドレスが記録されてもよい。
文書402(X)にウィルスが感染していた場合、ウィルス駆除部302は、文書402(X)がダウンロードするのに用いられたクライアントPC102に対して通知を送信する。この場合クライアントPC102は、このクライアントPC102にウィルスが感染した文書402(X)がダウンロードされたという警告を表示することができる。この警告は、現在使用しているユーザが文書402(X)をダウンロードしたか否かに関わらず行うことができる。またこの警告はクライアントPC102に対して通知が送信された時に行われてもよい。またこの警告は、クライアントPC102に対して通知が送信されてから次にクライアントPC102が起動されたときに行われてもよい。
[実施例2]
本実施例においては、文書管理サーバ101はバージョン管理をおこなう。以下で、図11のフローチャートを参照して、文書402の1つのバージョンであるバージョン501(第1のファイル)が追加された際の、バージョン501に対するウィルスチェック処理を説明する。本実施例におけるシステム構成、ハードウェア構成、及びソフトウェア構成は実施例1と同様である。本実施例と実施例1との違いは、文書402に対して複数のバージョン501を作ることができることである。
ステップS1101においてユーザは、新しいバージョンの文書402を、文書管理サーバ101にアップロードする。ここでは図5に示されるように、文書402のバージョンとして、バージョン501(1)、502(2)、及び502(N)が文書管理サーバ101に格納されているものとする。ここでユーザがアップロードした新しいバージョンの文書402は、バージョン501(N+1)として取り扱われる。
例えば、ユーザが新しいバージョン501(N+1)で、文書管理サーバ内のバージョン501(N)を上書きしようとする場合に、バージョン501(N+1)はバージョン501(N)の新しいバージョンであるものと判定される。バージョン501(N)とバージョン501(N+1)とが同じファイル名である場合に、ユーザが上書きを行おうとしているものと判断されてもよい。
ステップS1102においてウィルスチェック部301は、バージョン501(N+1)に対してウィルスチェック(ウィルス検査)を行う。ウィルスチェック部301は、定義ファイル管理部313に格納されたパターンファイルを使用して、ウィルスチェックを行うことができる。ステップS1103においてウィルスチェック部301は、バージョン501(N+1)がウィルスに感染しているかどうかを判断する。バージョン501(N+1)がウィルスに感染していなかった場合、処理はS1104に進む。バージョン501(N+1)がウィルスに感染していた場合、処理はS1105に進む。S1104においてウィルスチェック部301は、バージョン501(N+1)を、文書402についての最新バージョンとして、バージョン管理部312に格納する。
ステップS1105においてウィルスチェック部301は、ユーザによってアップロードされたバージョン501(N+1)を感染文書管理部316に隔離する。ステップS1106においてウィルス駆除部302は、ステップS1005と同様に、バージョン501(N+1)に感染しているウィルスの駆除を試みる。
ステップS1107においてウィルス駆除部302は、ステップS1006と同様に、バージョン501(N+1)からウィルスを駆除できたか否かを判断する。バージョン501(N+1)からウィルスを駆除できた場合、処理はステップS1108に進む。バージョン501(N+1)からウィルスを駆除できなかった場合、処理はステップS1110に進む。
ステップS1108においてウィルス駆除部302は、ウィルスが駆除されたバージョン501(N+1)を、文書402についての最新バージョンとして、バージョン管理部312に格納する。ステップS1109においてウィルス駆除部302は、アップロードされたバージョン501(N+1)にウィルスが感染していたことをユーザに対して通知する。この通知はバージョン501(N+1)をアップロードしたユーザに対して送信されてもよいし、システム管理者に対して送信されてもよい。こうしてバージョン501(N+1)をアップロードしたユーザが、ウィルスに感染しているバージョン501(N+1)を、ウィルスが削除されたバージョン501(N+1)で置き換えることができる。したがってクライアントPC102(X)からのウィルスの拡散を防ぐことが可能となる。
ステップS1110においてウィルス駆除部302は、ウィルスを駆除できなかったバージョン501(N+1)を削除する。ステップS1111においてウィルス駆除部302は、ステップS1109と同様に、アップロードされたバージョン501(N+1)にウィルスが感染していたことをユーザに対して通知する。こうしてバージョン501(N+1)をアップロードしたユーザが、ウィルスに感染しているバージョン501(N+1)を削除することができる。したがってクライアントPC102(X)からのウィルスの拡散を防ぐことが可能となる。
ステップS1112〜ステップS1118では、ステップS1101以前にすでに文書管理サーバ101に格納されている、文書402の各バージョンに対するウィルスチェックが行われる。ステップS1112においてウィルスチェック部301は、ステップS1101以前にすでに文書管理サーバ101に格納されている、文書402の各バージョンのうち1つを取得する。
この説明においては、ステップS1101以前にすでにバージョン501(1)、502(2)、及び502(N)が文書管理サーバ101に格納されている。ウィルスチェック部301は、例えば文書管理サーバに格納されている文書402の各バージョンのうち、新しいものから順に取得していけばよい。ここでは、ウィルスチェック部301がバージョン501(X)を取得するものとする。
ステップS1113においてウィルスチェック部301は、ステップS1112で取得したバージョン501(X)をウィルスチェックする。ステップS1113におけるウィルスチェックは、ステップS1102と同様に行うことができる。ステップS1114においてウィルスチェック部301は、ステップS1113においてウィルスが検出された否かを判断する。ウィルスが検出された場合には処理はステップS1115に進む。ウィルスが検出されていない場合には処理はステップS1118に進む。
ステップS1115においてウィルスチェック部301は、ウィルスが感染しているバージョン501(X)を、感染文書管理部316へと隔離する。ステップS1115における処理は、ステップS1105と同様に行うことができる。ステップS1116においてウィルス駆除部302は、バージョン501(X)からのウィルスの駆除を試みる。ステップS1116における処理は、ステップS1106と同様に行うことができる。
ステップS1117でウィルス駆除部302は、ステップS1116においてバージョン501(X)のウィルスが駆除できたかどうかを判断する。ウィルスが駆除された場合には、処理はS1119に進む。ウィルスが駆除されなかった場合には、処理はステップS1118の処理に進む。
ステップS1118においてウィルス駆除部302は、感染文書管理部316に隔離されているバージョン501(X)を削除する。ステップS1119においてウィルス駆除部302は、文書402の全てのバージョンに対するウィルスチェックが行われたか否かを判断する。まだウィルスチェックが行われていないバージョンがある場合、処理はステップS1112に戻り、別のバージョンに対するウィルスチェックが行われる。文書402の全てのバージョンに対するウィルスチェックが行われている場合、一連の処理は終了する。
ユーザによってアップロードされたバージョン501(N+1)がウィルスに感染している場合、他のバージョンもウィルスに感染している場合がある。そこで本実施例においては、ウィルスに感染しているバージョン501(N+1)がアップロードされた場合、他のバージョン501(1)、501(2)、501(N)に対してもウィルスチェックが行われる。このように、文書402の古いバージョンに対してもウィルスチェックをおこなうことができる。したがって、文書管理サーバ101内のウィルスに感染したデータを減らすことができる。
本実施例においては、文書402の古いバージョンがウィルスに感染していた場合、ウィルスを駆除するか又はバージョンを削除した。しかしながら実施例1と同様に、ウィルスに感染しているバージョンをダウンロードしたユーザを特定し、ユーザに対して通知を行ってもよい。さらには、文書402のいくつかのバージョンが削除された場合に、ウィルス駆除部302は、文書管理サーバ101に格納されている文書402の最新のバージョンを、ユーザに対して通知してもよい。
本実施例のようにバージョン管理が行われなくても、同様の処理を行うことができる。すなわち、新しい文書データで古い文書データを上書きする場合(文書データを更新する場合)に新しい文書データにウィルスが発見されたならば、古い文書データに対してウィルスチェックを行えばよい。更新後の文書データがウィルスを含む場合、更新前の文書データもウィルスを含む可能性がある。更新前の文書データに対してウィルスチェックを行うことにより、ウィルスを含んでいる更新前の文書データをダウンロードしたユーザに対して、通知を行うことができる。
また、本実施例においては文書データの新しいバージョンがアップロードされた場合にウィルスチェックを開始した。しかしながら実施例1のように、定期的にウィルスチェックが行われてもよい。また、パターンファイルが更新された時にウィルスチェックが行われてもよい。この場合、例えばウィルスチェック部301は、文書データの最新のバージョンのみを最初にウィルスチェックしてもよい。そしてウィルスチェック部301は、ウィルスに感染している文書データを発見した場合に、その文書データのより古いバージョンに対してウィルスチェックを行ってもよい。こうして、ウィルスチェックのために必要な時間を削減することができる。
[実施例3]
本実施例においては、クライアントPCからアップロードされた文書データからウィルスが検出された場合に、同じクライアントPCからアップロードされた文書データに対するウィルスチェックが行われる。以下で、図12のフローチャートを参照して、文書402(X)がアップロードされた際に、文書管理サーバ101が行う処理について説明する。本実施例におけるシステム構成、ハードウェア構成、及びソフトウェア構成は実施例1と同様である。
ステップS1201においてユーザは、クライアントPC102(X)を用いて、文書402(X)(第1のファイル)を文書管理サーバ101にアップロードする。ステップS1202においてウィルスチェック部301は、アップロードされた文書402(X)をウィルスチェック(ウィルス検査)する。ウィルスチェックは、定義ファイル管理部313内のパターンファイルを用いて行われる。
ステップS1203においてウィルスチェック部301は、ステップS1202において文書402(X)からウィルスが検出されたか否かを判断する。ウィルスが検出されなかった場合、ウィルスチェック部301は文書402(X)を登録文書管理部311に格納する。そして文書402(X)がアップロードされた際の処理は終了する。文書402(X)からウィルスが検出された場合、処理はステップS1204に進む。
ステップS1204においてウィルスチェック部301は、ウィルス感染している文書402(X)を感染文書管理部316に隔離する。ステップS1205においてウィルス駆除部302は、文書402(X)からのウィルスの駆除を試みる。ウィルスの駆除は、例えば定義ファイル管理部313に格納されているパターンファイルを用いて行うことができる。ステップS1206においてウィルス駆除部302は、文書402(X)からウィルスが駆除されたか否かを判定する。ウィルスが駆除された場合、処理はステップS1207に進む。ウィルスが駆除されていない場合、処理はステップS1208に進む。
ステップS1207においてウィルス駆除部302は、感染文書管理部316に格納されている文書402(X)を、登録文書管理部311に移動する。ステップS1208においてウィルス駆除部302は、感染文書管理部316に格納されている文書402(X)を削除する。ステップS1207及びS1208においてウィルス駆除部302は、文書402(X)をアップロードしたユーザに対して、文書402(X)にウィルスが感染していたことを通知してもよい。
ステップS1209においてウィルスチェック部301は、クライアントPC102(X)からアップロードされた文書データを、文書管理サーバ101から検索する。すなわちウィルスチェック部301は、文書管理サーバ101に格納されているそれぞれの文書データが、文書402(X)の送信元であるクライアントPC102(X)から送信されているか否かを調査する。以下の処理においてウィルスチェック部301及びウィルス駆除部302は、クライアントPC102(X)から送信され、何れかのクライアントPC102によってダウンロードされている文書データが存在するか否かを調査する。
例えばウィルスチェック部301は、文書データを登録文書管理部311から検索する。ウィルスチェック部301は、例えば履歴管理部314で管理されている履歴テーブル600のような履歴情報を用いて、文書データを検索することができる。クライアントPC102(X)は、ウィルスに感染していた文書402(X)をアップロードしたクライアントである。
ステップS1210においてウィルスチェック部301は、クライアントPC102(X)からアップロードされた、文書402(X)以外の文書データが、ステップS1209において発見されたか否かを判断する。発見された場合、処理はステップS1211に進む。文書402(X)以外の文書データが文書管理サーバ101から発見されなかった場合、文書402(X)がアップロードされた際の処理は終了する。
ステップS1211においてウィルスチェック部301は、ステップS1209で発見された文書データのうち1つを、登録文書管理部311から取得する。ステップS1211において取得された文書データは、以下で文書402(Y)と呼ばれる。ステップS1212においてウィルスチェック部301は、文書402(Y)に対してウィルスチェックを行う。ステップS1213においてウィルスチェック部301は、ステップS1212においてウィルスが検出された否かを判断する。ウィルスが検出された場合、処理はステップS1214に進む。ウィルスが検出されなかった場合、処理はステップS1219に進む。
ステップS1214においてウィルスチェック部301は、ウィルス感染している文書402(Y)を、感染文書管理部316に隔離する。ステップS1215においてウィルス駆除部302は、文書402(Y)からのウィルスの駆除を試みる。ステップS1216においてウィルス駆除部302は、文書402(Y)からウィルスを駆除できたかどうかを判断する。文書402(Y)のウィルスを駆除できた場合には処理はS1217に進む。文書402(Y)のウィルスを駆除できなかった場合には処理はS1218に進む。
ステップS1217においてウィルス駆除部302は、感染文書管理部316から登録文書管理部311へと文書402(Y)を戻す。ステップS1218においては、ウィルス駆除部302は、感染文書管理部316上の文書402(Y)を削除する。ステップS1219においてウィルスチェック部301は、文書402(X)がアップロードされてからまだウィルスチェックされていない、クライアントPC102(X)からアップロードされた文書データが残っているかどうかを判断する。もうウィルスチェックされていない文書データが残っていない場合、文書402(X)がアップロードされた際の処理は終了する。まだウィルスチェックされていない文書データが残っている場合、処理はS1211の処理に戻り、クライアントPC102(X)からアップロードされた他の文書402(Z)が取得される。
クライアントPC102(X)からアップロードされた文書402(X)にウィルスが感染している場合、同じクライアントPC102(X)から過去にアップロードされた文書データにも、ウィルスが感染している可能性が高い。本実施例によればこのような場合、クライアントPC102(X)から過去にアップロードされた文書402(Y)、402(Z)に対してもウィルスチェックが行われる。こうして本実施例によれば、文書管理サーバ101内のウィルス感染したデータを減らすことが可能となる。
本実施例において、ステップS1215〜S1218では、ウィルス感染した文書データからウィルスが駆除されるか、又はウィルス感染した文書データが削除された。しかしながら、実施例1と同様に、ウィルス感染した文書データが発見された場合、その文書データをダウンロードしたユーザに対して警告を発することができる。
[その他の実施形態]
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(コンピュータプログラム)をネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムコードを読み出して実行する。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。