(57)【要約】属性関連アクセス制御ポリシーのための方法および装置が提供される。一実施例によると、データベースオブジェクトのどの属性が照会文で参照されるかに基づいて照会文を変更すべきか否かの決定が行なわれる。さらに、照会文が制限されるデータベースオブジェクトの１つまたは複数の属性を参照する場合、照会文は属性制限メタデータに基づいて変更され得る。別の実施例によると、ユーザは、データがユーザに返される前にデータをマスキングすることによって、制限される属性からのデータにアクセスすることを制限される。さらに別の実施例によると、制限される属性からの或るデータはそれがユーザに返される前にマスクされ、制限される属性からの他のデータは変更なしに返され得る。
2006513499.tif 000002
【特許請求の範囲】
【請求項１】
データベースコマンドを実行するための方法であって、コンピュータによって実現される以下のステップを含み、前記以下のステップは、
データベースオブジェクトの属性の集合を参照するデータベースコマンドを受取るステップと、
前記データベースコマンドで前記属性の集合のどの属性が参照されるかを決定するステップと、
属性のどれが参照されるかに基づいて、前記データベースコマンドを実行する前に前記データベースコマンドを変更すべきか否かを決定するステップとを含む、方法。
【請求項２】
前記データベースコマンドを変更すべきか否かを決定する前記ステップは、前記データベースコマンドが制限される属性を参照するか否かを決定するステップを含む、請求項１に記載の方法。
【請求項３】
前記データベースコマンドを変更すべきか否かを決定する前記ステップは、前記データベースコマンド内で、前記制限される属性がどこで参照されるかに基づいて前記データベースコマンドを変更すべきか否かを決定するステップを含む、請求項２に記載の方法。
【請求項４】
前記データベースコマンドを変更すべきか否かを決定する前記ステップは、前記制限される属性が前記データベースコマンドの選択リストにあるか否かに基づいて前記データベースコマンドを変更すべきか否かを決定するステップをさらに含む、請求項２に記載の方法。
【請求項５】
前記データベースコマンドを変更すべきか否かを決定する前記ステップは、前記制限される属性が前記データベースコマンドのフィルタリストにあるか否かに基づいて前記データベースコマンドを変更すべきか否かを決定するステップをさらに含む、請求項２に記載の方法。
【請求項６】
前記データベースコマンドを変更すべきか否かを決定することに応答して、前記データベースコマンドを変更するステップをさらに含む、請求項１に記載の方法。
【請求項７】
前記データベースコマンドを変更する前記ステップは、属性制限メタデータに基づいて前記データベースコマンドに１つまたは複数の述語を付加するステップをさらに含む、請求項６に記載の方法。
【請求項８】
前記属性の集合のどの属性が制限されるかを示すデータを受取るステップをさらに含む、請求項１に記載の方法。
【請求項９】
前記データを受取る前記ステップは、アプリケーションプログラムインターフェイス（ＡＰＩ）を使用して前記データを受取るステップをさらに含む、請求項８に記載の方法。
【請求項１０】
前記データベースコマンドを変更すべきか否かを決定する前記ステップは、１つまたは複数の制限される属性を１つまたは複数の参照される属性と比較して前記１つまたは複数の参照される属性のどれが制限されるかを決定するステップを含む、請求項１に記載の方法。
【請求項１１】
前記データベースオブジェクトはテーブルであり、前記データベースオブジェクトの属性は前記テーブル内の列である、請求項１に記載の方法。
【請求項１２】
データベースコマンドを実行するための方法であって、コンピュータによって実現される以下のステップを含み、前記以下のステップは、
データベースオブジェクトの属性の集合を参照するデータベースコマンドを受取るステップと、
前記属性の集合内のどの属性が制限されるかを決定するステップと、
結果の集合を生成するステップとを含み、
前記結果の集合は行の集合を含み、
前記行の集合内の各行は前記属性の集合の各属性に対する値を含み、
前記行の集合の少なくとも１つの行に対して、前記属性の集合内の制限される属性に対する値は前記データベースオブジェクトからの値ではない、方法。
【請求項１３】
前記行の集合のすべての行に対して、前記制限される属性の値はマスクされる、請求項１２に記載の方法。
【請求項１４】
前記行の集合の少なくとも１つの行は前記制限される属性の少なくとも１つに対するマスクされない値を含む、請求項１２に記載の方法。
【請求項１５】
前記属性の集合のどの属性が制限されるかを決定する前記ステップは、属性制限メタデータに基づいて前記属性の集合内のどの属性が制限されるかを決定するステップをさらに含む、請求項１２に記載の方法。
【請求項１６】
前記属性の集合のどの属性が制限されるかを示すデータを受取るステップをさらに含む、請求項１２に記載の方法。
【請求項１７】
前記データを受取る前記ステップは、アプリケーションプログラムインターフェイス（ＡＰＩ）を使用して前記データを受取るステップをさらに含む、請求項１６に記載の方法。
【請求項１８】
前記属性の集合内のどの属性が制限されるかを決定する前記ステップは、１つまたは複数の制限される属性を１つまたは複数の参照される属性と比較して前記１つまたは複数の参照される属性のどれが制限されるかを決定するステップをさらに含む、請求項１２に記載の方法。
【請求項１９】
前記データベースオブジェクトはテーブルであり、前記データベースオブジェクトの属性は前記テーブル内の列である、請求項１２に記載の方法。
【請求項２０】
コンピュータ読取可能な媒体であって、１つまたは複数のプロセッサによって実行されると前記１つまたは複数のプロセッサに請求項１から１９のいずれかに記載の方法を実行させる命令の１つまたは複数のシーケンスを運ぶ、コンピュータ読取可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連の出願および特許
この出願は、Chon Hei LeiおよびDouglass James McMahonを発明者とする「データベースの粒の細かいアクセス制御（“Database Fine-grained Acess Control”）」と題される２００２年１１月２６日発行の米国特許第６，４８７，５５２Ｂ１号に関し、この開示全体をここに引用により援用する。この出願は、Daniel ManHung WongおよびChon Hei Leiを発明者とする「データベースに対する分割されたアクセス制御(“Partitioned Acess Control to a Database”）」と題される２０００年６月７日に出願された米国出願第０９／５８９，６０２号に関し、この開示全体をここに引用により援用する。
【０００２】
発明の分野
この発明はデータベースに関し、特にデータベース内の情報へのアクセスの制御に関する。
【背景技術】
【０００３】
発明の背景
データベース内のデータは、１つまたは複数のデータコンテナに記憶され、各コンテナはレコードを含み、各レコード内のデータは１つまたは複数のフィールドに組織される。リレーショナルデータベースシステムでは、データコンテナはテーブルと称され、レコードは行と称され、フィールドは列と称される。オブジェクト指向データベースでは、データコンテナはデータベースオブジェクトと称され、レコードはオブジェクトと称され、フィールドは属性と称される。他のデータベースアーキテクチャは他の用語を使用することがある。この発明を実現するシステムは、特定の種類のデータコンテナまたはデータベースアーキテクチャに限定されない。
【０００４】
多くの状況では、すべてのユーザが特定のテーブルの行のすべてにアクセスするのを防止することが望ましいことがある。たとえば、テーブルには英語の文章を含む行があり、スペイン語の文章を含む行があることがある。この場合、英語を話すユーザのアクセスを英語を含む行に制限し、スペイン語を話すユーザのアクセスをスペイン語を含む行に制限すると都合がよい。
【０００５】
セキュリティの理由のため、或る行へのアクセスを制限することが望ましいこともある。たとえば、テーブルの或る行は最高機密情報を含み、他の行は機密情報を含み、一方、別の行は機密扱いでない情報を含む。これらの条件では、所与のユーザに対して利用可能にされる行は、そのユーザの秘密取扱許可によって決定されなければならない。
【０００６】
上述の両方の状況はデータの行レベルのフィルタリングを必要とし、第２の状況はフィルタリングがアクセス制御ポリシーを実施することも必要とする。行レベルのアクセス制御ポリシーを実現するには、データベースサーバはテーブル内の行の特定のサブセットにユーザを制限するための仕組みを有さなければならない。行レベルのアクセス制御ポリシーを実現するための１つの方法は、テーブルへのすべてのアクセスが「ビュー」を通じて間接的に行なわれるようにすることを伴う。
【０００７】
ビューは、ユーザが比較的少数のカテゴリに入る場合に行レベルのアクセス制御を提供するための便利な方法を提供する。たとえば、ユーザが言語に基づいてのみ分類され、かつ２つの言語のみがサポートされる場合、２つのみのビューが作成される必要がある。しかしながら、多くのアクセスポリシーは、複数の基準に基づいてユーザが多数のカテゴリ
に分けられることを必要とする。これらの状況では、作成かつ維持されなければならないビューの数によって、ポリシーの実施のためのビューに基づく方法が非実用的なものになる。
【０００８】
ユーザが見ることのできる情報を選択的に制限する別のアプローチは、動的に照会文に述語を付けるための仕組みを伴い、述語はポリシーに基づいて付けられる。たとえば、データベースシステムは照会文がデータベースオブジェクトに対して発行されることを検出する。照会文を実行する前に、データベースオブジェクトに関連するポリシー関数が起動される。ポリシー関数は、データベースオブジェクトに関連するポリシーに基づいてゼロまたはそれより多い述語を照会文に選択的に付加することによって変更された照会文を作成する。次に、変更された照会文が実行される。動的に述語が追加される方法は米国特許６，４８７，５５２号に詳細に説明される。
【０００９】
論じてきたアプローチは、そこからデータが返される行を制限し、したがって、以降は「行レベルアクセス制御ポリシー方法」と集合的に称される。これら行レベルアクセス制御ポリシー方法に共通の１つの特徴は、制限のオールオアナッシングの性質である。具体的には、テーブルの所与の行では、ユーザは情報のすべてにアクセスすることができるか、または情報のどれにもアクセスできないかである。
【００１０】
行レベルアクセス制御ポリシーアプローチのオールオアナッシングの性質を示すために、図１に示されるデータベーステーブルｔ２を考える。テーブルｔ２は企業の従業員についての情報を保持する。データベーステーブルｔ２では、各行１１１〜１１７は特定の従業員についての情報を保持し、各列は特定の種類の情報を保持する。行１１１は「クリス」という名前の従業員についての情報を保持する。クリスは０５６３９５の従業員ＩＤを有し、部署Ｊ２１におり、５０６−９３−２４５６の社会保障番号を有し、給与は２７０，２３０であり、マネージャである。
【００１１】
行レベルアクセス制御ポリシーアプローチを使用して、各部署のマネージャが自分の部署のメンバーに対応する行を見ることができるようにし、かつ非マネージャを自分自身の情報を含む行に制限することができる。クリスが部署Ｊ２１のマネージャであり、かつチェリルおよびクレイグがクリスの部署にいると仮定すると、上に指定されたポリシーによって、クリスは行１１１、１１２および１１４にある情報のすべてにアクセスすることができるが、チェリルおよびクレイグは、自分自身のものを除いてどの行からの情報も見ることができないようにできる。具体的には、チェリルは行１１２からのすべての情報を見ることができるが、行１１１および行１１４からの情報は見ることができず、クレイグは行１１４からのすべての情報を見ることができるが、行１１１および１１２からの情報は見ることができない。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
残念ながら、行レベルアクセス制御ポリシーアプローチのオールオアナッシングの性質は、企業の必要を満たすのに十分に柔軟ではないことがある。たとえば、すべての従業員が他のすべての従業員の名前、従業員ＩＤ、および部署番号へのアクセスを有するが、従業員が自分自身の給与へのアクセスのみを有することが望ましいことがある。しかしながら、或る人物の給与情報は従業員の名前と同じ行にあり得る。したがって、或る従業員への名前へのアクセスをユーザに許可する行レベルポリシーは、必然的にそのユーザがその従業員の給与情報にアクセスすることを許可する。反対に、ユーザが或る従業員の給与情報にアクセスすることを防止するポリシーは、必然的にそのユーザがその従業員の名前にアクセスするのを防止する。
【課題を解決するための手段】
【００１３】
上述のことに基づき、既存の行レベルアクセス制御ポリシーアプローチのオールオアナッシングの制限を受けないアクセス制御ポリシーを実現するための仕組みを提供することが望ましいのは明らかである。
【００１４】
このセクションに説明されるアプローチは実行可能なアプローチであるが、必ずしも以前に考案または実行されたアプローチではない。したがって、別段の記載のない限り、このセクションで説明されるアプローチはいずれもこのセクションに含まれるということによってのみ先行技術とみなされる。
【発明を実施するための最良の形態】
【００１５】
この発明を添付の図面の中で限定ではなく例によって説明する。添付の図面中、同様の参照番号は類似の要素を示す。
【００１６】
発明の詳細な説明
データベース内の情報へのアクセスを制御するための方法および装置を説明する。以下の説明では、説明のため、この発明を完全に理解できるように多くの具体的な詳細を説明する。しかしながら、この発明はこれら具体的な詳細なしに実行可能であることは明らかであろう。場合によっては、この発明を不必要にわかりにくくするのを避けるために、周知の構造および装置をブロック図で示している。
【００１７】
機能的およびシステムの概要
図２は、一実施例によるデータベース内の情報へのアクセスを制御するためのシステム２００を示すブロック図である。システム２００は、データベース２４０から情報を要求するためにユーザ２１０によって使用され得るデータベースアプリケーション２２０を含む。データベースアプリケーション２２０は、ユーザの対話に応答してデータベースサーバ２３０に照会文２２１を発行するように設計される。データベースサーバ２３０は、データベース２４０のテーブルｔ２から要求された情報をデータベースアプリケーション２２０に提供する。説明のため、データベース２４０は図１に示されるテーブルｔ２とともに示される。しかしながら、ここに説明される仕組みはどのようなデータベーステーブルと使用してもよい。
【００１８】
テーブルｔ２はデータベースオブジェクトであり、テーブルｔ２内の列はデータベースオブジェクトの属性の集合である。一実施例によると、属性に特有の制限を含むアクセスポリシーをサポートするための仕組みが提供される。そのようなポリシーは、たとえば、属性の集合の１つまたは複数の属性が或る状況でのみアクセスされ得ることを定める。そのような制限にさらされる属性は「制限される属性」と称される。
【００１９】
説明のため、照会文２２１はテーブルｔ２の１つまたは複数の属性を参照すると仮定する。照会文２２１によって参照される属性は、以降「参照される属性」と称される。データベースサーバ２３０が照会文２２１をどのように扱うかは、部分的に、照会文２２１の参照される属性がテーブルｔ２の制限される属性を含むかに基づいて決定される。
【００２０】
一実施例によると、照会文２２１がデータベースオブジェクトの１つまたは複数の制限される属性を参照するか否かについての決定が行なわれる。たとえば、照会文２２１が１つまたは複数の制限される属性を参照する場合、照会文２２１はユーザ２１０に返される行を制限するために変更され得る。しかしながら、以下に詳細に説明するように、照会文２２１が制限される属性を参照しない場合、照会文２２１はユーザに返される行を制限するために変更されない。
【００２１】
別の実施例によると、データベースサーバ２３０は、ユーザに返される行を制限することなく、ユーザ２１０が制限される属性からデータを見ることを制限する。制限される情報へのアクセスは、後に詳細に説明するように、ユーザ２１０に照会文の結果の集合が返される前に、それをマスキングすることによって防止される。ユーザが制限される属性に対する値を見ることを防止するためにマスキングが使用される場合、マスキングを選択的に行なって、ユーザがいくつかの行から制限される属性に対する値を見ることができ、ユーザが他の行から制限される属性に対する値を見ることを防止することができる。
【００２２】
典型的には、テーブルメタデータ２４１は、テーブルｔ２などのデータベーステーブルを説明する情報を含む。たとえば、テーブルメタデータ２４１は、テーブルｔ２の属性およびテーブルｔ２に記憶され得るデータの種類を説明する情報を含み得る。
【００２３】
図示の実施例では、テーブルメタデータ２４１は、テーブルｔ２に当てはまるアクセスポリシーを示すポリシーメタデータ２４２も含む。ポリシーメタデータ２４２は、テーブルｔ２のどの情報が制限され、かつテーブルｔ２の情報がどのように制限されるかを示すデータを含む。特に、ポリシーメタデータ２４２は、テーブルｔ２のどの属性が制限されるかを示す属性制限メタデータ２４３を含む。たとえば、属性制限メタデータ２４３は、テーブルｔ２の「給与」および「社会保障番号」の属性が制限される属性であると示し得る。
【００２４】
一実施例によると、属性制限メタデータ２４３は、制限される属性が制限される態様を示すデータを含み得る。たとえば、属性制限メタデータ２４３は、マネージャが自分の部署の人員の給与を見ることができるが、一般の従業員は自分自身の給与のみを見ることができると示し得る。
【００２５】
一実施例によると、意味解析器２３１は照会文を受取り、ポリシーメタデータ２４２および照会文の解析に基づいて、ポリシー関数２３２を呼出すべきか否かを決定する。たとえば、ポリシーメタデータ２４２は、テーブルｔ２のどの列が制限されるかを示す属性制限メタデータ２４３を含み得る。一実施例によると、意味解析器２３１は、意味解析器２３１が参照される属性の少なくとも１つが制限されると決定するときにポリシー関数２３２を起動する。
【００２６】
ポリシー関数２３２は、たとえば、ユーザの規定するポリシーを実現するユーザに与えられた関数であってもよい。ポリシー関数２３２に設計され得る機能性には実質的に制限はない。結果として、ポリシー関数２３２は任意に複雑なポリシーをサポートすることができる。ポリシー関数２３２は、たとえば、ユーザによって与えられるポリシーメタデータを読取り、かつそのメタデータの内容に基づいて行動するように設計されてもよい。説明のため、照会文２２１が変更されるべきか否か、およびどのように変更されるべきかを決定するようにポリシー関数２３２が設計される実施例を述べる。一実施例によると、ポリシー関数２３２は照会文２２１が変更されるべきだと決定する場合、ポリシー関数２３２は照会文２２１に付加される述語を返し、変更された照会文を作成する。
【００２７】
たとえば、ユーザ２１０が「ジョン」であり、かつ「給与」がテーブルｔ２の制限される属性であると仮定すると、意味解析器２３１が、照会文２２１は「給与」属性からのデータにアクセスしようとしていると決定したとき、意味解析器２３１はポリシー関数２３２を起動し得る。ポリシー関数２３２は「ジョン」が彼自身の給与にアクセスできるように実現され得る。この場合、後にさらに詳細に説明するように、ポリシー関数２３２は、照会文が行１１３のみを検索するように照会文２２１に追加される述語を返し、ジョンは自分自身の給与のみを見ることができる。
【００２８】
一実施例によると、属性制限メタデータ２４３は、制限される属性からデータをマスクするためにどの値（以降は「マスキング値と称される」）が使用され得るかを示す。たとえば、「給与」が制限される属性であると仮定すると、ジョンがテーブルｔ２内のすべての行についての名前および給与にアクセスしようとする場合、ジョンは行のすべてから名前を受取るが、給与の列からのデータは整数ゼロなどのマスキング値でマスクされ得る。この場合、ジョンがテーブルｔ２内の行のすべてについての名前および給与を要求すると、データベースサーバ２３０はテーブルｔ２から名前および給与のすべてを検索し、変更されない名前および給与を結果の集合２３５に記憶する。意味解析器２３１は、ジョンが制限される属性「給与」にアクセスしようとしていると決定する。結果の集合２３５はマスキングルーチン２３４に渡され、これは指定されたマスキング値の整数ゼロを使用して制限される属性「給与」をマスクし、マスクされた結果の集合２３３を作成する。マスクされた結果の集合２３３がデータベースアプリケーション２２０に提供される。
【００２９】
データベースコマンドが制限される属性を参照する際の実行前のデータベースコマンドの変更
一実施例によると、どの属性が参照されるかに基づいて実行前にデータベースコマンドを変更すべきか否かについての決定が行なわれる。一実施例によると、ユーザが制限されない属性からのデータへのアクセスを要求する場合、要求されたデータはデータベースコマンドを変更することなくユーザに返され得る。たとえば、名前およびＩＤが制限される属性でなく、かつジョンがテーブルｔ２内の人物のすべてについての名前およびＩＤを見ることを要求する場合、ジョンにはテーブルｔ２内の人物のすべてについての名前およびＩＤが提供される。
【００３０】
別の例では、「社会保障番号」が制限される属性であり、かつ照会文がテーブルｔ２内のすべての行についての「社会保障番号」の属性にアクセスしようとしていると仮定する。この場合、意味解析器２３１は、ポリシーメタデータ２４２に基づいて、「社会保障番号」属性が制限されていると決定し、ポリシー関数２３２を起動する。ポリシー関数２３２はこの照会文が「社会保障番号」属性内のデータにアクセスしてもよいか否かを決定する。たとえば、照会文が行１１６のプリシラなどの人事部門の人員によって発行された場合、ポリシー関数２３２は照会文を変更する必要がないと決定し、「社会保障番号」属性からのデータをプリシラに返す。しかしながら、照会文がクリス（行１１１を参照)などの人事部門の人員以外の誰かによって発行された場合、ポリシー関数２３２は、照会文は「社会保障番号」属性内のデータにアクセスしてはいけないと決定し得る。
【００３１】
一実施例によると、これらの状況では、ポリシー関数２３２は、述語を返してデータベースコマンドを変更し、データベースコマンドによって返される行を制限する。たとえば、常に偽と評価される「WHERE 1=2」などの述語が照会文に追加され、クリスがデータを見ることを防止してもよい。またはこれに代えて、ポリシー関数２３２は、クリスをクリスの部署の人員に対応する行にのみ制限するように述語を追加し得る。たとえば、「WHERE t.dept=J21」などの述語がクリスのために発行される照会文に追加され得る。
【００３２】
データベースコマンド内での属性の場所に基づくデータベースコマンドを変更すべきか否かの決定
一実施例によると、データベースコマンドを変更すべきか否かの決定は、データベースコマンド内で、制限される属性がどこで参照されるかに基づく。たとえば、照会文の一般的な構文は以下のようである。
【００３３】
SELECT （属性リスト）
from （テーブルリスト）
where （フィルタリスト）；
テーブルリストは、そこからデータが要求されているテーブルを示す。たとえば、テーブルリストが「従業員」を含む場合、「従業員」という名前のテーブルからデータが要求されている。
【００３４】
属性リストは、テーブルのどの属性からデータが要求されているかを示す。たとえば、属性リストが属性「名前」および「部署」を示す場合、データはテーブル「従業員」の「名前」および「部署」の属性から要求されている。
【００３５】
フィルタリストは、そこからデータを抽出する行をフィルタリングするためのゼロまたはそれより多い述語を含む。たとえば、フィルタリストが述語「WHERE employee.dept=m72」を有する場合、データはテーブル「従業員」の「部署」属性が「ｍ７２」である行のみから要求されている。
【００３６】
照会文は、列に関連するデータに直接的または間接的にアクセスしてもよい。照会文は、照会文の結果の集合が列からのデータを含むときに列に直接アクセスする。照会文は、照会文の結果の集合が何らかの形で列の内容に基づくが、列からのデータを含まないときに間接的に列にアクセスする。
【００３７】
データベースコマンドの属性リストで属性を指定することは、データに直接アクセスすることの一例であり、データベースコマンドのフィルタリストで属性を指定することは、データに間接的にアクセスすることの一例である。たとえば、照会文がその属性リストに「名前」を含む場合、照会文の結果の集合はテーブルの「名前」の列からの値を含む。しかしながら、同じ照会文がその属性リストに「給与」を含まないが、そのフィルタリストに「給与＞＄５０，０００」を含む場合、照会文の結果の集合は給与の列の内容に基づくが、給与の列からの値を含まない。この場合、ユーザは給与の属性から直接データを獲得しないが、ユーザは給与に属する情報を獲得する。
【００３８】
一実施例によると、ポリシー関数２３２は、データベースコマンド内で、制限される属性がどこに現れるかに基づいてデータベースコマンドをさまざまに処理するポリシーをサポートする。たとえば、ポリシー関数２３２は以下のポリシーをサポートし得る。
【００３９】
（１）  給与が選択リストにある場合、照会文を実行依頼しているユーザの情報を含む行に照会文を制限する。
【００４０】
（２）  給与がフィルタリストにある場合、ユーザと同じ部署内の従業員の情報を含む行に照会文を制限する。
【００４１】
（４）  社会保障番号が照会文のどこかにあり、かつユーザが非マネージャである場合、そのユーザの情報を含む行に照会文を制限する。
【００４２】
（５）  社会保障番号が選択リストにあり、かつユーザがマネージャである場合、そのマネージャと同じ部署内の従業員からの情報を含む行に照会文を制限する。
【００４３】
（６）  社会保障がフィルタリストにあり、かつユーザがマネージャである場合、照会文には行レベルの制限を付加しない。
【００４４】
一実施例によると、これらのようなポリシーは属性制限メタデータ２４３に反映される。データベースサーバ２３０が照会文２２１を受取ると、意味解析器２３１は照会文２２１が制限される属性を参照するか否か、およびそのような参照が照会文２２１内のどこで行なわれるかを決定する。属性制限メタデータ２４３に基づいて、意味解析器２３１はポ
リシー関数２３２を呼出すべきか否かを決定し、ポリシー関数２３２はどのように照会文を変更すべきか否かを決定する。たとえば、意味解析器２３１は、照会文がフィルタリストの社会保障番号属性を参照し、かつユーザがマネージャであると検出し得る。その決定に基づいて、意味解析器２３１はポリシー関数２３２を呼出さない。ポリシーに基づいて、照会文は変更なしに実行される。
【００４５】
マスキング値
一実施例によると、マスキング値は、ユーザにデータを返す前に制限される属性からのデータをマスクするために使用される。たとえば、属性制限メタデータ２４３が「社会保障番号」が制限される属性であり、かつ「社会保障番号」属性からデータを要求するユーザがそのデータにアクセスする権利を有さないことを示す場合、実際に要求される社会保障番号の代わりに「０００−０００−００００」などのマスキング値がユーザに返され得る。
【００４６】
一実施例によると、マスキング値は制限される属性のデータタイプに応じて異なる。たとえば、制限される属性のデータタイプが整数である場合、マスキング値は整数ゼロであり得る。同様に、制限される属性のデータタイプが文字列である場合、マスキング値はアスタリスクの列であり得る。
【００４７】
一実施例によると、マスキング値は設定可能である。たとえば、データベース管理者は制限される属性の各々に対してマスキング値が何であるかを示すデータを入力し得る。アプリケーションプログラムインターフェイス（ＡＰＩ）を使用してマスキング値を構成してもよい。ＡＰＩは、マスキング値が何であるかを示すデータを受取り、かつそのデータを属性制限メタデータ２４３に記憶してもよい。
【００４８】
一実施例では、属性のマスキングは行のフィルタリングとともに使用され得る。たとえば、ユーザが給与情報を検索する照会文を実行依頼する場合、ポリシーは以下のように指定し得る。
【００４９】
（１）  照会文はユーザと同じ部署内の従業員に対する行のみを検索するように変更される。
【００５０】
（２）  結果の集合内の給与の値は照会文を実行依頼したユーザに対する行を除くすべての行でマスクされる。
【００５１】
それらルールに基づいて、データベースサーバ２３０は、次のように給与属性を参照した照会文を扱う。意味解析器２３１はその照会文が制限される属性を参照すると決定する。ポリシー関数２３２はその従業員と同じ部署の行に照会文を制限する述語を付加するように照会文を変更する。照会文が一旦実行されると、結果の集合２３５は検索された行のすべてからの給与情報を含む。マスキングルーチン２３４は結果の集合２３５をマスクして、照会文を実行依頼したユーザについての給与情報のみを含むマスクされた結果の集合２３３を作成する。マスクされた結果の集合内の他のすべての行について、給与の列はマスキング値を含む。マスクされた結果の集合２３３は、照会文を実行依頼したデータベースアプリケーション２２０に提供される。
【００５２】
データベースコマンドが制限される属性を参照する際の実行前のデータベースコマンド変更のための動作例
このセクションは、データベースコマンドが制限される属性を参照するか否かを決定し、データベースコマンドが制限される属性を参照する場合に実行前にデータベースコマンドを変更するためのいくつかのシナリオおよび対応する動作例の説明を提供する。説明の
ため、図２に示されるシステムのユーザが、図１に示されるようにテーブルｔ２にアクセスするためにデータベースアプリケーション２２０に照会文２２１を実行依頼させると仮定する。さらに、属性制限メタデータ２４３は、「給与」および「社会保障番号」が制限される属性であることを示すと仮定する。さらに、属性制限メタデータ２４３は、非管理職の従業員が「給与」の属性から情報を要求する場合、非管理職の従業員は自分自身の給与情報のみにアクセスすることができること、しかしながら、マネージャが「給与」の属性から情報を要求する場合、そのマネージャは自分の部署にいる人物の給与にアクセスすることができるが、そのマネージャの部署以外の人物にはアクセスすることができないことを示すと仮定する。
【００５３】
シナリオ１：誰かが、制限されない属性からデータを要求する。たとえば、ジョンがテーブルｔ２内のすべての人物についての名前およびＩＤのすべてを見ることを要求する照会文を入力する。この場合、ユーザ２１０は、データベースアプリケーション２２０を使用して照会文２２１を発行するジョンであり、照会文は以下のＱ１に示される照会文を含む。
【００５４】
Ｑ１：
SELECT 名前, id
FROM t2
シナリオ１の動作例１では、データベースサーバ２３０は照会文２２１を途中で捉える。意味解析器２３１は属性制限メタデータ２４３から制限される属性（たとえば、「給与」および「社会保障番号」）のリストを獲得する。意味解析器２３１は照会文２２１を走査し、制限される属性を照会文２２１で参照される属性と比較する。この場合、「名前」および「ＩＤ」が照会文２２１で参照される属性であり、これら参照される属性は制限される属性ではない。したがって、意味解析器２３１はポリシー関数２３２を起動せず、データベースサーバ２３０は、テーブルｔ２の行１１１〜１１７のすべてからの属性「名前」および「ＩＤ」についてのデータをユーザ２１０に返す。
【００５５】
シナリオ２：マネージャではない従業員が、制限される属性からデータを要求する。たとえば、ジョンがすべての人物についての名前および給与のすべてを見ることを要求する照会文を入力する。この場合、ユーザ２１０はデータベースアプリケーション２２０を使用して照会文２２１を発行するジョンであり、照会文は以下のＱ２に示される照会文を含む。
【００５６】
Ｑ２：
SELECT 名前,給与
FROM t2
シナリオ２の動作例２では、照会文２２１は属性「名前」および「給与」を参照する。参照される属性を制限される属性と比較して、意味解析器２３１は「給与」が制限される属性であると決定する。したがって、意味解析器２３１はポリシー関数２３２を起動し、これは、非管理職の従業員が自分自身の給与情報にのみアクセスできるというポリシーを実現する。ポリシー関数２３２は照会文２２１を変更するための述語を生成して、ジョンの従業員ＩＤでフィルタリングする述語「WHERE t.id=064832」を照会文２２１に追加することによって、ジョンが自分自身の給与情報にのみアクセスできるように制限する。名前「ジョン」および給与「＄１５１，０００」が照会文２２１に応答して返される。
【００５７】
シナリオ３：マネージャである従業員が、制限される属性からデータを要求する。たとえば、ジョンが照会文Ｑ２を入力したように、部署Ｍ７２のマネージャであるブライアンもすべての人物についての給与のすべてを見ることを要求する照会文Ｑ２を入力する。この場合、ユーザ２１０はデータベースアプリケーション２２０を使用して照会文２２１を
発行するブライアンであり、照会文はＱ２に示される照会文を含む。
【００５８】
シナリオ３の動作例３では、意味解析器２３１は、照会文２２１が制限される属性と指定される属性「給与」を参照すると決定する。意味解析器２３１はポリシー関数２３２を起動し、これは述語「WHERE t.dept=‘M72’」を生成する。述語は照会文２２１に追加され、ブライアンの部署の人物を表わす行についての情報のみが照会文２２１に応答して返される。
【００５９】
動作例２および３の両方が同じ照会文Ｑ２を使用するが、属性制限メタデータ２４３に記憶されるポリシー情報のために異なる結果がジョンおよびブライアンに返される。したがって、データベースアプリケーション２２０は、異なるユーザに応答して異なる結果を提供するために変更される必要はない。
【００６０】
制限される属性からデータをマスキングするための動作例
このセクションの動作例は、上述のセクションで説明されたのと同じ仮定および同じシナリオを使用する。しかしながら、さらに、制限される属性に対してマスキング値が指定されると仮定する。たとえば、データベース管理者は、制限される属性「給与」に対するマスキング値として整数ゼロが使用され、かつ制限される属性「社会保障番号」に対するマスキング値として文字列「０００−０００−００００」が使用されると指定し得る。
【００６１】
シナリオ１の動作例４では、データベースサーバ２３５は、テーブルｔ２の行１１１〜１１７のすべてについての「名前」および「ＩＤ」に対するデータを獲得し、このデータを結果の集合２３５に記憶する。意味解析器２３１は、Ｑ１に示されるような照会文２２１が制限される属性と指定される属性を参照しないことを決定し、結果の集合２３５は変更されずにユーザ２１０に提供される。
【００６２】
シナリオ２の動作例５では、データベースサーバ２３５は、テーブルｔ２の行１１１〜１１７のすべてについての「名前」および「ＩＤ」の属性についてのデータを獲得し、このデータを結果の集合２３５に記憶する。意味解析器２３１は、Ｑ２に示されるような照会文２２１が制限される属性と指定される属性（たとえば、「給与」）を参照すると決定する。マスキングルーチン２３４は属性制限メタデータ２４３からマスキング値を獲得し、「給与」属性からのデータをマスキング値の整数ゼロで置き換える。変更されたデータはマスクされた結果の集合２３３に記憶される。マスクされた結果の集合２３３は以下の表１に示されるようなデータを含む。
【００６３】
【表１】
2006513499.tif 000003
【００６４】
テーブル１に示されるようなマスクされた結果の集合２３３がユーザ２１０に提供される。
【００６５】
シナリオ３の動作例６では、意味解析器２３１は同様に、照会文Ｑ２が制限される属性と指定される属性（たとえば、「給与」）を参照すると決定する。データベースサーバ２３０は、動作例５でそれがジョンに返した表１に示されるのと同じデータをブライアンに返す。
【００６６】
一実施例によると、制限される属性からのデータが常にマスクされるわけではない。この実施例では、属性制限メタデータ２４３内のデータは、或る制限される属性についてのデータは或る状況でマスクされるべきであり、他の状況ではマスクされるべきでないと示し得る。たとえば、属性制限メタデータ２４３は、マネージャは自分の部署ではない人物の給与情報にはアクセスすることができないが、自分の部署の人物についての給与情報にはアクセスできると示し得る。さらに、属性制限メタデータ２４３が人事部門の人員は誰についての社会保障番号にもアクセスすることができるが、人事部門以外の従業員は自分自身の社会保障番号にのみアクセスできると示すと仮定する。この場合、ユーザ２１０は、以下のものを含む照会文２２１を発行するクリスであると仮定する。
【００６７】
Ｑ３：
SELECT 名前, 給与, 社会保障番号
FROM t2
この場合、クリスは以下のものを含む情報を受取る。
【００６８】
【表２】
2006513499.tif 000004
【００６９】
結論
ここに説明されるアーキテクチャおよびプロセスは、データベース内でアクセス制御ポリシーを実現するための仕組みを提供し、この仕組みは、（１）照会文の実行の効率を大きく損なわず、（２）特定のビューを通じてデータにアクセスするためまたは変数を適切な値にセットするためにユーザに依存せず、（３）比較的複雑なアクセス制御ルールをサポートし、（４）アクセス制御管理を実行不可能なほどに複雑にせず、（５）データがそこから返され得る属性または列を制限するために使用することができ、（６）データベースアプリケーションを変更することなく異なるユーザに応答して異なる結果を返すために使用することができる。さらに、ここに説明される仕組みは属性および／または列に制限されず、データベースオブジェクトに関連するあらゆる種類の特徴を参照するデータベースコマンドに使用可能である。
【００７０】
ハードウェアの概要
図３は、この発明の実施例を実現することのできるコンピュータシステム３００を示すブロック図である。コンピュータシステム３００は、情報を通信するためのバス３０２または他の通信の仕組み、および情報を処理するためにバス３０２に結合されるプロセッサ３０４を含む。コンピュータシステム３００は、プロセッサ３０４によって実行されるべき情報および命令を記憶するためにバス３０２に結合されるランダムアクセスメモリ（ＲＡＭ）または他の動的記憶装置などのメインメモリ３０６も含む。メインメモリ３０６は、プロセッサ３０４によって実行されるべき命令の実行中に一時的な変数または他の中間情報を記憶するために使用してもよい。コンピュータシステム３００はプロセッサ３０４のための静的な情報および命令を記憶するためにバス３０２に結合される読取専用メモリ（ＲＯＭ）３０８または他の静的記憶装置も含む。磁気ディスクまたは光ディスクなどの記憶装置３１０が情報および命令を記録するために提供され、バス３０２に結合される。
【００７１】
コンピュータシステム３００は、情報をコンピュータのユーザに表示するために、ブラウン管（ＣＲＴ）などのディスプレイ３１２にバス３０２を介して結合されてもよい。英数字および他のキーを含む入力装置３１４は、情報およびコマンドの選択をプロセッサ３０４に通信するためにバス３０２に結合される。他の種類のユーザの入力装置は、マウス、トラックボールまたはカーソル方向キーなどのカーソル制御３１６であり、方向情報およびコマンドの選択をプロセッサ３０４に通信し、かつディスプレイ３１２上でのカーソルの動きを制御する。この入力装置は典型的には、第１の軸（たとえば、ｘ）および第２の軸（たとえば、ｙ）の２つの軸での２自由度を有し、これによって平面での位置を装置が特定することができる。
【００７２】
この発明は、ここに説明される技術を実現するためにコンピュータシステム３００を使用することに関連する。この発明の一実施例によると、それら技術は、プロセッサ３０４がメインメモリ３０６に含まれる１つまたは複数の命令の１つまたは複数のシーケンスを実行することに応答してコンピュータシステム３００によって行なわれる。そのような命令は、記憶装置３１０などの別のコンピュータ読取可能な媒体からメインメモリ３０６に読込まれてもよい。メインメモリ３０６に含まれる命令のシーケンスの実行によって、プロセッサ３０４はここに説明されるプロセスのステップを行なう。代替の実施例では、この発明を実現するためにソフトウェアの命令の代わりに、またはそれと組合せて組込の回路を使用してもよい。この発明の実施例はハードウェア回路およびソフトウェアの特定の組合せに限定されない。
【００７３】
ここで使用される「コンピュータ読取可能な媒体」という言葉は、実行するためにプロセッサ３０４に命令を提供することに関係する任意の媒体を指す。そのような媒体は、これらに限らないが、不揮発性媒体、揮発性媒体および伝送媒体を含む多くの形を取り得る。不揮発性媒体は、たとえば、記憶装置３１０などの光または磁気ディスクを含む。揮発性媒体は、メインメモリ３０６などの動的メモリを含む。伝送媒体は、バス３０２を含むワイヤを含む、同軸ケーブル、銅線および光ファイバを含む。伝送媒体は、無線データ通信または赤外線データ通信中に生成されるもののような音波または光波の形を取ってもよい。
【００７４】
コンピュータ読取可能な媒体の一般的な形は、たとえば、フロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、磁気テープ、または他の磁気媒体、ＣＤ−ＲＯＭ、他の光媒体、パンチカード、紙テープ、孔のパターンを備えた他の物理的な媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、他のメモリチップまたはカートリッジ、後に説明される搬送波、またはそこからコンピュータが読取ることのできる他の媒体を含む。
【００７５】
１つまたは複数の命令の１つまたは複数のシーケンスをプロセッサ３０４に運んで実行するためにさまざまな形のコンピュータ読取可能な媒体がかかわり得る。たとえば、命令は最初、遠隔コンピュータの磁気ディスク上で運ばれてもよい。遠隔コンピュータは命令を動的メモリにロードし、モデムを使用して電話線上で命令を送信する。コンピュータシステム３００のローカルモデムは電話線上でデータを受取り、赤外線送信機を使用してデータを赤外線信号に変換する。赤外線検出器は赤外線信号で運ばれるデータを受取り、適切な回路はデータをバス３０２上に位置付けることができる。バス３０２はデータをメインメモリ３０６に運び、そこからプロセッサ３０４は命令を検索かつ実行する。メインメモリ３０６によって受取られた命令は、任意で、プロセッサ３０４の実行の前後に記憶装置３１０に記憶してもよい。
【００７６】
コンピュータシステム３００は、バス３０２に結合される通信インターフェイス３１８も含む。通信インターフェイス３１８は、ローカルネットワーク３２２に結合されるネットワークリンク３２０に結合する双方向データ通信を提供する。たとえば、通信インターフェイス３１８は総合デジタル通信網（ＩＳＤＮ）カードまたはモデムであって、対応する種類の電話線にデータ通信接続を提供してもよい。別の例として、通信インターフェイス３１８は、ローカルエリアネットワーク（ＬＡＮ）カードであって、互換性ＬＡＮにデータ通信接続を提供してもよい。無線リンクを実現してもよい。そのような実現例では、通信インターフェイス３１８は、さまざまな種類の情報を表わすデジタルデータストリームを運ぶ電気信号、電磁気信号または光信号を授受する。
【００７７】
ネットワークリンク３２０は典型的には１つまたは複数のネットワークを通じて他のデータ装置にデータ通信を提供する。たとえば、ネットワークリンク３２０は、インターネットサービスプロバイダ（ＩＳＰ）３２６によって運営されるホストコンピュータ３２４またはデータ装置にローカルネットワーク３２２を通じて接続を提供してもよい。ＩＳＰ３２６は、現在では一般的に「インターネット」３２８と称される世界規模のパケットデータ通信ネットワークを通じてデータ通信サービスを提供する。ローカルネットワーク３２２およびインターネット３２８はともにデジタルデータストリームを運ぶ電気信号、電磁気信号または光信号を使用する。さまざまなネットワークを通じた信号およびネットワークリンク３２０上および通信インターフェイス３１８を通じた信号は、デジタルデータをコンピュータシステム３００に授受し、情報を運ぶ搬送波の例示的な形である。
【００７８】
コンピュータシステム３００は、ネットワーク、ネットワークリンク３２０および通信インターフェイス３１８を通じて、プログラムコードを含むメッセージを送り、データを受取ることができる。インターネットの例では、サーバ３３０は、インターネット３２８、ＩＳＰ３２６、ローカルネットワーク３２２および通信インターネット３１８を通じてアプリケーションプログラムのための要求されたコードを送信し得る。
【００７９】
受取られたコードは受取られたときにプロセッサ３０４によって実行されてもよいし、および／または記憶装置３１０、もしくは他の不揮発性媒体に記憶されて後に実行されてもよい。このようにして、コンピュータシステム３００は搬送波の形でアプリケーションコードを獲得することができる。
【００８０】
上述の明細書では、この発明の実施例を実現例によって変わり得る多数の具体的な詳細に関して説明してきた。この発明が何であるか、および出願人によってこの発明であると意図されるものが何かを示す唯一かつ排他的なものは、この出願から発行されるクレームのセットであり、後続の補正を含むそのようなクレームが発行される特定の形のものである。そのようなクレームに含まれる用語に対してここに明らかに説明される定義は、クレームで使用されるそのような用語の意味を決定する。クレームで明らかに定義されない限定、要素、特性、特徴、利点または属性はそのようなクレームの範囲を限定するべきでは
ない。したがって、明細書および図面は限定的なものではなく、例示的なものであると見なされるべきである。
【図面の簡単な説明】
【００８１】
【図１】企業の従業員についての情報を含むデータベーステーブルの図である。
【図２】データベース内の情報へのアクセスを制御するためのコンピュータシステムを示すブロック図である。
【図３】この発明の実施例を実現することのできるコンピュータシステムを示すブロック図である。
【図１】
2006513499.tif 000005
【図２】
2006513499.tif 000006
【図３】
2006513499.tif 000007
【国際調査報告】
2006513499.tif 000008
2006513499.tif 000009
2006513499.tif 000010
2006513499.tif 000011
2006513499.tif 000012