(57)【特許請求の範囲】
【請求項１】
データベースへのアクセスを制御するデータベースシステムが実装されるコンピュータと、前記データベースを格納する記憶装置とを有するコンピュータシステムにおいて、前記コンピュータが、前記データベースシステムを介して前記データベースにアクセスするデータアクセス方法であって、前記コンピュータは、
前記データベースに含まれるテーブル内で提示可能なオブジェクトの指定と、前記提示可能なオブジェクトのうち条件によりマスクされるオブジェクトの指定と、マスクされる条件とを含むビュー定義を外部から受け取るステップと、
前記提示可能なオブジェクトに対するアクセスを要求するための問合せ文を外部から受け取るステップと、
前記マスクされる条件を表現する文を含むように前記問合せ文を書き替えて新しい問合せ文を生成するステップと、
前記新しい問合せ文を実行することによって前記データベースから前記提示可能なオブジェクトを取得するステップと、
実行結果として得られた前記マスクされるオブジェクトを前記マスクされる条件によって判定し、前記条件によりマスクされるオブジェクトがマスクされないと判定された場合には、実行結果として得られたオブジェクトの値を提示し、前記条件によりマスクされるオブジェクトがマスクされると判定された場合には、マスク条件として設定されているマスク値を提示するステップと、を実行することを特徴とするデータアクセス方法。
【請求項２】
前記オブジェクトは、前記テーブルに含まれる複数のコラムであることを特徴とする請求項１記載のデータアクセス方法。
【請求項３】
前記問合せ文がマスクされるコラムを選択するような選択条件を含むならば、前記新しい問合せ文は、前記選択条件と前記マスク条件とのアンド結合を含むように生成され、前記コンピュータは、前記アンド結合を満足するようなコラム値を提示することを特徴とする請求項２記載のデータアクセス方法。
【請求項４】
データベースへのアクセスを制御するデータベースシステムが実装されるコンピュータと、前記データベースを格納する記憶装置とを有するコンピュータシステムにおいて、前記コンピュータが、前記データベースシステムを介して前記データベースにアクセスするデータアクセス方法であって、前記コンピュータは、
前記データベースに含まれるテーブル内のオブジェクトに対するアクセスを要求するための問合せ文であって、前記テーブル内で選択されるオブジェクトの指定と、前記選択されるオブジェクトのうち条件によりマスクされるオブジェクトの指定と、マスクされる条件およびマスク値とを含む問合せ文を外部から受け取るステップと、
前記問合せ文を実行することによって前記データベースから前記選択されるオブジェクトを取得するステップと、
取得された前記マスクされるオブジェクトを前記マスクされる条件によって判定し、前記条件によりマスクされるオブジェクトがマスクされないと判定された場合には、前記問合せ文の実行結果として得られたオブジェクトの値を提示し、前記条件によりマスクされるオブジェクトがマスクされると判定された場合には、前記マスク値を提示するステップと、を実行することを特徴とするデータアクセス方法。
【請求項５】
前記オブジェクトは、前記テーブルに含まれる複数のコラムであることを特徴とする請求項４記載のデータアクセス方法。
【請求項６】
データベースへのアクセスを制御するデータベースシステムが実装されるコンピュータと、前記データベースを格納する記憶装置とを有するコンピュータシステムにおいて、前記コンピュータが、前記データベースシステムを介して前記データベースにアクセスするためのプログラムを記録した前記コンピュータが読み取り可能な記録媒体であって、前記コンピュータに、
前記データベースに含まれるテーブル内で提示可能なオブジェクトの指定と、前記提示可能なオブジェクトのうち条件によりマスクされるオブジェクトの指定と、マスクされる条件とを含むビュー定義を外部から受け取るステップと、
前記提示可能なオブジェクトに対するアクセスを要求するための問合せ文を外部から受け取るステップと、
前記マスクされる条件を表現する文を含むように前記問合せ文を書き替えて新しい問合せ文を生成するステップと、
前記新しい問合せ文を実行することによって前記データベースから前記提示可能なオブジェクトを取得するステップと、
実行結果として得られた前記マスクされるオブジェクトを前記マスクされる条件によって判定し、前記条件によりマスクされるオブジェクトがマスクされないと判定された場合には、実行結果として得られたオブジェクトの値を提示し、前記条件によりマスクされるオブジェクトがマスクされると判定された場合には、マスク条件として設定されているマスク値を提示するステップと、を実行させるためのプログラムを記録したプログラム記録媒体。
【請求項７】
前記オブジェクトは、前記テーブルに含まれる複数のコラムであることを特徴とする請求項６記載のプログラム記録媒体。
【請求項８】
前記問合せ文がマスクされるコラムを選択するような選択条件を含むならば、前記新しい問合せ文は、前記選択条件と前記マスク条件とのアンド結合を含むように生成され、前記コンピュータに、前記アンド結合を満足するようなコラム値を提示させるためのプログラムを記録した請求項６記載のプログラム記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般的にデータベース・アクセスに係わり、特にデータベース中の項目へのアクセスを制御する方法に関する。
【０００２】
【従来の技術】
今日の情報技術の進展によって、各種データ源への切れ目のないアクセスが可能となって来ている。このような技術によって人々は以前にも増して大量の情報にアクセスすることが可能である。しかしながらデータ源は、医療レコード、財務レコード、人事情報のようにアクセス権限のない者のアクセスから保護されるべき重要な情報を含んでいることがしばしばあり、このような情報にアクセスしたいユーザについてのアクセス権の制御を必要とする。データベースシステムは、ビュー定義と認証モデルを用いてデータアクセス制御機能を提供してきた。
【０００３】
ビューは、通常のテーブル中のデータをユーザによって異なる形で可視可能とするような情報オブジェクトである。それはデータベースを構成する固定的なテーブルの一部から成るが動的に定義される論理的なテーブルである。ビューは、その基となるテーブル中のデータをコピーすることなくユーザに見せる方法を提供する。
【０００４】
従来のビューによって、データベース中のデータへのアクセスをロウのレベルまたはコラムのレベルで制御することができる。図１は、入院患者情報とＭＤ＿ＩＤによって分類される入院患者集計情報を含む病院データＩＮＰＴ＿ＢＡＳＥ１００の例を示す図である。図でＰＴ＿ＩＤ，ＶＳＴ，Ｐ＿ＮＭ，ＡＧＥ，ＳＥＸ，ＭＤ＿ＩＤ，ＤＲＧ，ＳＴＡＹ，ＣＯＳＴ，ＰＹＭＴは、それぞれ患者ＩＤ、来院回数、患者名、年齢、性別、医師ＩＤ、病名コード、入院日数、コスト、支払に相当する。またＶＯＬ，ＡＶＧＳＴＡＹ，ＡＶＧＣＯＳＴ，ＡＶＧＰＹＭＴは、それぞれ回数、診察日数平均、コスト平均、支払平均に相当する。各医師は、自分がその来院時に診療した患者のデータのみを見ることができるものとする。図２は、各医師向けのＩＮＰＴ＿ＢＡＳＥ１００の望ましいビューを示す。ＰＴ＿ＩＤ，ＶＳＴ，Ｐ＿ＮＭ及びＭＤ＿ＩＤ項目は、各患者のプライバシーを保護するために選択的に可視可能とされるので、各医師は自分が扱った患者のデータのみを見ることができる。このようにして、そのＩＤが２２２２である医師は、ビュー２０２を可視可能である。またＩＤが３３３３である医師は、ビュー２０４を可視可能である。
【０００５】
上記入院患者テーブルに対するビューは、従来のビュー定義（またはビュー生成）によって定義可能である。例えば図３は、図２に示すビュー２０２，２０４及び２０６を生成するためのビュー定義を示す。（ｕｓｅｒ＿ｉｄは、その使用するデータベースシステムによっては、現在のユーザＩＤを返すような表現、例えばＳＹＳ＿ＣＯＮＴＥＸＴ（‘ｕｓｅｒｅｎｖ’，‘ｓｅｓｓｉｏｎ＿ｕｓｅｒ’）で置き換えてもよい。）しかしＭＤ＿ＩＤによって分類される入院患者集計情報を得るために図４に示すＳＱＬ文を実行するならば、各医師は図５に示すように異なる結果を得る。
【０００６】
図２に示すような望ましい集計結果を得るために、図６に示すようなビューを定義することができる。しかし非定型で多次元の解析を行うためには、ユーザは集計ビューのすべての可能な組合せをできなければならない。このような無差別のアプローチを許すことは、ビューを保守するコストの増大につながる。例えばもし医師が１２０から１２９までのＤＲＧ（病名コード）のように特定のＤＲＧの統計を見たい場合には、ＭＤ＿ＩＤによって分類されるデータの一部を別々に集計するようなビューを定義しなければならない。各医師は、各々異なるデータ部分を見たいとすれば、そのビューをあらかじめ準備しておくことはほとんど不可能である。
【０００７】
現在のシステムは、アプリケーション論理の一部にアクセス制御ポリシーを実装することによってこの問題を解決する。しかし通常のシステムには多数のアプリケーションが存在する。従って各アプリケーションごとにアクセスポリシーを実装しなければならず、このアクセスポリシーをメンテナンスするためのコストが膨大なものとなる。特に過去のソフトウェア遺産を利用する場合には、その努力は相当なものとなる。
【０００８】
データベースの保護は、フロー、推測、アクセス制御のような各種セキュリティ手段によって行われ得る。情報システムにおけるアクセス制御に関しては、システム・オブジェクトへの直接のアクセスはすべて保護ポリシーによって設定されたモデルと規則に従って行われることが保証されねばならない。データベースシステムに対するアクセス制御は、そのコンテンツに依存するアクセス制御モデルにまで拡張される。コンテンツ依存のアクセス制御モデルに基づく従来のビュー定義においては、アクセス規則は、タプル（ｓ，ｏ，ｔ，ｐ）と表現される。これは、「主部ｓはその述部ｐが真であるようなオブジェクトｏの発生に対してアクセスｔを行う」ことを示す。このモデルを拡張したものは６つのタプル（ａ，ｓ，ｏ，ｔ，ｐ，ｆ）から成り、ａはｓが正しい（ｏ，ｔ，ｐ）であると認証する認証者であり、ｆはｓをさらに他のオブジェクトへ転送（ｏ，ｔ，ｐ）可能か否かを示すコピーフラグである。
【０００９】
従来技術の文献には多くのセキュリティ・モデルが提案されている。アクセス・マトリックス・モデル、テイク・グラント・モデル、アクション・エンティティ・モデルおよびウッド等によるモデルは、合理的なモデルである。ユーザの問合せ文は権限性に照らしてチェックされる。問合せ文が許可される場合には、その問合せ文によって特定のアクセスモードにあるオブジェクトがアクセスされる。さもなくばそのアクセスは拒否される。
【００１０】
Ｌｕｎｔ，Ｔ．Ｆ．，Ｄｅｎｎｉｎｇ，Ｄ．，Ｓｃｈｅｌｌ，Ｒ．Ｒ．，Ｈｅｃｋｍａｎ，Ｍ．，及びＷ．Ｒ．Ｓｈｏｃｋｌｅｙによる“Ｔｈｅ  Ｓｅａ  Ｖｉｅｗ  Ｓｅｃｕｒｉｔｙ  Ｍｏｄｅｌ”，ＩＥＥＥトランザクション、ソフトウェア・エンジニアリング、Ｖｏｌ．１６，Ｎｏ．６（１９９０年６月）ページ５９３〜６０７の論文には、リレーショナル・データベース・システムのセキュリティを保護するためにシー・ビュー・モデルとして知られるセキュリティ・モデルが提案されている。ここでは強制アクセス制御（ＭＡＣ）モデルと信用性あるコンピューティング・ベース（ＴＣＢ）モデルと呼ぶ２つの層を用いる。シー・ビューは、物理的に単一レベルのリレーションから論理的にマルチレベルのリレーション・インスタンスを生成することによって、マルチレベルのデータアクセスを制御する。
【００１１】
他のモデルとして、Ｊａｊｏｄｉａ−ＳａｎｄｈｕのモデルやＳｍｉｔｈ−Ｗｉｎｓｌｅｔｔｅのモデルがあり、これらはマルチレベルのセキュリティ・モデルを提案するものである。これらのモデルのセキュリティ・ポリシーは、論理的にマルチレベルのリレーション・インスタンスを生成する。これらのモデルは、データベース・セキュリティを実装するために、データベースシステムとアプリケーションとの間に交換フィルタを設けるものである。
【００１２】
従来のビュー処理は次のような典型的なステップを含む。
（１）ユーザ認証
（２）ビュー定義の適用（例えばビュー定義に従って問合せ文を書き替えるなど）
（３）問合せ文を最適化する。
（４）問合せ文を実行する。
（５）結果を返す。
【００１３】
従来のビューにおいては、アクセス制御規則は実行前の問合せ文に適用される。問合せ文は表示対象のコラムに含まれないコラムにアクセスすることはできない。さらにユーザが表示対象オブジェクトとしてコラム値を隠す機能を定義すると、その問合せによって元の値にもアクセスできない。
【００１４】
Ｆｅｒｒａｉｏｌｏ，Ｄａｖｉｄ  Ｆ．，Ｂａｒｋｌｅｙ，Ｊｏｈｎ  Ｆ．及びＫｕｈｎ，Ｄ．Ｒｉｃｈａｒｄによる“Ａ  Ｒｏｌｅ−Ｂａｓｅｄ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ｍｏｄｅｌ  ａｎｄ  Ｒｅｆｅｒｅｎｃｅ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  Ｗｉｔｈｉｎ  ａ  Ｃｏｒｐｏｒａｔｅ  Ｉｎｔｒａｎｅｔ”，トランザクション・インフォメーション・システム・セキュリティ  ２，１（１９９９年２月），ページ３４〜６４の論文には、ユーザの職能の概念に基づいてアクセス権限を与える職能ベースのアクセス制御が記載されている。
【００１５】
Ｏｒａｃｌｅ  ８ｉシステムは、論理的な私的データベースを用いてきめの細かいアクセス制御を行う（Ｏｒａｃｌｅ  ８ｉは、ＯＲＡＣＬＥ  Ｃｏｒｐ．の商標である）。これについては、Ｄａｖｉｄｓｏｎ，Ｍａｒｙ  Ａ．による“Ｃｒｅａｔｉｎｇ  Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｄａｔａｂａｓｅｓ  ｗｉｔｈ  Ｏｒａｃｌｅ  ８ｉ”，オラクル・マガジン（１９９９年７月）で論じられている。この機能によって、データベース設計者は、ユーザがテーブルをアクセスするとき自動的に選択条件ストリングを加えることができる。この条件ストリングは、任意の値（例えばコンテクスト値又はセション値）に基づいて生成され得る。しかしこの条件はこれを満足しないロウを除外するので、１つのロウに含まれるコラムの一部をマスクすることはできない。
【００１６】
Ｃｈｉｎ，Ｆ．Ｙ．“Ｓｅｃｕｒｉｔｙ  ｉｎ  Ｓｔａｔｉｓｔｉｃａｌ  Ｄａｔａｂａｓｅｓ  ｆｏｒ  Ｑｕｅｒｉｅｓ  ｗｉｔｈ  Ｓｍａｌｌ  Ｃｏｕｎｔｓ”，ＡＣＭトランザクション・データベース・システム，３，Ｉ（１９７８年３月），ページ９２〜１０４の論文には、統計用のデータベース・システムに関して統計的な推測を防ぐためのセキュリティ・モデルが提案されている。推測を保護する技術として３つある。すなわち概念的、制約ベース及び摂動ベースの技術である。例えばＣａｓｔａｎｏ，Ｓｉｌｖａｎａ，Ｆｕｇｉｎｉ，Ｍａｒｉａｇｒａｚｉａ  Ｇ．，Ｍａｒｔｅｌｌａ，Ｇｉａｎｃａｒｌｏ及びＳａｍａｒａｔｉ，Ｐｉｅｒａｎｇｅｌａによる“Ｄａｔａｂａｓｅ  Ｓｅｃｕｒｉｔｙ”，Ａｄｄｉｓｏｎ−Ｗｅｓｌｅｙ出版社（１９９４）、Ａｄａｍ，Ｎａｂｉｌ  Ｒ及びＷｏｒｔｈｍａｎｎ，Ｊｏｈｎ  Ｃによる論文“Ｓｅｃｕｒｉｔｙ−ｃｏｎｔｒｏｌ  Ｍｅｔｈｏｄｓ  ｆｏｒ  Ｓｔａｔｉｓｔｉｃａｌ  Ｄａｔａｂａｓｅｓ：Ａ  Ｃｏｍｐａｒａｔｉｖｅ  Ｓｔｕｄｙ，”ＡＣＭコンピューティング・サーベイ，Ｖｏｌ．２１，Ｎｏ．４，（１９８９年１２月），ページ５１５〜５５６を参照のこと。これらの技術は、統計値の出力を抑止するか、またはグループ・ディメンションの結合を制限するものである。しかしながら、これらの技術は、次元値そのものを抑止する機能を提供していない。従ってこれらの技術は、図２に示されるような集計結果に対するアクセス・ポリシーを定義することができない。
【００１７】
【発明が解決しようとする課題】
アクセス・ポリシーに基づいてきめが細かく柔軟なセルレベルのデータアクセス制御技術を提供する必要がある。ＤＥＦＩＮＥ，ＣＨＡＮＧＥ，ＤＥＬＥＴＥのような操作を容易に行えるアクセス・ポリシーを提供することが望ましい。また既存のアプリケーション論理（コード）に影響を与えず、望ましくはデータベースシステム内又はミドルウェアとして実装可能な技術を提供することが望まれる。
【００１８】
【課題を解決するための手段】
本発明によれば、セルレベルのデータアクセス制御を行うための方法は、新しい機能であるマスク付きビューと、従来のビュー定義の拡張として実装し得るシンタックス／記号表現を含む。問合せ文の書き替えアルゴリズムは、既存のデータベース・システムに容易に組み込めるようなマスク機能を備える。この書き替えは、ＪＯＩＮ，ＨＡＶＩＮＧ，ＯＲＤＥＲ  ＢＹ操作などを含むマスクコラムについての選択条件を考慮する。集計機能としては、元のデータセットの状態に基づいて集計結果をマスクできる集計マスク条件を提供する。副問合せをもつ問合せ文に対しても、マスク付きビューの記号表現が提供される。
【００１９】
【発明の実施の形態】
本発明のデータベース・システムにおいてセル・レベルのアクセス制御を実現するために、マスク付きビューと呼ぶ従来のビューの新規な拡張方法を導入する。アクセス規則は、タプル（ｓ，ｏ，ｔ，ｐ，ｍ）と表現される。ここでｍは、問合せ文の実行後に適用されるマスク条件の集合を示す。また主部ｓは、その述部ｐが真であるようなオブジェクトｏの発生に対してアクセスｔを行う。
【００２０】
マスク条件ｍは、タプル（ｍｃ，ｍｖ，ｍｐ）と表現される。ここでｍｃはマスクすべきコラムの集合であり、ｍｖはマスク述部ｍｐが偽のとき元の値の代わりに使用されるマスク値である。マスク値ｍｖは式によって定義されるので、ユーザ関数によって可変のマスク値を用いることができる。ｍｐを使って職務に応じたマスク制御を定義することができる。例えば役員はすべての医師名を見ることができ、各医師は自分の名前のみを見ることができるように医師名のコラムにマスクを設定することができる。テーブルは、各コラムに対して異なるマスク条件をもつことができる。
【００２１】
図７は、マスク付きのビューを生成する本発明のビュー定義７００の例を示す図である。マスク節７０２は、マスクコラム宣言節（マスク述部）７０４とマスク条件節７０６とから成る。マスクコラム宣言節は、コラム名のリスト７１１（ｍｃ）と対応するマスク値７１３（ｍｖ）とから成る。マスク条件節（ｍｐ）は、コラム値を表示する条件であり、その条件が真と評価されたときコラム値を表示する。図７のビュー定義では、問合せによって、ＭＤ＿ＩＤがユーザＩＤ（ｕｓｅｒ−ｉｄ）に等しくないとき（すなわちマスク条件が偽のとき）、ＰＴ＿ＩＤ、ＶＳＴ、Ｐ＿ＮＭおよびＭＤ＿ＩＤの項目にヌル（ＮＵＬＬ）を生成する。その条件が真のとき（すなわちＭＤ＿ＩＤ＝ｕｓｅｒ−ｉｄ）、これらの項目はデータベースから取得したデータをもつことになる。このようにして条件が偽のとき、マスクコラム宣言節７０４に挙げられたコラム名７１１の値は、対応するマスク値７１３によって置き換えられる。
【００２２】
図８は、従来のビュー定義によって生成されるビューを示す。従来のビューは、選択述部ｐと表示オブジェクトｏによってデータアクセスを制限することができる。アクセス可能データオブジェクト８０２は、可視データ８０４と同じである。これと比較して、本発明によるマスク付きビューと呼ぶ拡張されたビューを図９に示す。ここでアクセス可能データオブジェクト８１２は、可視データ８１４と不可視（マスクされた）データ８１６の２つのデータから成る。
【００２３】
本発明の実施例によれば、マスク付きビューの定義（すなわちマスク条件ｍを含む）に関する問合せ文は、次のように処理される。
（１）ユーザ認証
（２）ビュー定義の適用（問合せ文をビュー定義に従って書き替える）
（３）問合せ文を最適化する。
（４）問合せ文を実行する。
（Ｍ）マスク条件に従ってコラム値および／またはフィルタ・ロウをマスクする。
（５）その結果を返す。
【００２４】
ステップ（４）と（５）の間に挿入されるステップ（Ｍ）によって、マスク条件ｍｃに従ってコラム値ｍｖをマスクすることが可能である。ユーザの問合せ文はコラム値をマスクするステップの前に実行されるから、ＪＯＩＮとＧＲＯＵＰＢＹ操作によって所望の結果を生成するために必要なデータがアクセスされる。ステップ（４）によって第１の（中間の）結果が生成される。ステップ（Ｍ）によってマスク付きビューに含まれるマスク条件に基づいて第１の結果がフィルタされ、最終結果を生成し、ステップ（５）でその結果が返される。
【００２５】
従って図２に示すような集計結果が得られ、集計のための問合せ文ごとに特別なビューを定義する必要はない。しかし本発明を実施するためには、既存の対象とするデータベースシステム・ソフトウェアがマスク付きビューの定義を認識するように修正する必要がある。
【００２６】
本発明の他の実施例は、マスク付きビューに従ってＳＱＬ文を解釈するための問合せ文の書き替えアルゴリズムを開示する。本発明による問合せ文書き替えアルゴリズムは、解釈されるＳＱＬ文が対象とするデータベースに関する元々の問合せ言語を基にしているため、既存のデータベースシステムへの組み込みが非常に容易である。従ってこの組み込みによって対象とするデータベースシステムへの影響はない。
【００２７】
本発明の実施例によれば、処理手順は次に示すものとなる。
（１）ユーザ認証
（Ｒ）マスク定義に従って問合せ文を書き替える。
（２）ビュー定義を適用する（すなわちビュー定義に従って問合せ文を書き替える）
（３）問合せ文を最適化する。
（４）問合せ文を実行する。
（５）その結果を返す。
【００２８】
新しいステップ（Ｒ）は、上記実施例のステップ（Ｍ）を置き換えるものである。ステップ（Ｒ）は、従来のビュー・モジュールの拡張として実装され得る。従って実装コストは上記アプローチよりかなり小さくなる。ステップ（Ｒ）は、対象のデータベースの元々の問合せ言語を使い、単にユーザの問合せ文をマスク条件に従って書き替える問合せトランスレータを実装することにより達成される。例えば図４に示すＳＱＬ文は、図１０に示すＳＱＬ文９００に変換され、対象とするデータベースシステムによって実行される。
【００２９】
図１１及び図１２は、マスク付きビューをミドルウェアとして（交換的フィルタとして）実現する本発明の実施例を示す。図１１は、マスク付きビューにアクセスする問合せを処理する方法を示す。ユーザ又はアプリケーション１００２は、マスク付きビュー定義を含む問合せ文１００４を発行する。ミドル層のモジュール１００６は、既存のデータベースシステム１００５によって設けられるスキーマ情報を使い、マスク付きビュー定義１００１に従って問合せ文を書き替える。ミドル層モジュールは、データベースシステムへ解釈済問合せ文１００８を発行し、その結果１０１０がユーザに返される。
【００３０】
図１２は、マスク付きビュー定義１０２４を実行する本発明の実施例を示す。マスク付きビュー定義は、分解部１０２６によって単純ビュー定義とマスク定義に分解される。このミドル層モジュール１０２６は、データベースシステム１００５からビューに関するスキーマ情報１００３を取得し、その定義が正しいか否かチェックする。次にそれはマスク定義を抽出し、マスク付きビュー定義１０２８として格納する。
【００３１】
図１３は、マスク付きビューを実装するためのシンタックス図１１００の例を示す。従来のビュー定義の後にｍａｓｋ＿ｃｌａｕｓｅ１１０２が追加される。ｍａｓｋ＿ｃｌａｕｓｅは、マスク・コラム（ｃｏｌｕｍｎ）１１０４とマスク値（ｅｘｐｒ）１１０６のリスト及びマスク条件（ｃｏｎｄｉｔｉｏｎ+）１１０８を有する。なお別名をもつ式によってマスクを表現することができる。別名は、コラムと同様に処理される。またユーザは、外部コラム参照を使ってマスク条件を定義できるので、ｃｏｎｄｉｔｉｏｎに＋記号が付されている。
【００３２】
オプションの節として、ｍａｓｋ＿ｃｏｎｓｔ１１１０とｊｏｉｎ＿ｐｒｍｔ（ジョイン許可）とがある。ｍａｓｋ＿ｃｏｎｓｔは、述部制限１１０７、グループキー制限１１０９及び集計制限１１１１から成る。述部、グループキー及び集計の制限について以下説明する。ｊｏｉｎ＿ｐｒｍｔ１１１３は、どのキーをジョイン・キーとして使うかを明示的に定義する。ジョイン許可については以下説明する。
【００３３】
次に本発明による問合せ文書書き替え方法について詳述する。またセキュリティ・クラス、推測の余地なし（ｉｎｆｅｒｅｎｃｅ−ｆｒｅｅ）と色分けによる推測の余地なし（ｉｎｆｅｒｅｎｃｅ−ｆｒｅｅ  ａｇａｉｎｓｔ  ｃｏｌｏｒｉｎｇ）を定義し、問合せ文書き替えアルゴリズムがこれらのセキュリティ・クラスを保存することを簡単に示す。
【００３４】
次のステップは、マスクコラムについての集計のない単純な問合せ文を書き替える方法の概略を示す：
プロセス１
（１）各マスクコラムｍｃのマスク値ｍｖ及びマスク条件述部ｍｐについて、（２）を適用する。
（２）各マスクコラムｍｃを次のＣＡＳＥ表現で置き換える：
（ＣＡＳＥ  ＷＨＥＮ  ｍｐ  ＴＨＥＮ  ｍｃ  ＥＬＳＥ  ｍｖ  ＥＮＤ）［ｍｃ］
なお表現中にｍｃが使われる場合には、別名の宣言ｍｃは必要ない。コラムのデータ型を合わせるためにＣＡＳＴ関数が必要になる場合がある。以下ＣＡＳＴ関数について説明しないが、この関数を組み込むのは容易である。
【００３５】
図１４及び図１５は、上記のステップに従って問合せ文を書き替えた例を示す。図１４は、図２に示すデータベースについてマスク付きビューＩＮＰＴ＿ＦＡＣＴを生成するためのマスク付きビュー定義の例を図式的に示すものである。
【００３６】
図１５（ａ）に例示される従来の問合せ文がプロセス１によって翻訳され、図１５（ｂ）に示す解釈済問合せ文を生成する。このようにして図１４のマスク付きビュー定義によって、マスクコラム（ｍｃ）は、ＭＤ＿ＩＤ１３０１、ＰＴ＿ＩＤ１３０３及びＶＳＴ１３０５である。この例では各マスクコラム値（ｍｖ）はすべてヌルである。マスク述部は、ＭＤ＿ＩＤ＝ｕｓｅｒ−ｉｄである。対応するＣＡＳＥ文１３０２〜１３０６が図１５（ｂ）の書き替えられた問合せ文中に示されている。
【００３７】
上記アルゴリズムの利点は、既存のビュー機能の拡張として容易に実装できることである。しかし次の事項を考慮しなければならない。
・マスクコラムについての選択条件
・グループキー又は集計機能についてのマスクコラム
・外部コラム参照をもつマスク条件
・副問合せについての問合せ文書き替えアルゴリズム
各事項がそれぞれ課題である。以下のセクションで各事項について詳述する。
Ａ．マスクコラムについての選択条件
以下、図１６及び図１７を参照して、マスクコラムについての選択条件の制限を示す。選択条件によっては秘匿データに対する非公認のアクセスを許すことになる、すなわちマスクを破壊するので妥協が必要である。マスク破壊のおそれのある２種類の選択条件を考慮すべきである。１つは単一リレーションについての条件である。他の選択条件は、多重リレーションについての選択条件である。以下これらの条件をそれぞれ「選択条件」、「ジョイン条件」と呼ぶことにする。
【００３８】
マスク破壊を防ぐために、マスクコラムについての選択条件を禁止する。ユーザは、マスクコラムに選択条件を加えることによって容易に不可視データを取得することができる。例えばＭＤ＿ＩＤが３３３３の医師は、ＥＲＩＳの診察をしたわけではないのでその個人データにアクセスすべきでない（図１のＩＮＰＴ＿ＢＡＳＥテーブル１００参照）。例えば医師Ｘが図１６（ａ）に示すようにＷＨＥＲＥタイプの選択条件１４０２を含むＳＱＬ文を発行したとする。このＳＱＬ文は、図１４のビュー定義に従ってプロセス１を介して解釈され、図１６（ｂ）に示すように図１６（ａ）の元の問合せ文による選択条件を含む問合せ文を生成する。この結果、医師Ｘは図１６（ｃ）に示す結果を得ることになり、マスクによって隠蔽すべきであるマスクコラムＰ＿ＮＭの値がＥＲＩＳであると露見してしまう。
【００３９】
本発明により上記のマスク破壊を防ぐために、もしマスクコラムに関する選択条件があれば、マスクコラム述部をＣＡＳＥ表現に翻訳せず、マスク条件述部と選択条件とをアンド結合する。このようにして次の処理が生じる：
プロセス２
選択条件Ｃがマスク述部がｍｐであるマスクコラムｍｃに関する条件を含んでいる場合には、書き替え後の問合せ文ＱＲ（σC（Ｒ））はσCandmp（Ｒ）となる。
【００４０】
プロセス２を適用することによって、図１６（ａ）に示す元のＳＱＬ文は、図１７のＳＱＬ文に翻訳される。この場合ではいずれのロウも選択されず、ＥＲＩＳの名前が保護される。図１７に示すようにマスク条件（述部）と選択条件１４０２‘とがアンド結合１５０４される。
【００４１】
ＧＲＯＵＰ  ＢＹ操作とともに使用されるＨＡＶＩＮＧ条件は、選択条件として扱われる。すなわちもしＧＲＯＵＰ  ＢＹ操作で使われる少なくとも１つのマスクコラムについてＨＡＶＩＮＧ条件があれば、マスク条件述部が選択条件にアンド結合される。同様にもしＯＲＤＥＲ  ＢＹ節にマスクコラムがあれば、マスク条件述部が選択条件に加えられる。何故ならばユーザは、試行錯誤によって近隣のマスクされないロウの値からマスクコラムの値を推測できるからである。
【００４２】
マスク付きビューによって定義される元々のビューは、もしそのビューに何らかの条件又は集計を適用しないなら「推測の余地なし」とみなす。リレーションＲは、もしＲ中のマスクコラムの元々の値がマスクされないコラム値又はマスクコラムのマスク値から推測できなければ、「推測の余地なし」である。こうしてＰＴ＿ＩＤ及びＰ＿ＮＭの値（図１参照）は、ＡＧＥ、ＳＥＸ、ＤＲＧのような他のコラム値又は図１４のビュー定義の場合のようにヌルのマスク値から推測できない。次の定理と証明が示すように、上記の選択条件に対する問合せ文書き替えの記号表現は、「推測の余地なし」の特性を保持する。
【００４３】
定理：選択条件に対するｉｎｆｅｒｅｎｃｅ−ｆｒｅｅの保存
もしリレーションＲがｉｎｆｅｒｅｎｃｅ  ｆｒｅｅであれば、ＱＲ（σC（Ｒ））もｉｎｆｅｒｅｎｃｅ  ｆｒｅｅである。ここでＣはＲに関する選択条件であり、ＱＲ（）はマスク付きビューに対する問合せ文書き替え関数である。
【００４４】
証明：もしマスク条件述部がｍｐであるマスクコラムｍｃの元の値を推測できるならば、選択条件Ｃはマスクコラムについての条件を含まねばならない。リレーションＲがｉｎｆｅｒｅｎｃｅ  ｆｒｅｅであるから、ユーザはマスクされないコラムの値をすべて見ることができたとしてもマスクコラムの元の値を推測できない。一方選択条件Ｃがマスクコラムｍｃについての条件を含むならば、ＱＲ（σC（Ｒ））はσCandmp（Ｒ）と翻訳される。そしてその結果は、マスクコラムｍｃが不可視であるようなロウを何も含まない。それ故にユーザは、問合せの結果から元のマスクコラム値を推測することができない。
【００４５】
マスクコラムについての選択条件のデフォールト表現をプロセス２を介して制限したとしても、ユーザはｐｒｅｄ＿ｃｏｎｓｔ節でＷＨＥＲＥ  ＰＲＥＤ  ＡＬＬを定義できる。もしマスクコラムについてＷＨＥＲＥ  ＰＲＥＤ  ＡＬＬが定義されると、問合せ文翻訳部はそのコラムをプロセス１に従って書き替える。これを許可すると「推測の余地なし」の特徴を失わせることになるが、それはビュー設計者の責任である。
【００４６】
もう１つのマスク破壊は、ジョイン条件を使用することによって生じ得る。ジョイン条件は、一種の選択条件である。従ってそれは他の選択条件と同じように処理されるべきである。もしユーザが何の制限もなくジョイン条件を使うことができるなら、次のようにしてマスクを破壊できる。最初にＰ＿ＮＭのコラムを含む一時テーブルＴＭＰ１６０２を生成する。患者のＥＲＩＳが対象であるとすると、ユーザはＴＭＰテーブルのＰ＿ＮＭのコラムにＥＲＩＳの値を入力するだろう。図１６（ａ）のＳＱＬ文は図１８に示すＳＱＬ文１６１０に書き替えられる。ＳＱＬ文１６１０は、Ｐ＿ＮＭコラムをジョインキーとして使用するジョイン操作を含んでいる。ＥＲＩＳはＴＭＰテーブルと図１４のＩＮＰＴ＿ＦＡＣＴビューに共通であるから、それによって図１６（ｃ）に示されるような結果が得られる。従って、本発明によれば、選択条件がＪＯＩＮ操作を含むならば、さらにその選択は、書き替えの間プロセス２を介して制限される。
【００４７】
しかしながら事実テーブルとマスクコラムを伴う参照テーブルとを結合する必要が生じる場合がある。図１９を参照し、例えばＭＤ＿ＦＡＣＴビュー１７０２は、ＭＤ＿ＩＤ、Ｐ＿ＮＭおよびＤＥＰＴ（部門）の各コラムをもつものとする。図１９は、ＭＤ＿ＦＡＣＴビューとそのビュー定義１７０４を示す。ＤＥＰＴのコラムはマスクコラムでないから、ユーザは各部門ごとの合計コストを得ることができる。図２０（ａ）及び（ｂ）は、ユーザが実行したいＳＱＬ文であり、所望の結果である。しかしＩＮＰＴ＿ＦＡＣＴとＭＤ＿ＦＡＣＴとのジョイン条件を制限すると、ＭＤ＿ＩＤ＝３３３３のユーザは図２０（ｃ）に示すように異なる結果を得ることになる。
【００４８】
この問題を解決するために、ユーザがマスクコラムに対してジョイン許可を宣言できるように、本発明によるマスク付きビューは、ｊｏｉｎ＿ｐｒｍｔ節（図１３の１１１３）を備えている。ジョイン条件表現中のすべてのマスクコラムがその表現中の他のすべてのコラムについてジョイン許可をもつならば（ただし同じビュー又はテーブル中のコラム間を除く）、ジョイン条件が許可される。例えば図２１は、ジョイン許可節１９１３ａ及び１９１３ｂをそれぞれ有するＩＮＰＴ＿ＦＡＣＴ１９０２とＭＤ＿ＦＡＣＴ１９０４についてのマスク付きビュー定義を示す。これらの節によって、ＭＤ＿ＩＤをジョインキーとするＭＤ＿ＦＡＣＴとＩＮＰＴ＿ＦＡＣＴとの間のＪＯＩＮ操作の実行が許される。
【００４９】
もしマスク付きビューＩＮＰＴ＿ＦＡＣＴ１９０２についてのビュー定義が最初に定義されると、マスク付きビューＭＤ＿ＦＡＣＴ１９０４の定義がまだ宣言されていないので、コンパイラ・エラーが生じる。データベースシステムは、まだ定義されていないビューを参照することにより誤りとされたビュー定義の再コンパイル機能を備えなければならない。またビューの設計者は、ジョインキーｊｋについてリレーションＲ1とＲ2との間のジョイン許可を与えるならば、リレーションＲj：
ＲJ＝ＪＯＩＮjk（Ｒ1，Ｒ2）
について推測不可を保持する責任がある。
Ｂ．グループキー又は集計機能についてのマスクコラム
図２２（ａ）及び（ｂ）を参照して集計をもつ問合せ文によってマスクが破壊される様子を示す。次の２つの場合について考慮すべきである。（１）マスクコラムをグループキーとして実行するＧＲＯＵＰ  ＢＹ操作、および（２）合計、平均値、最小値／最大値などマスクコラムについての集計機能。マスク破壊を防ぐためにマスクコラムをグループキーとして使うための制限が必要である。またマスクコラムについての集計機能については、統計用データベースで提案されている制約をベースとする技法を適用する。
【００５０】
マスクコラムをグループキーとして使うＧＲＯＵＰ  ＢＹ操作によって異なるグループキー値を与えることができる。例えばＭＤ＿ＩＤが３３３３の医師が図２２（ａ）の問合せ文を発行した場合、ＰＴ＿ＩＤをマスク述部とするとＡＲＥＮのデータについて異なる値を返す。医師はその患者の最初の来院時のＰＴ＿ＩＤをみることができるが、２回目の来院時のＰＴ＿ＩＤをみることができない。このような場合、このグループに対してグループキー値としてマスク値を返せばよいようにみえる。しかしながらこのグループに対してマスク値を返すとしても、ユーザは図２２（ｂ）の問合せ文を発行することによってＡＲＥＮの２回目の来院について容易にマスクを破壊することができる。ＡＲＥＮの最初の来院時にはＰＹＭＴが１２００のデータしかないから、ＴＯＴ＿ＰＹＭＴ（支払合計）が１２００のグループキー値として元のＳＱＬ文より小さい値が決定される。従ってユーザはＰＹＭＴが５００である第３ロウがＡＲＥＮのデータであるとわかる。
【００５１】
データが数多くあるとしても、ユーザは同様の攻撃法を用いてＧＲＯＵＰ  ＢＹ操作ごとにロウを色分けできる。従ってもしグループがキーとしてマスクコラムを含みかつそのグループにそのマスクコラムが見えるようなロウが１つでもあれば、そのグループ中の他のロウのマスクコラムも見える。そこでグループキーについてマスクコラムをもつ問合せ文を書き替えるに際して次の手続きが用いられる。
【００５２】
プロセス３
マスク述部ｍｐが機能的にグループキーの集合に依存していなければ、問合せ文Ｇ{g1togn}（Ｒ）は、Ｇ{g1togn}（σmp（Ｒ））に翻訳される。ここでＧ{g1togn}（Ｒ）は、｛ｇ１，…，ｇｎ｝をグループキーとして用いるＲに関するＧＲＯＵＰ  ＢＹ操作を意味する。ｍｐが機能的にグループキーに依存していれば、マスクコラムｍｃはプロセス１に従って翻訳される。
【００５３】
マスク述部ｍｐが機能的に依存しているか否かは、参照される変数がすべてグループキーの集合によってカバーされるか否かをチェックすることによって判定される。上記例の場合には、ＰＴ＿ＩＤに対するマスク述部の変数はＭＤ＿ＩＤであり、従ってマスク述部はＰＴ＿ＩＤのグループコラムには機能的に依存していない。
【００５４】
上記で「色分けによる推測の余地なし」の術語を導入した。この術語は次のように定義される。もしリレーションＲが推測の余地なしであり、Ｒが次のようなＧＣによってグループ化されてもＲ中のマスクコラムの元の値を推測できないならば、Ｒは色分けによる推測の余地なしである：
ＧＣ＝｛ｇ1toｇn｜ｇiはマスクコラムでないかまたはｇiはマスクコラムであってそのマスク述部は機能的に｛ｇ1toｇn｝｝。
【００５５】
この定義は、ユーザはグループに属するロウに基づいてグループキー値を推測できないということを意味する。例えばＭＤ＿ＩＤが２２２２である医師は、他の医師のＭＤ＿ＩＤを見ることができないが、図２の最初のロウと最後のロウは同じＭＤ＿ＩＤをもつことを知ることができる。色分けによる推測の余地なしの特性によって、上記の例で言えば医師が他の医師のＭＤ＿ＩＤの値を推測できないことが保証される（例えば医師（ＭＤ＿ＩＤ＝２２２２）は、図２の第１ロウ、第２ロウおよび最終ロウのＭＤ＿ＩＤを推測できない）。次の定理は、本発明に従って処理をすればＧＲＯＵＰ  ＢＹ操作に対して色分けによる推測の余地なしの特徴が保持されることを述べている。
【００５６】
定理：ＧＲＯＵＰ  ＢＹ操作に対する色分けによる推測の余地なしの保存
もしリレーションＲが色分けによる推測の余地なしであれば、ＱＲ（Ｇ{g1togn}（Ｒ））もまた色分けによる推測の余地なしである。ここで｛ｇ１，…，ｇｎ｝はＲについてのグループキーの集合であり、ＱＲ（）はマスク付きビューに対する問合せ文書き替え関数である。
【００５７】
証明：もし｛ｇ１，…，ｇｎ｝がそのマスク述部がｍｐであるようなマスクコラムｇｉを含むならば、元の問合せ文Ｇ{g1togn}（Ｒ）はＧ{g1togn}（σmp（Ｒ））に翻訳される。σmp（Ｒ）によってｇiコラムがマスクされるようなすべてのロウが除去されるので、マスクコラムｇiはもはやマスクコラムとならない。それ故にＧ{g1togn}（σmp（Ｒ））は色分けによる推測の余地なしの特性を保持する。
【００５８】
プロセス３にはマスクコラムをグループキーとして用いるためのデフォールト規則が記述されているが、ユーザはｇｋｅｙ−ｃｏｎｓｔ節でＧＲＯＵＰ  ＢＹを定義できる（図１３の１１０９）。マスクコラムについてＧＲＯＵＰ  ＢＹが定義されると、プロセス３の代わりに次のプロセス４の問合せ文書き替えが適用される。なおプロセス４の問合せ文書き替えによってマスク破壊が生じることがあるが、これを避けることは、ビュー設計者の責任範囲となる。
【００５９】
プロセス４
そのマスク記述部がｍｐでそのマスク値がｍｖであるマスクコラムを次のＣＡＳＥ文で置き換えよ：
（ＣＡＳＥ  ＷＨＥＮ  ＣＯＵＮＴ（*）＝
ＣＯＵＮＴ（ＣＡＳＥ  ＷＨＥＮ  ｍｐ  ＴＨＥＮ  １  ＥＬＳＥ  ＮＵＬＬ  ＥＮＤ）ＴＨＥＮ  ｍｃ  ＥＬＳＥ  ｍｖ）［ｍｃ］
図２３（ａ）の問合せ文は、マスク述部が機能的にグループキー、ＭＤ＿ＩＤに依存しているから、図２３（ｂ）の問合せ文に翻訳される。図２３（ｃ）の問合せ文は、マスク述部が機能的にＰＴ＿ＩＤに依存していないから図２３（ｄ）の問合せ文に翻訳される。
【００６０】
統計用データベースについての制約をベースとするアクセス制御と同様にマスク付きビューは、ＳＵＭ，ＡＶＧ，ＭＡＸ，ＭＩＮ，ＣＯＵＮＴのような集計関数に対するアクセス制御をもつ。集計関数に対するアクセス制御規則は、ソース・データセットの条件に基づいて定義される。例えばソース・データセットの母集団が１以上でないなら、集計関数の結果はマスクされるべきである。集計関数についてのアクセス制御規則を記述するために、ａｇｇｒ＿ｃｏｎｓｔ節（図１３の１１１１）を用いる集計マスク条件を提案する。図２４は、ＡＧＥについて集計マスク条件をもつビュー定義の例を示す。その条件は、グループ内のロウの数が１以上でなければ集計結果をヌル値で置き換えることを意味する。
【００６１】
なお集計上の制約は、統計用データベースシステムに対する制約ベースのアクセス制御と同じレベルのセキュリティ保護を提供する。従ってユーザは、Ｃｈｉｎ，Ｆ．Ｙ．著の“Ｓｅｃｕｒｉｔｙ  ｉｎ  Ｓｔａｔｉｓｔｉｃａｌ  Ｄａｔａｂａｓｅｓ  ｆｏｒ  Ｑｕｅｒｉｅｓ  ｗｉｔｈ  Ｓｍａｌｌ  Ｃｏｕｎｔｓ），ＡＣＭトランザクション・データベース・システム，３，Ｉ（１９７８年３月）、ページ９２〜１０４などで論じられている技術を用いてマスクされた値を解くことができる。
【００６２】
なおもしユーザがグループ中のＡＧＥ値をすべて見ることができるなら、そのグループ中のロウの数が１を越えなくとも真の集計結果を取得することができる。例えばＭＤ＿ＩＤが２２２２のユーザは、図２５（ｂ）に示す問合せ文を発行すれば図２５（ｃ）に示す結果を取得する。ＭＤ＿ＩＤ＝３３３３のグループのデータ数は２であるので、このグループについてのＡＶＧ（ＡＧＥ）が見える（所望結果の最初のロウ参照）。他のグループは１以上のデータをもたないのであるから、ＡＶＧ（ＡＧＥ）はマスクされるべきである。しかしＭＤ＿ＩＤが２２２２である医師は、ＡＲＥＮの最初の来院時のデータをみることができる。何故ならＭＤ＿ＩＤが２２２２である医師のグループに対するＡＶＧ（ＡＧＥ）も見えるからである。結論として、次の場合に集計関数の結果が見える。（i）ソースのデータセットが集計のマスク条件を満足する場合、または（ii）グループ中のすべての値が見える場合。マスクコラムに対して集計結果の真の値を返すのを避けるためには、集計のマスク条件のデフォールトは偽であることに注意されたい。
【００６３】
プロセス５は、集計関数に対する問合せ文書き替え方法を示す。ＷＨＥＮ節の条件として集計マスク条件が使われるとともに、コラムマスク条件もロウのすべてがマスク条件を満足するか否かチェックするために使われる。
【００６４】
プロセス５
（１）マスクコラムｍｃに関する各集計関数ｆｎ（）に対して、そのマスク値をｍｖ、その集計マスク条件述部をａｐ、マスク条件述部をｍｐとするとき、（２）を適用する。（２）各集計ｆｎ（ｍｃ）を次のＣＡＳＥ表現で置き換えよ：
（ＣＡＳＥ  ＷＨＥＮ  ａｐ  ＯＲ  ＣＯＵＮＴ（*）＝
ＣＯＵＮＴ（ＣＡＳＥ  ＷＨＥＮ  ｍｐ  ＴＨＥＮ  １  ＥＬＳＥ  ＮＵＬＬ  ＥＮＤ）  ＴＨＥＮ  ｆｎ（ｍｃ）  ＥＬＳＥ  ｍｖ  ＥＮＤ）
図２６は、図２５（ｂ）のＳＱＬ文をプロセス５によって翻訳したＳＱＬ文を示し、その結果は図２５（ｃ）に示すものとなる。
Ｃ．外部コラム参照をもつ条件
図２５（ａ）に示すビューＩＮＰＴ＿ＦＡＣＴは、Ｐ＿ＮＭ、ＳＥＸのような冗長な患者情報を含んでいるので、正規化されていない。ユーザは、通常図２７に示すようにＰＴ＿ＦＡＣＴビュー２５０２と別のＩＮＰＴ＿ＦＡＣＴビュー２５０４をもつビューを設計する。また図示しない正規化されたベーステーブル、ＰＴ＿ＢＡＳＥとＩＮＰＴ＿ＢＡＳＥがあるものとしよう。
【００６５】
図２４に示す上記ビューと同じセル・レベルのアクセス制御を強制するためには、ＰＴ＿ＦＡＣＴビュー２５０２はＩＮＰＴ＿ＦＡＣＴビュー２５０４のＭＤ＿ＩＤコラムを参照する必要がある。ＰＴ＿ＩＤとＰ＿ＮＭコラムは、患者の来院ごとに決まるＭＤ＿ＩＤに基づいてマスクされるから、ＰＴ＿ＦＡＣＴビューのＰＴ＿ＩＤのみに基づいてコラムがマスクされるか否か決定することができない。ＩＮＰＴ＿ＦＡＣＴビューの最初のロウに対するＰ＿ＮＭは、ＭＤ＿ＩＤが３３３３の医師には見えるが、ＭＤ＿ＩＤが２２２２の医師には、たとえＡＲＥＮの２回目の診察を担当したとしても見えない。
【００６６】
本発明は、この問題を解決するために外部コラム参照の概念を導入する。図２８は、図２７のビューに対するビュー定義を示す。マスク条件述部であるＲＥＦ（ＰＴ＿ＩＤ）．ＭＤ＿ＩＤ＝ｕｓｅｒ−ｉｄは外部コラム参照を使用する。ＲＥＦ（ＰＴ＿ＩＤ）は、ジョインキー、ＰＴ＿ＩＤについてのジョイン条件をもつテーブル又はビューによって置き換えられる。図２９は、外部コラム参照についてのシンタックス図を示す。外部のテーブル又はビューは、ジョインキーを表す一連のパラメータ２７０４をもつＲＥＦ（）表現２７０２によって特定される。ＲＥＦ（）表現に続くコラムは、マスク条件が参照するコラムを表す。
【００６７】
外部コラム参照は、問合せ文書き替えの間に何の障害もなく単一のテーブル又はビューに統合されるべきである。この統合が失敗するケースが２つある：
（１）該当するテーブル又はビューがない場合
（２）複数のテーブル又はビューが該当する場合
これらの場合には、外部コラム参照を含む述部は偽で置き換えられる。これは、マスク条件述部が直ちにＦＡＬＳＥを返すことを意味するのではない。例えばもし述部が他の述部とオア結合されていれば真を返す。
【００６８】
図３０は、外部コラム参照についての統合が成功するケースを示す。元のＳＱＬ文中のｂ．Ｐ＿ＮＭがＲＥＦ（ｂ．ＰＴ＿ＩＤ）．ＭＤ＿ＩＤを含むＣＡＳＥ表現に翻訳される。外部参照識別子ＲＥＦ（ｂ．ＰＴ＿ＩＤ）によって、ジョインキー、ｂ．ＰＴ＿ＩＤをもつジョイン条件が検索され、対象とするリレーションａが見つけられる。この結果としてＲＥＦ（ｂ．ＰＴ＿ＩＤ）．ＭＤ＿ＩＤは、ａ．ＭＤ＿ＩＤで置き換えられる。
【００６９】
統合が失敗する２つのケースを図３１と図３２に示す。図３１に示す第１のケースでは、元の問合せ文がジョイン条件を何も含んでいないので、ＲＥＦ（ＰＴ＿ＩＤ）に該当するリレーションはない。従って述部のＲＥＦ（ＰＴ＿ＩＤ）．ＭＤ＿ＩＤ＝ｕｓｅｒ−ｉｄは偽で置き換えられ、翻訳されたＳＱＬ文を実行するとＰ＿ＮＭは何も見えないという結果となる。図３２に示す第２のケースでは、外部参照表現は２つの統合候補ｂとｃを含んでいる。従って述部は偽で置き換えられ、その結果としてＰ＿ＮＭ値は何も返されない。
【００７０】
上記問合せ文翻訳ポリシーによって、同一の医師が１回目と２回目の診察をしたとしてもＰ＿ＮＭにアクセスすることが許されない。このような場合にＰ＿ＮＭへのアクセスを許す場合には、元のＳＱＬ文は図２３のように翻訳されなければならない。この場合、問合せ文翻訳部は外部コラム参照に障害ありと知り、述部を重複して生成し、それらをアンド結合する。
Ｄ．副問合せについての問合せ文書き替えアルゴリズム
問合せ文は副問合せを含むことができる。副問合せをもつ問合せ文にマスク付きビューを適用する方法は２つある。
（１）問合せの最終結果にマスクを適用する。
（２）各副問合せにマスクを適用する。
【００７１】
第１の方法を適用するためには、マスクコラムと集計関数についての選択条件をチェックするためにすべての副問合せを展開しなければならない。しかしエンドユーザにとって問合せ文を展開した結果を予測するのは困難であり、そのためユーザは所望の結果とは異なるものを得るかも知れない。従って問合せ文表現をできるだけ単純なものとするために第２の方法が選択される。例えばＩＮＰＴ＿ＦＡＣＴ．ＰＴ．ＩＤに対するマスクが図３４（ａ）の問合せ文の副問合せに適用されるため、副問合せは次のＰＴ＿ＩＤ値を返す：ＩＮＰＴ＿ＦＡＣＴの第１ロウについてＰＴ＿ＩＤ＝１２３４５、およびＩＮＰＴ＿ＦＡＣＴの第２ロウと第３ロウについてＰＴ＿ＩＤ＝ＮＵＬＬ（第４ロウは、ＤＲＧ  ＢＥＴＷＥＥＮ１２０  ＡＮＤ  １２９の条件によって除外される）。主部のＳＥＬＥＣＴ節中のＩＮ述部は、ＰＴ＿ＩＤをキーとして用いるＰＴ＿ＦＡＣＴとＩＮＰＴ＿ＦＡＣＴとの間のジョイン条件と認識されるので、問合せは図３４（ｂ）に示す結果を返す。
【００７２】
図３４（ｃ）は、副問合せを含まない同様の問合せ文を示す。ＰＴ＿ＩＤはこの問合せ文中の唯一のマスクコラムであるので、それがＰＴ＿ＦＡＣＴとＩＮＰＴ＿ＦＡＣＴをジョインするために使用されてビュー定義で許可され、この問合せ文の実行結果は図３４（ｄ）に示すものとなる。
【００７３】
プロセス６は、マスク付きビューについての問合せ文書き替えアルゴリズムであり、上記議論をすべて含むものである。
【００７４】
プロセス６
（１）各ＳＥＬＥＣＴ節について（２）〜（１５）を実行せよ；
（２）マスクコラムについての各選択述部に対して（３）〜（８）を実行せよ；ＯＲＤＥＲ  ＢＹとＨＡＶＩＮＧ節を一種の選択述部として扱うこと；
（３）述部がマスクコラムを含まないなら、次の述部をチェックせよ；
（４）述部中の各マスクコラムについて、（５）〜（７）を実行する；
（５）述部中にＷＨＥＲＥ  ＰＲＥＤ  ＡＬＬを許すならば、次のコラムをチェックせよ；
（６）述部中に他のコラムがあり、かつマスクコラムが述部中の他のすべてのコラムとジョインすることを許すならば、次のコラムをチェックせよ；
（７）さもなくばマスク述部ｍｐをフィルタリング条件として加え、かつ次のコラムをチェックせよ；
（８）次の述部をチェックせよ；
（９）グループキー中のグループ・コラムｇｃについて、（１０）〜（１２）を実行せよ；
（１０）ｇｃがマスクコラムでないか、またはマスク述部が機能的にグループキーに依存するのであれば、次のコラムをチェックせよ；
（１１）ｇｃがＧＲＯＵＰ  ＫＥＹをもつことを許さないなら、プロセス３を適用せよ；さもなくばプロセス４を適用せよ；
（１２）次のグループコラムをチェックせよ；
（１３）各マスクコラムについてプロセス１を適用せよ；
（１４）マスクコラムｍｃについての各集計関数ｆｎ（）について、プロセス５を適用せよ；
（１５）マスク条件中のすべての外部コラム参照について、これらの参照を統合せよ；統合に失敗した場合、外部コラム参照を含む述部表現を偽に置き換えよ。
【００７５】
上記方法は、通常コンピュータシステム上で実現される。例えば図３５のブロック図に例示されるように、中央処理装置とシステムメモリを有するコンピュータサブシステム３３０２上にデータベースシステム３３００が設けられる。大容量記憶サブシステム３３０４は、データベースを構成するデータを格納する記憶装置である。コンピュータサブシステムには、データベース・ソフトウェア・サブシステム３３０６がシステムのハードウェア機構にアクセスして必要なデータベース機能を提供できるようなオペレーティング環境（通常オペレーティングシステムと呼ばれる）が設けられる。ユーザ３３２０は、数多くの公知の通信経路のうちのいずれかを介して直接接続又は遠隔アクセスによりデータベースシステムと対話する。
【００７６】
本発明により、上記の問合せ文書き替え（翻訳）機能を実行しユーザが指定するマスク付きビューの定義に従って結果を出力するような問合せ文を生成する追加のソフトウェア３３０８が設けられる。本発明の他の実施例では、既存のデータベース・ソフトウェア・サブシステム３３０６がマスク付きビュー定義のマスク条件に従った結果を生成するように、その問合せ結果の後処理をするソフトウェア・コンポーネントとともに修正される。
【００７７】
図３５のブロック図は、極度に単純化された構成図であり、現在のデータベースシステムを構成する各種ハードウェア及びソフトウェアを図式的に示すものであり、本発明の開示に直接関係しない個々の実装上の詳細を省略している。本技術分野の通常の技術を有する者であれば、本発明を実施するために必要な詳細部分を実装することができる。
【００７８】
以上本発明についての具体的な実施例を説明したが、各種の修正、変更、代替の構成及びこれらに等価なものもまた本発明の範囲に含まれる。本発明は具体的なデータ処理環境内の処理動作に限られるものではなく、複数のデータ処理環境内で動作させることに制約はない。具体的な実施例により本発明を説明したが、本発明の範囲が個々の実施例に限定されるものでないことは、この分野の技術を有する者にとって明らかである。
【００７９】
従って明細書及び図面は、限定的な意味ではなく説明目的という意味をもつものとみなされるべきである。特許請求の範囲に提示されるような本発明の広い思想と範囲を逸脱することなく、追加、削除、置き換え及び他の変更を行い得ることは明らかである。
【００８０】
【発明の効果】
本発明によれば、アクセス・ポリシーに基づいてきめが細かく柔軟なセルレベルのデータアクセス制御方法を提供できる。
【図面の簡単な説明】
【図１】病院関係データのデータ構成例を示す図である。
【図２】図１に示すデータを各医師向けに分類したデータ例を示す図である。
【図３】図２のビューを生成するビュー定義を示す図である。
【図４】集計を有するＳＱＬ文を示す図である。
【図５】従来のビュー定義により定義されたビューについて集計の問合せ結果を示す図である。
【図６】集計に関する従来のビュー定義を示す図である。
【図７】本発明によるビュー定義の例を示す図である。
【図８】従来のビュー定義によって生成されるビューを説明する図である。
【図９】本発明のビュー定義によって生成されるビューを説明する図である。
【図１０】本発明により生成される翻訳されたＳＱＬ文の例を示す図である。
【図１１】本発明をミドルウェアとして実装する実施例を示す図である。
【図１２】本発明をミドルウェアとして実装する実施例を示す図（続き）である。
【図１３】シンタックス図によってマスク付きビューを説明する図である。
【図１４】本発明によるマスク付きビューの例を説明する図である。
【図１５】プロセス１による翻訳プロセス結果を説明する図である。
【図１６】選択条件によってマスク破壊を起こす例を説明する図である。
【図１７】プロセス２により図１６の条件が避けられる例を示す図である。
【図１８】マスク破壊を起こし得るジョイン操作を含む選択条件を説明する図である。
【図１９】ＪＯＩＮ操作を使用する必要が生じる状況を示す図である。
【図２０】ＪＯＩＮ操作を使用する必要が生じる状況を示す図（続き）である。
【図２１】ＪＯＩＮ操作についてジョイン許可を使用する例を示す図である。
【図２２】ＧＲＯＵＰ  ＢＹマスクコラムを説明する図である。
【図２３】集計用のマスク条件をもつビュー定義の翻訳を説明する図である。
【図２４】集計用のマスク条件をもつビュー定義の例を示す図である。
【図２５】マスク付きビューに関し集計の例を示す図である。
【図２６】プロセス５に従う図２５のＳＱＬ文を翻訳した結果を示す図である。
【図２７】図２５（ａ）のテーブルを正規化したビューを示す図である。
【図２８】外部コラム参照のあるビュー定義を説明する図である。
【図２９】外部コラム参照のシンタックス図を示す図である。
【図３０】外部コラム参照の統合に成功する例を示す図である。
【図３１】外部コラム参照の統合に失敗する例を示す図である。
【図３２】外部コラム参照の統合に失敗する例を示す図（続き）である。
【図３３】外部コラム参照に対する他の記号表現を説明する図である。
【図３４】副問合せを有する問合せ文を説明する図である。
【図３５】本発明によるデータベースシステムの構成例を示す図である。
【符号の説明】
７００：ビュー定義、７０２：マスク節、７０４：マスクコラム宣言節、７０６：マスク条件節、７１１：コラム名のリスト、７１３：マスク値、８１２：アクセス可能オブジェクト、８１４：可視オブジェクト、８１６：マスクされるオブジェクト
【図１】
0004199946.tif 000002
【図２】
0004199946.tif 000003
【図３】
0004199946.tif 000004
【図４】
0004199946.tif 000005
【図５】
0004199946.tif 000006
【図６】
0004199946.tif 000007
【図７】
0004199946.tif 000008
【図８】
0004199946.tif 000009
【図９】
0004199946.tif 000010
【図１０】
0004199946.tif 000011
【図１１】
0004199946.tif 000012
【図１２】
0004199946.tif 000013
【図１３】
0004199946.tif 000014
【図１４】
0004199946.tif 000015
【図１５】
0004199946.tif 000016
【図１６】
0004199946.tif 000017
【図１７】
0004199946.tif 000018
【図１８】
0004199946.tif 000019
【図１９】
0004199946.tif 000020
【図２０】
0004199946.tif 000021
【図２１】
0004199946.tif 000022
【図２２】
0004199946.tif 000023
【図２３】
0004199946.tif 000024
【図２４】
0004199946.tif 000025
【図２５】
0004199946.tif 000026
【図２６】
0004199946.tif 000027
【図２７】
0004199946.tif 000028
【図２８】
0004199946.tif 000029
【図２９】
0004199946.tif 000030
【図３０】
0004199946.tif 000031
【図３１】
0004199946.tif 000032
【図３２】
0004199946.tif 000033
【図３３】
0004199946.tif 000034
【図３４】
0004199946.tif 000035
【図３５】
0004199946.tif 000036