(57)【要約】【課題】アカウントの権限に依存しない高度なアクセス制御を実現する。【解決手段】データベースを管理する装置であって、データベース・オブジェクトを格納したオブジェクト格納部１１０と、処理要求に基づいて、オブジェクト格納部１１０に格納されたデータベース・オブジェクトに対する処理を実行する処理実行部１５０と、この処理実行部１５０による処理の態様に基づく適用条件とこの処理の内容を変更するための規則とを対応付けて保持するルール情報記憶部１３０と、処理要求に基づく処理の態様がルール情報記憶部１３０に保持された適用条件に適合する場合に、適合した適用条件に対応付けられた規則にしたがって、処理実行部１５０が実行する処理の内容を変更するルール適用部１６０と、を備える。【選択図】図１
2015036868.tif 000002
【特許請求の範囲】
【請求項１】
データベースを管理する装置であって、
データベース・オブジェクトを格納したオブジェクト格納部と、
処理要求に基づいて、前記オブジェクト格納部に格納された前記データベース・オブジェクトに対する処理を実行する処理実行部と、
前記処理実行部による処理の態様に基づく適用条件と当該処理の内容を変更するための規則とを対応付けて保持するルール記憶部と、
前記処理要求に基づく処理の態様が前記ルール記憶部に保持された前記適用条件に適合する場合に、当該適用条件に対応付けられた前記規則にしたがって、前記処理実行部が実行する処理の内容を変更するルール適用部と、
を備える、装置。
【請求項２】
前記ルール適用部は、前記処理要求に基づく処理の態様が所定の前記適用条件に適合し、当該適用条件に対応する前記規則が前記処理実行部による処理の結果を出力しないように変更する規則である場合、当該処理実行部による当該処理要求に基づく処理の実行を取り消す、請求項１に記載の装置。
【請求項３】
前記ルール適用部は、読み出し項目が指定されたデータの読み出し要求に基づく読み出し処理の態様が所定の前記適用条件に適合し、当該適用条件に対応する前記規則が特定の項目のデータ読み出し結果を出力しないように変更する規則である場合、当該処理実行部による当該項目のデータの読み出しを行わないように当該読み出し要求に基づく読み出し処理を変更する、請求項１に記載の装置。
【請求項４】
前記ルール適用部は、前記処理要求に基づく処理の態様が所定の前記適用条件に適合する場合に、当該適用条件に対応する前記規則に基づき、前記処理実行部による処理の結果として得られたデータに替えて、当該データに関する情報を出力する、請求項１に記載の装置。
【請求項５】
前記ルール適用部は、前記処理要求に基づく処理の態様が所定の前記適用条件に適合する場合に、当該適用条件に対応する前記規則に基づき、前記処理実行部による処理の結果として得られたデータのうち、予め定められた量を超えるデータを削除して出力する、請求項１に記載の装置。
【請求項６】
データベースに対するアクセスを制御する方法であって、
受け付けた処理要求に基づく処理が予め定められた処理の態様に基づく適用条件に適合するか否かを判断するステップと、
前記処理要求に基づいてデータベースに格納されているデータベース・オブジェクトに対する処理を実行するステップと、
前記処理が適合した前記適用条件に対応付けて定められた規則に基づいて、前記処理の実行により得られた処理結果に対する変換処理を行うステップと、
を含む、方法。
【請求項７】
データベースに対するアクセスを制御する方法であって、
受け付けた処理要求に基づく処理が予め定められた処理の態様に基づく適用条件に適合するか否かを判断するステップと、
前記処理が適合した前記適用条件に対応付けて定められた規則に基づいて、前記処理要求に対する変換処理を行うステップと、
前記適用条件に適合しない前記処理要求に関しては、当該処理要求に基づいてデータベースに格納されているデータベース・オブジェクトに対する処理を実行し、前記適用条件に適合した前記処理要求に関しては、変換された前記処理要求に基づいてデータベースに格納されているデータベース・オブジェクトに対する処理を実行するステップと、
を含む、方法。
【請求項８】
データベースを管理するコンピュータを、
受け付けた処理要求に基づく処理が予め定められた処理の態様に基づく適用条件に適合するか否かを判断する手段と、
前記処理が適合した前記適用条件に応じて、当該適用条件に対応付けて定められた規則に基づいて、前記処理要求に対する変換処理を行う手段と、
前記適用条件に適合しない前記処理要求に関しては、当該処理要求に基づいてデータベースに格納されているデータベース・オブジェクトに対する処理を実行し、前記適用条件に適合した前記処理要求に関しては、変換された前記処理要求に基づいてデータベースに格納されているデータベース・オブジェクトに対する処理を実行する手段と、
前記処理が適合した前記適用条件に応じて、当該適用条件に対応付けて定められた規則に基づいて、当該処理の実行により得られた処理結果に対する変換処理を行う手段として、
機能させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データへのアクセス制御に特徴を有するデータベース、その制御方法およびプログラムに関する。
【背景技術】
【０００２】
一般に、データベース・システムにおけるデータのアクセス制御は、データベースのアカウントに対して設定されるアクセス権限の制御や、検索結果として得られるデータ・セットに対するフィルタリングなどを組み合わせて実現されている。アカウントに対して設定されるアクセス権限により、アカウントごとに、アクセスが許容される対象であるデータベース・オブジェクト（データ、テーブル、レコードあるいはカラム等のデータやデータの集合、以下、単に「オブジェクト」と呼ぶ）と、許容される操作内容（読み出し、書き込み、更新）が特定される。
【０００３】
文献記載の従来技術として、例えば特許文献１に開示されたシステムは、複数のデータベース表にデータを格納すると共にその表からデータを取り出すためのデータベース管理システムを含み、このデータベース表内のデータは、データベース表に格納されているプライバシーパラメーターにしたがって制御可能にアクセスすることができるものである。また、このシステムは、データベース管理システムインターフェースを含み、このインターフェースは、データベース管理システムに作動上結合されており、プライバシーパラメーターにしたがってデータベース表内のデータへのアクセスを制御するものである。また、このシステムは、監査モジュールを含み、このモジュールは、データベース管理システムインターフェースと通信できるように結合されており、データベース管理システム内のデータプライバシーパラメーターが有効に適用できるようにするものである。
【０００４】
また、特許文献２に開示された従来技術は、ユーザ属性などの属性情報に基づいたデータベースアクセス制御において、属性情報が変更された場合の管理負荷を軽減しながら、データベースへアクセスするデータアクセスプログラムの性能の低下を防止するものである。この従来技術において、コンテキスト記憶部は、属性管理サーバから取得したデータオブジェクトにアクセスするユーザなどに関する属性情報を記憶する。また、ポリシー関数記憶部は、コンテキスト記憶部が記憶する属性情報に基づいて制御条件を生成するポリシー関数を記憶する。関数実行部は、ユーザがデータアクセスプログラムでデータオブジェクトにアクセスする場合、ポリシー関数を実行する。制御条件付加部は、ポリシー関数によって生成された制御条件をデータアクセスプログラムに付加する。実行部は、制御条件を付加したデータアクセスプログラムを実行する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−１１２７９６号公報
【特許文献２】特開２００７−１８３０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来のデータベース・システムにおけるアクセス制御は、主としてアカウントに対するデータへのアクセス権限の設定によって実現されていた。そのため、アカウントに設定されたアクセス権限に基づいてデータへのアクセスが行われた場合は、アクセス権限自体は正当なものであるため、アクセスの態様に関わらず、制限することができなかった。そのため、例えば、通常は同時に読み出す必要のない大量の情報を読み出すというような異常なアクセスを制限することが困難であった。
【０００７】
本発明は、このような課題に鑑み、アカウントの権限に依存しない高度なアクセス制御を実現することを目的とする。
【課題を解決するための手段】
【０００８】
上記の目的を達成するため、本発明は、次のような装置として実現される。この装置は、データベースを管理する装置であって、データベース・オブジェクトを格納したオブジェクト格納部と、処理要求に基づいて、オブジェクト格納部に格納されたデータベース・オブジェクトに対する処理を実行する処理実行部と、この処理実行部による処理の態様に基づく適用条件とこの処理の内容を変更するための規則とを対応付けて保持するルール記憶部と、処理要求に基づく処理の態様がルール記憶部に保持された適用条件に適合する場合に、適合した適用条件に対応付けられた規則にしたがって、処理実行部が実行する処理の内容を変更するルール適用部と、を備える。
より詳細には、ルール適用部は、処理要求に基づく処理の態様が所定の適用条件に適合し、適合した適用条件に対応する規則が前記処理実行部による処理の結果を出力しないように変更する規則である場合、処理実行部によるこの処理要求に基づく処理の実行を取り消す。
さらに詳細には、ルール適用部は、読み出し項目が指定されたデータの読み出し要求に基づく読み出し処理の態様が所定の適用条件に適合し、適合した適用条件に対応する規則が特定の項目のデータ読み出し結果を出力しないように変更する規則である場合、処理実行部によるこのデータの読み出しを行わないように処理要求に基づく処理を変更する。
また、ルール適用部は、処理要求に基づく処理の態様が所定の適用条件に適合する場合に、適合した適用条件に対応する規則に基づき、処理実行部による処理の結果として得られたデータに替えて、データに関する情報を出力する。
さらにまた、ルール適用部は、処理要求に基づく処理の態様が所定の適用条件に適合する場合に、適合した適用条件に対応する規則に基づき、処理実行部による処理の結果として得られたデータのうち、予め定められた量を超えるデータを削除して出力する。
【０００９】
また、本発明は、次のような方法としても実現される。この方法は、データベースに対するアクセスを制御する方法であって、受け付けた処理要求に基づく処理が予め定められた処理の態様に基づく適用条件に適合するか否かを判断するステップと、処理要求に基づいてデータベースに格納されているデータベース・オブジェクトに対する処理を実行するステップと、処理が適合した適用条件に対応付けて定められた規則に基づいて、処理の実行により得られた処理結果に対する変換処理を行うステップと、を含む。
【００１０】
あるいは、この方法は、データベースに対するアクセスを制御する方法であって、受け付けた処理要求に基づく処理が予め定められた処理の態様に基づく適用条件に適合するか否かを判断するステップと、処理が適合した適用条件に対応付けて定められた規則に基づいて、処理要求に対する変換処理を行うステップと、適用条件に適合しない処理要求に関しては、この処理要求に基づいてデータベースに格納されているデータベース・オブジェクトに対する処理を実行し、適用条件に適合した処理要求に関しては、変換された処理要求に基づいてデータベースに格納されているデータベース・オブジェクトに対する処理を実行するステップと、を含む。
【００１１】
さらにまた、本発明は、コンピュータを制御して上述した装置の各機能を実現するプログラム、あるいは、コンピュータに上記の各ステップに対応する処理を実行させるプログラムとしても実現される。このプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより、提供することができる。
【発明の効果】
【００１２】
本発明によれば、アカウントの権限に依存しない高度なアクセス制御を実現することができる。
【図面の簡単な説明】
【００１３】
【図１】本実施形態が適用されるデータベース・システムの機能構成の一例を示す図である。
【図２】本実施形態のデータベース・システムを構成するのに好適なハードウェア構成例を示す図である。
【図３】オブジェクトである表の一例を示す図である。
【図４】アクセス規則の一例を示す図である。
【図５】本実施形態のデータベース・システムにおける処理実行部およびルール適用部の処理手順を説明するフローチャートである。
【図６】本適用例において処理対象となるオブジェクトである表「顧客テーブル」の構成例を示す図である。
【図７】本適用例において用いられるアクセス規則の構成例を示す図である。
【図８】他の適用例において用いられるアクセス規則の構成例を示す図である。
【発明を実施するための形態】
【００１４】
以下、添付図面を参照して、本発明の実施形態について詳細に説明する。
【００１５】
＜システム構成＞
図１は、本実施形態が適用されるデータベース・システムの機能構成の一例を示す図である。図１に示す本実施形態のデータベース・システム（サーバ）１００は、情報記憶手段として、オブジェクト格納部１１０と、アカウント情報記憶部１２０と、ルール情報記憶部１３０とを備える。また、処理の実行手段として、ログイン制御部１４０と、処理実行部１５０と、ルール適用部１６０とを備える。
【００１６】
オブジェクト格納部１１０には、表やビュー表等のオブジェクトが格納されている。オブジェクト格納部１１０に格納されるオブジェクトは、既存のデータベース・システムにおいて扱われる一般的なオブジェクトと同様である。
【００１７】
アカウント情報記憶部１２０には、オブジェクト格納部１１０に格納されたオブジェクトへのアクセス権限を設定したアカウントの情報が保持されている。アカウント情報記憶部１２０に保持される情報は、既存のデータベース・システムにおけるアカウント情報と同様であり、例えば、各アカウントに対して、アクセスが許容されるオブジェクトと、許容される操作内容が設定される。
【００１８】
ルール情報記憶部１３０には、オブジェクト格納部１１０に格納されたオブジェクトへのアクセス規則が保持されている。ルール情報記憶部１３０に保持されるアクセス規則は、アカウント情報記憶部１２０に保持されるアカウントに設定されたアクセス権限とは異なり、オブジェクトに対する処理の仕方を規定するものである。具体的には、規則の適用条件としての処理の内容と、適用条件に適合する処理の結果に対する実行規則とが対応付けられている。したがって、アカウントによるアクセス権限の内容に関わらず（言い換えれば、誰の処理要求であっても）、ルール情報記憶部１３０に記憶されたアクセス規則に従った態様でしか、オブジェクトに対する処理を行うことができない。具体的なアクセス規則の内容およびアクセス規則の処理要求への適用の詳細については後述する。
【００１９】
ログイン制御部１４０は、クライアントからのログイン要求を受け付け、ユーザ認証を行う。具体的には、例えば、ログイン要求からアカウント名とパスワードを取得し、アカウント情報記憶部１２０に保持されているアカウント情報と照合し、正当なアカウントであることが確認されたならば、ログインを許可する。この機能は、既存のデータベース・システム等におけるログイン制御の機能と同様である。
【００２０】
処理実行部１５０は、ログインしたクライアントからの処理要求を受け付け、受け付けた処理要求に基づき、オブジェクト格納部１１０に格納されたオブジェクトに対する処理を実行する。具体的には、アカウントに設定されたアクセス権限の範囲で、オブジェクトに対する読み出し、書き込み、更新などの操作を行う。なお、処理要求は、ネットワーク等を介して接続された外部のクライアント装置から受信することもできるし、データベース・システム１００の入力デバイス（キーボード等）をオペレータが操作することにより入力することもできる。
【００２１】
ルール適用部１６０は、処理実行部１５０が実行する処理（クライアントからの処理要求に基づく処理）が、ルール情報記憶部１３０に保持されているアクセス規則の適用条件に適合する処理か否かを判断する。そして、アクセス規則の適用条件に適合する処理であった場合は、その適用条件に対応する実行規則に基づいて処理要求に係る処理の内容を変換する。これにより、処理実行部１５０は、アクセス規則に従った態様でオブジェクトに対する処理を行うこととなる。ルール適用部１６０の機能および動作の詳細については後述する。
【００２２】
＜システムのハードウェア構成例＞
図２は、本実施形態のデータベース・システム１００を構成するのに好適なハードウェア構成例を示す図である。ここでは、コンピュータに適用する場合について説明する。図２に示すコンピュータは、演算手段であるＣＰＵ（Central Processing Unit）１０ａと、主記憶手段であるメモリ１０ｃを備える。また、外部デバイスとして、磁気ディスク装置（ＨＤＤ：Hard Disk Drive）１０ｇ、ネットワーク・インターフェイス１０ｆ、ディスプレイ装置を含む表示機構１０ｄ、音声機構１０ｈ、キーボードやマウス等の入力デバイス１０ｉ等を備える。
【００２３】
図２に示す構成例では、メモリ１０ｃおよび表示機構１０ｄは、システム・コントローラ１０ｂを介してＣＰＵ１０ａに接続されている。また、ネットワーク・インターフェイス１０ｆ、磁気ディスク装置１０ｇ、音声機構１０ｈおよび入力デバイス１０ｉは、Ｉ／Ｏコントローラ１０ｅを介してシステム・コントローラ１０ｂと接続されている。各構成要素は、システム・バスや入出力バス等の各種のバスによって接続される。
【００２４】
なお、図２は、本実施形態が適用されるのに好適なコンピュータのハードウェア構成を例示するに過ぎない。本実施形態は、オブジェクトへの処理要求を受け付けてオブジェクトに対する処理を行うデータベース・システムとして機能する情報処理装置に広く適用できるものであり、図示の構成においてのみ本実施例が実現されるのではない。
【００２５】
図２において、磁気ディスク装置１０ｇにはＯＳのプログラムやアプリケーション・プログラムが格納されている。そして、これらのプログラムがメモリ１０ｃに読み込まれてＣＰＵ１０ａに実行されることにより、本実施形態におけるログイン制御部１４０、処理実行部１５０およびルール適用部１６０の各機能が実現される。また、オブジェクト格納部１１０、アカウント情報記憶部１２０およびルール情報記憶部１３０は、メモリ１０ｃや磁気ディスク装置１０ｇ等の記憶手段により実現される。
【００２６】
＜アクセス規則の適用プロセス＞
次に、ルール適用部１６０によるアクセス規則の適用プロセスについて説明する。図３は、オブジェクトである表の一例を示す図である。図４は、アクセス規則の一例を示す図である。
【００２７】
図３に示す例では、表「Ｔａｂｌｅ１」には、「Ｃｏｌ１」、「Ｃｏｌ２」、「Ｃｏｌ３」の３列に各々データが格納されている。また、図４に示す例では、処理要求としてデータの読み出し要求が行われた場合に関するアクセス規則として、３種類の適用条件と実行規則とが規定されている。具体的には、規則ａは、「Ｔａｂｌｅ１」に対し、「Ｃｏｌ１」と「Ｃｏｌ２」の値を指定して読み出し要求が行われたことを適用条件として、「Ｔａｂｌｅ１」における「Ｃｏｌ１」、「Ｃｏｌ２」、「Ｃｏｌ３」のデータを読み出すことを規定する。規則ｂは、「Ｔａｂｌｅ１」に対し、「Ｃｏｌ１」の値のみを指定して読み出し要求が行われたことを適用条件として、「Ｔａｂｌｅ１」における「Ｃｏｌ１」および「Ｃｏｌ３」のデータのみを読み出し、「Ｃｏｌ２」のデータは読み出さずにマスクする（隠す）ことを規定する。規則ｃは、「Ｔａｂｌｅ１」に対し、いずれの列の値も指定せずに読み出し要求が行われたことを適用条件として、「Ｔａｂｌｅ１」におけるデータの読み出し結果を出力しない（エラーとする）ことを規定する。
【００２８】
ここで、次の３種類のＳＱＬ文によるデータの読み出し要求が行われたものとする。
要求１：SELECT * FROM Table1 WHERE Col1='A1' AND Col2='A2'
要求２：SELECT * FROM Table1 WHERE Col1='A1'
要求３：SELECT * FROM Table1
【００２９】
要求１は、「Ｃｏｌ１」の値が「Ａ１」であり、「Ｃｏｌ２」の値が「Ａ２」である行のデータの読み出し要求である。この場合、アクセス規則を適用することなく、単に処理実行部１５０がこの読み出し要求に基づく処理を行ったとすると、「Ｃｏｌ１」の値が「Ａ１」であり、「Ｃｏｌ２」の値が「Ａ２」である行のデータが読み出される。そして、処理結果として、「Ａ１、Ａ２、Ａ３」が得られる。一方、図４に示すアクセス規則では、この要求１は、規則ａの適用条件に適合する。したがって、「Ｃｏｌ１」の値が「Ａ１」であり、「Ｃｏｌ２」の値が「Ａ２」である行において、「Ｃｏｌ１」、「Ｃｏｌ２」、「Ｃｏｌ３」のデータが読み出される。これにより、処理結果として、アクセス規則が適用されなかった場合と同様に、「Ａ１、Ａ２、Ａ３」が得られる。
【００３０】
要求２は、「Ｃｏｌ１」の値が「Ａ１」である行のデータの読み出し要求である。この場合、アクセス規則を適用することなく、単に処理実行部１５０がこの読み出し要求に基づく処理を行ったとすると、「Ｃｏｌ１」の値が「Ａ１」である行のデータが読み出される。そして、処理結果として、「Ａ１、Ａ２、Ａ３」が得られる。一方、図４に示すアクセス規則では、この要求２は、規則ｂの適用条件に適合する。したがって、「Ｃｏｌ１」の値が「Ａ１」である行において、「Ｃｏｌ１」および「Ｃｏｌ３」のデータが読み出され、「Ｃｏｌ２」のデータはマスクされる（意味のない出力値「ＸＸ」が付与される）。これにより、処理結果として、「Ａ１、ＸＸ、Ａ３」が得られる。
【００３１】
要求３は、いずれの列の値も指定せずに行われた読み出し要求である。この場合、アクセス規則を適用することなく、単に処理実行部１５０がこの読み出し要求に基づく処理を行ったとすると、「Ｔａｂｌｅ１」の全ての行のデータが読み出される。そして、処理結果として、「Ａ１、Ａ２、Ａ３、Ｂ１、Ｂ２、Ｂ３、Ｃ１、Ｃ２、Ｃ３」が得られる。一方、図４に示すアクセス規則では、この要求３は、規則ｃの適用条件に適合する。したがって、上記の処理結果は出力されず、処理結果は「ＥＲＲＯＲ」となる。
【００３２】
以上のように、処理要求に基づく処理の内容が本実施形態によるアクセス規則の適用条件に適合する場合、実行規則に基づいて処理の内容が変換されるため、アクセス規則が適用されない場合とは異なる処理結果が得られる。また、要求１と要求２とを比較すると、アクセス規則が適用されない場合は同じ処理結果が得られるのに対し、要求１の処理に対して適用される実行規則（規則ａ）と要求２の処理に対して適用される実行規則（規則ｂ）とが異なるため、アクセス規則が適用されることによって異なる処理結果が得られる。ここで、上記のアクセス規則は、処理要求に基づく処理の内容（どのような条件でデータの読み出しが要求されたか）のみに基づいて適用される。すなわち、処理要求を行ったクライアントのアカウントに設定されたアクセス権限の内容に関わらず、処理要求の内容がアクセス規則の適用条件に適合すれば、上記のような処理の変換が行われる。
【００３３】
なお、上記の例では、要求２に対して「Ｃｏｌ２」のデータの読み出しを行わず、要求３に対して「Ｔａｂｌｅ１」の全てのデータの読み出しを行わないこととしたが、データの読み出しは実行し、処理結果の出力において該当するデータを提示しないようにしても良い。詳しくは後述するが、ルール適用部１６０による処理を、処理実行部１５０による処理の前に行うか、後に行うかによって、上記の制御内容が異なる。
【００３４】
また、上記の例では、データの読み出し処理を対象とし、処理要求に基づけば読み出し対象となるデータのうち、一部または全てのデータの読み出しを行わないという処理の変換を行った。本実施形態では、アクセス規則を定義することによって、上記の例の他に、様々な処理の変換を実現することができる。例えば、図３および図４を参照して説明した上記の例では、「Ｔａｂｌｅ１」のみを指定して行われた読み出し要求に対し、データの読み出しを行わずに処理結果を「ＥＲＲＯＲ」としたが、同様の読み出し要求を受け付けたことを適用条件として、「Ｃｏｌ３」のデータのみ（すなわち、一部のデータのみ）読み出しを行わないという実行規則を規定しても良い。この場合、上記の要求３が行われると、処理結果は、「Ａ１、Ａ２、Ｂ１、Ｂ２、Ｃ１、Ｃ２」となる。なお、ここでは、読み出さなかった「Ｃｏｌ３」のデータに対してマスク（意味のない出力値「ＸＸ」の付与）も行っていない。
【００３５】
また、読み出したデータの出力やデータの読み出し処理を取り消すような変換だけでなく、読み出したデータに替えてそのデータに関する情報（属性情報等）を出力するように処理を変換することもできる。例えば、「Ｔａｂｌｅ１」のみを指定して行われた読み出し要求に対し、「Ｃｏｌ３」のデータ（すなわち、一部のデータ）については、特定の値（例えば、「Ａ３」）と一致しているか否かの判定結果を処理結果として出力するという実行規則を規定しても良い。この場合、上記の要求３が行われると、処理結果は、「Ａ１、Ａ２、Ｙｅｓ、Ｂ１、Ｂ２、Ｎｏ、Ｃ１、Ｃ２、Ｎｏ」となる。
【００３６】
また、「Ｔａｂｌｅ１」のみを指定して行われた読み出し要求に対し、「Ｃｏｌ３」のデータ（すなわち、一部のデータ）については、データの値の一部（例えば、下３桁）のみを処理結果として出力するという実行規則を規定しても良い。例として、「Ａ３」＝「１２３４５」、「Ｂ３」＝「６７８９０」、「Ｃ３」＝「９８７６５」とする。この場合、上記の要求３が行われると、処理結果は、「Ａ１、Ａ２、３４５、Ｂ１、Ｂ２、８９０、Ｃ１、Ｃ２、７６５」となる。
【００３７】
また、「Ｃｏｌ１」の値のみを指定して行われた読み出し要求に対してはデータの読み出しを行わないという実行規則を規定すると共に、「Ｃｏｌ１」および「Ｃｏｌ２」の値を指定して行われた読み出し要求に対してはデータの読み出しを行うという実行規則を規定しても良い。この場合、上記の要求１が行われると、処理結果は、「Ａ１、Ａ２、Ａ３」となり、上記の要求２が行われると、データの読み出しは行われない。
【００３８】
また、「Ｃｏｌ１」および「Ｃｏｌ２」のデータを同時に読み出すための読み出し要求に対しては、データの読み出しを行わないという実行規則を規定しても良い。この場合、上記の要求３が行われると、「Ｃｏｌ１」のデータおよび「Ｃｏｌ２」のデータの読み出しが要求されることになるので、データの読み出しは行われない。これに対し、「Ｃｏｌ１」および「Ｃｏｌ３」のデータの読み出し要求が行われると、処理結果は、「Ａ１、Ａ３、Ｂ１、Ｂ３、Ｃ１、Ｃ３」となる。同様に、「Ｃｏｌ２」および「Ｃｏｌ３」のデータの読み出し要求が行われると、処理結果は、「Ａ２、Ａ３、Ｂ２、Ｂ３、Ｃ２、Ｃ３」となる。
【００３９】
この他、例えば、読み出し要求の条件に合致するデータの量（例えば行の数）が所定量までであれば読み出しを行うが、所定量を超える場合には読み出しを行わないという実行規則を規定することができる。また、この場合、所定量を超えてデータの読み出しが行われない場合には、適合したデータの数を処理結果として報知するという実行規則を規定しても良い。また、特定の値のデータを読み出す要求が行われた場合に、そのデータを読み出すのではなく、その値のデータが存在することを報知するという実行規則を規定しても良い。さらに、データの読み出し処理だけでなく、データの書き込み処理や更新処理に対して適用条件および実行規則を定義しても良い（例えば、所定数以上のデータを同時に書き込む処理は実行しない等）。このように、本実施形態では、データベース・システム１００により管理するデータの種類やデータベース・システム１００の運用条件、仕様等に応じて、様々なアクセス規則を適宜定義して用いることが可能である。
【００４０】
ところで、ルール適用部１６０によるアクセス規則の適用は、原則的には、処理実行部１５０による処理が行われた後に行うことができる。一方、規則の適用条件および実行規則の内容によっては、処理実行部１５０による処理が行われる前に行うことができる場合もある。例えば、図３に示した規則ｃのように、適用条件に適合した読み出し要求に関してデータの読み出し結果を出力しないというアクセス規則が規定されている場合を考える。この場合、その適用条件に適合する読み出し要求に基づくデータの読み出しは無用なので、処理実行部１５０による処理（データの読み出し）の前にアクセス規則を適用して処理要求を変換し、処理自体を実行しない方が効率的である。一方で、所定数以上のデータが読み出されたことを適用条件として実行規則に基づく処理結果の変換が行われる場合を考える。この場合、データを読み出した後でなければ適用条件に適合するか否か（所定数以上のデータを読み出したか否か）を判断することができない。したがって、この場合は処理実行部１５０による処理が行われた後にアクセス規則を適用して処理結果を変換しなければならない。したがって、個々のアクセス規則ごとに、適用条件および実行規則の内容に応じて、処理実行部１５０による処理の前に適用するか、後に適用するかを設定することが望ましい。
【００４１】
＜データベース・システムの動作＞
図５は、本実施形態のデータベース・システム１００における処理実行部１５０およびルール適用部１６０の処理手順を説明するフローチャートである。初期状態として、クライアントのログイン処理が既に済んでいるものとする。また、この動作例では、処理実行部１５０による処理に先立って適用するアクセス規則と、処理実行部１５０による処理の後に適用するアクセス規則の両方が規定されているものとする。
【００４２】
図５に示すように、データベース・システム１００が、クライアントからＳＱＬ文等による処理要求を受け付けると（ステップ５０１）、ルール適用部１６０は、受け付けた処理要求に関して、処理実行部１５０による処理の実行前に適用するアクセス規則の適用条件に適合するか否かを判断する（ステップ５０２）。そして、処理要求が適合する適用条件が存在する場合は、その適用条件に対応する実行規則を適用し、処理要求の内容を変換する（ステップ５０３）。
【００４３】
この後、処理実行部１５０は、処理要求（ステップ５０３で実行規則が適用された場合は、変換後の処理要求）に基づき処理を実行する（ステップ５０４）。次に、ルール適用部１６０は、処理実行部１５０による処理の結果に基づいて、この処理要求がアクセス規則の適用条件に適合するか否かを判断する（ステップ５０５）。そして、処理要求が適合する適用条件が存在する場合は、その適用条件に対応する実行規則を適用し、処理結果の内容を変換する（ステップ５０６）。そして、処理実行部１５０は、得られた処理結果（ステップ５０６で実行規則が適用された場合は、変換後の処理結果）を出力する（ステップ５０７）。
【００４４】
＜適用例１＞
次に、本実施形態のさらに詳細な適用例を説明する。図６は、本適用例において処理対象となるオブジェクトである表「顧客テーブル」の構成例を示す。また、図７は、本適用例において用いられるアクセス規則の構成例を示す。図６に示す「顧客テーブル」には、「顧客番号」、「氏名」、「住所」、「電話番号」、「性別」、「誕生日」、「収入」、「カード番号」、「パスワード」の各列に各々データが格納されている。また、図７に示すアクセス規則において、規則１〜規則４は、列の指定に関して適用条件が設定されており、規則５〜規則７は、処理結果のデータサイズ（個数）に基づいて適用条件が設定されている。
【００４５】
図７に示すアクセス規則について、さらに具体的に説明する。規則１は、「顧客テーブル」を対象として「顧客番号」および「パスワード」の値が指定された読み出し要求に関して（適用条件）、「パスワード」の値を「ＮＵＬＬ」（非表示）とする実行規則が規定されている。規則２は、「顧客テーブル」を対象として「顧客番号」の値が指定された読み出し要求に関して（適用条件）、「電話番号」の値をマスク（意味のない値を付与）し、「収入」、「カード番号」および「パスワード」の値を「ＮＵＬＬ」（非表示）とする実行規則が規定されている。規則３は、「顧客テーブル」を対象として「住所」の値が指定された読み出し要求に関して（適用条件）、「顧客番号」、「氏名」、「カード番号」および「パスワード」の値を「ＮＵＬＬ」（非表示）とする実行規則が規定されている。規則４は、「顧客テーブル」を対象として全てのデータを読み出す読み出し要求に関して（適用条件）、処理を実行しない（処理結果は「ＥＲＲＯＲ」）とする実行規則が規定されている。したがって、規則１〜規則４については、処理実行部１５０による処理の実行前に、処理要求に対してルール適用部１６０によるアクセス規則の適用を行って、上記の「ＮＵＬＬ」値を出力する項目については、データの読み出し自体を行わないように処理を変更することができる。
【００４６】
また、規則５は、処理結果としてデータ・セット（「顧客テーブル」の行）が１以上取得されたときは（適用条件）、そのデータ・セットにおける「パスワード」の値を「ＮＵＬＬ」（非表示）とする実行規則が規定されている。規則６は、処理結果としてデータ・セットが３以上取得されたときは（適用条件）、そのデータ・セットにおける「顧客番号」、「氏名」、「カード番号」および「パスワード」の値を「ＮＵＬＬ」（非表示）とし、「電話番号」の値をマスク（意味のない値を付与）する実行規則が規定されている。規則７は、処理結果としてオブジェクト「電話番号」、オブジェクト「顧客テーブル」を対象とするデータ・セットの読み出しにおいて、取得（出力）可能なデータ・セットの最大数を３とする実行規則が規定されている。したがって、規則５〜規則７については、処理実行部１５０による処理の実行後に、処理結果に対してルール適用部１６０によるアクセス規則の適用を行って、読み出されたデータの削除や置き換えを行うように処理を変更することができる。
【００４７】
なお、本適用例では、無用な処理の実行や重複実行を避けて処理効率を向上するため、重複して適用可能なアクセス規則に関しては、最も適合性の高いアクセス規則のみを適用する。適合性の高いアクセス規則とは、他のアクセス規則における適用条件の項目（条件項目）を包含し、かつより多くの条件項目が処理要求に合致するアクセス規則である。例えば、図７に示すアクセス規則において、規則１の条件項目は規則２の条件項目を包含し、より多くの条件項目を有するため、規則１に適合する処理要求は、必ず規則２にも適合する。このような場合に、規則１のみを適用し、規則２は適用しない。これは、複数のアクセス規則が適合する場合に、処理結果として取得されるデータ・セットの数がより小さくなるアクセス規則を優先することを意味する。
【００４８】
また、本適用例では、上記とは別に、適用条件が適合した場合に処理を行わない（または処理結果を出力しない）とするアクセス規則を最も優先的に適用し、取得（出力）可能なデータ・セットの最大数を規定するアクセス規則を次に優先させて適用する。すなわち、図７に示す例では、規則４の適用を最優先とし、次に規則７の適用を優先させる。
【００４９】
ここで、次のＳＱＬ文による処理要求が行われた場合を考える。
要求４：SELECT * FROM 顧客 WHERE 顧客番号=0001 AND パスワード=AAAA；
このＳＱＬ文を解析すると、処理の種類はデータの読み出し（ＳＥＬＥＣＴ）であり、データ読み出し対象の列は指定されておらず、処理対象のオブジェクトは「顧客テーブル」であり、「顧客番号」および「パスワード」の値が指定されている。
【００５０】
図７を参照して、上記の要求４が適合するアクセス規則を調べると、規則１、規則２、規則４が適合する。ただし、ここでは規則１の適合性が最も高いので、規則１のみを適用し、規則２、規則４は不適用とする。また、処理実行部１５０による処理の結果によっては、規則５〜規則７が適合する可能性がある。
【００５１】
次に、処理実行部１５０が要求４に基づく処理を実行すると、図６における「顧客番号」＝「０００１」のデータ・セットが取得される。このデータ・セットは１行なので、規則６、規則７の適用条件は適合しないため、規則６および規則７は適用されない。一方、規則５の適用条件は適合するので、この処理結果に対して、規則１および規則５が適用される。これにより処理結果は、
「０００１、安○いちご、東京都、０３−１２３４−０００１、女、１月１日、６００万、１２３４−５６７８−０００１、（ＮＵＬＬ）」
となる。すなわち、処理実行部１５０による処理結果から「パスワード」の値が「ＮＵＬＬ」（非表示）に変更された。
【００５２】
次に、次のＳＱＬ文による処理要求が行われた場合を考える。
要求５：SELECT * FROM 顧客WHERE 顧客番号=0002；
このＳＱＬ文を解析すると、処理の種類はデータの読み出し（ＳＥＬＥＣＴ）であり、データ読み出し対象の列は指定されておらず、処理対象のオブジェクトは「顧客テーブル」であり、「顧客番号」の値が指定されている。
【００５３】
図７を参照して、上記の要求５が適合するアクセス規則を調べると、規則２、規則４が適合する。ただし、ここでは規則２の適合性が高いので、規則２のみを適用し、規則４は不適用とする。また、処理実行部１５０による処理の結果によっては、規則５〜規則７が適合する可能性がある。
【００５４】
次に、処理実行部１５０が要求５に基づく処理を実行すると、図６における「顧客番号」＝「０００２」のデータ・セットが取得される。このデータ・セットは１行なので、規則６、規則７の適用条件は適合しないため、規則６および規則７は適用されない。一方、規則５の適用条件は適合するので、この処理結果に対して、規則２および規則５が適用される。これにより処理結果は、
「０００２、石○次郎、東京都、０３−ＸＸＸＸ−ＸＸＸＸ、男、２月２日、（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）」
となる。すなわち、処理実行部１５０による処理結果から「電話番号」がマスクされ、「収入」、「カード番号」および「パスワード」の値が「ＮＵＬＬ」（非表示）に変更された。
【００５５】
次に、次のＳＱＬ文による処理要求が行われた場合を考える。
要求６：SELECT * FROM 顧客WHERE 住所=神奈川県；
このＳＱＬ文を解析すると、処理の種類はデータの読み出し（ＳＥＬＥＣＴ）であり、データ読み出し対象の列は指定されておらず、処理対象のオブジェクトは「顧客テーブル」であり、「住所」の値が指定されている。
【００５６】
図７を参照して、上記の要求６が適合するアクセス規則を調べると、規則３、規則４が適合する。ただし、ここでは規則３の適合性が高いので、規則３のみを適用し、規則４は不適用とする。また、処理実行部１５０による処理の結果によっては、規則５〜規則７が適合する可能性がある。
【００５７】
次に、処理実行部１５０が要求６に基づく処理を実行すると、図６における「顧客番号」＝「０００６」のデータ・セットが取得される。このデータ・セットは１行なので、規則６、規則７の適用条件は適合しないため、規則６および規則７は適用されない。一方、規則５の適用条件は適合するので、この処理結果に対して、規則３および規則５が適用される。これにより処理結果は、
「（ＮＵＬＬ）、（ＮＵＬＬ）、神奈川県、０３−１２３４−０００６、男、６月６日、１０００万、（ＮＵＬＬ）、（ＮＵＬＬ）」
となる。すなわち、処理実行部１５０による処理結果から「顧客番号」、「氏名」、「カード番号」および「パスワード」の値が「ＮＵＬＬ」（非表示）に変更された。
【００５８】
次に、次のＳＱＬ文による処理要求が行われた場合を考える。
要求７：SELECT * FROM 顧客WHERE 住所=東京都；
このＳＱＬ文を解析すると、処理の種類はデータの読み出し（ＳＥＬＥＣＴ）であり、データ読み出し対象の列は指定されておらず、処理対象のオブジェクトは「顧客テーブル」であり、「住所」の値が指定されている。
【００５９】
図７を参照して、上記の要求７が適合するアクセス規則を調べると、規則３、規則４が適合する。ただし、ここでは規則３の適合性が高いので、規則３のみを適用し、規則４は不適用とする。また、処理実行部１５０による処理の結果によっては、規則５〜規則７が適合する可能性がある。
【００６０】
次に、処理実行部１５０が要求７に基づく処理を実行すると、図６における「顧客番号」＝「０００１」、「０００２」、「０００５」、「０００７」のデータ・セットが取得される。このデータ・セットは４行なので、まず規則７が適用され、４行目の「顧客番号」＝「０００７」のデータ・セットが削除される。次に、規則５および規則６の適用条件はいずれも適合するので、この処理結果に対して、規則３、規則５および規則６が適用される。これにより処理結果は、
「（ＮＵＬＬ）、（ＮＵＬＬ）、東京都、０３−ＸＸＸＸ−ＸＸＸＸ、女、１月１日、６００万、（ＮＵＬＬ）、（ＮＵＬＬ）；
（ＮＵＬＬ）、（ＮＵＬＬ）、東京都、０３−ＸＸＸＸ−ＸＸＸＸ、男、２月２日、５００万、（ＮＵＬＬ）、（ＮＵＬＬ）；
（ＮＵＬＬ）、（ＮＵＬＬ）、東京都、０３−ＸＸＸＸ−ＸＸＸＸ、男、５月５日、５００万、（ＮＵＬＬ）、（ＮＵＬＬ）」
となる。すなわち、処理実行部１５０による処理結果から１行分のデータ・セットが削除され、「顧客番号」、「氏名」、「カード番号」および「パスワード」の値が「ＮＵＬＬ」（非表示）に変更され、「電話番号」がマスクされた。
【００６１】
次に、次のＳＱＬ文による処理要求が行われた場合を考える。
要求８：SELECT * FROM 顧客；
このＳＱＬ文を解析すると、処理の種類はデータの読み出し（ＳＥＬＥＣＴ）であり、データ読み出し対象の列は指定されておらず、処理対象のオブジェクトは「顧客テーブル」であり、いずれの列の値も指定されていない。
【００６２】
図７を参照して、上記の要求８が適合するアクセス規則を調べると、規則４が適合する。また、処理実行部１５０による処理の結果によっては、規則５〜規則７が適合する可能性がある。ここでは、規則４が適合しているので、この規則４が最優先で適用される。なお、規則４の適用は、処理実行部１５０による処理の実行に先立って行われる。したがって、処理実行部１５０による処理は実行されず、処理結果は「ＥＲＲＯＲ」となる。
【００６３】
＜適用例２＞
次に、本実施形態の他の適用例を説明する。本適用例において処理対象となるオブジェクトは、図６に示した表「顧客テーブル」を用いる。また、図８は、本適用例において用いられるアクセス規則の構成例を示す。図８に示すアクセス規則において、規則８〜規則１０は、列の指定に関して適用条件が設定されている。
【００６４】
図８に示すアクセス規則について、さらに具体的に説明する。規則８は、「顧客テーブル」を対象として「住所」の値が指定された読み出し要求に関して（適用条件）、「住所」と「性別」以外の全ての列の値を「ＮＵＬＬ」（非表示）とする実行規則が規定されている。規則９は、「顧客テーブル」を対象として「性別」の値が「男」に指定された読み出し要求に関して（適用条件）、「収入」以外の全ての列の値を「ＮＵＬＬ」（非表示）とする実行規則が規定されている。規則１０は、「顧客テーブル」を対象として「性別」の値が「女」に指定された読み出し要求に関して（適用条件）、「誕生日」以外の全ての列の値を「ＮＵＬＬ」（非表示）とする実行規則が規定されている。
【００６５】
ここで、次のＳＱＬ文による処理要求が行われた場合を考える。
要求９：SELECT * FROM 顧客 WHERE 住所='東京'；
このＳＱＬ文を解析すると、処理の種類はデータの読み出し（ＳＥＬＥＣＴ）であり、データ読み出し対象の列は指定されておらず、処理対象のオブジェクトは「顧客テーブル」であり、「住所」の値が指定されている。図８を参照して、上記の要求９が適合するアクセス規則を調べると、規則８が適合する。
【００６６】
次に、処理実行部１５０が要求９に基づく処理を実行すると、図６における「顧客番号」＝「０００１」、「０００２」、「０００５」、「０００７」のデータ・セットが取得される。この結果に対して規則８が適用されるので、処理結果は、
「（ＮＵＬＬ）、（ＮＵＬＬ）、東京都、（ＮＵＬＬ）、女、（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）；
（ＮＵＬＬ）、（ＮＵＬＬ）、東京都、（ＮＵＬＬ）、男、（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）；
（ＮＵＬＬ）、（ＮＵＬＬ）、東京都、（ＮＵＬＬ）、男、（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）；
（ＮＵＬＬ）、（ＮＵＬＬ）、東京都、（ＮＵＬＬ）、女、（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）」
となる。すなわち、処理実行部１５０による処理結果から「住所」および「性別」以外の全ての値が「ＮＵＬＬ」（非表示）に変更された。
【００６７】
次に、次のＳＱＬ文による処理要求が行われた場合を考える。
要求１０：SELECT * FROM 顧客 WHERE 性別='男'；
このＳＱＬ文を解析すると、処理の種類はデータの読み出し（ＳＥＬＥＣＴ）であり、データ読み出し対象の列は指定されておらず、処理対象のオブジェクトは「顧客テーブル」であり、「性別」の値が「男」に指定されている。図８を参照して、上記の要求１０が適合するアクセス規則を調べると、規則９が適合する。
【００６８】
次に、処理実行部１５０が要求１０に基づく処理を実行すると、図６における「顧客番号」＝「０００２」、「０００３」、「０００４」、「０００５」、「０００６」のデータ・セットが取得される。この結果に対して規則９が適用されるので、処理結果は、
「（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）、５００万、（ＮＵＬＬ）、（ＮＵＬＬ）；
（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）、８００万、（ＮＵＬＬ）、（ＮＵＬＬ）；
（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）、４５０万、（ＮＵＬＬ）、（ＮＵＬＬ）；
（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）、５００万、（ＮＵＬＬ）、（ＮＵＬＬ）；
（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）、１０００万、（ＮＵＬＬ）、（ＮＵＬＬ）」
となる。すなわち、処理実行部１５０による処理結果から「収入」以外の全ての値が「ＮＵＬＬ」（非表示）に変更された。
【００６９】
次に、次のＳＱＬ文による処理要求が行われた場合を考える。
要求１１：SELECT * FROM 顧客 WHERE 性別='女'；
このＳＱＬ文を解析すると、処理の種類はデータの読み出し（ＳＥＬＥＣＴ）であり、データ読み出し対象の列は指定されておらず、処理対象のオブジェクトは「顧客テーブル」であり、「性別」の値が「女」に指定されている。図８を参照して、上記の要求１１が適合するアクセス規則を調べると、規則１０が適合する。
【００７０】
次に、処理実行部１５０が要求１１に基づく処理を実行すると、図６における「顧客番号」＝「０００１」、「０００７」のデータ・セットが取得される。この結果に対して規則１０が適用されるので、処理結果は、
「（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）、１月１日、（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）；
（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）、７月７日、（ＮＵＬＬ）、（ＮＵＬＬ）、（ＮＵＬＬ）」
となる。すなわち、処理実行部１５０による処理結果から「誕生日」以外の全ての値が「ＮＵＬＬ」（非表示）に変更された。
【００７１】
以上、本発明の実施形態について説明したが、本発明の具体的な構成は、上記の実施形態には限定されない。例えば、アクセス対象のオブジェクトは、上記の例で説明した表やそのデータ構成に限定されない。また、アクセス規則を上記の例以外にも様々に設定し得ることは上述した通りである。その他、上記の実施形態に、種々の変更または改良を加えたものも、本発明の技術的範囲に含まれる。
【符号の説明】
【００７２】
１００…データベース・システム、１１０…オブジェクト格納部、１２０…アカウント情報記憶部、１３０…ルール情報記憶部、１４０…ログイン制御部、１５０…処理実行部、１６０…ルール適用部
【図１】
2015036868.tif 000003
【図２】
2015036868.tif 000004
【図３】
2015036868.tif 000005
【図４】
2015036868.tif 000006
【図５】
2015036868.tif 000007
【図６】
2015036868.tif 000008
【図７】
2015036868.tif 000009
【図８】
2015036868.tif 000010