(57)【要約】  （１つまた複数の）データベースに対する安全なアクセスを支援するシステムおよび方法が提供される。システムは、リレーショナルデータベースのデータに対する特徴的アクセスを認証することに関する。より具体的には、本発明は、各種最適化技法を維持しながらスプーフィングが不可能になるようにリレーショナルデータベースのテーブルのローに対する安全なアクセスを定義する新規な技法を提供する。本発明は、セットベースの関連クエリ能力を維持しながら持続的エンティティに対する特徴的アクセスポリシーを定義実行できるセキュリティアーキテクチャを提供することによって持続的スキームを提供する。
2007531154.tif 000002
【特許請求の範囲】
【請求項１】
データベースに対する安全なアクセスを支援するシステムであって、
データベースの少なくとも１つのローに関連するセキュリティ情報を具現化するセキュリティ記述子を記憶するセキュリティ記述子ストアと、
前記データベースに記憶された情報およびクエリを発行したユーザのセキュリティコンテキストに基づいて評価されたセキュリティ記述子に記憶されたセキュリティ情報に少なくとも部分的に基づく、前記データベースについての前記クエリに対する応答を提供するデータベースエンジンと
を備えることを特徴とするシステム。
【請求項２】
さらに前記データベースを備えることを特徴とする請求項１に記載のシステム。
【請求項３】
前記データベースは、リレーショナルデータベース、オブジェクトデータベース、およびオブジェクトリレーショナルデータベースのうち少なくとも１つを備えることを特徴とする請求項１に記載のシステム。
【請求項４】
前記クエリは少なくとも部分的に構造化照会言語に基づくことを特徴とする請求項１に記載のシステム。
【請求項５】
前記クエリは少なくとも部分的に、セキュリティ記述子の作成、変更、削除を可能にする１組のステートメントが付加されたクエリベースのプログラミング言語に基づくことを特徴とする請求項１に記載のシステム。
【請求項６】
前記データベースは少なくとも１つのローおよび少なくとも２つのカラムを有する少なくとも１つのテーブルを備え、前記カラムのうちの１つは前記ローに関連するセキュリティ記述子を記憶し、前記セキュリティ記述子は前記ローに関連した前記セキュリティ記述子ストアに記憶されたセキュリティ情報を識別することを特徴とする請求項１に記載のシステム。
【請求項７】
前記セキュリティ記述子に記憶された情報は、どのプリンシパルに対してどの種類のアクセスが許可または拒絶されたかという情報を備えることを特徴とする請求項１に記載のシステム。
【請求項８】
前記セキュリティ記述子ストアに記憶された情報はアクセスの種類を備えることを特徴とする請求項１に記載のシステム。
【請求項９】
前記セキュリティ記述子ストアに記憶された情報は、前記セキュリティ情報を適用するプリンシパルを備えることを特徴とする請求項１に記載のシステム。
【請求項１０】
前記プリンシパルはユーザ名、ユーザ識別子、およびユーザタイプのうち少なくとも１つを備えることを特徴とする請求項９に記載のシステム。
【請求項１１】
前記セキュリティ記述子は順序付けされた１組のアクセス制御エンティティであることを特徴とする請求項１に記載のシステム。
【請求項１２】
前記データベースは前記セキュリティ記述子に記憶された前記セキュリティ情報とは独立に設けられることを特徴とする請求項１に記載のシステム。
【請求項１３】
前記クエリに回答する最適な方法を決定するクエリオプティマイザを備えたクエリコンポーネントをさらに備えることを特徴とする請求項１に記載のシステム。
【請求項１４】
前記クエリオプティマイザはコストに基づいた最適化戦略を用いることを特徴とする請求項１３に記載のシステム。
【請求項１５】
所与のセキュリティコンテキストが特定のセキュリティ記述子に関して所与のパーミッションを有するかどうかについての計算結果を記憶するユーザセッションキャッシュをさらに備えることを特徴とする請求項１に記載のシステム。
【請求項１６】
コンピュータファイルに対する安全なアクセスを支援するために使用されることを特徴とする請求項１に記載のシステム。
【請求項１７】
フォルダ、コンタクト、および電子メールメッセージのうち少なくとも１つに対する安全なアクセスを支援するために使用されることを特徴とする請求項１に記載のシステム。
【請求項１８】
データベースに記憶されたデータに安全にアクセスする方法であって、
クエリおよびユーザコンテキスト情報を受信するステップと、
前記クエリを満足しかつそのローに関連するセキュリティ情報が前記ユーザコンテキスト情報によって満足されるローがあれば、そのローを備えた応答を前記クエリに対して提供するステップと
を備えることを特徴とする方法。
【請求項１９】
前記応答を前記クエリに対して提供するステップは、
アクセスされたテーブルの各ローについて、このローに関連するセキュリティ記述子が前記ユーザコンテキスト情報によって満足されるかどうかを判定すること
を備えたことを特徴とする請求項１８に記載の方法。
【請求項２０】
請求項１８に記載の方法を実行するコンピュータ実行可能命令が記憶されたことを特徴とするコンピュータ可読媒体。
【請求項２１】
安全なデータベースを支援する方法であって、
セキュリティ記述子カラムを有するテーブルを作成するステップと、
前記テーブルに関連したセキュリティ記述子ストアを作成するステップと、
前記テーブルの少なくとも１つのローにセキュリティ記述子の識別子をポピュレートするステップと、
クエリおよびユーザコンテキスト情報を受信するステップと、
前記クエリを満足しかつそのローに関連するセキュリティ情報が前記ユーザコンテキスト情報によって満足されるローがあれば、そのローを備えた応答を前記クエリに対して提供するステップと
を備えることを特徴とする方法。
【請求項２２】
前記クエリは前記応答が提供される前に最適化されることを特徴とする請求項２１に記載の方法。
【請求項２３】
請求項２１に記載の方法を実行するコンピュータ実行可能命令が記憶されたことを特徴とするコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にコンピュータシステムに関し、特に、コンピュータデータベースのシステムおよび方法に関する。
【背景技術】
【０００２】
本出願は、参照として全体が本明細書に組み込まれる２００４年３月２９日に出願された「SYSTEMS AND METHODS FOR FINE GRAINED ACCESS CONTROL OF DATA STORED IN RELATIONAL DATABASES」という名称の米国仮出願第６０／５５７，２３９の利益を主張する。
【０００３】
コンピュータのハードウェア、ソフトウェアおよびネットワーク化における技術的進歩により、情報を例えば紙や電話による通信等の従来の技法によってではなく電子的に交換することがますます必要になっている。電子通信により、世界中で実質的に任意の２つの場所の間で瞬時の信頼性の高いデータ転送が実現できる。多数の業界や消費者がそのような技術を促進して、ウェブベース（例えばオンライン）サービスを用いて効率を改善し、コストを低減している。例えば、消費者は、マウスをクリックして、家庭の都合がよいように、物品を購入し、銀行の口座明細を確認し、製品や会社について調べ、現在の株式市況を知り、カタログをダウンロードするなどしている。
【０００４】
利用できる電子データの量が増大すると、ユーザの使い勝手やデータの検索と取込みの迅速さを改善する管理可能な形で上記のデータを記憶することがますます重要になってくる。今日では、一般的な手法は、電子データを１つまたは複数のデータベースに記憶することである。一般に、典型的なデータベースとは、例えばコンピュータプログラムが所望のデータピース（ｐｉｅｃｅｓ  ｏｆ  ｄａｔａ）を迅速に検索し選択できるようにデータが構成された体系化情報集合体と呼ぶことができる。従来、データベース内のデータは、各テーブルが１組のレコードおよび１組のフィールドを備えたレコードを備えた１つまたは複数のテーブルにより体系化されている。レコードは通常テーブル内のロー（ｒｏｗ）として索引付けされ、レコードフィールドは通常カラム（ｃｏｌｕｍｎ）として索引付けされ、それにより、索引のロー／カラムの対がテーブル内の特定のデータを参照できるようにされる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
データベースに記憶されたデータはしばしば個人情報（銀行口座や社会保険番号など）および取扱いに注意を要する情報（医療記録など）を含んでおり、ハードコピーによるバックアップができない。したがって、データベースおよびデータベースに記憶されたデータのセキュリティはますます重要になっている。しかし、現在のデータベースのセキュリティ技術は、例えばソフトウェア上の欠陥を通しておよび／または不正な意図を持つハッカーによって破られる可能性がある。
【課題を解決するための手段】
【０００６】
以下に述べるのは、本発明のいくつかの態様を基本的に理解するための本発明の簡単な概要である。この概要は本発明を広く概観したものではない。本発明の重要不可欠な要素を特定することも、本発明の範囲を説明することも意図していない。当概要の目的は単に、後述のさらに詳細な説明の前段として本発明の概念をより簡潔に提示することにある。
【０００７】
本発明は、（１つまたは複数の）データベースに対する安全なアクセスを支援するシステムおよび方法を提供する。コンピュータの普及に伴い、データベース、例えばリレーショナルデータベースに記憶されるデータが増大している。リレーショナルデータベースでは、データの殆どは１つまたは複数のテーブルでローとして記憶される。データベースは１つまたは複数のエンティティからアクセスできる。データベースに記憶されるデータの特質（ｎａｔｕｒｅ）により、このデータに対する特徴的アクセス（ｄｉｓｃｒｉｍｉｎａｔｏｒｙ  ａｃｃｅｓｓ）（例えばノーアクセス、読取りアクセス、および／または読取り／書込みアクセス）を認証することが大変重要になる。
【０００８】
リレーショナルデータベースの普及に関する重要な点は、複数のテーブルに対して関連したクエリを実行できることである。テーブルに記憶されるエンティティセットに対して、セット処理言語（例えばＳＱＬ：Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ（構造化照会言語））を用いてアクセスできる。この言語は、データのソースとして１つまたは複数のテーブルを特定し、もしあれば、所与の条件を満足するローのみを出力する。
【０００９】
さらに、多くのリレーショナルデータベースはテーブルに提示される様々なアクセスパスまたは索引に基づいてそれらのクエリを最適化する。したがって、本発明の態様によると、システムは、現行の各種最適化技術を維持しながらスプーフィングが不可能なようにそのようなテーブル内のローに対する安全なアクセスを定義する新規な技法を提供する。
【００１０】
本発明の一態様によると、データベースにアクセスするデータベースエンジンおよびセキュリティ記述子ストア（ｓｅｃｕｒｉｔｙ  ｄｅｓｃｒｉｐｔｏｒ  ｓｔｏｒｅ）を有する、データベースに対する安全なアクセスを支援するシステムが提供される。場合により、このシステムがデータベースを含んでよい。
【００１１】
データベースは構造化フォーマット内にデータを記憶する。例えば、データベースはリレーショナルデータベース、オブジェクトデータベースおよび／またはオブジェクトリレーショナルデータベースであってよい。リレーショナルデータベースに関しては、同一の構造を有するエンティティセットをテーブルと呼び、各エンティティをローと呼ぶ。この構造の構成要素をカラムと呼ぶ。１つのリレーショナルデータベースはテーブルを含まなくてもよく、１つまたは複数のテーブルを含んでもよい。
【００１２】
本発明の一態様は、セキュリティ情報、例えばセキュリティ記述子（例えばセキュリティ記述子ストアに記憶するセキュリティ情報に関連する識別子）を記憶するカラムを含むために、データベースに関連するテーブルの少なくとも１つを提供する。
【００１３】
セキュリティ記述子ストアは、１つまたは複数のセキュリティ記述子を記憶する。各セキュリティ記述子はそれが関連する１つまたは複数のリソースに対する特徴的アクセスを制御する。セキュリティ記述子に埋め込まれたセキュリティ情報は、例えば、（１）アクセスが許可されたか拒絶されたか、（２）アクセスの種類（例えば、パーミッション、例えば、読取りのみ、および／または読取り／書込み）、および（３）セキュリティ情報を適用するプリンシパルについてのリストを含んでよい。例えば、セキュリティ記述子ストアは順序付けされたアクセス制御エンティティセットであってよい。
【００１４】
セキュリティ記述子（例えばアクセス制御リスト）は、ローに記憶されたデータの特質のセキュリティ要件、ならびにデータにアクセスするのに用いるアプリケーションの複雑さに応じて急速に大変長いものになる可能性がある。さらに、大多数の場合、テーブルのローに関係する個々のアクセス制御リストの個数は実際のローの数よりはるかに少ない。例えば、テーブル中の各ローがファイルまたはフォルダを参照するテーブルとしてファイルシステムをモデル化する場合、そのようなテーブルには数百ないし数千個のローがある可能性がある。しかし、個々のアクセス制御リストの個数は数百程度である。換言すると、それらのローの多くがそれらに関係する同様のセキュリティポリシーを有する。
【００１５】
データベースエンジンは、例えばユーザからクエリ情報を受信する。クエリ情報は、データベースで実行するように要求されたクエリ、およびクエリのイニシエータに関連するユーザコンテキスト（例えばユーザ名、ユーザ識別子、および／またはユーザタイプ）を含む。
【００１６】
クエリを実行する際、データベースエンジンは、クエリ処理中にアクセスされるデータベースの（１つまたは複数の）ローに関連したセキュリティ記述子、およびユーザがローについて要求したアクセスを有するかどうかを判定するためのクエリに関連するユーザコンテキスト情報を用いる。したがって、クエリのイニシエータには、ユーザが（例えば見るおよび／または変更するための）アクセス権を有するデータベースからの情報だけがもたらされる。
【００１７】
本発明の他の態様は、ポリシー仕様の一部として、（１つまたは複数の）セキュリティ記述子（例えばアクセス制御リスト）の作成、変更および削除を可能にする新たな１組のステートメントが付加されたＳＱＬプログラミング言語（例えばＴＳＱＬ）を提供する。この（１つまたは複数の）セキュリティ記述子（例えばアクセス制御リスト）は、他のセキュリティ関連情報を含んでよい。例えば、セキュリティ記述子は、テーブル内のローから独立して与えられてもよく、共有されてもよく、ローに関連して誰に対していつどのパーミッションを許可するかに関するポリシーを具現化してもよい。
【００１８】
従来のリレーショナルデータベースでは、セキュリティポリシーはテーブルのローとは関連しない。したがって、本発明の態様によると、データベースシステム内の特定のテーブルのローがセキュリティポリシーによって保護されていることを示すために、テーブルを作成し変更するためのＳＱＬステートメントはその事実を示すように拡張される。これらのテーブルの定義におけるカラムのうち１つは、場合により、そのカラムがセキュリティポリシーを具現化していることを示す属性を備えて拡張可能である。このカラムの値は、先に説明したセキュリティ記述子の識別値（ｉｄｅｎｔｉｔｙ）を参照する（例えば４バイトコード）。一例では、カラムの値がＮＵＬＬである場合、このローはどのポリシーによっても守られない。あるいは、そのローに対するアクセス制御のポリシーは、対応するセキュリティ記述子、およびセキュリティ記述子ストアに記憶された関連情報に基づいて区別される。
【００１９】
前述のおよび関連する目的を実現するために、本発明のいくつかの例示的な態様が以下の説明および添付の図面を用いて本明細書に説明される。それらの態様を示すものの、本発明の原理を使用できる様々な手法のうちのいくつかを示すに過ぎないのであり、本発明はそのようなすべての態様および均等物を包含することが意図される。本発明の他の利点および新規な特徴は、図面を参照して検討すれば本発明についての以下の詳細な説明から明らかになろう。
【発明を実施するための最良の形態】
【００２０】
本発明を図面を参照して以下に説明する。全体を通して同一の番号は同一の要素を示す。以下の説明では、説明目的で本発明の完全な理解を可能にするため多くの具体的な詳細を示す。しかし、本発明はこれら具体的な詳細がなくても実施できることは明らかである。他の例では、周知の構造および装置は、本発明の説明を容易にするために概略図の形で示す。
【００２１】
本出願で用いられているように、用語「コンポーネント」、「ハンドラ」、「モデル」、「システム」等はコンピュータ関連のエンティティ、すなわち、ハードウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかを示すように意図される。例えば、コンポーネントとは、プロセッサ上で実行される処理、プロセッサ、オブジェクト、実行ファイル（ｅｘｅｃｕｔａｂｌｅ）、実行スレッド、プログラム、および／またはコンピュータであってよく、かつそれらに限定されない。例えば、サーバ上で実行されるアプリケーションとそのサーバは共にコンポーネントであってよい。１つまたは複数のコンポーネントが処理および／または実行スレッド内に常駐してよく、１つのコンポーネントが１つのコンピュータに局在してもよく、および／または２つ以上のコンピュータ間に分散していてもよい。また、これらのコンポーネントは様々なデータ構造を有する種々のコンピュータ可読媒体から実行してよい。それらのコンポーネントは１つまたは複数のデータパケットを有する信号等を用いて局所および／または遠隔処理により互いに通信を行ってよい（例えば、１つのコンポーネントからのデータが、局所システムや分散システムで他のコンポーネントと交換され、および／またはインターネット等のネットワークを介して上記信号を用いて他のシステムと交換される）。および本発明によると、コンピュータコンポーネントは、例えば、ＡＳＩＣ（特定用途向集積回路）、ＣＤ（コンパクトディスク）、ＤＶＤ（デジタルビデオディスク）、ＲＯＭ（読出専用メモリ）、フロッピー（登録商標）ディスク、ハードディスク、ＥＥＰＲＯＭ（電気的消去可能プログラム可能読出専用メモリ）、メモリスティックを含みそれらに限定されないコンピュータ可読媒体に記憶してよい。
【００２２】
図１を参照すると、本発明の態様によるデータベースに対する安全なアクセスを支援するシステム１００が示されている。システム１００は、データベース１２０にアクセス可能なデータベースエンジン１１０、およびセキュリティ記述子ストア１３０を含む。場合により、システム１００はデータベース１２０を含んでよい。
【００２３】
コンピュータの普及に伴い、データベース、例えばリレーショナルデータベースに記憶されるデータが増大している。リレーショナルデータベースでは、データの殆どは１つまたは複数のテーブルでローとして記憶される。データベースは１つまたは複数のエンティティからアクセスできる。データベースに記憶されるデータの特質により、このデータに対する特徴的アクセス（例えばノーアクセス、読取りアクセス、および／または読取り／書込みアクセス）を認証することが大変重要になる。
【００２４】
リレーショナルデータベースの普及に関する重要な点は、複数のテーブルに対して関連したクエリを実行できることである。テーブルに記憶されるエンティティセットに対して、セット処理言語（例えばＳＱＬ：Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ（構造化照会言語））を用いてアクセスできる。この言語は、データのソースとして１つまたは複数のテーブルを特定し、もしあれば、所与の条件を満足するローのみを出力する。
【００２５】
さらに、多くのリレーショナルデータベースはテーブルに提示される様々なアクセスパスまたは索引に基づいてそれらのクエリを最適化する。したがって、本発明の態様によると、システム１００は、現行の各種最適化技術を維持しながらスプーフィングが不可能なようにそのようなテーブル内のローに対する安全なアクセスを定義する新規な技法を提供する。
【００２６】
データベース１２０は構造化フォーマット内にデータを記憶する。例えば、データベース１２０はリレーショナルデータベース、オブジェクトデータベースおよび／またはオブジェクトリレーショナルデータベースであってよい。リレーショナルデータベースに関しては、同一の構造を有する均質なエンティティセットをテーブルと呼び、各エンティティをローと呼ぶ。この構造の構成要素をカラムと呼ぶ。１つのリレーショナルデータベースは１つまたは複数のテーブルを含んでもよい。
【００２７】
本発明の一態様によると、データベース１２０に関連するテーブルの少なくとも１つは、セキュリティ情報、例えばセキュリティ記述子（例えば、後述するセキュリティ記述子ストア１３０に記憶するセキュリティ情報に関連する識別子）を記憶するカラムを含む。
【００２８】
図２を簡単に参照すると、本発明の態様による例示的なテーブル２００が示されている。テーブル２００はデータカラム２１０およびロー２２０を含む。さらに、テーブル２００はセキュリティ記述子カラム２３０を含む。例えば、セキュリティ記述子カラム２３０は、特定のローに対してそのローに関連したセキュリティ記述子を記憶してよい。一例では、このセキュリティ記述子はセキュリティ記述子ストア１３０に関連した識別子である。
【００２９】
図１を参照すると、セキュリティ記述子ストア１３０は、１つまたは複数のセキュリティ記述子として具現化されるセキュリティ情報を記憶する。セキュリティ情報は、例えば、（１）アクセスが許可されたか拒絶されたか、（２）アクセスの種類（例えば、パーミッション、例えば、読取りのみ、および／または読取り／書込み）、および（３）セキュリティ情報を適用するプリンシパルについて、を含んでよい。例えば、セキュリティ記述子ストア１３０は順序付けされたアクセス制御エンティティセットであってよい。
【００３０】
図３を簡単に参照すると、本発明の態様による例示的なセキュリティ記述子ストア３００が示されている。セキュリティ記述子ストア３００は１つまたは複数のセキュリティ記述子３０１を含む。
【００３１】
この例では、特定のセキュリティ記述子３１０は、アクセス情報３２０、例えば許可されたアクセスおよび／または拒絶されたアクセスを含む。セキュリティ記述子３１０はさらに、特定のセキュリティ記述子３１０に関連するアクセスの種類、例えばノーアクセス、読取りのみのアクセス、および／または読取り／書込みアクセスを識別するパーミッション３３０を含む。セキュリティ記述子３１０はさらに、セキュリティポリシー３１０を適用する（１つまたは複数の）プリンシパル３４０（（１つまたは複数の）ユーザ名、ユーザグループ、ユーザ識別子、および／またはユーザタイプ）を含む。
【００３２】
セキュリティ記述子３１０（例えばアクセス制御リスト）は、ローに記憶されたデータの特質のセキュリティ要件、ならびにデータにアクセスするのに用いるアプリケーションの複雑さに応じて急速に大変長いものになる可能性がある。さらに、大多数の場合、テーブルのローに関係する個々のセキュリティ記述子の個数は実際のローの数よりはるかに少ない。例えば、テーブル中の各ローがファイルまたはフォルダを参照するテーブルとしてファイルシステムをモデル化する場合、そのようなテーブルには数百ないし数千個のローがある可能性がある。しかし、個々のセキュリティ記述子の個数は数百程度である。換言すると、それらのローの多くがそれらに関係する同様のセキュリティポリシーを有する。さらに、一例では、データベースローがアクセスされた場合に、すべてのセキュリティ記述子が高速検索用にメモリに保持されてもよい。
【００３３】
図１を参照すると、データベースエンジン１１０は、例えばユーザからクエリ情報を受信する。クエリ情報は、データベース１２０で実行するように要求されたクエリ、およびクエリのイニシエータに関連するユーザコンテキスト（例えばユーザ名、ユーザ識別子、および／またはユーザタイプ）を含む。
【００３４】
クエリを実行する際、データベースエンジン１１０は、データベース１２０のアクセスされた（１つまたは複数の）ローに関連したセキュリティ記述子、およびユーザがローについて要求したアクセスを有するかどうかを判定するためのクエリに関連するユーザコンテキスト情報を評価する。したがって、データベースエンジン１１０はクエリに基づき、また重要であるが、ユーザコンテキスト情報に基づいてクエリ情報に対する応答を提供する。したがって、クエリのイニシエータには、ユーザが（例えば見るおよび／または変更するための）アクセス権を有するデータベース１２０からの情報だけがもたらされる。
【００３５】
例えば、以下のエントリを持つ１つのテーブルを有するデータベース１２０と：
【００３６】
【表１】
2007531154.tif 000003
【００３７】
以下のセキュリティ記述子を有する関連セキュリティ記述子ストア１３０：
【００３８】
【表２】
2007531154.tif 000004
【００３９】
この例では、ユーザのジェフが「全エントリ」についてデータベース１２０（表１）にクエリを出す場合、「ジェフ」がデータベースエンジン１１０に対してクエリと共に与えられたユーザコンテキストである。次いで、データベースエンジン１１０は、データベース１２０にクエリを出し、予備的に３つのローすべてを受信する。しかし、次いでデータベースエンジン１１０は３つのローのそれぞれに関連するセキュリティ記述子ストア１３０に記憶されたセキュリティ情報を検索し、ユーザコンテキストに基づき、１番目のローがユーザのジェフが読み取ることを認証された唯一のローであるので１番目のローのみが返される。ただし、アドミニストレータが同一のクエリ（例えば「全エントリ」）を実行する場合は、アドミニストレータが３つのローすべての読取りおよび／または書込みを認証されているので、３つのローすべてが返される。
【００４０】
本発明の態様では、ポリシー仕様の一部として、ＳＱＬプログラミング言語（例えば「ＴＳＱＬ」）に（１つまたは複数の）記述子ストア１３０、３００（例えばアクセス制御リスト）の作成、変更および削除を可能にする新たな１組のステートメントが付加される。この（１つまたは複数の）セキュリティ記述子ストア１３０、３００（例えばアクセス制御リスト）は、他のセキュリティ関連情報を含んでよい。例えば、セキュリティ記述子は、テーブル内のローから独立して与えられてもよく、複数のローまたはデータベースシステム内の他のエンティティに共有されてもよく、ローに関連して誰に対していつどのパーミッションを許可するかまたは拒絶するかに関するポリシーを具現化してもよい。
【００４１】
従来のリレーショナルデータベースでは、セキュリティポリシーはテーブルのローとは関連しない。したがって、本発明の態様によると、データベースシステム内の特定のテーブルのローがセキュリティポリシーによって保護されていることを示すために、テーブルを作成し変更するためのＳＱＬステートメントはその事実を示すように拡張される。これらのテーブルの定義におけるカラムのうち１つは、場合により、そのカラムがセキュリティポリシーを具現化していることを示す属性を備えて拡張可能である。このカラムの値は、先に説明したセキュリティ記述子の識別値を参照する（例えば４バイトコード）。一例では、カラムの値がＮＵＬＬである場合、このローはどのポリシーによっても守られない。あるいは、そのローに対するアクセス制御のポリシーは、対応するセキュリティ記述子、およびセキュリティ記述子ストア１３０、３００に記憶された関連情報に基づいて区別される。他の例では、カラムのデフォルト値は、テーブルのデフォルトセキュリティポリシーを具現化するセキュリティ記述子の識別値に設定されてもよい。
【００４２】
システム１００、データベースエンジン１１０、データベース１２０、および／またはセキュリティ記述子ストア１３０は、用語として本明細書で定義されるように、コンピュータコンポーネントであってよいことを理解されたい。
【００４３】
次いで図４を参照すると、本発明の態様によるデータベースに対する安全なアクセスを支援するシステム４００が示されている。システム４００は、データベースエンジン１１０、データベース１２０、セキュリティ記述子ストア１３０、およびクエリコンポーネント４１０を含む。クエリコンポーネント４１０は、クエリオプティマイザ（ｑｕｅｒｙ  ｏｐｔｉｍｉｚｅｒ）４２０およびクエリエグゼキュータ（ｑｕｅｒｙ  ｅｘｅｃｕｔｏｒ）４３０を含んでよい。場合により、クエリコンポーネント４１０およびデータベースエンジン１１０がクエリデータベースエンジンコンポーネント４４０を形成してよい。
【００４４】
クエリがクエリコンポーネント４１０に提示されると、クエリオプティマイザ４２０はそのクエリに回答するための「最善の方法（ｂｅｓｔ  ｗａｙ）」を決定する（「最適化」）。例えば、クエリコンポーネント４１０はコストに基づいた最適化戦略を採用して、それにより、クエリを実行する最も低コストの方法をプランとして選択してよい。
【００４５】
最適化処理が単純ではないことは当業者には理解されよう。クエリコンポーネント４１０はプランを列挙して高価なプランを除外する際に最先端の技術を用いてよい。テーブル上の索引が、それらテーブルのデータにアクセスするコストを低減するのに重要な役割を果たす。本発明を実行するのに適した任意の種類の最適化処理が使用可能であり、そのような種類の最適化技術はすべて添付の特許請求の範囲に入ることが意図されることを理解されたい。
【００４６】
重要なことであるが、セキュリティ記述子の形のセキュリティポリシーにより安全にされたテーブルのローがアクセスされた場合、データベースエンジン１１０は、複数のローをクエリ結果を構築するための入力として一様に検討する前に、各ローに関連したセキュリティ記述子により決定されたポリシーに基づいて、クエリのリクエスタがローを読み取るパーミッションを持つことを検証することによってセキュリティポリシーを実施する。本明細書に記載されたセキュリティモデルは、ローに関連したセキュリティ記述子の成功裏の評価に対してクエリを実行するプリンシパルに対するそのローの可視性を均等化することを当業者は理解されよう。
【００４７】
従来のデータベースセキュリティシステムでは、最初のクエリの一部として、ローがアクセス可能であるか確認する条件を付け足すことによりセキュリティポリシーが実行されていた。最近のリレーショナルデータベースシステムでは、実行されるクエリプランはリクエスタにより実際に提示されたクエリとまったく異なることが多い。テーブルアクセスの再順序付けが、ローにアクセスするコストを低減するために行われる。この再順序付けの悪い効果として、クエリを実行する悪意のある人物がクエリの一部として副作用機能を設けることにより余分なデータを見る可能性がある。最も一般的なデータベースセキュリティシステムは、ファイングレーンアクセス制御の実施を試みるために用いられた場合に、そのようなスプーフィング攻撃を受けやすい。
【００４８】
この問題を打破し、同時に最適化処理を妨げないようにするため、本発明は、テーブルに対するすべてのアクセスパスがセキュリティ記述子を有するカラムを含むことを確実にする新規なスキームを提供する。テーブルに対するそれらのアクセスパスは、ヒープ（順序付けされていないコレクション）またはテーブル上のクラスタ化または非クラスタ化索引として記憶されたテーブル自体、および、場合によりそのテーブル上で定義された具現化ビュー（ｍａｔｅｒｉａｌｉｚｅｄ  ｖｉｅｗ）を含み、ただしそれに限定されるものではない。すべてのアクセスパスでセキュリティ記述子カラムを含む結果、クエリ最適化はファイングレーンセキュリティの実行に対して独立になる（ｂｅｃｏｍｅｓ  ｏｒｔｈｏｇｏｎａｌ）。したがって、どのようにクエリが再順序付けされるか（例えば、クエリオプティマイザ４１０によって最適化されるか）にかかわらず、ロー（例えば、テーブル、インデックス、具現化ビュー、および他の任意のアクセスパス中のデータ要素はすべて「ロー」とみなされる）が任意の定義されたアクセスパスを介してフェッチされるとき、関連する２つの情報ピース（ｐｉｅｃｅｓ  ｏｆ  ｉｎｆｏｒｍａｔｉｏｎ）、すなわちローに関連するセキュリティポリシーおよび現在のユーザコンテキストが入手可能である。その結果、クエリを最適化（再順序付け）する利点を損なうことなく完全にスプーフィング不可能なセキュリティの実行が得られる。
【００４９】
そのようなスプーフィング不可能なスキームは、ローに関するセキュリティ情報がそのローの部分的または十分に冗長な各コピー（例えば索引レコード）を伴って物理的に記憶され、任意のローがエマネート（ｅｍａｎａｔｅ）される毎にセキュリティの実行が行われて結果のセットを構築するという事実によって可能になることを理解されたい。
【００５０】
したがって、本発明は、オペレーティングシステムが持続的エンティティ上でセキュリティポリシーを定義する方法を大きく変えることなく、すなわちセキュリティ記述子を用いて、持続的エンティティセットに対するセット指向の操作を可能にする。
【００５１】
システム４００、クエリコンポーネント４１０、クエリオプティマイザ４２０、および／またはクエリエグゼキュータ４３０は本明細書で用語として定義するようにコンピュータコンポーネントであってよいことを理解されたい。
【００５２】
図５を参照すると、本発明の態様によるデータベースに対する安全なアクセスを支援するシステム１００が示されている。システム５００は、データベースエンジン１１０、データベース１２０、セキュリティ記述子ストア１３０、クエリコンポーネント４１０、およびユーザセッションキャッシュ５１０を含む。
【００５３】
システム５００は、ユーザのセッションに関連するユーザセッションキャッシュ５１０を使用する。キャッシュ５１０は、現在のセキュリティコンテキストがセキュリティ記述子に関して所与のパーミッションを有するかどうかの計算結果を記憶する。したがって、プリンシパルがセキュリティ記述子が与えられたオブジェクトにアクセスしたかどうかを確認するための試験はクエリ毎に一度評価される。テーブル中の２つのローが同一のセキュリティポリシーを有する、すなわち同一のセキュリティ記述子を有する場合、クエリのイニシエータがそのローにアクセスしたか否かの結果は最初に評価され、その結果はキャッシュ５１０に記憶される。保持された結果は次のローに対して使用される。
【００５４】
キャッシュ５１０は、多くのローが同一のセキュリティポリシーを有する（これは、例えばファイルシステムや類似のアプリケーションであり得ることである）場合にきわめて有効である。
【００５５】
システム５００および／またはユーザセッションキャッシュは、用語として本明細書で定義するように、コンピュータコンポーネントであってよいことを理解されたい。
【００５６】
先に述べたように、（１つまたは複数の）システム１００、４００、および／または５００は、（１つまたは複数の）ファイル、フォルダ、コンタクト、電子メールメッセージ、およびデータベース内の他の持続的エンティティに対する安全なアクセスを支援するために使用してよい。例えば、ファイルシステムに関連するデータベースは、ファイルおよび／またはフォルダに関する情報を記憶できる１つまたは複数のテーブルを含んでよい。（１つまたは複数の）システム１００、４００、および／または５００が上記テーブルを使用し、それにより標準リレーショナル技法を用いて情報を吟味および調査できるようにしてもよい。（１つまたは複数の）システム１００、４００、および／または５００は、セットベースの関連クエリ能力を維持しながら持続的エンティティに対する特徴的アクセスポリシーを定義および実行できるセキュリティアーキテクチャを必要とする持続的ファイルシステムスキームの必要性に対処することによりファイルシステムを強化できる。
【００５７】
図６〜８を簡単に参照すると、本発明を実施できる方法が示されている。説明を簡単にする目的で、これらの方法を一連のブロックとして図示し説明するが、本発明はブロックの順序によって限定されるものではないことを理解されたい。本発明によると、いくつかのブロックは異なる順序で行われてもよく、および／または本明細書で図示し説明する他のブロックと同時に行われてもよい。さらに、図示したブロックのすべてを本発明の方法を実行するために必要にしなくてもよい。
【００５８】
本発明を、１つまたは複数のコンポーネントで実行可能なプログラムモジュール等のコンピュータ実行可能命令の一般的文脈で説明してきた。一般に、プログラムモジュールには、ルーチン、プログラム、オブジェクト、データ構造（特定のタスクを実行し、または特定の抽象データタイプを実装する）等が含まれる。通常、プログラムモジュールの機能は、必要に応じて様々な形態で組み合わされ、または分散される。
【００５９】
図６は、本発明の態様によるデータベース６００に記憶されたデータに安全にアクセスする方法を示す。６１０で、クエリおよびユーザコンテキスト情報を受信する。６２０で、クエリが（例えば、クエリコンポーネント４１０により）実行される。６３０で、クエリを満足する各ローに対して、そのローに関連するセキュリティ記述子をユーザコンテキスト情報が満足した場合にのみ、そのローをクエリ出力を構築する際の入力とみなす。
【００６０】
次いで、図７を参照すると、本発明の態様によるデータベース７００に記憶されたデータに安全にアクセスする方法が示されている。７１０で、クエリおよびユーザコンテキスト情報を受信する。７１４で、クエリ結果を構築する際に検討するべきローがフェッチされる。７２０で、ローのセキュリティ記述子をユーザコンテキスト情報が満足するかどうかについて判定が行われる。７２０の判定がＮＯの場合、処理は７３０に進む。７３０の判定がＹＥＳの場合、７４０で、そのローがクエリ結果に寄与するかどうかを判定する。７４０の判定がＮＯの場合、処理は７１４に進む。７４０の判定がＹＥＳの場合、７５０で、そのローがクエリ結果を構築するのに使用される。
【００６１】
７３０では、さらに（１つまたは複数の）ローがあるかどうかについて判定が行われる。７３０での判定がＹＥＳの場合、処理は７２０に進む。７３０の判定がＮＯの場合、その後の処理は行われない。
【００６２】
図８を参照すると、本発明の態様による安全なデータベース８００を支援する方法が示されている。８１０で、セキュリティ記述子カラムを有するテーブルが作成される。８２０で、そのテーブルに関連するセキュリティ記述子ストアが作成される。８３０で、テーブルがポピュレートされる（例えば、そのテーブルの少なくとも１つのローはセキュリティ記述子の識別子を有する）。
【００６３】
８４０で、クエリおよびユーザコンテキスト情報を受信する。８５０で、ユーザコンテキスト情報およびテーブルの（１つまたは複数の）セキュリティ記述子を用いて、クエリが最適化され実行される。８６０で、最適化されたクエリについての結果がクエリに対する応答として提供される。
【００６４】
本発明の様々な態様についてさらなる文脈を提示するために、図９および以下の説明により、本発明の様々な態様を実施できる好適な動作環境９１０についての簡単かつ包括的な説明を与えることが意図される。本発明は、１つまたは複数のコンピュータまたは他のデバイスで実行されるプログラムモジュール等のコンピュータ実行可能命令の一般的な文脈で説明されるが、本発明は他のプログラムモジュールとの組合せで実施してもよく、および／またはハードウェアとソフトウェアとの組合せとして実施されてもよいことを当業者は理解されよう。ただし、一般に、プログラムモジュールには、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造（特定のタスクを実行し、または特定のデータタイプを実装する）等が含まれる。オペレーティング環境９１０は、好適な動作環境の一例に過ぎず、本発明の使用または機能の範囲についていかなる限定も示す意図はない。本発明で用いるのに好適になり得る他の周知のコンピュータシステム、環境、および／または構成は、パーソナルコンピュータ、手持ち型またはラップトップ型のデバイス、マルチ処理システム、マイクロプロセッサベースのシステム、プログラム可能消費者向け電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記システムまたはデバイスを含む分散コンピューティング環境、等を含み、かつそれらに限定されない。
【００６５】
図９を参照すると、本発明の様々な態様を実施する例示的環境９１０はコンピュータ９１２を含む。コンピュータ９１２は、処理ユニット９１４、システムメモリ９１６、およびシステムバス９１８を有する。システムバス９１８は、システムメモリ９１６から処理ユニット９１４までを非限定に含むシステムコンポーネントに結合している。処理ユニット９１４は利用可能な各種プロセッサのどれでもよい。デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャも処理ユニット９１４として使用可能である。
【００６６】
システムバス９１８は、メモリバスまたはメモリコントローラ、周辺バスまたは外部バス、ならびに／または、８ビットバス、ＩＳＡ（Ｉｎｄｕｓｔｒｉａｌ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）、ＭＳＡ（Ｍｉｃｒｏ−Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）、ＥＩＳＡ（Ｅｘｔｅｎｄｅｄ  ＩＳＡ）、ＩＤＥ（Ｉｎｔｅｌｌｉｇｅｎｔ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ）、ＶＬＢ（ＶＥＳＡ  Ｌｏｃａｌ  Ｂｕｓ）、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）、ＡＧＰ（Ａｄｖａｎｃｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）、ＰＣＭＣＩＡ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ  Ｍｅｍｏｒｙ  Ｃａｒｄ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ａｓｓｏｃｉａｔｉｏｎ  ｂｕｓ）およびＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｆａｃｅ）を非限定に含む任意の各種利用可能なバスアーキテクチャを用いた局所バスを含むいくつかの種類のバス構造のうちどれであってもよい。
【００６７】
システムメモリ９１６は、揮発性メモリ９２０および不揮発性メモリ９２２を含む。起動時などにコンピュータ９１２内の要素間で情報を伝達する基本ルーチンを含む基本入出力システム（ＢＩＯＳ）は、不揮発性メモリ９２２に記憶される。非限定の例として、不揮発性メモリ９２２は、読出専用メモリ（ＲＯＭ）、プログラム可能ＲＯＭ（ＰＲＯＭ）、電気的プログラム可能ＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＲＯＭ（ＥＥＰＲＯＭ）、またはフラッシュメモリを含んでよい。揮発性メモリ９２０は、外部キャッシュメモリとして機能するランダムアクセスメモリ（ＲＡＭ）を含む。非限定の例として、ＲＡＭは、シンクロナスＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレートＳＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）、エンハンストＳＤＲＡＭ（ＥＳＤＲＡＭ）、シンクリンクＤＲＡＭ（Ｓｙｎｃｈｌｉｎｋ  ＤＲＡＭ：ＳＬＤＲＡＭ）、およびダイレクトＲａｍｂｕｓ  ＲＡＭ（ｄｉｒｅｃｔ  Ｒａｍｂｕｓ  ＲＡＭ：ＤＲＲＡＭ）等の多くの形態で利用できる。
【００６８】
またコンピュータ９１２は、着脱可能／着脱不可能な、揮発性／不揮発性のコンピュータストレージ媒体を含む。図９は例として、ディスクストレージ９２４を示す。ディスクストレージ９２４は、磁気ディスクドライブ、フロッピー（登録商標）ディスクドライブ、テープドライブ、Ｊａｚドライブ、Ｚｉｐドライブ、ＬＳ−１００ドライブ、フラッシュメモリカード、またはメモリスティックなどのデバイスを含み、かつそれらに限定されない。さらに、ディスクストレージ９２４はストレージメディアを別個にまたは他のストレージメディアと組み合わせて含んでよく、コンパクトディスクＲＯＭデバイス（ＣＤ−ＲＯＭ）、ＣＤ記録可能ドライブ（ＣＤ−Ｒ  Ｄｒｉｖｅ）、ＣＤ書込可能ドライブ（ＣＤ−ＲＷ  Ｄｒｉｖｅ）、またはデジタルバーサタイルディスクＲＯＭドライブ（ＤＶＤ−ＲＯＭ）等の光ディスクドライブを非限定に含む。ディスクストレージデバイス９２４とシステムバス９１８との接続を支援するために、典型的にはインターフェース９２６等の着脱可能または着脱不可能なインターフェースが使用される。
【００６９】
図９は好適な動作環境９１０で示したユーザと基本コンピュータリソースとの間で仲介として機能するソフトウェアを示していることを理解されたい。このようなソフトウェアはオペレーティングシステム９２８を含む。ディスクストレージ９２４に記憶してよいオペレーティングシステム９２８は、コンピュータシステム９１２のリソースを制御し割り振るように機能する。システムアプリケーション９３０は、システムメモリ９１６またはディスクストレージ９２４に記憶されたプログラムモジュール９３２およびプログラムデータ９３４を用いたオペレーティングシステム９２８によるリソース管理を利用する。本発明は様々なオペレーティングシステムまたはオペレーティングシステムの組合せを用いて実施できることを理解されたい。
【００７０】
ユーザは（１つまたは複数の）入力デバイス９３６を介してコンピュータ９１２にコマンドまたは情報を入力する。入力デバイス９３６には、マウス、トラックボール、スタイラス、タッチパッド等のポインティングデバイス、キーボード、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ、ＴＶチューナカード、デジタルカメラ、デジタルビデオカメラ、ウェブカメラ等が含まれるが、それらに限定されない。上記および他の入力デバイスは、（１つまたは複数の）インターフェースポート９３８を介してシステムバス９１８を経由して（１つまたは複数の）処理ユニット９１４に接続する。（１つまたは複数の）インターフェースポート９３８は例えば、シリアルポート、パラレルポート、ゲームポートおよびユニバーサルシリアルバス（ＵＳＢ）を含む。（１つまたは複数の）出力デバイス９４０は、（１つまたは複数の）入力デバイス９３６と同じ種類のポートのあるものを使用する。したがって、例えば、ＵＳＢポートを用いてコンピュータ９１２に対して入力を与えてもよく、コンピュータ９１２から出力デバイス９４０に情報を出力してもよい。出力アダプタ９４２は、モニタ、スピーカ、およびプリンタ（これは他の出力デバイス９４０中でも特殊なアダプタを必要とする）等のいくつかの出力デバイス９４０があることを示すために設けられている。出力アダプタ９４２は、非限定的な例として、出力デバイス９４０とシステムバス９１８との間に接続手段を提供するビデオおよびサウンドカードを含む。他のデバイスおよび／またはデバイスのシステムが（１つまたは複数の）遠隔コンピュータ９４４等の入力ならびに出力機能を提供することを理解されたい。
【００７１】
コンピュータ９１２は、（１つまたは複数の）遠隔コンピュータ９４４等の１つまたは複数の遠隔コンピュータに対する論理接続を用いたネットワーク環境で動作してよい。（１つまたは複数の）遠隔コンピュータ９４４は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ワークステーション、マイクロプロセッサベースの機器、ピアデバイス、または他の共通ネットワークノード等であってよく、典型的にはコンピュータ９１２に関して説明した諸要素の多くまたはすべてを含む。話を簡単にするために、メモリストレージデバイス９４６だけを（１つまたは複数の）遠隔コンピュータ９４４と共に示す。（１つまたは複数の）遠隔コンピュータ９４４はネットワークインターフェース９４８を介してコンピュータ９１２に接続され、次いで通信接続９５０を介して物理的に接続される。ネットワークインターフェース９４８は、ローカルエリアネットワーク（ＬＡＮ）および広域ネットワーク（ＷＡＮ）等の通信ネットワークを包含する。ＬＡＮ技術は、ＦＤＤＩ（Ｆｉｂｅｒ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｄａｔａ  Ｉｎｔｅｒｆａｃｅ）、ＣＤＤＩ（Ｃｏｐｐｅｒ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｄａｔａ  Ｉｎｔｅｒｆａｃｅ）、Ｅｔｈｅｒｎｅｔ（登録商標）／ＩＥＥＥ  ８０２．３、Ｔｏｋｅｎ  Ｒｉｎｇ／ＩＥＥＥ  ８０２．５等を含む。ＷＡＮ技術は、ポイントツーポイントリンク、ＩＳＤＮ（Ｉｎｔｅｇｒａｔｅｄ  Ｓｅｒｖｉｃｅｓ  Ｄｉｇｉｔａｌ  Ｎｅｔｗｏｒｋ）およびそれに対する変形例等の回路交換ネットワーク、パケット交換ネットワーク、およびＤＳＬ（Ｄｉｇｉｔａｌ  Ｓｕｂｓｃｒｉｂｅｒ  Ｌｉｎｅ）を含み、かつそれらに限定されない。
【００７２】
（１つまたは複数の）通信接続９５０は、ネットワークインターフェース９４８をバス９１８に接続するために使用するハードウェア／ソフトウェアを示している。通信接続９５０は明確な例示としてコンピュータ９１２の内部に示されているが、コンピュータ９１２の外部にあってもよい。ネットワークインターフェース９４８に対する接続に必要なハードウェア／ソフトウェアは、単なる例示目的として、通常電話グレードモデム、ケーブルモデムおよびＤＳＬモデムを含むモデム、ＩＳＤＮアダプタ、ならびにＥｔｈｅｒｎｅｔ（登録商標）カード等の内部および外部技術を含む。
【００７３】
上述した内容は本発明のいくつかの例を含む。もちろん、本発明を説明する目的で各構成要素および方法の想到し得るすべての組合せを記載することは不可能である。しかし、当業者は本発明のさらに多くの組合せおよび変更が可能であることを理解されよう。したがって、本発明は、添付の特許請求項の精神と範囲にあるすべての改変例、変更例および変形例を包含することが意図される。さらに、用語「含む（ｉｎｃｌｕｄｅｓ）」が詳細な説明または特許請求項で用いられる範囲では、その用語は、「備える（ｃｏｍｐｒｉｓｉｎｇ）」という用語が請求項で移行語として使用される場合に解釈されるのと同様に包含的なものであることが意図される。
【図面の簡単な説明】
【００７４】
【図１】本発明の態様によるデータベースに対する安全なアクセスを支援するシステムの概略図である。
【図２】本発明の態様による例示的テーブルの概略図である。
【図３】本発明の態様による例示的セキュリティ記述子ストアの概略図である。
【図４】本発明の態様によるデータベースに対する安全なアクセスを支援するシステムの概略図である。
【図５】本発明の態様によるデータベースに対する安全なアクセスを支援するシステムの概略図である。
【図６】本発明の態様によるデータベースに記憶されたデータに安全にアクセスする方法の流れ図である。
【図７】本発明の態様によるデータベースに記憶されたデータに安全にアクセスする方法の流れ図である。
【図８】本発明の態様による安全なデータベースを支援する方法の流れ図である。
【図９】本発明が機能できる動作環境の例を示す図である。
【図１】
2007531154.tif 000005
【図２】
2007531154.tif 000006
【図３】
2007531154.tif 000007
【図４】
2007531154.tif 000008
【図５】
2007531154.tif 000009
【図６】
2007531154.tif 000010
【図７】
2007531154.tif 000011
【図８】
2007531154.tif 000012
【図９】
2007531154.tif 000013
【国際調査報告】
2007531154.tif 000014