説明

データベースアクセス制御方法及びプログラム

【課題】代理エージェントがデータベースをアクセスする際の悪意を持ったアクセスを簡易な手法で阻止できるようにする。
【解決手段】仲介エージェントは、代理エージェントから呼び出される、代理エージェントから変更できないようにしたアクセス依頼メソッドをもち、ユーザからの代理エージェントへのデータベースアクセス依頼を受け取る。仲介エージェントは、アクセスオブジェクトを生成し、代理エージェントからアクセスできないように認証情報を設定し、該アクセスオブジェクトを代理エージェントに渡す。代理エージェントは、仲介エージェントから受け取ったアクセスオブジェクトを用いてデータベースにアクセスを行う。アクセス結果はアクセスオブジェクトに格納される。代理エージェントがそのアクセスオブジェクトを取得して、仲介エージェントに渡し、仲介エージェントがそのアクセス結果をユーザに渡す。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データベースのアクセス制御技術に関し、詳しくは、ユーザの代理として代理エージェントがデータベースへアクセスを行う際のデータベースアクセス制御方法及びそのプログラムに関する。
【背景技術】
【0002】
一般にデータベースには、複数のユーザがデータを保存しているため、どのユーザがどのデータを登録、参照、更新、削除できるかはデータベースのアクセス制御機構によって制御されている。以下、データベースへのデータの登録、参照、更新、削除をまとめてデータベースへのアクセスと呼ぶことにする。例えば、データベースのアクセス制御機構では、ユーザAのデータにはユーザBはアクセスできず、またユーザBのデータにはユーザAはアクセスできないようにアクセス制御が行われる。
【0003】
このデータベースのアクセス制御方法としては、従来から、ユーザがデータベースに対して渡すユーザIDとパスワードの組等の認証情報を、データベースのアクセス制御機構にあらかじめ登録してある認証情報と比較することによりアクセスしようとしているユーザを特定し、次に特定されたユーザに対してどのデータにアクセスして良いかが設定されているアクセス制御リスト(Access Control List)に基づいて各データのアクセスに対しての許可、不許可を決定するという方式がある。これは既存の多くのデータベースに用いられている方法であり、データベースをアクセスするための言語の規格であるSQL92ではgrant文、revoke文によってアクセス制御リストにアクセス権限の情報を追加、削除することにより、ユーザに対するデータへのアクセス権限の付与、取り消しを行うよう規定されている。
【0004】
上記のアクセス制御方式はデータベースへのアクセスがデータベースにデータを格納しているユーザのみの場合のものである。一方、それとは異なる形態として、データベースへのアクセスをデータを格納しているユーザではなく、ユーザの代わりにデータベースへのアクセスを行う代理エージェントが行う場合がある。これはユーザが代理エージェントにデータベースへのアクセスを依頼するという方法で行われる。これは、例えばデータを加工処理する機能を代理エージェントが提供しており、ユーザはデータベースに保存してあるデータを代理エージェントに加工処理してもらい、ユーザはその処理結果を受け取るような場合である。
【0005】
ユーザの代理として代理エージェントがデータベースへアクセスを行う場合に考慮すべきことは、代理エージェントが依頼主のユーザのアクセス権限に基づいてデータベースへのアクセスを行うようにしなければならないという点がある。例えば、あるユーザAが代理エージェントに対してデータベースへのアクセスを依頼するときに、代理エージェントはユーザAに対してアクセスが許可されているデータしかアクセスできないようにアクセス制御されなければならない。すなわちユーザAの依頼にもかかわらず、代理エージェントがユーザAに許可されていないユーザBのデータにアクセスし、その情報をユーザAに返すようなことはあってはならない。代理エージェントが依頼主のユーザのアクセス権限に基づいてデータベースにアクセスすることをユーザから代理エージェントへのアクセス権限の委譲と呼ぶ。
【0006】
上記のような条件を満たすアクセス制御方法のもっとも単純なものとしては、ユーザが代理エージェントに対しデータベースにアクセスするための自分のユーザIDやパスワード等の認証情報を渡し、代理エージェントがその認証情報を利用してデータベースにアクセスしてそのユーザのデータを取得するという方法がある。
【0007】
また、別の方法としては、デジタル署名技術や暗号通信技術を利用して、ユーザによる代理エージェントへのアクセス権限の委譲が正しいものかどうかをデジタル証明書やデジタル署名、暗号化や一方向関数を用いて確認するものがある(例えば、特許文献1、特許文献2参照)。
【0008】
【特許文献1】特開2001−101054号公報
【特許文献2】特開2002−163235号公報
【発明の開示】
【発明が解決しようとする課題】
【0009】
しかし、ユーザが代理エージェントへ自分の認証情報を渡し、代理エージェントがその認証情報を利用してデータベースへアクセスする方法は、一般に代理エージェントはユーザとは異なる第三者の実体であり、ユーザは代理エージェントを必ずしも信頼することができない。そのため、例えばユーザAが代理エージェントにユーザIDとパスワード等の認証情報を渡してしまうと、代理エージェントはその認証情報を内部に保持しておき、他ユーザであるユーザBがアクセスしたときにその保持しておいた認証情報を使ってユーザAになりすまし、ユーザBには許可されていないはずのユーザAのデータにアクセスを許してしまうというような悪意を持った処理を代理エージェントが行わないと否定できず、ユーザは代理エージェントに処理を依頼することができない。
【0010】
また、デジタル署名技術や暗号通信技術を利用してアクセス権限の委譲等を確認する方法では、デジタル証明書やデジタル署名、暗号化、一方向関数など複雑な処理を行わなければならず、またユーザ、代理エージェント、データベース間で鍵情報や認証情報などのやりとりを何ステップも行わなければならない。またこれらの方法はアクセス権限を委譲するための方式に関してのみであり、委譲されたアクセス権限に基づいてデータベースにアクセスした結果が委譲もとのユーザに確実に返されることは保証されておらず、ユーザがデータベースのアクセスを依頼する代理エージェントへの適用には適切でない。
【0011】
そこで、本発明は、ユーザの代理として代理エージェントがデータベースアクセスを行う際に、代理エージェントが悪意を持ってデータベースにアクセスすることが不可能な仕組みを簡易な手法で提供することを目的とする。
【課題を解決するための手段】
【0012】
本発明は、ユーザの代理として代理エージェントがデータベースへアクセスを行うデータベースアクセス制御装置に、代理エージェント機能の他に仲介エージェント機能を用意する。仲介エージェントは、データベースのアクセス制御の管理主体と同一とし、ユーザは仲介エージェントを信頼できるものとする。
【0013】
ユーザからの代理エージェントへのデータベースアクセス要求を仲介エージェントが受け取る。仲介エージェントは、データベースにアクセスするためのアクセスオブジェクトを生成し、ユーザからのアクセス依頼を代理エージェントに渡すと同時に生成したアクセスオブジェクトを代理エージェントに渡す。代理エージェントは、仲介エージェントから受け取ったアクセスオブジェクトを用いてデータベースにアクセスを行う。データベースをアクセスした結果はアクセスオブジェクトに格納される。代理エージェントがそのアクセスオブジェクトを取得し、該アクセスオブジェクトあるいはアクセスオブジェクトに格納されたアクセス結果を仲介エージェントに渡し、仲介エージェントがそのアクセス結果をユーザに渡す。
【0014】
仲介エージェントは、代理エージェントから呼び出される、代理エージェントから変更できないようにしたアクセス依頼メソッドをもち、ユーザからの代理エージェントへのアクセス依頼を受け取る。これにより、代理エージェントが、ユーザからアクセス依頼を受け取る仲介エージェントのアクセス依頼メソッドをオーバーライドするためのメソッドを作成して処理を横取りすることを防ぐ。
【0015】
仲介エージェントは、ユーザから仲介エージェントに渡されたユーザIDやパスワード等の認証情報を仲介エージェントが生成するアクセスオブジェクトに埋め込む。この認証情報は代理エージェントから参照できないように隠蔽しておくことにより、代理エージェントはユーザの認証情報にアクセスできないため、ユーザの認証情報を盗むことはできず、また認証情報をかいざんして違うユーザからのアクセスと偽ってデータベースにアクセスすることも不可能になる。
【0016】
また、データベースへアクセスした結果はアクセスオブジェクトに格納され、代理エージェントはユーザに直接アクセスオブジェクト内に格納されているアクセス結果を返すことはできず、仲介エージェントにそのアクセス結果を返却し、仲介エージェントがそのアクセス結果をユーザに返却するので、代理エージェントが依頼したユーザ以外の他ユーザにアクセス結果を返すということも不可能になる。
【0017】
これにより、代理エージェントは依頼を受けたユーザのアクセス権限でデータベースにアクセスし、また依頼を受けたユーザにしか処理結果を返すことができないため、悪意を持った処理を行うことが不可能になり、ユーザは安心して代理エージェントに自分のデータをアクセスさせる処理を依頼することが可能になる。
【発明の効果】
【0018】
本発明によれば、代理エージェントは依頼主のユーザ以外のアクセス権限でデータベースにアクセスできず、またアクセス結果も依頼主のユーザにしか返すことができないため、ユーザは悪意を持った行為を行われることを心配することなく、データベースを検索する処理、またその検索結果を加工処理する代理エージェントを利用することが可能になる。それにより、ユーザは第三者が用意する様々な有用な処理を行う代理エージェントを利用することが可能になる。
【発明を実施するための最良の形態】
【0019】
以下、本発明の一実施の形態を図面により詳しく説明する。
図1に本発明が適用されるシステム全体の構成図を示す。図1において、100は各ユーザの利用者端末装置、200はインターネット等のネットワーク、300は本発明にかかるデータベースアクセス制御装置、400は複数のユーザで共用されるデータベースである。データベース400は、ユーザのデータ、あらかじめ登録されたユーザの認証情報等を保持する。さらに、データベース400はアクセス制御機構を内蔵するが、図1では省略する。このデータベースアクセス制御装置300とデータベース400との間は直接接続あるいはネットワークを介しての接続のいずれでもよい。
【0020】
データベースアクセス制御装置300は、後述するように、代理エージェント機能としての代理処理部310、仲介エージェント機能としての仲介処理部320、及び、アクセスオブジェクト機能としてのアクセス処理部330から構成される。
【0021】
データベースアクセス制御装置300の実体はコンピュータであり、CPUやメモリ等のハードウエア資源の環境下で、ソフトウエアとしてのプログラムが動作して所望の処理を実行する。ここでは、ユーザの代理としてデータベース400へアクセスし、該当ユーザの利用者端末100へアクセス結果を渡す処理を実行する。
【0022】
以下では、データベースアクセス制御装置300の代理処理部310、仲介処理部320、アクセス処理部330をそれぞれ代理エージェント、仲介エージェント、アクセスオブジェクトと呼び、オブジェクト指向のプログラミング言語によるプログラムとして実施した例を説明する。代理エージェント310は仲介エージェント320を拡張したクラスとして実現する。
【0023】
図2に本実施例の全体処理シーケンス例を示す。また、図3に代理エージェント310の処理フロー例、図4に仲介エージェント320の処理フロー例を示す。
【0024】
ユーザは利用者端末装置100から代理エージェント310に対してアクセス依頼メソッドまたは関数(以下、メソッドと省略)を呼び出すことにより、データベース400へのアクセスの依頼を行う。ただし、代理エージェント310は仲介エージェント320を拡張したクラスであり、ユーザが呼び出すメソッドはスーパークラスの仲介エージェントクラスにあるメソッドとしておくことにより、結果的に代理エージェント310ではなく仲介エージェント320のメソッドが呼び出される(図2の手続き1)。また、その際、拡張したクラスである代理エージェント310でそのメソッドをオーバーライドできないようにしておく。例えばJava言語であればアクセス依頼メソッドにfinalize修飾子をつける。これにより代理エージェント310が、ユーザからアクセスの依頼を受ける仲介エージェント320のアクセス依頼メソッドをオーバーライドする偽のメソッドを作成して処理を横取りすることを防ぐようにする。また、ユーザが仲介エージェント320のメソッドを呼び出すときに、その引数などで検索条件及びユーザIDとパスワードなどのユーザの認証情報を渡す。
【0025】
仲介エージェント320は、ユーザからアクセス依頼を受け取ると(図4の2001)、アクセスを依頼したユーザを認証、特定し、その認証情報を保持しておく(図4の2002)。このユーザを認証、特定する方法としては、WWWアプリケーションで用いられているセッションIDを用いて行う方法がある。次に、仲介エージェント320は、ユーザからのアクセス依頼を代理エージェント310に渡す(図2の手続き2、図4の2003)。この時、仲介エージェント320は、ユーザからの検索条件は代理エージェント320へ渡すが、認証情報を渡すことはしない。
【0026】
ユーザからのアクセス依頼を仲介エージェント320から代理エージェント310に渡すことにより、代理エージェント310の処理が開始する。代理エージェント310は、アクセス依頼を受け取ると(図3の1001)、ユーザの検索条件を保持し(図3の1002)、仲介エージェント320に対してデータベース400を検索するためのアクセスオブジェクトの生成を依頼する(図2の手続き3、図3の1003)。アクセスオブジェクトの生成を依頼された仲介エージェント320は、アクセスオブジェクト330を生成し(図4の2004、2005)、先に保持したデータベースへのアクセスを行うためのユーザID、パスワード等の認証情報(データベース認証情報)をアクセスオブジェクト330内に設定する(図4の2006)。図5にアクセスオブジェクトの構成例を示す。最初はデータベース認証情報、アクセス結果情報はNULLである。このアクセスオブジエクト内のデータベース認証情報は代理エージェント310からは参照できないようにしておく。例えばJava言語であれば、認証情報を格納した変数のスコープを可視性修飾子をつけないデフォルトスコープに設定し、代理エージェントクラスを異なるパッケージとすれば、代理エージェントクラスから認証情報を格納した変数にアクセスすることを防ぐことができる。仲介エージェント320は、生成したアクセスオブジェクト330を代理エージェント310に渡す(図2の手続き4、図4の2007)。
【0027】
次に、仲介エージェント320からアクセスオブジェクト330を受け取った代理エージェント310は、該アクセスオブジェクト330を用いて、次のようにしてデータベース400のアクセスを実行する。代理エージェント310は、仲介エージェント320からアクセスオブジェクト330を受け取ると(図3の1004)、アクセスオブジェクト330に検索条件などを設定して(図3の1005)、データベースの検索や更新等のアクセスを依頼する(図2の手続き5、図3の1006)。どのようなアクセスを依頼するかの指定方式としては、SQL文を渡す方式、アクセスオブジェクト330が用意したデータベースアクセスメソッドを利用する方式がある。例えば、図5の場合では、データベースアクセスメソッドの引数として検索条件などを設定してアクセスを依頼する。
【0028】
代理エージェント310からデータベース400のアクセス依頼(起動)を受けたアクセスオブジェクト330は、内部に保持されたデータベース認証情報を用いて、データベース400に接続し、データベース400へのアクセスを行う(図2の手続き6)。データベース400のアクセス制御機構は、アクセスオブジェクト330から渡されるデータベース認証情報を、あらかじめ登録してある認証情報と比較することにより、アクセスを行おうとしているユーザを特定し、そのユーザに許可されているデータの範囲のみを対象として、依頼されたアクセス処理を行い、アクセス結果をアクセスオブジェクト330に返す(図2の手続き7)。データベース400からアクセス結果を受け取ったアクセスオブジェクト330は、そのアクセス結果を内部に格納し、代理エージェント310へ返す(図2の手続き8)。
【0029】
代理エージェント310は、データベース3400へのアクセス処理を終えたアクセスオブジェクト330を受け取ると(図3の1007)、そのアクセスオブジェクトを仲介エージェント320に返す(手続き9、図3の1008、1010)。また、代理エージェント310は、受け取ったアクセスオブジェクト330をそのまま仲介エージェント320に返すのではなく、アクセスオブジェクト内に格納されたアクセス結果を取り出し、加工、編集、計算などの処理を行い、その処理結果を再びアクセスオブジェクト330に格納し、それを仲介エージェント320に返すということもありうる(図3の1008、1009、1010)。また、代理エージェント310は、仲介エージェント320にアクセスオブジェクト330をそのまま返すのではなく、アクセスオブジェクト330から取り出したアクセス結果またはそれに対する処理結果を返すということもありうる。この時点で、代理エージェント310の処理は終了となる。
【0030】
仲介エージェント320は、代理エージェント310からアクセスオブジェクト330を受け取ると(図4の2008)、依頼主のユーザの利用者端末100へ、この受け取ったアクセスオブジェクト、またはそのアクセスオブジェクトから取り出したデータを返す(図2の手続き10図4の2009)。これにより、ユーザは代理エージェント310に依頼したデータベース400へアクセスした結果を得ることができる。
【0031】
上記した代理エージェント310と仲介エージェント320はデザインパターンのテンプレートメソッドを用いて実現することができる(テンプレートメソッドに関しては、例えば、結城浩著「Java言語で学ぶデザインパターン入門」ソフトバンク社 pp.31「第3章Template Method」に詳しい)。すなわち、仲介エージェント320がスーパークラスとなり、ユーザを認証する処理、アクセスオブジェクト330を生成する処理、代理エージェント310からアクセス結果を受け取りユーザに返却する処理などの共通のテンプレートとなる処理を記述し、一方、代理エージェント310がサブクラスとなり、データベース400への具体的な検索処理やアクセス結果に所望処理を行う処理などのそれぞれの代理エージェント固有の具体的な処理を記述する。
【0032】
なお、アクセスオブジェクトは、例えばメモリ内に記述して、代理エージェント310及び仲介エージェント320が該メモリをアクセスして所定の処理を行うことも可能である。この場合、代理エージェント310からは認証情報の格納領域をアクセスできないようにする。また、アクセス処理部330がアクセスオブジェクトの処理機能の実体として、該アクセス処理部330がアクセスオブジェクトのデータベースアクセスメソッドに基づいてデータベース400を実際にアクセスする。
【0033】
上述したように、図1で示したデータベースアクセス制御装置における各部の一部もしくは全部の処理機能をコンピュータのプログラムで構成し、そのプログラムをコンピュータを用いて実行して本発明を実現することができること、あるいは、図2、図3、図4で示した処理手順をコンピュータのプログラムで構成し、そのプログラムをコンピュータに実行させることができることは言うまでもない。また、コンピュータでその処理機能を実現するためのプログラム、あるいは、コンピュータにその処理手順を実行させるためのプログラムを、そのコンピュータが読み取り可能な記録媒体、例えば、FD、MO、ROM、メモリカード、CD、DVD、リムーバブルディスクなどに記録して、保存したり、提供したりすることができるとともに、インターネット等のネットワークを通してそのプログラムを配布したりすることが可能である。
【図面の簡単な説明】
【0034】
【図1】本発明が適用されるシステム全体の構成図である。
【図2】本発明による処理シーケンス例である。
【図3】代理エージェントの処理フロー例である。
【図4】仲介エージェントの処理フロー例である。
【図5】アクセスオブジェクトの構成例である。
【符号の説明】
【0035】
100 利用者端末
200 ネットワーク
300 データベースアクセス制御装置
310 代理処理部(代理エージェント)
320 仲介処理部(仲介エージェント)
330 アクセス処理部(アクセスオブジェクト)
400 データベース

