JP2007114855A - 情報処理装置、情報処理装置の制御方法、及びプログラム - Google Patents

情報処理装置、情報処理装置の制御方法、及びプログラム Download PDF

Info

Publication number
JP2007114855A
JP2007114855A JP2005303116A JP2005303116A JP2007114855A JP 2007114855 A JP2007114855 A JP 2007114855A JP 2005303116 A JP2005303116 A JP 2005303116A JP 2005303116 A JP2005303116 A JP 2005303116A JP 2007114855 A JP2007114855 A JP 2007114855A
Authority
JP
Japan
Prior art keywords
query
pseudonym
data
correspondence table
database
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2005303116A
Other languages
English (en)
Other versions
JP4672518B2 (ja
Inventor
Yoshinori Sato
嘉則 佐藤
Toyohisa Morita
豊久 森田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2005303116A priority Critical patent/JP4672518B2/ja
Publication of JP2007114855A publication Critical patent/JP2007114855A/ja
Application granted granted Critical
Publication of JP4672518B2 publication Critical patent/JP4672518B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】実名データと偽名データとの対応が記憶された記憶媒体がアクセス可能な場合とアクセス不可能な場合とがあるデータベースシステムにおいて、アプリケーションに対してデータベースを透過的に見せるようにする。
【解決手段】実名テーブル及び偽名テーブルが格納されるデータベース111に接続し、実名データと偽名データとの対応表206が記録された記録媒体205から対応表を読み出し、対応表206へのアクセス可否を判定し、データベース111に対して実行されるクエリーを受信し、受信したクエリーの実行に際し実名データと偽名データとの対応づけが必要であるかどうかを判定し、対応づけが必要であり、かつ、対応表206にアクセス可能な状態である場合には、対応表206に基づいて、受信したクエリーを新たなクエリーに変換し、新たなクエリーをデータベース111に送信するようにする。
【選択図】 図1A

Description

本発明は、電子化された個人情報を取り扱う技術に関し、データを実名データと偽名データとに分けてデータベースに管理する技術に関する。
昨今、プライバシー保護への社会的要請が高まっており、個人情報を取り扱う企業の情報システムにおいては、プライバシーへの配慮が不可欠となっている。個人情報とは、個人に関する情報であり、氏名、生年月日その他の記述等により特定の個人を識別する事ができる情報と、これらの情報と照合できるその他の情報がある。保護すべき個人情報やその在り方については、まだ社会通念として充分に定まってはいないものの、個人情報取扱事業者にとって、少なくとも2005年4月に全面施行された、いわゆる個人情報保護法や関係法令を遵守することが必須となっている。
個人情報保護法では、個人情報を収集、蓄積、利用し、管理責任を持つ主体である個人情報取扱事業者に対し、個人情報によって識別される特定の個人である情報主体に開示した利用目的に沿って個人情報を取り扱うことを定めている。すなわち、個人情報保護法によれば、個人情報を機密情報と見做して予期せぬ漏洩に備えるだけでなく、さらに個人情報を適正に利用するための措置も求められる。
情報処理システムとして個人情報保護法の上記要請に対応するための手法として、例えば、非特許文献1に記載の技術では、個人情報と実名との関連性を切り離す事により、購買履歴や口座取引のようなトランザクションが情報主体と関連付けて利用される機会を制約するようにしている。具体的には、データベース中の個人情報のテーブルを、実名データを格納した実名テーブルと、偽名データを格納した偽名テーブルとに分割して管理し、各テーブルに格納されている同一の情報主体に関するレコードに対して異なるID(識別子)を付与する。なお、実名データとは、特定の個人を識別可能な電子データであり、また偽名データとは、実名データと照合できるその他の電子データである。
非特許文献1に記載の技術では、実名データのID(以下、実名IDという。)と偽名データのID(以下、偽名IDという。)との対応表を、ICカードなどのデータベースの外部のセキュアデバイスに隔離する。すなわち、セキュアデバイス中のID対応表によって、同一の情報主体の実名データと偽名データとの結合処理が、データベースの外から制御される。またID対応表がセキュアデバイスの外に露顕(漏洩)してしまった場合には、ID対応表やデータベース中の偽名IDを書き換えることにより、ID対応表が不正に利用されるのを防ぐことができる。
ところで、RDB(Relational Database)を利用するアプリケーションの構築に際しては、ISO/IEC 9075:1992等に定義されたSQL(Structured Query Language)を用いるのが一般的である。SQLは、宣言型プログラミング言語であるのでプログラミングに際してはSQL文中に欲しいデータ集合を定義すれば良い。また、RDBを利用するアプリケーションの構築に際しては、ホスト名、データベース、テーブル、項目等のリソース名を含むデータの検索条件を指定してRDBからデータ集合を得るというように、データ集合を形成するための手続き的な処理そのものをRDBに任せてしまう事が多い。このため、非特許文献1に記載の技術を現実のシステムに適用する場合には、分割管理されているテーブルにアプリケーションが透過的にアクセスすることができるように、新たに分割されるテーブルの構造に合わせて処理手続きを修正する必要があり、テストや実装等による開発コストが発生してしまう。
一方、特許文献1には、複数のRDBを、仮想的な一つのRDBとして見せかけるためのRDBの定義情報を記憶した辞書を備え、さらにアプリケーションが仮想RDBに対して発行するSQLプログラムを、実際のRDBに摘要するSQLプログラムに変換する技術が開示されており、非特許文献1に記載の技術における、実名テーブル、偽名テーブル、ID対応表を、分散RDBのテーブルと見做せる場合には、特許文献1に記載の技術によって分散RDBを仮想的な一つのRDBとしてアプリケーションに見せかけるようにすることができる。
佐藤嘉則、川崎明彦、森田豊久他:「リンカビリティ制御に基づいた個人情報管理システム」、情報処理学会 第30回CSEC研究発表会(電子情報通信学会ISEC・SITE合同開催)、岩手大学、2005.7.22 特許第2837525号公報
しかしながら、特許文献1に記載の技術は、通信路に障害がない限りは、各RDBが常にアプリケーションからアクセス可能な状態に置かれていることが前提になっており、非特許文献1に記載のID対応表のように、システムがID対応表にアクセスできる場合とできない場合とを区別して扱う場合については何ら考慮されていない。従って、特許文献1に記載の技術では、ID対応表が存在しない間は必ずしもアプリケーションに適切なデータを与える事ができない。また、ID対応表は、データベースとアプリケーションに対して秘匿されている必要があるが、特許文献1に記載の技術は、このような秘匿性のあるデータの存在を考慮して分散データを透過的に扱う技術については言及されていない。
この発明は、このような課題に鑑みてなされたもので、個人データを実名テーブルと偽名テーブルとに分離してデータベースに管理し、実名データと偽名データとの対応表が記憶された記憶媒体がアクセス可能な場合とアクセス不可能な場合とがあるシステムにおいて、アプリケーションに対してデータを透過的に扱うことが可能な情報処理装置、情報処理装置の制御方法、及びプログラムを提供することを目的とする。
上記課題を解決するための本発明のうちの主たる発明は、情報処理装置であって、CPU及びメモリと、実名データを含む実名テーブル及び偽名データを含む偽名テーブルが格納されるデータベースに接続するインタフェースと、前記実名データと前記偽名データとの対応表が記録された記録媒体から前記対応表を読み出すインタフェースと、前記対応表へのアクセス可否を判定する状態判定部と、前記データベースに対して実行されるクエリーを受信するクエリー受信部と、受信した前記クエリーの実行に際し、前記実名データと前記偽名データとの対応づけが必要であるかどうかを判定するクエリー判定部と、前記対応づけが必要であると判定され、かつ、前記対応表にアクセス可能な状態である場合には、前記対応表に基づいて、受信した前記クエリーを新たなクエリーに変換するクエリー変換部と、前記クエリーを前記データベースに送信するインタフェースと、を有することとする。
本発明によれば、アプリケーションから受信したクエリーの実行に際し、実名データと偽名データとを対応づける必要があるかどうかを判断し、対応づける必要がある場合には、対応表に基づいて受信したクエリーを新たなクエリーに変換し、変換された新たなクエリーがデータベースに対して実行される。このため、対応表の存在有無に拘わらず、アプリケーションから受信したクエリーを実行することが可能となり、アプリケーションに対してデータベースを透過的に見せることができる。また、これによりデータベースを利用するアプリケーション側で実名データと偽名データの結合処理を実装する必要も無い。
本発明によれば、個人データを実名テーブルと偽名テーブルとに分離してデータベースに管理し、実名データと偽名データとの対応表が記憶された記憶媒体がアクセス可能な場合とアクセス不可能な場合とがあるシステムにおいて、データベースを利用するアプリケーションに対してデータベースを透過的に見せることができる。
以下、本発明の実施形態について図面を参照しつつ詳細に説明する。
==実施例1==
図1Aに実施例1として説明する情報処理システム100の構成を示している。情報処理システム100には、通信ネットワーク201を介して通信可能に接続される、分割データベース管理部101、アプリケーション200(給与計算アプリケーション202、出勤記録集計アプリケーション203、出勤管理アプリケーション204)、ICカード205、及び、アプリケーション200によってアクセスされる実データベース111が含まれる。通信ネットワーク201は、例えば、TCP/IPによる通信が可能なネットワークである。図1Aに示す情報処理システム100が、例えば、クライアント/サーバ型のシステムとして構成される場合には、分割データベース管理部101は、サーバコンピュータにおいて実現される機能であり、アプリケーション200は、クライアントコンピュータにおいて実現される機能である。
実データベース111は、所定のコンピュータで実行されるRDBMS(Relational DataBase Management System)によって管理されるRDB形式のデータベースである。ICカード205は、リーダ・ライタ装置等を介して通信ネットワーク201に通信可能に接続される可搬型の記録媒体である。ICカード205には、前述の実名データと偽名データとの対応関係を示したID対応表206が記録されている。ID対応表206は、分割データベース管理部101からのみアクセスできるように、暗号化や暗号化通信を行うことにより安全(セキュア)に管理されている。
図1Bは情報処理システム100の他の構成例である。同図に示す情報処理システム100の場合、実データベース111は通信ネットワーク201に直接接続されず、実データベース111は分割データベース管理部101が実現されているコンピュータに直接接続されている。すなわち、図1Bに示す情報処理システム100の場合には、通信ネットワーク201を通じて実データベース111に直接アクセスすることができないため、実データベース111をより安全に管理することができる。
なお、図1A及び図1Bのいずれの構成においても、分散データベース管理部111は、アプリケーション200からの実データベース111へのアクセス要求を仲介するプロキシサーバ(代理サーバ)として機能している。また、アプリケーション200は、実データベース111にアクセスするための識別子として、分割データベース管理部101の識別子(ホスト名やIPアドレス等)を指定することにより、実データベース111にアクセスする。
図2は分割データベース管理部101、アプリケーション200、実データベース111、を実現するために用いられるコンピュータのハードウエア構成例である。同図に示すコンピュータ60は、CPU61、RAM・ROM等のメモリ62、ハードディスク63、データを入力するためのユーザインタフェースであるキーボードやマウス等の入力装置64、データを表示するためのユーザインタフェースである液晶ディスプレイやブラウン管ディスプレイ等の表示装置65、通信ネットワーク201に接続して通信するための通信インタフェース66などを有している。
図3Aは分割データベース管理部101を中心とした情報処理システム100の具体的なソフトウエア構成である。分割データベース管理部101は、仮想データベースI/F部102(クエリー受信部)、クエリー変換部103(クエリー判定部、クエリー変換部)、ID対応表状態判定部104、ID対応表206の複製を記憶するID対応表キャッシュ部105(対応表記憶部)、ID攪乱部106、実データベースI/F部107等の機能を有する。なお、これらの機能は、コンピュータ60が有するハードウエアが備える機能や、CPU61がメモリ62やハードディスク63に記憶されているプログラムを実行することによって実現されている。
図3Aに示すように、実データベース111には、従業員マスタ303、勤務記録304、及び勤務記録集計データ305が、テーブルとして格納されている。なお、従業員マスタ303は、前述した実名テーブルに相当するテーブルであり、勤務記録304及び勤務記録集計データ305は、いずれも前述した偽名テーブルに相当するテーブルである。実データベース111は、RDB形式のデータベースであるので、テーブルやビュー等のデータの集合はデータベースというリソースを単位として管理されている。本実施例では、従業員マスタ303、勤務記録304、勤務記録集計305が、「従業員」というリソース名を有するデータベースに格納されているものとする。
一般にRDBMSは、ベンダごとに独自拡張機能や標準対応の程度に差異がある。また、アプリケーション200を記述している言語によっては、ソースコードに直接SQL文を記述できない場合もある。このような場合には、例えば、図3Bに示すように、アプリケーション200と分割データベース管理部101との間に、複数の異なるRDB(Relational Database)の機能を共通化/抽象化したDBミドルウェア901,902,903を介在させればよい。
なお、この場合のアプリケーション200と分割データベース管理部101との間の通信はDBミドルウェア901,902,903を介して行われる。また、図3Aの構成では、分割データベース管理部101とアプリケーション200との間の通信は、実データベース111が使用する通信プロトコルを用いて行われるが、図3Bの構成では、DBミドルウェア901,902,903の通信プロトコルを用いて行われる。このようにDBミドルウェア901,902,903を介在させる場合には、アプリケーション200を分割データベース管理部101に接続するためのインタフェースをアプリケーション200に造り込む必要がないという利点があり、例えば、稼働実績のある信頼性の高いアプリケーション200に手を加えることなく、分割データベース管理部101に結合させることができ、信頼性を損なうことなく、本発明の情報処理システム1を導入することができる。なお、DBミドルウェア901,902,903の具体例として、オペレーティングシステムのランタイムライブラリがある。
次に、情報処理システム100において取り扱われるデータについて説明する。図4Aは従業員マスタ303の一例である。従業員マスタ303の各レコードには、従業員ID3031、氏名3032、所属3033、職名3034、住所3035の項目が含まれる。このうち、従業員ID3031の項目には、「001」,「002」といった、従業員ごとに付与される固有の識別子が格納される。なお、本実施例では、従業員ID3031に格納されている識別子のことを、実名ID又は実名の従業員IDと称することとする。
図4Bに勤務記録304の一例を示している。勤務記録304には、出勤管理アプリケーション204によって適宜レコードが追加される。勤務記録304の各レコードには、従業員ID3041、記録日時3042、及び、記録内容3043の項目が含まれる。ここで本実施例では、同一人の個人データを、実名データを用いた実名テーブルと、偽名データを用いた偽名テーブルとに分割して実データベース111に管理している。このため、同一の従業員のデータであっても、図4Aに示す従業員マスタ303の従業員ID3031と、図4Bに示す勤務記録304の従業員ID3041には、夫々異なる値が格納される。本実施例では、従業員マスタ303の従業員ID3031には実名データである実名IDが、勤務記録304の従業員ID3041には偽名データである偽名IDが格納されるものとする。
従業員マスタ303の従業員ID3031と、勤務記録304の従業員ID3041との対応は、ID対応表206に示されている。従業員マスタ303の内容と、勤務記録304の内容との対応づけは、ID対応表206を参照することによってのみ可能であり、ID対応表206が存在しない場合には、アプリケーション200から隠蔽されることになり、アプリケーション200は、例えば、勤務記録304の従業員ID3041に格納されている識別子から、従業員マスタ30の氏名、所属等の情報を取得することはできない。
なお、図4Bに示した勤務記録304の例では、従業員ID3041(偽名ID)の具体例として接頭語に「P」を有するものを用いているが、偽名IDとしては、例えば、実名IDをハッシュ関数により変換したものなどを用いることができる。偽名IDとして実名IDを推測することが困難又は不可能なものを用いることで、情報処理システム1の安全性を向上させることができる。以下の説明では、勤務記録304の従業員ID3041の識別子を偽名ID又は偽名の従業員IDとも称することとする。
図4Cに勤務記録集計データ305の一例を示している。勤務記録集計データ305には、従業員ID(偽名ID)ごとの勤務時間の集計値が格納される。出勤記録集計アプリケーション203は、勤務記録304を入力データとして計算を行う。勤務記録集計データ305の各レコードには、従業員ID3051(偽名ID)、集計月3052(年単位でもよい)、及び合計勤務時間3053の項目が含まれる。
図4Dは、給与計算アプリケーション202によって出力されるデータの一例である。同図に示す出力データ306は、従業員毎の給与データである。出力データ306には、従業員マスタ303に格納されている氏名3061、支給額合計3062、合計勤務時間3063、所得税3064、住民税3065の項目が含まれる。合計勤務時間3063には、勤務記録集計データ305に格納されている合計勤務時間3053の内容が出力される。なお、出力データ306は、例えば、給与明細を印刷するアプリケーション等によって利用される。
図5Aは、リソース定義データベース108に格納されているテーブルの一例である。同図に示すテーブル503には、実データベース111が稼働しているサーバコンピュータのホスト名5031が格納されている。
図5Bに示すテーブル500、及びテーブル504は、リソース定義データベース108に格納されているテーブルの一例である。テーブル500は、偽名テーブル及び偽名IDが用いられている項目が登録されるテーブルであり、偽名データが用いられているデータベースの名称5001、偽名テーブルの名称5002、及び偽名ID5003の項目を有する。偽名ID5003には偽名IDが用いられている項目名が格納される。図5Bに示すテーブル500には、「従業員」というリソース名を持つデータベースに格納された、勤務記録304の従業員IDが、偽名IDを表す項目であることが登録されている。図5Bに示すテーブル504は、実名テーブル及び実名IDが用いられている項目が登録されるテーブルであり、実名が用いられているデータベースの名称5041、実名テーブルの名称5042、及び実名ID5043の項目を有する。テーブル504では、「従業員」というリソース名を持つデータベースに格納されている従業員マスタ303の従業員ID3031には実名IDが用いられていることが登録されている。
図5Cに示すテーブル501は、応答定義データベース109に格納されるテーブルである。応答定義データベース109には、分割データベース管理部101が各アプリケーション200に対して返す応答メッセージが格納されている。テーブル501の各レコードには、アプリID5011、名称5012、応答データ5013、及び、完了ステータス5014の項目が含まれる。このうちアプリID5011には、アプリケーション200の識別子が格納され、例えば、設計者が与えるコード、アプリケーション200が使うデータベースアカウントのユーザ名等が格納される。名称5012には、アプリケーション200を特定する文字列が格納される。
応答データ5013には、分割データベース管理部101からID対応表206にアクセスできない状況において、アプリケーション200が、実名テーブルの実名データと偽名テーブルの偽名データとを対応づけなければならないクエリーを送信してきた場合にアプリケーション200に対して返答する応答メッセージの種類が格納される。例えば、応答データ5013に「空データ」が格納されている場合には、分割データベース管理部101は、アプリケーション200に空のデータ集合を返すことを意味する。応答の種類5013に「疑似データ」が格納されている場合には、テーブル504に登録されている実名テーブルの各項目をランダムな値で埋めたテーブルを応答データとしてアプリケーション200に送信し、応答データの内容は必ずしも保証されないことを意味する。完了ステータス5014には、クエリーの実行結果を示す完了ステータスが格納される。完了ステータスには、「正常」、「異常」や、実行結果の具体的な内容を示すエラーコードが格納される。
図5Dに示すテーブルは、ID対応表206の一例である。ID対応表206には、実名ID2061の項目と、偽名ID2062の項目を有し、実名IDと偽名IDの対応関係が示されている。
図5Eに示すテーブルは、ID対応表キャッシュ部105に存在する、ID対応表206の複製が格納されるテーブルの一例である。分割データベース管理部101が、ID対応表206にアクセス可能な場合には、テーブル502の実名ID5021には実名IDが格納され、アクセス不可能な場合には、テーブル502の実名ID5021には何も内容が格納されない。図5Eは実名ID5021に何も内容が格納されていない状態である。
=処理説明=
<ID対応表206を参照しない場合>
ここでは項目3041に格納されている偽名の従業員IDを用いて行われる処理の一例として、ID対応表206を参照せずに行われる、出勤管理アプリケーション204が実データベース111にアクセスする際に、分割データベース管理部101によって行われる処理について図6Aに示すフローチャート600とともに説明する。
出勤管理アプリケーション204は、実データベース111にアクセスする際、まず、分割データベース管理部101によって提供される仮想データベースに接続するための処理(以下、接続処理という。)を実行する。この接続処理において、出勤管理アプリケーション204は、接続情報(DBユーザ名、パスワード、接続データベース名等)を分割データベース管理部101に送信する。分割データベース管理部101の仮想データベースI/F部102は、出勤管理アプリケーション204から送信されてくる接続情報を受信する(S611)。
分割データベース管理部101によって接続情報が受信されると、次に、分割データベース管理部101のクエリー変換部103が、上記接続情報及びテーブル503に基づいて、実データベース111のホスト名を特定し、実データベースI/F部107に対して実データベース111への接続要求を送信する(S612)。次に、実データベースI/F部107は、接続情報を実データベース111に送信し(S613)、実データベース111からの応答を待機する。
次に、実データベース111に対する接続結果が、仮想データベースI/F部102によって受信されると(S614)、分割データベース管理部101が、受信した接続結果を出勤管理アプリケーション204に送信する(S615)。そして、実データベース111への接続に成功した場合には、出勤管理アプリケーション204と実データベース111との間にセッションが確立される。このセッションは切断処理が行われるまでの間、仮想データベースI/F部102、及び、実データベースI/F部107の機能によって保持される。
出勤管理アプリケーション204による勤務記録304へのレコードの追加処理は、上記セッションが確立している状態で行われる。出勤管理アプリケーション204は、パーソナルコンピュータや従業員が所持しているICカード等から、偽名の従業員ID、及び、出勤時刻や退勤時刻等の情報を含んだデータを取得し、取得したデータに取得時刻を付加する。そして、取得したデータに対応するレコードを勤務記録304に追加するためのクエリーを生成し、これを分割データベース管理部101に送信する。例えば、勤務記録304に、偽名IDとして「P001」が割り当てられている従業員である「佐藤」氏の出勤時刻を追加するクエリーは、次のように記述される。
INSERT 勤務記録 (従業員ID、記録日時, 記録内容)
VALUES (P001,'2005-04-01 09:00:00', '出勤'); ・・・(1)
なお、上記クエリーでは、説明の便宜上、テーブル名や項目名の文字列が日本語で表記されているが、実際にはSQLが許す文字列セットで記述される。
次に、出勤管理アプリケーション204から上記クエリーが送信されてきた場合に分割データベース管理部101によって行われる処理について、図6Bに示すフローチャート620を参照しつつ説明する。
まず、分割データベース管理部101の仮想データベースI/F部102が、出勤管理アプリケーション204からクエリーを受信する(S621)。次に、クエリー変換部103が、受信したクエリーを解析し(S622)、クエリーのSELECT構文中に指定された項目名に基づいて、実名テーブルと偽名テーブルの対応づけが必要であるかどうかを判定する(S623)。この判定は、例えば、SELECT構文「SELECT ... FROM ... WHERE <条件式>」の<条件式>に指定されている文字列から、テーブル名と項目名とを抽出し、その抽出結果をテーブル500および504と比較し、テーブル500に定義されている偽名テーブル名、及び、偽名IDの項目名と、テーブル504に定義されている実名テーブル名、及び、実名IDの項目名が、「=」、「<=」、「>=」等の比較演算子によって結合されているか否かを確認することにより行う。
例えば、図5Bに示すテーブル500及びテーブル504の場合には、等号演算子に関しては、「従業員マスタ.従業員ID=勤務記録集計データ.従業員ID」、従業員マスタ.従業員ID=勤務記録.従業員ID」の2つの条件式がチェック対象となる。クエリー変換部103は、これらのうちの少なくともいずれかの条件式が、出勤管理アプリケーション204から受信したクエリーに存在する場合には、実名テーブルと偽名テーブルの対応付けが必要であると判定し、存在しない場合には、実名テーブルと偽名テーブルの対応付けが必要でないと判定する。
なお、ネスティングが含まれている場合や「;」(セミコロン)を用いて併記されている場合など、受信したクエリーに複数のSELECT構文「SELECT ... FROM ... WHERE <条件式>」が存在する場合には、そのうちの少なくとも一つに上記条件式が含まれていれば、実名テーブルと偽名テーブルの対応づけが必要であると判定する。また、「ON」、「USING」、「JOIN」など、SELECT構文と実質的に等価な命令に関しては、例えば、その命令を一旦SELECT構文に帰着させてから上記の判定処理を行う。
ここでクエリー(1)は勤務記録305のみを処理対象とするものであり、このクエリー(1)には上記のいずれの条件式も含まれていない。従って、この場合は実名データと偽名データとの対応づけは必要なしと判定し(S623:不要)、(S625)の処理に進む。クエリー(1)とは異なり、上記いずれかの条件式を含んだクエリーが、出勤管理アプリケーション204から送信されてきた場合には、実名データと偽名データとの対応づけの必要が有りと判定し(S623:YES)、(S624)の処理に進む。(S624)の処理の具体的な内容については、後の給与計算アプリケーション202を用いた説明において詳述する。
(S625)の処理では、クエリー変換部103が、テーブル503を参照して実データベース111のホスト名を特定し(S625)、実データベースI/F部107に、実データベース111へのクエリーの送信要求を送出する。実データベースI/F部107は、上記送信要求を受信すると、出勤管理アプリケーション204から受信したクエリーを、実データベース111に送信する(S626)。
実データベース111は、実データベースI/F部107から送信されてくる上記クエリーを受信すると、受信したクエリーを実行する。受信したクエリーがクエリー(1)であった場合には、勤務記録304にレコードが1件追加されることになる。(S627)の処理では、実データベースI/F部107が、クエリーの実行結果を実データベース111から受信する。仮想データベースI/F部102は、クエリーの実行結果を受信すると、出勤管理アプリケーション204に対してデータベースの操作の成功もしくは失敗を示す状態コードが出勤管理アプリケーション204に送信される(S628)。
以上がID対応表206を参照せずに行われる、出勤管理アプリケーション204から実データベース111に対するアクセスに関する処理の一例である。なお、以上に説明した出勤管理アプリケーション204についての処理と同様に、ID対応表206を参照せずに行われる、勤務記録集計アプリケーション203から実データベース111に対するアクセスに関する処理についても、図6A、図6Bに示すフローチャートに従って行われる。
勤務記録集計アプリケーション203は、アプリケーションの利用者が、2005年4月1日から2005年4月30日の間というように任意の期間を指定すると、勤務記録304を参照して指定された期間内の各従業員の勤務時間を集計し、実データベース111の勤務記録集計データ305に結果を出力する。ここで勤務記録集計アプリケーション203は、勤務記録304に格納された指定期間内のデータを得るために、例えば、次のクエリーを分割データベース管理部101に発行する。
SELECT 従業員ID, 記録日時, 記録内容 FROM 従業員マスタ
WHERE 記録日時>='2005-04-01 0:00:00' AND 記録日時<='2005-04-30 23:59:59'; ・・・(2)
勤務記録集計アプリケーション203は、上記クエリーの実行結果に基づいて、従業員IDごとの勤務時間を算出し、勤務記録集計データ305にレコードを追加するクエリーを実データベース111に発行する。例えば、偽名の従業員IDとして「P001」が与えられている従業員が、合計40時間勤務していた場合には、勤務記録集計アプリケーション203は、次のクエリー(3)を実データベース111に送信する。
INSERT 勤務記録集計データ (従業員ID、合計勤務時間) VALUES (P001, 40); ・・・(3)
以上がID対応表206を参照せずに行われる、勤務記録集計アプリケーション203から実データベース111に対するアクセスに関する処理の一例であるが、さらにID対応表206を参照せずに行われる、顧客マスタ303のみにアクセスする処理も、上記と同様にして行われる。
このように、アプリケーション200から送信されてくるクエリーが、実名テーブルのみ、又は、偽名テーブルのみを対象とする場合には、ID対応表206が存在しなくても、正常にクエリーを実行することができる。
<ID対応表206を参照する場合>
次に、ID対応表206を参照して行われる処理について、給与計算アプリケーション202が、ID対応表206を参照しつつ実データベース111にアクセスする際の処理を具体例として説明する。
ID対応表206は、ICカード205に格納されており、ICカード205をリーダ・ライタ装置等にセットすることにより、分割データベース管理部101はID対応表206を参照することが可能になる。図7Aに示すシーケンス700は、ICカード205の所持者がICカード205をリーダ・ライタ装置等にセットし、分割データベース管理部101が、IDカード205と通信可能な状態になった場合に発生する割込信号に応じて開始される、分割データベース管理部101によって行われる処理である。
割込信号が発生すると、ID対応表状態判定部104は、まずID対応表206の読み出しが可能かどうかを判定する(S711)。ICカード205にパスワードが設定されている場合には、パスワード認証が完了していれば読み出し可能な状態である。パスワードが設定されていない場合には、カードの物理的な接続が認識された時点で読み出し可能な状態となる。
(S712)の処理では、ID対応表状態判定部104が、ID対応表キャッシュ部105にキャッシュの更新要求を送出する。ID対応表キャッシュ部105は、キャッシュ502へのアクセスを排他制御するために、ロック状態変数を管理している。ロック状態変数は、ID対応表キャッシュ部105、クエリー変換部103、及びID攪乱部106からアクセスされる。ロック状態変数が取り得る値には、排他制御が行われていないことを示す「OK」、排他制御が行われているプロセス以外からは更新(write)が不可であることを示す「W」、参照(Read)も更新も不可であることを示す「R/W」等がある。
例えば、クエリー変換部103がキャッシュ502を利用している場合には、ロック状態変数は「W」となり、ID対応表キャッシュ部105によるキャッシュ更新処理もしくはID攪乱部106のID更新処理が実行されている場合には、ロック状態変数は「R/W」となり、それ以外の場合には、ロック状態変数は「OK」となる。ロック状態変数は、例えば、オペレーティングシステムが提供するシステム関数により、メモリ62上の変数やファイルとして実装されている。
(S713)の処理では、ID対応表キャッシュ部105が、ロック状態変数が「OK」になるまで待機し、ロック状態変数が「OK」になるとロック状態変数を「R/W」に変更している。(S714)の処理では、ID対応表キャッシュ部105が、ICカード205からID対応表206を読み出して、メモリ62上に確保される記憶領域であるキャッシュ502にID対応表206の複製(又は実名IDの値のみ)を格納している。この時点において、キャッシュ502には全ての実名IDと偽名IDの対応データが格納される。(S715)の処理では、ID対応表キャッシュ部105が、ロック状態変数を「OK」に設定している。
図7Bに示すシーケンス720は、ICカード205の所持者がICカード205をリーダ・ライタ装置等から引き抜くことにより、ICカード205が分割データベース管理部101と通信不能になった場合に発生する割込信号に応じて開始される分割データベース管理部101によって行われる処理である。
(S721)の処理では、ID対応表キャッシュ部105に対し、ID対応表状態判定部104が、キャッシュ内容の破棄要求を送出している。(S722)の処理では、ID対応表キャッシュ部105は、ロック状態変数が「OK」になるまで待機し、ロック状態変数が「OK」になるとロック変数を「R/W」に変更している。(S723)の処理では、キャッシュ502の実名IDの欄に空データを代入している。(S724)の処理では、ID対応表キャッシュ部105が、ロック状態変数に「OK」を設定している。
次に、給与計算アプリケーション202が、ID対応表206を参照しつつ実データベース111にアクセスする処理について説明する。なお、給与計算アプリケーション202は、既に実データベース111とセッションを確立しているものとする。
まず、給与計算アプリケーション202が、各従業員の氏名と合計勤務時間を実データベース111から取得するため、次のクエリー(4)を分割データベース管理部101に送信することにより、あらかじめ従業員マスタ303から全ての従業員ID3031を取得する。なお、この処理は、例えば、前述した図6Bの処理に従って行われる。
SELECT 従業員マスタ.氏名, 勤務記録集計データ.合計勤務時間
FROM従業員マスタ, 勤務記録集計データ
WHERE 従業員マスタ.従業員ID=勤務記録集計データ.従業員ID AND
従業員マスタ.従業員ID='001'; ・・・(4)
次に、分割データベース管理部101は、図6Bのフローチャートの(S621)〜(S623)と同様の処理を実行する。なお、この場合、(S623)の処理では、顧客マスタ303(実名テーブル)の従業員ID3031(実名データ)と、勤務記録集計データ305(偽名テーブル)の従業員ID3051(偽名データ)との対応が必要と判定されるので、のクエリー変換処理が実行される(S624)。
クエリー変換処理(S624)の処理の詳細を図8のフローチャート800に示している。クエリー変換処理(S624)では、まず、クエリー変換部103が、ID対応表状態判定部104に問い合わせることにより、ID対応表206にアクセス可能であるかどうかを確認する(S811)。アクセス可能である場合には(S811:アクセス可)、(S812)の処理に進む。(S812)の処理において、クエリー変換部103は、ロック状態変数が「OK」になるまで待機し、ロック状態変数が「OK」になると、ロック状態変数を「W」に設定している。
次に、クエリー変換部103は、給与計算アプリケーション202から受信したクエリーについて変換処理を実行する(S813)。ここで給与計算アプリケーション202は、従業員マスタ303(実名テーブル)の従業員ID3031(実名データ)と、勤務記録集計データ305(偽名テーブル)の従業員ID3051(偽名データ)を参照する際、同一の従業員についてのレコードには、同じ識別子が格納されているものとして処理を実行するが、従業員マスタ303(実名テーブル)では実名ID(実名データ)が用いられ、勤務記録集計データ305(偽名テーブル)では偽名ID(偽名データ)が用いられている(例えば、実名ID「001」に対して偽名ID「P001」)。このため、クエリー(4)をそのままの形で実行されてしまうと、アプリケーション200が期待する結果が得られないことになる。そこで、(S813)の変換処理では、アプリケーション200が期待する結果が得られるように、給与計算アプリケーション202から受信したクエリーを、実データベース111のテーブル構造に適合するクエリーに変換する。
クエリー変換処理(S823)では、まず、前述した図6Bの(S622)及び(S623)の処理と同様に、SELECT構文のWHERE句に記述されている文字列から、比較演算子で結ばれたテーブル名と項目名を抽出し、テーブル504又はテーブル500の、テーブル名又は項目名に一致するものを選出する。クエリー(4)の場合には、「従業員マスタ.従業員ID」、及び、「勤務記録集計データ.従業員ID」が該当することになる。なお、SQL構文上、これらは「テーブル名.項目名」を意味する。
次に、列挙したテーブル名と項目名の組合せに基づいて、実データベース111において参照すべきテーブルをリストアップする。クエリー(4)の場合には、文字列「従業員マスタ」及び「勤務記録集計データ」が該当する。次に、受信クエリーのWHERE句を、テーブル504とテーブル500の登録データと比較して、実名ID又は偽名IDの値を参照している条件式を列挙する。クエリー(4)では「従業員マスタ.従業員ID='001'」の条件式が該当する。
次に、上記実名ID又は偽名IDの値を参照している条件式を、テーブル504及びテーブル500の登録データと比較し、必要に応じて、リストアップしたテーブルの夫々に適した条件式に変換する。ここでは、条件式に出現するテーブル名と項目名の組みがテーブル504に登録されているので、条件式は実名IDを参照するものと見なされる。
従業員マスタ303のチェック処理では、テーブル504に「従業員マスタ」が存在するので、条件式はそのままとなる。勤務記録集計データ305のチェック処理では、テーブル500に「勤務記録集計データ」が存在するので、勤務記録集計データ305には偽名IDしか含まれていないと判定される。この場合、クエリー変換部103は、キャッシュ502に格納されているID対応表206を参照し、実名IDに対応する偽名IDを特定し、条件式で参照しているIDの値を変換する。ここではクエリー(4)の「勤務記録集計データ.従業員ID ='001'」の部分は「勤務記録集計データ.従業員ID='P001'」に変換されることになる。
次に、クエリー変換部103は、リストアップしたテーブルの夫々を対象とした複数のクエリーを生成する。クエリー(4)に対応して生成されるクエリーは、例えば次の2つのクエリーである。
SELECT 従業員マスタ.氏名
FROM 従業員マスタ
WHERE 従業員マスタ.従業員ID='001'; ・・・(5)
SELECT 勤務記録集計データ.合計勤務時間
FROM 勤務記録集計データ
WHERE 勤務記録集計データ.従業員ID='P001'; ・・・(6)
以上がクエリー変換処理(S813)の詳細である。続く(S814)乃至(S816)の処理では、前述した図6Bの(S625)乃至(S627)と同様の処理が行われる。そして、(S816)の処理が終了した状態では、2つのクエリー(5)、(6)が実行された結果として、2つのレコード集合が実データベースI/F部107に格納される。(S817)の処理では、データ変換部114が、実データベースI/F部107に格納されている上記2つのレコード集合の直積を求めて、上記2のレコードを1つのレコード集合に変換する。(S817)の処理の結果、本実施例の場合には、従業員IDが「001」の従業員に該当する、{佐藤、40}という1個のレコードが得られることになる。
続く(S818)の処理では、仮想データベースI/F部102が、(S817)により得られたレコードを給与計算アプリケーション202に送信し、仮想データベースI/F部102が、クエリー変換部103に応答完了を送信する。(S819)の処理では、クエリー変換部103が、(S812)の処理において変更していたロック状態変数を「OK」に変更し、またキャッシュのロックを解除している。
(S811)の処理において、ID対応表206にアクセス不可と判定された場合には、次に(S820)の処理が実行される。(S820)の処理において、分割データベース管理部101は、テーブル501を参照して給与計算アプリケーション202に対する応答を決定する。本実施例の場合には、完了ステータスを「異常終了」とする。(S821)の処理では、分割データベース管理部101が、例えば、RDBMSによって提供されるログや環境変数等のRDBMSによって提供される方法により、完了ステータスを給与計算アプリケーション202に通知する。
以上がID対応表206を参照して行われる、給与計算アプリケーション202が実行データベース111にアクセスする際の処理である。このように、実施例1として説明した情報処理システム100によれば、分割データベース管理部101が、実データベース111のテーブル構造と、ID対応表206とをアプリケーション200から隠蔽しつつ、アプリケーション200に対して応答メッセージを返すことができる。また、ID対応表206の接続状態に応じてアプリケーション200ごとに応答メッセージをカスタマイズすることもできる。
==実施例2==
図9に実施例2として説明する情報処理システム1000の構成を示している。ここで実施例1として説明した前述の情報処理システム100では、全てのテーブルが物理的に同一の実データベース111に格納されていた。しかしながら、実施例2の情報処理システム1000では、実データベース111に格納されているデータが、物理的に異なる複数のデータベースに分散した状態で管理される。具体的には、実名テーブルである従業員マスタについては実データベース1002で管理され、従業員マスタ以外の偽名テーブルは、実データベース1003で管理される。そして、図9に示す分散データベース管理部1004が、実データベース1002と実データベース1003とを統合し、アプリケーション200にあたかも1つの実データベースが存在しているかのように実データベース1002及び実データベース1003の内容を提供する。
情報処理システム1000の構成は、アウトソーシング等によって委託元が外部業者に業務委託を行う環境に好適である。以下の説明では、実名テーブルが格納された実データベース1002が業務委託サイト91によって管理され、偽名テーブルが格納された実データベース1003が、業務受託サイト(データセンタ)92に管理が委託されているものとする。業務委託サイト91と業務受託サイト92との間は、VPN(Virtual Private Network)1001等のセキュアな通信方式によって接続されている。なお、このように業務受託サイト92ではもっぱら偽名データのみを用いて作業することになるので、委託元は実名と関連づけられたデータが外部に漏洩するのを防ぐことができる。
図10は、分割データベース管理部101を中心とした情報処理システム1000の具体的なソフトウエア構成である。図3Aに示した情報処理システム100との具体的な違いは、図10では複数の実データベース1002,1003が存在していることと、実データベース1002,1003が、夫々、分散データベース管理部1004によって制御されていることである。
図11Aは、情報処理システム1000における分割データベース管理部101の処理を説明するフローチャート1100である。なお、情報処理システム1000では、ID対応表206は、分割データベース管理部101及び分散データベース管理部1004の機能によって実データベース1002,1003のテーブルにも格納される。また実データベース1002,1003に対するクエリーの実行は、分散データベース管理部1004によって行われる。
以下、図11Aに示すフローチャート1100とともに、情報処理システム1000の分散データベース管理部1004によって行われる処理について説明する。なお、以下の説明は、図8のフローチャートとの差異点について行う。
図11Aに示すフローチャート1100において、(S1111)乃至(S1112)の処理は図8の(S811)乃至(S812)と同様に行われる。クエリー変換処理(S1113)の処理は、図8に示す(S813)の処理とクエリーの解析処理については同じであるが、クエリーを生成する処理が(S813)の処理とは異なる。すなわち、(S1113)の処理では、クエリー変換部103は、ID対応表206のキャッシュ502のうち、受信したクエリーを実行するのに必要なレコード、例えば、クエリー(5)を受信した場合には、実名IDが「001」のレコードを、実データベース1002の一時的なテーブルである「TEMPORAL」に書き出す。なお、一時的なテーブルを格納するデータベースは、必ずしも実データベース1002や実データベース1003である必要はなく、分散データベース管理部1004が管理している他のデータベースであってもよい。
クエリー変換処理(S1113)では、次にテーブル「TEMPORAL」を利用して、(S817)の処理(直積による実行結果の結合)に相当する処理を含んだクエリーを生成する。具体的には、分割データベース管理部101が、給与計算アプリケーション202からクエリー(4)を受信した場合には、クエリー変換処理(S1113)によって、例えば、次のクエリー(7)が生成される。
SELECT 従業員マスタ.氏名, 勤務記録集計データ.合計勤務時間
FROM 従業員マスタ, 勤務記録集計データ, TEMPORAL
WHERE 従業員マスタ.従業員ID='001' AND
従業員マスタ.従業員ID=TEMPORAL.実名ID AND
勤務記録集計データ.従業員ID=TEMPORAL.偽名ID; ・・・(7)
クエリー(7)では、クエリー(4)における、条件式「従業員マスタ.従業員ID=勤務記録集計データ.従業員ID」を右辺と左辺に分解し、テーブルTEMPORALの実名ID、偽名IDとの比較文に置きかえている。クエリー(7)の実行結果は、1つのレコード集合になっているので、(S817)のような実行結果の結合処理は不要である。
このように、本実施例で説明した情報処理システム1000によれば、実データベースの内容が、物理的に異なる2つの実データベース1002,1003に管理される場合でも、実名データと偽名データを対応づける必要がある処理を実行することが可能である。また、実施例1では、アプリケーション200から受信したクエリーに基づいて複数のクエリーを生成し、その実行結果の直積をとって1つの実行結果に結合する必要があったが、本実施例ではアプリケーション200から受信したクエリーに基づいて1つのクエリーのみを生成し、また実行結果の結合処理が不要である。また実施例1の情報処理システム100と同様に、本実施例の情報処理システム1000においても、実名テーブル又は偽名テーブルの一方のみを対象とする処理についてはID対応表206の存在有無にかかわらずいつでも実行することが可能であり、また必要な場合には、ID対応表206によって実名テーブルと偽名テーブルの内容を結合し、アプリケーション200が必要とする処理を実行することが可能である。
ところで、本実施例の上記構成では、ID対応表206の内容が、実データベース1002,1003にも格納されてしまうため、本来、分割データベース管理部101のみがアクセス可能な情報として管理されるべきID対応表206の秘密性が損なわれてしまうことになる。ここでID対応表206の秘密性を確保するには、例えば、処理S1118が行われた後にID対応表206の内容を再構築する処理(S1119)を実行するようにする。
図11Bは、ID対応表206の秘密性を向上させた場合における、図11Aの(S1119)の処理の詳細を説明するフローチャート1150である。まずクエリー変換部103が、ID対応表状態判定部104に対してID対応表206にアクセス可能であるかどうかを問い合わせる(S1151)。ID対応表206がアクセス不可であれば(S1151:アクセス不可)、以降のID対応表206の再構築処理を実行せずに処理が終了する。アクセス可であれば(S1151:アクセス可)、次に、クエリー変換部103が、ID攪乱部106に偽名IDの攪乱を要求する(S1152)。このとき、ID攪乱部106は、ロック状態変数を「R/W」に変更する(S1153)。
次に、ID攪乱部106は、テーブル「TEMPORAL」に格納されている偽名IDを、実名IDに基づいて新たに生成した偽名IDに置き換える(S1154)。ここで偽名IDの生成、及び偽名IDの置き換え処理は、例えば、次のようにして行われる。まず実名IDと乱数とをXOR演算を行うことにより合成し、その結果をキーとしてMD5(Message Digest 5)によって偽名IDを生成する。次に、生成した偽名IDが、ID対応表206に存在する偽名IDと重複しているかどうかをチェックする。重複している場合には、上記乱数を変更し、再び偽名IDの生成処理(S1154)からやり直す。偽名IDが重複していなければ、ID対応表206における古い偽名IDを新しい値で置き換える。
ID対応表206の置き換え後は、図5Bのテーブル500における偽名ID項目に格納されている項目(ここでは勤務記録304中の従業員ID3041、及び勤務記録集計データ305中の従業員ID3051)に格納されている偽名IDを検索し、検索された偽名IDを新しい値に置き換える(S1155)。次に、ロック状態変数を「OK」に変更し(S1156)、最後にテーブル「TEMPORAL」の内容を削除する(S1157)。
以上の仕組みによれば、実データベースを分散データベース管理部1004によって管理する構成であっても、ID対応表206の秘密性を確保することができる。
==実施例3==
図12に実施例3として説明する情報処理システム1200の構成を示している。また図13は、分割データベース管理部101を中心とした情報処理システム1200の具体的なソフトウエア構成である。実施例3として説明する情報処理システム1200が実施例1における情報処理システム100と異なる点は、ICカード205にID対応表206の代わりに秘密鍵1201が格納されていることである。また、実施例3は、実施例1と比べてICカード205がアクセス可能になった場合における、分割データベース管理部101のID対応表キャッシュ部105の処理にも特徴がある。
図14Aに示すシーケンス1400とともに実施例3におけるID対応表キャッシュ部105の処理について説明する。なお、シーケンス1400が開始される前提として、ICカード206がアクセス不可である場合には、ID対応表キャッシュ部105に、秘密鍵1201で暗号化されたID対応表206が格納されているものとする。
図14Aに示すシーケンス1400は、ICカード205の所持者がICカード205をリーダ・ライタ装置等にセットしたのに応じて発生する割込信号に応じて開始される。割込信号が発生すると、ID対応表状態判定部104は、まず秘密鍵1201の読み出しが可能であるかどうかを判定する(S1411)。なお、ICカード205にパスワードが設定されている場合には、パスワード認証が完了していれば読み出し可能な状態である。パスワードが設定されていない場合には、カードの物理的な接続が認識された時点で読み出し可能な状態となる。
(S1412)の処理では、ID対応表状態判定部104が、ID対応表キャッシュ部105にキャッシュの更新要求を送出する。ID対応表キャッシュ部105は、キャッシュ502へのアクセスを排他制御するために、ロック状態変数を管理している。ロック状態変数については図7Aにおけるのと同様である。(S1413)の処理では、ID対応表キャッシュ部105が、ロック状態変数が「OK」になるまで待機し、ロック状態変数が「OK」になるとロック状態変数を「R/W」に変更している。
(S1414)の処理では、ID対応表状態判定部104がICカード205から秘密鍵1201を読み出している。(S1415)の処理では、ID対応表状態判定部104が暗号化された状態で格納されているID対応表206を秘密鍵1201によって復号している。復号されたID対応表206はID対応表キャッシュ部105に格納される。
図14Bに示すシーケンス1420は、ICカード205の所持者がICカード205をリーダ・ライタ装置等から引き抜くことにより、ICカード205が通信ネットワークから切断された場合に発生する割込信号に応じて開始される。なお、このシーケンス1420は、分割データベース管理部101によって行われる。
(S1421)の処理では、ID対応表状態判定部104が、ID対応表キャッシュ部105に対しキャッシュ(メモリ62)に復号化されているID対応表206及び秘密鍵を破棄(消去)するための要求を送出している。(S1422)の処理では、ID対応表キャッシュ部105は、ロック状態変数が「OK」になるまで待機し、ロック状態変数が「OK」になるとロック変数を「R/W」に変更している。(S1423)の処理では、ID対応表キャッシュ部105が、キャッシュ(メモリ62)に復号化されているID対応表206及び秘密鍵を破棄(消去)している。(S1424)の処理では、ID対応表キャッシュ部105が、ロック状態変数に「OK」を設定している。
このように、実施例3では、ID対応表206そのものをICカード205に記憶しなくて良いため、ICカード205に実装すべきメモリの容量が少なくて済む。またID対応表206の格納件数がICカード205の記憶容量に無関係となり、データサイズの大きなID対応表206を取り扱うことが可能となる。また分割データベース管理部101は、秘密鍵だけを読み出せば良いので、ID対応表206を読み出す場合に比べて負荷が少なく、処理を高速化することができる。
ところで、以上に説明した実施例3の構成は、実施例2に適用することも可能である。ここで実施例3は、ICカード205にはID対応表206を格納しない構成であるので、図11Aに示す実施例2のID対応表206の再構築処理(S1119)の内容が異なる。すなわち、実施例3を実施例2に適用した場合には、例えば、偽名IDを新たな偽名IDで置き換えた後のID対応表206を秘密鍵1201の複製鍵で暗号化し、これを新たに前述の暗号化済みのID対応表206として記憶することになる。
なお、以上の実施形態の説明は本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明はその趣旨を逸脱することなく、変更、改良され得ると共に本発明にはその等価物が含まれることは勿論である。
本発明の実施例1として説明する情報処理システム100の構成を示す図である。 本発明の実施例1として説明する情報処理システム100の構成を示す図である。 本発明の実施例1として説明する、分割データベース管理部101、アプリケーション200、実データベース111、を実現するために用いられるコンピュータのハードウエア構成の一例を示す図である。 本発明の実施例1として説明する、分割データベース管理部101を中心とした情報処理システム100の具体的なソフトウエア構成を示す図である。 本発明の実施例1として説明する、分割データベース管理部101を中心とした情報処理システム100の具体的なソフトウエア構成を示す図である。 本発明の実施例1として説明する、従業員マスタ303の内容の一例を示す図である。 本発明の実施例1として説明する、勤務記録304の内容の一例を示す図である。 本発明の実施例1として説明する、勤務記録集計データ305の内容の一例を示す図である。 本発明の実施例1として説明する、給与計算アプリケーション202によって出力されるデータの一例を示す図である。 本発明の実施例1として説明する、リソース定義データベース108に格納されているテーブルの一例を示す図である。 本発明の実施例1として説明する、リソース定義データベース108に格納されているテーブルの一例を示す図である。 本発明の実施例1として説明する、応答定義データベース109に格納されるテーブルの一例を示す図である。 本発明の実施例1として説明する、ID対応表206の一例を示す図である。 本発明の実施例1として説明する、ID対応表206の一例を示す図である。 本発明の実施例1として説明する、ID対応表206を参照せずに行われる、出勤管理アプリケーション204が実データベース111にアクセスする処理を説明するフローチャートである。 本発明の実施例1として説明する、出勤管理アプリケーション204から上記クエリーが送信されてきた場合に分割データベース管理部101によって行われる処理を説明するフローチャートである。 本発明の実施例1として説明する、ICカード205の所持者がICカード205をリーダ・ライタ装置等にセットしたのに応じて発生する割込信号に応じて開始される処理を説明するシーケンス図である。 本発明の実施例1として説明する、ICカード205の所持者がICカード205をリーダ・ライタ装置等から引き抜くことにより、ICカード205が通信ネットワークから切断された場合に発生する割込信号に応じて開始される処理を説明するシーケンス図である。 本発明の実施例1として説明する、(S624)のクエリー変換処理の詳細を説明するフローチャートである。 本発明の実施例2として説明する、報処理システム1000の構成を示す図である。 本発明の実施例2として説明する、分割データベース管理部101を中心とした情報処理システム1000の具体的なソフトウエア構成を示す図である。 本発明の実施例2として説明する、情報処理システム1000における分割データベース管理部101の処理を説明するフローチャート1100を示す図である。 本発明の実施例2として説明する、図11Aの(S1119)の処理の詳細を説明する図である。 本発明の実施例3として説明する、情報処理システム1200の構成を示す図である。 本発明の実施例3として説明する、分割データベース管理部101を中心とした情報処理システム1200の具体的なソフトウエア構成を示す図である。 本発明の実施例3として説明する、ID対応表キャッシュ部105の処理を説明する図である。 本発明の実施例3として説明する、ID対応表キャッシュ部105の処理を説明する図である。
符号の説明
100 情報処理システム
101 分割データベース管理部
102 仮想データベースI/F部
103 クエリー変換部
104 ID対応表状態判定部
105 ID対応表キャッシュ部
106 ID攪乱部
107 実データベースI/F部
108 リソース定義データベース
109 応答定義データベース
111 実データベース
200 アプリケーション
202 給与計算アプリケーション
203 出勤記録集計アプリケーション
204 出勤管理アプリケーション
205 ICカード
206 ID対応表

Claims (15)

  1. CPU及びメモリと、
    実名データを含む実名テーブル及び偽名データを含む偽名テーブルが格納されるデータベースに接続するインタフェースと、
    前記実名データと前記偽名データとの対応表が記録された記録媒体から前記対応表を読み出すインタフェースと、
    前記対応表へのアクセス可否を判定する状態判定部と、
    前記データベースに対して実行されるクエリーを受信するクエリー受信部と、
    受信した前記クエリーの実行に際し、前記実名データと前記偽名データとの対応づけが必要であるかどうかを判定するクエリー判定部と、
    前記対応づけが必要であると判定され、かつ、前記対応表にアクセス可能な状態である場合には、前記対応表に基づいて、受信した前記クエリーを新たなクエリーに変換するクエリー変換部と、
    前記クエリーを前記データベースに送信するインタフェースと、
    を有すること
    を特徴とする情報処理装置。
  2. 請求項1に記載の情報処理装置であって、
    前記クエリー変換部によって生成される前記新たなクエリーには、
    前記実名データによって前記実名テーブルにアクセスするように記述された第1のクエリーと、前記偽名データによって前記偽名テーブルにアクセスするように記述された第2のクエリーとが含まれること
    を特徴とする情報処理装置。
  3. 請求項1に記載の情報処理装置であって、
    前記クエリー変換部によって生成される前記新たなクエリーには、
    前記実名データによる前記実名テーブルへのアクセスと、前記偽名データによる前記偽名テーブルへのアクセスと、テーブル化された前記対応表への、前記実名データ又は前記偽名データによるアクセスと、を実行するように記述されたクエリーが含まれること
    を特徴とする情報処理装置。
  4. 請求項1に記載の情報処理装置であって、
    前記対応づけが必要であると判定され、かつ、前記対応表にアクセスできない場合において、前記受信したクエリーの送信元に、前記送信元ごとに用意された応答を送信するインタフェースを有すること
    を特徴とする情報処理装置。
  5. 請求項1に記載の情報処理装置であって、
    前記状態判定部は、前記記録媒体と通信可能になった場合に生じる割込信号の発生に応じて前記記録媒体に対する認証処理を行い、前記認証処理に成功した場合には、前記記録媒体から前記対応表の複製を記憶するための処理を行い、さらに、前記クエリーの変換中は前記対応表の前記複製に対する排他制御を行うこと
    を特徴とする情報処理装置。
  6. 請求項5に記載の情報処理装置であって、
    前記状態判定部は、前記記録媒体と通信不能になった場合に生じる割込信号の発生に応じて記憶している前記対応表の前記複製に対するアクセスが存在するかどうかを判定し、アクセスが行われていない場合は前記複製の内容を消去すること
    を特徴とする情報処理装置。
  7. 請求項1に記載の情報処理装置であって、
    前記実名テーブルは第1のデータベースに格納され、
    前記偽名テーブルは第2のデータベースに格納され、
    前記第1のデータベースと前記第2のデータベースとを1つのデータベースとして提供する分散データベース管理部を有し、
    前記クエリー変換部によって生成される前記新たなクエリーは、
    前記実名データによる前記実名テーブルへのアクセスと、前記偽名データによる前記偽名テーブルへのアクセスと、テーブル化された前記対応表への前記実名データ又は前記偽名データによるアクセスと、を実行するように記述されたクエリーが含まれること
    を特徴とする情報処理装置。
  8. 請求項7に記載の情報処理装置であって、
    前記記録媒体に記録されているID対応表の偽名IDを、新たに生成した偽名IDによって置換し、前記偽名テーブルに格納されている置換前の前記偽名IDを、前記置換後の偽名IDに変更すること
    を特徴とする情報処理装置。
  9. CPU及びメモリと、
    実名データを含む実名テーブルと、偽名データを含む偽名テーブルとが格納されるデータベースに接続するインタフェースと、
    秘密鍵が記録されている記録媒体から前記秘密鍵を読み出すインタフェースと、
    前記秘密鍵で暗号化された、前記実名データと前記偽名データとの対応表を記憶する対応表記憶部と、
    前記対応表へのアクセス可否を判定するとともに、前記記録媒体から読み出した前記秘密鍵によって前記対応表を復号する状態判定部と、
    前記データベースに対して実行されるクエリーを受信するクエリー受信部と、
    受信した前記クエリーの実行に際し、前記実名データと前記偽名データとを対応づける必要があるかどうかを判定するクエリー判定部と、
    前記対応づけが必要であると判定され、かつ、前記対応表にアクセス可能な状態である場合に、受信した前記クエリーを、復号された前記対応表に基づいて新たなクエリーに変換するクエリー変換部と、
    前記クエリーを前記データベースに送信するインタフェースと、
    を有すること
    を特徴とする情報処理装置。
  10. 請求項9に記載の情報処理装置であって、
    前記状態判定部は、前記記録媒体と通信不能になった場合に生じる割込信号の発生に応じて、復号された状態で記憶している前記対応表及び記憶している前記秘密鍵を消去する処理を実行すること
    を特徴とする情報処理装置。
  11. CPU及びメモリと、実名データを含む実名テーブル及び偽名データを含む偽名テーブルが格納されるデータベースに接続するインタフェースとを有する情報処理装置の制御方法であって、
    前記実名データと前記偽名データとの対応表が記録された記録媒体から前記対応表を読み出すステップと、
    前記対応表へのアクセス可否を判定するステップと、
    前記データベースに対して実行されるクエリーを受信するステップと、
    受信した前記クエリーの実行に際し、前記実名データと前記偽名データとを対応づける必要があるかどうかを判定するステップと、
    前記対応づけが必要であると判定し、かつ、前記対応表にアクセス可能な状態である場合に、前記対応表に基づいて、受信した前記クエリーを新たなクエリーに変換するステップと、
    前記クエリーを前記データベースに送信するステップと、
    を有すること
    を特徴とする情報処理装置の制御方法。
  12. 請求項11に記載の情報処理装置の制御方法であって、
    前記クエリー変換部によって生成される前記新たなクエリーには、
    前記実名データによって前記実名テーブルにアクセスするように記述された第1のクエリーと、前記偽名データによって前記偽名テーブルにアクセスするように記述された第2のクエリーとが含まれること
    を特徴とする情報処理装置の制御方法。
  13. 請求項11に記載の情報処理装置の制御方法であって、
    前記クエリー変換部によって生成される前記新たなクエリーは、
    前記実名データによる前記実名テーブルへのアクセスと、前記偽名データによる前記偽名テーブルへのアクセスと、テーブル化された前記対応表への前記実名データ又は前記偽名データによるアクセスとを実行するように記述されたクエリーが含まれること
    を特徴とする情報処理装置の制御方法。
  14. 請求項11に記載の情報処理装置の制御方法であって、
    前記対応づけが必要であると判定され、かつ、前記対応表にアクセスできない場合において、前記受信したクエリーの送信元に、前記送信元ごとに用意された応答を送信するステップを含むこと
    を特徴とする情報処理装置の制御方法。
  15. CPUとメモリとを有してなる情報処理装置に、
    実名データを含む実名テーブル及び偽名データを含む偽名テーブルが格納されたデータベースに接続する機能と、
    前記実名データと前記偽名データとの対応表が記録された記録媒体から前記対応表を読み出す機能と、
    前記対応表へのアクセス可否を判定する機能と、
    前記データベースに対して実行されるクエリーを受信する機能と、
    受信した前記クエリーの実行に際し、前記実名データと前記偽名データとの対応づけが必要であるかどうかを判定する機能と、
    前記対応づけが必要であると判定され、かつ、前記対応表にアクセス可能な状態である場合に、前記対応表に基づいて、受信した前記クエリーを新たなクエリーに変換する機能と、
    前記クエリーを前記データベースに送信する機能と、
    を実現するためのプログラム。

JP2005303116A 2005-10-18 2005-10-18 情報処理装置、情報処理装置の制御方法、及びプログラム Expired - Fee Related JP4672518B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005303116A JP4672518B2 (ja) 2005-10-18 2005-10-18 情報処理装置、情報処理装置の制御方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005303116A JP4672518B2 (ja) 2005-10-18 2005-10-18 情報処理装置、情報処理装置の制御方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2007114855A true JP2007114855A (ja) 2007-05-10
JP4672518B2 JP4672518B2 (ja) 2011-04-20

Family

ID=38096995

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005303116A Expired - Fee Related JP4672518B2 (ja) 2005-10-18 2005-10-18 情報処理装置、情報処理装置の制御方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP4672518B2 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009199144A (ja) * 2008-02-19 2009-09-03 Fuji Xerox Co Ltd 情報処理装置および履歴情報管理プログラム
JP2012089086A (ja) * 2010-10-22 2012-05-10 Ricoh Co Ltd 情報管理装置、情報管理プログラム及び情報管理システム
JP2014178911A (ja) * 2013-03-15 2014-09-25 Hitachi Omron Terminal Solutions Corp 自動機システム
JP2014194662A (ja) * 2013-03-28 2014-10-09 Fujitsu Ltd データ検索方法、データ検索プログラムおよび中継装置
JP2015041319A (ja) * 2013-08-23 2015-03-02 株式会社リコー データ管理装置、データ管理方法、及びプログラム
JP2016151822A (ja) * 2015-02-16 2016-08-22 富士通株式会社 ストレージシステム、ストレージ制御装置及びストレージ制御プログラム
JP2019511779A (ja) * 2016-03-18 2019-04-25 オラクル・インターナショナル・コーポレイション 遠隔プロキシを用いてデータレジデンシ保護を提供するためのシステムおよび方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001357130A (ja) * 2000-06-13 2001-12-26 Hitachi Ltd 診療情報管理システム
JP2002182962A (ja) * 2000-12-11 2002-06-28 Saito:Kk セキュリティシステム、セキュリティ方法およびプログラム
JP2004145483A (ja) * 2002-10-22 2004-05-20 Toshiba Corp 情報共有支援装置および情報共有支援方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001357130A (ja) * 2000-06-13 2001-12-26 Hitachi Ltd 診療情報管理システム
JP2002182962A (ja) * 2000-12-11 2002-06-28 Saito:Kk セキュリティシステム、セキュリティ方法およびプログラム
JP2004145483A (ja) * 2002-10-22 2004-05-20 Toshiba Corp 情報共有支援装置および情報共有支援方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009199144A (ja) * 2008-02-19 2009-09-03 Fuji Xerox Co Ltd 情報処理装置および履歴情報管理プログラム
JP2012089086A (ja) * 2010-10-22 2012-05-10 Ricoh Co Ltd 情報管理装置、情報管理プログラム及び情報管理システム
JP2014178911A (ja) * 2013-03-15 2014-09-25 Hitachi Omron Terminal Solutions Corp 自動機システム
JP2014194662A (ja) * 2013-03-28 2014-10-09 Fujitsu Ltd データ検索方法、データ検索プログラムおよび中継装置
JP2015041319A (ja) * 2013-08-23 2015-03-02 株式会社リコー データ管理装置、データ管理方法、及びプログラム
JP2016151822A (ja) * 2015-02-16 2016-08-22 富士通株式会社 ストレージシステム、ストレージ制御装置及びストレージ制御プログラム
JP2019511779A (ja) * 2016-03-18 2019-04-25 オラクル・インターナショナル・コーポレイション 遠隔プロキシを用いてデータレジデンシ保護を提供するためのシステムおよび方法

Also Published As

Publication number Publication date
JP4672518B2 (ja) 2011-04-20

Similar Documents

Publication Publication Date Title
US10719567B2 (en) Database query processing on encrypted data
US9875370B2 (en) Database server and client for query processing on encrypted data
US11816116B2 (en) Facilitating queries of encrypted sensitive data via encrypted variant data objects
US9652512B2 (en) Secure matching supporting fuzzy data
EP3093784B1 (en) Client computer for querying a database stored on a server via a network
JP3969467B2 (ja) ネットワークシステム、送受信方法、送信装置、受信装置、および、記録媒体
JP5611598B2 (ja) Usbトークン上の暗号化キーコンテナ
JP4672518B2 (ja) 情報処理装置、情報処理装置の制御方法、及びプログラム
EP3278263B1 (en) Computing on encrypted data using deferred evaluation
US20210357516A1 (en) Method for duplexing database
US10657273B2 (en) Systems and methods for automatic and customizable data minimization of electronic data stores
US20220067206A1 (en) Token-based data security systems and methods with embeddable markers in unstructured data
US20140137265A1 (en) System and Method For Securing Critical Data In A Remotely Accessible Database
US20230379158A1 (en) Snapshot transfer for cloud-based storage across accounts
US20210374119A1 (en) Data update apparatus and data update method
US20230283465A1 (en) Keystore service for encryption in a secure service enclave
KR102235775B1 (ko) 개인정보처리 대행 및 관리 방법 및 프로그램
US20230177207A1 (en) Information processing apparatus, information processing method, and non-transitory computer readable medium
JP2017215785A (ja) 権限テスト装置およびプログラム
US20220123925A1 (en) Security enhanced blockchain system based on data double encryption and decryption
CN113935046A (zh) 一种数据处理方法、装置、设备及存储介质
KR20240061169A (ko) 개인정보 보호를 위한 진료기록문서 발급 장치 및 방법
JP2004086421A (ja) 文書管理方法及び文書管理装置並びに文書管理プログラム及びそれを記録した記録媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071214

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101015

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101026

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101224

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110118

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110119

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140128

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees