説明

データベースシステム、情報取得可否検査システム、情報取得方法、およびプログラム

データベースに格納された情報へのアプリケーションプログラムによるアクセスが所定の基準を満足しているかどうかの判定を行いつつ情報を取得する処理を迅速に行う。 個人情報を処理するアプリケーション10と、個人情報を記憶する個人情報DB20と、個人情報保護ポリシーに基づくポリシー準拠チェックを行うポリシーサーバ30と、個人情報DB20に記憶された個人情報の読出し要求をアプリケーション10から受けると、その個人情報を個人情報DB20から読み出し、その読み出した個人情報のうちの特定の個人情報の受渡し要求をアプリケーション10から受けると、その受渡し要求が個人情報保護ポリシーに準拠しているかどうかをポリシーサーバ30に問い合わせ、その応答によりポリシーに準拠していることが分かれば、その特定の個人情報をアプリケーション10に受け渡すプライバシー保護モジュール40とを備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データベース(以下、「DB」という)に格納された情報へのアプリケーションプログラム(以下、「アプリケーション」という)によるアクセスが所定の基準を満足しているかどうかを判定する機能を有するデータベースシステム等に関する。
【背景技術】
【0002】
個人情報のような機密性の高い情報については、その公開を許可するかどうかについて、個人情報保護ポリシー(例えば、P3Pポリシー、以下、単に「ポリシー」ともいう)のような基準が設けられる場合がある。DBに格納された情報がこのような基準により保護されている場合、その情報に対してアプリケーションからアクセスがあると、情報をアプリケーションに受け渡す前にそのアクセスが基準を満たしているかどうかの判定を行い、基準を満たしている場合にのみ情報を受け渡すように構成することができる。従来、このようなアクセスが基準を満たしているかどうかの判定は、DBに格納された情報に対して物理的にアクセスがあった時点で行っていた(例えば、非特許文献1参照。)。
【0003】
非特許文献1には、個人情報の保護のために、個人情報に対するアクセスが個人情報保護ポリシーに準拠しているかどうかを判定する手法が記載されているが、その具体的な手順は次の通りである。
即ち、まず、アプリケーションは、通常と同じ手順でDBコネクションを取得し、DBに対してSQLを発行する。DBにはポリシー準拠のためのロジックが設けられており、ここでSQLはポリシーに準拠したものに書き換えられる。つまり、書き換えられたSQLを実行すると、ポリシーに準拠している情報のみがクエリ結果として取得できるようになる。アプリケーションには、そのクエリ結果がそのまま渡され、ポリシーに準拠しない個人情報はアプリケーションに渡されないようになっている。
【0004】
【非特許文献1】Rakesh Agrawal,Jerry Kiernan,Ramakrishnan Srikant,Yirong Xu:″Hippocratic Databases,″in proceedings of International Conference on Very Large Data Bases(VLDB)2002:pp.143−154,Springer,2002.
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかしながら、非特許文献1の技術では、アプリケーションにクエリ結果を受け渡す前に、アクセスされた全ての個人情報について、そのアクセスがポリシーに準拠しているか判定しなければならない。例えば、1000人分の個人情報にアクセスがあった場合には、ポリシー準拠チェックを1000人分行った後、クエリ結果をアプリケーションに受け渡す必要がある。従って、アプリケーションは全ての個人情報に対するポリシー準拠チェックが完了するまで待たされ、DBアクセスのレスポンスが遅くなってしまうという問題点があった。
また、その際、アプリケーションが実際に使用しない個人情報までポリシー準拠チェックを行っている可能性がある。例えば、アプリケーションが1000人分の個人情報にアクセスしたとしても、実際にアプリケーションが使用するのはそのうちの100人分かもしれない。このような場合、900人分の個人情報については、無駄にポリシー準拠チェックを行っていることになる。
【0006】
本発明は、以上のような技術的課題を解決するためになされたものであって、その目的は、DBに格納された情報へのアプリケーションによるアクセスが所定の基準を満足しているかどうかを効率的に判定することにある。
【課題を解決するための手段】
【0007】
かかる目的のもと、本発明は、データベースに格納された情報にアプリケーションがアクセスする際に、そのアクセスが所定の基準を満足しているかどうかの判定を、物理的にデータベースのレコードにアクセスがあった時点で行うのではなく、アプリケーションからアクセス結果の取得要求があった時点で行うようにしている。即ち、本発明のデータベースシステムは、保護対象のデータを記憶するデータ記憶手段と、このデータ記憶手段に記憶されたデータを用いて所定の処理を行うデータ処理手段と、データ記憶手段に記憶されたデータの読出し要求をデータ処理手段から受けると、そのデータをデータ記憶手段から読み出し、そのデータのうちの特定のデータの受渡し要求をデータ処理手段から受けると、その受渡し要求が所定の基準を満足していればその特定のデータをデータ処理手段に受け渡すデータ保護手段とを備えている。
【0008】
また、本発明は、データベースに格納された情報へのアクセスが所定の基準を満足しているかどうかの判定を、情報を使用する時点で、かつ、ポリシーサーバに問い合わせることで行うようにしている。即ち、本発明の情報取得可否検査システムは、データベースに記憶されたデータを使用する第1のコンピュータと、そのデータの使用に関する基準を管理する第2のコンピュータとを備え、第1のコンピュータは、データベースに記憶されたデータを読み出し、データのうちの特定のデータを使用する時点で、その使用に関する情報を第2のコンピュータに送信し、第2のコンピュータは、使用に関する情報を受けると、基準に基づき、第1のコンピュータがその特定のデータを使用してよいかどうかを判定し、その結果を第1のコンピュータに返信し、第1のコンピュータは、その特定のデータを使用してよい旨の情報を第2のコンピュータから受けると、その特定のデータを使用する。
【0009】
更に、本発明は、データベースからの情報を取得する際の情報取得方法として捉えることもできる。その場合、本発明の情報取得方法は、データベースに記憶されたデータの読出し要求をアプリケーションプログラムから受けると、そのデータをデータベースから読み出すステップと、読み出されたデータのうちの特定のデータの受渡し要求をアプリケーションプログラムから受けると、その受渡し要求が所定の基準を満足しているかどうかを判定するステップと、受渡し要求が所定の基準を満足していると判定された場合に、その特定のデータをアプリケーションプログラムに受け渡すステップとを含む。
【0010】
一方、本発明は、データベースからの情報を取得するための機能を実現するコンピュータプログラムとして捉えることもできる。その場合、本発明のプログラムは、コンピュータに、データベースに記憶されたデータの読出し要求をアプリケーションプログラムから受けると、そのデータをデータベースから読み出す機能と、読み出されたデータのうちの特定のデータの受渡し要求をアプリケーションプログラムから受けると、その受渡し要求が所定の基準を満足しているかどうかを判定する機能と、受渡し要求が所定の基準を満足していると判定された場合に、その特定のデータをアプリケーションプログラムに受け渡す機能とを実現させるものである。
【発明の効果】
【0011】
本発明によれば、DBに格納された情報へのアプリケーションによるアクセスが所定の基準を満足しているかどうかを効率的に判定することが可能となる。
【発明を実施するための最良の形態】
【0012】
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。なお、本実施の形態では、保護対象の情報として「個人情報」を想定し、アクセスが満足すべき基準として「個人情報保護ポリシー」を想定する。
【0013】
本実施の形態は、「DBの個人情報へのアクセス」と「アプリケーションによる個人情報の使用」とは別のタイミングである点に着目し、ポリシー準拠チェックを後者のタイミングで行う(遅延評価する)ことにより、問題を解決するものである。
具体的には、全ての個人情報に対するポリシー準拠チェックを行った後にクエリ結果をアプリケーションに返すのではなく、ポリシー準拠チェックの機能を持った「チェック機能つきクエリ結果」をアプリケーションに返す。アプリケーションは実際に個人情報を使うタイミングになった時点で、「チェック機能つきクエリ結果」に個人情報を要求し、「チェック機能つきクエリ結果」はこのタイミングでポリシー準拠チェックを行い、その結果に応じてアプリケーションに個人情報を返す。
【0014】
図1は、本実施の形態におけるデータベースシステムの全体構成を示した図である。
図1に示すように、このデータベースシステムは、アプリケーション10と、個人情報DB20と、ポリシーサーバ30と、プライバシー保護モジュール40とを備えている。
【0015】
アプリケーション10は、個人情報DB20に格納された個人情報を用いて、各種処理を行うプログラムである。例えば、個人情報DB20から個人情報を検索して、その結果を画面に表示するようなプログラムが考えられる。
個人情報DB20は、個人情報を格納するDBである。個人情報DB20には、例えば、図2に示すようなデータが格納される。
【0016】
ポリシーサーバ30は、個人情報保護ポリシーを管理し、ポリシー準拠のチェック要求があると、個人情報保護ポリシーに基づきポリシー準拠チェックを行い、その結果を返すサーバである。ポリシーサーバ30では、例えば、図3に示すような個人情報保護ポリシーが管理されている。図3は、P3Pポリシーに基づくポリシー準拠チェックを行うためのものである。具体的には、東京の営業員が、営業活動目的である場合に限り、住所が東京都である者の名前、住所、電話番号にアクセス可能なことを示している。
【0017】
プライバシー保護モジュール40は、個人情報DB20に格納された個人情報の読出し要求をアプリケーション10から受けた時点で個人情報を読み出し、その読み出した個人情報のうちの特定の個人情報の受渡し要求を受けた時点でポリシーサーバ30に対してポリシー準拠チェックを依頼し、ポリシーに準拠している旨の応答があった場合にのみ、その特定の個人情報をアプリケーション10に受け渡すプログラムである。なお、プライバシー保護モジュール40は、図1では、アプリケーション10と別個に設けられているが、アプリケーション10の一部として機能するものであってもよい。
また、プライバシー保護モジュール40は、制御部41と、アクセス情報記憶部42と、SQL情報記憶部43と、SQL組立て部44と、カラム特定部45と、データベースアクセス部46と、ポリシー準拠問合せ部47と、問合せ結果記憶部48とを含む。
【0018】
制御部41は、アプリケーション10に対する窓口となると共に、全体のフローを制御する部分である。例えば、プライバシー保護モジュール40におけるアプリケーション窓口兼フロー制御のロジックに相当する。なお、アプリケーション10から個人情報DB20へのアクセスは、この部分を通じてのみ可能となっている。
【0019】
アクセス情報記憶部42は、個人情報DB20にアクセスするために必要な情報(以下、「アクセス情報」という)を記憶する部分である。アクセス情報としては、個人情報DB20にアクセスするために必要となるユーザID、パスワードが例示される。これらの情報をプライバシー保護モジュール40が管理するようにすることで、アプリケーション10が自由に個人情報DB20にアクセスできないようにしている。
【0020】
SQL情報記憶部43は、個人情報DB20に発行して問題のないSQL文に関する情報(以下、「SQL情報」という)を記憶する部分である。アプリケーション10が独自にSQL文を組み立てて個人情報DB20に発行できるようにすると、個人情報DB20に記憶された情報を破壊するようなSQL文が発行されてしまう虞があるので、個人情報DB20に発行しても問題のないSQL文を組み立てるために必要な情報をプライバシー保護モジュール40が管理するようにしている。また、個人情報DB20に発行しても問題のない全てのSQL文をSQL情報記憶部43に用意することにすると、SQL文の数が莫大になってしまうので、入力されたパラメータによって置き換え可能な変数を含むSQLの雛型(以下、「SQL雛型」という)を管理している。
【0021】
図4に、SQL情報記憶部43に記憶される情報の一例を示す。図4では、SQL雛型に対し、そのSQL雛型を一意に識別するための識別情報であるSQL−IDが付与されている。
また、図4では、SQL雛型に対し、保護対象カラムおよびデータオーナのIDカラムの情報も対応付けられている。ここで、保護対象カラムの情報とは、SQL雛型から組み立てられるSQL文を用いて読み出されるカラム(列)のうち保護対象として指定されているカラムを特定するための情報である。更に、データオーナのIDカラムの情報とは、SQL雛型から組み立てられるSQL文を用いて読み出されるカラムのうち各データのデータオーナを知るために参照すべきカラムを特定するための情報である。
【0022】
SQL組立て部44は、SQL情報記憶部43に記憶されたSQL雛型からアプリケーション10が入力したSQL−IDに対応するものを取り出し、アプリケーション10が入力したパラメータを変数に埋め込むことによりSQL文を組み立てる部分である。例えば、プライバシー保護モジュール40におけるSQL組立てロジックに相当する。
カラム特定部45は、SQL情報記憶部43に記憶された情報に基づき、アプリケーション10が入力したSQL−IDに対応する保護対象カラムおよびデータオーナのIDカラムを特定する部分である。例えば、プライバシー保護モジュール40におけるカラム特定ロジックに相当する。
【0023】
データベースアクセス部46は、DBへのアクセス、および、アクセス結果の保持等を行う部分である。例えば、DBにアクセスするための一般的なJava(R)のクラスであるDBコネクションに相当する(Java(R)およびすべてのJava(R)関連の商標およびロゴは、Sun Microsystems,Inc.の米国およびその他の国における商標または登録商標)。
【0024】
ポリシー準拠問合せ部47は、ポリシーサーバ30にポリシー準拠の問合せを行い、その問合せの結果を受け取って返却する部分である。具体的には、プライバシー保護モジュール40におけるポリシー準拠問合せロジックに相当する。
問合せ結果記憶部48は、ポリシーサーバ30への通信コスト、ポリシー準拠チェックの負荷を軽減するために設けられるものであり、ポリシーサーバ30に問い合わせた結果を記憶するキャッシュメモリとしての役割を担う部分である。
【0025】
なお、本実施の形態におけるデータベースシステムのハードウェア構成としては、一般的なコンピュータシステムと同様のものを採用することができる。即ち、アプリケーション10を実行するコンピュータ、個人情報DB20を管理するコンピュータ、ポリシーサーバ30、プライバシー保護モジュール40を実行するコンピュータのいずれも、中央処理装置(CPU)と、主記憶装置とを含み、これらがバスを介して外部記憶装置と接続されたようなものであればよい。ここで、外部記憶装置としては、ハードディスク、フレキシブルディスク、MO(Magneto Optical disk)、CD−ROM等が例示される。
【0026】
アプリケーション10を実行するコンピュータでは、外部記憶装置にアプリケーション10が記憶され、中央処理装置(CPU)がアプリケーション10を主記憶装置に読み込んで実行することにより、図示しないデータ処理手段が実現される。
個人情報DB20を管理するコンピュータでは、外部記憶装置により個人情報DB20が実現される。なお、個人情報DB20は、一般的には、データ記憶手段と捉えることができる。
【0027】
ポリシーサーバ30では、外部記憶装置にポリシー準拠チェックを行うためのコンピュータプログラムが記憶され、中央処理装置(CPU)がこのコンピュータプログラムを主記憶装置に読み込んで実行することにより、ポリシー準拠チェックの機能が実現される。なお、ポリシー準拠チェックの際に参照するポリシーは、このコンピュータプログラムの中に保持するようにしてもよいし、このコンピュータプログラムとは別に外部記憶装置に記憶することとしてもよい。
【0028】
プライバシー保護モジュール40を実行するコンピュータでは、外部記憶装置にプライバシー保護モジュール40が記憶され、中央処理装置(CPU)がプライバシー保護モジュール40を主記憶装置に読み込んで実行することにより、図示しないデータ保護手段が実現される。その際、プライバシー保護モジュール40に含まれるプログラムロジックとしての制御部41、アクセス情報記憶部42、SQL情報記憶部43、SQL組立て部44、カラム特定部45、データベースアクセス部46、ポリシー準拠問合せ部47、問合せ結果記憶部48は、それぞれ、コンピュータにおける機能としての制御部41、アクセス情報記憶部42、SQL情報記憶部43、SQL組立て部44、カラム特定部45、データベースアクセス部46、ポリシー準拠問合せ部47、問合せ結果記憶部48を実現する。
【0029】
また、プライバシー保護モジュール40を実行するコンピュータが、アプリケーション10を実行するようにしてもよいし、個人情報DB20を管理するようにしてもよい。更に、ポリシーサーバ30におけるポリシー準拠チェックの機能は、プライバシー保護モジュール40におけるポリシー準拠問合せ部47の中に組み込んでもよいし、プライバシー保護モジュール40を実行するコンピュータで動作する別のプログラムとして組み込んでもよい。但し、図1に示すように、ポリシーサーバ30という独立したサーバコンピュータにて実現するようにすれば、ポリシーの変更にも柔軟に対応することが可能となる。
【0030】
更にまた、本実施の形態におけるデータベースシステムにおいて、各コンピュータには、キーボードやポインティングデバイス等の入力装置が接続されていてもよいし、ディスプレイ等の出力装置が接続されていてもよい。
【0031】
次に、本実施の形態におけるデータベースシステムの動作について説明する。なお、以下の動作説明において、制御部41、アクセス情報記憶部42、SQL情報記憶部43、SQL組立て部44、カラム特定部45、データベースアクセス部46、ポリシー準拠問合せ部47、問合せ結果記憶部48というときは、コンピュータの機能としての各構成要素を示すものとする。
図5は、アプリケーション10の要求に応じて個人情報DB20からデータを読み出す際のプライバシー保護モジュール40の動作を示したフローチャートである。
【0032】
まず、プライバシー保護モジュール40は、以降の処理で用いる各種ファイルの読み込みを行う(ステップ501)。具体的には、外部記憶装置に記憶されたアクセス情報を、主記憶装置のアクセス情報記憶部42が管理する領域に読み込むと共に、外部記憶装置に記憶されたSQL情報を、主記憶装置のSQL情報記憶部43が管理する領域に読み込む。
【0033】
次に、プライバシー保護モジュール40では、制御部41が、個人情報DB20に発行して問題のないSQL文を組み立てるため、ステップ501で読み込んだSQL情報をアプリケーション10に受け渡す(ステップ502)。これにより、アプリケーション10は、例えば、SQL−IDとSQL雛型との対応を画面に表示し、ユーザに対し、個人情報DB20に発行するSQL文の選択を促す。
【0034】
これに応じて、ユーザが、個人情報DB20に発行したいSQL文の元となるSQL雛型のSQL−ID、SQL雛型の変数に埋め込むパラメータ、アクセス目的を入力すると、アプリケーション10は、入力されたSQL−ID、パラメータ、アクセス目的をプライバシー保護モジュール40に伝える。また、アプリケーション10は、例えば、アプリケーション10へのログイン時に入力したユーザIDを用いる等してアクセス者を特定し、アクセス者IDもプライバシー保護モジュール40に伝える。
プライバシー保護モジュール40では、制御部41が、これらの情報を受け付け(ステップ503)、SQL−IDおよびパラメータをSQL組立て部44に受け渡す。
なお、一般的には、予めSQL情報をアプリケーション10の開発者に渡しておき、それをもとにアプリケーション10が作成されることが多いが、その場合は、ステップ502のようなSQL情報の受け渡しのステップを設けることなく、アプリケーション10がSQL−IDを入力することも可能である。そのような一般的な実装に従うとすると、プライバシー保護モジュール40は、アプリケーション10からSQL−IDとパラメータとを受け取り、SQL−IDが不正な(例えば、存在しないSQL−IDが指定されていた)場合、エラーをアプリケーション10に返し、SQL−IDが正常な場合のみ、以降の処理を行う構成となる。
【0035】
SQL組立て部44は、渡されたSQL−IDに対するSQL雛型をSQL情報記憶部43から取り出し、渡されたパラメータをこのSQL雛型に埋め込むことにより、個人情報DB20に発行するSQL文を組み立て(ステップ504)、制御部41に返す。
例えば、SQL−ID「S001」、パラメータ「TDL」が渡されたとすると、SQL組立て部44は、「SELECT id,name,tel,hobby FROM pii_table WHERE department=“TDL”」というSQL文を生成する。
【0036】
また、制御部41は、SQL−IDをカラム特定部45にも受け渡す。
カラム特定部45は、SQL情報記憶部43を参照し、渡されたSQL−IDに対するSQL文で取り出されるカラムの中で保護対象カラムを特定する(ステップ505)。例えば、SQL−ID「S001」に対するSQL文では、戻りのカラムは「id」、「name」、「tel」、「hobby」であるが、SQL情報記憶部43を参照すると、その中で保護対象カラムが「name」、「tel」であることが分かるので、そのことを制御部41に伝える。
また、カラム特定部45は、SQL情報記憶部43を参照し、渡されたSQL−IDに対するSQL文で取り出されるカラムの中でデータオーナのIDを示すカラムを特定する(ステップ506)。例えば、SQL−ID「S001」に対するSQL文では、戻りのカラムは「id」、「name」、「tel」、「hobby」であるが、SQL情報記憶部43を参照すると、その中でデータオーナのIDカラムが「id」であることが分かるので、そのことを制御部41に伝える。
【0037】
以上の処理により、制御部41には、個人情報DB20にアクセスするためのアクセス情報と、個人情報DB20に発行するSQL文とに加え、読み出されたデータの受渡し要求が個人情報保護ポリシーに準拠しているかどうかを判定するための情報が保持される。
即ち、個人情報保護のためには、例えば、「誰が」「何の目的で」「誰の」「何の」情報にアクセスするかの情報が必要になるが、これらの情報のうち、「誰が」アクセスするか、「何の目的で」アクセスするかについては、ステップ503で制御部41に渡されている。また、「誰の」情報にアクセスするかについては、図6のフローチャートを参照して後述するようにアプリケーション10により指定されるが、その者の情報へのアクセスがポリシーに準拠しているかの判定を行う際に用いるデータオーナのIDカラムの情報は、ステップ506で制御部41に渡されている。更に、「何の」情報にアクセスするかについても、後述するようにアプリケーション10により指定されるが、その情報へのアクセスがポリシーに準拠しているかの判定を行う際に用いる保護対象カラムの情報は、ステップ505で制御部41に渡されている。
【0038】
次に、制御部41は、データベースアクセス部46(DBコネクション)を生成し(ステップ507)、保持しておいたアクセス情報およびSQL文を受け渡すことにより、個人情報DB20へのアクセスを指示する。この指示に応じて、データベースアクセス部46は、アクセス情報を用いて個人情報DB20にアクセスし、SQL文を発行する(ステップ508)。また、アプリケーション10から個人情報DB20へのアクセスはプライバシー保護モジュール40を通してのみ行えるようにしておく。こうすることで、DBアクセス関連のクラスがプライバシー保護モジュール40でラップされ、アプリケーション10が自由に個人情報DB20にアクセスすることを防止している。
【0039】
その後、データベースアクセス部46は、クエリ結果を取得し、保持する(ステップ509)。
例えば、個人情報DB20に対し、SQL文「SELECT id,name,tel,hobby FROM pii_table WHERE department=“TDL”」を発行したとすると、「部門」が「TDL」である者の情報における「ID」「名前」「TEL」「趣味」を取得する。即ち、図2の例では、「0001」「山田 太郎」「03−XXXX−XXXX」「YYY」と、「0003」「佐藤 花子」「090−XXXX−XXXX」「YYY」等を読み出す。
【0040】
そして、データベースアクセス部46は、クエリ結果を取得した旨を制御部41に通知し、制御部41が、その旨を更にアプリケーション10に通知する(ステップ510)。
【0041】
ところで、Java(R)では、DBの情報を取得する際には、何番目のレコードのどのカラムが欲しいかを指定し、クエリ結果を扱うクラス(ResultSet)から情報が受け取れる仕組みになっている。従って、通知を受けたアプリケーション10は、実際に使用するレコードおよびカラムを指定することで、プライバシー保護モジュール40に対しデータの受渡しを要求する。
具体的には、アプリケーション10が、クエリ結果に含まれる個人情報のうち「名前」の情報を順番に表示するプログラムだとすると、1回目の受渡し要求では、1つ目のレコードの「名前」の情報を要求し、2回目の受渡し要求では、2つ目のレコードの「名前」の情報を要求することになる。以降、同様の要求を、ユーザから情報の表示を中止する旨の入力があるまで繰り返す。なお、このように全ての情報の受渡し要求を行う前に表示を中止する旨の入力を行う場合としては、例えば、画面上に50人分の個人情報を表示することができる場合において、ユーザが、表示された50人分の情報の中に目的の情報を発見したような場合に起こり得る。
【0042】
以下、個人情報DB20から読み出されたデータをアプリケーション10の要求に応じて受け渡す際のプライバシー保護モジュール40の動作について述べる。
図6は、その動作を示したフローチャートである。上述したように、ステップ510でクエリ結果の取得が通知された後、アプリケーション10はプライバシー保護モジュール40に対し、データの受渡しを1件ずつ要求するが、ここでは、アプリケーション10からの特定の1件のデータの受渡し要求に対するプライバシー保護モジュール40の動作について説明する。
【0043】
まず、プライバシー保護モジュール40では、制御部41が、アプリケーション10よりレコードおよびカラムの指定を受け付ける(ステップ601)。
これにより、制御部41は、データベースアクセス部46が保持するクエリ結果から、指定されたレコードの指定されたカラムの内容を取得する(ステップ602)。
例えば、ステップ509において取得されたクエリ結果が、「0001」「山田 太郎」「03−XXXX−XXXX」「YYY」、「0003」「佐藤 花子」「090−XXXX−XXXX」「YYY」等である場合、アプリケーション10から1番目のレコードの2番目のカラム(「名前」)が要求されると、制御部41は、「山田 太郎」という情報を取り出す。
【0044】
次に、制御部41は、ステップ505で特定した保護カラムの情報に基づき、要求されたカラムが保護対象であるかどうかを判断する(ステップ603)。
ここで、要求されたカラムが保護対象でない場合は、得られた情報をそのままアプリケーション10に返却する(ステップ610)。例えば、「名前」と「TEL」とが保護対象カラムとして特定されている場合、「趣味」が要求されると、これは保護対象ではないので、取り出した情報はそのままアプリケーション10に返却する。
【0045】
一方、要求されたカラムが保護対象である場合は、ポリシー準拠問合せ部47に制御が渡り、ポリシー準拠問合せ部47が、問合せ結果記憶部48に問合せ結果が既に格納されているかどうかを判定する(ステップ604)。ここで、ポリシー準拠問合せ部47は、問合せ結果記憶部48に問合せ結果が格納されていれば、問合せ結果記憶部48から問合せ結果を取り出す(ステップ608)が、問合せ結果記憶部48に問合せ結果が格納されていなければ、ポリシーサーバ30に対し、ポリシー準拠の問合せを行う(ステップ605)。例えば、「名前」と「TEL」とが保護対象カラムとして特定されている場合、「名前」が要求されると、これは保護対象であるので、このようなポリシー準拠チェックの処理を行う。
【0046】
次に、ポリシーサーバ30は、ポリシー準拠チェックを行い、その結果をポリシー準拠問合せ部47に返却する。これにより、ポリシー準拠問合せ部47は、問合せ結果を受け付けて更に制御部41に返却し(ステップ606)、同時に、問合せ結果記憶部48にキャッシュする(ステップ607)。
【0047】
具体的には、以下のような処理を行う。なお、ここでは、制御部41には、ステップ503における処理の結果、アクセス者IDとして「E0001」(東京の営業員とする)が、アクセス目的として「営業活動目的」が保持され、ステップ505における処理の結果、「name」「tel」が保護対象カラムである旨の情報が保持され、ステップ506における処理の結果、「id」がデータオーナのIDカラムである旨の情報が保持されているとする。また、ステップ509において、1つ目のレコードが「0001」「山田 太郎」「03−XXXX−XXXX」「YYY」であり、2つ目のレコードが「0003」「佐藤 花子」「090−XXXX−XXXX」「YYY」であるクエリ結果が取得されたとする。更に、ポリシーサーバ30には、図3に示す個人情報保護ポリシーが格納され、「住所が東京都の場合のみ」というコンディションが定義されているため、ポリシー準拠問合せ部47は、ポリシー準拠チェックを依頼する際には、住所の情報を送信すべきことを知っているものとする。更にまた、問合せ結果記憶部48には、このポリシーに基づく準拠結果は格納されていないものとする。
【0048】
この場合において、アプリケーション10から、クエリ結果に含まれる1つ目のレコードの2番目のカラムの受渡しが要求されたとする。すると、制御部41は、「誰が」アクセスするかを示す情報として、アクセス者ID「E0001」を、「何の目的で」アクセスするかを示す情報として、アクセス目的「営業活動目的」を、「誰の」情報にアクセスするかを示す情報として、データオーナーID「S001」を、「何の」情報にアクセスするかを示す情報として、カラム「name」を、ポリシー準拠問合せ部47を経由してポリシーサーバ30に受け渡す。また、データオーナの住所として、「東京都」をポリシーサーバ30に受け渡す。これに対し、ポリシーサーバ30は、「東京の営業員」である「E001」が、「営業活動目的」で、「住所が東京都」の「S001」の、「名前」の受渡し要求であり、図3のポリシーに準拠する要求であるので、準拠結果として「OK」を返却する。
【0049】
また、アプリケーション10から、クエリ結果に含まれる2つ目のレコードの2番目のカラムの受渡しが要求されたとする。すると、制御部41は、「誰が」アクセスするかを示す情報として、アクセス者ID「E0001」を、「何の目的で」アクセスするかを示す情報として、アクセス目的「営業活動目的」を、「誰の」情報にアクセスするかを示す情報として、データオーナーID「S003」を、「何の」情報にアクセスするかを示す情報として、カラム「name」を、ポリシー準拠問合せ部47を経由してポリシーサーバ30に受け渡す。また、データオーナの住所として、「千葉県」をポリシーサーバ30に受け渡す。これに対し、ポリシーサーバ30は、「東京の営業員」である「E001」が、「営業活動目的」で、「住所が千葉県」の「S003」の、「名前」の受渡し要求であり、図3のポリシーに準拠する要求ではないので、準拠結果として「NG」を返却する。
【0050】
なお、この具体例では、ポリシー準拠問合せ部47からポリシーサーバ30へデータオーナの住所を送るようにしたが、ポリシーサーバ30において各個人の住所の情報を把握している場合は、データオーナIDのみを送ることにより、ポリシー準拠チェックを行うことも可能である。
【0051】
そして、ポリシーに準拠している場合(ステップ609でYES)、制御部41は、ステップ602で取得した個人情報をアプリケーション10に返却する(ステップ610)。一方、ポリシーに準拠していない場合(ステップ609でNO)、制御部41は、ステップ602で取得した個人情報をアプリケーション10に返却せず、プライバシー準拠例外のエラーメッセージ、例えば、「Privacy Violation!」をアプリケーション10に返却する(ステップ611)。
【0052】
以上により、本実施の形態の動作は終了する。
なお、本実施の形態をJava(R)で実装する場合、クエリ結果を格納するjava.sql.ResultSetオブジェクトをラップするクラスを作成し、そのラップクラスにポリシー準拠チェックを行うロジックを実装することになる。また、ラップクラスのインタフェースにjava.sql.ResultSetを使用すれば、アプリケーションは通常のResultSetを使用する場合と全く同様にして、プライバシー保護された個人情報にアクセスすることができる。
【0053】
また、上記の説明では、図4に示すように、個人情報DB20に発行するSQL文の元となるSQL雛型を用意し、入力されたパラメータを埋め込むようにしていたが、SQL文のパターンが少ない場合は、SQL文そのものを用意しておき、アプリケーション10を介してSQL文そのものを提示するようにしてもよい。
更に、本実施の形態では、保護対象カラムの特定、および、データオーナのIDカラムの特定を、ステップ505、506のタイミングで、図4に示すSQL情報を用いて行うようにしたが、これに限られるものではない。即ち、保護対象カラムの特定は、ステップ603よりも前であれば、いかなるタイミングで行ってもよく、また、いかなる情報に基づいて行ってもよい。また、データオーナのIDカラムの特定は、ステップ605よりも前であれば、いかなるタイミングで行ってもよく、また、いかなる情報に基づいて行ってもよい。
【0054】
このように、本実施の形態では、データベースに格納された情報をアプリケーションが使用するタイミングでポリシー準拠チェックを行うので、データベースへのアクセス時に負荷が集中しない。例えば、アプリケーションが個人情報DBからの検索結果を画面に50人ずつ表示するものである場合、一度に行うポリシー準拠チェックは50人分ですむ。
また、データベースに格納された情報をアプリケーションが使用するタイミングでポリシー準拠チェックを行うので、無駄なチェックが発生しないですむ。例えば、1000人分の個人情報がヒットしても、実際には50人分の情報を見ただけで処理が完了してしまうような場合もあるが、このような場合には、無駄なポリシー準拠チェックを省ける利点は大きい。
【0055】
また、従来の技術では、受け取ったSQLを、ポリシーに準拠した情報のみをクエリ結果として取得するためのSQLに変換する機構を持った特殊なDBを用意する必要があったが、本実施の形態では、そのような特殊なDBを用意する必要はない。
更に、ポリシー準拠チェックにおいて、「誰が」アクセスするか、「何の目的で」アクセスするかといった情報を用いる場合、従来の技術では、拡張SQLを用いる必要があった。ところが、本実施の形態では、プライバシー保護モジュールでそれらの情報を取り扱うようにしているので、拡張SQLを用いる必要はない。
【図面の簡単な説明】
【0056】
【図1】本実施の形態におけるデータベースシステムの全体構成を示したブロック図である。
【図2】本実施の形態における個人情報DBに記憶される情報の一例を示した図である。
【図3】本実施の形態におけるポリシーサーバで管理される情報の一例を示した図である。
【図4】本実施の形態におけるSQL情報記憶部に記憶される情報の一例を示した図である。
【図5】本実施の形態におけるプライバシー保護モジュールが実行される際の動作を示したフローチャートである。
【図6】本実施の形態におけるプライバシー保護モジュールが実行される際の動作を示したフローチャートである。
【符号の説明】
【0057】
10…アプリケーション、20…個人情報DB、30…ポリシーサーバ、40…プライバシー保護モジュール、41…制御部、42…アクセス情報記憶部、43…SQL情報記憶部、44…SQL組立て部、45…カラム特定部、46…データベースアクセス部、47…ポリシー準拠問合せ部、48…問合せ結果記憶部