【特許請求の範囲】
【請求項1】
利用者端末に接続され、ユーザの代理としてデータベースへアクセスを行う代理処理部と、前記代理処理部の仲介を行う仲介処理部を備えたデータベースアクセス制御装置におけるデータベースアクセス制御方法であって、
前記代理処理部は前記仲介処理部を拡張したクラスとしておき、
さらに、前記仲介処理部クラスにあるアクセス依頼メソッドにfinalize修飾子をつけておき、
前記仲介処理部は、前記利用者端末からのアクセス依頼を受け取るステップと、データベースにアクセスするためのアクセスオブジェクトを生成するステップと、前記代理処理部へデータベースへのアクセスを依頼するステップと、前記代理処理部から受け取ったアクセス結果ないし処理結果を前記利用者端末に送出するステップとを有し、
前記代理処理部は前記アクセスオブジェクトを用いてデータベースアクセスを行い、アクセス結果が格納されたアクセスオブジェクトを取得するステップと、該アクセス結果ないし処理結果を前記仲介処理部へ返却するステップとを有する、
ことを特徴とするデータベースアクセス制御方法。
【請求項2】
請求項1記載のデータベースアクセス制御方法において、
前記アクセスオブジェクト内の、データベース認証情報を格納する変数のスコープを可視性修飾子をつけないデフォルトコープに設定しておき、
さらに、代理処理部クラスを異なるパッケージとしておき、
前記仲介処理部は、前記アクセスオブジェクトにデータベース認証情報を設定するステップをさらに有する、
ことを特徴とするデータベースアクセス制御方法。
【請求項3】
利用者端末に接続され、ユーザの代理としてデータベースへアクセスを行う代理処理部と、前記代理処理部の仲介を行う仲介処理部を備えたデータベースアクセス制御装置としてのコンピュータで実行可能なプログラムであって、
前記代理処理部は前記仲介処理部を拡張したクラスとしておき、
さらに、前記仲介処理部クラスにあるアクセス依頼メソッドにfinalize修飾子をつけておき、
コンピュータに、
前記仲介処理部が、前記利用者端末からのアクセス依頼を受け取るステップ、データベースにアクセスするためのアクセスオブジェクトを生成するステップ、前記代理処理部へデータベースへのアクセスを依頼するステップ、前記代理処理部から受け取ったアクセス結果ないし処理結果を前記利用者端末に送出するステップ、
前記代理処理部が、前記アクセスオブジェクトを用いてデータベースアクセスを行い、アクセス結果が格納されたアクセスオブジェクトを取得するステップ、該アクセス結果ないし処理結果を前記仲介処理部へ返却するステップ、
を実行させるためのプログラム。
【請求項4】
請求項3記載のプログラムにおいて、
前記アクセスオブジェクト内の、データベース認証情報を格納する変数のスコープを可視性修飾子をつけないデフォルトコープに設定しておき、
さらに、代理処理部クラスを異なるパッケージとしておき、
コンピュータに、
前記仲介処理部が、前記アクセスオブジェクトにデータベース認証情報を設定するステップ、
をさらに実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2008−269625(P2008−269625A)
【公開日】平成20年11月6日(2008.11.6)
【国際特許分類】
【出願番号】特願2008−129713(P2008−129713)
【出願日】平成20年5月16日(2008.5.16)
【分割の表示】特願2003−45921(P2003−45921)の分割
【原出願日】平成15年2月24日(2003.2.24)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVA
【出願人】(000004226)日本電信電話株式会社 (13,992)
【Fターム(参考)】