以下、実施形態について、図面を参照しながら詳細に説明する。説明の順序は以下のとおりである。
まず、図1〜4を参照して、第1〜3実施形態の共通点について説明する。その後、図5〜13を参照して、電子メールの添付ファイルを介した情報漏洩の防止に関する第1実施形態について説明する。さらに、図14〜15を参照して、共有フォルダを介した情報漏洩も防止するための第2実施形態について説明する。また、うっかりミスによる情報漏洩が起きやすいファイルに監視対象を絞り込むことで処理負荷を減らす第3実施形態について、図16〜19を参照して説明する。最後に、その他のいくつかの変形例についても説明する。
図1は、ファイルのライフサイクル内で行われる処理を説明する図であり、UML(Unified Modeling Language)のアクティビティ図の形式で表されている。
まず、ステップS101で、コンピュータは、ファイルの生成元(origin)を当該ファイルに関する非第三者(non-third party)として登録する。
あるファイルに関する非第三者とは、換言すれば、当該ファイルにアクセスする権限のあるユーザまたはコンピュータである。ファイルの生成元は、当然、当該ファイルに関する非第三者である。よって、ステップS101では、生成元が自動的に非第三者として登録される。
例えば、あるユーザの使うPC(Personal Computer)において新規に作成されるファイルに関しては、当該ユーザが当該ファイルの生成元として見なされてもよい。そして、生成元は、当該ユーザを識別する情報(例えばアカウント名)により表されてもよい。
あるいは、PCが特定の一人のユーザによってしか使われないのであれば、当該PCが生成元と見なされてもよい。そして、当該PCを識別する情報により生成元が表されてもよい。例えば、イントラネット内でPCを識別する情報の例は、ホスト名、MAC(Media Access Control)アドレス、固定的に(すなわち静的に)割り当てられたIP(Internet Protocol)アドレスなどである。
また、受信された電子メールの添付ファイルに関しては、当該電子メールの送信元(sender)が、ファイルの生成元として見なされてもよい。そして、生成元は、送信元電子メールアドレスにより表されてもよい。
あるいは、FTP(File Transfer Protocol)サーバやHTTP(Hypertext Transfer Protocol)サーバなどのサーバからダウンロードされたファイルに関しては、当該サーバがファイルの生成元として見なされてもよい。そして、生成元は、当該サーバを識別する情報(例えばFQDN(Fully Qualified Domain Name)またはIPアドレス)により表されてもよい。
ステップS101での登録後、コンピュータは、ファイルに対する何らかの処理の実行を指示する入力をユーザから受け取るまで待つ。そして、コンピュータは、ユーザから入力を受け取ると、ステップS101に続く合流(merge)ノードS102を経た次の決定(decision)ノードS103において、受け取った入力の種類を判定する。
コンピュータが受け取った入力が、ファイルを削除する処理の実行を指示する入力である場合は、コンピュータは、ステップS104においてファイルを削除する。そして、ファイルのライフサイクルも終了し、図1の処理も終了する。
また、コンピュータが受け取った入力が、ファイルへのアクセスを提供する処理の実行を指示する入力の場合は、図1の処理フローの制御は、決定ノードS107へと移行する。あるいは、コンピュータが受け取った入力が、その他の処理(例えばファイルの内容を編集する処理)の実行を指示する入力である場合は、図1の処理フローの制御は、合流ノードS105を経た次のステップS106へと移行する。
ステップS106で、コンピュータは、ユーザから受け取った入力によって指示された処理を実行する。そして、図1の処理フローの制御は、合流ノードS102に戻る。
また、決定ノードS107では、コンピュータは、「ユーザから受け取った入力によって指示された処理が、第三者(third party)からの当該ファイルへのアクセスを提供するか否か」を判定する。
あるファイルに関する第三者とは、当該ファイルにアクセスする権限のないユーザまたはコンピュータである。換言すれば、当該ファイルに関する非第三者としてまだ登録されていないユーザまたはコンピュータは、当該ファイルに関する第三者である。
ここで、決定ノードS107の判定が実行されるのは、ユーザからの入力が、ファイルへのアクセスを提供する処理の実行を指示する入力の場合である。ファイルへのアクセスを提供する処理の例は、例えば以下の(1−1)〜(1−4)のような処理である。
(1−1) ファイルを電子メールに添付して、当該電子メールを送信(send)する処理。
(1−2) 共有フォルダにファイルを移動(move)または複写(copy)する処理。
(1−3) PCから、FTPサーバまたはHTTPサーバに、ファイルをアップロードする処理。
(1−4) USB(Universal Serial Bus)メモリなどの記憶媒体に、ファイルを移動または複写する処理。
そこで、コンピュータは、「ユーザからの入力によって指示された処理が以下の(2−1)と(2−2)のどちらなのか」を、決定ノードS107において判定する。
(2−1) 当該ファイルに関して登録済みの、一または複数の非第三者に対してのみ、当該ファイルへのアクセスを提供する処理。
(2−2) 当該ファイルに関して非第三者として登録されていない、一または複数の第三者に対して、当該ファイルへのアクセスを提供する処理。
そして、ユーザからの入力によって指示された処理が(2−1)の処理の場合、図1の処理フローの制御は、合流ノードS105を経た次のステップS106へと移行する。つまり、非第三者にのみアクセスを許す処理の実行がユーザから指示された場合は、指示された処理の実行が許可され、その結果、指示された処理が実行される。そして、図1の処理フローの制御は、合流ノードS102に戻る。
逆に、ユーザからの入力によって指示された処理が(2−2)の処理の場合、コンピュータは、次のステップS108において警告を出す。警告を出すことにより、コンピュータは、「ユーザからの入力により指示された処理が、第三者への情報漏洩の危険性をはらんでいる」ということを、ユーザに通知する。また、警告を出すことにより、コンピュータは、「ユーザからの入力により指示された処理を本当に実行してよいのか否か」をユーザに確認する。
例えば、ユーザからの入力は、第三者を宛先に含む電子メールにファイルを添付して電子メールを送信する処理を実行するよう、コンピュータに指示する入力かもしれない。この場合、ステップS108でコンピュータは、「第三者が宛先に指定されていますが、本当にこの電子メールを送信しますか?」というダイアログを表示してもよい。
そして、コンピュータは、警告に対してユーザから入力が与えられるまで待ち、ステップS109でユーザからの入力を受け付ける。ステップS109で受け付けられる入力は、具体的には、実行が指示された処理を許可する許可入力か、実行が指示された処理を禁止する禁止入力である。
そこで、コンピュータは、次の決定ノードS110において、許可入力と禁止入力のいずれが与えられたのかを判定する。
禁止入力が与えられた場合は、図1の処理フローの制御は、合流ノードS102に戻る。つまり、仮に、第三者からのファイルへのアクセスを提供するような処理の実行を指示する入力を、ユーザが不注意から与えてしまったとしても、ユーザはステップS108の警告を受けることで自らの不注意に気づくことができる。そして、ユーザは、禁止入力をコンピュータに与えることで、コンピュータに当該処理の実行をとりやめさせることができる。その結果、不注意に起因する情報漏洩が防止される。
逆に、許可入力が与えられた場合は、コンピュータは次のステップS111において、(2−2)の一または複数の第三者を、新たな非第三者として登録する。そして、図1の処理フローの制御は、合流ノードS105を経た次のステップS106へと移行する。その結果、許可入力により実行が許可された処理がステップS106で実行され、図1の処理フローの制御は、合流ノードS102に戻る。
以上説明した図1の処理によれば、次の(3−1)〜(3−5)のような様々な効果が得られる。つまり、図1の処理によれば、情報漏洩を防止する(3−1)の効果と、ユーザの負担を軽減する(ひいては作業効率の悪化を防止する)(3−2)〜(3−5)の効果が、ともに得られる。
(3−1) 不注意(いわゆる「うっかりミス」)に起因する情報漏洩が防止される。
(3−2) 情報漏洩を防止するための事前のポリシー設定等が不要である。よって、ユーザまたはシステム管理者などにポリシー設定のための大きな負担をかけることがない。
(3−3) 警告が出されるのは、第三者にアクセスを提供する処理の実行が実際にユーザから指示された場合のみである。よって、過剰な警告の発生によりユーザが煩わされることがない。
(3−4) ファイルの生成元は、自動的に非第三者として登録される。また、許可入力を契機とする新たな非第三者の登録も、自動的に行われる。よって、ユーザには非第三者を登録するための格別な手間は生じない。
(3−5) 非第三者間でのファイルのやりとりは、何ら制約を受けず、警告の対象でもない。よって、非第三者間でのファイルのやりとりにおいて、ユーザに煩わしさまたは不便さを感じさせることはない。
続いて、図2を参照して、ネットワーク構成例について説明する。図2には、LAN(Local Area Network)110と、LAN110が接続されている外部のネットワーク120(例えばインターネット)が例示されている。
また、図2には、LAN110をネットワーク120に接続するルータ111も例示されている。LAN110にはさらに、3台のクライアントPC112〜114と、ファイルサーバ115と、メールサーバ116と、管理サーバ117が属している。
なお、実施形態によっては管理サーバ117が省略されてもよい。しかし、非第三者をファイルと対応づけて登録するためのDB(データベース)を管理サーバ117が管理してもよい。
LAN110内のクライアントPC112〜114は、管理サーバ117を介して当該DBにアクセスしてもよい。管理サーバ117が省略される場合は、クライアントPC112〜114のそれぞれがローカルにDBを保持してもよい。
あるいは、管理サーバ117が保持するDBに含まれるエントリのうち、一部のエントリの複製がクライアントPC112〜114に保持されてもよい。例えば、クライアントPC112は、クライアントPC112が保存しているファイルに関するエントリと、クライアントPC112が送信または受信した電子メールに関するエントリの複製を保持してもよい。
そして、ネットワーク120には、メールサーバ116とは別のメールサーバ121と、HTTPサーバ122と、FTPサーバ123が接続されている。メールサーバ121には、例えば不図示の別のLANなどのネットワークを介して、クライアントPC124も接続されている。
さてここで、説明の便宜上、例えば以下の(4−1)〜(4−6)のような状況を想定する。
(4−1) クライアントPC112において新規作成されたあるファイルが、機密情報を含む。なお、クライアントPC112のユーザは、当該機密情報を正当に知り得る立場にいるものとする。
(4−2) LAN110内のクライアントPC113のユーザは、当該機密情報にアクセスすることを許されていない。例えば、「LAN110はある会社のイントラネットであり、その会社の規則によれば、クライアントPC113のユーザは、当該機密情報の閲覧を許されていない」などの場合が、(4−2)の具体例である。
(4−3) LAN110外のクライアントPC124のユーザも、当該機密情報にアクセスすることを許されていない。
(4−4) ファイルサーバ115上には、クライアントPC113のユーザにもアクセス権のある共有フォルダが存在する。
(4−5) HTTPサーバ122上の任意のファイルは任意のユーザによりダウンロード可能である。
(4−6) FTPサーバ123上の任意のファイルは任意のユーザによりダウンロード可能である。
以上の(4−1)〜(4−6)の想定のもとでは、クライアントPC112のユーザの不注意から、仮に例えば以下の(5−1)〜(5−5)のような処理が実行されてしまえば、機密情報が漏洩してしまう。
(5−1) 機密情報を含む(4−1)のファイルを、クライアントPC113のユーザに宛てた電子メールに添付して、当該電子メールを送信する処理。
(5−2) 機密情報を含む(4−1)のファイルを、クライアントPC124のユーザに宛てた電子メールに添付して、当該電子メールを送信する処理。
(5−3) 機密情報を含む(4−1)のファイルを、(4−4)の共有フォルダに複写または移動する処理。
(5−4) 機密情報を含む(4−1)のファイルを、HTTPサーバ122にアップロードする処理。
(5−5) 機密情報を含む(4−1)のファイルを、FTPサーバ123にアップロードする処理。
つまり、上記の(5−1)〜(5−5)の処理は、いずれも、第三者へのアクセスを提供する処理であり、情報漏洩を引き起こすおそれのある処理である。しかし、図1の処理によれば、(5−1)〜(5−5)のような処理に対しては警告が出されるので、不注意による情報漏洩が防止される。
続いて、図3のブロック図を参照して、システム構成について説明する。詳しくは後述するが、図3のシステム200は、図2のクライアントPC112〜114と管理サーバ117に分散したクライアントサーバシステムであってもよい。あるいは、クライアントPC112〜114のそれぞれが、スタンドアロンシステムとしてシステム200を実現してもよい。
さて、システム200は、登録管理部210と実行制御部220と記憶装置230と入力装置240を含む。そして、登録管理部210は、生成元認識部211と登録部212と検出部213と判定部214を含み、実行制御部220は、警告部221と入力受付部222と許可部223と禁止部224を含む。また、記憶装置230は、ファイルを識別するファイル識別情報231に対応づけて、当該ファイルに関する一以上の非第三者それぞれを識別する非第三者識別情報232を記憶する。
登録管理部210は、記憶装置230に、ファイルの生成元を識別する情報を、当該ファイルのファイル識別情報231に対応づけて非第三者識別情報232として登録する。
ところで、ある種の処理は、当該ファイルのファイル識別情報231に対応づけられて記憶装置230に記憶されている非第三者識別情報232により識別されるいずれの非第三者でもない、一以上の第三者からの、当該ファイルへのアクセスを提供する。説明の便宜上、第三者からのファイルへのアクセスを提供するそのような処理を「特定の処理」という。特定の処理の具体例は(5−1)〜(5−5)の処理である。
登録管理部210は、特定の処理の実行を指示する特定の入力と、上記の一以上の第三者からの当該ファイルへのアクセスを許可する許可入力の双方が与えられた場合、上記の一以上の第三者の各々を、当該ファイルに関する非第三者として記憶装置230に登録する。特定の入力と許可入力は、具体的には、入力装置240を介してユーザから与えられる入力である。
そして、実行制御部220は、特定の入力と許可入力の双方が与えられた場合には、特定の処理の実行を許可する。しかし、実行制御部220は、特定の入力が与えられ、かつ許可入力が与えられない場合には、特定の処理の実行を禁止する。
以上の登録管理部210と実行制御部220の動作をより具体的に説明すれば、以下のとおりである。
生成元認識部211は、ファイルの生成元を認識する。例えば、生成元認識部211は、入力装置240からの入力に基づいて生成元を認識する場合もある。
そして、登録部212は、生成元認識部211の認識にしたがって、図1のステップS101において、当該ファイルのファイル識別情報231に対応づけて、生成元を識別する情報を非第三者識別情報232として記憶装置230に登録する。また、記憶装置230には、ファイル識別情報231と非第三者識別情報232だけでなく他の情報をさらに含むDBが保持されていてもよい。登録部212は、DBへのエントリの追加、DB内の個々のエントリの更新、DBからのエントリの削除などの、DBの更新のための各種処理をさらに行ってもよい。
また、検出部213は、入力装置240を介したユーザからの入力を検出する。ユーザからの入力には、上記の特定の処理の実行を指示する特定の入力や、その他の処理の実行を指示する入力などがある。つまり、検出部213は、図1の決定ノードS103での判定対象の入力を検出する。そして、検出部213による入力の検出に応じて、判定部214は、検出部213が検出した入力が上記の特定の入力であるか否かを判定する。
具体的には、判定部214は、記憶装置230を参照することで、「検出部213が検出した入力が、上記の特定の入力であるか否か」を判定する。判定部214による判定は、図1の決定ノードS107に対応する。
なお、検出部213が検出した入力により実行が指示される処理が、ファイルへのアクセスを提供する処理でなければ、ユーザが指示した処理が上記の特定の処理ではないことが明らかである。よって、図1に示すように、ユーザが指示した処理が実行される。
他方、検出部213が検出した入力により実行が指示される処理が、ファイルへのアクセスを提供する処理である場合、ユーザが実行を指示した処理は、上記の特定の処理の可能性がある。そこで、判定部214は、以下のように動作する。
判定部214は、検出部213が検出した入力により実行が指示される処理の対象のファイルを識別するファイル識別情報231を検索キーにして、記憶装置230を検索する。そして、判定部214は、検索キーと対応づけられて記憶されている非第三者識別情報232を抽出する。その結果、非第三者識別情報232が抽出されないこともあるし、一の非第三者に関する非第三者識別情報232のみが抽出されることもあるし、複数の非第三者に関する非第三者識別情報232が抽出されることもある。
ここで、説明の便宜上、検出部213が検出した入力により実行が指示される処理が、アクセスを提供する対象のことを、「アクセス提供対象」という。アクセス提供対象の数は、一または複数である。例えば、アクセス提供対象は、電子メールの宛先のこともあるし、図2のファイルサーバ115上の共有フォルダへのアクセス権限が与えられたユーザのこともあるし、図2のHTTPサーバ122またはFTPサーバ123のこともある。
判定部214は、一または複数のアクセス提供対象のそれぞれについて、「当該アクセス提供対象が、抽出した非第三者識別情報232が示すいずれかの非第三者であるか否か」を判定する。もし、アクセス提供対象の中に、一以上の第三者が含まれていれば、判定部214は、「検出部213が検出した入力は、上記の特定の入力に該当する」と判定する。逆に、アクセス提供対象が非第三者のみであれば、判定部214は、「検出部213が検出した入力は、上記の特定の入力に該当しない」と判定する。
そして、判定部214は、「検出部213が検出した入力は、上記の特定の入力に該当する」と判定した場合は、特定の入力が与えられたことを警告部221に通知する。すると、警告部221は図1のステップS108のとおり、警告を出す。
そして、図1のステップS109のとおり、入力受付部222が、警告に対する入力として、許可入力または禁止入力を受け付ける。許可入力と禁止入力は、入力装置240を介してユーザから与えられる入力である。
また、許可入力は、特定の処理の実行を許可するための入力であり、換言すれば、アクセス提供対象の中に含まれる第三者(なお、第三者の数は、一または複数である)のすべてに、特定の処理の対象たるファイルへのアクセスを許可するための入力である。逆に、禁止入力は、特定の処理の実行を禁止するための入力であり、換言すれば、アクセス提供対象の中に含まれる第三者のすべてに、特定の処理の対象たるファイルへのアクセスを禁止するための入力である。
そして、入力受付部222は、許可入力を受け付けた場合には、許可入力が与えられたことを登録部212に通知する。
ここで、許可入力は、「特定の処理の実行が許可された」と意味するだけでなく、「アクセス提供対象の中に含まれる各第三者を、特定の処理の対象たるファイルに関して今後は非第三者として扱ってよい」ということも意味する。したがって、図1のステップS111のとおり、登録部212は、新たな非第三者を、記憶装置230に登録する。
つまり、登録部212は、特定の処理の対象たるファイルを識別するファイル識別情報231に対応づけて、新たな非第三者を識別する非第三者識別情報232を、記憶装置230に登録する。なお、新たな非第三者の各々は、今までは第三者だったのであり、具体的には、判定部214によって上記のようにしてアクセス提供対象の中から見つけられた第三者だったわけである。よって、登録部212は、新たに登録する非第三者を示す非第三者識別情報232を、判定部214から取得することができる。
さらに、入力受付部222は、許可入力を受け付けた場合には、許可部223に通知を送る。また、判定部214も、「検出部213が検出した入力は、上記の特定の入力に該当しない」と判定した場合には、許可部223に通知を送る。
許可部223は、判定部214または入力受付部222から通知を受けると、検出部213が検出した入力により指示されている処理の実行を許可する。その結果、図1のステップS104またはS106のとおり、ユーザが指示した処理が実行される。
逆に、入力受付部222は、禁止入力を受け付けた場合には、禁止部224に通知を送る。すると、禁止部224は、特定の処理の実行を禁止する。したがって、図1の決定ノードS110から合流ノードS102への処理フローに示すとおり、特定の処理は実行されない。その結果、ユーザの不注意に起因する情報漏洩は防止される。
さて、以上のように動作する図3のシステム200は、上記のとおり、スタンドアロンシステムであってもよいし、クライアントサーバシステムであってもよい。
システム200がスタンドアロンシステムの場合、例えば、図2のクライアントPC112が登録管理部210と実行制御部220と記憶装置230と入力装置240のすべてを含む。クライアントPC113や114もクライアントPC112と同様である。スタンドアロンシステムの例は、第3実施形態とともに後で詳しく説明する。
システム200がクライアントサーバシステムの場合、例えば、記憶装置230は管理サーバ117内にあってもよい。そして、クライアントPC112〜114のそれぞれが、実行制御部220と入力装置240を有してもよい。
登録管理部210は、管理サーバ117とクライアントPC112〜114に分散していてもよい。例えば、登録部212と判定部214が管理サーバ117内にあってもよく、クライアントPC112〜114のそれぞれが生成元認識部211と検出部213を有してもよい。
あるいは、管理サーバ117は、記憶装置230と、記憶装置230上のDBに関するDBインタフェイスを提供するだけでもよい。そして、クライアントPC112〜114の各々が登録管理部210を有していてもよい。登録管理部210内の登録部212と判定部214は、管理サーバ117が提供するDBインタフェイスを介して記憶装置230上のDBにアクセスし、エントリの追加、削除、更新、参照などを行う。
このように、管理サーバ117がDBインタフェイスを提供し、登録部212や判定部214がクライアントPC112〜114にオフロードされた実施形態には、「管理サーバ117の処理負荷が軽くなるので、管理サーバ117が多数のクライアントを管理しやすい」という利点がある。この利点について詳しく説明すれば次のとおりである。
LAN110内のクライアントPCは、換言すれば、情報漏洩防止のために管理サーバ117が管理する対象のクライアントPCである。よって、図2のLAN110内に非常に多くのクライアントPCが存在する状況において、仮に、各クライアントPCについて1台の管理サーバ117が登録部212と判定部214として登録や判定などの処理を行うとすれば、管理サーバ117の負荷が非常に大きい。
そこで、LAN110内のクライアントPCの数が多い場合は、登録部212と判定部214の機能を各クライアントPCにオフロードすることが好ましい。すると、管理サーバ117は、DBインタフェイスさえ提供すればよいので、たとえクライアントPCの数が多くても問題ない。後に詳しく述べる第1〜2実施形態では、管理サーバ117がDBインタフェイスのみを提供するようなクライアントサーバシステムとしてシステム200が構成される場合について、主に説明する。
続いて、図4を参照してコンピュータのハードウェア構成について説明する。図2のクライアントPC112〜114、ファイルサーバ115、メールサーバ116、管理サーバ117、メールサーバ121、HTTPサーバ122、FTPサーバ123、およびクライアントPC124は、いずれも、図4のようなコンピュータであってよい。
図4のコンピュータ300は、CPU(Central Processing Unit)301と、ROM(Read Only Memory)302と、RAM(Random Access Memory)303と、通信インタフェイス304を有する。また、コンピュータ300は、入力装置305と、出力装置306と、記憶装置307と、記憶媒体310の駆動装置308を有する。そして、コンピュータ300内の各部は、互いにバス309で接続されている。また、コンピュータ300は、通信インタフェイス304を介してネットワーク311に接続されている。
なお、入力装置305、出力装置306、207、および駆動装置308は、図4ではコンピュータ300のブロックの中に描かれている。しかし、外付けの入力装置305、出力装置306、207、および駆動装置308が、それぞれコンピュータ300に接続されていてもよいことは無論である。
CPU301は、プログラムをRAM303にロードし、RAM303をワーキングエリアとしても用いながら、プログラムを実行する。プログラムは、予めROM302または記憶装置307に記憶されていてもよい。記憶装置307は、例えばハードディスク装置であってもよい。
あるいは、プログラムは、プログラム提供者312により提供され、ネットワーク311と通信インタフェイス304を介してコンピュータ300にダウンロードされ、記憶装置307に記憶されてもよい。プログラム提供者312は、例えば、コンピュータ300以外の他のコンピュータである。
また、プログラムは、コンピュータ読み取り可能な可搬型の記憶媒体310に記憶されて提供されてもよい。プログラムは、駆動装置308にセットされた記憶媒体310から、駆動装置308により読み取られる。読み取られたプログラムは、その後、一旦記憶装置307にコピーされてからRAM303にロードされてもよいし、直接RAM303にロードされてもよい。記憶媒体310としては、CD(Compact Disc)やDVD(Digital Versatile Disk)などの光ディスク、光磁気ディスク、磁気ディスク、不揮発性の半導体メモリカードなどが利用可能である。
なお、通信インタフェイス304は、有線LANのインタフェイス装置でもよいし、無線LANのインタフェイス装置でもよいし、両者の組み合わせでもよい。また、入力装置305は、例えば、キーボード、マウスやタッチスクリーンなどのポインティングデバイス、マイク、またはそれらの組み合わせである。出力装置306は、例えば、ディスプレイ、スピーカ、またはそれらの組み合わせである。ディスプレイは、タッチスクリーンであってもよい。
また、ROM302、RAM303、記憶装置307、および記憶媒体310は、いずれも、コンピュータ読み取り可能な記憶媒体の例である。これらのコンピュータ読み取り可能な記憶媒体は、有形の(tangible)記憶媒体であり、信号搬送波のような一時的な(transitory)媒体ではない。
ところで、図3と図4の関係を説明すると以下のとおりである。
図3の登録管理部210は、プログラムを実行するCPU301により実現されてもよい。また、システム200がクライアントサーバシステムの場合は、登録管理部210を実現するために、さらに通信インタフェイス304が使われてもよい。
例えば、生成元認識部211と検出部213は、クライアントPC112〜114それぞれのCPU301によって実現されてもよい。
また、登録部212と判定部214は、管理サーバ117が提供するDBインタフェイスを介して、記憶装置230にアクセスする。そこで、登録部212と判定部214は、クライアントPC112〜114それぞれのCPU301と通信インタフェイス304によって実現されてもよい。CPU301は、登録部212と判定部214を実現するためのプログラムを実行し、通信インタフェイス304は、CPU301の制御にしたがって管理サーバ117と通信する。
そして、警告部221は、各クライアントPC112〜114において、プログラムを実行するCPU301と、視覚的警告と聴覚的警告の一方または双方を出力する出力装置306により、実現されてもよい。
また、入力受付部222は、入力装置305からの入力を受け付けてプログラムにしたがって動作するCPU301により、実現されてもよい。図3のシステム200がスタンドアロンシステムでない場合、入力受付部222を実現するのに、さらにクライアントPC112〜114それぞれの通信インタフェイス304が使われてもよい。
そして、許可部223と禁止部224は、各クライアントPC112〜114において、プログラムを実行するCPU301により実現されてもよい。
また、記憶装置230が管理サーバ117にある場合は、記憶装置230は管理サーバ117の記憶装置307であってもよい。逆に、記憶装置230が例えばクライアントPC112にある場合は、記憶装置230はクライアントPC112の記憶装置307であってもよい。そして、クライアントPC112〜114それぞれにおける図3の入力装置240は、クライアントPC112〜114それぞれにおける図4の入力装置305であってもよい。
続いて、図5〜13を参照して、電子メールの添付ファイルを介した情報漏洩の防止に関する第1実施形態について説明する。第1実施形態は、図3のシステム200がクライアントサーバシステムである場合の例である。具体的には、第1実施形態では、図2の管理サーバ117が、下記(6−1)〜(6−2)を含む。
(6−1) 図3の記憶装置230(より具体的には、後述の図6〜8の管理DB400を保持する、図4の記憶装置307)。
(6−2) 記憶装置230上のDBに対する、図3の登録部212と判定部214からのDBアクセス要求を受け付けて、DBアクセス要求に対して応答する、DBインタフェイス。
なお、(6−2)のDBインタフェイスは、例えば、プログラムを実行するCPU301と、通信インタフェイス304によって、実現されてもよい。プログラムにしたがって動作するCPU301は、通信インタフェイス304を介してDBアクセス要求を受け付け、受け付けたDBアクセス要求にしたがって記憶装置307上のDBにアクセスし、通信インタフェイス304を介して、DBアクセス結果を返す。
また、第1実施形態では、図2のクライアントPC112〜114のそれぞれが、図3に示すブロックのうち下記(7−1)〜(7−6)を含む。
(7−1) 生成元認識部211。
(7−2) 上記(6−2)のDBインタフェイスを介して記憶装置230上のDBを更新する、登録部212。
(7−3) 検出部213。
(7−4) 上記(6−2)のDBインタフェイスを介して記憶装置230上のDBを参照することで判定を行う、判定部214。
(7−5) 実行制御部220。
(7−6) 入力装置240。
以下では、便宜上、各フローチャートに関して、クライアントPC112〜114のうちの1台を状況に応じて例として選んで説明を行う。しかし、もちろん他の2台においても、同様の処理が適宜行われる。
さて、図5は、ファイル生成時に行われる生成元登録処理のフローチャートである。図5に関しては、便宜上、クライアントPC112におけるファイルの生成を例として説明する。
図5の生成元登録処理は、生成元認識部211が、クライアントPC112に現在ログインしているユーザを、生成されたファイルの生成元として認識し、登録部212が生成元認識部211の認識にしたがって生成元を記憶装置230に登録する処理である。つまり、図5の生成元登録処理は、図1のステップS101の処理の一例である。
具体的には、図5の生成元登録処理は、クライアントPC112上でファイルが新たに生成されるときに実行される。例えば、下記(8−1)〜(8−2)のような操作が行われた場合には、生成元登録処理を開始するためのトリガとして、(8−2)の保存操作を生成元認識部211が検出する。そして、生成元認識部211は、トリガを検出すると、生成元登録処理を開始する。
(8−1) クライアントPC112のユーザが、あるアプリケーションソフトウェアで新規ファイルを作成し、新規ファイルを適宜編集したとする。
(8−2) その後、ユーザは、「保存(Save)」メニューを選択し、新規ファイルをクライアントPC112の記憶装置307に保存したとする。
アプリケーションソフトウェアにもよるが、(8−2)の保存操作による、記憶装置307上へのファイルの生成は、例えば、OSが提供するAPI(Application Programming Interface)関数を介して行われる。この場合、生成元認識部211は、ファイルの生成に使われる所定のAPI関数の呼び出しをフックすることで、図5の処理を開始するためのトリガを検出してもよい。
生成元認識部211は、図5の処理を開始すると、まずステップS201で以下の(9−1)〜(9−3)の情報を取得する。
(9−1) ファイル生成を指示したユーザのアカウント名。すなわち、クライアントPC112に現在ログインしているユーザのアカウント名。
(9−2) 生成されたファイルのフルパス(すなわち絶対パス)。フルパスの表記法はOSに応じて異なるが、以下では説明の便宜上、ドライブレターから始まる「C:\dir1\dir2\file.txt」のような表記法が使われるものと仮定する。
(9−3) ファイルが生成されたマシンのホスト名。すなわち、クライアントPC112をLAN110内で一意に識別するホスト名。なお、ホスト名以外の識別情報がホスト名の代わりに使われてもよい(例えば、クライアントPC112に固定的なIPアドレスが割り当てられる場合は、クライアントPC112のIPアドレスがホスト名の代わりに使われてもよい)。
そして、次のステップS202で生成元認識部211は、生成されたファイルに対応するファイルIDを発行する。ファイルIDは、管理サーバ117による管理の対象範囲であるLAN110内で一意である。例えば、クライアントPC112の生成元認識部211は、クライアントPC112のホスト名と、クライアントPC112内で一意なシーケンス番号とを組み合わせることで、LAN110内で一意なファイルIDを生成してもよい。もちろん、実施形態によっては、生成元認識部211は、LAN110内で一意なファイルIDの発行を管理サーバ117に要求し、管理サーバ117からファイルIDを取得してもよい。
続いて、ステップS203では、ステップS202で生成されたファイルIDと、(9−3)と(9−2)のペアにより表されるファイルの所在(location)とを対応づけるエントリが、図6のファイル所在テーブル402に追加される。また、次のステップS204では、ステップS202で生成されたファイルIDと、(9−1)のアカウント名とを対応づけるエントリが、図6のメンバテーブル401に追加される。そして、図5の生成元登録処理は終了する。
ここで、図6〜8を参照して、ステップS203とS204で使われるテーブルの具体例について説明する。その後、再び図5を参照して、ステップS203とS204の詳細について説明する。
図6〜8は、管理DB400の例を示す図である。図6の管理DB400は、図3の記憶装置230に保持されるDBであり、具体的にはメンバテーブル401とファイル所在テーブル402と電子メール管理テーブル403を含む。第1実施形態では、上記のとおり図3の記憶装置230は具体的には管理サーバ117の記憶装置307であるから、管理DB400も管理サーバ117の記憶装置307に記憶される。
なお、管理DB400内の各テーブルの内容は、イベントの発生にともなって変化する。よって以下では、「400a」と「400b」のように異なる添え字を含む参照符号により、異なる時点における同じDB(または同じテーブル)が区別される。図6〜8には、5つの異なる時点における管理DB400が例示されているが、これら5つの例示の詳細は、フローチャートとともに後述する。ここでは、管理DB400内の各テーブルの構成について先に説明する。
メンバテーブル401の各エントリは、ファイルIDと、当該ファイルIDにより識別されるファイルに関する非第三者を識別する情報(すなわち、図3の非第三者識別情報232)とを対応づける。図6〜8には非第三者識別情報232を示す列に「非第三者メンバ」という見出しが示されている。なお、ファイルIDは、図3のファイル識別情報231の一例である。
また、ファイル所在テーブル402の各エントリは、ファイルIDと、当該ファイルIDにより識別されるファイルの所在を示す所在情報とを対応づける。所在情報は、例えば、ホスト名と、当該ホスト名で識別されるマシン内のフルパスの組み合わせである。図6〜8には所在情報を示す列に「所在」という見出しが示されている。
そして、電子メール管理テーブル403の各エントリは、電子メールを一意に識別するメッセージIDと、電子メールに添付されているファイルのファイルIDと、当該添付ファイルのファイル名とを対応づける。メッセージIDとしては、例えば、電子メールの「Message−ID」ヘッダフィールドの値が使われてもよい。
ここで、図5を再び参照して、図5のステップS203とS204の詳細について、図6の具体例とともに説明する。
例えば、図5の生成元登録処理が開始される前には、メンバテーブル401とファイル所在テーブル402と電子メール管理テーブル403が、いずれも、エントリを持たない初期状態であったとする。また、ステップS201では、「name_A」というアカウント名と、「C:\path_A\Z.txt」というフルパスと、「PC_A」というホスト名が得られたとする。
なお、ステップS202で発行されるファイルIDは、例えば上記のようにホスト名とシーケンス番号の組み合わせにより表されてもよい。しかし、以下では説明の便宜上、「F000103」というファイルIDが発行されたものとする。
すると、ステップS203では、具体的には、クライアントPC112内の生成元認識部211が、ファイル所在テーブル402へのエントリの追加を、クライアントPC112内の登録部212に要求する。要求に際して、生成元認識部211は、「F000103」というファイルIDと、「PC_A」というホスト名と、「C:\path_A\Z.txt」というフルパスを登録部212に通知する。
すると、クライアントPC112内の登録部212は、管理サーバ117内のDBインタフェイスを介して、ファイル所在テーブル402にエントリを追加する。具体的には、登録部212は、「PC_A」というホスト名と「C:\path_A\Z.txt」というフルパスのペアで示される所在情報を「F000103」というファイルIDに対応づける新規エントリを、ファイル所在テーブル402に追加する。
こうして、生成された新たなファイルの所在がファイル所在テーブル402に登録される。図6のファイル所在テーブル402aは、以上のようにしてステップS203で追加された1個のエントリを含む。
また、ステップS204では、具体的には、クライアントPC112内の生成元認識部211が、メンバテーブル401へのエントリの追加を、クライアントPC112内の登録部212に要求する。要求に際して、生成元認識部211は、「F000103」というファイルIDと、「name_A」というアカウント名を登録部212に通知する。
すると、クライアントPC112内の登録部212は、管理サーバ117内のDBインタフェイスを介して、メンバテーブル401にエントリを追加する。具体的には、登録部212は、「name_A」というアカウント名を「F000103」というファイルIDを対応づける新規エントリを、メンバテーブル401に追加する。
つまり、クライアントPC112の登録部212は、ステップS204で以上のようにして、生成されたファイルに関する非第三者として、ファイルの生成を指示したユーザを登録する。図6のメンバテーブル401aは、以上のようにしてステップS204で追加された1個のエントリを含む。
図6の管理DB400aは、以上のようにして図5の生成元登録処理が完了した時点における、管理DB400の例である。なお、上記の説明から明らかなように、図5のステップS201とS202の実行順序は逆でもよいし、ステップS201とS202が並列に実行されてもよい。また、ステップS203とS204の実行順序は逆でもよいし、ステップS203とS204が並列に実行されてもよい。
続いて、図9を参照して、図1のステップS103〜S111の処理の具体例に相当する処理について説明する。図9は、添付ファイルつきの新規電子メールの送信時または添付ファイルつきの受信済み電子メールの転送時に実行される、送信確認処理のフローチャートである。
図9に関しても、便宜上、クライアントPC112における処理を例として説明する。具体的には、図9の送信確認処理は、下記(10−1)または(10−2)の場合に開始される。
(10−1) クライアントPC112のユーザが、メールユーザエージェント(つまり電子メールクライアントソフトウェア)上で、一つ以上のファイルを添付した新規電子メールを作成し、作成した新規電子メールを送信するための操作を行ったとき。例えば、ユーザが「送信」ボタンをクリックしたとき。
(10−2) クライアントPC112のユーザが、メールユーザエージェント上で、受信済みかつ添付ファイルつきの電子メールを、転送する(forward)ための操作を行ったとき。例えば、ユーザが「転送」ボタンをクリックしたとき。
例えば、「送信」ボタンをクリックする入力を検出部213が検出すると、判定部214は、新たに送信されようとしている電子メールにファイルが一つ以上添付されているか否かを判定する。そして、もしファイルが一つ以上添付されていれば、判定部214は図9の送信確認処理を開始する。逆に、ファイルが添付されていなければ、判定部214は許可部223に通知を送り、許可部223が新規電子メールの送信を許可する。
また、「転送」ボタンをクリックする入力を検出部213が検出すると、判定部214は、転送されようとしている電子メールにファイルが一つ以上添付されているか否かを判定する。そして、もしファイルが一つ以上添付されていれば、判定部214は図9の送信確認処理を開始する。逆に、ファイルが添付されていなければ、判定部214は許可部223に通知を送り、許可部223が電子メールの転送を許可する。
なお、検出部213による検出は、例えば、メールユーザエージェントに予め用意されているフックを利用することで実現されてもよい。また、図9の処理を開始するためのトリガを検出部213が検出することは、図1のステップS103からステップS107への移行に相当する。
さて、判定部214は、図9の処理を開始すると、まずステップS301で以下の(11−1)〜(11−4)の情報を取得する。
(11−1) 新規送信または転送を指示したユーザのアカウント名。
(11−2) 送信元電子メールアドレス。
(11−3) 宛先電子メールアドレス。
(11−4) 各添付ファイルのファイルID。
判定部214は、(11−1)のアカウント名(すなわち、クライアントPC112に現在ログインしているユーザのアカウント名)を、例えば、OSにより予め用意されているシステム関数を介して取得してもよい。
また、判定部214は、(11−2)と(11−3)のアドレスを、メールユーザエージェントから取得する。
なお、図9の処理においては、電子メールの「To」ヘッダフィールドに指定されているアドレスだけでなく、「CC」(Carbon Copy)ヘッダフィールドに指定されている電子メールアドレスも、宛先電子メールアドレスである。さらに、「BCC」(Blind Carbon Copy)ヘッダフィールドに指定されている電子メールアドレスも、宛先電子メールアドレスである。よって、判定部214は、一つ以上の宛先電子メールアドレスを取得する。
また、判定部214は、各添付ファイルに関して、(11−4)のファイルIDを具体的には以下のようにして取得する。
上記(10−1)のように新規電子メールが送信されようとしている場合、判定部214は、クライアントPC112のホスト名と、添付ファイルのクライアントPC112内での所在を示すフルパスとを検索キーにして、ファイル所在テーブル402を検索する。なお、判定部214は、ホスト名を、例えばOSにより提供されるシステム関数などを介して取得してもよい。また、判定部214は、上記フルパスを、メールユーザエージェントから取得してもよい。
検索の結果、一つのエントリが見つかる。なぜなら、クライアントPC112上で生成されたファイルが添付される場合は、図5の処理により、当該ファイルのエントリが既にファイル所在テーブル402に追加されているからである。
また、クライアントPC112がかつて受信した別の電子メールに添付されていたファイルが、一旦クライアントPC112内にローカルに保存され、その後、新規電子メールに添付される場合も、エントリが見つかる。なぜなら、後述の図11の処理により、当該ファイルのエントリが既にファイル所在テーブル402に追加されているからである。
したがって、判定部214は、見つかったエントリから、ファイルIDを読み出すことで、ファイルIDを取得することができる。また、判定部214は、後述のステップS308の処理のために、ファイル名とファイルIDの対応関係を記憶する。
他方、(10−2)のように電子メールが転送されようとしている場合、判定部214は、ユーザが転送しようとしている電子メールのメッセージIDと添付ファイルのファイル名を検索キーにして、電子メール管理テーブル403を検索する。なお、判定部214は、メッセージIDとファイル名を、メールユーザエージェントを介して取得してもよい。
検索の結果、一つのエントリが見つかる。なぜなら、ユーザが転送しようとしている電子メールが、LAN110内から送信されたものの場合は、かつて送信元のクライアントPCが図9の処理を実行したときに、当該ファイルのエントリが既に電子メール管理テーブル403に追加されているからである。あるいは、ユーザが転送しようとしている電子メールの送信元がLAN110外の場合は、かつてクライアントPC112において当該電子メールが受信されたときに、クライアントPC112が後述の図10の処理を実行したからである。図10の処理により、当該ファイルのエントリは既に電子メール管理テーブル403に追加されている。
よって、ユーザが転送しようとしている電子メールの送信元がLAN110の内部だろうと外部だろうと、判定部214は、検索の結果、電子メール管理テーブル403からエントリを一つ見つける。したがって、判定部214は、(10−2)の場合も(10−1)の場合と同様に、見つかったエントリから、ファイルIDを読み出すことで、ファイルIDを取得することができる。そして、判定部214は、後述のステップS308の処理のために、ファイル名とファイルIDの対応関係を記憶する。
判定部214は、以上のようにしてステップS301で(11−1)〜(11−4)の情報を取得すると、次にステップS302で「警告リスト」を空に初期化する。警告リストは、判定部214が図1のステップS107の判定を行うために用いる情報の一例である。
また、次のステップS303で判定部214は、(12−1)に示す各ペアと、(12−2)に示す各ペアがメンバテーブル401に登録済みか否かを判定する。
(12−1) ステップS301で取得した各ファイルIDと、ステップS301で取得した送信元電子メールアドレスのペア。
(12−2) ステップS301で取得した各ファイルIDと、ステップS301で取得したアカウント名のペア。
説明の便宜上、N個のファイルが電子メールに添付されているとする(N≧1)。この場合、ファイルIDと送信元電子メールアドレスのペアはN通りあり、ファイルIDとアカウント名のペアもN通りある。よって、判定部214は、これらの合計2N個のペアがすべてメンバテーブル401に登録されているか否かを判定する。
そして、一つでもメンバテーブル401に登録されていないペアがあれば、処理はステップS304に移行する。逆に、2N個のペアがすべてメンバテーブル401に既に登録されていれば、処理はステップS305に移行する。
ステップS304で判定部214は、未登録の各ペアをメンバテーブル401に登録する。ステップS304の処理は、明らかな非第三者を登録することにより無駄な警告の発生を抑制し、その結果としてユーザの負荷を軽減するための処理である。
例えば、添付ファイルの個数が1個であり、当該添付ファイルのファイルIDが図6のファイル所在テーブル402aに示す「F000103」であるとする。また、ステップS301で得られたアカウント名と送信元電子メールアドレスが、それぞれ「name_A」と「a@foo.com」であるとする。
この場合、図6のメンバテーブル401aによれば、「F000103」というファイルIDと「name_A」というアカウント名のペアは登録済みである。しかし、「F000103」というファイルIDと「a@foo.com」という送信元電子メールアドレスのペアは未登録である。よって、ステップS304で判定部214は、「F000103」というファイルIDと「a@foo.com」という送信元電子メールアドレスのペアに対応するエントリをメンバテーブル401に追加する。
未登録のペアが2個以上ある場合も、判定部214は、同様にして、各ペアに対応するエントリをメンバテーブル401に追加する。その後、処理はステップS305に移行する。
ステップS305で判定部214は、ファイルIDと宛先電子メールアドレスの未注目のペアが残っているか否かを判定する。
ここで説明の便宜上、ステップS301で取得される(11−3)の宛先電子メールアドレスの個数をMとする(M≧1)。すると、N≧1かつM≧1なのでMN≧1である。つまり、ファイルIDと宛先電子メールアドレスのペアはMN通りある。
よって、判定部214は、MN個のペアのうち、ステップS306〜S308における処理対象としてまだ注目していないペアが残っているか否かを、ステップS305で判定する。
未注目ペアが残っていれば、処理はステップS306に移行する。逆に、MN個のすべてのペアが注目済みであれば、処理はステップS309に移行する。
ステップS306で判定部214は、ファイルIDと宛先電子メールアドレスの未注目ペアの一つに注目する。以下、説明の便宜上、ステップS306で注目されたペアの、ファイルIDと宛先電子メールアドレスを、それぞれ「注目ファイルID」と「注目電子メールアドレス」という。
次のステップS307で判定部214は、注目電子メールアドレスが、注目ファイルIDで識別されるファイルにとっての第三者か否かを判定する。具体的には、判定部214は、メンバテーブル401において、注目ファイルIDと注目電子メールアドレスを対応づけるエントリを検索する。
もし検索の結果としてエントリが見つかれば、注目電子メールアドレスは、注目ファイルIDで識別されるファイルにとっての非第三者である。つまり、当該ファイルを注目電子メールアドレスに宛てて送信することは、情報漏洩ではない。よって、処理はステップS305に戻る。
逆に、ステップS307での検索の結果、エントリが見つからなければ、注目電子メールアドレスは、注目ファイルIDで識別されるファイルにとっての第三者である。つまり、当該ファイルを注目電子メールアドレスに宛てて送信することは、情報漏洩にあたるおそれがある。よって、警告のために処理はステップS308に移行する。
ステップS308で判定部214は、警告リストを更新する。具体的には、判定部214は、注目ファイルIDと、注目ファイルIDに対応するファイル名と、注目電子メールアドレスの三つ組を、警告リストに追加する。なお、判定部214は、前述のとおり、ステップS301でファイルIDを取得する過程で、添付ファイルのファイル名とファイルIDの対応関係を記憶している。したがって、判定部214は、注目ファイルIDに対応するファイル名を認識しており、そのため、ステップS308で上記のとおり警告リストに要素を追加することができる。そして、警告リストの更新後、処理はステップS305に戻る。
他方、ファイルIDと宛先電子メールアドレスのMN個のペアにすべて注目し終わると、判定部214は、警告リストが空か否かをステップS309で判定する。
警告リストが空の場合とは、すなわち、M個の宛先電子メールアドレスの各々が、N個の添付ファイルのすべてについてそれぞれ非第三者である場合である。この場合、情報漏洩のおそれはない。換言すれば、たとえ新規電子メールが送信されようとも(または、受信済みの電子メールが転送されようとも)、添付ファイルへのアクセスは、非第三者に対して提供されることはない。
よって、判定部214は、第三者への情報漏洩がないことを許可部223と登録部212に通知し、処理はステップS310に移行する。なお、ステップS309からステップS310への移行は、図1のステップS107からステップS105へのリンクに対応する。
逆に、警告リストが非空の場合とは、新規電子メールの送信または受信済みの電子メールの転送により、少なくとも一つの添付ファイルが、第三者からアクセス可能になってしまう場合である。つまり、警告リストが非空の場合、情報漏洩のおそれがある。
そこで、判定部214は警告リストを警告部221に出力し、処理はステップS311に移行する。なお、ステップS309からステップS311への移行は、図1のステップS107からステップS108へのリンクに対応する。
さて、ステップS310で許可部223は、電子メールの送信(つまり、新規電子メールの送信または受信済み電子メールの転送)を許可する。すると、当該電子メールはメールユーザエージェントにより送信される。
また、メールユーザエージェントは、当該電子メールを送信する際に、当該電子メールに新たなメッセージIDを割り当てる。そこで、ステップS310で登録部212は、割り当てられた新たなメッセージIDを読み取る。
そして、登録部212は、各添付ファイルについて、メッセージIDとファイルIDとファイル名の三つ組を、電子メール管理テーブル403に登録する。なお、登録部212は、添付ファイルのファイル名とファイルIDの対応関係を示す情報を、判定部214から取得してもよい。その後、図9の処理も終了する。
他方、ステップS311では、警告部221が、判定部214から受け取った警告リストにしたがって警告を出す。例えば、警告リストにファイルIDとファイル名と宛先電子メールアドレスの三つ組が4個含まれる場合、警告部221は、以下の(13−1)〜(13−3)を含むダイアログをクライアントPC112の画面に表示してもよい。
(13−1) 「以下の4通りの組み合わせで、第三者への情報漏洩のおそれがあります。本当にこの電子メールを送信しても構いませんか?」のような警告メッセージ。
(13−2) 警告リストに含まれる各三つ組で対応づけられている、ファイル名と宛先電子メールアドレスのペア。
(13−3) 警告メッセージに対する入力を受け付けるための、「はい」ボタンと「いいえ」ボタン。
なお、(13−1)〜(13−3)に例示したダイアログは、警告のためのGUI(Graphical User Interface)の一例に過ぎない。他のGUIが使われてもよい。もちろん、警告部221は、音声的な警告を発してもよい。
また、警告部221は、警告を発するだけでなく、警告に対する入力を入力装置240から受け付けるように入力受付部222に命令する。すると、ステップS311で入力受付部222は入力装置240からの入力(例えば、(13−3)の例では、「はい」ボタンまたは「いいえ」ボタンのクリック)を待つ。
警告に対する入力を入力受付部222が入力装置240から受け付けると、処理はステップS312に移行する。そして、ステップS312で入力受付部222は、受け付けた入力が、許可入力なのか、それとも禁止入力なのかを判断する。
禁止入力を入力受付部222が受け付けた場合、入力受付部222は禁止部224に通知を送る。そして、処理はステップS313に移行する。
逆に、許可入力を入力受付部222が受け付けた場合、入力受付部222は、非第三者への情報漏洩がないことを許可部223と登録部212に通知する。そして、処理はステップS314に移行する。
ステップS313で禁止部224は、電子メールの送信(具体的には、新規電子メールの送信または受信済み電子メールの転送)をやめる。つまり、禁止部224は、メールユーザエージェントによる当該電子メールの送信を禁止する。具体的には、禁止部224は、例えば、メールユーザエージェントに対してユーザから与えられた入力をキャンセルすることで、送信を禁止してもよい。そして、図9の処理は終了する。
他方、ステップS314で登録部212は、判定部214から警告リストを取得し、警告リストにしたがってメンバテーブル401にエントリを追加する。具体的には、登録部212は、警告リストに含まれる各三つ組(つまり、ファイルIDとファイル名と宛先電子メールアドレスの三つ組)について、当該三つ組で対応づけられているファイルIDと宛先電子メールアドレスのペアをメンバテーブル401に登録する。ステップS314でのメンバテーブル401への新たな非第三者の登録は、図1のステップS111での登録の具体例である。
例えば、警告リストに4個の三つ組が含まれる場合は、ステップS314で登録部212が4個のエントリをメンバテーブル401に追加する。そして、メンバテーブル401の更新後、処理はステップS310に移行する。
以上の図9の処理によれば、「ユーザの不注意により、非第三者宛ての電子メールにファイルが添付されて電子メールが送信され、その結果、情報が漏洩してしまう」という事態が防止される。また、図9の処理によれば、一または複数の非第三者にのみ送信されようとする電子メールに関しては、何の警告も発せられない。よって、「過剰な警告発生によりユーザの作業効率が落ちる」といった事態も回避される。
なお、図6の管理DB400bは、以下の(14−1)〜(14−9)に説明する場合における、図9の処理の終了後の管理DB400の例である。
(14−1) 「name_A」というアカウント名のユーザが、新規電子メールを送信しようとしたことがトリガとなって、図9の処理が開始されたとする。
(14−2) 図9の処理が開始される時点で、管理DB400が図6の管理DB400aの状態であったとする。
(14−3) 新規電子メールには、図6のファイル所在テーブル402aに所在が示されているファイルのみが添付されており、他のファイルは添付されていないものとする。
(14−4) 新規電子メールの送信元電子メールアドレスは「a@foo.com」であるとする。
(14−5) 新規電子メールの宛先電子メールアドレスは「b@foo.com」のみであるとする。
(14−6) 上記(14−1)〜(14−4)より、図9のステップS304では、「F000103」というファイルIDと「a@foo.com」という送信元電子メールアドレスを対応づけるエントリが、メンバテーブル401に追加される。
(14−7) 上記(14−2)、(14−3)、(14−5)より、図9のステップS311では、「Z.txt」というファイル名の添付ファイルと「b@foo.com」という宛先電子メールアドレスの組み合わせについて、警告が発せられる。
(14−8) 警告に対して許可入力が与えられたとする。その結果、ステップS314では、「F000103」というファイルIDと「b@foo.com」という宛先電子メールアドレスを対応づけるエントリが、ファイル所在テーブル402に追加される。
(14−9) ステップS310では、送信が許可された電子メールに、「M000015」というメッセージIDが割り当てられたとする。その結果、ステップS310では、「M000015」と「F000103」を対応づけるエントリが、電子メール管理テーブル403に追加される。そして、図9の処理が終了する。
以上の(14−1)〜(14−9)に説明した場合に、管理DB400は、図6の管理DB400aの状態から管理DB400bの状態へと変化する。
さて次に、図10を参照して、添付ファイルつきの電子メールの受信時に行われる添付ファイル登録処理について説明する。図10の処理は、電子メールを受信したユーザを、当該電子メールの添付ファイルに関する非第三者として自動的に登録するための処理である。
例えば、添付ファイルつきの電子メールが、図2のクライアントPC124から、メールサーバ121とネットワーク120とメールサーバ116を介して、クライアントPC113において受信されるとする。または、添付ファイルつきの電子メールが、クライアントPC114からメールサーバ116を介してクライアントPC113において受信されるとする。
いずれの場合も、クライアントPC113のユーザは、受信された電子メールの添付ファイルに関しての非第三者である。よって、クライアントPC113における電子メールの受信時に、図10の処理が行われ、非第三者の登録が行われる。
例えば、クライアントPC113のユーザが、メールユーザエージェント上で、「受信」ボタンをクリックするなどの、電子メールの受信のための操作を行うと、検出部213がユーザによる操作を検出する。そして、検出部213は、電子メールの受信のための操作が行われたことを登録部212に通知する。
メールサーバ116の受信電子メールボックスが空であれば、電子メールは受信されない。よって、この場合、図10の処理は不要であり、実行されない。
逆に、電子メールが1通以上受信された場合、検出部213からの通知を受けた登録部212は、受信された各電子メールについて、ファイルが添付されているか否かを調べ、ファイルが一つ以上添付されていれば図10の処理を開始する。以下では説明の便宜上、N個のファイルが受信電子メールに添付されているとする(N≧1)。
具体的には、登録部212は、まずステップS401で以下の(15−1)〜(15−4)の各種情報を取得する。
(15−1) 電子メールを受信するユーザのアカウント名。
(15−2) 受信電子メールアドレス。
(15−3) 受信電子メールのメッセージID。
(15−4) N個の添付ファイルそれぞれのファイル名。
登録部212は、(15−1)のアカウント名を、例えば、OSにより予め用意されているシステム関数などを介して取得してもよい。
また、登録部212は、(15−2)の受信電子メールアドレスをメールユーザエージェントから取得する。例えば、登録部212は、受信操作が行われる対象の電子メールボックスのプロパティから、受信電子メールアドレスを読み取ってもよい。
受信電子メールアドレスは、受信電子メールの「To」ヘッダフィールドに指定されていることもあり得るし、「CC」ヘッダフィールドに指定されていることもあり得る。あるいは、電子メールの送信時に「BCC」ヘッダフィールドに指定されたアドレスが受信電子メールアドレスである場合、受信電子メールそのものには、受信電子メールアドレスが含まれないこともあり得る。
また、登録部212は、受信電子メールの「Message−ID」ヘッダフィールドから、(15−3)のメッセージIDを読み取る。
また、受信電子メールは、N個の添付ファイルに対応するN個の「Content−Disposition」ヘッダフィールドを含む。よって、登録部212は、各「Content−Disposition」ヘッダフィールドから、各添付ファイルのファイル名を読み取る。
登録部212は、以上のようにしてステップS401で(15−1)〜(15−4)の情報を取得すると、次にステップS402で、取得したメッセージIDが電子メール管理テーブル403に登録されているか否かを判定する。そして、メッセージIDが電子メール管理テーブル403に登録されていれば、処理はステップS403に移行する。逆に、メッセージIDが電子メール管理テーブル403に登録されていなければ、処理はステップS404に移行する。
ステップS403は、図10の処理を実行するクライアント(例えば図2のクライアントPC113)を管理する管理サーバ117によって管理されている別のクライアント(例えばクライアントPC112)からの電子メールが受信された場合に、実行される。換言すれば、ステップS403は、図1のステップS101における生成元の登録が済んでいる場合に実行される。
例えば、クライアントPC112からクライアントPC113に電子メールが送信されたとする。この場合、クライアントPC112における図9の処理の結果として、管理サーバ117の管理DB400内の電子メール管理テーブル403には、当該電子メールに関するエントリが追加される。したがって、電子メールを受信するクライアントPC113が図10の処理を行うと、ステップS402で電子メール管理テーブル403にエントリが見つかる。
そこで、ステップS403で登録部212は、受信電子メールに添付されている各ファイルのファイルIDを、電子メール管理テーブル403から取得する。登録部212は、各添付ファイルについて、ステップS401で取得した当該ファイルのファイル名と、ステップS401で取得したメッセージIDとを検索キーにして、電子メール管理テーブル403を検索することで、ファイルIDを取得する。そして、登録部212がN個の添付ファイルのファイルIDをすべて取得すると、処理はステップS405に移行する。
他方、ステップS404が実行されるのは、図10を実行するクライアント(例えば図2のクライアントPC113)を管理する管理サーバ117によって管理されない、イントラネット外のホストからの電子メールが受信された場合である。
例えば、クライアントPC124から、メールサーバ121とネットワーク120とメールサーバ116を介して、クライアントPC113に電子メールが送信されたとする。
この場合、クライアントPC124は、管理サーバ117が管理する対象のLAN110の外部のホストである。よって、クライアントPC124が電子メールを送信しても、それだけでは管理サーバ117の管理DB400は変化しない。
つまり、管理DB400には、クライアントPC124から送信された電子メールに関するデータがまだ存在しない。したがって、電子メールを受信するクライアントPC113が図10の処理を行うと、ステップS402ではエントリが見つからない。
そこで、ステップS404で登録部212は、受信電子メールに添付されている各ファイルに対して、以下の(16−1)と(16−2)の処理を行う。
(16−1) 新たなファイルIDを発行する処理。
(16−2) ステップS401で取得したメッセージIDと、(16−1)の処理により発行した新たなファイルIDと、ステップS401で取得した当該ファイルのファイル名とを対応づける新たなエントリを、電子メール管理テーブル403に追加する処理。
なお、(16−1)の登録部212によるファイルIDの発行は、図5のステップS202における生成元認識部211によるファイルIDの発行と同様である。つまり、登録部212は、LAN110内で一意なファイルIDを生成する。あるいは、実施形態によっては、登録部212は、LAN110内で一意なファイルIDの発行を管理サーバ117に要求し、管理サーバ117からファイルIDを取得してもよい。
ステップS404でのファイルIDの発行は、図1のステップS101における生成元の登録のための前処理でもある。また、受信電子メールにN個のファイルが添付されている場合、(16−2)の処理により、N個の新たなエントリが電子メール管理テーブル403に追加される。そして、ステップS404での(16−1)と(16−2)の処理の後、ステップS405の処理が実行される。
ステップS405で登録部212は、受信電子メールのN個の添付ファイルのうちで、ステップS406以降の処理の対象としてまだ注目していない添付ファイルが残っているか否かを判断する。そして、未注目の添付ファイルが残っていれば、処理はステップS406に移行する。逆に、登録部212がN個の添付ファイルすべてに注目済みであれば、図10の処理は終了する。
ステップS406で登録部212は、未注目の添付ファイルのうちの一つに注目する。以下では説明の便宜上、ステップS406で注目された添付ファイルを「注目添付ファイル」という。
そして、次のステップS407で登録部212は、「ステップS401で取得したアカウント名が、注目添付ファイルのファイルIDと対応づけられているか否か」を判断する。つまり、登録部212は、「取得したアカウント名が、注目添付ファイルの非第三者としてメンバテーブル401に登録済みか否か」を判断する。具体的には、登録部212は、注目添付ファイルのファイルIDとステップS401で取得したアカウント名とを検索キーにして、メンバテーブル401を検索する。
検索の結果、エントリが見つかれば、取得したアカウント名は、注目添付ファイルの非第三者としてメンバテーブル401に登録済みである。よって、処理はステップS409に移行する。
逆に、検索の結果、エントリが見つからなければ、取得したアカウント名は、注目添付ファイルの非第三者としてまだ登録されていない。よって、登録のために処理はステップS408に移行する。
そして、ステップS408で登録部212は、注目添付ファイルのファイルIDと取得したアカウント名とのペアをメンバテーブル401に登録する。すなわち、登録部212は、当該ペアに対応する新たなエントリをメンバテーブル401に追加する。そして、処理はステップS409へ移行する。
ステップS409で登録部212は、「ステップS401で取得した受信電子メールアドレスが、注目添付ファイルのファイルIDと対応づけられているか否か」を判断する。つまり、登録部212は、「受信電子メールアドレスが、注目添付ファイルの非第三者としてメンバテーブル401に登録済みか否か」を判断する。具体的には、登録部212は、注目添付ファイルのファイルIDと受信電子メールアドレスとを検索キーにして、メンバテーブル401を検索する。
検索の結果、エントリが見つかれば、受信電子メールアドレスは、注目添付ファイルの非第三者としてメンバテーブル401に登録済みである。よって、処理はステップS405に戻る。
逆に、検索の結果、エントリが見つからなければ、受信電子メールアドレスは、注目添付ファイルの非第三者としてまだ登録されていない。よって、登録のために処理はステップS410に移行する。
そして、ステップS410で登録部212は、注目添付ファイルのファイルIDと受信電子メールアドレスのペアをメンバテーブル401に登録する。すなわち、登録部212は、当該ペアに対応する新たなエントリをメンバテーブル401に追加する。そして、処理はステップS405に戻る。
以上の図10の処理によれば、電子メールの受信者(recipient)が、当該電子メールに添付されている各ファイルについて非第三者として自動的に登録される。また、登録は、受信者のアカウント名に関して行われるとともに、受信者の電子メールアドレスに関しても行われる。
なお、電子メールは必ず読まれるとは限らず、添付ファイルも必ず保存されるとは限らないことに注意されたい。例えば、受信者たるユーザは、電子メールを受信するとすぐに添付ファイルをローカルに保存するかもしれないし、後日、必要に応じて添付ファイルをローカルに保存するかもしれないし、添付ファイルを保存しないかもしれない。図10の処理は、将来添付ファイルが保存されるかどうかに関わりなく、電子メールが受信されたときに実行される。
また、図7の管理DB400cは、以下の(17−1)〜(17−8)に説明する場合における、図10の処理の終了後の管理DB400の例である。
(17−1) 「name_B」というアカウント名でクライアントPC113を使用するユーザが、電子メールを受信するための操作を行ったとする。
(17−2) 上記(17−1)の操作の結果、1通の電子メールのみが受信されたとする。すると、この1通の電子メールに関して、図10の処理が開始される。
(17−3) 受信電子メールは、具体的には、図6の管理DB400bに関して(14−1)〜(14−9)で説明した電子メールであるものとする。
(17−4) 図10の処理が開始される時点で、管理DB400が図6の管理DB400bの状態であったとする。
(17−5) 上記(17−1)と(17−3)より、図10のステップS401では、以下の情報が取得される。
・「name_B」というアカウント名
・「b@foo.com」という受信電子メールアドレス
・「M000015」というメッセージID
・「Z.txt」というファイル名
(17−6) 上記(17−4)と(17−5)と図6の電子メール管理テーブル403bより、ステップS402ではエントリが見つかる。その結果、ステップS403では「F000103」というファイルIDがファイル電子メール管理テーブル403bから取得される。
(17−7) 上記(17−4)と(17−5)と図6のメンバテーブル401bより、ステップS407では、「name_B」がまだ非第三者として「F000103」に対応づけられていないことが判明する。その結果、ステップS408では、「name_B」を「F000103」に対応づけるエントリが、メンバテーブル401に追加される。
(17−8) 上記(17−4)と(17−5)と図6のメンバテーブル401bより、ステップS409では、「b@foo.com」が既に非第三者として「F000103」に対応づけられていることが判明する。その結果、ステップS410は実行されず、処理はステップS409からステップS405へと戻る。そして、図10の処理が終了する。
以上の(17−1)〜(17−8)に説明した場合に、管理DB400は、図6の管理DB400bの状態から図7の管理DB400cの状態へと変化する。
さて次に、図11を参照して、電子メールの添付ファイルがローカルに保存されるときに行われる所在登録処理について説明する。図10に関して述べたとおり、添付ファイルは、電子メールが受信されてすぐに保存されるとは限らず、添付ファイルの保存は任意のタイミングで生じ得る。よって、図11の処理は、受信済みの任意の電子メールに関して、任意のタイミングで実行され得る。
図11に関しても、図10と同様に、便宜上、クライアントPC113を例に説明を行う。クライアントPC113のユーザが、メールユーザエージェント上で、ある電子メールの1個以上の添付ファイルを保存するための添付ファイル保存操作を行うと、検出部213がユーザによる操作を検出する。添付ファイル保存操作は、具体的には、例えば以下の(18−1)〜(18−4)のように複数の操作を含む操作であってもよい。
(18−1) 「添付ファイルの保存」メニューを選択する操作。
(18−2) 電子メールに添付されているN個(1≦N)の添付ファイルの中から、保存対象のL個(1≦L≦N)の添付ファイルを選択する操作。
(18−3) L個の添付ファイルの保存先のフォルダのパスを指定する操作。
(18−4) 「保存」ボタンをクリックする操作。
そして、検出部213は、添付ファイル保存操作を検出すると、添付ファイル保存操作が検出されたことを登録部212に通知する。すると、登録部212が図11の処理を開始する。なお以下では説明の便宜上、上記(18−2)の例示と同様に、電子メールにN個(1≦N)のファイルが添付されており、そのうちL個(1≦L≦N)の添付ファイルの保存がユーザから指示されたものとする。
ステップS501で登録部212は、保存を指示されたL個の添付ファイルのうち、ステップS502〜S504の処理の対象としてまだ注目していない添付ファイルが残っているか否かを判断する、そして、未注目の添付ファイルが残っていれば、処理はステップS502に移行する。逆に、登録部212がL個の添付ファイルすべてに注目済みであれば、図11の処理は終了する。
ステップS502で登録部212は、未注目の添付ファイルのうちの一つに注目する。以下では説明の便宜上、ステップS502で注目された添付ファイルを「注目添付ファイル」という。
そして、次のステップS503で登録部212は、以下の(19−1)〜(19−3)の各種情報を取得する。
(19−1) 注目添付ファイルのファイルID。
(19−2) 保存対象のL個の添付ファイルを保存するマシン(すなわち図11の処理を実行するマシン)のホスト名。
(19−3) 注目添付ファイルの保存先のフルパス。
なお、登録部212は、図11の処理の対象の電子メールのメッセージIDと、注目添付ファイルのファイル名とを検索キーにして、電子メール管理テーブル403を検索することで、(19−1)のファイルIDを取得する。具体的には以下のとおりである。
登録部212は、電子メールの「Message−ID」ヘッダフィールドからメッセージIDを読み取ることができ、電子メールの「Content−Disposition」ヘッダフィールドから添付ファイルのファイル名を読み取ることができる。つまり登録部212は電子メールから電子メール管理テーブル403の検索のための検索キーを取得することができる。
また、検索の結果として、必ずエントリが見つかる。なぜなら、電子メールが送信されたときに図9のステップS310でエントリが既に追加されているか、または、電子メールが受信されたときに図10のステップS404でエントリが既に追加されているからである。したがって、登録部212は、電子メール管理テーブル403から(19−1)のファイルIDを取得することができる。
また、登録部212は、例えば、OSにより予め用意されているシステム関数などを介して、(19−2)のホスト名を取得する。さらに、登録部212は、メールユーザエージェント上で指定された保存先のフォルダのフルパスに、注目添付ファイルのファイル名を連結することで、(19−3)のフルパスを取得する。
そして、次のステップS504で登録部212は、ステップS503で取得した情報にしたがって、注目添付ファイルの所在情報をファイル所在テーブル402に登録する。すなわち、登録部212は、(19−1)〜(19−3)を対応づける新たなエントリをファイル所在テーブル402に追加する。そして、処理はステップS501に戻る。
ところで、図7の管理DB400dは、以下の(20−1)〜(20−6)に説明する場合における、図11の処理の終了後の管理DB400の例である。
(20−1) 図7の管理DB400cに関して(17−1)〜(17−8)で説明した、クライアントPC113において受信済みの電子メールに関して、クライアントPC113のユーザが、添付ファイル保存操作を行ったとする。すると、添付ファイル保存操作をトリガとして、図11の処理が開始される。なお、(17−3)と(14−3)より、当該電子メールには1個しかファイルが添付されていない。
(20−2) 図11の処理が開始される時点で、管理DB400が図7の管理DB400cの状態であったとする。
(20−3) 上記(20−1)と(20−2)より、図11のステップS503では、「F000103」というファイルIDが取得される。
(20−4) クライアントPC113のホスト名は「PC_B」であるとする。よって、ステップS503では「PC_B」というホスト名が取得される。
(20−5) 上記(20−1)の添付ファイル保存操作において、ユーザが、保存先のフォルダとして、「C:\path_B」というフルパスで識別されるフォルダを指定したとする。また、(20−1)と(20−2)より、添付ファイルのファイル名は「Z.txt」である。よって、ステップS503では添付ファイルの保存先のフルパスとして、「C:\path_B\Z.txt」が取得される。
(20−6) したがって、(20−3)のファイルIDと(20−4)のホスト名と(20−5)のフルパスを対応づける新たなエントリが、ステップS504でファイル所在テーブル402に追加される。
以上の(20−1)〜(20−6)に説明した場合に、管理DB400は、図7の管理DB400cの状態から管理DB400dの状態へと変化する。そして、例えば(20−6)のような、図11の処理によるエントリの追加は、非第三者間でファイルの編集を重ねながら何度もファイルをやりとりする場合に、過剰な警告の発生を防ぐ効果がある。その理由を、具体例を用いて説明すれば、以下のとおりである。
上記(20−6)でのエントリの追加後、クライアントPC113のユーザは、「C:\path_B\Z.txt」に保存した添付ファイルを編集して上書き保存するかもしれない。そして、クライアントPC113のユーザは、編集したファイルを新たな電子メールに添付し、新たな電子メールをクライアントPC112のユーザ宛に(すなわち、「a@foo.com」という電子メールアドレス宛に)送信しようとするかもしれない。
すると、クライアントPC113では図9の処理が行われる。この場合、図9のステップS301では、かつてクライアントPC113が図11の処理を行ったときに(20−6)でファイル所在テーブル402に追加されたエントリから、「F000103」というファイルIDが得られる。
したがって、図9の処理によれば、「C:\path_B\Z.txt」に上書き保存された編集後のファイルに関しても、「a@foo.com」という宛先電子メールアドレスが、非第三者であると判定される。よって、もし宛先電子メールアドレスが「a@foo.com」のみであれば、警告は発生しない。
つまり、「a@foo.com」と「b@foo.com」という二つの電子メールアドレスにより示される非第三者間で電子メールを介して上記ファイルがやりとりされる場合は、2回目以降の送信では警告が発生しない。よって、第1実施形態によれば、不注意に起因する情報漏洩が防げるだけでなく、「過剰な警告発生により、非第三者間での情報のやりとりが邪魔される」という事態も防げる。
また、あるファイルに関する非第三者の中には、例えばクライアントPC124のような、LAN110(すなわち管理サーバ117が管理する範囲)の外部に存在する非第三者が含まれるかもしれない。図5〜11の説明から明らかなとおり、このような外部の非第三者と内部の非第三者との間で電子メールを介してファイルがやりとりされる場合も、LAN110内部の非第三者間でファイルがやりとりされる場合と同様に、過剰な警告の発生が抑制される。
また、上記の例のように「a@foo.com」と「b@foo.com」という二つの電子メールアドレスにより示される非第三者間で電子メールを介して上記ファイルがやりとりされるだけでなく、さらに電子メールが転送されることもある。例えば、図8の管理DB400eは、そのような転送が行われた場合における管理DB400の例である。より具体的には、以下の(21−1)〜(21−8)に説明する場合、管理DB400は図8の管理DB400eのように変化する。
(21−1) クライアントPC113のユーザが、(17−1)〜(17−8)で説明した電子メール(つまり、クライアントPC113で受信済みの電子メール)を転送するための操作を行ったとする。
(21−2) 上記(21−1)の操作は、管理DB400が図7の管理DB400dの状態のときに行われたとする。
(21−3) 転送先の電子メールアドレスは「c@bar.org」であるものとする。なお、「bar.org」というドメインは、図2の管理サーバ117が管理するLAN110の外部であるものとする。また、「c@bar.org」というアドレス宛の電子メールは、具体的には、図2のクライアントPC124において受信されるものとする。
(21−4) 上記(21−1)のユーザ操作の検出に応じて、クライアントPC113では、図9の処理が行われる。すると、(21−1)〜(21−2)と図7より、「c@bar.org」という電子メールアドレスと「Z.txt」というファイル名の添付ファイルの組み合わせに対する警告が、図9のステップS311で出される。
(21−5) 上記(21−4)の警告に対し、クライアントPC113のユーザが許可入力を与えたとする。
(21−6) 上記(21−5)の許可入力の結果、ステップS314では、「Z.txt」というファイル名に対応する「F000103」というファイルIDと、「c@bar.org」という電子メールアドレスとを対応づけるエントリが、メンバテーブル401に追加される。
(21−7) また、ステップS310では、「c@bar.org」という電子メールアドレス宛に当該電子メールが転送される。なお、転送されるときに電子メールに割り当てられたメッセージIDが「M000021」であるものとする。
(21−8) ステップS310ではさらに、「M000021」というメッセージIDと「F000103」というファイルIDと「Z.txt」というファイル名とを対応づけるエントリが、電子メール管理テーブル403に追加される。
以上の(21−1)〜(21−8)に説明した場合に、管理DB400は、図7の管理DB400dの状態から図8の管理DB400eの状態へと変化する。すると、LAN110の外部のユーザ(具体的には「c@bar.org」という電子メールアドレスで識別されるユーザ)も、上記ファイルの非第三者として新たに登録される。
ところで、以上説明したように、第1実施形態においては、図3のファイル識別情報231の具体例としてファイルIDが利用される。
ファイル識別情報231としての適切さという観点から検討すると、例えば単なるファイル名は、不適当である。なぜなら、ファイル名だけでは、同名の別ファイル同士を区別できないからである。
他方、ファイルの所在を示すフルパスならば、1台のホスト内の異なるフォルダにある同名の別ファイル同士を区別することが可能である。よって、図2のシステム200がスタンドアロンシステムとして実現される場合(例えば後述の第3実施形態)には、ファイルのフルパスがファイル識別情報231として利用されてもよい。
しかし、クライアントサーバシステムとしてシステム200が実現される第1実施形態では、ファイル識別情報231として、フルパスではなくファイルIDが利用される。上記のとおりファイルIDは管理サーバ117が管理するLAN110内で一意である。つまり、ファイルIDを利用することで、異なるホストの同じフルパスにある異なるファイル同士を区別することが可能となる。
ところで、上記のようなファイルIDを利用することの別の利点の一つは、電子メールに添付されてやりとりされるファイルの継続性の管理が可能になることである。そして、ファイルの継続性が管理可能だと、過剰な警告の発生を防ぐことができ、ユーザの作業を妨げずにすむ。
例えば、クライアントPC114で新たに生成されたファイルが、電子メールに添付されてクライアントPC112と124に送信され、クライアントPC112と124でそれぞれ編集されるかもしれない。その後、クライアントPC112と124からそれぞれ、編集後のファイルを添付した電子メールが、クライアントPC114宛に送信されるかもしれない。
例えば以上のような状況では、元は同じファイルが、以下の(22−1)〜(22−10)のような異なる状態をとり得る。そして、管理サーバ117は、(22−7)と(22−8)の状態を感知することはできないが、(22−1)〜(22−6)と(22−9)〜(22−10)の状態に関しては、当該ファイルを同じ一つのファイルIDにより識別する。
(22−1) クライアントPC114で生成されて、クライアントPC114にローカルに保存された状態のファイル。
(22−2) クライアントPC114からクライアントPC112と124に送信される電子メールに添付された状態のファイル。
(22−3) クライアントPC112で受信した(22−2)の電子メールから取り出されて、クライアントPC112内にローカルに保存された状態のファイル。
(22−4) 上記(22−3)の保存の後に、クライアントPC112において編集されて、上書き保存された状態のファイル。
(22−5) 上記(22−4)の上書き保存の後に、クライアントPC112からクライアントPC114に送信される電子メールに添付された状態のファイル。
(22−6) クライアントPC114で受信した(22−5)の電子メールから取り出されて、クライアントPC114内にローカルに保存された状態のファイル。なお、この(22−6)における保存は、(22−1)のファイルに対する上書き保存であってもよいし、(22−1)とは別の場所への保存であってもよい。
(22−7) クライアントPC124で受信した(22−2)の電子メールから取り出されて、クライアントPC124内にローカルに保存された状態のファイル。
(22−8) 上記(22−7)の保存の後に、クライアントPC124において編集されて、上書き保存された状態のファイル。
(22−9) 上記(22−8)の上書き保存の後に、クライアントPC124からクライアントPC114に送信される電子メールに添付された状態のファイル。
(22−10) クライアントPC114で受信した(22−9)の電子メールから取り出されて、クライアントPC114内にローカルに保存された状態のファイル。なお、この(22−10)における保存も、(22−1)のファイルに対する上書き保存であってもよいし、(22−1)とは別の場所への保存であってもよい。
以上の例のように、第1実施形態では、同じ一つのファイルに対して次々と行われるいくつもの操作(例えば、ローカル保存、編集、電子メールに添付しての送信、など)を経ても、当該ファイルは、継続して同じファイルIDで管理され続ける。また、通常は、あるファイルについての非第三者は、当該ファイルに対して何らかの操作が行われても、当該ファイルについて非第三者であり続ける。そして、ファイルが継続して同じファイルIDで管理されると、結果として、非第三者も継続して非第三者として認識される。したがって、ファイルに対して次々と操作が行われたとしても、「操作のたびに警告が発生する」というような警告の過剰発生には陥らない。このように、ファイルIDをファイル識別情報231として利用することは、過剰な警告を防ぐうえでも有益である。
以上説明したように、ファイルIDをファイル識別情報231として利用することには利点がある。そして、もし以下に説明する図12の処理がさらに行われれば、ファイルIDの利用により、さらなるファイルの追跡も可能となる。つまり、図12の処理とファイルIDの利用により、「たとえファイルが複写、移動、または変名(rename)されても、ファイルを追跡してファイルの継続性を管理する」という機能が実現される。
図12は、ファイルの複写、移動または変名時に行われる所在更新処理のフローチャートである。なお、図12の説明における複写、移動または変名は、ある1台のホストの内部でローカルに行われる操作であるものとする。
図12の処理は、検出部213が、ファイルの複写、移動または変名のための操作を検出したときに開始される。図12の処理のトリガとして検出部213が検出する操作の具体例は、例えば、以下の(23−1)〜(23−7)などの操作である。
(23−1) OSにより提供されるコマンドによる、ファイルの複写(例えば、「copy」コマンドによるファイルの複写)。
(23−2) OSにより提供されるGUIによる、ファイルの複写(例えば、ファイルのアイコンをコピーアンドペーストする操作による、ファイルの複写)。
(23−3) OSにより提供されるコマンドによる、ファイルの移動(例えば、「move」コマンドによるファイルの移動)。
(23−4) OSにより提供されるGUIによる、ファイルの移動(例えば、ファイルのアイコンをドラッグアンドドロップする操作、または、ファイルのアイコンをカットアンドペーストする操作による、ファイルの移動)。
(23−5) OSにより提供されるコマンドによる、ファイルの変名(例えば、「move」コマンドによるファイルの変名)。
(23−6) OSにより提供されるGUIによる、ファイルの変名(例えば、ファイルのアイコンを選択してプロパティ中のファイル名を書き換える操作による、ファイルの変名)。
(23−7) アプリケーションソフトウェアによる、ファイルの複写、移動、または変名(例えば、既存のファイルをアプリケーションソフトウェアで開き、ファイルを別名で保存する操作による、ファイルの複写)。
検出部213は、例えば、コマンドの呼び出しやAPI関数の呼び出しをフックすることで、ファイルの複写、移動または変名のための(23−1)〜(23−7)のような操作を検出してもよい。検出の具体的方法が何であれ、検出部213は、ファイルの複写、移動または変名のための操作を検出すると、検出した操作の内容を登録部212に通知する。すると、登録部212が図12の処理を開始する。
そして、ステップS601で登録部212は、以下の(24−1)〜(24−4)の情報を取得する。
(24−1) 複写、移動、または変名の操作が行われるマシンのホスト名(すなわち、複写、移動、または変名のための入力が与えられるマシンのホスト名)。
(24−2) 操作対象の元のファイルのフルパス。
(24−3) 操作対象の元のファイルのファイルID。
(24−4) ファイルの新たなフルパス(すなわち、複写先、移動先、または変名後のフルパス)。
登録部212は、例えば、OSにより予め用意されているシステム関数などを介して、(24−1)のホスト名を取得する。例えば、「PC_A」というホスト名のクライアントPC112において図12の処理が行われる場合、登録部212は、「PC_A」というホスト名を取得する。
また、上記のとおり、図12の処理の開始のトリガとして検出部213が検出した操作の内容は、検出部213から登録部212に通知される。したがって、登録部212は、検出部213からの通知により、(24−2)と(24−4)の情報を認識することができる。
なお、検出部213自体は、例えば以下のようにして、(24−2)と(24−4)の情報を取得することができる。したがって、検出部213は、(24−2)と(24−4)の情報を登録部212に通知することができる。
例えば、OSにより提供されるコマンドによってファイルが複写、移動、または変名される場合、検出部213は、コマンドの引数とカレントフォルダのフルパスから、(24−2)と(24−4)の情報を取得してもよい。あるいは、検出部213は、ファイルの複写、移動、または変名のために呼び出されるAPI関数の引数から、(24−2)と(24−4)の情報を取得してもよい。
また、登録部212は、(24−1)のホスト名と(24−2)のフルパスを検索キーにしてファイル所在テーブル402を検索することで、(24−3)のファイルIDを取得する。
例えば、「PC_B」というホスト名のクライアントPC113において、「C:\path_B\Z.txt」というフルパスで所在が示されるファイルが、「C:\path_B\tmp\Z2.txt」へと複写されるとする。また、ファイル所在テーブル402が、具体的には図7のファイル所在テーブル402dの状態であるとする。
この場合、(24−1)のホスト名は「PC_B」であり、(24−2)のフルパスは「C:\path_B\Z.txt」である。また、(24−3)のファイルIDは「F000103」であり、(24−4)のフルパスは「C:\path_B\tmp\Z2.txt」である。
登録部212は、例えば以上のようにして、ステップS601で(24−1)〜(24−4)の情報を取得する。
すると、ステップS602で登録部212は、操作の種類を判断する。操作の種類が移動または変名の場合、処理はステップS603に移行する。逆に、操作の種類が複写の場合、処理はステップS604に移行する。
ステップS603で登録部212は、ファイルIDと元のファイルの所在情報を対応づけるエントリを、ファイル所在テーブル402から削除する。
ここで、元のファイルの所在情報は、具体的には、ステップS601で得られた(24−1)のホスト名と(24−2)のフルパスの組み合わせにより示される。よって、登録部212は、(24−3)のファイルIDと(24−1)のホスト名と(24−2)のフルパスを検索キーにして、ファイル所在テーブル402を検索する。そして、登録部212は、検索の結果として見つかる一つのエントリを削除する。その後、処理はステップS604に移行する。
ステップS604で登録部212は、ファイルIDと新たな所在情報を対応づけるエントリを、ファイル所在テーブル402に追加する。ここで、新たな所在情報は、具体的には、ステップS601で得られた(24−1)のホスト名と(24−4)のフルパスの組み合わせにより示される。よって、登録部212は、(24−3)のファイルIDと(24−1)のホスト名と(24−4)のフルパスを対応づける新たなエントリを、ファイル所在テーブル402に追加する。そして、図12の処理は終了する。
ところで、図3の記憶装置230の有効利用のためには、管理DB400内の不要なエントリが削除されてもよい。具体的には、図13の処理が行われてもよい。
図13は、ファイルが削除されるときに行われるエントリ削除処理のフローチャートである。例えばクライアントPC112は、クライアントPC112内にローカルに保存されているファイルが削除されようとするときに、図13の処理を実行する。
OSは、ファイル削除のために、「del」コマンドなどのコマンドや、「ゴミ箱」を空にするメニューなどを提供する。よって、検出部213は、ファイル削除のために提供されているこれらのコマンドやメニューの呼び出しを検出すると、検出した呼び出しの内容を登録部212に通知する。そして、登録部212が図13の処理を開始する。なお、検出部213は、上記のコマンドやメニューの呼び出しを検出するために、例えばフックを利用してもよい。
さて、ステップS701で登録部212は、下記(25−1)〜(25−3)の情報を取得する。
(25−1) 削除されようとしているファイルを保存しているマシンのホスト名
(25−2) 削除されようとしている当該ファイルのフルパス
(25−3) 削除されようとしている当該ファイルのファイルID
例えば、クライアントPC112の登録部212は、OSにより予め用意されているシステム関数などを介して、(25−1)のホスト名(すなわちクライアントPC112のホスト名である「name_A」)を取得してもよい。
また、登録部212は、検出部213から通知された内容から、(25−2)のフルパスを取得する。
なお、検出部213自体は、例えば、ファイルを削除するためのコマンドの引数とカレントフォルダのフルパスから、(25−2)のフルパスを認識してもよい。また、ある種のOSによれば、「ゴミ箱」内のファイルには、当該ファイルがもともと置かれていたフォルダのフルパスを示す情報が対応づけられている。よって、検出部213は、例えばOSを介して、(25−2)のフルパスを取得してもよい。いずれにせよ、検出部213は、(25−2)のフルパスを認識して、登録部212に通知することができる。
また、登録部212は、(25−1)のホスト名と(25−2)のフルパスを検索キーとしてファイル所在テーブル402を検索することで、(25−3)のファイルIDを取得することができる。
登録部212は、以上のようにしてステップS701で(25−1)〜(25−3)の情報を取得する。そして、次のステップS702で、登録部212は、ファイル所在テーブル402から、削除されようとするファイルに関するエントリを削除する。すなわち、登録部212は、(25−3)のファイルIDと、(25−1)のホスト名と、(25−2)のフルパスを対応づけているエントリを、ファイル所在テーブル402から削除する。
そして、次のステップS703で登録部212は、(25−3)のファイルIDが、ファイル所在テーブル402または電子メール管理テーブル403に存在するか否かを判断する。
具体的には、登録部212は、(25−3)のファイルIDを検索キーにして、ファイル所在テーブル402を検索する。図13の処理を実行するクライアントマシンとは別のクライアントマシンが、同じファイルIDのファイルをローカルに保存している場合は、ファイル所在テーブル402でエントリが見つかる。
さらに、登録部212は、(25−3)のファイルIDを検索キーにして、電子メール管理テーブル403を検索する。図13の処理を実行するクライアントマシンと他のクライアントマシンの間でかつて送受信されたいずれか電子メールに、(25−3)のファイルIDのファイルが添付されていた場合は、電子メール管理テーブル403でエントリが見つかる。
検索の結果、ファイル所在テーブル402と電子メール管理テーブル403のどちらにもエントリが見つからなければ、処理はステップS704へ移行する。逆に、ファイル所在テーブル402と電子メール管理テーブル403の少なくとも一方でエントリが見つかった場合は、処理はステップS705へ移行する。
ステップS704で登録部212は、(25−3)のファイルIDを含むすべてのエントリをメンバテーブル401から削除する。その結果、メンバテーブル401とファイル所在テーブル402と電子メール管理テーブル403のいずれにも、(25−3)のファイルIDを含むエントリは存在しなくなる。そして、エントリの削除後、処理はステップS705に移行する。
ステップS705で検出部213は、ファイルの削除を許可するための制御を行う。例えば、検出部213は、フック関数の実行を終了させることにより、ファイルを削除するためのコマンドまたはメニューに制御を戻し、それにより、ファイルの削除を許可してもよい。ステップS705の結果、ユーザが削除を指示したファイルは削除される。
以上の図13の処理によれば、不要になることが明らかなエントリが、メンバテーブル401から削除される。つまり、図13の処理によれば、下記(26−1)と(26−2)の条件をともに満たすファイルに関するエントリを持たないように、メンバテーブル401が管理される。
(26−1)クライアントPC112〜114のいずれにも現に保存されていない。
(26−2)クライアントPC112〜114のいずれかに現に保存されている電子メールから、今後、抽出されて、クライアントPC112〜114のいずれかにローカルに保存される、という可能性もない。
また、図13の処理によれば、ファイルの削除にともなって、ファイル所在テーブル402から不要なエントリが削除される。したがって、図13の処理により、記憶領域の無駄な消費が防止される。
続いて、図14〜15を参照して、共有フォルダを介した情報漏洩も防止するための第2実施形態について説明する。第2実施形態では、第1実施形態と同様の処理に加えて、さらに、共有フォルダを介した情報漏洩を防止するための処理も行われる。
例えば、図2のようにLAN110内にファイルサーバ115が設けられ、ファイルサーバ115上に共有フォルダが作成され、共有フォルダを介してユーザ間でファイルが共有されることがある。しかし、共有フォルダに設定されたアクセス権によっては、共有フォルダを介して意図せぬ情報漏洩が生じるおそれがある。
例えば、下記(27−1)〜(27−4)のような状況を想定する。
(27−1) LAN110は、ある会社のイントラネットである。
(27−2) クライアントPC112と113のユーザは、会社内の第1の部署の職員である。また、クライアントPC114のユーザは第2の部署の職員である。
(27−3) 当該会社の規則では、第2の部署の職員には、第1の部署の内部文書を閲覧することが許されていない。
(27−4) 他方で、部署間での情報共有のために、ファイルサーバ115上にはある共有フォルダが作成されている。そして、当該共有フォルダに関しては、クライアントPC112〜114のユーザ全員に、読み書きが許可されている。
上記(27−1)〜(27−4)の状況において、クライアントPC113のユーザが、もし第1の部署の内部文書のファイルを(27−4)の共有フォルダに保存してしまうと、第1の部署の内部文書が、第2の部署の職員に漏洩してしまう。第2実施形態では、例えばこのような情報漏洩がユーザの不注意から生じることを防ぐために、図14の処理が行われる。
図14は、共有フォルダへの書き込み時に行われる書き込み確認処理のフローチャートである。図14の処理は、図1のステップS103〜S111の処理の具体例に相当する。
以下では説明の便宜上、クライアントPC113において図14の処理が行われる場合を例にとる。
また、以下では説明の簡単化のため、ある一つのファイルが共有フォルダに書き込まれようとする場合について主に説明する。複数のファイルがまとめて共有フォルダに書き込まれようとする場合には、各ファイルについて図14の処理が行われる。
図14の処理は、具体的には以下の(28−1)〜(28−3)のいずれかの場合に開始される。
(28−1) クライアントPC113のユーザが、クライアントPC113内にローカルに保存されているファイルを、共有フォルダに複写または移動するための操作を行った場合。
(28−2) クライアントPC113のユーザが、第1の共有フォルダ上に保存されているファイルを、第2の共有フォルダに複写または移動するための操作を行った場合。
(28−3) クライアントPC113のユーザが、クライアントPC113で受信済みの電子メールの添付ファイルを、共有フォルダに保存するための操作を行った場合。
なお、(28−1)の一例は、OSにより提供されるコマンドまたはGUIによる、共有フォルダへのファイルの複写または移動を行うための入力が、クライアントPC113の入力装置240から与えられた場合である。別の例は、クライアントPC113内にローカルに保存されているファイルを、アプリケーションソフトウェアの「別名で保存」(Save as ...)メニューを介して、共有フォルダ上に保存するための入力が、クライアントPC113の入力装置240から与えられた場合である。
また、(28−2)の場合は、第2の共有フォルダに関して図14の処理が開始される。(28−2)における複写または移動も、OSにより提供されるコマンドまたはGUIによる操作であってもよいし、アプリケーションソフトウェアによる操作であってもよい。
また、(28−3)の操作は、メールユーザエージェント上での操作である。(28−3)の操作は、具体的には、例えば、「添付ファイルの保存」メニューを選択し、一つの添付ファイルを選択し、保存先として共有フォルダを選択し、「保存」ボタンをクリックする、という一連の操作を含んでもよい。
検出部213は、例えばフックを利用することにより、(28−1)〜(28−3)のいずれかの入力操作が行われたことを検出することができる。そして、検出部213は、(28−1)〜(28−3)のいずれかの入力操作を検出すると、検出した入力操作の内容を判定部214に通知する。すると、判定部214が図14の処理を開始する。
なお、図14の処理を開始するためのトリガを検出部213が検出することは、図1のステップS103からステップS107への移行に相当する。
ステップS801で判定部214は、以下の(29−1)〜(29−3)の情報を取得する。
(29−1) ユーザが共有フォルダに書き込もうとしているファイルのファイルID。
(29−2) ファイルが書き込まれようとしている共有フォルダのフルパス。
(29−3) 上記(29−2)の共有フォルダにアクセス可能なアカウントのリスト。
なお、(29−1)〜(29−3)の情報は、具体的には以下のようにして取得される。
検出部213は、(28−1)の入力操作を検出した場合、ファイルがローカルに保存されているクライアントPC113上のフルパスと、クライアントPC113のホスト名を、入力操作の内容を示す情報の一部として、判定部214に通知する。よって、判定部214は、通知されたホスト名と通知されたフルパスを検索キーとしてファイル所在テーブル402を検索することで、(29−1)のファイルIDを取得する。
あるいは、検出部213は、(28−2)の入力操作を検出した場合、第1の共有フォルダ上のファイルのフルパスを、入力操作の内容を示す情報の一部として、判定部214に通知する。よって、判定部214は、第1の共有フォルダ上のファイルのフルパス検索キーとしてファイル所在テーブル402を検索することで、(29−1)のファイルIDを取得する。
なお、図14に関する下記の説明から明らかになるとおり、かつて行われた第1の共有フォルダへのファイルの書き込みの際に、ファイル所在テーブル402にエントリが追加されている。よって、上記のようにして、判定部214が、第1の共有フォルダ上のファイルのフルパスを検索キーとしてファイル所在テーブル402を検索すると、エントリが見つかる。よって、判定部214は、ファイルIDを取得することができる。
また、検出部213は、(28−3)の入力操作を検出した場合、共有フォルダへ保存されようとしているファイルが添付された電子メールのメッセージIDと、当該ファイルのファイル名を、例えばメールユーザエージェントから取得する。そして、検出部213は、入力操作の内容を示す情報の一部として、メッセージIDとファイル名を判定部214に通知する。
すると、判定部214は、通知されたメッセージIDと通知されたファイル名を検索キーとして電子メール管理テーブル403を検索することで、(29−1)のファイルIDを取得することができる。なぜなら、かつて当該電子メールがクライアントPC113において受信されたときに、第1実施形態と同様にして図10の処理が行われているからである。そのため、電子メール管理テーブル403の検索によりエントリが見つかり、判定部214は、見つかったエントリからファイルIDを取得することができる。
そして、(29−2)のフルパス(つまり、ファイルが書き込まれようとしている共有フォルダのフルパス)も、検出部213により、入力操作の内容を示す情報の一部として判定部214に通知される。したがって、判定部214は(29−2)のフルパスも取得することができる。なお、以下では説明の便宜上、共有フォルダのフルパスは、「\\srv\shared\Z.txt」のようなUNC(Universal Naming Convention)形式で表記されるものとする。
また、判定部214は、取得した(29−2)のフルパスで識別される共有フォルダのアクセス権設定を読み取ることで、(29−3)のリストを取得する。アクセス制御の具体的方法はOSに依存するが、例えば、判定部214は、共有フォルダのプロパティから(29−3)のリストを取得してもよい。
なお、以下では説明の便宜上、(29−3)のリストは、具体的には、当該共有フォルダに関してリードパーミッションが与えられているユーザアカウントのアカウント名のリストであるものとする。また、説明の便宜上、(29−3)のリストを「アカウントリスト」という。
以上のようにして、判定部214は、ステップS801で(29−1)〜(29−3)の情報を取得する。
そして、次のステップS802で判定部214は、「警告リスト」を空に初期化する。図14の処理における警告リストも、判定部214が図1のステップS107の判定を行うために用いる情報の一例である。
また、次のステップS803で判定部214は、アカウントリスト中に、ステップS804〜S806の処理の対象としてまだ注目していないアカウント名が残っているか否かを判定する。もし未注目のアカウント名が残っていれば、処理はステップS804に移行する。逆に、すべてのアカウント名が注目済みであれば、処理はステップS807に移行する。
ステップS804で判定部214は、アカウントリスト中で未注目のアカウント名の一つに注目する。以下、ステップS804で注目されたアカウント名を「注目アカウント名」という。
そして、次のステップS805で判定部214は、注目アカウント名が、共有フォルダに書き込まれようとしているファイルに関する非第三者として登録されているか否かを判定する。具体的には、判定部214は、ステップS801で取得したファイルIDと注目アカウント名を検索キーにしてメンバテーブル401を検索する。
検索の結果、もしエントリが見つかれば、注目アカウント名は非第三者として登録済みである。よって、処理はステップS803に戻る。
逆に、検索の結果、もしエントリが見つからなければ、注目アカウント名は非第三者として登録されていない。つまり、注目アカウント名は、警告対象の第三者を表す。そこで、処理はステップS806に移行する。
ステップS806で判定部214は、注目アカウント名を警告リストに追加する。そして、処理はステップS803に戻る。
さて、アカウントリスト中のすべてのアカウント名に注目し終わると、判定部214は、警告リストが空か否かをステップS807で判定する。
警告リストが空の場合とは、すなわち、ファイルが書き込まれようとしている共有フォルダにアクセス可能なすべてのユーザが、当該ファイルについての非第三者である場合である。この場合、ファイルが共有フォルダに書き込まれても、ファイルへのアクセスを非第三者に提供することにはならない。つまり、情報漏洩のおそれはない。
したがって、判定部214は、非第三者への情報漏洩がないことを許可部223と登録部212に通知し、処理はステップS808に移行する。なお、ステップS807からステップS808への移行は、図1のステップS107からステップS105へのリンクに対応する。
逆に、警告リストが非空の場合とは、共有フォルダへのファイルの書き込みにより、ファイルが第三者からアクセス可能になってしまう場合である。つまり、警告リストが非空の場合、情報漏洩のおそれがある。
そこで、判定部214は警告リストを警告部221に出力し、処理はステップS809に移行する。なお、ステップS807からステップS809への移行は、図1のステップS107からステップS108へのリンクに対応する。
さて、ステップS808では、許可部223が、共有フォルダへのファイルの書き込みを許可する。つまり、許可部223は、検出部213が検出した操作(具体的には、(28−1)〜(28−3)のいずれかの操作)に応じた書き込みを許可する。
また、ステップS808では、登録部212が、(29−1)のファイルIDと、共有フォルダ上に書き込まれたファイルのフルパスを、判定部214から受け取る。そして、登録部212は、受け取ったファイルIDとフルパスのペアを、ファイル所在テーブル402に登録する。
なお、(29−1)のファイルIDを取得するために使う情報の一部として、上記のとおり、判定部214は、書き込み対象のファイルのファイル名か、または、当該ファイル名を含むフルパス(つまり、元の所在のフルパス)を検出部213から受け取っている。したがって、判定部214は、書き込み対象のファイルのファイル名を認識することができる。
よって、判定部214は、ステップS801で取得した(29−2)の共有フォルダのフルパスに、パスのデリミタである「\」とファイル名とを連結する(concatenate)ことにより、共有フォルダ上に書き込まれたファイルのフルパスを取得することができる。登録部212は、判定部214が以上のようにして取得したフルパスを、判定部214から受け取る。
そして、登録部212は、(29−1)のファイルIDと、共有フォルダ上のファイルのフルパスとを対応づける新たなエントリを、ファイル所在テーブル402に追加する。それにより、登録部212は、ファイルの新たな所在情報を、ファイル所在テーブル402に登録する。そして、図14の処理は終了する。
他方、ステップS809では、警告部221が、判定部214から受け取った警告リストにしたがって警告を発する。例えば、警告リストに2個のアカウント名が含まれる場合、警告部221は、以下の(30−1)〜(30−3)を含むダイアログをクライアントPC113の画面に表示してもよい。
(30−1) 「以下の2個のアカウント名のユーザは、この共有フォルダにアクセス可能ですが、非第三者として登録されていません。これら2名の第三者ユーザへの情報漏洩のおそれがありますが、本当にこのファイルをこの共有フォルダに書き込んでも構いませんか?」のような警告メッセージ。
(30−2) 警告リストに含まれる2個のアカウント名。
(30−3) 警告メッセージに対する入力を受け付けるための、「はい」ボタンと「いいえ」ボタン。
なお、(30−1)〜(30−3)に例示したダイアログは、警告のためのGUIの一例に過ぎない。他のGUIが使われてもよい。もちろん、警告部221は、音声的な警告を発してもよい。
また、警告部221は、警告を発するだけでなく、警告に対する入力を入力装置240から受け付けるように入力受付部222に命令する。すると、ステップS809で入力受付部222は入力装置240からの入力(例えば、(30−3)の例では、「はい」ボタンまたは「いいえ」ボタンのクリック)を待つ。
警告に対する入力を入力受付部222が入力装置240から受け付けると、処理はステップS810に移行する。そして、ステップS810で入力受付部222は、受け付けた入力が、許可入力なのか、それとも禁止入力なのかを判断する。
禁止入力を入力受付部222が受け付けた場合、入力受付部222は禁止部224に通知を送る。そして、処理はステップS811に移行する。
逆に、許可入力を入力受付部222が受け付けた場合、入力受付部222は、非第三者への情報漏洩がないことを許可部223と登録部212に通知する。そして、処理はステップS812に移行する。
ステップS811で禁止部224は、共有フォルダへのファイルの書き込みをやめる。つまり、禁止部224は、OSまたはアプリケーションソフトウェアを介した共有フォルダへのファイルの書き込みを禁止する。具体的には、禁止部224は、例えば、OSまたはアプリケーションソフトウェアに対してユーザから与えられた入力をキャンセルすることで、共有フォルダへのファイルの書き込みを禁止してもよい。そして、図14の処理は終了する。なお、メールユーザエージェントも、もちろんアプリケーションソフトウェアの一例である。
他方、ステップS812で登録部212は、判定部214から、(29−1)のファイルIDと、警告リストを取得する。そして、登録部212は、警告リスト中の各アカウント名を非第三者として登録する。つまり、登録部212は、警告リスト中の各アカウント名について、判定部214から受け取ったファイルIDと、当該アカウント名とを対応づけるエントリをメンバテーブル401に追加する。
そして、メンバテーブル401の更新後、処理はステップS808に移行する。なお、ステップS812でのメンバテーブル401への新たな非第三者の登録は、図1のステップS111での登録の具体例である。
以上の図14の処理によれば、「ユーザの不注意により、非第三者がアクセス可能な共有フォルダにファイルが書き込まれ、その結果、情報が漏洩してしまう」という事態が防止される。また、図14の処理によれば、非第三者からしかアクセス可能でない共有フォルダへのファイルの書き込みに関しては何の警告も発せられない。よって、「過剰な警告発生によりユーザの作業効率が落ちる」といった事態も回避される。
ところで、上記のとおり第2実施形態では、第1実施形態と同様の処理も行われる。以下では、第1実施形態と同様の処理と図14の処理が、ある順序で行われた場合の、管理DB400の具体例について、図15を参照して説明する。
図15は、管理DB400の例を示す図である。管理DB400の具体例として、図15には管理DB400fと400gが例示されている。管理DB400fは、具体的には次の(31−1)〜(31−7)に説明する場合の例である。
(31−1) ファイルサーバ115のホスト名が「srv」であるものとする。また、ファイルサーバ115上には、「\\srv\shared」というフルパスで示される共有フォルダが存在するものとする。
(31−2) 「\\srv\shared」という共有フォルダのリードパーミッションは、「name_A」、「name_B」、および「name_D」という3個のアカウント名でそれぞれ識別されるユーザアカウントに対して与えられているとする。なお、「name_A」、「name_B」、および「name_D」というアカウント名は、それぞれ、クライアントPC112、113、および114のユーザのアカウント名であるものとする。
(31−3) 管理DB400が図8の管理DB400eの状態のときに、クライアントPC112のユーザが、「F000103」というファイルIDで識別されるファイルを「\\srv\shared」という共有フォルダに書き込むための操作を行ったとする。なお、管理DB400e内のファイル所在テーブル402eに示すとおり、「PC_A」というホスト名のクライアントPC112には、「F000103」というファイルIDで識別されるファイルが、ローカルに保存されている。
(31−4) クライアントPC112の検出部213が(31−3)の操作を検出し、クライアントPC112の判定部214が図14の処理を開始する。すると、図8の管理DB400eと(31−2)より、警告リストには「name_D」というアカウント名が追加され、ステップS809で警告が出される。
(31−5) 警告に対し、クライアントPC112のユーザが許可を与えたとする。
(31−6) 上記(31−5)の入力の結果、ステップS812では、「F000103」というファイルIDと「name_D」というアカウント名を対応づけるエントリがメンバテーブル401に追加される。
(31−7) ステップS812に続くステップS808では、「F000103」というファイルIDと、「\\srv\shared\Z.txt」というフルパスで表される所在情報を対応づけるエントリが、ファイル所在テーブル402に追加される。そして、図14の処理が終了する。
以上の(31−1)〜(31−7)に説明した場合に、管理DB400は、図8の管理DB400eの状態から、図15の管理DB400fの状態へと変化する。
なお、図8のファイル所在テーブル402eに示すとおり、「PC_B」というホスト名のクライアントPC113にも、「F000103」というファイルIDで識別されるファイルがローカルに保存されている。よって、クライアントPC112ではなくクライアントPC113から上記共有フォルダに上記ファイルが書き込まれようとした場合にも、(31−4)〜(31−7)と同様にして、管理DB400は、管理DB400eの状態から管理DB400fの状態へと変化する。
また、図15の管理DB400gは、具体的には、次の(32−1)〜(32−6)に説明する場合の例である。
(32−1) 上記(31−1)〜(31−2)の想定が成り立つとする。
(32−2) 管理DB400が図15の管理DB400fの状態のときに、クライアントPC114のユーザが、「\\srv\shared\Z.txt」というフルパスで示されるファイルを、クライアントPC114に複写するための操作を行ったとする。具体的には、複写先のクライアントPC114内でのフルパスが「C:\path_D\Z_copy.txt」だとする。
(32−3) 第1実施形態では、ある1台のホストの内部でローカルに行われる複写、移動または変名をトリガとして、図12の処理が実行される。第2実施形態では、第1実施形態と同様の操作が図12の処理を開始するトリガとなるだけでなく、複写、移動、または変名の操作によって行われる、共有フォルダからローカルな記憶装置上へのファイルの書き込みも、図12の処理を開始するトリガとなる。したがって、(32−2)の複写により、図12の処理が開始される。
(32−4) 上記(32−2)において、複写のための指示の入力は、クライアントPC114に与えられる。よって、図12のステップS601では、クライアントPC114のホスト名である「PC_D」が取得される。また、(32−2)より、ステップS601では、複写先のフルパスとして「C:\path_D\Z_copy.txt」が取得される。
(32−5) 上記(32−2)と図15のファイル所在テーブル402fより、ステップS601では、複写されるファイルのファイルIDとして「F000103」が取得される。
(32−6) 上記(32−4)と(32−5)より、ステップS604では、「PC_D」というホスト名と「C:\path_D\Z_copy.txt」というフルパスのペアで示される新たな所在情報が、「F000103」というファイルIDと対応づけられる。つまり、ファイルIDと新たな所在情報を対応づける新たなエントリがファイル所在テーブル402に追加される。
以上の(32−1)〜(32−6)に説明した場合に、管理DB400は、図15の管理DB400fの状態から、管理DB400gの状態へと変化する。
なお、第2実施形態では、(32−3)に示した場合だけでなく、共有フォルダ上のファイルが当該共有フォルダ内において変名される場合にも、図12の処理が開始される。さらに、第2実施形態では、共有フォルダ上のファイルが他の共有フォルダに複写または移動される場合にも、図12の処理が開始される。
以上説明した第2実施形態によれば、第1実施形態と同様の効果が得られる。すなわち、電子メールを用いた情報のやりとりに関しては、管理サーバ117が管理するLAN110の内部か外部かを問わずに、第三者と非第三者が区別される。そして、非第三者に情報が漏洩するおそれがある場合は、警告が出される。
さらに、第2実施形態では、LAN110の内部での共有フォルダを介しての情報のやりとりに関しても、共有フォルダにアクセス可能なLAN110内部のユーザが、第三者なのか非第三者なのか、ということが区別される。そして、共有フォルダを介してLAN110内部の第三者に情報が漏洩するおそれがある場合は、警告が出される。よって、第2実施形態では、第1実施形態よりも一層すぐれた情報保護が達成される。
続いて、図16〜19を参照して、うっかりミスによる情報漏洩が起きやすいファイルに監視対象を絞り込むことで処理負荷を減らす第3実施形態について説明する。
なお、第3実施形態では、図3のシステム200がスタンドアロンシステムとして実現される。すなわち、図2の管理サーバ117は、第3実施形態では不要である。また、図2のクライアントPC112〜114のそれぞれが、図3のシステム200を含む。
以下では説明の便宜上、主にクライアントPC112内のシステム200の動作について説明する。しかし、クライアントPC113と114においても、クライアントPC112と同様の処理が行われる。
第1実施形態と第2実施形態のいずれにおいても、うっかりミスによる情報漏洩が防止可能である。しかし、第1実施形態と第2実施形態では、管理サーバ117の処理負荷も、クライアントPC112〜114の処理負荷も、比較的高い。理由は以下の(33−1)〜(33−7)のとおりである。
(33−1) 第1実施形態と第2実施形態のいずれにおいても、ローカルにファイルが生成されるたびに、図5の処理が行われる。
(33−2) 第1実施形態と第2実施形態のいずれにおいても、ファイルが添付された電子メールが受信されるたびに、図10の処理が行われる。
(33−3) 第1実施形態と第2実施形態のいずれにおいても、添付ファイルがローカルに保存されるたびに、図11の処理が行われる。
(33−4) 第1実施形態と第2実施形態のいずれにおいても、あるホスト内でローカルにファイルが複写、移動、または変名されるたびに、図12の処理が行われる。
(33−5) 第2実施形態では、さらに、共有フォルダからローカルな記憶装置上へファイルが複写または移動されるたびに、図12の処理が行われる。
(33−6) 第2実施形態では、さらに、共有フォルダ上のファイルが当該共有フォルダ内において変名されるたびに、図12の処理が行われる。
(33−7) 第2実施形態では、さらに、二つの共有フォルダ間でファイルが複写または移動されるたびに、図12の処理が行われる。
しかしながら、例えばクライアントPC112内でローカルに生成されたファイルは、クライアントPC112のユーザがクライアントPC112内でローカルに参照するだけかもしれない。つまり、生成されたすべてのファイルが、クライアントPC112から送信される電子メールに添付されたり、共有フォルダに複写されたりするとは限らない。
また、クライアントPC112のユーザは、受信電子メールの添付ファイルをただ読むだけかもしれない。つまり、ファイルの添付されたすべての電子メールが転送されるわけではない。また、添付ファイルは、必ずしも、編集されて(あるいは編集されずにそのまま)別の電子メールに添付されて誰かに送信される、というわけでもない。
そして、共有フォルダからクライアントPC112に複写または移動されたファイルは、必ずしも、その後で別の共有フォルダに複写または移動されるとは限らないし、電子メールに添付されて誰かに送信されるとも限らない。
したがって、第1実施形態と第2実施形態では、不注意による情報漏洩が確実に防止される一方で、クライアントPC112内から外部へ出て行かないファイルに関しても、図5、10、11、および12の処理が行われる。したがって、クライアントPC112と管理サーバ117には、これらの処理の負荷がかかる。
もちろん、個々のファイルがクライアントPC112内から外部へ出て行く可能性があるか否かは、事前には分からない。よって、第1実施形態と第2実施形態では、不注意による情報漏洩を確実に防止するために、上記のように図5、10、11、および12の処理が行われる。つまり、第1実施形態と第2実施形態では、ローカルに生成されるすべてのファイルが監視対象であり、電子メールまたは共有フォルダを介してローカルに保存されるすべてのファイルが監視対象である。
他方、何らかの理由から、クライアントPC112〜114および管理サーバ117の処理負荷を軽減することが望まれる場合もあり得る。そこで、第3実施形態では、処理負荷の軽減のために、監視対象のファイルが絞り込まれる。
具体的には、第3実施形態での監視対象は、うっかりミスによる情報漏洩が起きやすいと想定されるファイルだけに絞り込まれる。換言すれば、第3実施形態では、情報漏洩の危険性の高いファイルが監視され、情報漏洩の危険性の低いファイルは監視されない。
一般に、ユーザは、自ら作成したファイルについては、内容をよく承知していると想定される。したがって、ユーザは、自ら作成したファイルについては、誰が非第三者で誰が第三者かを、よく承知していると想定される。すると、ユーザが、自ら作成したファイルを不注意から非第三者に漏洩してしまうおそれは、比較的低い。
他方で、ユーザは、他のユーザが作成したファイルについては、内容をよく承知しているとは限らず、ファイルに含まれる情報の重要性に気づいていないかもしれない。ファイルの内容をよく承知していなければ、ユーザは、誰が非第三者で誰が第三者なのかを的確に認識することができないかもしれない。その結果、ユーザは、不注意による情報漏洩を引き起こすおそれがある。
つまり、あるユーザにとって、うっかりミスによる情報漏洩が起きやすいと想定されるファイルとは、当該ユーザ自身が作成したファイル以外のファイルである。そこで、第3実施形態では、監視対象のファイルが、うっかりミスによる情報漏洩が起きやすいと想定されるファイルのみに絞り込まれる。
なお、上記のとおり第3実施形態のシステム200はスタンドアロンシステムであり、例えば1台のコンピュータ300上に実装される。よって、うっかりミスによる情報漏洩が起きやすいと想定されるファイルとは、換言すれば、システム200が実装されるコンピュータ300の外部で生成されて、ネットワーク311を介してコンピュータ300にもたらされたファイルである。以下では説明の便宜上、このように外部に起源を持っており(externally originating)、外部からもたらされたファイルを、「外来(foreign)ファイル」ということにする。
ところで、外来ファイルの定義より、外来ファイルの生成元を示す情報は、当然、システム200が実装されるコンピュータ300を識別する情報(例えば、IPアドレス)ではない。また、外来ファイルの生成元を示す情報は、当然、コンピュータ300のユーザを識別する情報(例えば、電子メールアドレスまたはアカウント名)でもない。
それでは外来ファイルの生成元は具体的にはどのような情報で表されるのかと言えば、外来ファイルの生成元に応じて、生成元を示す情報の種別は様々である。また、生成元を示す情報は、非第三者を示す情報(つまり図2の非第三者識別情報232)としても使われる。
そこで、次に図16を参照して、第3実施形態において図3のファイル識別情報231と非第三者識別情報232として使われる情報の具体例を説明する。図16に示す外来ファイル管理テーブル404は、第3実施形態において、第1〜2実施形態の管理DB400の代わりに利用されるテーブルである。
そして、外来ファイル管理テーブル404の各エントリは、ファイルと非第三者とを対応づけている。具体的には、外来ファイル管理テーブル404の各エントリは、「ファイル」、「属性種別」、および「属性値」という3個のフィールドを含む。
「ファイル」フィールドは、ファイルのフルパスを示す。第3実施形態では図3のシステム200がスタンドアロンシステムなので、システム200が実装される1台のホスト(例えばクライアントPC112)内の個々のファイルは、当該ファイルのフルパスにより一意に識別可能である。つまり、「ファイル」フィールドのフルパスは、図3のファイル識別情報231の具体例である。
「属性種別」フィールドは、「属性値」フィールドの値の種別を示す。そして、「属性値」フィールドが非第三者を示す。つまり、「属性値」フィールドの値は図3の非第三者識別情報232の具体例である。
上記のとおり、第3実施形態では、生成元に応じて、生成元を示す情報の種別は様々である。同様に、生成元以外の非第三者を示す情報の種類も、第3実施形態では様々である。よって、外来ファイル管理テーブル404では、「属性値」フィールドに登録されている非第三者識別情報232がどのような種類の情報なのかということが、「属性種別」フィールドにより示される。
具体例として、図16には外来ファイル管理テーブル404の6つのエントリが例示されている。
1番目のエントリは、「C:\path_A1\Z1.txt」というフルパスで識別されるファイルの非第三者が、「b@foo.com」という電子メールアドレスで識別されることを示す。
つまり、1番目のエントリで示されるファイルは、上記電子メールアドレスで識別されるユーザと、外来ファイル管理テーブル404を記憶しているホストのユーザとの間で、電子メールを介してやりとりされる。したがって、1番目のエントリの「属性種別」フィールドには、「電子メール」という値が記憶されている。
2番目のエントリは、「C:\path_A2\Z2.txt」というフルパスで識別されるファイルの非第三者が、「\\srv\shared_X\」というUNC形式のフルパスで識別されることを示す。つまり、2番目のエントリによれば、「\\srv\shared_X\」というフルパスで識別される共有フォルダにアクセス可能なすべてのユーザが、「C:\path_A2\Z2.txt」というフルパスで識別されるファイルの非第三者である。
また、2番目のエントリで示されるファイルは、上記共有フォルダにアクセス可能なユーザと、外来ファイル管理テーブル404を記憶しているホストのユーザとの間で、上記共有フォルダを介してやりとりされる。そして、共有フォルダを介したファイルのやりとりは、具体的には、共有フォルダと、外来ファイル管理テーブル404を記憶しているホストのローカルな記憶装置との間での、ファイルの複写、移動、または変名の操作により、実現される。したがって、2番目のエントリの「属性種別」フィールドには、「複写/移動/変名」という値が記憶されている。
3番目のエントリは、「C:\path_A3\Z3.txt」というフルパスで識別されるファイルの非第三者が、「123−456−7890」という識別情報で識別されることを示す。なお、図16の例では、この「123−456−7890」という識別情報は、例えばUSBメモリなどの記憶媒体を識別する情報であるものとする。
一部の記憶媒体には、当該記憶媒体を一意に識別する識別情報が割り当てられており、割り当てられた識別情報は、当該記憶媒体自体に記憶されている。そして、識別情報は、例えばOSにより提供されるシステムツールなどを介して、読み取ることが可能である。
例えば、ある種のUSBメモリの識別情報は、ベンダIDとプロダクトIDとシリアル番号の組み合わせである。そして、この識別情報は、システムツールを介して、「PnP(Plug and Play)デバイスID」として読み取ることが可能である。
そして、3番目のエントリでは、上記のように、記憶媒体の識別情報により非第三者が示される。換言すれば、3番目のエントリによれば、当該記憶媒体を正当に入手することが想定されているユーザは、すべて非第三者である。
また、3番目のエントリのファイルは、非第三者間で、当該記憶媒体を介してやりとりされる。そして、記憶媒体を介したファイルのやりとりは、具体的には、記憶媒体と、外来ファイル管理テーブル404を記憶しているホストのローカルな記憶装置との間での、ファイルの複写、移動、または変名の操作により、実現される。したがって、3番目のエントリの「属性種別」フィールドにも、「複写/移動/変名」という値が記憶されている。
4番目のエントリは、「C:\path_A4\Z4.txt」というフルパスで識別されるファイルの非第三者が、「ftp.abcd.org」というFQDNで識別されることを示す。なお、図16の例では、この「ftp.abcd.org」というFQDNにより識別されるホストが、具体的には図2のFTPサーバ123であるものとする。
このように、4番目のエントリでは、FTPサーバ123を識別するFQDNにより非第三者が示される。換言すれば、4番目のエントリによれば、FTPサーバ123にアクセス可能なユーザ(つまり、少なくとも、FTPサーバ123からファイルをダウンロードする権限があるユーザ)は、すべて非第三者である。
そして、4番目のエントリで示されるファイルは、FTPサーバ123にアクセス可能なユーザと、外来ファイル管理テーブル404を記憶しているホスト(例えばクライアントPC112)のユーザとの間で、FTPサーバ123を介してやりとりされる。したがって、4番目のエントリの「属性種別」フィールドには、「FTP」という値が記憶されている。
5番目のエントリは、「C:\path_A5\Z5.txt」というフルパスで識別されるファイルの非第三者が、「www.efgh.com」というFQDNで識別されることを示す。なお、図16の例では、この「www.efgh.com」というFQDNにより識別されるホストが、具体的には図2のHTTPサーバ122であるものとする。
このように、5番目のエントリでは、HTTPサーバ122を識別するFQDNにより非第三者が示される。換言すれば、HTTPサーバ122にアクセス可能なユーザ(つまり、少なくとも、HTTPサーバ122からファイルをダウンロードする権限があるユーザ)は、すべて非第三者である。
そして、5番目のエントリで示されるファイルは、HTTPサーバ122にアクセス可能なユーザと、外来ファイル管理テーブル404を記憶しているホスト(例えばクライアントPC112)のユーザとの間で、HTTPサーバ122を介してやりとりされる。したがって、5番目のエントリの「属性種別」フィールドには、「HTTP」という値が記憶されている。
6番目のエントリは、「C:\path_A1\Z1.txt」というフルパスで識別されるファイルの非第三者が、「\\srv\shared_Y\」というUNC形式のフルパスで識別されることを示す。そして、2番目のエントリと同様に6番目のエントリでも、「属性値」フィールドが共有フォルダのフルパスを示すので、「属性種別」フィールドの値は「複写/移動/変名」である。
ここで、6番目と1番目のエントリの「ファイル」フィールドのフルパスは同じである。よって、「b@foo.com」という電子メールアドレスのユーザだけでなく、「\\srv\shared_Y\」という共有フォルダにアクセス可能なすべてのユーザも、「C:\path_A1\Z1.txt」というファイルの非第三者である。
このように、ある一つのファイルに関する複数の非第三者が異なる属性値で識別される場合、外来ファイル管理テーブル404には、「ファイル」フィールドの値が等しい複数のエントリが含まれる。
なお、4番目と5番目のエントリでは、非第三者識別情報232としてFQDNが利用されている。しかし、もちろん、FQDNの代わりにIPアドレスが利用されてもよい。あるいは、FTPサーバ123において、フォルダごとにアクセス権設定が異なる場合には、「ftp.abcd.org/aa/bb/」のように、FQDNにFTPサーバ123内のパスを連結した情報が利用されてもよい。HTTPサーバ122に関しても同様である。
続いて、第3実施形態で行われる処理について、図17〜19を参照して説明する。なお、便宜上、図2のクライアントPC112内に実装された図3のシステム200の動作について説明するが、クライアントPC113と114に関しても同様である。
図17は、外来ファイル登録処理のフローチャートである。図17の処理は図1のステップS101の処理の具体例である。
図17の処理は、具体的には、クライアントPC112上に外来ファイルが保存されたときに実行される。例えば、下記(34−1)〜(34−5)のいずれかの場合に図17の処理が実行される。
(34−1) 電子メールの添付ファイルがクライアントPC112に保存された場合。
(34−2) 複写、移動、または変名の操作により、ファイルサーバ115などにある共有フォルダから、クライアントPC112に、ファイルが書き込まれた場合。
(34−3) クライアントPC112としてのコンピュータ300の駆動装置308に記憶媒体310がセットされ、複写、移動、または変名の操作により、記憶媒体310から記憶装置307にファイルが書き込まれた場合。
(34−4) HTTPサーバ122からクライアントPC112にファイルがダウンロードされた場合。
(34−5) FTPサーバ123からクライアントPC112にファイルがダウンロードされた場合。
より具体的には、(34−1)の場合は、第1実施形態における図11の処理を開始するためのトリガとして添付ファイル保存操作を検出部213が検出するのと同様にして、生成元認識部211が、図17の処理を開始するためのトリガを検出する。例えば、生成元認識部211は、図11に関して説明した(18−1)〜(18−4)のような一連の操作を含む添付ファイル保存操作を検出すると、図17の処理を開始する。
なお、複数の添付ファイルが保存対象としてユーザから同時に指定されることもある。すなわち、(18−2)において1<Lの場合もある。その場合、保存される各添付ファイルについて、図17の処理が行われる。
また、(34−2)の場合は、図15の管理DB400gに関して(32−3)に説明した検出部213による検出と同様にして、図17の処理を開始するためのトリガを生成元認識部211が検出する。すなわち、生成元認識部211は、共有フォルダからクライアントPC112へのファイルの書き込み(つまり、複写、移動、または変名の操作によって行われる、ファイルの書き込み)を検出すると、図17の処理を開始する。
なお、複数のファイルを同時に共有フォルダからクライアントPC112へ書き込むための操作をユーザが行うこともある。その場合、書き込まれる各ファイルについて、図17の処理が行われる。
また、(34−3)の場合は、記憶媒体310からクライアントPC112の記憶装置307へのファイルの書き込みを生成元認識部211が検出する。つまり、生成元認識部211は、複写、移動、または変名のためのコマンドやAPI関数の呼び出しをフックするなどの方法により、記憶媒体310から記憶装置307へのファイルの書き込みを検出する。そして、生成元認識部211は、記憶媒体310からのファイルの書き込みを検出すると、図17の処理を開始する。
なお、複数のファイルを同時に記憶媒体310からクライアントPC112へ書き込むための操作をユーザが行うこともある。その場合、書き込まれる各ファイルについて、図17の処理が行われる。
また、(34−4)の場合は、HTTPサーバ122からクライアントPC112へのファイルのダウンロードを、生成元認識部211が検出する。そして、生成元認識部211は、ファイルがダウンロードされたことを検出すると、図17の処理を開始する。
例えば、生成元認識部211は、クライアントPC112上で動作するHTTPクライアントソフトウェア(例えばウェブブラウザなど)の動作を監視し、HTTPサーバ122からのHTTPによるファイルのダウンロードを検出してもよい。なお、複数のファイルを同時にダウンロードするための操作をユーザが行うこともある。その場合、ダウンロードされる各ファイルについて、図17の処理が行われる。
また、(34−5)の場合は、FTPサーバ123からクライアントPC112へのファイルのダウンロードを、生成元認識部211が検出する。生成元認識部211は、ファイルがダウンロードされたことを検出すると、図17の処理を開始する。
例えば、生成元認識部211は、クライアントPC112上で動作するFTPクライアントソフトウェアの動作を監視し、FTPサーバ123からのFTPによるファイルのダウンロードを検出してもよい。なお、複数のファイルを同時にダウンロードするための操作をユーザが行うこともある。その場合、ダウンロードされる各ファイルについて、図17の処理が行われる。
さて、以上のようにして図17の処理が開始されると、ステップS901で生成元認識部211は、次の(35−1)と(35−2)の情報を取得する。
(35−1) クライアントPC112のローカルな記憶装置307上の、ファイルの保存先のフルパス。
(35−2) 外来ファイルの生成元を表す外部生成元情報。
例えば、(34−1)の場合、生成元認識部211は、メールユーザエージェント上で行われる添付ファイル保存操作をフックすることで、図17の処理を開始するためのトリガを検出してもよい。
そして、生成元認識部211は、メールユーザエージェントに対上でユーザが行った入力操作の内容から、(35−1)のフルパスを取得してもよい。また、生成元認識部211は、保存されるファイルが添付されていた電子メールの「From」ヘッダフィールドから、(35−2)の外部生成元情報として、送信元電子メールアドレスを取得する。さらに、生成元認識部211は、属性種別が「電子メール」であることを認識する。
また、複写、移動、または変名の操作によるファイルの書き込みは、(23−1)〜(23−7)に例示したように、具体的には、OSにより提供されるコマンド、OSにより提供されるGUI、またはアプリケーションソフトウェアを介して行われる。
よって、(34−2)の場合、生成元認識部211は、例えばコマンドの呼び出しやAPI関数の呼び出しをフックすることで、ファイルの複写、移動または変名のための操作を検出してもよい。そして、生成元認識部211は、複写、移動または変名のためのコマンドまたはAPI関数の引数から、(35−1)のクライアントPC112上のフルパスと、(35−2)の外部生成元情報としての、共有フォルダのフルパスを取得する。さらに、生成元認識部211は、属性種別が「複写/移動/変名」であることを認識する。
同様に、(34−3)の場合も、生成元認識部211は、例えばコマンドの呼び出しやAPI関数の呼び出しをフックすることで、ファイルの複写、移動または変名のための操作を検出してもよい。そして、生成元認識部211は、複写、移動または変名のためのコマンドまたはAPI関数の引数から、(35−1)のクライアントPC112上のフルパスを取得する。
また、生成元認識部211は、上記コマンドまたはAPI関数の引数から、ファイルが記憶媒体310からクライアントPC112へと書き込まれることを認識する。よって、生成元認識部211は、(35−2)の外部生成元情報としての、記憶媒体310の識別番号(例えばPnPデバイスID)を、OSにより提供されるシステムツールなどを利用して読み出す。また、生成元認識部211は、属性種別が「複写/移動/変名」であることを認識する。
そして、(34−4)の場合、生成元認識部211は、例えば、HTTPクライアントソフトウェアの動作を監視することにより、ユーザがHTTPクライアントソフトウェアに対して指示した内容を取得してもよい。つまり、生成元認識部211は、ユーザがHTTPクライアントソフトウェアに対して指示した、ファイルのダウンロード先のフルパスを、(35−1)のフルパスとして取得してもよい。なお、HTTPクライアントソフトウェアの動作の監視は、具体的には、HTTPクライアントソフトウェアからのAPI関数呼び出しを生成元認識部211がフックすることによって実現されてもよい。
また、生成元認識部211は、ユーザがHTTPクライアントソフトウェアに対してダウンロードするよう指示したファイルのURI(Uniform Resource Identifier)から、当該ファイルを記憶しているHTTPサーバ122のFQDNを抽出してもよい。抽出されたFQDNは、(35−2)の外部生成元情報として使われる。また、生成元認識部211は、属性種別が「HTTP」であることを認識する。
そして、(34−5)の場合、生成元認識部211は、例えば、FTPクライアントソフトウェアの動作を監視することにより、ユーザがFTPクライアントソフトウェアに対して指示した内容を取得してもよい。つまり、生成元認識部211は、ユーザがFTPクライアントソフトウェアに対して指示した、ファイルのダウンロード先のフルパスを、(35−1)のフルパスとして取得してもよい。なお、FTPクライアントソフトウェアの動作の監視は、具体的には、FTPクライアントソフトウェアからのAPI関数呼び出しを生成元認識部211がフックすることによって実現されてもよい。
また、生成元認識部211は、ユーザがFTTPクライアントソフトウェアに対してダウンロードするよう指示したファイルのURIから、当該ファイルを記憶しているFTPサーバ123のFQDNを抽出してもよい。抽出されたFQDNは、(35−2)の外部生成元情報として使われる。また、生成元認識部211は、属性種別が「FTP」であることを認識する。
以上のようにして、(34−1)〜(34−5)のいずれの場合も、生成元認識部211は、ステップS901で、(35−1)のフルパスと(35−2)の外部生成元情報を取得する。また、上記のとおり、生成元認識部211は、属性種別も認識する。そして、生成元認識部211は、取得した(35−1)のフルパスと、取得した(35−2)の外部生成元情報、認識した属性種別を、登録部212に通知する。
すると、次のステップS902で登録部212は、ステップS901で生成元認識部211が取得した情報が外来ファイル管理テーブル404に登録済みか否かを判断する。つまり、登録部212は、外来ファイル管理テーブル404において、「ファイル」フィールドの値が(35−1)のフルパスであり「属性値」フィールドの値が(35−2)の外部生成元情報であるエントリを検索する。
検索の結果、エントリが見つかれば、ステップS901で取得された情報は外来ファイル管理テーブル404に登録済みである。よって、図17の処理は終了する。
逆に、検索の結果、エントリが見つからなければ、ステップS901で取得された情報は外来ファイル管理テーブル404にまだ登録されていない。よって、処理はステップS903に移行する。
ステップS903で登録部212は、外部生成元情報を、ファイル保存先のフルパス、および属性種別と対応づけて、外来ファイル管理テーブル404に登録する。つまり、登録部212は、外来ファイル管理テーブル404に新たなエントリを追加する。登録部212は、当該新たなエントリにおいて、「ファイル」フィールドに(35−1)のフルパスを設定し、「属性種別」フィールドに生成元認識部211から通知された属性種別の値を設定し、「属性値」フィールドに(35−2)の外部生成元情報を設定する。そして、図17の処理は終了する。
続いて、図18を参照して、ファイルがリモートに出力されようとするときに行われる出力確認処理について説明する。図18の処理は、図1のステップS103〜S111の処理の具体例に相当する。
ここで、上記と同様に、図2のクライアントPC112上に図3のシステム200が実装される場合を例に説明する。すると、ファイルがリモートに出力されようとする場合とは、具体的には、例えば以下の(36−1)〜(36−5)のいずれかの場合である。よって、(36−1)〜(36−5)のいずれかの場合に、図18の処理が開始される。
(36−1) クライアントPC112内にローカルに保存されている1個以上のファイルが、電子メールに添付され、当該電子メールがクライアントPC112から送信されようとする場合。
(36−2) クライアントPC112内にローカルに保存されている1個以上のファイルが、複写、移動、または変名の操作により、ファイルサーバ115などにある共有フォルダに書き込まれようとする場合。
(36−3) クライアントPC112内にローカルに保存されている1個以上のファイルが、複写、移動、または変名の操作により、記憶媒体310に書き込まれようとする場合。
(36−4) クライアントPC112内にローカルに保存されている1個以上のファイルが、HTTPサーバ122にアップロードされようとする場合。
(36−5) クライアントPC112内にローカルに保存されている1個以上のファイルが、FTPサーバ123にアップロードされようとする場合。
例えば、(36−1)の場合は、図9の処理が開始される場合と同様にして、図18の処理が開始される。具体的には、クライアントPC112のユーザがメールユーザエージェント上で、「送信」ボタンをクリックするなどの、電子メールの送信のための入力操作を行うと、クライアントPC112上のシステム200における検出部213は、当該入力操作を検出する。
そして、検出部213は、電子メールを送信するための入力操作を検出すると、検出した入力操作の内容を示す情報を判定部214に通知する。すると、判定部214は、送信されようとする電子メールにファイルが添付されているか否かを判定する。もしファイルが1個以上添付されていれば、判定部214は図18の処理を開始する。
また、(36−2)の場合は、図14の処理が開始される場合と同様にして、図18の処理が開始される。つまり、クライアントPC112において、共有フォルダへのファイルの書き込みのための入力操作をユーザが行うと、検出部213は当該入力操作を検出する。
なお、図14の処理が開始される場合として例示した(28−1)〜(28−3)は、クライアントPC113に関する例である。しかし、もちろん、クライアントPC112の検出部213は、クライアントPC112における(28−1)〜(28−3)と同様の入力操作を、検出することができる。
そして、検出部213は、共有フォルダへファイルを書き込むための入力操作を検出すると、検出した入力操作の内容を示す情報を判定部214に通知する。すると、判定部214が図18の処理を開始する。
また、検出部213は、(36−3)の場合も(36−2)の場合と類似の方法により、ファイルを記憶媒体310に書き込むための入力操作を検出することができる。つまり、検出部213は、複写、移動、または変名のためのコマンドやAPI関数の呼び出しをフックするなどの方法により、クライアントPC112の記憶装置307から記憶媒体310へのファイルの書き込みのための入力操作を検出する。
そして、検出部213は、記憶媒体310へファイルを書き込むための入力操作を検出すると、検出した入力操作の内容を示す情報を判定部214に通知する。すると、判定部214が図18の処理を開始する。
また、(36−4)の場合、検出部213は、クライアントPC112上で動作するHTTPクライアントソフトウェアの動作を監視することで、HTTPサーバ122へファイルをアップロードするための入力操作を検出してもよい。
例えば、ファイルをアップロードするために、ユーザは、「アップロード」ボタンをクリックし、ダイアログを介してファイルの所在を指定し、「OK」ボタンをクリックする、という一連の入力操作を行うかもしれない。検出部213は、HTTPクライアントソフトウェアの動作を監視して、これらの一連の入力操作が行われたことを検出してもよい。例えば、検出部213は、POSTメソッドまたはPUTメソッドを指定したHTTP要求を生成するためのAPI関数の呼び出しをフックすることで、上記の入力操作を検出してもよい。
そして、検出部213は、ファイルをHTTPサーバ122にアップロードするための入力操作を検出すると、検出した入力操作の内容を示す情報を判定部214に通知する。すると、判定部214が図18の処理を開始する。
また、(36−5)の場合、検出部213は、クライアントPC112上で動作するFTPクライアントソフトウェアの動作を監視することで、FTPサーバ123へファイルをアップロードするための入力操作を検出してもよい。
例えば、ファイルをアップロードするために、ユーザは、コマンドを入力するかもしれない。あるいは、ユーザは、GUIを介して、ファイルのアイコンを選択し、「アップロード」ボタンをクリックする、という一連の入力操作を行うかもしれない。検出部213は、FTPクライアントソフトウェアの動作を監視して、ファイルのアップロードのための入力操作が行われたことを検出してもよい。
例えば、検出部213は、コマンドラインからのキー入力を監視することで、上記の入力操作を検出してもよい。あるいは、検出部213は、FTP要求を生成するためのAPI関数の呼び出しをフックすることで、上記の入力操作を検出してもよい。
そして、検出部213は、ファイルをFTPサーバ123にアップロードするための入力操作を検出すると、検出した入力操作の内容を示す情報を判定部214に通知する。すると、判定部214が図18の処理を開始する。
以上のように、(36−1)〜(36−5)のいずれの場合も、ファイルをリモートに出力しようとするユーザの入力操作を検出部213が検出し、判定部214が図18の処理を開始する。
すると、ステップS1001で判定部214は、操作対象の各ファイルのフルパスと、ファイルの外部出力先を示す出力先情報を取得する。上記のとおり判定部214は、検出部213が検出した入力操作の内容を示す情報を検出部213から受け取っている。よって、判定部214は、検出部213から受け取った情報から、フルパスと出力先情報を取得することができる。
具体的には、(36−1)の場合、電子メールの各添付ファイルの、クライアントPC112上でのフルパスが取得される。また、電子メールの「To」ヘッダフィールドと「CC」ヘッダフィールドと「BCC」ヘッダフィールドに指定されているすべての電子メールアドレスが、出力先情報として取得される。
また、(36−2)の場合、共有フォルダに書き込まれようとする各ファイルの、クライアントPC112上でのフルパスが取得される。さらに、共有フォルダのフルパスが、出力先情報として取得される。
そして、(36−3)の場合、記憶媒体310に書き込まれようとする各ファイルの、クライアントPC112上でのフルパスが取得される。さらに、記憶媒体310の識別情報(例えばPnPデバイスIDなど)が、出力先情報として取得される。
また、(36−4)の場合、HTTPサーバ122にアップロードされようとする各ファイルの、クライアントPC112上でのフルパスが取得される。さらに、HTTPサーバ122のFQDNまたはIPアドレスが、出力先情報として取得される。
そして、(36−5)の場合、FTPサーバ123にアップロードされようとする各ファイルの、クライアントPC112上でのフルパスが取得される。さらに、FTPサーバ123のFQDNまたはIPアドレスが、出力先情報として取得される。
以上のようにして、ステップS1001で判定部214は、操作対象の1個以上のファイルそれぞれのフルパスと、1個以上の出力先情報を取得する。
すると、次のステップS1002で判定部214は、ユーザにより指示された操作により外来ファイルが第三者に出力されるか否かを判定する。ステップS1002は図1のステップS107の具体例である。
具体的には、判定部214は、ステップS1001で取得した各フルパスについて、外来ファイル管理テーブル404のいずれかのエントリの「ファイル」フィールドに記憶されているか否かを調べる。例えば、N(1≦N)個のフルパスがステップS1001で取得されたとすると、判定部214は、1≦j≦Nなる各jについて、以下のような処理を行う。
もし、取得されたj番目のフルパスが、外来ファイル管理テーブル404のどのエントリにも記憶されていなければ、j番目のフルパスで識別されるファイルは、外来ファイルではない。よって、j番目のフルパスで識別されるファイルのリモートへの出力は、警告の対象ではない。
逆に、j番目のフルパスを「ファイル」フィールドに記憶するエントリが1個以上見つかった場合、j番目のフルパスで識別されるファイルは、外来ファイルである。そこで、判定部214はさらに、ステップS1001で得られた各出力先情報について、見つかった1個以上のエントリのうちのいずれかの「属性値」フィールドに記憶されているか否かを調べる。
そして、もし、見つかった1個以上のエントリのうちどのエントリの「属性値」フィールドにも記憶されていない出力先情報があれば、判定部214は、「当該出力先情報は第三者を示している」と判定する。また、この場合、判定部214は、「ユーザにより指示された操作により、少なくとも1個の外来ファイルが第三者に出力される」と判定する。
逆に、どの出力先情報も、見つかった1個以上のエントリのうちのいずれかの「属性値」フィールドに記憶されているならば、判定部214は、「j番目のフルパスで識別される外来ファイルは、非第三者にのみ出力され、第三者には出力されない」と判定する。
判定部214は、取得したN個のフルパスのそれぞれについて以上のような判定を行うことにより、「第三者に出力される外来ファイルが一つでもあるか否か」を判定する。
そして、第三者に出力される外来ファイルが一つでも見つかれば、処理はステップS1003に移行する。その際、判定部214は、「第三者に出力される」と判定した各外来ファイルに関して、当該外来ファイルのフルパスと、当該外来ファイルに関して第三者と判定した出力先情報とのペアを、警告部221に通知する。
逆に、第三者に出力される外来ファイルが一つも見つからなければ、判定部214は、第三者への情報漏洩がないことを許可部223に通知する。そして、処理はステップS1007に移行する。
例えば、2個のファイルが添付された電子メールが送信されようとしており、当該電子メールの「To」ヘッダフィールドと「CC」ヘッダフィールドと「BCC」ヘッダフィールドにはそれぞれ1個の電子メールアドレスが指定されているとする。この場合、ステップS1001では2個のフルパスと3個の電子メールアドレスが取得される。
例えば、2個の添付ファイルのうちの1個目のフルパスは外来ファイル管理テーブル404に登録されておらず、2個目のフルパスは外来ファイル管理テーブル404に登録されているとする。この場合、判定部214は、外来ファイルである2個目の添付ファイルに関して、出力先情報として取得された3個の電子メールアドレスのそれぞれについて、当該電子メールアドレスが第三者か非第三者かを判定する。つまり、2個目の添付ファイルのフルパスと当該電子メールアドレスを対応づけるエントリが外来ファイル管理テーブル404中に存在すれば、当該電子メールアドレスは非第三者であり、そのようなエントリがなければ、当該電子メールアドレスは第三者である。
もし、3個の電子メールアドレスがすべて2個目の添付ファイルの非第三者として外来ファイル管理テーブル404に登録されていれば、処理はステップS1007に移行する。しかし、3個の電子メールアドレスの中に1個でも非第三者として登録されていないものがあれば、処理はステップS1003に移行する。
なお、以上説明した例は、(36−1)の電子メールの送信の場合の例である。しかし、もちろん(36−2)〜(36−5)の場合でも、判定部214は、ステップS1001で取得したフルパスと出力先情報を用いて外来ファイル管理テーブル404を検索することで、ステップS1002の判定を行うことができる。
さて、ステップS1003で警告部221は、判定部214から通知された情報に基づいて警告を発する。
例えば、(36−1)の電子メールの送信の場合には、警告部221は、図9のステップS311と類似の警告を発してもよい。
また、(36−2)の場合には、警告部221は、例えば、警告メッセージと「はい」ボタンと「いいえ」ボタンを含むダイアログを表示してもよい。警告メッセージは、例えば、「共有フォルダにファイルが書き込まれようとしていますが、この共有フォルダは非第三者として登録されていません。書き込みにより第三者へ情報が漏洩するおそれがあります。書き込みを許可しますか?」のようなものでもよい。
また、警告部221は、共有フォルダのプロパティから、共有フォルダにアクセス可能なユーザのアカウント名のリストを取得してもよい。そして、警告部221は、警告メッセージとともに、取得したリストを表示してもよい。
そして、(36−3)〜(36−5)の場合も、警告部221は、警告メッセージの文面を適宜変更して、(36−2)の場合と類似のダイアログを表示してもよい。
もちろん、(36−1)〜(36−5)のいずれの場合も、警告部221は、判定部214から通知された情報に基づいて、判定部214によって「外来ファイルであり且つ第三者に出力される」と判定された各ファイルのフルパスを、ユーザの参考のために表示してもよい。また、警告部221は音声的に警告を発してもよい。
いずれにせよ、ステップS1003で警告部221は警告を発する。そして、警告部221は、警告に対する入力を入力装置240から受け付けるように入力受付部222に命令する。すると、ステップS1003で入力受付部222は入力装置240からの入力(例えば、「はい」ボタンまたは「いいえ」ボタンのクリック)を待つ。
警告に対する入力を入力受付部222が入力装置240から受け付けると、処理はステップS1004に移行する。そして、ステップS1004で入力受付部222は、受け付けた入力が、許可入力なのか、それとも禁止入力なのかを判断する。
禁止入力を入力受付部222が受け付けた場合、入力受付部222は禁止部224に通知を送る。そして、処理はステップS1005に移行する。
逆に、許可入力を入力受付部222が受け付けた場合、入力受付部222は、非第三者への情報漏洩がないことを許可部223と登録部212に通知する。そして、処理はステップS1006に移行する。
ステップS1005で禁止部224は、ユーザにより指示された操作をとりやめる。禁止部224は、検出部213が検出したユーザからの入力操作をキャンセルすることで、ユーザにより指示された操作を禁止し、とりやめることができる。
例えば、(36−1)の場合、禁止部224は、メールユーザエージェントに対してユーザから与えられた入力をキャンセルすることで、電子メールの送信を禁止してもよい。
あるいは、(36−2)の場合、禁止部224は、共有フォルダへのファイルの書き込みのためにOSまたはアプリケーションソフトウェアに対してユーザから与えられた入力をキャンセルすることで、共有フォルダへのファイルの書き込みを禁止してもよい。そして、(36−3)の場合も同様に、禁止部224は、記憶媒体310へのファイルの書き込みのためにOSまたはアプリケーションソフトウェアに対してユーザから与えられた入力をキャンセルすることで、記憶媒体310へのファイルの書き込みを禁止してもよい。
また、(36−4)の場合、禁止部224は、HTTPクライアントソフトウェアに対してユーザから与えられた入力をキャンセルすることで、HTTPサーバ122へのファイルのアップロードを禁止してもよい。そして、(36−5)の場合、禁止部224は、FTPクライアントソフトウェアに対してユーザから与えられた入力をキャンセルすることで、FTPサーバ123へのファイルのアップロードを禁止してもよい。
そして、ステップS1005で禁止部224が以上のようにして、ユーザから指示された操作をとりやめると、図18の処理も終了する。
また、ステップS1006で登録部212は、警告対象を示す情報を判定部214から取得する。そして、登録部212は、判定部214から受け取った情報に基づいて、新たな非第三者を外来ファイル管理テーブル404に登録する。
具体的には、登録部212が受け取る情報は、リモートへの出力が許可された外来ファイルのフルパスと、まだ非第三者として登録されていない第三者を示す出力先情報との、1個または複数個のペアである。よって、登録部212は、各ペアに対応する新たなエントリを外来ファイル管理テーブル404に追加する。
なお、登録部212は、追加したエントリの「属性種別」フィールドに値を適宜設定する。例えば、登録部212は、検出部213が検出した入力操作の種別を、検出部213に問い合せてもよい。
例えば、(36−1)の入力操作を検出部213が検出した場合、登録部212は、「電子メール」という属性種別を設定する。また、(36−2)または(36−2)の入力操作を検出部213が検出した場合、登録部212は、「複写/移動/変名」という属性種別を設定する。そして、(36−4)の入力操作を検出部213が検出した場合、登録部212は、「HTTP」という属性種別を設定し、(36−5)の入力操作を検出部213が検出した場合、登録部212は、「FTP」という属性種別を設定する。
以上のようにしてステップS1006で新たな非第三者が外来ファイル管理テーブル404に登録されると、処理はステップS1007に移行する。
ステップS1007で許可部223は、ユーザにより指示された操作を許可する。そして、図18の処理は終了する。
なお、ステップS1007の結果として、ユーザにより指示された操作が、OSまたはアプリケーションソフトウェアにより、実行される。その結果、ファイルがリモートに出力される。例えば、添付ファイルつき電子メールの送信、共有フォルダへのファイルの書き込み、記憶媒体310へのファイルの書き込み、HTTPサーバ122へのファイルのアップロード、または、FTPサーバ123へのファイルのアップロードが行われる。
しかし、図18の処理によれば、ファイルがリモートに出力されるのは、ファイルが外来ファイルではないか、一または複数の出力先がすべて非第三者として登録済みであるか、今まで第三者だった出力先が新たに非第三者として指定された場合のみである。したがって、図18の処理によれば、「不注意が原因で、ユーザが、意図せずに、外来ファイルへのアクセスを第三者に提供してしまう」という事態は防止される。
ところで、クライアントPC112の記憶装置307の有効利用のためには、外来ファイル管理テーブル404の不要なエントリが削除されてもよい。具体的には、図19の処理が行われてもよい。
図19は、ファイル削除時に行われる外来ファイル情報更新処理のフローチャートである。図19の処理は、クライアントPC112内にローカルに保存されているファイルが削除されようとするときに行われる。
OSは、ファイル削除のために、「del」コマンドなどのコマンドや、「ゴミ箱」を空にするメニューなどを提供する。よって、検出部213は、ファイル削除のために提供されているこれらのコマンドやメニューの呼び出しを検出すると、検出した呼び出しの内容を登録部212に通知する。そして、登録部212が図19の処理を開始する。なお、検出部213は、上記のコマンドやメニューの呼び出しを検出するために、例えばフックを利用してもよい。
さて、ステップS1101で登録部212は、削除対象のファイルのフルパスを取得する。登録部212は、検出部213から通知された内容から、削除対象のファイルのフルパスを取得することができる。
なお、検出部213自体は、例えば、コマンドの引数とカレントフォルダのフルパスに基づいて、削除対象のファイルのフルパスを認識してもよい。また、「ゴミ箱」内のファイルには、当該ファイルがもともと置かれていたフォルダのフルパスを示す情報が対応づけられている。よって、検出部213は、例えばOSを介して、削除対象のファイルが「ゴミ箱」に移動される前の当該ファイルの所在を示すフルパスを認識してもよい。
次のステップS1102で登録部212は、検出部213から通知されたフルパスが外来ファイル管理テーブル404に登録済みか否かを判断する。つまり、登録部212は、通知されたフルパスが「ファイル」フィールドに記憶されているエントリを、外来ファイル管理テーブル404において検索する。
検索の結果、もしエントリが見つからなければ、削除されるファイルは外来ファイルではなく、削除されるファイルに関する情報はそもそも外来ファイル管理テーブル404に存在しない。よって、図19の処理も終了する。
逆に、検索の結果、エントリが見つかれば、削除されるファイルは外来ファイルである。よって、処理はステップS1103に移行する。なお、例えば図16の例において「C:\path_A1\Z1.txt」というフルパスで識別されるファイルが削除される場合のように、検索の結果、複数のエントリが見つかることもある。
ステップS1103で登録部212は、削除されるファイルに関して外来ファイル管理テーブル404に登録されているすべてのエントリ(すなわち、ステップS1102の検索で見つかったすべてのエントリ)を、外来ファイル管理テーブル404から削除する。そして、図19の処理も終了する。
ところで、図示は省略したが、第3実施形態においては、クライアントPC112内でローカルにファイルが複写、移動、または変名される場合に、第1実施形態の図12と類似の処理が行われる。
具体的には、図12に関して説明した(23−1)〜(23−7)のような操作を検出部213が検出する。そして、検出部213は、複写、移動、または変名の操作の対象の元のファイルのフルパスと、ファイルの新たなフルパス(すなわち、複写先、移動先、または変名後のフルパス)を取得する。そして、検出部213は、取得した情報を登録部212に通知する。
すると、登録部212は、元のファイルのフルパスを検索キーにして外来ファイル管理テーブル404を検索する。検索の結果、エントリが見つからなければ、登録部212は外来ファイル管理テーブル404を更新しない。逆に、検索の結果、エントリが1個以上見つかった場合は、見つかった各エントリについて、登録部212は以下の処理を行う。
検出された操作が複写操作の場合、登録部212は、「ファイル」フィールドには取得した新たなフルパスを設定し、「属性種別」と「属性値」フィールドには上記の検索で見つかったエントリと同じ値を設定した新たなエントリを追加する。また、検出された操作が移動操作または変名操作の場合、登録部212は、上記の検索で見つかったエントリの「ファイル」フィールドの値を、取得した新たなフルパスに書き換える。
以上のようにして、登録部212は外来ファイル管理テーブル404を更新する。すると、第1実施形態での図12の処理による効果と同様の効果が得られる。つまり、たとえファイルが複写、移動、または変名されても、システム200がファイルを追跡してファイルの継続性を管理することが可能となる。
ところで、本発明は上記実施形態に限られるものではない。上記の説明においてもいくつかの変形について説明したが、上記実施形態は、さらに例えば下記の観点から様々に変形することもできる。上記の各実施形態および下記の各種変形は、相互に矛盾しない限り、任意に組み合わせることが可能である。
変形の第1の観点は、処理の実行順序に関する。上記の各フローチャートにおけるステップの順序は、矛盾が生じない限り、適宜入れ替えられてもよい。また、入れ替え可能な複数のステップが並列に実行されてもよい。例えば、以下のような入れ替えが可能である。
例えば、図5のステップS201とS202の順序は入れ替えられてもよい。ステップS203とS204の順序も、入れ替えられてよい。また、図9のステップS302は、ステップS301の前に実行されてもよいし、逆にステップS304の後に実行されてもよい。
さらに、図10において、ステップS407〜S408での登録と、ステップS409〜S410での登録の順序も、入れ替え可能である。また、図12において、ステップS604はステップS602の前に実行されてもよい。図14においては、ステップS801とS802の順序が入れ替え可能である。
変形の第2の観点は、データの形式と値に関する。図6〜8、15〜16には各種テーブルの具体例を例示したが、実施形態によっては、テーブルの構成が上記例示と異なっていてもよい。例えば、図6〜8、15ではホスト名とホスト内のフルパスの組み合わせで所在情報が示される場合と、ホスト名を含むUNC形式のフルパスで所在情報が示される場合で、列の数が異なるが、このように列の数が異なるのも単なる図示の都合である。また、各種のデータは、必ずしもテーブル形式で管理されなくてもよい
例えば、図6のメンバテーブル401bは3個のエントリを含むが、3個のエントリのファイルIDは同じである。そこで、メンバテーブル401は、ファイルIDに、非第三者メンバのリストを対応づける形式のテーブルに置き換えられてもよい。
あるいは、ファイルIDをキーとし、非第三者メンバのリストをデータとして持つ連想配列が、メンバテーブル401の代わりに使われてもよい。または、テーブル形式の管理DB400の代わりに、XML(Extensible Markup Language)DBなどの他の形式のDBが利用されてもよい。
なお、図6〜8、15〜16に例示した値は、例示のためのものに過ぎない。例えば、ファイルIDの形式は、実施形態に応じて異なっていてよい。また、メッセージIDの形式も、メールユーザエージェントなどに応じて異なる。そして、パスの表記法も、OSに応じて異なる。
変形の第3の観点は、アカウント名の利用に関する。具体的には、第1実施形態は、アカウント名を利用しないように変形されてもよい。
例えば、LAN110内で共有フォルダが使われない場合や、LAN110内のユーザがどの種類の情報についても皆同等の権限を持つような場合などでは、共有フォルダを介した情報漏洩について考慮しなくてもよい。よって、アカウント名は利用されなくてもよい。具体的には、例えば第1実施形態が以下のように変形されてもよい。
図5のステップS201では、アカウント名の代わりに、ファイルが生成されたマシン上にインストールされているメールユーザエージェントの設定情報から、送信用電子メールアドレスを生成元認識部211が読み出す。そして、ステップS204ではアカウント名の代わりに、送信用電子メールアドレスがメンバテーブル401に登録される。
また、図9のステップS301でアカウント名の取得は省略される。そして、ステップS303では、ファイルIDとアカウント名のペアがメンバテーブル401に登録済みか否かのチェックが省略される。
そして、図10のステップS401でアカウント名の取得は省略される。さらに、ステップS407とS408も省略される。
変形の第4の観点は、電子メールの送信または受信に際して、どの電子メールアドレスを自動的に非第三者として登録するか、という点に関連する。
警告の発生回数を抑えてユーザが利便性を高めるためには、明らかに非第三者と考えられるユーザを示す電子メールアドレスを、自動的に非第三者として登録することが有益である。しかし、仮に非第三者の自動登録が省略されても、警告の発生によりユーザに多少の手間が生じるだけであり、情報漏洩の危険性自体は増えない。このことは、第三者を誤って非第三者として登録すると情報漏洩の危険性が増すのと対照的である。
したがって、ある条件に該当する電子メールアドレスは、非第三者として自動的に登録されてもよいし、自動的な登録が省略されてもよい。
例えば、LAN110の外部のクライアントPC124が「c@bar.org」という電子メールアドレスから送信した電子メールを、LAN110の内部のクライアントPC112が受信したとする。そして、当該電子メールにはファイルが添付されていたとする。この場合、図10によれば、「c@bar.org」という送信元電子メールアドレスは、自動的には非第三者として登録されない。
しかし、上記の場合、電子メールの送信者は、明らかに、添付ファイルに関する非第三者である。そこで、管理サーバ117が管理するLAN110の外部からの電子メールが受信されたときに実行されるステップS404において、登録部212がさらに以下のような処理を行ってもよい。
すなわち、登録部212は、受信電子メールから送信元電子メールアドレスを読み取る。そして、登録部212は、各添付ファイルについて、ステップS404で発行したファイルIDと、読み取った送信元電子メールアドレスとを対応づけるエントリを、メンバテーブル401に追加する。その結果、例えば上記の場合には、「c@bar.org」という送信元電子メールアドレスが、自動的に非第三者として登録される。
ところで、上記のように「c@bar.org」という電子メールアドレスから送信された電子メールの「To」と「CC」のヘッダフィールドには、LAN110の外部のドメインの1個以上の電子メールアドレスが指定されているかもしれない。そして、外部ドメインの1個以上の電子メールアドレスで示される外部ドメインの受信者は、送信者によって添付ファイルへのアクセスが許可されていると見なすことができ、また、実際に添付ファイルにアクセス可能なので、非第三者と見なして差し支えない。しかし、図9〜11によれば、送信元電子メールアドレスが「c@bar.org」のような外部ドメインのものの場合、「To」と「CC」のヘッダフィールドに含まれる外部ドメインの電子メールアドレスは、自動的に非第三者として登録されはしない。
そこで、「To」と「CC」のヘッダフィールドに含まれる外部ドメインの電子メールアドレスを自動的に非第三者として登録するために、図10のステップS404がさらに以下のように変形されてもよい。以下の変形によれば、将来の警告の発生をさらに抑制することが可能である。
すなわち、登録部212は、受信電子メールの「To」と「CC」ヘッダフィールドに含まれるすべての電子メールアドレスをさらに読み取る。その結果、1個または複数個の電子メールアドレスが得られる。そして、登録部212は、添付ファイルと読み取った電子メールの各組み合わせについて、ステップS404で発行したファイルIDと、読み取った電子メールアドレスとを対応づけるエントリを、メンバテーブル401に追加する。
また、以上説明したステップS404の変形とは逆に、非第三者としての自動登録の一部を省略する変形も可能である。すなわち、図9の処理においては、「BCC」ヘッダフィールドの電子メールアドレスも「宛先電子メールアドレス」として扱われるが、「BCC」ヘッダフィールドの電子メールアドレスは「宛先電子メールアドレス」として扱われなくてもよい。
つまり、図9の処理によれば、「BCC」ヘッダフィールドに非第三者として登録されていない電子メールアドレスが含まれる場合、ステップS311で警告が出される。そして、警告に対してユーザから許可入力が与えられると、当該電子メールアドレスは、ステップS314で自動的に非第三者として登録される。しかし、許可入力が与えられた場合でも、「BCC」ヘッダフィールドに指定されている電子メールアドレスは、非第三者としての自動登録の対象から除外されてもよい。
なぜなら、ある特定の状況下では、「BCC」ヘッダフィールドの使用により隠蔽されていた電子メールアドレスが、自動登録により明らかになってしまうことがあり得るからである。そこで、他の受信者に対して電子メールアドレスを隠蔽するという「BCC」ヘッダフィールドの目的を尊重するため、「BCC」ヘッダフィールドに指定されている電子メールアドレスは、ステップS314における自動登録の対象から除外されてもよい。
例えば、上記のとおりクライアントPC112〜114で使われる電子メールアドレスがそれぞれ「a@foo.com」、「b@foo.com」、「d@foo.com」であるとする。そして、ファイルが添付されたある電子メールの、「From」、「To」、「BCC」の各ヘッダフィールドの値が、それぞれ「a@foo.com」、「b@foo.com」、「d@foo.com」であるとする。
この場合、クライアントPC113のユーザは、受信した電子メールのヘッダを見ても、クライアントPC114のユーザにも同じ電子メールが送信されたことを認識することができない。しかし、図9の処理によれば、以下の状況下では、クライアントPC113のユーザが、「受信した電子メールの『BCC』ヘッダフィールドには『d@foo.com』という電子メールアドレスが指定されていたはずだ」と推測することが可能になる。
例えば、クライアントPC113のユーザが、受信した電子メールを「d@foo.com」という電子メールアドレスに宛てて(すなわちクライアントPC114のユーザに宛てて)転送しようとしたとする。すると、クライアントPC113では図9の処理が実行される。しかし、図9の処理によれば、警告は発せられない。なぜなら、かつてクライアントPC112が電子メールを送信した際にクライアントPC112において実行された図9の処理により、「d@foo.com」という電子メールアドレスが非第三者として既に登録されているからである。
すると、クライアントPC113のユーザは、警告が発せられなかったことから、転送先の「d@foo.com」という電子メールアドレスが非第三者であると理解するかもしれない。この理解に基づいて、クライアントPC113のユーザは、「受信した電子メールの『BCC』ヘッダフィールドには『d@foo.com』という電子メールアドレスが指定されていたはずだ」と推測し得る。つまり、「BCC」ヘッダフィールドの使用により隠蔽されていた電子メールアドレスが明らかになってしまう可能性がある。
そこで、「BCC」ヘッダフィールドの目的を尊重するために、「BCC」ヘッダフィールドに指定されている電子メールアドレスは、図9のステップS314における自動登録の対象から除外されてもよい。
すると、上記の例ではクライアントPC113のユーザが電子メールを「d@foo.com」という電子メールアドレスに宛てて転送しようとしたとき、警告が発せられる。したがって、クライアントPC113のユーザは、クライアントPC113で受信した電子メールの「BCC」ヘッダフィールドに「d@foo.com」という電子メールアドレスが指定されていたことを推測することができない。以上のようにして、電子メールアドレスの隠蔽という「BCC」ヘッダフィールドの目的により適合した形に、上記実施形態は変形されてもよい。
変形の第5の観点は、第1実施形態または第2実施形態において各種データが削除される契機に関する。図13の処理は、ローカルに保存されているファイルが削除されようとするときに実行され、その結果、管理DB400からエントリが削除される。しかし、さらに、共有フォルダからのファイルの削除や電子メールの削除をトリガとして管理DB400からエントリが削除されてもよい。
例えば、第2実施形態において、ファイルを削除するためのコマンドまたはメニューが呼び出されて、共有フォルダからファイルが削除されようとするとき、検出部213は、上記コマンドまたはメニューの呼び出しを検出してもよい。
この場合、検出部213は、(25−1)のホスト名と(25−2)のホスト内のフルパスの代わりに、UNC形式の共有フォルダのフルパスを、削除されようとするファイルの所在情報として取得する。また、検出部213は、取得した共有フォルダのフルパスを検索キーにしてファイル所在テーブル402を検索することで、削除されようとするファイルのファイルIDを取得する。
そして、検出部213は、共有フォルダのフルパスとファイルIDを登録部212に通知する。すると登録部212は、削除されようとするファイルに関するエントリをファイル所在テーブル402から削除する。続いて、図13のステップS703〜S705と同様の処理が行われる。
また、検出部213は、メールユーザエージェント上で、メールボックス内にローカルに保存された電子メールが削除されようとするときに、図13と類似の処理を行ってもよい。なお、その場合は、電子メール管理テーブル403の構成も変形され、図9と図10の処理も合わせて変形される。具体的には以下のとおりである。
まず、電子メール管理テーブル403の各エントリには、「カウンタ」フィールドが追加される。例えば、「M000015」というメッセージIDを含むエントリの「カウンタ」フィールドの値は、「M000015」というメッセージIDの電子メールがLAN110内で何台のクライアントマシンに保存されているかを示す。
したがって、図9のステップS310で電子メール管理テーブル403に新たに追加される各エントリの「カウンタ」フィールドには、「1」という値が設定される。
同様に、図10のステップS404では、電子メール管理テーブル403に新たに追加される各エントリの「カウンタ」フィールドに、「1」という値が設定される。また、ステップS403ではさらに、ステップS401で取得されたメッセージIDと同じメッセージIDを含む、電子メール管理テーブル403内のすべてのエントリにおいて、「カウンタ」フィールドの値が、1だけインクリメントされる。
そして、メールユーザエージェント上で、ローカルに保存された電子メールを削除するための入力がユーザから与えられたとき、検出部213は、当該入力を検出してもよい。そして、検出部213による検出をトリガとして、登録部212が図13と類似の処理を開始してもよい。
具体的には、検出部213は、削除されようとする電子メールのメッセージIDを「Message−ID」ヘッダフィールドから読み取る。また、検出部213は、削除されようとする電子メールに1個以上のファイルが添付されている場合は、各添付ファイルのファイル名を「Content−Disposition」ヘッダフィールドから読み取る。そして、検出部213は、読み取った情報を登録部212に通知する。
すると、登録部212は、通知されたメッセージIDを検索キーにして電子メール管理テーブル403を検索する。検索の結果、1個以上のエントリが見つかる。すると、登録部212は、見つかった各エントリの「カウンタ」フィールドの値を1だけデクリメントする。
もし、デクリメントの結果、上記の検索の結果として見つかった各エントリの「カウンタ」フィールドの値が0になった場合は、登録部212はさらに、次の(37−1)〜(37−3)のように動作する。
(37−1) 登録部212は、上記デクリメントにより「カウンタ」フィールドの値を0に更新した各エントリから、添付ファイルのファイルIDを読み取る。
(37−2) 登録部212は、上記デクリメントにより「カウンタ」フィールドの値を0に更新した各エントリを、電子メール管理テーブル403から削除する。
(37−3) 登録部212は、(37−1)で読み取った各ファイルIDに関して、当該ファイルIDを検索キーにして、図13のステップS703と同様にファイル所在テーブル402を検索する。検索の結果、もしファイル所在テーブル402にエントリが見つからなければ、登録部212は、図13のステップS704と同様にして、メンバテーブル401からエントリを削除する。
そして、以上のようにして「カウンタ」フィールドの値がデクリメントされ、さらに、場合によっては(37−1)〜(37−3)の処理が行われた後、ユーザからの指示にしたがって電子メールが削除される。
以上説明したような第5の観点からの変形により、不要なエントリが管理DB400から削除され、記憶領域がさらに有効に利用される。
変形の第6の観点は、第3実施形態においてファイルがリモートに出力される場合に関する。図18に関連して、クライアントPC112からファイルがリモートに出力される場合の例を(36−1)〜(36−5)に挙げたが、他にも、例えば(38−1)〜(38−9)のようにして、外来ファイルがリモートに出力される場合があり得る。
(38−1) クライアントPC112において受信済みの、添付ファイルつきの電子メールが、転送される場合。
(38−2) クライアントPC112において受信済みの電子メールの添付ファイルが、直接、ファイルサーバ115上の共有フォルダに保存される場合。
(38−3) クライアントPC112において受信済みの電子メールの添付ファイルが、直接、記憶媒体310に保存される場合。
(38−4) 共有フォルダ上のファイルが電子メールに添付され、当該電子メールがクライアントPC112から送信される場合。
(38−5) 記憶媒体310上のファイルが電子メールに添付され、当該電子メールがクライアントPC112から送信される場合。
(38−6) 共有フォルダ上のファイルがHTTPサーバ122にアップロードされる場合。
(38−7) 記憶媒体310上のファイルがHTTPサーバ122にアップロードされる場合。
(38−8) 共有フォルダ上のファイルがFTPサーバ123にアップロードされる場合。
(38−9) 記憶媒体310上のファイルがFTPサーバ123にアップロードされる場合。
上記(38−1)〜(38−9)の場合、ユーザが指示した操作がそのまま実行されると、ユーザの不注意が原因で、外来ファイルへのアクセスを第三者に提供してしまうおそれがある。しかし、図18の処理によれば、上記(38−1)〜(38−9)の場合には警告が出されない。理由は以下のとおりである。
第3実施形態では、システム200がスタンドアロンシステムなので、ファイル識別情報231としてホスト内のフルパスが利用されている。しかし、上記(38−1)〜(38−9)の場合には、リモートに出力されようとする外来ファイルには、ファイル識別情報231としてのクライアントPC112内のフルパスが、対応づけられていない。したがって、図18の処理によれば、上記(38−1)〜(38−9)の場合には警告が出されない。
よって、第3実施形態は以下のように変形されてもよい。すなわち、検出部213は、(38−1)〜(38−9)のように外来ファイルを一旦ローカルに保存することなく直接リモートに出力しようとするユーザからの入力をさらに検出してもよい。検出のための具体的方法については、第1〜第3実施形態に関する説明から明らかであろう。例えば、検出部213は、フックを利用して、(38−1)〜(38−9)の場合の入力を検出してもよい。
そして、検出部213は、外来ファイルを直接リモートに出力するための入力を検出すると、検出した入力の内容を判定部214に通知する。ここで、外来ファイルが直接リモートに出力されようとする場合とは、判定部214が外来ファイル管理テーブル404を検索するまでもなく、明らかに警告の対象のイベントが発生している場合である。
よって、判定部214は、(38−1)〜(38−9)の場合に該当する入力を検出した旨を検出部213から通知されると、検出部213から通知された内容を警告部221に出力する。そして、警告部221が警告を発する。例えば、警告部221は、「外来ファイルが直接第三者に出力されようとしており、情報漏洩のおそれがあります。操作を続行しますか?」などの警告メッセージを含むダイアログを表示してもよい。
また、警告部221は、警告に対する入力を入力装置240から受け付けるように入力受付部222に命令する。すると、入力受付部222は図18のステップS1003と同様に、入力装置240からの入力を待つ。
そして、警告に対する禁止入力を入力受付部222が受け付けた場合、入力受付部222は禁止部224に通知を送る。すると、禁止部224は、ユーザにより指示された操作をとりやめる。
逆に、警告に対する許可入力を入力受付部222が受け付けた場合、入力受付部222は非第三者への情報漏洩がないことを許可部223に通知する。すると、許可部223は、図18のステップS1007と同様に、ユーザにより指示された操作を許可する。
以上の第6の観点の変形によれば、外来ファイルが直接リモートに出力されようとする場合にも、警告が発せられ、不注意による第三者への情報漏洩が防止される。
変形の第7の観点は、図3のシステム200がクライアントサーバシステムかスタンドアロンシステムかという点に関する。
第1〜2実施形態はクライアントサーバシステムの例であり、サーバとして図2の管理サーバ117が利用される。また、第3実施形態はスタンドアロンシステムの例であり、管理サーバ117は不要である。
しかし、第3実施形態を変形したクライアントサーバシステムとして、システム200が実現されてもよい。つまり、管理サーバ117は、クライアントPC112〜114にそれぞれ対応する3つの外来ファイル管理テーブル404を保持してもよい。
そして、管理サーバ117は、クライアントPC112〜114それぞれの登録部212と判定部214に対して、DBインタフェイスを提供してもよい。または、登録部212と判定部214が管理サーバ117に含まれるように、第3実施形態が変形されてもよい。
あるいは、別の観点から換言すれば、第3実施形態と同様に警告対象のファイルを外来ファイルのみに限定するように、第1実施形態または第2実施形態が変形されてもよい。
また、クライアントサーバシステムとしてシステム200が実現される場合に、管理DB400の一部がクライアントPC112〜114にバックアップされていてもよい。例えば、管理DB400のエントリのうちで、クライアントPC112にローカルに保存されているファイルに関するエントリは、クライアントPC112にバックアップされていてもよい。
その場合、クライアントPC112の判定部214は、クライアントPC112内にローカルにバックアップされているコピーを参照する。また、クライアントPC112の登録部212は、管理サーバ117上の管理DB400とクライアントPC112上の管理DB400のバックアップコピーの双方を更新する。
あるいは、ファイル所在テーブル402のエントリのうち、共有フォルダ上の所在を示すエントリ以外の各エントリは、所在情報のホスト名が示すクライアントマシンに記憶されていてもよい。つまり、ファイル所在テーブル402は、クライアントPC112〜114と管理サーバ117に分散されていてもよい。
ところで、クライアントサーバシステムとスタンドアロンシステムの間での共通点と相違点という観点から様々な実施形態について概観すれば、下記のとおりである。
なお、以下の概観においては、図3に関する説明と同様に、当該ファイルに関して記憶装置230に登録されているいずれの非第三者でもない一以上の第三者からの、当該ファイルへのアクセスを提供する処理を、「特定の処理」ということにする。そして、特定の処理の実行を指示する入力を「特定の入力」ということにする。つまり、許可入力は上記の一以上の第三者からの当該ファイルへのアクセスを許可する入力であり、禁止入力はそのようなアクセスを禁止する入力である。
さて、クライアントPC112〜114は同様の構成でよいが、便宜上、クライアントPC112について説明する。クライアントPC112は、システム200がクライアントサーバシステムの場合はクライアントマシンとして動作し、システム200がスタンドアロンシステムの場合はシステム200全体として動作する。いずれの場合も、クライアントPC112は、以下のような保護処理を実行する。
すなわち、クライアントPC112は、ファイルの生成元を、当該ファイルに関する非第三者として記憶装置230に登録する。そして、クライアントPC112は、特定の入力と許可入力の双方が与えられると、上記の一以上の第三者の各々を当該ファイルに関する非第三者として記憶装置230に登録するとともに、特定の処理の実行を許可する。
また、クライアントPC112は、特定の入力と禁止入力の双方が与えられると、特定の処理の実行を禁止する。より具体的には、クライアントPC112は、特定の入力が与えられると警告を発し、警告に対するユーザからの入力として、許可入力または禁止入力を受け付けてもよい。そして、警告に対して禁止入力が与えられたとき、クライアントPC112は、特定の処理の実行を禁止してもよい。
ここで、特定の処理の具体例は、例えば、上記の一以上の第三者が宛先に指定されており上記のファイルが添付されている電子メールを送信する処理である。当該処理は、より具体的には、電子メールを新規に作成して送信する処理か、または、受信済みの電子メールを転送(forward)する処理である。
特定の処理の別の具体例は、例えば、上記の一以上の第三者にアクセス権限が与えられているフォルダ(例えばファイルサーバ115上の共有フォルダなど)に、上記のファイルを保存する処理である。
特定の処理のさらに別の具体例は、例えば、上記のファイルの生成元が第1の他のコンピュータの場合に、第1の他のコンピュータ以外の第2の他のコンピュータに上記のファイルを転送(transfer)する処理である。例えば、第1の他のコンピュータはHTTPサーバ122またはFTPサーバ123でもよく、第2の他のコンピュータは不図示の他のHTTPサーバまたは不図示の他のFTPサーバでもよい。
なお、非第三者識別情報232は、換言すれば、ファイルへのアクセスを許容する対象を示す許可対象情報である。よって、クライアントPC112による上記保護処理は、換言すれば、下記(39−1)と(39−2)の処理を含む処理である、とも言える。
(39−1) 記憶装置に記憶されたファイルの転送先を示す転送先情報が、許可対象情報に含まれていない場合に、ファイルの転送前に、転送の実行を許可するか否かの入力を促す処理。
(39−2) 許可する旨の入力がクライアントPC112の入力装置305を用いて行われると、許可対象情報に転送先情報を追加するとともに、ファイルの転送を実行する処理。
例えば、(39−1)の処理を実行する第1の制御手段は、検出部213と判定部214と警告部221により実現されてもよい。また、(39−2)の処理を実行する第2の制御手段は、入力受付部222と許可部223と登録部212により実現されてもよい。
なお、上述した「特定の処理」の具体例から理解されるように、(39−1)と(39−2)に述べた「ファイルの転送」は、具体的には、例えば、(40−1)〜(40−3)のいずれの処理による転送(transfer)であってもよい。
(40−1) 添付ファイルつきの電子メールの送信。
(40−2) 共有フォルダにファイルを書き込むときに行われる、共有フォルダを有する他のコンピュータ(例えばファイルサーバ115)へのファイルの転送。
(40−3) 他のコンピュータ(例えばHTTPサーバ122またはFTPサーバ123)へのファイルのアップロード。
また、上記保護処理においてクライアントPC112は、非第三者として登録する生成元を、具体的には以下のようにして認識してもよい。
例えば、クライアントPC112は、上記のファイルを新規に作成して保存する操作を検出し、作成操作を行うユーザを生成元として認識してもよい。あるいは、上記ファイルがクライアントPC112で受信された電子メールの添付ファイルの場合は、クライアントPC112は、受信された電子メールの送信元を生成元として認識してもよい。
また、上記ファイルが共有フォルダから複写されたファイルの場合は、クライアントPC112は、上記ファイルを共有フォルダから複写してクライアントPC112に保存する操作を検出することで、生成元を認識してもよい。つまり、クライアントPC112は、共有フォルダを上記ファイルの生成元として認識してもよいし、共有フォルダへのアクセス権限が与えられている各ユーザを生成元として認識してもよい。
また、上記ファイルが他のコンピュータ(例えばHTTPサーバ122またはFTPサーバ123)からダウンロードされたファイルの場合もあり得る。この場合、クライアントPC112は、上記ファイルをダウンロードしてクライアントPC112に保存する操作を検出してもよい。そして、クライアントPC112は、上記他のコンピュータを生成元として認識してもよい。
さらに、上記ファイルは、固有の識別情報が予め割り当てられている記憶媒体310から読み込まれたファイルの場合もあり得る。この場合、クライアントPC112は、上記ファイルを記憶媒体310から読み込む操作(例えば、複写、移動、変名などの操作)を検出し、記憶媒体310を生成元として認識してもよい。
以上に例示したような生成元の認識の結果として、生成元を示す非第三者識別情報232が記憶装置230に登録される。換言すれば、(39−1)と(39−2)に述べた「許可対象情報」には、生成元の認識の結果として、何らかの情報が追加される。具体的には、例えば以下の(41−1)〜(41−5)のような処理が行われてもよい。
(41−1) 新規ファイルが作成された場合、新規ファイルを作成して記憶装置に保存する操作を行うユーザを識別する情報(例えばアカウント名)が、新規ファイルに関する許可対象情報に追加される。
(41−2) 添付ファイルつきの電子メールが受信された場合、電子メールの送信元を識別する情報(つまり電子メールアドレス)が、添付ファイルに関する許可対象情報に追加される。
(41−3) 共有フォルダ(例えばファイルサーバ115上の共有フォルダ)に記憶された共有ファイルが、記憶装置(例えばクライアントPC112の記憶装置307)に複写または移動される場合がある。この場合、共有フォルダを識別する情報(例えばUNC形式のパス)が、記憶装置に複写または移動された共有ファイルに関する許可対象情報に追加されてもよい。あるいは、共有フォルダへのアクセス権限が与えられている一以上のユーザをそれぞれ識別する情報(例えばアカウント名)が、記憶装置に複写または移動された共有ファイルに関する許可対象情報に追加されてもよい。
(41−4) 他のコンピュータ(例えばHTTPサーバ122またはFTPサーバ123)上のリモートファイルが、ダウンロードされて記憶装置(例えばクライアントPC112の記憶装置307)に保存される場合がある。この場合、上記他のコンピュータをネットワーク上で識別する情報(例えばFQDNまたはIPアドレス)が、ダウンロードされたリモートファイルに関する許可対象情報に追加される。
(41−5) 固有の識別情報(例えばPnPデバイスID)が予め割り当てられている記憶媒体から、当該記憶媒体に記憶されている既存ファイルが読み込まれて記憶装置(例えばクライアントPC112の記憶装置307)に保存される場合がある。この場合、固有の識別情報が、記憶装置に保存された既存ファイルに関する許可対象情報に追加される。
ところで、以上の説明からも理解されるとおり、非第三者は、様々な種類の情報により識別され得る。例えば、非第三者は、非第三者としてのユーザの、電子メールアドレスとアカウント名の一方または双方により識別されてもよい。あるいは、非第三者は、非第三者としてのコンピュータを、イントラネット内またはインターネット上で識別するためのコンピュータ識別情報(例えば、ホスト名、MACアドレス、IPアドレス、FQDNなど)により識別されてもよい。または、非第三者としての記憶媒体310に割り当てられており、かつ、記憶媒体310自体に記憶されている、記憶媒体識別情報(例えばPnPデバイスIDなど)により、非第三者が識別されてもよい。
つまり、(39−2)の処理において許可対象情報に追加される転送先情報は、以上述べたような、非第三者を識別する情報を用いて表されていてもよい。また、許可対象情報は、クライアントサーバシステムにおいては管理サーバ117に記憶され、スタンドアロンシステムにおいてはクライアントPC112などに記憶される。
また、非第三者と対応づけられて管理される上記のファイルは、具体的には、クライアントPC112がローカルに(つまりクライアントPC112の記憶装置307に)保存するファイルである。そして、特定の入力と許可入力と禁止入力は、具体的には、クライアントPC112に接続された入力装置240(つまり入力装置305)からクライアントPC112に与えられる入力である。
以上概観した点は、クライアントPC112がクライアントサーバシステムにおけるクライアントマシンとして動作する場合でも、スタンドアロンシステムとして動作する場合でも、同じである。これら二つの場合での相違点は、例えば、次のとおりである。
クライアントPC112がクライアントサーバシステムにおけるクライアントマシンとして動作する場合、クライアントPC112は、ファイル識別情報231を自ら生成してもよい。あるいは、クライアントPC112は、ファイル識別情報231の生成を管理サーバ117に要求し、管理サーバ117からファイル識別情報231を取得してもよい。
他方、クライアントPC112がスタンドアロンシステムとして動作する場合は、クライアントPC112はファイル識別情報231を自ら生成してもよいし、クライアントPC112内でのファイルのフルパスをファイル識別情報231として取得してもよい。
また、クライアントPC112がクライアントサーバシステムにおけるクライアントマシンとして動作する場合、図3の記憶装置230は、具体的には、クライアントPC112とは別のコンピュータである管理サーバ117の記憶装置307である。そして、この場合、クライアントPC112は、入力装置240から与えられる入力が特定の入力に該当するか否かを、管理サーバ117への問い合わせを行うことによって判定する。管理サーバ117への問い合わせとは、具体的には、管理サーバ117のDBインタフェイスを介して、管理サーバ117上の管理DB400または外来ファイル管理テーブル404を参照する処理である。
他方、クライアントPC112がスタンドアロンシステムとして動作する場合は、クライアントPC112は、クライアントPC112自体がローカルに備える記憶装置307を、図3の記憶装置230として利用する。例えば、外来ファイル管理テーブル404は、クライアントPC112の記憶装置307に記憶される。
また、システム200がクライアントサーバシステムの場合にも、図3の登録管理部210の実装は実施形態に応じて異なっていてよい。例えば、システム200が、クライアントPC112と管理サーバ117を含むクライアントサーバシステムの場合、クライアントPC112が実行制御部220と入力装置240を含み、管理サーバ117が記憶装置230を含む。しかし、登録管理部210は、実施形態に応じて適宜クライアントPC112と管理サーバ117に分散される。
例えば、ある実施形態では、登録管理部210がすべてクライアントPC112にあり、管理サーバ117は登録部212と判定部214に対するDBインタフェイスを提供するだけでもよい。しかし、別の実施形態では、生成元認識部211と検出部213がクライアントPC112にあり、登録部212と判定部214が管理サーバ117にあってもよい。後者の場合、管理サーバ117は、具体的には、プログラムにしたがって以下のような保護処理を実行することで、登録部212および判定部214として動作してもよい。
管理サーバ117は、クライアントPC112がローカルに保存するファイルの生成元を、当該ファイルに関する非第三者として記憶装置230に登録する。管理サーバ117は、例えば、クライアントPC112の生成元認識部211から生成元の通知を受けてもよい。
また、管理サーバ117は、クライアントPC112に与えられた入力の内容を知らせる第1の通知をクライアントPC112から受信する。そして、管理サーバ117(具体的には管理サーバ117上に実装された判定部214)は、特定の入力がクライアントPC112に与えられたのか否かを、受信した第1の通知から判定する。判定のために、管理サーバ117は、記憶装置230を参照する。
そして、管理サーバ117は、「特定の入力がクライアントPC112に与えられた」と判定した場合、特定の入力がクライアントPC112に与えられたことをクライアントPC112に通知する。この通知は、具体的には例えば、警告リストの形でクライアントPC112の警告部221に通知されてもよい。
そして、管理サーバ117(具体的には管理サーバ117上に実装された登録部212)は、許可入力がクライアントPC112に与えられたか否かを示す第2の通知を、クライアントPC112から受信する。
また、「特定の入力がクライアントPC112に与えられた」と管理サーバ117が判定し、かつ、「許可入力がクライアントPC112に与えられた」と第2の通知が示す場合、管理サーバ117は、次のように動作する。すなわち、管理サーバ117(具体的には管理サーバ117上に実装された登録部212)は、許可入力により上記ファイルへのアクセスが許可された一以上の第三者の各々を、当該ファイルに関する非第三者として記憶装置230に登録する。
以上説明した様々な実施形態のいずれにおいても、次のような効果が得られる。
すなわち、電子メールに関するポリシーや共有フォルダに関するポリシーなどの種々のポリシーを、個別に事前設定する必要がないので、ユーザや管理者などの負担が小さい。また、特定の処理の実行自体が全面的に禁止されるわけではないので、作業効率が極端に悪化するようなこともないし、ユーザが著しい不便を感じることもない。さらに、非第三者の自動登録により、過剰な警告の発生も抑制され、ユーザが警告に対して入力を与える手間も軽減される。
以上のように、ユーザの被る不利益はごくわずかである。それにもかかわらず、上記の様々な実施形態によれば、ユーザの不注意に起因する情報漏洩は、防止される。なぜなら、実際にファイルが第三者からアクセス可能な状態になる前に、ユーザには、「許可入力を与えるか否か」を意識的に考える機会が与えられるからである。
最後に、上記の種々の実施形態に関して、さらに下記の付記を開示する。
(付記1)
コンピュータに、
記憶装置に記憶されたファイルの転送先を示す転送先情報が、前記ファイルへのアクセスを許容する対象を示す許可対象情報に含まれていない場合に、前記ファイルの転送前に、転送の実行を許可するか否かの入力を促し、
許可する旨の入力が該コンピュータの入力手段を用いて行われると、前記許可対象情報に前記転送先情報を追加するとともに、前記ファイルの転送を実行する、
処理を実行させることを特徴とする制御プログラム。
(付記2)
前記ファイルの前記転送の実行を禁止する旨の入力が前記入力手段を用いて行われると、前記ファイルの前記転送を禁止する
ことを前記処理がさらに含むことを特徴とする付記1に記載の制御プログラム。
(付記3)
前記転送先情報は、電子メールアドレスにより表され、
前記電子メールアドレスが宛先に指定されており前記ファイルが添付されている電子メールの送信により、前記ファイルが転送される
ことを特徴とする付記1または2に記載の制御プログラム。
(付記4)
前記ファイルの前記転送は、一以上のユーザにアクセス権限が与えられている共有フォルダに前記ファイルを書き込むときに行われる、前記共有フォルダを有する他のコンピュータへの前記ファイルの転送であって、
前記転送先情報は、前記一以上のユーザをそれぞれ識別する情報を含む
ことを特徴とする付記1または2に記載の制御プログラム。
(付記5)
前記転送先情報は、前記ファイルの転送先の他のコンピュータをネットワーク上で識別する情報により表される
ことを特徴とする付記1または2に記載の制御プログラム。
(付記6)
新規ファイルを作成して前記記憶装置に保存する操作を検出し、
前記操作を行うユーザを識別する情報を、前記新規ファイルに関する許可対象情報に追加する
ことを前記処理がさらに含むことを特徴とする付記1から5のいずれか1項に記載の制御プログラム。
(付記7)
添付ファイルつきの電子メールの受信を検出し、
前記電子メールの送信元を識別する情報を、前記添付ファイルに関する許可対象情報に追加する
ことを前記処理がさらに含むことを特徴とする付記1から5のいずれか1項に記載の制御プログラム。
(付記8)
共有フォルダに記憶された共有ファイルを前記記憶装置に複写または移動する操作を検出し、
前記共有フォルダを識別する情報、または、前記共有フォルダへのアクセス権限が与えられている一以上のユーザをそれぞれ識別する情報を、前記記憶装置に複写または移動された前記共有ファイルに関する許可対象情報に追加する
ことを前記処理がさらに含むことを特徴とする付記1から5のいずれか1項に記載の制御プログラム。
(付記9)
他のコンピュータ上のリモートファイルを、ダウンロードして前記記憶装置に保存する操作を検出し、
前記他のコンピュータをネットワーク上で識別する情報を、ダウンロードされた前記リモートファイルに関する許可対象情報に追加する
ことを前記処理がさらに含むことを特徴とする付記1から5のいずれか1項に記載の制御プログラム。
(付記10)
固有の識別情報が予め割り当てられている記憶媒体から、該記憶媒体に記憶されている既存ファイルを読み込んで前記記憶装置に保存する操作を検出し、
前記固有の識別情報を、前記記憶装置に保存された前記既存ファイルに関する許可対象情報に追加する
ことを前記処理がさらに含むことを特徴とする付記1から5のいずれか1項に記載の制御プログラム。
(付記11)
前記許可対象情報に追加される前記転送先情報は、
前記ファイルの転送によって前記ファイルへアクセス可能となるユーザの、電子メールアドレスとアカウント名の一方もしくは双方、
前記ファイルの転送先にある他のコンピュータを、イントラネット内またはインターネット上で識別するためのコンピュータ識別情報、または
前記ファイルが転送される記憶媒体に割り当てられており前記記憶媒体に記憶されている記憶媒体識別情報
を用いて表されることを特徴とする付記1から10のいずれか1項に記載の制御プログラム。
(付記12)
前記処理がさらに、前記ファイルを識別するファイル識別情報を生成または取得することを含み、
前記許可対象情報は、個々のファイルごとに、当該ファイルの前記ファイル識別情報と対応づけられている
ことを特徴とする付記1から11のいずれか1項に記載の制御プログラム。
(付記13)
前記許可対象情報は、個々のファイルごとに、前記コンピュータにローカルに記憶されている
ことを特徴とする付記1から12のいずれか1項に記載の制御プログラム。
(付記14)
前記許可対象情報は、個々のファイルごとに、他のコンピュータに記憶されており、
前記転送先情報が前記許可対象情報に含まれているか否かを判定する処理と、前記許可対象情報に前記転送先情報を追加する処理は、前記他のコンピュータを介して行われる
ことを特徴とする付記1から12のいずれか1項に記載の制御プログラム。
(付記15)
第1のコンピュータに、
第2のコンピュータの記憶装置に記憶されたファイルの転送先を示す転送先情報を前記第2のコンピュータから受信し、
前記転送先情報が、前記ファイルへのアクセスを許容する対象を示す許可対象情報に含まれていない場合に、前記第2のコンピュータに対して、前記ファイルの転送前に、転送の実行を許可するか否かの入力を促すよう、命令し、
前記入力の内容を、前記第2のコンピュータから受信し、
前記入力の前記内容が、前記転送を許可する旨である場合、前記許可対象情報に前記転送先情報を追加する、
処理を実行させることを特徴とする制御プログラム。
(付記16)
入力手段および記憶手段と接続される情報処理装置であって、
前記記憶手段に記憶されたファイルの転送先を示す転送先情報が、前記ファイルへのアクセスを許容する対象を示す許可対象情報に含まれていない場合に、前記ファイルの転送前に、転送の実行を許可するか否かの入力を促す第1の制御手段と、
許可する旨の入力が前記入力手段を用いて行われると、前記許可対象情報に前記転送先情報を追加するとともに、前記ファイルの転送を実行する第2の制御手段と、
を備える情報処理装置。
(付記17)
コンピュータが、
記憶装置に記憶されたファイルの転送先を示す転送先情報が、前記ファイルへのアクセスを許容する対象を示す許可対象情報に含まれていない場合に、前記ファイルの転送前に、転送の実行を許可するか否かの入力を促し、
許可する旨の入力が該コンピュータの入力手段を用いて行われると、前記許可対象情報に前記転送先情報を追加するとともに、前記ファイルの転送を実行する、
ことを特徴とする方法。