【特許請求の範囲】
【請求項1】
保護対象のデータを記憶するデータ記憶手段と、
前記データ記憶手段に記憶された前記データを用いて所定の処理を行うデータ処理手段と、
前記データ記憶手段に記憶された前記データの読出し要求を前記データ処理手段から受けると、当該データを前記データ記憶手段から読み出し、当該データのうちの特定のデータの受渡し要求を前記データ処理手段から受けると、当該受渡し要求が所定の基準を満足していれば当該特定のデータを前記データ処理手段に受け渡すデータ保護手段と
を備えたことを特徴とするデータベースシステム。
【請求項2】
前記データ処理手段は、前記データ保護手段を介してのみ前記データ記憶手段にアクセスし、
前記データ保護手段は、前記データ記憶手段にアクセスするために必要なアクセス情報を保持し、前記データを前記データ記憶手段から読み出す際に、当該アクセス情報を用いて前記データ記憶手段にアクセスすることを特徴とする請求項1記載のデータベースシステム。
【請求項3】
前記データ保護手段は、前記データ記憶手段に記憶された前記データを読み出すための複数のデータベース操作文を保持し、前記データの読出し要求として、当該複数のデータベース操作文のうちの特定のデータベース操作文の選択を受けると、当該特定のデータベース操作文を用いて、当該データを前記データ記憶手段から読み出すことを特徴とする請求項1記載のデータベースシステム。
【請求項4】
前記データ保護手段は、前記データ記憶手段に記憶された前記データを読み出すために必要な複数の情報を保持し、前記データの読出し要求として、当該複数の情報のうちの特定の情報の選択およびパラメータの入力を受けると、当該特定の情報と当該パラメータとに基づきデータベース操作文を組み立て、当該データベース操作文を用いて、当該データを前記データ記憶手段から読み出すことを特徴とする請求項1記載のデータベースシステム。
【請求項5】
前記データ保護手段は、前記特定のデータの受渡し要求を前記データ処理手段から受けると、当該特定のデータが保護対象である場合に当該受渡し要求が前記所定の基準を満足しているかどうかを判定することを特徴とする請求項1記載のデータベースシステム。
【請求項6】
前記データ保護手段は、前記特定のデータの受渡し要求を前記データ処理手段から受けると、当該特定のデータの所有者を特定し、当該受渡し要求が前記所定の基準を満足しているかどうかを当該所有者の情報を用いて判定することを特徴とする請求項1記載のデータベースシステム。
【請求項7】
前記データ保護手段は、前記特定のデータの受渡し要求を前記データ処理手段から受けると、当該特定のデータを前記データ処理手段に受け渡してよいかどうかを判定するための基準を管理する他のコンピュータに対して当該受渡し要求に関する情報を送信し、当該他のコンピュータからの応答に基づき、当該受渡し要求が当該基準を満足しているかどうかを判定することを特徴とする請求項1記載のデータベースシスム。
【請求項8】
前記データ保護手段は、前記受渡し要求が前記所定の基準を満足していない場合に、前記データ処理手段に対し、その旨の応答を返却することを特徴とする請求項1記載のデータベースシステム。
【請求項9】
データベースに記憶されたデータを使用する第1のコンピュータと、当該データの使用に関する基準を管理する第2のコンピュータとを備え、
前記第1のコンピュータは、前記データベースに記憶された前記データを読み出し、当該データのうちの特定のデータを使用する時点で、当該使用に関する情報を前記第2のコンピュータに送信し、
前記第2のコンピュータは、前記使用に関する情報を受けると、前記基準に基づき、前記第1のコンピュータが前記特定のデータを使用してよいかどうかを判定し、その結果を前記第1のコンピュータに返信し、
前記第1のコンピュータは、前記特定のデータを使用してよい旨の情報を前記第2のコンピュータから受けると、当該特定のデータを使用することを特徴とする情報取得可否検査システム。
【請求項10】
前記第1のコンピュータは、前記データベースに記憶された前記データの読出し要求を所定のアプリケーションプログラムから受けると、当該データを前記データベースから読み出し、当該データのうちの特定のデータの受渡し要求を当該アプリケーションプログラムから受けると、当該受渡し要求に関する情報を前記第2のコンピュータに送信し、
前記第2のコンピュータは、前記受渡し要求に関する情報を受けると、前記基準に基づき、前記アプリケーションプログラムに前記特定のデータを受け渡してよいかどうかを判定し、その結果を前記第1のコンピュータに返信し、
前記第1のコンピュータは、前記第2のコンピュータから返信された結果に応じて、前記アプリケーションプログラムに前記特定のデータを受け渡すことを特徴とする請求項9記載の情報取得可否検査システム。
【請求項11】
データベースに記憶されたデータの読出し要求をアプリケーションプログラムから受けると、当該データを前記データベースから読み出すステップと、
読み出された前記データのうちの特定のデータの受渡し要求を前記アプリケーションプログラムから受けると、当該受渡し要求が所定の基準を満足しているかどうかを判定するステップと、
前記受渡し要求が前記所定の基準を満足していると判定された場合に、前記特定のデータを前記アプリケーションプログラムに受け渡すステップと
を含むことを特徴とする情報取得方法。
【請求項12】
前記データを前記データベースから読み出すステップは、
前記データベースにアクセスするために必要なアクセス情報を所定の記憶装置から読み出すステップと、
読み出された前記アクセス情報を用いて、前記データベースにアクセスするステップと
を含むことを特徴とする請求項11記載の情報取得方法。
【請求項13】
前記データを前記データベースから読み出すステップは、
前記データベースに記憶された前記データを読み出すための複数のデータベース操作文のうちの特定のデータベース操作文を所定の記憶装置から読み出すステップと、
選択された前記特定のデータベース操作文を用いて、前記データを前記データベースから読み出すステップと
を含むことを特徴とする請求項11記載の情報取得方法。
【請求項14】
前記データを前記データベースから読み出すステップは、
前記データベースに記憶された前記データを読み出すために必要な複数の情報のうちの特定の情報を所定の記憶装置から読み出すステップと、
パラメータの入力を受け付けるステップと、
選択された前記特定の情報と入力された前記パラメータとに基づきデータベース操作文を組み立て、当該データベース操作文を用いて、当該データを前記データベースから読み出すステップとを含むことを特徴とする請求項11記載の情報取得方法。
【請求項15】
前記受渡し要求が所定の基準を満足しているかどうかを判定するステップは、
前記特定のデータの受渡し要求を前記アプリケーションプログラムから受けると、当該特定のデータを前記アプリケーションプログラムに受け渡してよいかどうかを判定するための基準を管理する他のコンピュータに対して当該受渡し要求に関する情報を送信するステップと、
前記他のコンピュータからの応答に基づき、前記受渡し要求が前記基準を満足しているかどうかを判定するステップと
を含むことを特徴とする請求項11記載の情報取得方法。
【請求項16】
コンピュータに、
データベースに記憶されたデータの読出し要求をアプリケーションプログラムから受けると、当該データを前記データベースから読み出す機能と、
読み出された前記データのうちの特定のデータの受渡し要求を前記アプリケーションプログラムから受けると、当該受渡し要求が所定の基準を満足しているかどうかを判定する機能と、
前記受渡し要求が前記所定の基準を満足していると判定された場合に、前記特定のデータを前記アプリケーションプログラムに受け渡す機能と
を実現させるためのプログラム。
【請求項17】
コンピュータに、
前記データベースにアクセスするために必要なアクセス情報を保持する機能と、
前記データを前記データベースから読み出す際に、前記アクセス情報を用いて前記データベースにアクセスする機能と
を更に実現させるための請求項16記載のプログラム。
【請求項18】
コンピュータに、
前記データベースに記憶された前記データを読み出すための複数のデータベース操作文を保持する機能と、
前記データの読出し要求として、前記複数のデータベース操作文のうちの特定のデータベース操作文の選択を促す機能と、
選択された前記特定のデータベース操作文を用いて、前記データを前記データベースから読み出す機能とを更に実現させるための請求項16記載のプログラム。
【請求項19】
コンピュータに、
前記データベースに記憶された前記データを読み出すために必要な複数の情報を保持する機能と、
前記データの読出し要求として、前記複数の情報のうちの特定の情報の選択およびパラメータの入力を促す機能と、
選択された前記特定の情報と入力された前記パラメータとに基づきデータベース操作文を組み立て、当該データベース操作文を用いて、当該データを前記データベースから読み出す機能と
を更に実現させるための請求項16記載のプログラム。
【請求項20】
コンピュータに、
前記特定のデータの受渡し要求を前記アプリケーションプログラムから受けると、当該特定のデータが保護対象であるかどうかを判定する機能を更に実現させるための請求項16記載のプログラム。
【請求項21】
コンピュータに、
前記特定のデータの受渡し要求を前記アプリケーションプログラムから受けると、当該特定のデータの所有者を特定する機能を更に実現させるための請求項16記載のプログラム。
【請求項22】
前記受渡し要求が前記所定の基準を満足しているかどうかを判定する機能において、
前記特定のデータの受渡し要求を前記アプリケーションプログラムから受けると、当該特定のデータを前記アプリケーションプログラムに受け渡してよいかどうかを判定するための基準を管理する他のコンピュータに対して当該受渡し要求に関する情報を送信する機能と、
前記他のコンピュータからの応答に基づき、当該受渡し要求が当該基準を満足しているかどうかを判定する機能と
を実現させるための請求項16記載のプログラム。
【請求項23】
コンピュータに、
前記受渡し要求が前記所定の基準を満足していない場合に、前記アプリケーションプログラムに対し、その旨の応答を返却する機能
を更に実現させるための請求項16記載のプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【国際公開番号】WO2005/022391
【国際公開日】平成17年3月10日(2005.3.10)
【発行日】平成19年11月22日(2007.11.22)
【国際特許分類】
【出願番号】特願2005−513412(P2005−513412)
【国際出願番号】PCT/JP2004/011149
【国際出願日】平成16年8月4日(2004.8.4)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【Fターム(参考)】