JP2005228312A - 行レベルのデータベースセキュリティを最適化するシステムおよび方法 - Google Patents

行レベルのデータベースセキュリティを最適化するシステムおよび方法 Download PDF

Info

Publication number
JP2005228312A
JP2005228312A JP2005026874A JP2005026874A JP2005228312A JP 2005228312 A JP2005228312 A JP 2005228312A JP 2005026874 A JP2005026874 A JP 2005026874A JP 2005026874 A JP2005026874 A JP 2005026874A JP 2005228312 A JP2005228312 A JP 2005228312A
Authority
JP
Japan
Prior art keywords
security
expression
query
data
row
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2005026874A
Other languages
English (en)
Other versions
JP4698243B2 (ja
Inventor
Girsh Chander
チャンデル ギリシュ
James R Hamilton
アール.ハミルトン ジェームズ
Laurentiu B Cristofor
ビー.クリストファ ラウレンチウ
Rodger N Kline
エヌ.クライン ロジャー
Tanmoy Dutta
ダッタ タンモイ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005228312A publication Critical patent/JP2005228312A/ja
Application granted granted Critical
Publication of JP4698243B2 publication Critical patent/JP4698243B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F16ENGINEERING ELEMENTS AND UNITS; GENERAL MEASURES FOR PRODUCING AND MAINTAINING EFFECTIVE FUNCTIONING OF MACHINES OR INSTALLATIONS; THERMAL INSULATION IN GENERAL
    • F16KVALVES; TAPS; COCKS; ACTUATING-FLOATS; DEVICES FOR VENTING OR AERATING
    • F16K15/00Check valves
    • F16K15/02Check valves with guided rigid valve members
    • F16K15/06Check valves with guided rigid valve members with guided stems
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F16ENGINEERING ELEMENTS AND UNITS; GENERAL MEASURES FOR PRODUCING AND MAINTAINING EFFECTIVE FUNCTIONING OF MACHINES OR INSTALLATIONS; THERMAL INSULATION IN GENERAL
    • F16KVALVES; TAPS; COCKS; ACTUATING-FLOATS; DEVICES FOR VENTING OR AERATING
    • F16K27/00Construction of housing; Use of materials therefor
    • F16K27/02Construction of housing; Use of materials therefor of lift valves
    • F16K27/0209Check valves or pivoted valves

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Databases & Information Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mechanical Engineering (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】 SQLエクステンションを利用して名前付きセキュリティ式を作成しクエリ開始元に関連付けることによってデータベースの行レベルのセキュリティを容易にする。
【解決手段】 式はブール式を含み、データがクエリ開始元からアクセス可能になるためには、式がそのデータ行によって満たされなければならない。クエリはセキュリティ式で増補され、セキュリティ式は集約されてデータ行の照会中に利用される。本発明はセキュリティ式をクエリ内で様々に配置して性能を最適化し情報漏洩を軽減する。これは、セキュリティ式を特別にタグ付けし、述語規則を利用して、静的および/または動的分析によって決定されるように非セキュリティ式が安全である可能性に応じて非セキュリティ式をセキュリティ式よりも上または下にすることによって達成される。
【選択図】 図1

Description

本発明は一般にデータベースに関し、より詳細には、クエリを行レベルのセキュリティ式で増補して、性能を最適化しデータ漏洩を軽減するシステムおよび方法に関する。
コンピュータハードウェア、ソフトウェア、ネットワーキングにおける技術的進歩は、例えば紙や電話による通信などの従来技法を介してではない、電子的な情報交換の需要の増大につながった。このような電子通信は、全世界のほぼ任意の2つの位置間で、瞬間的かつ信頼性のあるデータ転送を提供することができる。多くの産業および消費者は、このような技術を活用して、ウェブベースの(例えばオンライン)サービスを介して効率を高め、コストを削減している。例えば消費者は、家で都合のよい時にマウスのクリックで商品を購入したり、銀行明細を見たり、製品および会社を調査したり、リアルタイムの株相場を得たり、パンフレットをダウンロードしたりすることができる。
利用可能な電子データの量が増加するにつれて、このようなデータを、ユーザフレンドリで素早いデータ検索および取出しを容易にする管理可能な方式で記憶することがより重要になる。今日、一般的な手法の1つは、電子データを1つまたは複数のデータベースに記憶することである。一般に、典型的なデータベースの1つは、例えばコンピュータプログラムがデータを素早く検索および選択できるように構築された、組織的な情報の集合である。従来、データベース内に記憶されたデータは1つまたは複数のテーブルによって構成され、各テーブルはレコードのセットを含み、レコードはフィールドのセットを含む。レコードは一般にテーブル内の行として索引付けされ、レコードフィールドは一般に列として索引付けされ、それにより、行/列の対はテーブル内の特定データを参照することができる。
データベースに記憶されたデータは、しばしば個人情報(例えば銀行口座や社会保障番号)および機密情報(例えば医療記録)を含み、ハードコピーによってバックアップされないことがある。したがって、データベースおよびそれに記憶されたデータに関するセキュリティの重要性が高まっている。しかし、現在のデータベースセキュリティ技法の多くは、例えばソフトウェアホールおよび/または悪意あるソフトウェアハッカーによって破られる可能性があるか、あるいは包括的なレベルのセキュリティを提供しないものである。
本発明のいくつかの態様の基本的な理解を提供するために、以下に本発明の簡単な概要を提示する。この概要は、本発明の広範な概観ではない。また、本発明の鍵となる要素またはクリティカルな要素を識別するものでもなく、本発明の範囲を線引きするものでもない。この概要の唯一の目的は、後で提示するより詳細な記述への前置きとして、本発明のいくつかの概念を簡単な形で提示することだけである。
本発明のシステムおよび方法は、向上した構文を提供することによってデータベースの行レベルのセキュリティを容易にするものであり、向上した構文を利用して、名前付きセキュリティ式を作成してそれらを1つまたは複数のクエリ開始元に関連付けることができる。このような式は、データがクエリ開始元からアクセス可能になるためにはそのデータ行によって満たされなければならない、任意のブール式として表される述語を含むことができる。一般に、行レベルのセキュリティが有効になっているとき、受け取ったクエリは、クエリ開始元に関連するセキュリティ式で増補される。これらの式は、データ行を照会する間に利用され、これらのセキュリティ式を満たす(または「真」に評価される)行は、クエリ開始元からアクセス可能になる。特定の一実施例では、受け取ったクエリは、満たされるときに行アクセスを許可するブール式の離接と、満たされるときに行アクセスを拒否するブール式の補集合の合接との合接からなる式を接合することによって増補される。言い換えれば、少なくとも1つの許可式が満たされるときであってどの拒否式も満たされないときに集約的なセキュリティ式を行データが満たすように、クエリは増補される。
このシステムおよび方法は、クエリ性能を最適化するために、セキュリティ式を含めた式をクエリ内で様々に配置および移動することができる。従来の技法は、1つまたは複数のセキュリティ式を他の式よりも先に評価すべきかどうかを考慮しない。したがって、従来のシステムは漏洩を被りやすく、その場合ユーザは、ユーザに見えるべきでないデータへのアクセスを得ることができる。本発明はこのような漏洩を軽減する。通常これは、セキュリティ式を特別にタグ付けして、セキュリティ式と非セキュリティ式を区別することによって達成される。次いで、述語移動規則を利用して、データ漏洩の軽減を容易にすることができる。これらの規則は、制限された状況下でのみ、非セキュリティ式がセキュリティ式よりも上または下にくることができるようにするものである。多くの場合、コンパイル時に静的分析を実施して、式が「安全な」式かどうか、または情報開示のリスクなしに実行できる式かどうかを判定することができる。他の場合では、別法としてまたは追加で実行時に動的分析を実施して、式が「安全な」式かどうかを判定することができる。動的分析では、通常、セキュリティ述語がうまく実行されたときに、かつ/または安全違反(例えばエラー条件、割込み、イベントなど)が起こらないときに、結果が返され、変更が加えられる。静的と動的の両方の分析で、安全違反が見つからなかった場合は、性能を向上させるように式の配置順序を決定することができる。しかし、安全違反が検出された場合は、クエリをアボートするか、または「セーフ」モードで実行することができ、その場合、セキュリティ式は非セキュリティ式が実行される前に評価される。一般に、論理演算は「安全」とみなされる。
セキュリティ式は、SQLなどのデータベース言語を介してクエリ開始元に関連付けることができる。例えば、セキュリティ式はSQL CREATEユーティリティを使用して作成することができる。作成されたセキュリティ式は、SQL GRANTまたはSQL DENYユーティリティを介してクエリ開始元に関連付けることができる。許可および/または拒否セキュリティ式はSQL REVOKEユーティリティを介して取り消すことができ、セキュリティ式はSQL DROPユーティリティを介して削除することができる。このようなセキュリティ式は通常、クエリに組み込まれ、データを照会するときに利用される。一般に、許可セキュリティ式は、行が許可セキュリティ式を満たすときにデータ行へのアクセスを提供するセキュリティ式であり、拒否セキュリティ式は、行が拒否セキュリティ式を満たすときにデータ行へのアクセスを禁止するセキュリティ式である。前述のように、複数のセキュリティ式を1つのクエリ開始元に関連付けることができ、したがって、許可と拒否の両方のセキュリティ式をユーザに関連付けることができる。通常、拒否セキュリティ式は許可よりも優先され、したがって、両方のタイプのセキュリティ式を満たす行は、クエリ開始元に利用可能にはならない。加えて、拒否セキュリティ式の補集合を利用することもでき、それにより、データ行を複数のセキュリティ式で評価することから得られる集約的な結果は、少なくとも1つの許可セキュリティ式が満たされるときであってどの拒否セキュリティ式も満たされないときに「真」になる。
従来、セキュリティを行に関連付けるためには、各行を識別する必要があった。しかし、多くのデータベースプログラミング言語は、テーブル中の各行をアドレスで識別することを含まない。場合により、主キーをテーブルに対するアドレスとして利用することはできる。しかし、あらゆるテーブルに主キーが関連付けられているわけではない。さらに、テーブル中には多くの行がある場合があるので、テーブル中の各行を個々に識別できるようにセキュリティを関連付けることは、データ管理問題につながる可能性がある。さらに、セキュリティ情報を各行に記憶することは非効率的であって空間を消費する可能性があり、特に、各行に記憶される値があまり大きくない場合はそうである。加えて、多くのデータベースプログラミング言語は、セキュリティを指定できるための構文を規定しているが、これはテーブル、あるいはテーブルを構成する1つまたは複数の列に対するセキュリティ指定であり、各行に対するものではない。本発明の新規なシステムおよび方法を利用して、向上したSQL構文を介して前述の欠点を緩和することができる。
以下の記述および添付の図面に、本発明のいくつかの例示的な態様を詳細に示す。ただし、これらの態様は、本発明の原理を採用することのできる様々な方法のいくつかだけを示すものであり、本発明はこのような態様およびその均等物すべてを含むものとする。本発明のその他の利点および新規な特徴は、以下の本発明の詳細な記述を図面と共に考察したときに明らかになるであろう。
本明細書で使用する用語「コンポーネント」「システム」「マネージャ」などは、ハードウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかであるコンピュータ関連エンティティを指すものとする。例えばコンポーネントは、限定しないが、プロセッサ上で実行されているプロセス、プロセッサ、オブジェクト、実行ファイル、実行のスレッド、プログラム、および/またはコンピュータとすることができる。例として、サーバ上で実行されているアプリケーションもサーバも両方とも、コンポーネントとすることができる。1つまたは複数のコンポーネントが1つのプロセスおよび/または実行スレッド内にあるものとすることができ、また、1つのコンポーネントは1つのコンピュータ上に局所化されてもよく、複数のコンピュータ間で分散されてもよい。
本発明は、行レベルのデータベースセキュリティを実施するためのシステムおよび方法に関する。このようなセキュリティは、同様のセキュリティ特性を有する行の1つまたは複数のセットを論理的にクラスタ化して、これらを、テーブルおよび/またはコンテキストデータ(これらに限定しない)に対して定義されたブール式などの1つまたは複数のプログラミングステートメントを含む名前付き式として共に扱うことを可能にする。クエリの述語を構成して性能を最適化しセキュリティ漏洩を軽減するために、セキュリティ式を様々な形でクエリに増補することができる。加えて、セキュリティ式は集約することができ、それにより、集約が満たされる(例えば「真」を返す)場合はデータ行へのアクセスが提供され、集約が満たされない(例えば「偽」を返す)場合はデータ行へのアクセスが制限されるようにすることができる。
本発明について図面を参照して述べるが、図面を通して、同じ要素を参照するのには同じ参照番号を使用する。以下の記述では、説明の目的で、本発明の完全な理解を提供するための多くの具体的な詳細を示す。ただし、本発明はこれらの具体的な詳細がなくても実施できることは明白であろう。他の場合では、本発明の記述を容易にするために、周知の構造およびデバイスはブロック図の形で示す。
図1に、データ照会時のデータアクセスセキュリティを容易にするシステム100を示す。システム100は、入力コンポーネント110、クエリマネージャ120、出力コンポーネント130を備える。入力コンポーネント110はクエリを受け取る。このようなクエリは、例えばSQLなど、ほぼ任意のデータベースプログラミング言語から開始することができ、1つまたは複数のデータベース、テーブル、コンテキスト情報などを含むデータリポジトリを対象とすることができる。
クエリマネージャ120は、受け取ったクエリを増補して、それにデータセキュリティを組み込むことができる。このようなセキュリティは、データリポジトリ内のデータの所有者が作成することができ、作成されたセキュリティは、この所有者のデータにセキュリティをもたらす。セキュリティは、データの様々なフォーマットまたは構造に適用することができる。例えば、データが行、テーブル、および/または列に関連する場合、セキュリティはこれらのどれにも適用しないこともでき、すべてに適用することもでき、任意の組合せに対して適用することもできる。加えて、セキュリティが満たされるとデータへのアクセスが提供されるか、またはセキュリティが満たされるとデータへのアクセスが禁止されるように、セキュリティを構築することができる。セキュリティは複数の異なるセキュリティで構成されるものとすることができ、そのいくつかはアクセスを提供することができ、そのいくつかはアクセスを禁止することができることを理解されたい。
さらに、テーブルの作成者は、1つまたは複数のセキュリティ式を1つまたは複数の照会元にリンクすることができる。一般に、セキュリティがリンクされていない場合、照会元はどんなデータも見ることができない。セキュリティが照会元にリンクされている場合、照会元は、データが、そのデータへのアクセスを提供する少なくとも1つのセキュリティ式を満たすときであって、そのデータへのアクセスを拒否するセキュリティをどれも満たさないときにのみ、そのデータにアクセスすることができる。通常、アクセス拒否セキュリティはアクセス許可セキュリティよりも優先され、したがって、データが両方のタイプのセキュリティを満たすときは、アクセスは拒否される。加えて、許可と拒否のセキュリティは両方とも、取り消すことができる。以上により、データ所有者は、自分のデータのどの部分に誰がアクセスできるかを選択的に決定することができる。加えて、照会元には免除ステータスの属性を与えることができ、したがってこの照会元にはセキュリティは適用されず、照会元は本質的にすべてのデータにアクセスすることができる。通常、テーブルの所有者は、このようにしてすべての行レベルのセキュリティ制限から免除される。
増補されたクエリは、出力コンポーネント130に搬送することができる。出力コンポーネント130はこのようなクエリを、次の処理に向けて提供することもでき、あるいは、それ自体を含めたデータ照会元コンポーネントに提供することもできる。
図2にデータセキュリティシステム100を示すが、このデータセキュリティシステム100は、入力コンポーネント110、クエリマネージャ120、出力コンポーネント130を備え、さらにオプティマイザ210も備える。前述のように、入力コンポーネント110は、様々に構築されたデータのデータリポジトリに対するクエリの要求を受け取る。クエリマネージャ120は、要求を増補して、それにデータセキュリティ式を組み込む。このようなセキュリティは、データリポジトリ内のデータの所有者が作成することができ、作成されたセキュリティは、この所有者のデータにセキュリティをもたらす。セキュリティは、「真」「偽」や「0」「1」等の2進数値に評価されるブール式など、秘密情報使用許可(security clearance)および制限付きアクセスを示すために定義することのできる式によって規定することができる。
複数の式が利用されるときは、各式を連続的にまたは同時に評価し、個々の結果を集約して(例えば共に論理積および論理和をとって)、判定を下すことができる。先に簡単に示したように、満たされるときにデータへのアクセスを明白に許容(例えば許可)または禁止(例えば拒否)する式を生成することができる。このような式を禁止するデータが満たされると「真」が得られるので、このような式が満たされると「偽」が得られるように補集合を利用することができる。したがって、少なくとも1つの許可式が満たされるときであってどの拒否式も「真」に評価されないときに「真」を返す集約的な式を作成することができる。ブール式を採用することができるが、本発明の一態様により他の技法を利用することもできることを理解されたい。そのような技法は、確率および/または信頼度レベルを提供することができる場合があり、カットオフ点を定義するための調整可能しきい値を組み込むことができる場合がある。
オプティマイザ210は、クエリを最適化するために、セキュリティ式を含めた式をクエリ内に組み込むことおよび移動することができる。従来の技法は、正しく接合された1つまたは複数のセキュリティ式を他の式よりも先に評価すべきかどうかを考慮しない。したがって、従来のシステムは漏洩を被りやすく、その場合ユーザは、ユーザに見えるべきでないデータへのアクセスを得る。本発明はこのような漏洩を軽減する。通常これは、セキュリティ式をクエリに接合するときにセキュリティ式にタグ付けして、セキュリティ式と非セキュリティ式を区別することによって達成される。次いで、オプティマイザ210によって述語移動規則を利用して、情報漏洩の軽減を容易にすることができる。これらの規則により、オプティマイザ210は、制限された種類の非セキュリティ式だけをセキュリティ式よりも上にするか、または制限された種類の非セキュリティ式だけをセキュリティ式よりも下にすることができる。
多くの場合、コンパイル時に静的分析を実施して、式が「安全な」式かどうか、または情報開示のリスクなしに実行できる式かどうかを判定することができる。他の場合では、別法としてまたは追加で実行時に動的分析を実施して、式が本当に「安全な」式かどうかを判定することができる。動的分析では、通常、実行中に安全違反(例えばエラー条件、割込み、イベントなど)を起こさずにクエリがうまく完了したときに、結果が返され、変更が加えられる。静的と動的の両方の分析で、安全違反が見つからなかった場合は、オプティマイザ210は、性能を向上させるように式の配列順序を決定することができる。しかし、安全違反が検出された場合は、クエリをアボートするか、または「セーフ」モードで実行することができ、その場合、セキュリティ式は非セキュリティ式が実行される前に評価される。セキュリティ述語をクエリ中で特別にタグ付けすることによって、このような実行計画が可能である。静的分析では一般に、論理演算は普通「安全」とみなされる。クエリをセキュリティ式で増補してクエリ内の式を最適化すると、クエリを出力コンポーネント130に搬送することができる。出力コンポーネント130は、増補されたクエリを、次の処理またはデータ照会のために提供することができる。
図3にデータセキュリティシステム100を示すが、このデータセキュリティシステム100は、入力コンポーネント110、クエリマネージャ120、出力コンポーネント130、オプティマイザ210を備え、さらに式バンク310も備える。入力コンポーネント110は、連続的におよび/または同時に1つまたは複数のクエリからデータ要求を受け取ることができ、複数の要求は、データリポジトリ内の類似のおよび/または異なるデータに関連するものとすることができる。加えて、複数の要求を連続的におよび/または同時に扱うことができる。多くの場合、要求をキューに入れるために、バッファ(図示せず)などのメモリを利用して、要求関連の情報を一時的に記憶することができる。例えば、優先度のより低い要求を処理している間に、高優先度の符号の付いた要求を受け取ることができ、その場合、優先度のより高い要求がサービスされるまで、優先度のより低い要求をキャッシュしておくことができる。
式バンク310は、1つまたは複数のセキュリティ式ならびに非セキュリティ式を記憶するのに利用することができる。このような式は、1つまたは複数の要求元および/または1つまたは複数の要求元グループに関連付けることができる。式は、要求元を識別したときに式バンク310から取り出すことができる。例えば、受け取ったクエリは、要求元(例えばユーザ、アプリケーションなど)または要求を送ったマシンに関連付けられている、固有の識別子を含む場合がある。別の例では、そのような情報がクエリの前および/または後にくる場合がある。他の例では、インテリジェンスを利用して、要求元および/または適したセキュリティ式のセットを決定することができる。要求に対する取り出したセキュリティ式は、データリポジトリを検索する間に利用することができる。
データ管理者がアプリケーションプログラミングインタフェース(API)(図示せず)を利用して、自分のデータに関係するセキュリティ式を式バンク310中に作成することができることを理解されたい。例えば、SQLプログラミング言語のCREATEユーティリティを利用して、セキュリティ式を作成することができる。例えば以下のSQL構文を利用してセキュリティ式を作成することができる。
CREATE EXPRESSION<expression_name>ON<data_name>AS(<expression>)
上の構文で、<expression_name>は式の名前を指定し、<data_name>はソース(例えば1つまたは複数のテーブル名やそのサブセット)を指定し、<expression>は、行中のデータへのアクセスを得るためにその行によって満たされなければならないセキュリティ式である。前述のように、このような式を特定の要求元および/または要求元グループにリンクすることができる。例えば、SQLを利用するとき、データ管理者は、GRANT、REVOKE、DENYユーティリティを介して、特定のデータソースに対して作成されたセキュリティ式をユーザおよび/またはユーザグループにリンクすることができ、かつ/または、DROPユーティリティを介してセキュリティ式を削除することができる。これについては後で詳細に述べる。
ある特定の実施例では、クエリマネージャ120は、許可ブール式を離接し(例えば論理和をとり)(各式は許可対象である関連するセキュリティプリンシパル(例えばセキュリティ識別)と合接される(例えば論理積がとられる))、得られた離接と、拒否ブール式それぞれの補集合の合接(例えば論理積)(各式は拒否対象であるセキュリティプリンシパルと合接される)とを合接する(例えば論理積をとる)ことで構成された式を接合することによって、クエリを増補することができる。言い換えれば、クエリマネージャは、少なくとも1つの許可式が満たされるときであってどの拒否式も満たされないときにデータがクエリを満たすことができるように、クエリを増補することができる。このような増補済みクエリは、出力コンポーネント130に搬送することができ、データ照会を容易にするのに利用することができる。
図4に、データベースセキュリティを容易にするシステム400を示す。システム400は、データベースへのユーザアクセスポイント405を備える。図示のように、ユーザアクセスポイント405はデスクトップコンピュータである。ただし、ポータブルコンピュータ(例えばラップトップ、タブレットPCなど)、ハンドヘルドコンピュータ(例えばPDA)、ワークステーション、携帯電話機など、任意のマイクロプロセッサベースのデバイスを本発明の一態様により利用することができることは理解できるであろう。
多くの場合、ユーザアクセスポイント405は、より大きいネットワーク/バス(例えばプラント全体または会社全体)内のサブネットワーク/バスに結合されており、サブネットワーク/バスにアカウントを有するユーザは、ユーザアクセスポイント405にログインして、ユーザに与えられた特権(例えば権利、所有権など)の範囲内で、内部にあるエンティティおよびアプリケーションにアクセスすることができる。通常、より細かいレベルの区別が利用され、ネットワークに関連するユーザは、ドメイン、グループ、プロジェクト、仕事の種類、作業グループ、課、部門、ステータスなどに区分され、これらにはそれぞれ、異なる特権を関連付けることができる。加えて、いずれかの同様の区分内のユーザに異なる特権を関連付けることもできる。例えば、複数のユーザをグループ化して、ユーザのうちの1人に、残りのユーザに対する監督者のステータスを与えることができる。このようなユーザは普通、他のユーザを制限する特権を有する。例えば監督者は、別のユーザの、読取りや書込みや実行の特権、特定の情報を閲覧する能力、および/またはインターネット機能を修正することができる。
この実施例では、ユーザはL個のこのようなグループに区分されており、Lは1以上の整数である。L個のグループは、グループ410、グループ410からグループ410までを含み、グループ410と総称することができる。グループ410は、異なるユーザおよび/または同様のユーザを含むことができる。したがって、ある特定のユーザが複数のグループに関連付けられていてもよい。グループ410はM人のユーザを含むものとして示されており、Mは1以上の整数である。M人のユーザは、ユーザ420、ユーザ420からユーザ420までを含む。このようなユーザをユーザ420と総称することができる。ユーザ420のうちの1人がアクセスポイント405にログインすると、ユーザ識別(例えば固有ID、通称など)、グループ名、ドメイン名、作業グループなどを決定することができ、これらを利用してユーザの環境を構成することができる。このような構成には、カスタマイズされたインタフェースを実行することや、データを隠蔽することや、データを公開することや、読取り、書込み、および/または実行の特権を設定することを含めることができる。
このユーザは、クエリマネージャ110を介してデータベース430と通信することができる。例えば、データベース430に対するクエリを送ると、このクエリはクエリマネージャ110が受け取ることができる。クエリマネージャ110は、クエリのソースを得ることができ、かつ/または、ユーザ識別および/またはグループ識別など、その他の様々な特性を得ることができる。クエリマネージャ110は、この情報を利用して、適したセキュリティ式を入手して適用することができる。前述のように、このようなセキュリティは1つまたは複数のブール式を含むことができ、これらの式は、データが基準を満たすときにデータアクセスを可能にする基準、またはデータが基準を満たすときにデータアクセスを緩和する基準に関係するものとすることができる。
セキュリティ式は、式バンク310から得ることができる。このような式は、1つまたは複数の要求元、および/あるいは1つまたは複数の要求元グループに関連するものとすることができ、要求を式に関連付けると、式を取り出すことができる。例えば、受け取ったクエリは、要求元(例えばユーザ、アプリケーションなど)または要求を送ったマシンに関連付けられている、固有の識別子を含む場合がある。別の例では、そのような情報がクエリの前および/または後にくる場合がある。他の例では、インテリジェンスを利用して、要求元および/または適したセキュリティ式のセットを決定することができる。
セキュリティ式は、SQLプログラミング言語を介して作成することができる。例えば、SQL CREATEユーティリティを利用して、テーブルに対する名前付き式を作成することができ、この名前付き式は、データへのアクセスを得るためにデータによって満たされなければならないブール式を指定する。データセキュリティを利用するために、このような式を特定の要求元および/または要求元グループにリンクすることができる。例えば、SQLを利用するとき、データ管理者は、GRANT、REVOKE、DENYユーティリティを介して、特定のデータソースに対するセキュリティ式をユーザおよび/またはユーザグループにリンクすることができ、かつ/またはDROPユーティリティを介してセキュリティ式を削除することができる。これについては後で詳細に述べる。一般に、名前付き式は、その式を満たすほぼすべての行の代理として挙動する。したがって、この技法を利用することにより、テーブル中のすべての行を表現することができ、かつ/または、テーブル上に主キーが存在するときは個々の行を表現することができる。加えて、ほぼ任意の数のセキュリティ式をテーブルに対して定義することができ、テーブルに対して定義された複数の式によって単一の行を満たすことができる。以上のことは、同様のセキュリティ特性を有する行のセットを論理的にクラスタ化してこのセットを名前付き式として扱うための機構を提供する。
クエリマネージャ210は、許可ブール式を離接し(各式は許可対象である関連セキュリティプリンシパルと合接される)、得られた離接と、拒否ブール式それぞれの補集合の合接(各式は拒否対象であるセキュリティプリンシパルと合接される)とを合接することで構成された式を接合することによって、クエリを増補することができる。言い換えれば、クエリマネージャは、少なくとも1つの許可式が満たされるときであってどの拒否式も満たされないときにデータがクエリを満たすことができるように、クエリを増補することができる。
データベース430中のデータに対するセキュリティ式は、データの所有者または管理者が作成することができ、1人または複数のユーザにリンクすることができることを理解されたい。このリンクは、ユーザに直接付与する結果として確立することもでき、あるいは1つまたは複数のユーザロール、サーバ、グループなどを介して間接的にユーザに付与することもできる。例えば、以下のようにテーブルを定義することができる。
Emp(id int,salary float)
上の定義で、Empはテーブル名であり、idは型integerの変数であり、salaryは型floatの変数である。テーブルに対する式は、SQL Create式を介して作成することができる。例えば、以下の式を実行して、このテーブルに対する式を作成することができる。
CREATE EXPRESSION SalLimit ON Emp AS(salary<X)
上式で、SalLimitは式の名前であり、salaryはテストすべきフィールドであり、X(例えば100000)は、行データがセキュリティ式を満たすかどうかを判定する変数である。拒否および/または取消しステートメントなど、その他の様々なステートメントも同様に、対応する式を介して採用できることに留意されたい。
SalLimitセキュリティ式は、以下の許可式構文を介してユーザにリンクすることができる。
GRANT SELECT(where SalLimit)ON Emp TO User1
上の構文で、User1は、SalLimitを満たすテーブル行にあるデータへの権限が許可されるユーザである。このようなステートメントは、SalLimit式を満たすEmpテーブル中の行を見ることがUser1に許可されていることを示唆することができる。
上の例のような許可セキュリティ式がなければ、行中のデータが式を満たすことができず、したがってユーザにはどの行中のデータへのアクセスも提供されないことになる。加えて、このような条件を満たさない行はどれも、ユーザには見えなくなる。さらに、拒否セキュリティ式が満たされる場合、ユーザはそのデータを見ることが禁止される。
前述のように、セキュリティは追加で、列に基づくこともできる。例えば、以下のステートメントは、行レベルと列レベルの両方のセキュリティを許可することができる。
GRANT SELECT(where SalLimit,Col1)ON Emp TO User1
上のステートメントで、追加の引数Col1を利用して、テーブルEmp内の列を指定する。さらに、同じテーブルに対して複数の許可、拒否、および/または取消しステートメントがあってもよい。通常は拒否ステートメントが許可ステートメントよりも優先されるが、そうでない方法でシステムを構成することもできる。このようなステートメントの許可対象は、データベースシステム中で認可された任意のプリンシパルとすることができ、例えば仕様によって定義されたものとすることができる。
同様に、行、列、および/またはテーブルレベルのセキュリティのための拒否式と、許可または拒否を取り消すための取消し式が提供される。以下により、例示的なSQL拒否構文を示す。
DENY SELECT(WHERE<expression_name>)ON<data_name>TO(<user_name>)
上の構文で、<expression_name>はセキュリティ式を指定し、<data_name>は、セキュリティ式に対して評価すべきソースデータを指定し、<user_name>は、名前付きセキュリティ式に関連付けるべきユーザまたはユーザグループを指定する。以下により、例示的なSQL取消し構文を示す。
REVOKE SELECT(WHERE<expression_name>)ON<data_name>FROM(<user_name>)
上の構文で、<expression_name>は取り消すべきセキュリティ式を指定し、<data_name>はソースデータを指定し、<user_name>は、名前付きセキュリティ式から分離すべきユーザまたはユーザグループを指定する。
オプティマイザ210は、性能を最適化するために、受け取ったクエリ内で、セキュリティ式を含めた式を移動することができる。一般に、セキュリティ式は、セキュリティ式と非セキュリティ式を区別するためにタグ付けされ、述語規則を利用して、どのようにセキュリティ式をクエリ内に組み込むかに関する範囲が定義される。述語規則により、オプティマイザ210は、セキュリティ式の実行前に安全でない式を利用してデータを返すことができないことを確認した後でのみ、非セキュリティ式をセキュリティ式よりも上にするか、または非セキュリティ式をセキュリティ式よりも下にすることができる。通常、論理演算は普通「安全」とみなされ、オプティマイザ210はそのような演算をセキュリティ式よりも上または下に順序付けることができる。
多くの場合、ユーザ定義の式などの式が分析されて、安全かどうかが判定される。一般に、論理演算は普通「安全」とみなされる。このような分析は静的に実施することができる。前述のように、静的分析はコンパイル時に実施される。対照的に、動的分析は実行時に実施される。動的分析では、安全違反が検出された場合、そのクエリはアボートするか、または「セーフ」モードで実行することができ、その場合、セキュリティ式は非セキュリティ式が実行される前に評価される。
クエリマネージャ110は、セキュリティ式を適用して基準を満たすデータだけを返すことにより、照会を容易にすることができる。図示のように、照会は、テーブル440、テーブル440からテーブル440までのN個のテーブル(Nは1以上の整数)と、データ450とを含むデータベース430に対して実施される。テーブル440、テーブル440からテーブル440までを、テーブル440と総称することができることに留意されたい。一般に、テーブル440は、データを構造化フォーマットで記憶することができる。このような構造化フォーマットは、同様の構造を有するエンティティの1つまたは複数のセットを含むことができ、各エンティティは行と呼ぶことができる。各行は、列と呼ぶことのできるフィールドに関連付けることができる。
図5〜8に、本発明による方法を示す。説明を簡単にするために、本方法を一連の動作として図示および記述する。本発明は、例示する動作および/または動作順序によって限定されないことを認識および理解されたい。例えば、動作は様々な順序で、かつ/または同時に実施することができ、また本明細書に提示しない他の動作と共に実施することができる。さらに、本発明による方法を実施するのに、例示する動作すべてが必要とは限らない。加えて、本方法は別法として、状態図またはイベントによって一連の相関状態として表すこともできることは、当業者なら理解および認識するであろう。
図5に進むと、行レベルのデータベースセキュリティを実施する方法500が示されている。参照番号510で、1人または複数のユーザからの1つまたは複数のクエリを受け取る。このようなクエリは、連続的および/または同時に受け取ることができ、データベース中の同様のおよび/または異なるデータに関連するものとすることができる。加えて、クエリは、デスクトップコンピュータ、ポータブルコンピュータ、ハンドヘルドコンピュータ、ワークステーション、携帯電話機などのデータベースアクセスポイントから送ることができる。クエリを受け取ると、クエリのソースを決定することができる。多くの場合、ソースは、ユーザを識別するのに利用することのできるユーザの名前、住所、ネットワーク、サブネットワーク、ドメイン、グループ、プロジェクト、仕事の種類、作業グループ、課、部門、ステータスなどに関連し、個々のユーザには異なる特権を関連付けることができる。同様の区分内のユーザに、同様のまたは異なる特権を関連付けることができることに留意されたい。
参照番号520で、ユーザに対するセキュリティ式を得ることができる。例えば、データベース中のデータの所有者は、自分のデータのための1つまたは複数のセキュリティ式を作成して、このような式をユーザにリンクすることができる。1つまたは複数のセキュリティ式を、1つまたは複数のテーブルに対して作成することができ、1人または複数のユーザに提供することができることを理解されたい。したがって、データは複数のユーザに対する複数のセキュリティ式を同時に満たして、データへの同時アクセスを可能にすることができる。ソースを識別することができない場合、インテリジェンスを利用してセキュリティ式を推論することができ、かつ/またはデフォルトのセキュリティ式を適用することができる。
530で、クエリをセキュリティ式で増補することができる。複数の式が利用されるときは、各式を論理積および/または論理和によって論理ステートメントに集約して、判定を提供することができる。加えて、満たされるときにデータへのアクセスを明白に許容(例えば許可)または禁止(例えば拒否)する式を作成することができる。このような式を禁止するデータが満たされると「真」が得られるので、このような式が満たされると「偽」が得られるように補集合を利用することができる。したがって、少なくとも1つの許可式が満たされるときであってどの拒否式も「真」に評価されないときに「真」を返す集約的な式を作成することができる。ブール式を採用することができるが、本発明の一態様により他の技法を利用することもできることを理解されたい。
例えば、クエリは、許可ブール式の離接(各式は許可対象である関連セキュリティプリンシパルと合接される)を、拒否ブール式それぞれの補集合の合接(各式は拒否対象であるセキュリティプリンシパルと合接される)と合接することによって、増補することができる。したがって、少なくとも1つの許可式が満たされるときであってどの拒否式も満たされないときにデータがクエリを満たすことができるように、クエリを増補することができる。
参照番号540で、クエリを最適化することができ、セキュリティ式をクエリ内で移動して性能を最適化することができる。このような最適化は、メモリ漏洩の軽減を容易にする述語規則によって導かれる。これらの規則は、非セキュリティ式が「安全」かどうかに応じて、非セキュリティ式がセキュリティ式よりも上または下にくることができるようにする。多くの場合、コンパイル時に静的分析を実施して、式が「安全な」式かどうか、または情報開示のリスクなしに実行できる式かどうかを判定することができる。他の場合では、別法としてまたは追加で実行時に動的分析を実施して、式が「安全な」式かどうかを判定することができる。動的分析では、通常、セキュリティ述語がうまく実行されたときに、かつ/または安全違反(例えばエラー条件、割込み、イベントなど)が起こらないときに、結果が返され、変更が加えられる。静的と動的の両方の分析で、安全違反が見つからなかった場合は、性能を向上させるように式の配置順序を定義することができる。しかし、安全違反が検出された場合は、クエリをアボートするか、または「セーフ」モードで実行することができ、その場合、セキュリティ式は非セキュリティ式が実行される前に評価される。一般に、論理演算は普通「安全」とみなされる。
増補されたクエリは、データベース照会の間に利用することができる。例えば、照会を実施する間にデータベースのデータを評価して、データがセキュリティを満たすかどうかを判定することができる。データがセキュリティを満たす場合は、データを要求元に利用可能にすることができ、したがって例えば、要求元はデータを閲覧、ダウンロード、および/または操作することができる。
図6に、行レベルのアクセスを提供するための行レベルのデータベースセキュリティをイネーブルにする方法600を示す。参照番号610で、行レベルのセキュリティをイネーブルにする。例えば、ALTER TABLE Orders SET ROW_SECURITY=ONというSQLステートメントを利用して、テーブルに対する行レベルのアクセスを有効にすることができる。通常、行レベルのアクセスを有効にしない場合、ユーザはどの行にもアクセス可能でないか、またはすべての行にアクセス可能である。参照番号620で、GRANT SELECTコマンドを介してユーザに権限を許可する。630で、CREATE EXPRESSIONコマンドを介してユーザ制限をユーザに関連付ける。640で、GRANT”where”ステートメントを介して、1つまたは複数のテーブルに対する関連するロールに述語を関連付ける。650で、クエリを述語で増補することができ、増補済みクエリを利用することができ、セキュリティ式を満たすデータがユーザに提供される。本明細書に述べる複数の許可セキュリティ式ならびに拒否セキュリティ式をクエリ内に組み込んで、データ照会の間に利用することができることを理解されたい。
図7に、行レベルのアクセスを拒否するための行レベルのデータベースセキュリティをイネーブルにする方法700を示す。参照番号710で、行レベルのセキュリティをイネーブルにする(例えばALTER TABLE Orders SET ROW_SECURITY=ON)。720で、SQL DENY EXPRESSIONコマンドを利用して、ユーザに対するデータ権限を拒否することができる。参照番号730で、セキュリティステートメント(例えばブール式)を、1つまたは複数のテーブルに対する関連するロールに関連付ける。740で、セキュリティステートメントをクエリに挿入し、照会の間に利用する。セキュリティステートメントで評価されたデータが拒否式を満たす場合は、データはユーザから隠蔽される。一般に、拒否セキュリティ式は許可セキュリティ式よりも優先され、したがって、データが両方のタイプの式を満たす場合は、ユーザは許可式および拒否式に関連するデータにアクセスできないことになる。通常、拒否式の補集合が許可式と集約され、したがって、集約的な式が満たされる場合はデータへのアクセスが提供される。
図8に、行レベルのデータベースセキュリティを取り消す方法800を示す。参照番号810で、クエリを受け取り、クエリ開始元を識別する。参照番号820で、データ管理者は、ユーザに関連するセキュリティ式を確認し、もはやユーザが自分に関連付けられることを望んでいないセキュリティ式を選択する。前述のように、ユーザには、許可と拒否の両方のセキュリティ式を関連付けることができる。830で、REVOKEコマンドを利用して、ユーザに対する選択した許可および/または拒否セキュリティ式関連付けを分断または終了することができる。
図9に、例示的なSQLクエリ管理システム900を示す。SQLクエリ管理システム900は、データに対するクエリを受け入れる入力コンポーネント910と、このようなクエリをセキュリティ式で増補するのを容易にするSQLクエリマネージャ920と、結果をユーザに提供する出力コンポーネント930とを備える。システム900は、CREATE、DROP、GRANT、REVOKE、DENYなどのSQLユーティリティを利用して行レベルのアクセス制御を容易にすることができ、これらはとりわけ、テーブルに対してSELECT、UPDATE、DELETE、および/またはINSERTアクションを採用するときに有利である。以下に、本発明の一態様による、例示的なCREATE、DROP、GRANT、REVOKE、DENY構文ならびに対応する説明および例と、SELECT、UPDATE、DELETE、INSERTの例を提供する。
(CREATE)
行レベルのアクセス制御(例えばセキュリティ)を有効にするためにテーブルに適用される述語は、DDL CREATE EXPRESSIONを使用して作成することができる。このような述語は、名前を与えられることができ、式の名前を含む構文(例えばGDR)を利用してテーブルに適用される。
構文:
CREATE EXPRESSION<expression_name>ON<tablename>AS(<expression>)
CREATEユーティリティは、<expression>中に明記された式をテーブル<tablename>に対して作成することができ、それに<expression_name>と呼ばれる名前を割り当てることができる。
制限:
・通常はサブクエリを含めることはできない。
・式が関数への参照とそれらの関数に対する作成者参照許可とを含んでいる場合は、関数呼出しを含めることができる。
・式には名前を与えるべきである(expression_name)。
・expression_nameは固有であるべきである。
権限:
db_ddladmin、db_ownerロール、sysadminロールのメンバと、テーブル所有者と、データベース、スキーマ、および/またはテーブルレベルのFULL CONTROL権限を有するユーザとは、そのテーブルに対する式を作成する権限を有することができる。加えて、テーブルに対するALTER ANY TABLEおよび/またはALTERを有するユーザも、そのテーブルに対する式を作成する権限を有する。
例:
CREATE EXPRESSION My_Filter ON shipTable AS(ship_city='redmond'and order_num>35)
(DROP)
CREATE EXPRESSIONステートメントを使用して作成された述語は、後でDROP EXPRESSIONステートメントを使用して削除することができる。
構文:
DROP EXPRESSION<expression_name>ON<Tablename>
制限:
・指定されたexpression_nameは通常、すでに存在していなければならない。
・現ユーザは通常、db_ddladmin、db_owner、および/またはsysadminロールのメンバ、ならびに式が識別されるテーブルの所有者である必要があり、かつ/あるいは、式を削除するテーブルに対するFULL CONTROLおよび/またはALTER権限を有する必要がある。
・式は通常、テーブルに対する行レベルのセキュリティを確立するのに現在利用されていない場合にのみ削除することができる。
・いずれかの制限に違反した場合は、エラー(例えば「式が存在しないか使用中の可能性があります。あるいはこのステートメントを実行する権限がありません。」)を返すことができる。
(GRANT)
構文:
Figure 2005228312
UPDATE権限には、BEFOREまたはAFTERを接頭辞として付けることができる。BEFOREまたはAFTERは通常、行レベルのセキュリティが指定されている場合にのみ指定することができる。一般に、BEFOREは、述語が行の前イメージに適用されることを示唆し、セキュリティは行中の現在値に基づく。AFTERは、セキュリティが後イメージに基づくことを示唆し、これらの値を利用して行が更新される。<expression_name>は、セキュリティ制限を開始するのに使用される式(例えばCREATE EXPRESSION構文を介して前に作成されたもの)の名前である。
制限:
・GRANTは通常、テーブルに対してでなければならない。
・権限は通常、テーブルレベルで適用される。
・WITH GRANT OPTIONは通常、行レベルの制限を指定するときに可能になる。それ以上の許可は一般に、この式の許可対象が行うことができる。
・<expression_name>は通常、CREATE EXPRESSIONステートメントを介してすでに指定された有効な式名でなければならない。
・GRANTを発行するユーザは通常、テーブルの所有者であるか、あるいはテーブル、db_owner、db_securityadmin、および/またはsysadminロールのメンバに対してFULL CONTROL権限を有する必要がある。
例:
GRANT SELECT WHERE(Myfilter)ON Table1 TO RedMgrs
GRANT BEFORE UPDATE WHERE(Filter2)ON Table2 TO public
(REVOKE)
構文:
Figure 2005228312
REVOKEは、すでにGRANTまたはDENYを介して適用されたセキュリティ権限を取り消すのに使用することができる。
制限:
・<expression_name>は通常、取り消される特定の権限に対してすでに前のGRANTまたはDENYを使用してテーブルに対して指定された有効な式名でなければならない。
・通常、列名または取り消す式を指定することができる。
・通常、GRANTまたはDENYに基づいて、CASCADEオプションがREVOKEの式に適用されることになる。これは通常、前のGRANTまたはDENY中で指定されたのと同じ式でなければならず、すでに許可された式によって定義される行のサブセットは取り消すことができない。
・REVOKEが成功するためには、ユーザは通常、テーブル所有者である必要があるか、あるいはテーブル、db_securityadmin、db_owner、および/またはsysadminロールのメンバに対してFULL CONTROL権限を有さなければならない。
例:
REVOKE SELECT WHERE(MyFilter)ON Table1 TO RedMgrs
DENY
構文:
Figure 2005228312
<expression_name>は、セキュリティ制限を実施するのに使用される式(前のCREATE EXPRESSION構文を介して作成されたもの)の名前である。
制限:
・DENYは通常、テーブルに対してである。
・権限は通常、テーブルレベルで適用される。
・CASCADEオプションは通常、行レベルの制限を指定するときに可能であり、これは、許可された場合は全く同じ式を第1レベルで拒否してより低いレベルで取り消すことになるが、そのサブセットについてはそうしない。
・<expression_name>は通常、すでにCREATE EXPRESSIONステートメントを介して指定された有効な式名でなければならない。
・DENYを発行するユーザは通常、テーブルの所有者であるか、db_owner、db_securityadmin、および/またはsysadminロールのメンバである必要がある。
例:
DENY SELECT WHERE(MyFilter)ON Table1 TO BelvMgrs
これらの式は、sysobjectsオブジェクトに含めることができる。加えて、対応するカタログビューがsys.objects中にあってよい。テーブル所有者と、FULL CONTROLおよび/またはVIEW DEFINITION権限を有するユーザは、テーブルに適用される式を見ることができる。
クエリがテーブルに対して発行されると、クエリは、必要なセキュリティ制限を呼び出すためにテーブルレベルで適用された述語で増補される。SELECTがテーブルに対して発行されると、クエリは、GRANT SELECTまたはDENY SELECTステートメントによってテーブルに適用されたすべての述語で内部増補される。UPDATEがテーブルに対して発行されると、クエリは、GRANT/DENY、BEFOREの場合のUPDATE、SELECTステートメントによってテーブルに適用されたすべてのBEFOREおよびUPDATE述語で内部増補される。BEFORE UPDATEの場合、述語中で指定される制限は、行中の更新後の値ではなく現在値に基づく。AFTER UPDATE、INSERT制限は、制約のように挙動する。すなわち、これらは更新の後イメージに作用する。選択するためのアクセスをユーザが現在有する行だけしか更新することはできない。DELETEが発行されると、クエリは、GRANT/DENY SELECTおよびDELETEステートメントによってテーブルに適用された述語で増補される。ユーザは、現在選択されている行だけしか削除することができない。テーブルに対して定義されたセキュリティ式は、他のどんな述語が適用されるよりも前に適用される。すなわち、ユーザ述語は、評価ツリー中のすべてのセキュリティ述語よりも下になる。
複数のセキュリティ述語がある場合は、GRANT中で指定された述語の論理和がとられ、DENYによって指定された各述語の否定と、それらとの論理積がとられる。加えて、行レベルのセキュリティなしで、テーブルレベルまたは列レベルの権限を設定することもできる。行レベルのセキュリティが導入された場合、ユーザは、明示的なアクセスが許可された行へのアクセスを有する。したがって、ユーザが特定のテーブル中で見るのは、列レベルと行レベルの権限の共通部分である。行レベルのセキュリティを可能にするには、最初にテーブルにそのように符号を付けなければならない。これは、CREATE/ALTER TABLE構文中でROW_SECURITYフラグを使用して行うことができる(例えばALTER TABLE SET ROW_SECURITY=ON)。
テーブルの行レベルのセキュリティがイネーブルになると、所有者は、行レベルのセキュリティがいくつかの個別の行に適用されるかどうかを判定することができる。これは、1つまたは複数の行へのアクセスを許可する述語を利用して行うことができる。Exempt Row Security権限を利用しても、同じ効果を達成することができる。この権限は、許可対象がテーブルに対してこれを発行したときにはどのセキュリティ述語もクエリに適用されないようにすることができ、行レベルのセキュリティはこれらの述語を介してのみ適用されるので、これによって行レベルのセキュリティを適用しない効果が達成される。Exempt Row Security権限はまた、誰が行レベルのセキュリティを受け取るべきかを所有者が選択的に決定することができるという点でも有用である。述語はいつでもテーブルに適用することができるが、これらはExemptRowSec権限を有さないユーザのクエリに増補されるだけであることを理解されたい。
前述のように、クエリに述語を増補せずにテーブル照会能力を特定のユーザに許可することが有用な可能性がある。加えて、いくつかまたはすべての述語を追加、削除、および/または改変する必要なしに、行レベルのセキュリティを一時的にディセーブルにすることが有用な可能性もある。これは、ExemptRowSec権限を許可することによって行うことができる。Table Ownerと、db_ownerおよびsysadminロールのメンバと、CONTROL権限を有するユーザは、この権限をデフォルトで有する。例えば、テーブルTに対する行レベルのセキュリティチェックからユーザ1を免除するには、以下のステートメントを利用することができる。
GRANT ExemptRowSec ON T TO<user1>
このステートメントが発行されると、テーブルTに対するユーザ1のクエリにはどんな述語も増補されない。この権限はテーブルレベルでのみ許可することができ、列レベルでは許可されない。
述語には、やはり述語が定義されている可能性のある他のテーブルを呼び出す関数への呼出しを含むことがあり得るので、循環ループがあるかもしれないケースをトラップすることが重要である。例えば、本質的に関数Fへの呼出しである述語がテーブルTに対して定義されており、関数FはテーブルTおよびテーブルSに照会する場合、述語はテーブルSには適用できるが、テーブルTには適用できない(というのは、そうでなければ後者は無限ループを引き起こすからである)。したがって、このような循環述語のケースをトラップするが、ただしこれは、循環中のホップの数がn未満のときだけであって、nはビューの循環依存をトラップするのに使用されるのと同じ数である。監査トレイルでは、特権を与えられたユーザは増補済みクエリを見ることができる。
以下に例示的なSQL CREATE TABLEおよびALTER TABLEユーティリティを示す。
CREATE TABLE
構文:
Figure 2005228312
Figure 2005228312
ALTER TABLE
構文:
Figure 2005228312
Figure 2005228312
Figure 2005228312
表1および以下の実施例を利用して、本発明の様々な例示的態様を示す。
Figure 2005228312
この実施例の目的は、以下の制限を伴った、Ordersテーブルに対するGRANT SELECTである。すなわち、FranceMgrロールのメンバであるユーザはその国の注文しか見ることができず、SpainMgrロールのメンバであるユーザはその国の注文しか見ることができず、Directorロールのメンバであるユーザはすべての行を見ることができる。
表1に対する行レベルのセキュリティは、ALTER TABLE Orders SET ROW_SECURITY=ONを介してイネーブルになる。権限は、それぞれGRANT SELECT ON Orders TO directors、GRANT SELECT ON Orders TO FranceMgr、GRANT SELECT ON Orders TO SpainMgrを介して、Director、FranceMgr、SpainMgrに許可される。制限は、それぞれCREATE EXPRESSION SeeAll ON Orders AS1=1、CREATE EXPRESSION SpainFilter ON Orders AS(Orders.ShipCountry=’Spain’)、CREATE EXPRESSION FranceFilter ON Orders AS(Orders.ShipCountry=’France’)を介して、Director、FranceMgr、SpainMgrに関連付けられる。述語は、GRANT SELECT ON Orders TO Directors Where SeeAll、GRANT SELECT WHERE(SpainFilter)ON Orders to SpainMgrs、GRANT SELECT WHERE(FranceFilter)ON Orders to FranceMgrsを介して、Ordersテーブルに対する適切なロールに関連付けられる。あるいは、Grant ExemptRowSec to Directorsを利用して、Directorsロールのメンバを行レベルの述語のどんな増補からも免除することができ、したがって、Directorsロールのメンバがテーブルに照会しても、クエリにはどんな述語も増補されない。
述語を照会することができ、テーブルには述語Directors、SpainFilter、FranceFilterが関連付けられる。照会時、これらの述語でクエリを増補することができ、それにより、SELECT*FROM Ordersによって定義された元のクエリは増補されてSELECT*FROM Orders WHERE((IS_MEMBER(’Directors’)=1 AND 1=1)OR(IS_MEMBER(’SpainMgrs’)=1 AND Orders.Shipcountry=’Spain’)OR(IS_MEMBER(’FranceMgrs’)=1 AND Orders.Shipcountry=’France’))になる。
この増補済みクエリは、必要とされるセキュリティ制限をもたらすことになる。したがってこの場合、Directors、FranceMgrs、またはSpainMgrsロールのメンバが以下のクエリを実施した場合、このメンバは、2002年1月1日よりも後に出された注文であって、配送国がそれぞれフランスとスペインのいずれかの国である注文だけを得ることになる。
元のクエリ
SELECT*FROM ORDERS
WHERE OrderDate>'1/1/02
増補済みクエリ
SELECT*FROM ORDERS
WHERE OrderDate>'1/1/02'
AND
(
(IS_MEMBER('Director')=1 AND 1=1)
OR
(IS MEMBER('SpainMgrs')=1 AND Orders.Shipcountry='Spain')
OR
(IS_MEMBER('FranceMgrs')=1 AND Orders.Shipcountry='France')
)
本発明の様々な態様を実施するための追加のコンテキストを提供するために、図10〜11および以下の考察で、本発明の様々な態様を実施するのに適したコンピューティング環境に関する簡単で一般的な記述を提供する。ローカルコンピュータおよび/またはリモートコンピュータ上で稼動するコンピュータプログラムのコンピュータ実行可能命令の一般的なコンテキストで本発明を上に述べてきたが、本発明はその他のプログラムモジュールと共に実施することもできることは、当業者なら理解するであろう。一般にプログラムモジュールは、特定のタスクを実施する、かつ/または特定の抽象データ型を実装する、ルーチン、プログラム、コンポーネント、データ構造などを含む。
さらに、本発明の方法はその他のコンピュータシステム構成でも実施できることは、当業者なら理解するであろう。その他のコンピュータシステム構成としては、それぞれ1つまたは複数の関連デバイスと動作可能に通信することのできる、シングルプロセッサまたはマルチプロセッサのコンピュータシステム、ミニコンピュータ、メインフレームコンピュータ、ならびにパーソナルコンピュータ、ハンドヘルドコンピューティングデバイス、マイクロプロセッサベースのおよび/またはプログラム可能な消費者電子機器などが含まれる。本発明の例示の態様はまた、通信ネットワークを介してリンクされたリモート処理デバイスによっていくつかのタスクが実施される分散コンピューティング環境で実施することもできる。しかし、本発明のすべてとは言わないまでもいくつかの態様は、スタンドアロンコンピュータ上で実施することもできる。分散コンピューティング環境では、プログラムモジュールは、ローカルおよび/またはリモートのメモリ記憶デバイスに位置することができる。
図10は、本発明が対話することのできる例示的なコンピューティング環境1000の概略ブロック図である。システム1000は、1つまたは複数のクライアント1010を含む。クライアント1010は、ハードウェアおよび/またはソフトウェア(例えばスレッド、プロセス、コンピューティングデバイス)とすることができる。システム1000は、1つまたは複数のサーバ1020も含む。サーバ1020は、ハードウェアおよび/またはソフトウェア(例えばスレッド、プロセス、コンピューティングデバイス)とすることができる。サーバ1020は、例えば、本発明を利用して変換を実施するためのスレッドを格納することができる。
クライアント1010とサーバ1020との間における可能な通信の1つは、複数のコンピュータプロセス間で伝送されるように適合されたデータパケットの形とすることができる。システム1000は、クライアント1010とサーバ1020との間の通信を容易にするのに利用できる通信フレームワーク1040を含む。クライアント1010は、クライアント1010にとってローカルな情報を記憶するのに利用できる1つまたは複数のクライアントデータストア1050に動作可能に接続される。同様に、サーバ1020は、サーバ1020にとってローカルな情報を記憶するのに利用できる1つまたは複数のサーバデータストア1030に動作可能に接続される。
図11を参照すると、本発明の様々な態様を実施するための例示的な環境1100は、コンピュータ1112を含む。コンピュータ1112は、処理ユニット1114、システムメモリ1116、システムバス1118を備える。システムバス1118は、限定しないがシステムメモリ1116を含めたシステムコンポーネントを、処理ユニット1114に結合する。処理ユニット1114は、様々な利用可能なプロセッサのいずれかとすることができる。デュアルマイクロプロセッサおよびその他のマルチプロセッサアーキテクチャを処理ユニット1114として採用することもできる。
システムバス1118は、様々なバスアーキテクチャのいずれかを用いた、メモリバスまたはメモリコントローラ、周辺バスまたは外部バス、および/あるいはローカルバスを含めて、いくつかのタイプのバス構造のいずれかとすることができる。限定しないがこのようなバスアーキテクチャには、ISA(Industrial Standard Architecture)、MCA(Micro−Channel Architecture)、EISA(Extended ISA)、IDE(Intelligent Drive Electronics)、VLB(VESA Local Bus)、PCI(Peripheral Component Interconnect)、Card Bus、USB(Universal Serial Bus)、AGP(Advanced Graphics Port)、PCMCIA(Personal Computer Memory Card International Association)バス、Firewire(IEEE1394)、SCSI(Small Computer Systems Interface)が含まれる。
システムメモリ1116は、揮発性メモリ1120および不揮発性メモリ1122を含む。不揮発性メモリ1122には、起動中などにコンピュータ1112内の要素間で情報を転送するための基本ルーチンを含むBIOS(basic input/output system)が記憶されている。限定ではなく例示として、不揮発性メモリ1122には、読取り専用メモリ(ROM)、プログラム可能ROM(PROM)、電気的プログラム可能ROM(EPROM)、電気的消去可能ROM(EEPROM)、またはフラッシュメモリを含めることができる。揮発性メモリ1120にはランダムアクセスメモリ(RAM)が含まれ、これは外部キャッシュメモリとして働く。限定ではなく例示として、RAMは、同期RAM(SRAM)、ダイナミックRAM(DRAM)、同期DRAM(SDRAM)、ダブルデータレートSDRAM(DDR SDRAM)、エンハンスドSDRAM(ESDRAM)、Synchlink DRAM(SLDRAM)、ダイレクトRambus RAM(DRRAM)など、多くの形で入手可能である。
コンピュータ1112は、取外し可能/固定式、揮発性/不揮発性コンピュータ記憶媒体も備える。図11には、例としてディスク記憶装置1124を示す。ディスク記憶装置1124には、限定しないが磁気ディスクドライブ、フロッピー(登録商標)ディスクドライブ、テープドライブ、Jazドライブ、Zipドライブ、LS−100ドライブ、フラッシュメモリカード、メモリスティックなどのデバイスが含まれる。加えて、ディスク記憶装置1124には、限定しないがコンパクトディスクROMデバイス(CD−ROM)、CD記録可能ドライブ(CD−Rドライブ)、CD書換え可能ドライブ(CD−RWドライブ)、ディジタル多用途ディスクROMドライブ(DVD−ROM)などの光ディスクドライブを含めて、他の記憶媒体と別々または一緒の記憶媒体を含めることもできる。ディスク記憶デバイス1124をシステムバス1118に接続するのを容易にするために、通常はインタフェース1126などの取外し可能または固定式インタフェースが使用される。
図11には、ユーザと、適した動作環境1100で述べた基本的なコンピュータリソースとの間の媒介として働くソフトウェアも記述されていることを理解されたい。このようなソフトウェアには、オペレーティングシステム1128が含まれる。オペレーティングシステム1128は、ディスク記憶装置1124に記憶されているものとすることができ、コンピュータシステム1112のリソースを制御および割振りする働きをする。システムアプリケーション1130が、システムメモリ1116とディスク記憶装置1124のいずれかに記憶されたプログラムモジュール1132およびプログラムデータ1134を介して、オペレーティングシステム1128によるリソース管理を利用する。本発明は、様々なオペレーティングシステム、またはオペレーティングシステムの組合せを使用して実施できることを理解されたい。
ユーザは、入力デバイス1136を介してコンピュータ1112にコマンドまたは情報を入力する。入力デバイス1136には、限定しないが、マウスなどのポインティングデバイス、トラックボール、スタイラス、タッチパッド、キーボード、マイクロホン、ジョイスティック、ゲームパッド、衛星受信アンテナ、スキャナ、TVチューナカード、ディジタルカメラ、ディジタルビデオカメラ、ウェブカメラなどが含まれる。これらおよび他の入力デバイスは、インタフェースポート1138を介してシステムバス1118を通り処理ユニット1114に接続する。インタフェースポート1138には、例えばシリアルポート、パラレルポート、ゲームポート、ユニバーサルシリアルバス(「USB」)が含まれる。出力デバイス1140は、入力デバイス1136と同じタイプのポートのいくつかを使用する。したがって例えば、USBポートは、コンピュータ1112への入力を提供するのにも使用することができ、コンピュータ1112から出力デバイス1140に情報を出力するのにも使用することができる。出力デバイス1140の中でもとりわけ、モニタ、スピーカ、プリンタなど、特別なアダプタを必要とするいくつかの出力デバイス1140があることを例示するために、出力アダプタ1142が提供されている。出力アダプタ1142には、限定ではなく例示として、出力デバイス1140とシステムバス1118との間の接続手段を提供するビデオカードおよびサウンドカードが含まれる。リモートコンピュータ1144など、その他のデバイス、および/またはデバイスのシステムも、入力と出力の両方の機能を提供することに留意されたい。
コンピュータ1112は、リモートコンピュータ1144など1つまたは複数のリモートコンピュータへの論理接続を用いて、ネットワーク化された環境で動作することができる。リモートコンピュータ1144は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ワークステーション、マイクロプロセッサベースの機器、ピアデバイス、またはその他の一般的なネットワークノードなどとすることができ、通常はコンピュータ1112に関して述べた要素の多くまたはすべてを備える。簡単にするために、メモリ記憶デバイス1146だけがリモートコンピュータ1144と共に示されている。リモートコンピュータ1144は、ネットワークインタフェース1148を介してコンピュータ1112に論理接続され、次いで通信接続1150を介して物理接続される。ネットワークインタフェース1148は、ローカルエリアネットワーク(LAN)やワイドエリアネットワーク(WAN)などの通信ネットワークを含む。LAN技術には、ファイバ分散データインタフェース(FDDI)、銅分散データインタフェース(CDDI)、イーサネット(登録商標)、トークンリングなどが含まれる。WAN技術には、限定しないがポイントツーポイントリンク、統合ディジタルサービス通信網(ISDN)やその変形などの回路交換ネットワーク、パケット交換ネットワーク、ディジタル加入者線(DSL)が含まれる。
通信接続1150は、ネットワークインタフェース1148とバス1118を接続するのに利用されるハードウェア/ソフトウェアを指す。通信接続1150は、図示をわかりやすくするためにコンピュータ1112の内部に示してあるが、コンピュータ1112の外部にあってもよい。ネットワークインタフェース1148への接続に必要なハードウェア/ソフトウェアには、例示にすぎないが、通常の電話グレードモデムやケーブルモデムやDSLモデムを含めたモデム、ISDNアダプタ、イーサネット(登録商標)カードなどの、内部技術および外部技術が含まれる。
以上の記述は、本発明の実施例を含む。当然、本発明を記述するために、考えられるあらゆる組合せのコンポーネントおよび方法について述べることは不可能である。しかし、本発明のその他多くの組合せおよび置換が可能であることは、当業者なら理解するであろう。したがって本発明は、添付の特許請求の趣旨および範囲に含まれるすべての改変、修正、変形を含むものとする。
特に、上述したコンポーネント、デバイス、回路、システムなどによって実施される様々な機能に関して、このようなコンポーネントについて述べるために使用した用語(「手段」への言及を含む)は、特に指示がない限り、本明細書に示した本発明の例示的な態様における機能を実施する開示した構造と構造的に等価でなくても、述べたコンポーネントの指定の機能を実施する任意のコンポーネント(例えば機能的な均等物)に対応するものとする。これに関して、本発明は、システムを含むとともに、本発明の様々な方法の動作および/またはイベントを実施するためのコンピュータ実行可能命令を有するコンピュータ可読媒体も含むことは理解されるであろう。
さらに、いくつかの実装形態のうちの1つだけに関して本発明の特定の特徴を開示したが、このような特徴は、所与のまたは特定の適用例で望まれるように、かつ有利なように、他の実装形態における他の1つまたは複数の特徴と組み合わせることもできる。
クエリをセキュリティ式で増補することによってデータアクセスセキュリティを容易にするシステムを示す図である。 セキュリティ増補されたクエリを性能のために最適化するデータセキュリティシステムを示す図である。 データ管理者によって式バンクに記憶されたセキュリティ式でクエリを増補するデータセキュリティシステムを示す図である。 セキュリティ増補されたクエリを利用してデータベースに照会するシステムを示す図である。 行レベルのデータベースセキュリティを実施する方法を示す図である。 テーブル行に対する行レベルのセキュリティ権限を許可する方法を示す図である。 テーブル行に対する行レベルのセキュリティ権限を拒否する方法を示す図である。 テーブル行に対する行レベルのセキュリティ権限の許可および/または拒否を取り消す方法を示す図である。 例示的なSQLクエリ管理システムを示す図である。 本発明の新規な態様を採用することのできる例示的なネットワーキング環境を示す図である。 本発明の新規な態様を採用することのできる例示的な動作環境を示す図である。
符号の説明
110 入力コンポーネント
120 クエリマネージャ
130 出力コンポーネント
210 オプティマイザ
310 式バンク
910 入力コンポーネント
920 SQLクエリマネージャ
930 出力コンポーネント
1010 クライアント
1020 サーバ
1030 サーバデータストア
1040 通信フレームワーク
1050 クライアントデータストア
1114 処理ユニット
1116 システムメモリ
1118 バス
1120 揮発性
1122 不揮発性
1124 ディスク記憶装置
1126 インタフェース
1128 オペレーティングシステム
1130 アプリケーション
1132 モジュール
1134 データ
1136 入力デバイス
1138 インタフェースポート
1140 出力デバイス
1142 出力アダプタ
1144 リモートコンピュータ
1146 メモリ記憶装置
1148 ネットワークインタフェース
1150 通信接続

Claims (28)

  1. データベースセキュリティを容易にするシステムであって、
    クエリを受け取る入力コンポーネントと、
    述語規則を利用して前記クエリを少なくとも行レベルのセキュリティ式で増補するクエリ管理コンポーネントとを備え、前記増補済みクエリを利用して、データを検索し、前記行レベルのセキュリティ式の集約を少なくとも満たすデータ行を返すことを特徴とするシステム。
  2. 前記クエリは、
    満たされるときに行アクセスを許可するブール式の離接と、
    満たされるときに行アクセスを拒否するブール式それぞれの補集合の合接との合接からなる式を挿入することによって増補されることを特徴とする請求項1に記載のシステム。
  3. 前記行レベルのセキュリティ式は、セキュリティ式と非セキュリティ式を区別するために特別にタグ付けされることを特徴とする請求項1に記載のシステム。
  4. 前記述語規則は、セキュリティ式および非セキュリティ式がクエリに挿入される順序を定義することによって情報漏洩を軽減し、前記順序は、データ行の評価中に各式が利用される順序を決定することを特徴とする請求項1に記載のシステム。
  5. 性能を高め情報漏洩を軽減するために、非セキュリティ式をセキュリティ式よりも上にするか、または非セキュリティ式をセキュリティ式よりも下にするオプティマイザをさらに備えることを特徴とする請求項1に記載のシステム。
  6. コンパイル時に静的分析を実施して、前記クエリ中の非セキュリティ式が安全かどうかを判定するコンポーネントをさらに備えることを特徴とする請求項1に記載のシステム。
  7. 安全な式は、セキュリティ違反による情報開示のリスクなしに実行される式であることを特徴とする請求項6に記載のシステム。
  8. 実行時に動的分析を実施して、非セキュリティ式が安全かどうかを判定するコンポーネントをさらに備えることを特徴とする請求項1に記載のシステム。
  9. 前記動的分析は、すべてのセキュリティ式がうまく実行された場合にデータを返すことを特徴とする請求項8に記載のシステム。
  10. 安全違反を検出し、前記クエリをアボートするか、または前記クエリをセーフモードで再開始するコンポーネントをさらに備えることを特徴とする請求項1に記載のシステム。
  11. 前記セーフモードは、非セキュリティ式が利用される前にセキュリティ式がデータ行の評価に利用されるようにすることを特徴とする請求項10に記載のシステム。
  12. 前記セキュリティ式はブール式であることを特徴とする請求項1に記載のシステム。
  13. データの行に対して1つまたは複数のセキュリティ式が前記データの管理者によってSQLステートメントを介して作成されることを特徴とする請求項1に記載のシステム。
  14. データの行のセットに対する1つまたは複数のセキュリティ式が前記データの管理者によって1つまたは複数のクエリ開始元に関連付けられることを特徴とする請求項1に記載のシステム。
  15. 行レベルのデータベースセキュリティを利用する方法であって、
    クエリに対する1つまたは複数の行レベルのセキュリティ式を前記クエリのソースに基づいて得るステップと、
    前記1つまたは複数の行レベルのセキュリティ式を前記クエリに挿入して、安全でない非セキュリティ式が実行される前に前記セキュリティ式がデータ行の評価に利用されるようにするステップとを含むことを特徴とする方法。
  16. 満たされるときに行アクセスを許可するブール式の離接と、満たされるときに行アクセスを拒否するブール式それぞれの補集合の合接との合接からなる式を接合し、前記接合した式を前記クエリに挿入するステップをさらに含むことを特徴とする請求項15に記載の方法。
  17. SQLステートメントを利用してセキュリティ式の作成、関連付け、および/または取消しを行うステップをさらに含むことを特徴とする請求項15に記載の方法。
  18. SQLステートメントを利用してデータ行への権限をユーザに対して許可または拒否するステップをさらに含むことを特徴とする請求項15に記載の方法。
  19. 安全でない非セキュリティ式を前記クエリが含まないとき、前記1つまたは複数の行レベルのセキュリティ式を前記クエリに挿入して性能を最適化するステップをさらに含むことを特徴とする請求項15に記載の方法。
  20. 述語移動規則を利用して、前記クエリ内における前記セキュリティ式の順序付けを容易にするステップをさらに含むことを特徴とする請求項15に記載の方法。
  21. 前記述語規則は、性能を高めデータ漏洩を軽減するために非セキュリティ式をセキュリティ式よりも上または下にすべきかどうかを定義することを特徴とする請求項20に記載の方法。
  22. 静的分析を実施して、非セキュリティ式が安全でないかどうかを判定するステップをさらに含むことを特徴とする請求項15に記載の方法。
  23. 動的分析を実施して、非セキュリティ式が安全でないかどうかを判定するステップをさらに含むことを特徴とする請求項15に記載の方法。
  24. 論理非セキュリティ式は安全な式として定義するステップをさらに含むことを特徴とする請求項15に記載の方法。
  25. 安全違反が検出されたときは前記クエリをセーフモードで再開始するステップをさらに含み、セーフモードは、セキュリティ式が非セキュリティ式よりも前に行データの評価に利用されるようにすることを特徴とする請求項15に記載の方法。
  26. 行レベルのデータベースセキュリティを容易にする複数のコンピュータコンポーネント間で伝送されるデータパケットであって、
    SQLによって作成された1つまたは複数のセキュリティ式が述語規則に基づいて内部に配置されたクエリを含み、前記セキュリティ式は、前記セキュリティ式が満たされるときにデータ行へのアクセスを提供するためのデータ行評価に利用されることを特徴とするデータパケット。
  27. 行レベルのデータベースセキュリティを容易にするためのコンピュータ実行可能コンポーネントを記憶したコンピュータ可読媒体であって、
    ユーザに対するセキュリティ式をステートメント中に接合するコンポーネントと、
    ユーザによって開始されたクエリにステートメントを追加するコンポーネントと、
    前記クエリ内における前記ステートメントの配置を最適化するコンポーネントと、
    前記ステートメントに基づいてデータ行を照会して、前記ステートメントを満たすデータ行を返すコンポーネントとを備えることを特徴とするコンピュータ可読媒体。
  28. クエリに行レベルのセキュリティ式を増補する手段と、
    性能を高めるかまたはデータ漏洩を軽減するように前記クエリ内で前記行レベルのセキュリティ式を配置する手段と、
    前記行レベルのセキュリティ式でデータ行を評価する手段と、
    前記行レベルのセキュリティ式を満たすデータ行へのアクセスをユーザに提供する手段とを備えることを特徴とするデータベースセキュリティシステム。
JP2005026874A 2004-02-11 2005-02-02 行レベルのデータベースセキュリティを最適化するシステムおよび方法 Expired - Fee Related JP4698243B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US54385504P 2004-02-11 2004-02-11
US60/543,855 2004-02-11
US10/885,815 2004-07-07
US10/885,815 US7661141B2 (en) 2004-02-11 2004-07-07 Systems and methods that optimize row level database security

Publications (2)

Publication Number Publication Date
JP2005228312A true JP2005228312A (ja) 2005-08-25
JP4698243B2 JP4698243B2 (ja) 2011-06-08

Family

ID=34704406

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005026874A Expired - Fee Related JP4698243B2 (ja) 2004-02-11 2005-02-02 行レベルのデータベースセキュリティを最適化するシステムおよび方法

Country Status (5)

Country Link
US (1) US7661141B2 (ja)
EP (1) EP1564620A1 (ja)
JP (1) JP4698243B2 (ja)
KR (1) KR101120814B1 (ja)
CN (1) CN100492357C (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015535622A (ja) * 2012-11-09 2015-12-14 マイクロソフト コーポレーション 予め定義されたクエリーによる表示のフィルタリング

Families Citing this family (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7281003B2 (en) * 1998-10-05 2007-10-09 Oracle International Corporation Database fine-grained access control
US20040139043A1 (en) * 2003-01-13 2004-07-15 Oracle International Corporation Attribute relevant access control policies
US7873660B1 (en) 2003-02-27 2011-01-18 Oracle International Corporation Enforcing data privacy aggregations
US7249120B2 (en) * 2003-06-27 2007-07-24 Microsoft Corporation Method and apparatus for selecting candidate statistics to estimate the selectivity value of the conditional selectivity expression in optimize queries based on a set of predicates that each reference a set of relational database tables
US7310647B2 (en) * 2003-12-24 2007-12-18 Oracle International Corporation Column masking of tables
US20100299761A1 (en) * 2004-01-22 2010-11-25 Jpay, Inc. System and method for sending electronic data to inmates
US20130179949A1 (en) 2004-01-22 2013-07-11 Jpay, Inc. Secure exchange of digital content
US8825702B2 (en) * 2004-02-24 2014-09-02 Oracle International Corporation Sending control information with database statement
US7308411B2 (en) * 2004-04-01 2007-12-11 Leo Software, Inc. Method of presenting leasing arrangements
US8271463B2 (en) * 2004-12-28 2012-09-18 International Business Machines Corporation System and method for providing access to data with user defined table functions
US8438141B2 (en) * 2005-01-27 2013-05-07 International Business Machines Corporation System and method for providing secure access to data with user defined table functions
US7505985B2 (en) * 2005-02-25 2009-03-17 International Business Machines Corporation System and method of generating string-based search expressions using templates
US8326877B2 (en) * 2005-05-04 2012-12-04 Microsoft Corporation Region-based security
US7580958B2 (en) * 2005-06-17 2009-08-25 International Business Machines Corporation Supporting multiple versions of a routine
US7899817B2 (en) * 2005-10-05 2011-03-01 Microsoft Corporation Safe mode for inverse query evaluations
US8069153B2 (en) * 2005-12-02 2011-11-29 Salesforce.Com, Inc. Systems and methods for securing customer data in a multi-tenant environment
US10318752B2 (en) * 2006-05-26 2019-06-11 Oracle International Corporation Techniques for efficient access control in a database system
US8676845B2 (en) * 2006-08-22 2014-03-18 International Business Machines Corporation Database entitlement
US7685194B2 (en) * 2006-08-31 2010-03-23 Microsoft Corporation Fine-grained access control in a database by preventing information leakage and removing redundancy
KR100803357B1 (ko) * 2006-09-28 2008-02-13 알투웨어 주식회사 데이터베이스 보안 장치 및 방법
US8402017B2 (en) * 2006-12-08 2013-03-19 International Business Machines Corporation Method for altering database views dependent on rules
US8027993B2 (en) 2006-12-28 2011-09-27 Teradota Us, Inc. Techniques for establishing and enforcing row level database security
US20090024570A1 (en) * 2007-07-20 2009-01-22 Oracle Internatonal Corporation User defined query rewrite mechanism
US8078595B2 (en) * 2007-10-09 2011-12-13 Oracle International Corporation Secure normal forms
US8819066B2 (en) 2007-12-21 2014-08-26 International Business Machines Corporation Employing organizational context within a collaborative tagging system
US8234299B2 (en) * 2008-01-11 2012-07-31 International Business Machines Corporation Method and system for using fine-grained access control (FGAC) to control access to data in a database
US8566909B2 (en) * 2008-02-01 2013-10-22 Oracle International Corporation Row-level security with expression data type
US7958105B2 (en) * 2008-03-07 2011-06-07 International Business Machines Corporation System and method for filtering database results using dynamic composite queries
US20090248631A1 (en) * 2008-03-31 2009-10-01 International Business Machines Corporation System and Method for Balancing Workload of a Database Based Application by Partitioning Database Queries
US7970790B2 (en) * 2008-05-13 2011-06-28 Microsoft Corporation Cell-based security representation for data access
US8224873B1 (en) 2008-05-22 2012-07-17 Informatica Corporation System and method for flexible security access management in an enterprise
US8166071B1 (en) 2008-05-22 2012-04-24 Informatica Corporation System and method for efficiently securing enterprise data resources
US20090300019A1 (en) * 2008-05-30 2009-12-03 Schumberger Technology Corporation Hierarchical item level entitlement
US8239396B2 (en) * 2009-03-20 2012-08-07 Oracle International Corporation View mechanism for data security, privacy and utilization
US9183407B2 (en) * 2011-10-28 2015-11-10 Microsoft Technology Licensing Llc Permission based query processing
US9043309B2 (en) * 2012-06-05 2015-05-26 Oracle International Corporation SQL transformation-based optimization techniques for enforcement of data access control
US9195841B2 (en) 2013-03-15 2015-11-24 Sap Se Automated and delegated model-based row level security
US10101889B2 (en) 2014-10-10 2018-10-16 Salesforce.Com, Inc. Dashboard builder with live data updating without exiting an edit mode
US9449188B2 (en) 2014-10-10 2016-09-20 Salesforce.Com, Inc. Integration user for analytical access to read only data stores generated from transactional systems
US9600548B2 (en) * 2014-10-10 2017-03-21 Salesforce.Com Row level security integration of analytical data store with cloud architecture
US9767145B2 (en) 2014-10-10 2017-09-19 Salesforce.Com, Inc. Visual data analysis with animated informational morphing replay
US10049141B2 (en) 2014-10-10 2018-08-14 salesforce.com,inc. Declarative specification of visualization queries, display formats and bindings
US9760591B2 (en) 2015-05-14 2017-09-12 Walleye Software, LLC Dynamic code loading
US10115213B2 (en) 2015-09-15 2018-10-30 Salesforce, Inc. Recursive cell-based hierarchy for data visualizations
US10089368B2 (en) 2015-09-18 2018-10-02 Salesforce, Inc. Systems and methods for making visual data representations actionable
US10205730B2 (en) 2015-09-29 2019-02-12 International Business Machines Corporation Access control for database
JP6547577B2 (ja) * 2015-10-15 2019-07-24 富士通株式会社 検査装置、検査プログラムおよび検査方法
KR101905771B1 (ko) * 2016-01-29 2018-10-11 주식회사 엔오디비즈웨어 시스템 환경 및 사용자 행동 분석 기반의 자기 방어 보안 서버와 이의 작동 방법
US10713376B2 (en) 2016-04-14 2020-07-14 Salesforce.Com, Inc. Fine grain security for analytic data sets
US10277561B2 (en) * 2016-07-22 2019-04-30 International Business Machines Corporation Database management system shared ledger support
US10303894B2 (en) 2016-08-31 2019-05-28 Oracle International Corporation Fine-grained access control for data manipulation language (DML) operations on relational data
US10311047B2 (en) 2016-10-19 2019-06-04 Salesforce.Com, Inc. Streamlined creation and updating of OLAP analytic databases
US10885134B2 (en) 2017-05-12 2021-01-05 International Business Machines Corporation Controlling access to protected information
US10198469B1 (en) 2017-08-24 2019-02-05 Deephaven Data Labs Llc Computer data system data source refreshing using an update propagation graph having a merged join listener
RU2676223C1 (ru) * 2017-11-16 2018-12-26 Общество с ограниченной ответственностью "Научно-технический центр РЕЛЭКС" Способ проведения разделения объектов базы данных на основе меток конфиденциальности
US11153172B2 (en) * 2018-04-30 2021-10-19 Oracle International Corporation Network of nodes with delta processing
US11048815B2 (en) * 2018-08-06 2021-06-29 Snowflake Inc. Secure data sharing in a multi-tenant database system
CN109446219B (zh) * 2018-10-10 2021-06-29 新华三大数据技术有限公司 权限管理方法及装置
CN109410650B (zh) * 2018-10-10 2020-05-19 中国电子科技集团公司第二十八研究所 面向全系统信息管理的基于情景与语义的信息聚合方法
CN109442265B (zh) * 2018-10-24 2020-09-01 欧普照明股份有限公司 一种照明灯具
US11675920B2 (en) * 2019-12-03 2023-06-13 Sonicwall Inc. Call location based access control of query to database
CN111488360B (zh) * 2020-04-14 2023-04-18 上海达梦数据库有限公司 一种行级安全的实现方法、装置、设备及存储介质
US11868349B2 (en) * 2020-05-05 2024-01-09 International Business Machines Corporation Row secure table plan generation
US11562052B2 (en) * 2020-08-31 2023-01-24 Procore Technologies, Inc. Computing system and method for verification of access permissions
US11397826B2 (en) * 2020-10-29 2022-07-26 Snowflake Inc. Row-level security
CN112817941A (zh) * 2021-02-24 2021-05-18 紫光云技术有限公司 一种解决sqlserver自动修改恢复模式的方法
US20230169121A1 (en) * 2021-12-01 2023-06-01 Google Llc Performance Optimizations for Row-Level Security Filters

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09508995A (ja) * 1994-02-16 1997-09-09 ブリティッシュ・テレコミュニケーションズ・パブリック・リミテッド・カンパニー データベースへのアクセスを制御するための方法及び装置
US20020095405A1 (en) * 2001-01-18 2002-07-18 Hitachi America, Ltd. View definition with mask for cell-level data access control
JP2002312220A (ja) * 2001-01-18 2002-10-25 Hitachi Ltd ユーザ定義機能を使用したセルレベルのデータアクセス制御
US20030014394A1 (en) * 2001-03-22 2003-01-16 Shinji Fujiwara Cell-level data access control using user-defined functions
JP2006502472A (ja) * 2002-09-04 2006-01-19 インターナショナル・ビジネス・マシーンズ・コーポレーション リレーショナル・データベースへのアクセスを制御する方法
JP2006502494A (ja) * 2002-10-03 2006-01-19 インターナショナル・ビジネス・マシーンズ・コーポレーション アクセス制御に違反する問い合わせの実行を先取り式に(pre−emptively)妨げるユーザ・データのインテリジェントな使用
JP2006513499A (ja) * 2003-01-13 2006-04-20 オラクル・インターナショナル・コーポレイション 属性に関連するアクセス制御ポリシー

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07104868B2 (ja) * 1988-04-08 1995-11-13 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン データ記憶検索システム
US5261102A (en) * 1991-03-28 1993-11-09 International Business Machines Corporation System for determining direct and indirect user access privileges to data base objects
EP0697662B1 (en) * 1994-08-15 2001-05-30 International Business Machines Corporation Method and system for advanced role-based access control in distributed and centralized computer systems
US6381595B1 (en) * 1994-09-29 2002-04-30 International Business Machines Corporation System and method for compensation of functional differences between heterogeneous database management systems
US5956715A (en) * 1994-12-13 1999-09-21 Microsoft Corporation Method and system for controlling user access to a resource in a networked computing environment
US5941947A (en) * 1995-08-18 1999-08-24 Microsoft Corporation System and method for controlling access to data entities in a computer network
US5734887A (en) * 1995-09-29 1998-03-31 International Business Machines Corporation Method and apparatus for logical data access to a physical relational database
US6412070B1 (en) * 1998-09-21 2002-06-25 Microsoft Corporation Extensible security system and method for controlling access to objects in a computing environment
US6715081B1 (en) * 1999-08-12 2004-03-30 International Business Machines Corporation Security rule database searching in a network security environment
US6438542B1 (en) * 1999-08-30 2002-08-20 International Business Machines Corporation Method of optimally determining lossless joins
US6405212B1 (en) * 1999-09-27 2002-06-11 Oracle Corporation Database system event triggers
US6397206B1 (en) * 1999-12-15 2002-05-28 International Business Machines Corporation Optimizing fixed, static query or service selection and execution based on working set hints and query signatures
US6820082B1 (en) * 2000-04-03 2004-11-16 Allegis Corporation Rule based database security system and method
US6658407B1 (en) * 2000-06-29 2003-12-02 Microsoft Corporation Clause-based relational queries
WO2002059793A2 (en) * 2000-10-31 2002-08-01 Michael Philip Kaufman System and method for generating automatic user interface for arbitrarily complex or large databases
JP4006214B2 (ja) 2001-01-26 2007-11-14 株式会社日立製作所 データ検索システム、データ中継サーバ、データベースサーバおよびデータベースのアクセス方法
US6836770B2 (en) * 2002-08-09 2004-12-28 Joint Technology Corporation Method for transforming SQL queries
US7031958B2 (en) * 2003-02-06 2006-04-18 International Business Machines Corporation Patterned based query optimization
US8321137B2 (en) * 2003-09-29 2012-11-27 Pathwork Diagnostics, Inc. Knowledge-based storage of diagnostic models
US7346617B2 (en) * 2004-01-23 2008-03-18 Oracle International Corporation Multi-table access control
US7207065B2 (en) * 2004-06-04 2007-04-17 Fortify Software, Inc. Apparatus and method for developing secure software

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09508995A (ja) * 1994-02-16 1997-09-09 ブリティッシュ・テレコミュニケーションズ・パブリック・リミテッド・カンパニー データベースへのアクセスを制御するための方法及び装置
US20020095405A1 (en) * 2001-01-18 2002-07-18 Hitachi America, Ltd. View definition with mask for cell-level data access control
JP2002215440A (ja) * 2001-01-18 2002-08-02 Hitachi Ltd セルレベルのデータアクセス制御のためのマスク付きビューの定義方法及びそのプログラム記録媒体
JP2002312220A (ja) * 2001-01-18 2002-10-25 Hitachi Ltd ユーザ定義機能を使用したセルレベルのデータアクセス制御
US20030014394A1 (en) * 2001-03-22 2003-01-16 Shinji Fujiwara Cell-level data access control using user-defined functions
JP2006502472A (ja) * 2002-09-04 2006-01-19 インターナショナル・ビジネス・マシーンズ・コーポレーション リレーショナル・データベースへのアクセスを制御する方法
JP2006502494A (ja) * 2002-10-03 2006-01-19 インターナショナル・ビジネス・マシーンズ・コーポレーション アクセス制御に違反する問い合わせの実行を先取り式に(pre−emptively)妨げるユーザ・データのインテリジェントな使用
JP2006513499A (ja) * 2003-01-13 2006-04-20 オラクル・インターナショナル・コーポレイション 属性に関連するアクセス制御ポリシー

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015535622A (ja) * 2012-11-09 2015-12-14 マイクロソフト コーポレーション 予め定義されたクエリーによる表示のフィルタリング

Also Published As

Publication number Publication date
KR101120814B1 (ko) 2012-03-23
EP1564620A1 (en) 2005-08-17
US7661141B2 (en) 2010-02-09
JP4698243B2 (ja) 2011-06-08
CN100492357C (zh) 2009-05-27
KR20050081164A (ko) 2005-08-18
CN1655145A (zh) 2005-08-17
US20050177570A1 (en) 2005-08-11

Similar Documents

Publication Publication Date Title
JP4698243B2 (ja) 行レベルのデータベースセキュリティを最適化するシステムおよび方法
US11379605B2 (en) Data sharing using secure views
US7711750B1 (en) Systems and methods that specify row level database security
KR101153064B1 (ko) 데이터베이스에 대한 안전한 액세스를 용이하게 하는 컴퓨터로 구현된 시스템, 데이터 액세스 방법, 안전한 액세스를 용이하게 하는 방법, 및 컴퓨터 판독가능 저장 매체
US11461493B1 (en) Data overlap count adjustment in a multiple tenant database system
US10438008B2 (en) Row level security
US7599937B2 (en) Systems and methods for fine grained access control of data stored in relational databases
US8214382B1 (en) Database predicate constraints on structured query language statements
Ali et al. A provenance-aware policy language (cprovl) and a data traceability model (cprov) for the cloud
JP2016201043A (ja) アクセス制御装置、およびアクセス制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080204

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101022

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110124

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110225

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110301

R150 Certificate of patent or registration of utility model

Ref document number: 4698243

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees