(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0014】
以下、添付図面を参照して、本発明の実施形態について詳細に説明する。
【0015】
<システム構成>
図1は、本実施形態が適用されるデータベース・システムの機能構成の一例を示す図である。
図1に示す本実施形態のデータベース・システム(サーバ)100は、情報記憶手段として、オブジェクト格納部110と、アカウント情報記憶部120と、ルール情報記憶部130とを備える。また、処理の実行手段として、ログイン制御部140と、処理実行部150と、ルール適用部160とを備える。
【0016】
オブジェクト格納部110には、表やビュー表等のオブジェクトが格納されている。オブジェクト格納部110に格納されるオブジェクトは、既存のデータベース・システムにおいて扱われる一般的なオブジェクトと同様である。
【0017】
アカウント情報記憶部120には、オブジェクト格納部110に格納されたオブジェクトへのアクセス権限を設定したアカウントの情報が保持されている。アカウント情報記憶部120に保持される情報は、既存のデータベース・システムにおけるアカウント情報と同様であり、例えば、各アカウントに対して、アクセスが許容されるオブジェクトと、許容される操作内容が設定される。
【0018】
ルール情報記憶部130には、オブジェクト格納部110に格納されたオブジェクトへのアクセス規則が保持されている。ルール情報記憶部130に保持されるアクセス規則は、アカウント情報記憶部120に保持されるアカウントに設定されたアクセス権限とは異なり、オブジェクトに対する処理の仕方を規定するものである。具体的には、規則の適用条件としての処理の内容と、適用条件に適合する処理の結果に対する実行規則とが対応付けられている。したがって、アカウントによるアクセス権限の内容に関わらず(言い換えれば、誰の処理要求であっても)、ルール情報記憶部130に記憶されたアクセス規則に従った態様でしか、オブジェクトに対する処理を行うことができない。具体的なアクセス規則の内容およびアクセス規則の処理要求への適用の詳細については後述する。
【0019】
ログイン制御部140は、クライアントからのログイン要求を受け付け、ユーザ認証を行う。具体的には、例えば、ログイン要求からアカウント名とパスワードを取得し、アカウント情報記憶部120に保持されているアカウント情報と照合し、正当なアカウントであることが確認されたならば、ログインを許可する。この機能は、既存のデータベース・システム等におけるログイン制御の機能と同様である。
【0020】
処理実行部150は、ログインしたクライアントからの処理要求を受け付け、受け付けた処理要求に基づき、オブジェクト格納部110に格納されたオブジェクトに対する処理を実行する。具体的には、アカウントに設定されたアクセス権限の範囲で、オブジェクトに対する読み出し、書き込み、更新などの操作を行う。なお、処理要求は、ネットワーク等を介して接続された外部のクライアント装置から受信することもできるし、データベース・システム100の入力デバイス(キーボード等)をオペレータが操作することにより入力することもできる。
【0021】
ルール適用部160は、処理実行部150が実行する処理(クライアントからの処理要求に基づく処理)が、ルール情報記憶部130に保持されているアクセス規則の適用条件に適合する処理か否かを判断する。そして、アクセス規則の適用条件に適合する処理であった場合は、その適用条件に対応する実行規則に基づいて処理要求に係る処理の内容を変換する。これにより、処理実行部150は、アクセス規則に従った態様でオブジェクトに対する処理を行うこととなる。ルール適用部160の機能および動作の詳細については後述する。
【0022】
<システムのハードウェア構成例>
図2は、本実施形態のデータベース・システム100を構成するのに好適なハードウェア構成例を示す図である。ここでは、コンピュータに適用する場合について説明する。
図2に示すコンピュータは、演算手段であるCPU(Central Processing Unit)10aと、主記憶手段であるメモリ10cを備える。また、外部デバイスとして、磁気ディスク装置(HDD:Hard Disk Drive)10g、ネットワーク・インターフェイス10f、ディスプレイ装置を含む表示機構10d、音声機構10h、キーボードやマウス等の入力デバイス10i等を備える。
【0023】
図2に示す構成例では、メモリ10cおよび表示機構10dは、システム・コントローラ10bを介してCPU10aに接続されている。また、ネットワーク・インターフェイス10f、磁気ディスク装置10g、音声機構10hおよび入力デバイス10iは、I/Oコントローラ10eを介してシステム・コントローラ10bと接続されている。各構成要素は、システム・バスや入出力バス等の各種のバスによって接続される。
【0024】
なお、
図2は、本実施形態が適用されるのに好適なコンピュータのハードウェア構成を例示するに過ぎない。本実施形態は、オブジェクトへの処理要求を受け付けてオブジェクトに対する処理を行うデータベース・システムとして機能する情報処理装置に広く適用できるものであり、図示の構成においてのみ本実施例が実現されるのではない。
【0025】
図2において、磁気ディスク装置10gにはOSのプログラムやアプリケーション・プログラムが格納されている。そして、これらのプログラムがメモリ10cに読み込まれてCPU10aに実行されることにより、本実施形態におけるログイン制御部140、処理実行部150およびルール適用部160の各機能が実現される。また、オブジェクト格納部110、アカウント情報記憶部120およびルール情報記憶部130は、メモリ10cや磁気ディスク装置10g等の記憶手段により実現される。
【0026】
<アクセス規則の適用プロセス>
次に、ルール適用部160によるアクセス規則の適用プロセスについて説明する。
図3は、オブジェクトである表の一例を示す図である。
図4は、アクセス規則の一例を示す図である。
【0027】
図3に示す例では、表「Table1」には、「Col1」、「Col2」、「Col3」の3列に各々データが格納されている。また、
図4に示す例では、処理要求としてデータの読み出し要求が行われた場合に関するアクセス規則として、3種類の適用条件と実行規則とが規定されている。具体的には、規則aは、「Table1」に対し、「Col1」と「Col2」の値を指定して読み出し要求が行われたことを適用条件として、「Table1」における「Col1」、「Col2」、「Col3」のデータを読み出すことを規定する。規則bは、「Table1」に対し、「Col1」の値のみを指定して読み出し要求が行われたことを適用条件として、「Table1」における「Col1」および「Col3」のデータのみを読み出し、「Col2」のデータは読み出さずにマスクする(隠す)ことを規定する。規則cは、「Table1」に対し、いずれの列の値も指定せずに読み出し要求が行われたことを適用条件として、「Table1」におけるデータの読み出し結果を出力しない(エラーとする)ことを規定する。
【0028】
ここで、次の3種類のSQL文によるデータの読み出し要求が行われたものとする。
要求1:SELECT * FROM Table1 WHERE Col1='A1' AND Col2='A2'
要求2:SELECT * FROM Table1 WHERE Col1='A1'
要求3:SELECT * FROM Table1
【0029】
要求1は、「Col1」の値が「A1」であり、「Col2」の値が「A2」である行のデータの読み出し要求である。この場合、アクセス規則を適用することなく、単に処理実行部150がこの読み出し要求に基づく処理を行ったとすると、「Col1」の値が「A1」であり、「Col2」の値が「A2」である行のデータが読み出される。そして、処理結果として、「A1、A2、A3」が得られる。一方、
図4に示すアクセス規則では、この要求1は、規則aの適用条件に適合する。したがって、「Col1」の値が「A1」であり、「Col2」の値が「A2」である行において、「Col1」、「Col2」、「Col3」のデータが読み出される。これにより、処理結果として、アクセス規則が適用されなかった場合と同様に、「A1、A2、A3」が得られる。
【0030】
要求2は、「Col1」の値が「A1」である行のデータの読み出し要求である。この場合、アクセス規則を適用することなく、単に処理実行部150がこの読み出し要求に基づく処理を行ったとすると、「Col1」の値が「A1」である行のデータが読み出される。そして、処理結果として、「A1、A2、A3」が得られる。一方、
図4に示すアクセス規則では、この要求2は、規則bの適用条件に適合する。したがって、「Col1」の値が「A1」である行において、「Col1」および「Col3」のデータが読み出され、「Col2」のデータはマスクされる(意味のない出力値「XX」が付与される)。これにより、処理結果として、「A1、XX、A3」が得られる。
【0031】
要求3は、いずれの列の値も指定せずに行われた読み出し要求である。この場合、アクセス規則を適用することなく、単に処理実行部150がこの読み出し要求に基づく処理を行ったとすると、「Table1」の全ての行のデータが読み出される。そして、処理結果として、「A1、A2、A3、B1、B2、B3、C1、C2、C3」が得られる。一方、
図4に示すアクセス規則では、この要求3は、規則cの適用条件に適合する。したがって、上記の処理結果は出力されず、処理結果は「ERROR」となる。
【0032】
以上のように、処理要求に基づく処理の内容が本実施形態によるアクセス規則の適用条件に適合する場合、実行規則に基づいて処理の内容が変換されるため、アクセス規則が適用されない場合とは異なる処理結果が得られる。また、要求1と要求2とを比較すると、アクセス規則が適用されない場合は同じ処理結果が得られるのに対し、要求1の処理に対して適用される実行規則(規則a)と要求2の処理に対して適用される実行規則(規則b)とが異なるため、アクセス規則が適用されることによって異なる処理結果が得られる。ここで、上記のアクセス規則は、処理要求に基づく処理の内容(どのような条件でデータの読み出しが要求されたか)のみに基づいて適用される。すなわち、処理要求を行ったクライアントのアカウントに設定されたアクセス権限の内容に関わらず、処理要求の内容がアクセス規則の適用条件に適合すれば、上記のような処理の変換が行われる。
【0033】
なお、上記の例では、要求2に対して「Col2」のデータの読み出しを行わず、要求3に対して「Table1」の全てのデータの読み出しを行わないこととしたが、データの読み出しは実行し、処理結果の出力において該当するデータを提示しないようにしても良い。詳しくは後述するが、ルール適用部160による処理を、処理実行部150による処理の前に行うか、後に行うかによって、上記の制御内容が異なる。
【0034】
また、上記の例では、データの読み出し処理を対象とし、処理要求に基づけば読み出し対象となるデータのうち、一部または全てのデータの読み出しを行わないという処理の変換を行った。本実施形態では、アクセス規則を定義することによって、上記の例の他に、様々な処理の変換を実現することができる。例えば、
図3および
図4を参照して説明した上記の例では、「Table1」のみを指定して行われた読み出し要求に対し、データの読み出しを行わずに処理結果を「ERROR」としたが、同様の読み出し要求を受け付けたことを適用条件として、「Col3」のデータのみ(すなわち、一部のデータのみ)読み出しを行わないという実行規則を規定しても良い。この場合、上記の要求3が行われると、処理結果は、「A1、A2、B1、B2、C1、C2」となる。なお、ここでは、読み出さなかった「Col3」のデータに対してマスク(意味のない出力値「XX」の付与)も行っていない。
【0035】
また、読み出したデータの出力やデータの読み出し処理を取り消すような変換だけでなく、読み出したデータに替えてそのデータに関する情報(属性情報等)を出力するように処理を変換することもできる。例えば、「Table1」のみを指定して行われた読み出し要求に対し、「Col3」のデータ(すなわち、一部のデータ)については、特定の値(例えば、「A3」)と一致しているか否かの判定結果を処理結果として出力するという実行規則を規定しても良い。この場合、上記の要求3が行われると、処理結果は、「A1、A2、Yes、B1、B2、No、C1、C2、No」となる。
【0036】
また、「Table1」のみを指定して行われた読み出し要求に対し、「Col3」のデータ(すなわち、一部のデータ)については、データの値の一部(例えば、下3桁)のみを処理結果として出力するという実行規則を規定しても良い。例として、「A3」=「12345」、「B3」=「67890」、「C3」=「98765」とする。この場合、上記の要求3が行われると、処理結果は、「A1、A2、345、B1、B2、890、C1、C2、765」となる。
【0037】
また、「Col1」の値のみを指定して行われた読み出し要求に対してはデータの読み出しを行わないという実行規則を規定すると共に、「Col1」および「Col2」の値を指定して行われた読み出し要求に対してはデータの読み出しを行うという実行規則を規定しても良い。この場合、上記の要求1が行われると、処理結果は、「A1、A2、A3」となり、上記の要求2が行われると、データの読み出しは行われない。
【0038】
また、「Col1」および「Col2」のデータを同時に読み出すための読み出し要求に対しては、データの読み出しを行わないという実行規則を規定しても良い。この場合、上記の要求3が行われると、「Col1」のデータおよび「Col2」のデータの読み出しが要求されることになるので、データの読み出しは行われない。これに対し、「Col1」および「Col3」のデータの読み出し要求が行われると、処理結果は、「A1、A3、B1、B3、C1、C3」となる。同様に、「Col2」および「Col3」のデータの読み出し要求が行われると、処理結果は、「A2、A3、B2、B3、C2、C3」となる。
【0039】
この他、例えば、読み出し要求の条件に合致するデータの量(例えば行の数)が所定量までであれば読み出しを行うが、所定量を超える場合には読み出しを行わないという実行規則を規定することができる。また、この場合、所定量を超えてデータの読み出しが行われない場合には、適合したデータの数を処理結果として報知するという実行規則を規定しても良い。また、特定の値のデータを読み出す要求が行われた場合に、そのデータを読み出すのではなく、その値のデータが存在することを報知するという実行規則を規定しても良い。さらに、データの読み出し処理だけでなく、データの書き込み処理や更新処理に対して適用条件および実行規則を定義しても良い(例えば、所定数以上のデータを同時に書き込む処理は実行しない等)。このように、本実施形態では、データベース・システム100により管理するデータの種類やデータベース・システム100の運用条件、仕様等に応じて、様々なアクセス規則を適宜定義して用いることが可能である。
【0040】
ところで、ルール適用部160によるアクセス規則の適用は、原則的には、処理実行部150による処理が行われた後に行うことができる。一方、規則の適用条件および実行規則の内容によっては、処理実行部150による処理が行われる前に行うことができる場合もある。例えば、
図3に示した規則cのように、適用条件に適合した読み出し要求に関してデータの読み出し結果を出力しないというアクセス規則が規定されている場合を考える。この場合、その適用条件に適合する読み出し要求に基づくデータの読み出しは無用なので、処理実行部150による処理(データの読み出し)の前にアクセス規則を適用して処理要求を変換し、処理自体を実行しない方が効率的である。一方で、所定数以上のデータが読み出されたことを適用条件として実行規則に基づく処理結果の変換が行われる場合を考える。この場合、データを読み出した後でなければ適用条件に適合するか否か(所定数以上のデータを読み出したか否か)を判断することができない。したがって、この場合は処理実行部150による処理が行われた後にアクセス規則を適用して処理結果を変換しなければならない。したがって、個々のアクセス規則ごとに、適用条件および実行規則の内容に応じて、処理実行部150による処理の前に適用するか、後に適用するかを設定することが望ましい。
【0041】
<データベース・システムの動作>
図5は、本実施形態のデータベース・システム100における処理実行部150およびルール適用部160の処理手順を説明するフローチャートである。初期状態として、クライアントのログイン処理が既に済んでいるものとする。また、この動作例では、処理実行部150による処理に先立って適用するアクセス規則と、処理実行部150による処理の後に適用するアクセス規則の両方が規定されているものとする。
【0042】
図5に示すように、データベース・システム100が、クライアントからSQL文等による処理要求を受け付けると(ステップ501)、ルール適用部160は、受け付けた処理要求に関して、処理実行部150による処理の実行前に適用するアクセス規則の適用条件に適合するか否かを判断する(ステップ502)。そして、処理要求が適合する適用条件が存在する場合は、その適用条件に対応する実行規則を適用し、処理要求の内容を変換する(ステップ503)。
【0043】
この後、処理実行部150は、処理要求(ステップ503で実行規則が適用された場合は、変換後の処理要求)に基づき処理を実行する(ステップ504)。次に、ルール適用部160は、処理実行部150による処理の結果に基づいて、この処理要求がアクセス規則の適用条件に適合するか否かを判断する(ステップ505)。そして、処理要求が適合する適用条件が存在する場合は、その適用条件に対応する実行規則を適用し、処理結果の内容を変換する(ステップ506)。そして、処理実行部150は、得られた処理結果(ステップ506で実行規則が適用された場合は、変換後の処理結果)を出力する(ステップ507)。
【0044】
<適用例1>
次に、本実施形態のさらに詳細な適用例を説明する。
図6は、本適用例において処理対象となるオブジェクトである表「顧客テーブル」の構成例を示す。また、
図7は、本適用例において用いられるアクセス規則の構成例を示す。
図6に示す「顧客テーブル」には、「顧客番号」、「氏名」、「住所」、「電話番号」、「性別」、「誕生日」、「収入」、「カード番号」、「パスワード」の各列に各々データが格納されている。また、
図7に示すアクセス規則において、規則1〜規則4は、列の指定に関して適用条件が設定されており、規則5〜規則7は、処理結果のデータサイズ(個数)に基づいて適用条件が設定されている。
【0045】
図7に示すアクセス規則について、さらに具体的に説明する。規則1は、「顧客テーブル」を対象として「顧客番号」および「パスワード」の値が指定された読み出し要求に関して(適用条件)、「パスワード」の値を「NULL」(非表示)とする実行規則が規定されている。規則2は、「顧客テーブル」を対象として「顧客番号」の値が指定された読み出し要求に関して(適用条件)、「電話番号」の値をマスク(意味のない値を付与)し、「収入」、「カード番号」および「パスワード」の値を「NULL」(非表示)とする実行規則が規定されている。規則3は、「顧客テーブル」を対象として「住所」の値が指定された読み出し要求に関して(適用条件)、「顧客番号」、「氏名」、「カード番号」および「パスワード」の値を「NULL」(非表示)とする実行規則が規定されている。規則4は、「顧客テーブル」を対象として全てのデータを読み出す読み出し要求に関して(適用条件)、処理を実行しない(処理結果は「ERROR」)とする実行規則が規定されている。したがって、規則1〜規則4については、処理実行部150による処理の実行前に、処理要求に対してルール適用部160によるアクセス規則の適用を行って、上記の「NULL」値を出力する項目については、データの読み出し自体を行わないように処理を変更することができる。
【0046】
また、規則5は、処理結果としてデータ・セット(「顧客テーブル」の行)が1以上取得されたときは(適用条件)、そのデータ・セットにおける「パスワード」の値を「NULL」(非表示)とする実行規則が規定されている。規則6は、処理結果としてデータ・セットが3以上取得されたときは(適用条件)、そのデータ・セットにおける「顧客番号」、「氏名」、「カード番号」および「パスワード」の値を「NULL」(非表示)とし、「電話番号」の値をマスク(意味のない値を付与)する実行規則が規定されている。規則7は、処理結果としてオブジェクト「電話番号」、オブジェクト「顧客テーブル」を対象とするデータ・セットの読み出しにおいて、取得(出力)可能なデータ・セットの最大数を3とする実行規則が規定されている。したがって、規則5〜規則7については、処理実行部150による処理の実行後に、処理結果に対してルール適用部160によるアクセス規則の適用を行って、読み出されたデータの削除や置き換えを行うように処理を変更することができる。
【0047】
なお、本適用例では、無用な処理の実行や重複実行を避けて処理効率を向上するため、重複して適用可能なアクセス規則に関しては、最も適合性の高いアクセス規則のみを適用する。適合性の高いアクセス規則とは、他のアクセス規則における適用条件の項目(条件項目)を包含し、かつより多くの条件項目が処理要求に合致するアクセス規則である。例えば、
図7に示すアクセス規則において、規則1の条件項目は規則2の条件項目を包含し、より多くの条件項目を有するため、規則1に適合する処理要求は、必ず規則2にも適合する。このような場合に、規則1のみを適用し、規則2は適用しない。これは、複数のアクセス規則が適合する場合に、処理結果として取得されるデータ・セットの数がより小さくなるアクセス規則を優先することを意味する。
【0048】
また、本適用例では、上記とは別に、適用条件が適合した場合に処理を行わない(または処理結果を出力しない)とするアクセス規則を最も優先的に適用し、取得(出力)可能なデータ・セットの最大数を規定するアクセス規則を次に優先させて適用する。すなわち、
図7に示す例では、規則4の適用を最優先とし、次に規則7の適用を優先させる。
【0049】
ここで、次のSQL文による処理要求が行われた場合を考える。
要求4:SELECT * FROM 顧客 WHERE 顧客番号=0001 AND パスワード=AAAA;
このSQL文を解析すると、処理の種類はデータの読み出し(SELECT)であり、データ読み出し対象の列は指定されておらず、処理対象のオブジェクトは「顧客テーブル」であり、「顧客番号」および「パスワード」の値が指定されている。
【0050】
図7を参照して、上記の要求4が適合するアクセス規則を調べると、規則1、規則2、規則4が適合する。ただし、ここでは規則1の適合性が最も高いので、規則1のみを適用し、規則2、規則4は不適用とする。また、処理実行部150による処理の結果によっては、規則5〜規則7が適合する可能性がある。
【0051】
次に、処理実行部150が要求4に基づく処理を実行すると、
図6における「顧客番号」=「0001」のデータ・セットが取得される。このデータ・セットは1行なので、規則6、規則7の適用条件は適合しないため、規則6および規則7は適用されない。一方、規則5の適用条件は適合するので、この処理結果に対して、規則1および規則5が適用される。これにより処理結果は、
「0001、安○いちご、東京都、03−1234−0001、女、1月1日、600万、1234−5678−0001、(NULL)」
となる。すなわち、処理実行部150による処理結果から「パスワード」の値が「NULL」(非表示)に変更された。
【0052】
次に、次のSQL文による処理要求が行われた場合を考える。
要求5:SELECT * FROM 顧客WHERE 顧客番号=0002;
このSQL文を解析すると、処理の種類はデータの読み出し(SELECT)であり、データ読み出し対象の列は指定されておらず、処理対象のオブジェクトは「顧客テーブル」であり、「顧客番号」の値が指定されている。
【0053】
図7を参照して、上記の要求5が適合するアクセス規則を調べると、規則2、規則4が適合する。ただし、ここでは規則2の適合性が高いので、規則2のみを適用し、規則4は不適用とする。また、処理実行部150による処理の結果によっては、規則5〜規則7が適合する可能性がある。
【0054】
次に、処理実行部150が要求5に基づく処理を実行すると、
図6における「顧客番号」=「0002」のデータ・セットが取得される。このデータ・セットは1行なので、規則6、規則7の適用条件は適合しないため、規則6および規則7は適用されない。一方、規則5の適用条件は適合するので、この処理結果に対して、規則2および規則5が適用される。これにより処理結果は、
「0002、石○次郎、東京都、03−XXXX−XXXX、男、2月2日、(NULL)、(NULL)、(NULL)」
となる。すなわち、処理実行部150による処理結果から「電話番号」がマスクされ、「収入」、「カード番号」および「パスワード」の値が「NULL」(非表示)に変更された。
【0055】
次に、次のSQL文による処理要求が行われた場合を考える。
要求6:SELECT * FROM 顧客WHERE 住所=神奈川県;
このSQL文を解析すると、処理の種類はデータの読み出し(SELECT)であり、データ読み出し対象の列は指定されておらず、処理対象のオブジェクトは「顧客テーブル」であり、「住所」の値が指定されている。
【0056】
図7を参照して、上記の要求6が適合するアクセス規則を調べると、規則3、規則4が適合する。ただし、ここでは規則3の適合性が高いので、規則3のみを適用し、規則4は不適用とする。また、処理実行部150による処理の結果によっては、規則5〜規則7が適合する可能性がある。
【0057】
次に、処理実行部150が要求6に基づく処理を実行すると、
図6における「顧客番号」=「0006」のデータ・セットが取得される。このデータ・セットは1行なので、規則6、規則7の適用条件は適合しないため、規則6および規則7は適用されない。一方、規則5の適用条件は適合するので、この処理結果に対して、規則3および規則5が適用される。これにより処理結果は、
「(NULL)、(NULL)、神奈川県、03−1234−0006、男、6月6日、1000万、(NULL)、(NULL)」
となる。すなわち、処理実行部150による処理結果から「顧客番号」、「氏名」、「カード番号」および「パスワード」の値が「NULL」(非表示)に変更された。
【0058】
次に、次のSQL文による処理要求が行われた場合を考える。
要求7:SELECT * FROM 顧客WHERE 住所=東京都;
このSQL文を解析すると、処理の種類はデータの読み出し(SELECT)であり、データ読み出し対象の列は指定されておらず、処理対象のオブジェクトは「顧客テーブル」であり、「住所」の値が指定されている。
【0059】
図7を参照して、上記の要求7が適合するアクセス規則を調べると、規則3、規則4が適合する。ただし、ここでは規則3の適合性が高いので、規則3のみを適用し、規則4は不適用とする。また、処理実行部150による処理の結果によっては、規則5〜規則7が適合する可能性がある。
【0060】
次に、処理実行部150が要求7に基づく処理を実行すると、
図6における「顧客番号」=「0001」、「0002」、「0005」、「0007」のデータ・セットが取得される。このデータ・セットは4行なので、まず規則7が適用され、4行目の「顧客番号」=「0007」のデータ・セットが削除される。次に、規則5および規則6の適用条件はいずれも適合するので、この処理結果に対して、規則3、規則5および規則6が適用される。これにより処理結果は、
「(NULL)、(NULL)、東京都、03−XXXX−XXXX、女、1月1日、600万、(NULL)、(NULL);
(NULL)、(NULL)、東京都、03−XXXX−XXXX、男、2月2日、500万、(NULL)、(NULL);
(NULL)、(NULL)、東京都、03−XXXX−XXXX、男、5月5日、500万、(NULL)、(NULL)」
となる。すなわち、処理実行部150による処理結果から1行分のデータ・セットが削除され、「顧客番号」、「氏名」、「カード番号」および「パスワード」の値が「NULL」(非表示)に変更され、「電話番号」がマスクされた。
【0061】
次に、次のSQL文による処理要求が行われた場合を考える。
要求8:SELECT * FROM 顧客;
このSQL文を解析すると、処理の種類はデータの読み出し(SELECT)であり、データ読み出し対象の列は指定されておらず、処理対象のオブジェクトは「顧客テーブル」であり、いずれの列の値も指定されていない。
【0062】
図7を参照して、上記の要求8が適合するアクセス規則を調べると、規則4が適合する。また、処理実行部150による処理の結果によっては、規則5〜規則7が適合する可能性がある。ここでは、規則4が適合しているので、この規則4が最優先で適用される。なお、規則4の適用は、処理実行部150による処理の実行に先立って行われる。したがって、処理実行部150による処理は実行されず、処理結果は「ERROR」となる。
【0063】
<適用例2>
次に、本実施形態の他の適用例を説明する。本適用例において処理対象となるオブジェクトは、
図6に示した表「顧客テーブル」を用いる。また、
図8は、本適用例において用いられるアクセス規則の構成例を示す。
図8に示すアクセス規則において、規則8〜規則10は、列の指定に関して適用条件が設定されている。
【0064】
図8に示すアクセス規則について、さらに具体的に説明する。規則8は、「顧客テーブル」を対象として「住所」の値が指定された読み出し要求に関して(適用条件)、「住所」と「性別」以外の全ての列の値を「NULL」(非表示)とする実行規則が規定されている。規則9は、「顧客テーブル」を対象として「性別」の値が「男」に指定された読み出し要求に関して(適用条件)、「収入」以外の全ての列の値を「NULL」(非表示)とする実行規則が規定されている。規則10は、「顧客テーブル」を対象として「性別」の値が「女」に指定された読み出し要求に関して(適用条件)、「誕生日」以外の全ての列の値を「NULL」(非表示)とする実行規則が規定されている。
【0065】
ここで、次のSQL文による処理要求が行われた場合を考える。
要求9:SELECT * FROM 顧客 WHERE 住所='東京';
このSQL文を解析すると、処理の種類はデータの読み出し(SELECT)であり、データ読み出し対象の列は指定されておらず、処理対象のオブジェクトは「顧客テーブル」であり、「住所」の値が指定されている。
図8を参照して、上記の要求9が適合するアクセス規則を調べると、規則8が適合する。
【0066】
次に、処理実行部150が要求9に基づく処理を実行すると、
図6における「顧客番号」=「0001」、「0002」、「0005」、「0007」のデータ・セットが取得される。この結果に対して規則8が適用されるので、処理結果は、
「(NULL)、(NULL)、東京都、(NULL)、女、(NULL)、(NULL)、(NULL)、(NULL);
(NULL)、(NULL)、東京都、(NULL)、男、(NULL)、(NULL)、(NULL)、(NULL);
(NULL)、(NULL)、東京都、(NULL)、男、(NULL)、(NULL)、(NULL)、(NULL);
(NULL)、(NULL)、東京都、(NULL)、女、(NULL)、(NULL)、(NULL)、(NULL)」
となる。すなわち、処理実行部150による処理結果から「住所」および「性別」以外の全ての値が「NULL」(非表示)に変更された。
【0067】
次に、次のSQL文による処理要求が行われた場合を考える。
要求10:SELECT * FROM 顧客 WHERE 性別='男';
このSQL文を解析すると、処理の種類はデータの読み出し(SELECT)であり、データ読み出し対象の列は指定されておらず、処理対象のオブジェクトは「顧客テーブル」であり、「性別」の値が「男」に指定されている。
図8を参照して、上記の要求10が適合するアクセス規則を調べると、規則9が適合する。
【0068】
次に、処理実行部150が要求10に基づく処理を実行すると、
図6における「顧客番号」=「0002」、「0003」、「0004」、「0005」、「0006」のデータ・セットが取得される。この結果に対して規則9が適用されるので、処理結果は、
「(NULL)、(NULL)、(NULL)、(NULL)、(NULL)、(NULL)、500万、(NULL)、(NULL);
(NULL)、(NULL)、(NULL)、(NULL)、(NULL)、(NULL)、800万、(NULL)、(NULL);
(NULL)、(NULL)、(NULL)、(NULL)、(NULL)、(NULL)、450万、(NULL)、(NULL);
(NULL)、(NULL)、(NULL)、(NULL)、(NULL)、(NULL)、500万、(NULL)、(NULL);
(NULL)、(NULL)、(NULL)、(NULL)、(NULL)、(NULL)、1000万、(NULL)、(NULL)」
となる。すなわち、処理実行部150による処理結果から「収入」以外の全ての値が「NULL」(非表示)に変更された。
【0069】
次に、次のSQL文による処理要求が行われた場合を考える。
要求11:SELECT * FROM 顧客 WHERE 性別='女';
このSQL文を解析すると、処理の種類はデータの読み出し(SELECT)であり、データ読み出し対象の列は指定されておらず、処理対象のオブジェクトは「顧客テーブル」であり、「性別」の値が「女」に指定されている。
図8を参照して、上記の要求11が適合するアクセス規則を調べると、規則10が適合する。
【0070】
次に、処理実行部150が要求11に基づく処理を実行すると、
図6における「顧客番号」=「0001」、「0007」のデータ・セットが取得される。この結果に対して規則10が適用されるので、処理結果は、
「(NULL)、(NULL)、(NULL)、(NULL)、(NULL)、1月1日、(NULL)、(NULL)、(NULL);
(NULL)、(NULL)、(NULL)、(NULL)、(NULL)、7月7日、(NULL)、(NULL)、(NULL)」
となる。すなわち、処理実行部150による処理結果から「誕生日」以外の全ての値が「NULL」(非表示)に変更された。
【0071】
以上、本発明の実施形態について説明したが、本発明の具体的な構成は、上記の実施形態には限定されない。例えば、アクセス対象のオブジェクトは、上記の例で説明した表やそのデータ構成に限定されない。また、アクセス規則を上記の例以外にも様々に設定し得ることは上述した通りである。その他、上記の実施形態に、種々の変更または改良を加えたものも、本発明の技術的範囲に含まれる。