(57)【要約】【課題】代理エージェントがデータベースをアクセスする際の悪意を持ったアクセスを簡易な手法で阻止できるようにする。【解決手段】仲介エージェントは、代理エージェントから呼び出される、代理エージェントから変更できないようにしたアクセス依頼メソッドをもち、ユーザからの代理エージェントへのデータベースアクセス依頼を受け取る。仲介エージェントは、アクセスオブジェクトを生成し、代理エージェントからアクセスできないように認証情報を設定し、該アクセスオブジェクトを代理エージェントに渡す。代理エージェントは、仲介エージェントから受け取ったアクセスオブジェクトを用いてデータベースにアクセスを行う。アクセス結果はアクセスオブジェクトに格納される。代理エージェントがそのアクセスオブジェクトを取得して、仲介エージェントに渡し、仲介エージェントがそのアクセス結果をユーザに渡す。【選択図】図２
2008269625.tif 000002
【特許請求の範囲】
【請求項１】
利用者端末に接続され、ユーザの代理としてデータベースへアクセスを行う代理処理部と、前記代理処理部の仲介を行う仲介処理部を備えたデータベースアクセス制御装置におけるデータベースアクセス制御方法であって、
前記代理処理部は前記仲介処理部を拡張したクラスとしておき、
さらに、前記仲介処理部クラスにあるアクセス依頼メソッドにfinalize修飾子をつけておき、
前記仲介処理部は、前記利用者端末からのアクセス依頼を受け取るステップと、データベースにアクセスするためのアクセスオブジェクトを生成するステップと、前記代理処理部へデータベースへのアクセスを依頼するステップと、前記代理処理部から受け取ったアクセス結果ないし処理結果を前記利用者端末に送出するステップとを有し、
前記代理処理部は前記アクセスオブジェクトを用いてデータベースアクセスを行い、アクセス結果が格納されたアクセスオブジェクトを取得するステップと、該アクセス結果ないし処理結果を前記仲介処理部へ返却するステップとを有する、
ことを特徴とするデータベースアクセス制御方法。
【請求項２】
請求項１記載のデータベースアクセス制御方法において、
前記アクセスオブジェクト内の、データベース認証情報を格納する変数のスコープを可視性修飾子をつけないデフォルトコープに設定しておき、
さらに、代理処理部クラスを異なるパッケージとしておき、
前記仲介処理部は、前記アクセスオブジェクトにデータベース認証情報を設定するステップをさらに有する、
ことを特徴とするデータベースアクセス制御方法。
【請求項３】
利用者端末に接続され、ユーザの代理としてデータベースへアクセスを行う代理処理部と、前記代理処理部の仲介を行う仲介処理部を備えたデータベースアクセス制御装置としてのコンピュータで実行可能なプログラムであって、
前記代理処理部は前記仲介処理部を拡張したクラスとしておき、
さらに、前記仲介処理部クラスにあるアクセス依頼メソッドにfinalize修飾子をつけておき、
コンピュータに、
前記仲介処理部が、前記利用者端末からのアクセス依頼を受け取るステップ、データベースにアクセスするためのアクセスオブジェクトを生成するステップ、前記代理処理部へデータベースへのアクセスを依頼するステップ、前記代理処理部から受け取ったアクセス結果ないし処理結果を前記利用者端末に送出するステップ、
前記代理処理部が、前記アクセスオブジェクトを用いてデータベースアクセスを行い、アクセス結果が格納されたアクセスオブジェクトを取得するステップ、該アクセス結果ないし処理結果を前記仲介処理部へ返却するステップ、
を実行させるためのプログラム。
【請求項４】
請求項３記載のプログラムにおいて、
前記アクセスオブジェクト内の、データベース認証情報を格納する変数のスコープを可視性修飾子をつけないデフォルトコープに設定しておき、
さらに、代理処理部クラスを異なるパッケージとしておき、
コンピュータに、
前記仲介処理部が、前記アクセスオブジェクトにデータベース認証情報を設定するステップ、
をさらに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースのアクセス制御技術に関し、詳しくは、ユーザの代理として代理エージェントがデータベースへアクセスを行う際のデータベースアクセス制御方法及びそのプログラムに関する。
【背景技術】
【０００２】
一般にデータベースには、複数のユーザがデータを保存しているため、どのユーザがどのデータを登録、参照、更新、削除できるかはデータベースのアクセス制御機構によって制御されている。以下、データベースへのデータの登録、参照、更新、削除をまとめてデータベースへのアクセスと呼ぶことにする。例えば、データベースのアクセス制御機構では、ユーザＡのデータにはユーザＢはアクセスできず、またユーザＢのデータにはユーザＡはアクセスできないようにアクセス制御が行われる。
【０００３】
このデータベースのアクセス制御方法としては、従来から、ユーザがデータベースに対して渡すユーザＩＤとパスワードの組等の認証情報を、データベースのアクセス制御機構にあらかじめ登録してある認証情報と比較することによりアクセスしようとしているユーザを特定し、次に特定されたユーザに対してどのデータにアクセスして良いかが設定されているアクセス制御リスト(Access  Control  List)に基づいて各データのアクセスに対しての許可、不許可を決定するという方式がある。これは既存の多くのデータベースに用いられている方法であり、データベースをアクセスするための言語の規格であるＳＱＬ９２ではgrant文、revoke文によってアクセス制御リストにアクセス権限の情報を追加、削除することにより、ユーザに対するデータへのアクセス権限の付与、取り消しを行うよう規定されている。
【０００４】
上記のアクセス制御方式はデータベースへのアクセスがデータベースにデータを格納しているユーザのみの場合のものである。一方、それとは異なる形態として、データベースへのアクセスをデータを格納しているユーザではなく、ユーザの代わりにデータベースへのアクセスを行う代理エージェントが行う場合がある。これはユーザが代理エージェントにデータベースへのアクセスを依頼するという方法で行われる。これは、例えばデータを加工処理する機能を代理エージェントが提供しており、ユーザはデータベースに保存してあるデータを代理エージェントに加工処理してもらい、ユーザはその処理結果を受け取るような場合である。
【０００５】
ユーザの代理として代理エージェントがデータベースへアクセスを行う場合に考慮すべきことは、代理エージェントが依頼主のユーザのアクセス権限に基づいてデータベースへのアクセスを行うようにしなければならないという点がある。例えば、あるユーザＡが代理エージェントに対してデータベースへのアクセスを依頼するときに、代理エージェントはユーザＡに対してアクセスが許可されているデータしかアクセスできないようにアクセス制御されなければならない。すなわちユーザＡの依頼にもかかわらず、代理エージェントがユーザＡに許可されていないユーザＢのデータにアクセスし、その情報をユーザＡに返すようなことはあってはならない。代理エージェントが依頼主のユーザのアクセス権限に基づいてデータベースにアクセスすることをユーザから代理エージェントへのアクセス権限の委譲と呼ぶ。
【０００６】
上記のような条件を満たすアクセス制御方法のもっとも単純なものとしては、ユーザが代理エージェントに対しデータベースにアクセスするための自分のユーザＩＤやパスワード等の認証情報を渡し、代理エージェントがその認証情報を利用してデータベースにアクセスしてそのユーザのデータを取得するという方法がある。
【０００７】
また、別の方法としては、デジタル署名技術や暗号通信技術を利用して、ユーザによる代理エージェントへのアクセス権限の委譲が正しいものかどうかをデジタル証明書やデジタル署名、暗号化や一方向関数を用いて確認するものがある(例えば、特許文献１、特許文献２参照)。
【０００８】
【特許文献１】特開２００１−１０１０５４号公報
【特許文献２】特開２００２−１６３２３５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかし、ユーザが代理エージェントへ自分の認証情報を渡し、代理エージェントがその認証情報を利用してデータベースへアクセスする方法は、一般に代理エージェントはユーザとは異なる第三者の実体であり、ユーザは代理エージェントを必ずしも信頼することができない。そのため、例えばユーザＡが代理エージェントにユーザＩＤとパスワード等の認証情報を渡してしまうと、代理エージェントはその認証情報を内部に保持しておき、他ユーザであるユーザＢがアクセスしたときにその保持しておいた認証情報を使ってユーザＡになりすまし、ユーザＢには許可されていないはずのユーザＡのデータにアクセスを許してしまうというような悪意を持った処理を代理エージェントが行わないと否定できず、ユーザは代理エージェントに処理を依頼することができない。
【００１０】
また、デジタル署名技術や暗号通信技術を利用してアクセス権限の委譲等を確認する方法では、デジタル証明書やデジタル署名、暗号化、一方向関数など複雑な処理を行わなければならず、またユーザ、代理エージェント、データベース間で鍵情報や認証情報などのやりとりを何ステップも行わなければならない。またこれらの方法はアクセス権限を委譲するための方式に関してのみであり、委譲されたアクセス権限に基づいてデータベースにアクセスした結果が委譲もとのユーザに確実に返されることは保証されておらず、ユーザがデータベースのアクセスを依頼する代理エージェントへの適用には適切でない。
【００１１】
そこで、本発明は、ユーザの代理として代理エージェントがデータベースアクセスを行う際に、代理エージェントが悪意を持ってデータベースにアクセスすることが不可能な仕組みを簡易な手法で提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明は、ユーザの代理として代理エージェントがデータベースへアクセスを行うデータベースアクセス制御装置に、代理エージェント機能の他に仲介エージェント機能を用意する。仲介エージェントは、データベースのアクセス制御の管理主体と同一とし、ユーザは仲介エージェントを信頼できるものとする。
【００１３】
ユーザからの代理エージェントへのデータベースアクセス要求を仲介エージェントが受け取る。仲介エージェントは、データベースにアクセスするためのアクセスオブジェクトを生成し、ユーザからのアクセス依頼を代理エージェントに渡すと同時に生成したアクセスオブジェクトを代理エージェントに渡す。代理エージェントは、仲介エージェントから受け取ったアクセスオブジェクトを用いてデータベースにアクセスを行う。データベースをアクセスした結果はアクセスオブジェクトに格納される。代理エージェントがそのアクセスオブジェクトを取得し、該アクセスオブジェクトあるいはアクセスオブジェクトに格納されたアクセス結果を仲介エージェントに渡し、仲介エージェントがそのアクセス結果をユーザに渡す。
【００１４】
仲介エージェントは、代理エージェントから呼び出される、代理エージェントから変更できないようにしたアクセス依頼メソッドをもち、ユーザからの代理エージェントへのアクセス依頼を受け取る。これにより、代理エージェントが、ユーザからアクセス依頼を受け取る仲介エージェントのアクセス依頼メソッドをオーバーライドするためのメソッドを作成して処理を横取りすることを防ぐ。
【００１５】
仲介エージェントは、ユーザから仲介エージェントに渡されたユーザＩＤやパスワード等の認証情報を仲介エージェントが生成するアクセスオブジェクトに埋め込む。この認証情報は代理エージェントから参照できないように隠蔽しておくことにより、代理エージェントはユーザの認証情報にアクセスできないため、ユーザの認証情報を盗むことはできず、また認証情報をかいざんして違うユーザからのアクセスと偽ってデータベースにアクセスすることも不可能になる。
【００１６】
また、データベースへアクセスした結果はアクセスオブジェクトに格納され、代理エージェントはユーザに直接アクセスオブジェクト内に格納されているアクセス結果を返すことはできず、仲介エージェントにそのアクセス結果を返却し、仲介エージェントがそのアクセス結果をユーザに返却するので、代理エージェントが依頼したユーザ以外の他ユーザにアクセス結果を返すということも不可能になる。
【００１７】
これにより、代理エージェントは依頼を受けたユーザのアクセス権限でデータベースにアクセスし、また依頼を受けたユーザにしか処理結果を返すことができないため、悪意を持った処理を行うことが不可能になり、ユーザは安心して代理エージェントに自分のデータをアクセスさせる処理を依頼することが可能になる。
【発明の効果】
【００１８】
本発明によれば、代理エージェントは依頼主のユーザ以外のアクセス権限でデータベースにアクセスできず、またアクセス結果も依頼主のユーザにしか返すことができないため、ユーザは悪意を持った行為を行われることを心配することなく、データベースを検索する処理、またその検索結果を加工処理する代理エージェントを利用することが可能になる。それにより、ユーザは第三者が用意する様々な有用な処理を行う代理エージェントを利用することが可能になる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の一実施の形態を図面により詳しく説明する。  
図１に本発明が適用されるシステム全体の構成図を示す。図１において、１００は各ユーザの利用者端末装置、２００はインターネット等のネットワーク、３００は本発明にかかるデータベースアクセス制御装置、４００は複数のユーザで共用されるデータベースである。データベース４００は、ユーザのデータ、あらかじめ登録されたユーザの認証情報等を保持する。さらに、データベース４００はアクセス制御機構を内蔵するが、図１では省略する。このデータベースアクセス制御装置３００とデータベース４００との間は直接接続あるいはネットワークを介しての接続のいずれでもよい。
【００２０】
データベースアクセス制御装置３００は、後述するように、代理エージェント機能としての代理処理部３１０、仲介エージェント機能としての仲介処理部３２０、及び、アクセスオブジェクト機能としてのアクセス処理部３３０から構成される。
【００２１】
データベースアクセス制御装置３００の実体はコンピュータであり、ＣＰＵやメモリ等のハードウエア資源の環境下で、ソフトウエアとしてのプログラムが動作して所望の処理を実行する。ここでは、ユーザの代理としてデータベース４００へアクセスし、該当ユーザの利用者端末１００へアクセス結果を渡す処理を実行する。
【００２２】
以下では、データベースアクセス制御装置３００の代理処理部３１０、仲介処理部３２０、アクセス処理部３３０をそれぞれ代理エージェント、仲介エージェント、アクセスオブジェクトと呼び、オブジェクト指向のプログラミング言語によるプログラムとして実施した例を説明する。代理エージェント３１０は仲介エージェント３２０を拡張したクラスとして実現する。
【００２３】
図２に本実施例の全体処理シーケンス例を示す。また、図３に代理エージェント３１０の処理フロー例、図４に仲介エージェント３２０の処理フロー例を示す。
【００２４】
ユーザは利用者端末装置１００から代理エージェント３１０に対してアクセス依頼メソッドまたは関数（以下、メソッドと省略）を呼び出すことにより、データベース４００へのアクセスの依頼を行う。ただし、代理エージェント３１０は仲介エージェント３２０を拡張したクラスであり、ユーザが呼び出すメソッドはスーパークラスの仲介エージェントクラスにあるメソッドとしておくことにより、結果的に代理エージェント３１０ではなく仲介エージェント３２０のメソッドが呼び出される（図２の手続き１）。また、その際、拡張したクラスである代理エージェント３１０でそのメソッドをオーバーライドできないようにしておく。例えばJava言語であればアクセス依頼メソッドにfinalize修飾子をつける。これにより代理エージェント３１０が、ユーザからアクセスの依頼を受ける仲介エージェント３２０のアクセス依頼メソッドをオーバーライドする偽のメソッドを作成して処理を横取りすることを防ぐようにする。また、ユーザが仲介エージェント３２０のメソッドを呼び出すときに、その引数などで検索条件及びユーザＩＤとパスワードなどのユーザの認証情報を渡す。
【００２５】
仲介エージェント３２０は、ユーザからアクセス依頼を受け取ると（図４の２００１）、アクセスを依頼したユーザを認証、特定し、その認証情報を保持しておく（図４の２００２）。このユーザを認証、特定する方法としては、ＷＷＷアプリケーションで用いられているセッションＩＤを用いて行う方法がある。次に、仲介エージェント３２０は、ユーザからのアクセス依頼を代理エージェント３１０に渡す（図２の手続き２、図４の２００３）。この時、仲介エージェント３２０は、ユーザからの検索条件は代理エージェント３２０へ渡すが、認証情報を渡すことはしない。
【００２６】
ユーザからのアクセス依頼を仲介エージェント３２０から代理エージェント３１０に渡すことにより、代理エージェント３１０の処理が開始する。代理エージェント３１０は、アクセス依頼を受け取ると（図３の１００１）、ユーザの検索条件を保持し（図３の１００２）、仲介エージェント３２０に対してデータベース４００を検索するためのアクセスオブジェクトの生成を依頼する（図２の手続き３、図３の１００３）。アクセスオブジェクトの生成を依頼された仲介エージェント３２０は、アクセスオブジェクト３３０を生成し（図４の２００４、２００５）、先に保持したデータベースへのアクセスを行うためのユーザＩＤ、パスワード等の認証情報（データベース認証情報）をアクセスオブジェクト３３０内に設定する（図４の２００６）。図５にアクセスオブジェクトの構成例を示す。最初はデータベース認証情報、アクセス結果情報はＮＵＬＬである。このアクセスオブジエクト内のデータベース認証情報は代理エージェント３１０からは参照できないようにしておく。例えばJava言語であれば、認証情報を格納した変数のスコープを可視性修飾子をつけないデフォルトスコープに設定し、代理エージェントクラスを異なるパッケージとすれば、代理エージェントクラスから認証情報を格納した変数にアクセスすることを防ぐことができる。仲介エージェント３２０は、生成したアクセスオブジェクト３３０を代理エージェント３１０に渡す（図２の手続き４、図４の２００７）。
【００２７】
次に、仲介エージェント３２０からアクセスオブジェクト３３０を受け取った代理エージェント３１０は、該アクセスオブジェクト３３０を用いて、次のようにしてデータベース４００のアクセスを実行する。代理エージェント３１０は、仲介エージェント３２０からアクセスオブジェクト３３０を受け取ると（図３の１００４）、アクセスオブジェクト３３０に検索条件などを設定して（図３の１００５）、データベースの検索や更新等のアクセスを依頼する（図２の手続き５、図３の１００６）。どのようなアクセスを依頼するかの指定方式としては、SQL文を渡す方式、アクセスオブジェクト３３０が用意したデータベースアクセスメソッドを利用する方式がある。例えば、図５の場合では、データベースアクセスメソッドの引数として検索条件などを設定してアクセスを依頼する。
【００２８】
代理エージェント３１０からデータベース４００のアクセス依頼（起動）を受けたアクセスオブジェクト３３０は、内部に保持されたデータベース認証情報を用いて、データベース４００に接続し、データベース４００へのアクセスを行う（図２の手続き６）。データベース４００のアクセス制御機構は、アクセスオブジェクト３３０から渡されるデータベース認証情報を、あらかじめ登録してある認証情報と比較することにより、アクセスを行おうとしているユーザを特定し、そのユーザに許可されているデータの範囲のみを対象として、依頼されたアクセス処理を行い、アクセス結果をアクセスオブジェクト３３０に返す（図２の手続き７）。データベース４００からアクセス結果を受け取ったアクセスオブジェクト３３０は、そのアクセス結果を内部に格納し、代理エージェント３１０へ返す（図２の手続き８）。
【００２９】
代理エージェント３１０は、データベース３４００へのアクセス処理を終えたアクセスオブジェクト３３０を受け取ると（図３の１００７）、そのアクセスオブジェクトを仲介エージェント３２０に返す（手続き９、図３の１００８、１０１０）。また、代理エージェント３１０は、受け取ったアクセスオブジェクト３３０をそのまま仲介エージェント３２０に返すのではなく、アクセスオブジェクト内に格納されたアクセス結果を取り出し、加工、編集、計算などの処理を行い、その処理結果を再びアクセスオブジェクト３３０に格納し、それを仲介エージェント３２０に返すということもありうる（図３の１００８、１００９、１０１０）。また、代理エージェント３１０は、仲介エージェント３２０にアクセスオブジェクト３３０をそのまま返すのではなく、アクセスオブジェクト３３０から取り出したアクセス結果またはそれに対する処理結果を返すということもありうる。この時点で、代理エージェント３１０の処理は終了となる。
【００３０】
仲介エージェント３２０は、代理エージェント３１０からアクセスオブジェクト３３０を受け取ると（図４の２００８）、依頼主のユーザの利用者端末１００へ、この受け取ったアクセスオブジェクト、またはそのアクセスオブジェクトから取り出したデータを返す（図２の手続き１０図４の２００９）。これにより、ユーザは代理エージェント３１０に依頼したデータベース４００へアクセスした結果を得ることができる。
【００３１】
上記した代理エージェント３１０と仲介エージェント３２０はデザインパターンのテンプレートメソッドを用いて実現することができる（テンプレートメソッドに関しては、例えば、結城浩著「Java言語で学ぶデザインパターン入門」ソフトバンク社 pp.３１「第３章Template  Method」に詳しい)。すなわち、仲介エージェント３２０がスーパークラスとなり、ユーザを認証する処理、アクセスオブジェクト３３０を生成する処理、代理エージェント３１０からアクセス結果を受け取りユーザに返却する処理などの共通のテンプレートとなる処理を記述し、一方、代理エージェント３１０がサブクラスとなり、データベース４００への具体的な検索処理やアクセス結果に所望処理を行う処理などのそれぞれの代理エージェント固有の具体的な処理を記述する。
【００３２】
なお、アクセスオブジェクトは、例えばメモリ内に記述して、代理エージェント３１０及び仲介エージェント３２０が該メモリをアクセスして所定の処理を行うことも可能である。この場合、代理エージェント３１０からは認証情報の格納領域をアクセスできないようにする。また、アクセス処理部３３０がアクセスオブジェクトの処理機能の実体として、該アクセス処理部３３０がアクセスオブジェクトのデータベースアクセスメソッドに基づいてデータベース４００を実際にアクセスする。
【００３３】
上述したように、図１で示したデータベースアクセス制御装置における各部の一部もしくは全部の処理機能をコンピュータのプログラムで構成し、そのプログラムをコンピュータを用いて実行して本発明を実現することができること、あるいは、図２、図３、図４で示した処理手順をコンピュータのプログラムで構成し、そのプログラムをコンピュータに実行させることができることは言うまでもない。また、コンピュータでその処理機能を実現するためのプログラム、あるいは、コンピュータにその処理手順を実行させるためのプログラムを、そのコンピュータが読み取り可能な記録媒体、例えば、ＦＤ、ＭＯ、ＲＯＭ、メモリカード、ＣＤ、ＤＶＤ、リムーバブルディスクなどに記録して、保存したり、提供したりすることができるとともに、インターネット等のネットワークを通してそのプログラムを配布したりすることが可能である。
【図面の簡単な説明】
【００３４】
【図１】本発明が適用されるシステム全体の構成図である。
【図２】本発明による処理シーケンス例である。
【図３】代理エージェントの処理フロー例である。
【図４】仲介エージェントの処理フロー例である。
【図５】アクセスオブジェクトの構成例である。
【符号の説明】
【００３５】
１００    利用者端末
２００    ネットワーク
３００    データベースアクセス制御装置
３１０    代理処理部（代理エージェント）
３２０    仲介処理部（仲介エージェント）
３３０    アクセス処理部（アクセスオブジェクト）
４００    データベース
【図１】
2008269625.tif 000003
【図２】
2008269625.tif 000004
【図３】
2008269625.tif 000005
【図４】
2008269625.tif 000006
【図５】
2008269625.tif 000007