(57)【要約】【課題】  悪意を持ったユーザアプリケーションがシステム内の情報を全て収集したり、あるいは故意に改竄してしまうことを防止する。【解決手段】  特徴的なアクセスが行われた場合に不審であると判断し、そのアクセス内容に応じてそれ以降のアクセスを動的に制限変更・規制する。不審であると判断する特徴的なアクセスと、その場合のアクセス制限を予め登録しておく。【選択図】  図１
2007026081.tif 000002
【特許請求の範囲】
【請求項１】
関数を公開して外部プログラムからアクセスされるプログラムにおいて、
前記外部プログラムからの不審なアクセスを予め複数設定可能な不審アクセス設定工程と、
前記不審アクセス設定工程にて定められた不審なアクセスを検知するために、関連する前記外部プログラムからのアクセスを記録するアクセス記録工程と、
前記不審アクセス設定工程により設定されている不審アクセスが実際に行われた場合に、それ以後外部プログラムからのアクセスを制限するアクセス制限工程と、
前記アクセス記録工程から前記設定された不審アクセス設定工程に該当する不審なアクセスか否かを判断する不審アクセス検知工程と、
前記不審アクセス検知工程により不審アクセスを判断した場合に、前記アクセス制限工程にて設定されたアクセス制限内容に従い外部プログラムからのアクセスを制限する方法をコンピュータで読み出し可能な形で作成されたことを特徴とするプログラム。
【請求項２】
前記不審アクセス検知工程は、不審アクセスと判断した場合に不審アクセスに関する情報をログに記録する工程を有することを特徴とする請求項１に記載のプログラム。
【請求項３】
前記不審アクセス検知工程は、不審アクセスと判断した場合に不審アクセスに関する情報をユーザに通知する工程を有することを特徴とする請求項１に記載のプログラム。
【請求項４】
前記アクセス記録工程は、前記外部プログラムからの全てのアクセスを記録する工程を有することを特徴とする前記請求項１に記載のプログラム。
【請求項５】
前記アクセス記録工程は、前記外部プログラムからのアクセスのうち、前記不審アクセス検知工程にて必要なアクセスのみを記録することを特徴とする前記請求項１に記載のプログラム。
【請求項６】
前記アクセス制限工程は、前記外部プログラムからのアクセスされた場合に、架空の情報を構築し、あたかも実在するかのように見せかけてアクセスを許すことを特徴とする前記請求項１に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、関数を公開して外部プログラムからアクセスされるプログラムに関し、特にソフトウェアデベロップメントキット(Software Development Kit：以下SDK)を用いた外部プログラムからのアクセスに対して、条件に応じてそのアクセスレベルを事前に設定してある情報に従い動的に変更するプログラムアクセス制限方法と、その制限方法をコンピュータで読み出し可能な言語で作成したプログラムに関する。
【背景技術】
【０００２】
従来、プログラムの中のデータの参照や書き換え、あるいはそのプログラムの持つ機能を外部の別プログラムからアクセスし実行可能とするために関数やイベント（以下、関数で統一して称する）を公開することが行われていた。以下、前記関数を公開しているプログラムをホストプログラム、同じく前記公開関数を呼び出す外部プログラムをクライアントプログラムと称する。
【０００３】
公開関数を提供する場合、ホストプログラムが提供する公開関数の仕様をドキュメント化したり、あるいはその利用方法の理解のためにサンプルプログラムなどを作成し、それらをまとめてSDKとしてソフトウェアデベロッパ(Independent Software Developer：以下ISV)へ提供する形態が一般的であり、ISVはSDKを利用して元のホストプログラムとは異なるクライアントプログラムを開発することが可能であった。オリジナルのホストプログラムとは異なる操作性を実現したり、特定の機能に限定してシンプルな機能のみを実装することによって、幅広いエンドユーザの要求に個別に応えることか可能となっていた。
【０００４】
ホストプログラムとクライアントプログラムの関係は大きく分けて2つに分類できる。１つは、画像処理ライブラリなど、それ単体では能動的に動作しないホストプログラムの場合である。この場合ホストプログラムはそれ単体でエンドユーザに提供されることは稀であり、クライアントプログラムはSDKの一部として提供されたホストプログラムを利用して、例えば画像回転関数や画像フォーマット変換関数などを呼び出していた。それにより、ISVが能動的に動作するクライアントプログラムを開発しエンドユーザに提供していた。もう一方は例えば電子文書ファイリングプログラムなど、それ単体で動作するホストプログラムの場合である。電子文書ファイリングプログラムはグラフィカルユーザインタフェース(以下GUI）やデータベース、スキャナドライバを備え、それ単体でエンドユーザへ提供され利用可能ではあるが、特定の機能に限定した定型業務プログラムを欲するエンドユーザにとっては豊富な機能が逆に災いし使い勝手を悪くすることがある。この問題を解決するために、ISVはSDKを利用してエンドユーザの望むカスタマイズを行い、独自のクライアントプログラムを開発していた。
【０００５】
これら2つのどちらの場合でも、公開関数を呼び出すクライアントプログラムと共に、関数を公開しているホストプログラムの全てあるいはその一部が共にエンドユーザへ納入され稼動されていた。具体的には以下のようなプログラム形態となっていた。
【０００６】
公開関数はプログラミング言語や動作するコンピュータのOSの種類によって様々な形態となる。例えば公開関数のプロトタイプ宣言や必要なデータ型を定義したヘッダファイルをSDKの中で提供し、それをクライアントプログラムでインクルードした上で関数を利用する形態は最も広く知られる方法である。あるいは、クライアントプログラムがマイクロソフト社のWindows（登録商標）上で開発される場合には、OSが提供するコンポーネントオブジェクトモデル(Component Object Model：以下COM）の仕組みを利用し、ホストプログラムの公開関数をまとめてCOMサーバーモジュールを作成し、それをSDKの一部として提供することが可能である。ISVは提供されたCOMサーバーモジュールを自ら開発するクライアントプログラムから呼び出すことによって、ホストプログラムへのアクセスが可能であったり、あるいはCOMサーバーモジュール自身がホストプログラムであり完結している場合もあった。ホストプログラムへのアクセスするためには、クアイアントプログラムから例えば最初に公開関数の１つであるConnect関数をユーザ名とパスワードを引数として呼び出す。するとこれにより公開関数が呼び出されたホストプログラムは、自ら持つユーザ管理情報と照らし合わせてパスワードが正しいか否かを判定する。ユーザ認証が正しく行われたならばクライアントプログラムへ正常終了を返し、以後、クライアントプログラムは公開関数を呼び出すことによって、ホストプログラムが保持するデータにアクセスしたり、ホストプログラムに実装されているまとまった機能、例えば電子文書ファイリングされた文書の検索を実行し、特定の文書を取得することなどが可能であった。
【０００７】
又、別の従来例としては、特許文献１をあげることが出来る。
【特許文献１】特開２００４−３１０５５７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ところがそのクライアントプログラムとホストプログラムの関係を利用して、悪意あるクライアントプログラムが開発され問題となる場合があった。例えば前記電子文書ファイリングプログラムの例の場合では、ファイリングされた膨大な電子文書がデータベースに蓄積され、それらを複数のユーザで共有利用するのが一般的である。文書によっては機密情報も含まれているため、細かいパーミッションや権限設定が行われるのが普通である。もちろんSDKを利用して開発されたクライアントプログラムも、通常は正しいエンドユーザによって適切にデータベースにアクセスし必要な業務を実現していた。しかし、悪意あるクライアントプログラムが密かに開発され、例えばエンドユーザの操作なしにバックグラウンドで起動し公開関数を利用してホストプログラムにアクセスし、文書に関する各種情報を盗み見たり改竄したり、あるいは文書を引き出してしまうなどの問題を引き起こす場合があった。この場合、通常は前述したようなユーザ認証にてセキュリティを確保しているのだが、もしも一旦ユーザ名とパスワードが破られたり漏洩してしまうとなす術がないことが特に問題となっていた。そもそも正当なクライアントプログラムからのアクセスなのか、それとも悪意あるクライアントプログラムからのアクセスなのかを判断することができなかった。そこで、悪意あるプログラムであるか否かを明確に判断し、そのアクセスを一切拒絶するのではなく、段階的にアクセスできる程度を変更し、出来る限り被害を最小としたいという要望があった。同時に、怪しいアクセスが行われた場合に、特定のユーザや管理者にその旨通知することで、素早い対策を可能とする手段が求められていた。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、
関数を公開して外部プログラムからアクセスされるプログラムにおいて、
前記外部プログラムからの不審なアクセスを予め複数設定可能な不審アクセス設定手段と、
前記不審アクセス設定手段にて定められた不審なアクセスを検知するために、関連する前記外部プログラムからのアクセスを記録するアクセス記録手段と、
前記不審アクセス設定手段により設定されている不審アクセスが実際に行われた場合に、それ以後外部プログラムからのアクセスを制限するアクセス制限手段と、
前記アクセス記録手段から前記設定された不審アクセス設定手段に該当する不審なアクセスか否かを判断する不審アクセス検知手段と、
前記不審アクセス検知手段により不審アクセスを判断した場合に、前記アクセス制限手段にて設定されたアクセス制限内容に従い外部プログラムからのアクセスを制限することで、プログラムのアクセス制限を実施することを可能とする。
【発明の効果】
【００１０】
以上説明したように、本発明によれば、特徴的なアクセスが行われた場合に不審であると判断し、そのアクセス内容に応じてそれ以降のアクセスを動的に制限変更・規制することが可能となり、情報の漏洩や改竄を最小限に留めることが可能となる。更にはそのアクセス履歴を記録することで後から状況を詳しく分析し対策に役立てることも可能となる。更には、不審であると判断した時点でメールなどで特定のエンドユーザや管理者に通知することで、ユーザによる素早い対策を実施することが可能となり、被害を最小限に抑えることが可能となる。
【発明を実施するための最良の形態】
【００１１】
次に、本発明の詳細を実施例の記述に従って説明する。
【００１２】
以下に、本発明の実施例を図面に基づき説明する。
【００１３】
図1は、それ単体では能動的に動作しないホストプログラムの場合であり、COMサーバーモジュールがホストプログラムとしてISVに提供される場合のプログラム構成図である。クライアントプログラム101はCOMサーバーモジュール102が公開する公開関数103を呼び出すことで、ホストプログラムつまりCOMサーバーモジュール102の情報へアクセスすることが可能となる。この場合、OS上の実行単位であるプロセスはクライアントプログラムのプロセス104のみで動作する。画像処理ライブラリなど、それ単体ではエンドユーザへ提供されない場合にこの構成となる場合が多い。
【００１４】
図2は、ホストプログラムとクライアントプログラムの関係の中で前記COMサーバーモジュールを利用する場合のうち、COMサーバーモジュールとは別にホストプログラムが存在する場合のプログラム構成図である。クライアントプログラム201が、SDKとして提供されたCOMサーバーモジュール202の公開関数204を呼び出すと、COMサーバーモジュールは必要に応じて内部的な非公開関数205を呼び出してホストプログラム203へとアクセスする。実行時のプロセスは、クライアントプログラムプロセス206の中にCOMサーバーモジュールがロードされ動作する。ホストプログラム203はそのままホストプログラムプロセス207であり、この2つのプロセスが共に動作することになる。ホストプログラムが単体でエンドユーザへ提供されている場合で、SDKとしてホストプログラムとは独立してCOMサーバーモジュールを提供する場合にこの構成となる場合が多い。
【００１５】
図3は、前記図2の構成と似ているが、COMサーバーモジュールがホストプログラムと一体化されている場合のプログラム構成図である。クライアントプログラム301は公開関数302を呼び出してCOMサーバーモジュール303へとアクセスする。COMサーバーモジュール303はホストプログラム303とも表現することができる。それぞれクライアントプログラムプロセス304、ホストプログラムプロセス305の2つのプロセスが共に動作することになる。この構成の場合には、ホストプログラムが単体でエンドユーザへ提供される場合もあれば、ホストプログラムはそれ単体では機能せず常にクライアントプログラムと共にエンドユーザへ提供される場合もある。
【００１６】
これ以降、図3のプログラム構成の場合を例として説明を続ける。
【００１７】
クライアントプログラムの認証を行う方法について図4を用いて説明する。
【００１８】
クライアントプログラム401は公開関数402を呼び出してCOMサーバーモジュール403つまりホストプログラム403へとアクセスする。それぞれクライアントプログラムプロセス404、ホストプログラムプロセス405の2つのプロセスが共に動作することになる。ただ図3と比較して、SDKヘルパーモジュール407が追加されている点が異なる。SDKヘルパーモジュール407はSDKとしてISVに提供されるものの中の1つであり、ホストプログラム403と同時に開発される。ホストプログラム403にアクセスする前にクライアントプログラム401の認証を行うためのプログラムである。クライアントプログラム401はホストプログラム403にアクセスするために、まず最初にSDKヘルパーモジュール407が公開しているクライアントプログラム認証関数406を呼び出す必要がある。SDKヘルパーモジュール407の処理内容については図5を用いて後述する。その後SDKヘルパーモジュール407はホストプログラム403が内部的に公開しているクライアントプログラム内部認証関数408を呼び出す。ホストプログラム403は、正しく認証できた場合にはクライアントプログラムプロセス404と関連付けられる一意の認証コードを生成する。ホストプログラム403の処理については図6を用いて後述する。ホストプログラム403は最終的に前述の関数の戻り値として前述の認証コードをSDKヘルパーモジュール407へ返す。この認証コードはそのままクライアントプログラム401へ戻される。クライアントプログラム401は認証されたことを確認後、図3での説明と同様に公開関数402を呼び出し、ホストプログラム403へとアクセスし動作するのだが、その際、呼び出す公開関数402の種類によっては前記戻された認証コードを引数として指定する必要がある。公開関数402はホストプログラム403が公開するものであり、その処理自体もホストプログラム403の中で実行される。その引数に認証コード803の指定が必要か否かは公開関数402の構文として予め定められているものであり、例えばユーザのログインを行う公開関数402を呼び出す場合には認証コードを引数に指定しなくてはいけなかったり、単にホストプログラム403のバージョン情報を取得するだけの公開関数402ならば認証コードの指定は不要など、必要に応じて予め決められている。クライアントプログラム401は、以後、必要に応じてこの認証コードを引数の1つとして公開関数402を呼び出す。
【００１９】
続いて、図4で示されるSDKヘルパーモジュール407の処理内容について図5を用いて説明する。
【００２０】
SDKヘルパーモジュール407はクライアントプログラム認証関数406が呼び出されると、S501にてOSの提供するシステム関数を用いてクライアントプログラムプロセス404のプロセスIDを取得する。続いてそれを手掛かりに同じくOSの提供するシステム関数を用いてS502にてクライアントプログラム401の実行ファイルへのパスを取得する。その後S503にて、前記取得したクライアントプログラム401の実行ファイルへのパスを引数に、ホストプログラム403が内部的に公開しているクライアントプログラム内部認証関数408を呼び出す。
【００２１】
続いてクライアントプログラム認証内部関数408が呼び出されたホストプログラム403の処理について図6を用いて説明する。
【００２２】
ホストプログラム403には、予めアクセスを許可するクライアントプログラム のファイルパスとそのアクセスレベルが設定されている。ファイルパスとアクセスレベルの設定内容については図7のアクセス管理表を用いて後述する。
【００２３】
S601にて、ホストプログラム403はクライアントプログラム認証内部関数408の引数として渡されたファイルパスを読み出す。続いてS602にて、そのファイルパスがアクセス管理表で設定されているか否かを判断する。もしも設定されていない場合には、S603にてアクセス管理表に設定されていない事を意味する0を認証結果とする。認証結果とはクライアントプログラム401の認証を行った結果を記録するログ情報に記録される値であり、図8を用いて後述される。次に、S602にて引数として渡されたファイルパスがアクセス管理表で設定されている場合にはS608へ進み、認証ログを参照する。認証ログとはクライアントプログラム401の認証を行った結果を随時記録するログ情報であり、詳細については図8を用いて後述する。S608では、認証ログで認証結果が-1となっていないかを判断する。もしも認証コードが-1であったならばS609へと進み、改めて認証結果を-1とする。これは、図9を用いて後述する公開関数402が呼び出された場合のホストプログラム403の処理に関係し、公開関数402が正しい認証コードで呼び出されなかった場合に不正なクライアントプログラムであると判断し、以後のアクセスを禁止する目的としてホストプログラム403が認証ログに-1と記録するものである。S608にて認証結果が-1でない場合にはS604へと進む。S604にて0と-1以外のランダムな英数文字の5桁の認証コードを生成する。認証コードを毎回ランダムに生成することで、もしも不正なクライアントプログラムによって認証コードが一度解読されたとしても、度重なるアクセスを防止することが出来る。続いてS604にて生成した認証コードをアクセス管理表の該当する実行ファイルパスに相当する箇所に書き換える。続いてS610にて生成した認証コードを認証結果とする。その後S605にて、クライアントプログラム認証内部関数408の引数として渡された実行ファイルのパスと、前記認証結果を別途認証ログに記録しておく。続いてS606にて、認証コードをクライアントプログラム認証内部関数408の返値として戻す。
【００２４】
続いて前述のアクセス管理表について図7を用いて説明する。
【００２５】
アクセス管理表には、実行ファイルパス701、アクセスレベル702、認証コード703が管理されている。図7では5つの設定がされている場合の例であるが、これより少なくとも多くとも良い。実行ファイルパス701とアクセスレベル702はエンドユーザあるいは管理者によって予め設定されるものである。実行ファイル701は文字列としてクライアントプログラム401の実行ファイルへのファイルパスが文字列として記録される。アクセスレベル702は、実行ファイルパス701に記された実行ファイルのアクセスレベルが記録される。アクセスレベルは4種類が設定可能である。図7の中では、例として参照可能なアクセスレベルを704〜707で記す。参照レベル704はファイル情報の参照のみが可能であり、ファイル自体の読み出しは不可能である。例えば文書ファイリングシステムの場合には、文書を格納するフォルダ名や文書名、更新日時などの文書情報は参照可能であるが、その文書そのものを読み出しファイルを取得することはできない。読み込みレベル705はファイルの読み出しは可能であるが、その文書情報の編集はもちろん文書自体の書き換えも行えない。変更レベル706は、文書情報の編集や文書そのものの書き換えは可能だが、文書を削除することはできない。削除レベル707は文書の削除が可能であり、全ての操作が可能であることを意味する。ただし、この実施例は上記4種類のアクセスレベルの設定が可能な場合を例に記述しているが、実際にはそれ以上でもそれ以下でも良い。例えば、実行ファイル701に相当するクライアントプログラム401のアクセスを許可するか否かだけのフラグ値でも良い。認証コード703は、S603またはS604にて生成されたものである。認証コードのデフォルト値は認証不可を意味する0である。認証コードはホストプログラムプロセス405が存在する間その値は保持されるが、ホストプログラムプロセス405が終了し再度起動された場合にはデフォルト値に初期化される。
【００２６】
続いてS605にて記録される認証ログついて図8を用いて説明する。
【００２７】
認証ログには、認証を行った時刻S801、クライアントプログラム認証内部関数408の引数で渡された実行ファイルパス802、認証結果803、そして認証箇所804の4つが記録される。認証箇所804は整数であり、その認証がクライアントプログラム認証内部関数408で行われた場合には1、公開関数402の呼び出し時に行われた認証ならば2となる。認証ログはS605の手順が実行される度に追加して記録されていくものであり、かつ、ホストプログラム403から任意のタイミングで参照・追記されていくものである。S605の手順以外の場合にホストプログラム403から参照・追記される処理については図9を用いて後述する。認証ログはクライアントプログラム401やSDKヘルパーモジュール407から参照することはできない。認証ログはホストプログラムプロセス405の終了後も保持される。メモリやハードディスクドライブなどの記録メディア上に記録されたり、あるいは他のPCや記録装置に転送され、そこで記録される場合もある。
【００２８】
続いてクライアントプログラム401から公開関数402が呼び出された場合のホストプログラム403の処理について図9を用いて説明する。
【００２９】
まず、図4で説明した通り、クライアントプログラム401は、必要に応じてクライアントプログラム認証内部関数408の戻り値である認証コード803を利用して公開関数402を呼び出す。S901にて、ホストプログラム403は引数に認証コード803が含まれるか否かを確認し、含まれている場合にはS902へと進む。含まれていない場合にはS903へと進む。ただし、S901は、実際には公開関数402の構文として予め定められているものであり、プログラム実行中に実際に判断しない場合がある。その場合は、呼び出された個々の公開関数402の中の処理内容として予めプログラミングされている。S902にて、引数として指定された認証コードと、図7に示されるアクセス管理表の認証コード703の中に記録されているものとで一致するものがあるか否かを判断する。一致するものがある場合にはS903へ進み、一致するものがない場合はS908へと進む。続いてS903にて図8に示される認証ログを時刻が新しい順に検索し、引数として渡された認証コードが認証結果803に存在するか否かを判断する。存在する場合にはS904へ進む。存在しない場合は、過去に認証されたことがないことを意味し、つまり引数として渡された認証コードも不正であると判断できるためS908へと進む。続いてS903にて行った認証ログの検索で該当した認証結果803に該当する実行ファイルパス802を取得する。続いてS905にて認証ログにてその時間以後に同名の実行ファイルパスが存在しないか否かを検索する。存在しない場合にはS906へと進み、もしも存在するならば、それは正しく認証された後に何らかの理由によって認証が不正だったことを意味するため、S908へと進む。S906では、認証が正しく行われた事となり、図8にて説明した通り認証ログへ追記する。ただし、もちろん毎回認証ログへ記録する必要はない。関数が正常に認証された事を全て記録する必要がない場合には記録せず、認証失敗の場合のみ記録することが可能である。もしくは、特定の関数の場合にのみ常にログを記録し、それ以外の場合には記録をしないということも設定可能であし、またはアクセスレベルによって記録する外部プログラム、記録しない外部プログラムを設定することが可能である。これらの設定は必要に応じて自由に設定することが可能であり、例えば予めプログラミングされている場合もあれば、図7に示すアクセス管理表を拡張した形態でエンドユーザもしくは管理者に設定可能とすることもできる。次に、S907では図7に記された亜アクセス管理表に設定された認証コード703の中から、引数として指定された認証コードに一致するものを探し、該当したもののアクセスレベル702を読み出す。続いてS909にて、前記読み出したアクセスレベルに従って、可能な範囲にて公開関数402の処理を実行する。例えば今呼び出された公開関数402が文書名の変更関数であった場合で、かつ、アクセスレベルが参照であった場合には、実際には文書名の変更は行われず、例えばアクセスレベルエラーをクライアントプログラム401へ返すこととなる。
【００３０】
公開関数402の処理を実行する。S908では、認証が正しく行われなかったこととなり、公開関数の処理を実行せずに中断し、更に認証結果として-1を図8で説明した通り認証ログに追記する。
【００３１】
以上、図3のプログラム構成の場合を例に、図4以降の説明を行ってきたが、図１のプログラム構成の場合にはホストプログラム102が、SDKヘルパーモジュール407とホストプログラム403の処理を併せ持ち、同様の機能を実現できる。
【００３２】
同じく、図２のプログラム構成の場合には、COMサーバーモジュール202がSDKヘルパーモジュール407の処理を行うことで、同様の機能を実現できる。
【００３３】
続いて、アクセスレベルとアクセス制限の設定並びにアクセス制限方法について図10を用いて説明する。ここで、ホストプログラム102が電子文書管理システムであり、複数の電子文書がフォルダ階層をもったデータベース内に格納されるアプリケーションプログラムであると具体的に仮定する。同じく、クライアントプログラム101は公開関数103を呼び出し、格納されている電子文書に対してアクセスすると仮定する。電子文書管理システムは複数のユーザで共有されえるものであり、クライアントプログラム101から公開関数103を呼び出してその機能を利用するためには、特定のユーザでホストプログラム102へログインする必要がある。以降、説明を続ける。
【００３４】
ユーザは不審アクセス1001として複数設定しておくことができる。不審アクセスは予めホストプログラム102にて用意されているものであるが、回数や頻度についてユーザが任意に設定できるようになっている。
【００３５】
例えば図10では3つの不審アクセス1003, 1004, 1005が設定され、それぞれについて、その不審アクセスが行われた場合のアクセス制限1002の制限内容が設定されている。1つ目の不審アクセス1003の場合は、アクセス権が与えられていない文書の属性情報を3回連続で変更しようとした場合に不審アクセスと見なすことになる。ここで、アクセス権とは文書やフォルダそれぞれに設定されるものであり、特定のユーザ毎にどのようなアクセスを許可するのかを設定するものである。例えばアクセス権には一切不可・参照・読み取り・書き込み・削除という5段階あり、フォルダや文書毎に特定のユーザに対してどの段階のアクセス権を与えるかを予め設定しておくことができるものである。例えば文書Aに対して参照アクセス権が設定されているユーザがいる場合、そのユーザは文書Aの文書名を取得することは可能だが、文書Aを開いたり編集することはできない。不審アクセス1003は、アクセス権が設定されていないユーザであるにも関わらず文書の名称や更新日時などの属性情報を取得しようとする場合のものである。2重下線1009で示される「3回連続」という部分をユーザが任意に設定可能とすることができる。ユーザは回数を変更することも可能であるし、また、連続ではなくプログラム起動以来の総計とすることも可能である。不審アクセス1004は、アクセス権が設定されていないユーザであるにも関わらず文書をエクスポートしようと試みた場合のものである。エクスポートとは、電子ファイリングアプリケーションプログラムのデータベース内から、電子文書データを取り出すことである。この場合も同じく、2重下線1010で示される「過去5回」という部分をユーザが任意に設定可能である。ユーザは回数を変更することも可能であるし、また、過去に遡っての総計ではなく連続とすることも可能である。不審アクセス1005は、アクセス権が設定されていないユーザであるにも関わらず、複数のフォルダに渡ってフォルダ内の全ての文書の属性情報を取得しようと試みた場合のものである。2重下線1011で示される「5つ」という部分をユーザが任意に設定することが可能である。
【００３６】
続いてアクセス制限1006, 1007, 1008は、それぞれ不審アクセス1003, 1004, 1005が行われた場合に、それ以後どのようなアクセス制限を行うかについて設定されている。アクセス制限1006の場合には、それ以後、文書の属性情報の取得あるいは変更を一切禁ずることとなる。例えば、それまで文書名を取得できていた文書であっても、それ以後は文書名を取得するための公開関数103を呼び出すとエラー終了となるようになる。これによりクライアントプログラム101は、文書名からどのような文書がデータベース内に格納されているのかを知ることができなくなる。不審アクセス1007の場合にはその後一切のアクセスが出来なくなる。全ての公開関数103がエラー終了となる。不審アクセス1008は実在しない架空のフォルダ情報を与えるものである。つまり、偽りの情報を渡すことで不正な疑いのあるクライアントプログラム101に気付かれること無く、本当の情報を隠蔽することが可能となる。架空のフォルダ情報は予め複数パターンの情報がホストプログラム102に登録されている。場合によってはランダムにホストプログラム102が架空のフォルダ情報を生成することも可能である。架空のフォルダ情報では、あたかも本当にフォルダ階層が実在するように構成され、各フォルダ内には架空の文書も複数配置される。もちろんフォルダや文書に関する属性情報も、実在するフォルダや文書の場合と同様に取得／変更することが可能である。
【００３７】
ホストプログラム102は、設定された不審アクセス1003, 1004, 1005に該当するか否かを常に監視する。設定された不審アクセス毎に監視すべき公開関数103とその結果が予め登録されており、例えば不審アクセス1003では文書名を取得する公開関数103を実行した場合に、無アクセス権による実行不可能エラーが発生するか否かを監視するよう登録されている。ここで、公開関数103は正しく処理を実行できなかった場合には、その理由を判別するために固有のエラーコードを返すようになっている。つまり、文書名を取得する公開関数103を実行した場合、アクセス権が設定されていないため実行不可能というエラー番号が公開関数103の戻り値として返したかどうかをホストプログラム102は監視しており、もしも該当した場合には不審アクセス1003の設定に該当すると判断し、その後アクセス制限1006を実行することになる。また更にホストプログラム102は、例えば不審アクセス1003の中の「3回連続」という2重線1009の条件を満たすか否かを監視する必要があるため、監視すべき公開関数103の実行結果を逐次履歴として記録する。これはメモリ上に蓄積する場合もあれば、ログファイルなどに書き出す場合も在る。更にこの履歴は複数の公開関数103に関するまとまった履歴である場合もあれば、それぞれの公開関数103毎に個別に履歴として記録される場合も在る。ホストプログラム102は、監視すべき公開関数103の処理終了時に該当する履歴を参照し、2重線1009の条件を満たすか否かを判断し、満たした場合にアクセス制限1006を実行することになる。更に、設定されているアクセス制限1002を実行するだけでなく、同時に不審なアクセスがあったこと並びにアクセス制限を行ったことと、不審なアクセスの内容とその後実行するアクセス制限内容をログとして記録することも行う。ログには時刻情報と共にクライアントプログラム101に関する情報も同時に記録される。あるいは、ログに記録する情報と同じものを予め設定されているメールアドレス宛てにメールを送信することも行う。ログに記録するか、メール送信するか、それぞれについては予めユーザが設定可能である。
【００３８】
以上アクセスレベルとアクセス制限の設定並びにアクセス制限方法について図10を用いて説明してきたが、不審アクセス1001とアクセス制限1002は、ユーザが設定することもあれば、予めホストプログラム102に設定されている場合もある。
【図面の簡単な説明】
【００３９】
【図１】一般的なプログラム構成例その１
【図２】一般的なプログラム構成例その２
【図３】一般的なプログラム構成例その３
【図４】本実施例における特徴的なプログラム構成例
【図５】SDKヘルパーモジュールのフローチャート
【図６】ホストプログラムのフローチャートその１
【図７】アクセス管理表
【図８】認証ログ
【図９】ホストプログラムのフローチャートその２
【図１０】不審アクセスとアクセス制限の設定
【図１】
2007026081.tif 000003
【図２】
2007026081.tif 000004
【図３】
2007026081.tif 000005
【図４】
2007026081.tif 000006
【図５】
2007026081.tif 000007
【図６】
2007026081.tif 000008
【図７】
2007026081.tif 000009
【図８】
2007026081.tif 000010
【図９】
2007026081.tif 000011
【図１０】
2007026081.tif 000012