專利名稱::最優(yōu)化行級別數(shù)據(jù)庫安全的系統(tǒng)和方法相關(guān)申請參照本申請要求于2004年2月11日提交的題為“為數(shù)據(jù)庫表格行提供行級別安全的系統(tǒng)和方法”(“SystemsandMethodsThatProvideRowLevelSecurityforDatabaseTableRow”)的美國專利臨時申請60/543,855的權(quán)益,其全文在此引入作為參考。本申請與于__提交的美國專利申請__(律師案號MS308288.02/MSFTP647USA)有關(guān),其題為“指定行級別數(shù)據(jù)庫安全的系統(tǒng)和方法”(“SystemsandMethodsThatSpecifyRowLevelDatabaseSecurity”)。技術(shù)領(lǐng)字段本發(fā)明一般涉及數(shù)據(jù)庫,尤其涉及用行級別安全表達(dá)式來增強(qiáng)查詢,以最優(yōu)化性能并減輕數(shù)據(jù)泄漏的系統(tǒng)和方法。
背景技術(shù):
:計(jì)算機(jī)硬件、軟件和網(wǎng)絡(luò)的技術(shù)進(jìn)步提高了人們用電子信息交換取代諸如紙張和電話通信等常規(guī)技術(shù)的需求。這種電子通信在全世界基本上任意兩個地點(diǎn)之間都能提供瞬間發(fā)生的、可靠的數(shù)據(jù)傳輸。許多行業(yè)和消費(fèi)者發(fā)揮這種技術(shù)用以通過基于web(例如在線)的服務(wù)來改進(jìn)效率并降低成本。例如,消費(fèi)者能點(diǎn)擊鼠標(biāo)在家里購買貨物、查看銀行報(bào)表、研究產(chǎn)品和公司、獲取實(shí)時股票報(bào)價、下載宣傳冊等。隨著可用電子數(shù)據(jù)的數(shù)量在增長,以便于用戶友好和快速的數(shù)據(jù)搜索和檢索的可管理方式存儲這種數(shù)據(jù)變得越來越重要。今天,一種常用方法是把電子數(shù)據(jù)存儲在一個或多個數(shù)據(jù)庫中。一般而言,典型的數(shù)據(jù)庫是有組織的信息集合,使其結(jié)構(gòu)化從而例如計(jì)算機(jī)程序能夠快速搜索和選擇數(shù)據(jù)。通常,存儲在數(shù)據(jù)庫中的數(shù)據(jù)通過一個或多個表格進(jìn)行組織,其中相應(yīng)的表格包括成組的記錄而一條記錄則包括成組的字段。記錄通常被索引為表格中的行而記錄字段則被索引為列,從而行/列對能夠指向表格中的具體數(shù)據(jù)。存儲在數(shù)據(jù)庫中的數(shù)據(jù)常常包括個人信息(例如銀行賬戶和社會安全號)和敏感信息(例如病歷),且不能通過硬拷貝來備份。因此,涉及數(shù)據(jù)庫和存儲于其中的數(shù)據(jù)的安全性變得越來越重要。然而,許多現(xiàn)有的數(shù)據(jù)庫安全技術(shù)能被突破,例如由于軟件漏洞和/或由有不良意圖的軟件黑客,或者這些技術(shù)不能提供全面的安全。
發(fā)明內(nèi)容以下簡單歸納了本發(fā)明的內(nèi)容,以便提供對本發(fā)明部分方面的基本理解。這部分內(nèi)容不是本發(fā)明的廣泛縱覽。它并非旨在標(biāo)識本發(fā)明的關(guān)鍵/重要元素或描繪本發(fā)明的范圍。其唯一目的是用簡化形式表示本發(fā)明的部分概念,作為后面呈現(xiàn)的更詳細(xì)描述的序幕。本發(fā)明的諸系統(tǒng)和方法通過提供能被用來創(chuàng)建指定安全表達(dá)式(namedsecurityexpressions)并使其關(guān)聯(lián)于一個以上查詢初啟程序(queryinitiator)的增強(qiáng)語法,來推動數(shù)據(jù)庫行級別安全。這種表達(dá)式包括表示為任意布爾表達(dá)式的謂項(xiàng)(predicate),數(shù)據(jù)行必須滿足該謂項(xiàng)以便使該數(shù)據(jù)可被查詢初啟程序訪問。一般而言,當(dāng)激活行級別安全時,用關(guān)聯(lián)于查詢初啟程序的安全表達(dá)式增強(qiáng)所接收的查詢。在對數(shù)據(jù)行查詢期間利用這些表達(dá)式,其中滿足安全表達(dá)式(或者求得為“真”的值)的行可被查詢初啟程序訪問。在一特定示例中,通過嫁接(grafting)一表達(dá)式來使所接收的查詢得以增強(qiáng),該表達(dá)式由當(dāng)其滿足時即準(zhǔn)許行訪問的布爾表達(dá)式的邏輯和(disjunction)與當(dāng)其滿足時即拒絕行訪問的布爾表達(dá)式的補(bǔ)碼(complement)的邏輯積(conjunction)所組成。換言之,將查詢增強(qiáng)使得在滿足至少一個準(zhǔn)許表達(dá)式且沒有滿足一個拒絕表達(dá)式時,行數(shù)據(jù)滿足聚集的安全表達(dá)式。諸系統(tǒng)和方法能各不相同地在查詢中置入并移動包括安全表達(dá)式的表達(dá)式,以便最優(yōu)化查詢性能。常規(guī)技術(shù)不考慮是否應(yīng)當(dāng)在其它表達(dá)式之前對一個或多個安全表達(dá)式求值。因而,常規(guī)系統(tǒng)容易泄漏,用戶可訪問該用戶不應(yīng)當(dāng)見到的數(shù)據(jù)。本發(fā)明減輕了這種泄漏。通常,這通過在安全表達(dá)式上作特殊標(biāo)記以便區(qū)分安全表達(dá)式和非安全表達(dá)式來達(dá)成。然后,可利用謂項(xiàng)移動規(guī)則以便于減輕數(shù)據(jù)泄漏。僅在限定情形中,這些規(guī)則使非安全表達(dá)式被拖到(或壓到)安全表達(dá)式之上(或之下)。在許多實(shí)例中,可在編譯時執(zhí)行靜態(tài)分析以確定表達(dá)式是否是“安全”表達(dá)式,或者表達(dá)式是否可無信息揭示風(fēng)險(xiǎn)地運(yùn)行。在其它實(shí)例中,能可選地或附加地在運(yùn)行時執(zhí)行動態(tài)分析,以確定表達(dá)式是否是“安全”表達(dá)式。對于動態(tài)分析,通常直到已成功運(yùn)行了安全謂項(xiàng)和/或未遇到安全侵犯(例如錯誤條件、中斷、事件……)才返回結(jié)果并作改動。對于靜態(tài)分析和動態(tài)分析,如果未發(fā)現(xiàn)安全侵犯,則可確定表達(dá)式的排列順序以改進(jìn)性能。然而,如果檢測到安全侵犯,則放棄查詢或查詢在“安全”模式中運(yùn)行,其中安全表達(dá)式在運(yùn)行非安全表達(dá)式之前求值。一般而言,認(rèn)為邏輯操作是“安全”的。安全表達(dá)式能通過諸如“SQL”的數(shù)據(jù)庫語言關(guān)聯(lián)到查詢初啟程序上。例如,安全表達(dá)式可使用SQLCREATE(SQL創(chuàng)建)實(shí)用工具(utility)創(chuàng)建。已創(chuàng)建安全表達(dá)式可通過SQLGRANT(SQL準(zhǔn)許)或SQLDENY(SQL拒絕)實(shí)用工具關(guān)聯(lián)到查詢初啟程序。準(zhǔn)許和/或拒絕安全表達(dá)式可通過SQLREVOKE(SQL撤消)實(shí)用工具取消,而安全表達(dá)式可通過SQLDROP(SQL丟棄)實(shí)用工具放棄。這種安全表達(dá)式通常被結(jié)合于查詢中并在查詢數(shù)據(jù)時利用。一般而言,準(zhǔn)許安全表達(dá)式是在一個數(shù)據(jù)行滿足它時提供對該數(shù)據(jù)行的訪問的表達(dá)式,而拒絕安全表達(dá)式則是在數(shù)據(jù)行滿足它時禁止對該數(shù)據(jù)行訪問的表達(dá)式。如上所述,多個安全表達(dá)式可與查詢初啟程序相關(guān)聯(lián);因而,準(zhǔn)許安全表達(dá)式和拒絕安全表達(dá)式兩者都可以與一用戶相關(guān)聯(lián)。通常,拒絕安全表達(dá)式會取代準(zhǔn)許安全表達(dá)式,使得滿足兩種安全表達(dá)式的行對查詢初啟程序不可用。另外,可利用拒絕安全表達(dá)式的補(bǔ)碼,從而當(dāng)滿足至少一個準(zhǔn)許安全表達(dá)式且沒有滿足一個拒絕表達(dá)式時,用多個安全表達(dá)式對行數(shù)據(jù)求值的聚集結(jié)果呈現(xiàn)為“真”。傳統(tǒng)上,為了使安全與行相關(guān)聯(lián),需要標(biāo)識相應(yīng)行。然而,許多數(shù)據(jù)庫編程語言并未說明如何用地址來標(biāo)識表格中的相應(yīng)各行。在一些情形中,可利用初級關(guān)鍵字(primarykey)作為表格的地址。然而,并不是每個表格都有初級關(guān)鍵字。此外,關(guān)聯(lián)安全使得表格中的行能分別被單個標(biāo)識可導(dǎo)致數(shù)據(jù)管理問題,因?yàn)楸砀裰锌赡軙泻芏嘈?。還有,把安全信息存儲在相應(yīng)行中效率低又占用空間,特別是如果存儲在行中的各個值并不是很大時。另外,許多數(shù)據(jù)庫編程語言規(guī)定了語法,通過這些語法可在表格或其一個或多個構(gòu)成列上(而不是在行上)指定安全。本發(fā)明的新系統(tǒng)和方法能通過增強(qiáng)SQL語法用來減輕前述缺點(diǎn)。以下說明和附圖詳細(xì)陳述了本發(fā)明的某些說明性方面。然而,這些方面僅僅示出了本發(fā)明諸原理可在其中采用的各種方式的其中幾種,且本發(fā)明旨在包括所有這些方面及其等同方案。結(jié)合附圖參閱本發(fā)明的以下詳細(xì)說明,本發(fā)明的其它優(yōu)點(diǎn)和新特征會變得清楚。圖1闡述了通過用安全表達(dá)式增強(qiáng)查詢有助于數(shù)據(jù)訪問安全的系統(tǒng)。圖2闡述了為了性能最優(yōu)化安全增強(qiáng)查詢的數(shù)據(jù)安全系統(tǒng)。圖3闡述了用由數(shù)據(jù)管理員存儲在表達(dá)式庫中的安全表達(dá)式來增強(qiáng)查詢的數(shù)據(jù)安全系統(tǒng)。圖4闡述了利用安全增強(qiáng)查詢來查詢數(shù)據(jù)庫的系統(tǒng)。圖5闡述了用來實(shí)現(xiàn)行級別數(shù)據(jù)庫安全的方法論。圖6闡述了用來準(zhǔn)許對表格行的行級別安全權(quán)限的方法論。圖7闡述了用來拒絕對表格行的行級別安全權(quán)限的方法論。圖8闡述了用來取消準(zhǔn)許和/或拒絕對表格行的行級別安全權(quán)限的方法論。圖9闡述了示例性SQL查詢管理系統(tǒng)。圖10闡述了示例性網(wǎng)絡(luò)環(huán)境,其中可采用本發(fā)明的新方面。圖11闡述了示例性操作環(huán)境,其中可采用本發(fā)明的新方面。具體實(shí)施例方式當(dāng)用于本發(fā)明時,術(shù)語“組件”、“系統(tǒng)”和“管理器”等等旨在指計(jì)算機(jī)相關(guān)實(shí)體硬件、硬件和軟件的組合、軟件、或執(zhí)行中的軟件。例如,組件可以是,但不限于是,運(yùn)行于處理器的過程、處理器、對象、可執(zhí)行組件、執(zhí)行線程、程序、和/或計(jì)算機(jī)。作為說明,運(yùn)行于服務(wù)器上的應(yīng)用和服務(wù)器都是組件。一個或多個組件可駐留于執(zhí)行的過程和/或線程中,且組件可在一臺計(jì)算機(jī)上本地化和/或在兩臺或多臺計(jì)算機(jī)上分散化。本發(fā)明涉及用來實(shí)現(xiàn)行級別數(shù)據(jù)庫安全的系統(tǒng)和方法。這種安全促使一組或多組有類似安全特征的行被邏輯地聚集(aggregated)起來,并被一起視為定義在(但不局限于)表格和/或上下文數(shù)據(jù)上的帶有一個或多個編程指令諸如布爾表達(dá)式的指定表達(dá)式。安全表達(dá)式可各不相同地增強(qiáng)查詢,以便排列該查詢的謂項(xiàng)以最優(yōu)化性能并減輕安全泄漏。另外,可將安全表達(dá)式聚集使得滿足該聚集表達(dá)式(例如返回“真”)提供對數(shù)據(jù)行的訪問,而不滿足該聚集表達(dá)式(例如返回“假”)限制對數(shù)據(jù)行的訪問。本發(fā)明參照附圖進(jìn)行描述,其中相同參考標(biāo)記貫穿全文用來指向相同元素。在以下描述中,為了進(jìn)行解釋,陳述了許多具體細(xì)節(jié)以便提供本發(fā)明的全面理解。然而,顯然沒有這些特定細(xì)節(jié)也可實(shí)現(xiàn)本發(fā)明。在其它實(shí)例中,眾所周知的結(jié)構(gòu)和裝置被以方框圖形式顯示,以便于描述本發(fā)明。圖1闡述了促進(jìn)查詢數(shù)據(jù)時數(shù)據(jù)訪問安全的系統(tǒng)100。系統(tǒng)100包括輸入組件110、查詢管理器120和輸出組件130。輸入組件110接收查詢。這種查詢能從基本上任意數(shù)據(jù)庫編程語言諸如SQL起始,并被指向包括一個或多個數(shù)據(jù)庫、表格、上下文信息等等的數(shù)據(jù)超集(datarepository)。查詢管理器120能增強(qiáng)接收到的查詢以將數(shù)據(jù)安全結(jié)合其中。這種安全可由數(shù)據(jù)所有者在數(shù)據(jù)超集中創(chuàng)建,其中創(chuàng)建的安全提供對該所有者數(shù)據(jù)的安全。該安全可應(yīng)用于各種格式或結(jié)構(gòu)的數(shù)據(jù)。例如,當(dāng)數(shù)據(jù)關(guān)聯(lián)于行、表格和/或列時,安全能都不應(yīng)用、或全部應(yīng)用、或應(yīng)用在其中的任意組合中。另外,安全可如此構(gòu)建使得滿足該安全提供對數(shù)據(jù)的訪問,或滿足該安全禁止對數(shù)據(jù)的訪問。可以理解,安全可由多個不同安全組成,其中部分能提供訪問而部分能禁止訪問。此外,表格的創(chuàng)建者能把一個或多個安全表達(dá)式鏈接到一個或多個查詢者。一般而言,如果安全未鏈接,查詢者將不能看到任何數(shù)據(jù)。如果安全與查詢者鏈接,只有當(dāng)數(shù)據(jù)滿足至少一個提供對數(shù)據(jù)訪問的安全表達(dá)式且沒有滿足任何拒絕對數(shù)據(jù)訪問的安全表達(dá)式時,查詢者才能訪問數(shù)據(jù)。通常,拒絕訪問的安全取代準(zhǔn)許訪問安全從而當(dāng)數(shù)據(jù)滿足兩種安全時,訪問被拒絕。另外,準(zhǔn)許安全和拒絕安全都能取消。前述內(nèi)容使得數(shù)據(jù)所有者具備了選擇性地確定誰能訪問其數(shù)據(jù)的哪一部分的能力。另外,查詢者能被加以豁免狀態(tài),從而安全不應(yīng)用于查詢者且查詢者基本上能訪問所有數(shù)據(jù)。通常以這種方式從所有的行級別安全限制中豁免表格的所有者。增強(qiáng)查詢能傳送到輸出組件130。輸出組件130能提供這種查詢用來作進(jìn)一步處理,或向查詢數(shù)據(jù)的組件(包括它自己)提供這種查詢。圖2闡述了帶有輸入組件110、查詢管理器120、輸出組件130、以及加上優(yōu)化器210的數(shù)據(jù)安全系統(tǒng)100。如上所述,輸入組件110接收對查詢各種結(jié)構(gòu)化數(shù)據(jù)的數(shù)據(jù)超集的請求。查詢管理器120增強(qiáng)請求以在其中結(jié)合數(shù)據(jù)安全表達(dá)式。這種安全能由數(shù)據(jù)所有者在數(shù)據(jù)超集中創(chuàng)建,其中創(chuàng)建的安全為數(shù)據(jù)的所有者提供安全。該安全能通過表達(dá)式來定義,比如求值為諸如“真”和“假”、或“1”和“0”的二元值的布爾表達(dá)式,這些表達(dá)式可用來指示安全空間(securityclearance)和限制訪問。當(dāng)利用一個以上表達(dá)式時,表達(dá)式可分別進(jìn)行連續(xù)或并發(fā)求值,且將各個結(jié)果聚集(例如進(jìn)行“與”和“或”計(jì)算)以呈現(xiàn)一判定。如上簡述,可產(chǎn)生當(dāng)滿足時明確允許(例如準(zhǔn)許)或禁止(例如拒絕)對數(shù)據(jù)訪問的表達(dá)式。由于滿足禁止數(shù)據(jù)時這種表達(dá)式結(jié)果為“真”,可利用補(bǔ)碼使得滿足該表達(dá)式結(jié)果為“假”。因而,當(dāng)滿足至少一個準(zhǔn)許表達(dá)式且沒有一個拒絕表達(dá)式求值為“真”時,可創(chuàng)建返回“真”的聚集表達(dá)式??梢岳斫猓M管可采用布爾表達(dá)式,根據(jù)本發(fā)明的一方面也可利用其它技術(shù)。這種技術(shù)可能能夠提供概率和/或置信級別,并結(jié)合可調(diào)閾值以定義分離點(diǎn)。優(yōu)化器210能在查詢中結(jié)合并移動包括安全表達(dá)式在內(nèi)的表達(dá)式,以便將查詢最優(yōu)化。常規(guī)技術(shù)不考慮是否一個或多個恰當(dāng)嫁接的安全表達(dá)式應(yīng)當(dāng)先于其它表達(dá)式求值。因而,常規(guī)系統(tǒng)容易泄漏,用戶訪問到該用戶不應(yīng)當(dāng)見到的數(shù)據(jù)。本發(fā)明減輕了這種泄漏。通常,這通過嫁接查詢時在安全表達(dá)式上作特殊標(biāo)記以便區(qū)分安全表達(dá)式和非安全表達(dá)式來達(dá)成。然后優(yōu)化器210可利用謂項(xiàng)移動規(guī)則來有助于減輕數(shù)據(jù)泄漏。這些規(guī)則使優(yōu)化器210僅將限定類的非安全表達(dá)式拖到安全表達(dá)式之上,或?qū)⑾薅惖姆前踩磉_(dá)式壓到安全表達(dá)式之下。在許多實(shí)例中,靜態(tài)分析可在編譯時執(zhí)行以確定表達(dá)式是否是“安全”表達(dá)式,或者表達(dá)式是否可無信息揭示風(fēng)險(xiǎn)地運(yùn)行。在其它實(shí)例中,動態(tài)分析能可選地或附加地在運(yùn)行時執(zhí)行,以確定表達(dá)式是否真正是“安全”表達(dá)式。對于動態(tài)分析,通常不返回結(jié)果且通常也不作改動,直到查詢已成功完成而在執(zhí)行中未遇到安全侵犯(例如錯誤條件、中斷、事件……)。對于靜態(tài)分析和動態(tài)分析,如果未發(fā)現(xiàn)安全侵犯,則優(yōu)化器210可確定表達(dá)式的排列順序以改進(jìn)性能。然而,如果檢測到安全侵犯,則放棄查詢或查詢在“安全”模式中運(yùn)行,其中安全表達(dá)式在運(yùn)行非安全表達(dá)式之前求值。在查詢中對安全謂項(xiàng)進(jìn)行特別標(biāo)記就可執(zhí)行這種計(jì)劃。對于靜態(tài)分析,一般而言,認(rèn)為邏輯操作是“安全”的。在用安全表達(dá)式增強(qiáng)查詢并在查詢中將表達(dá)式最優(yōu)化后,查詢可傳送到輸出組件130。輸出組件130可提供增強(qiáng)查詢做進(jìn)一步處理或去查詢數(shù)據(jù)。圖3闡述了包括輸入組件110、查詢管理器120、輸出組件130、優(yōu)化器210、以及加上表達(dá)式庫310的數(shù)據(jù)安全系統(tǒng)100。輸入組件110能從一個或多個查詢者處連續(xù)地或并發(fā)地接收對數(shù)據(jù)的請求,其中多個請求能與數(shù)據(jù)超集中類似的和/或不同的數(shù)據(jù)相關(guān)聯(lián)。另外,多個請求可連續(xù)地和/或并發(fā)地進(jìn)行處理。在許多實(shí)例中,可利用諸如緩沖器(未示出)的存儲器來暫時存儲與請求相關(guān)的信息以便使請求排隊(duì)。例如,當(dāng)在處理低優(yōu)先級的請求時可接收標(biāo)記為高優(yōu)先級的請求,其中低優(yōu)先級請求可被高速緩存直到高優(yōu)先級的請求已受到服務(wù)。能利用表達(dá)式庫310來存儲一個或多個安全表達(dá)式以及非安全表達(dá)式。這種表達(dá)式可關(guān)聯(lián)于一個或多個請求者和/或一組或多組請求者。在標(biāo)識了請求者之后,表達(dá)式可從表達(dá)式庫310中檢索。例如,接收到的查詢可包括與請求者(例如用戶、應(yīng)用……)或傳送請求的機(jī)器相關(guān)聯(lián)的唯一標(biāo)識符。在另一實(shí)例中,這種信息可在查詢之前或之后。在又一實(shí)例中,可采用智能來確定請求者和/或適當(dāng)?shù)陌踩磉_(dá)式集。當(dāng)搜索數(shù)據(jù)超集時可采用為請求檢索到的安全表達(dá)式??梢岳斫?,可由數(shù)據(jù)管理員利用應(yīng)用程序界面(API)(未示出)在表達(dá)式庫310中創(chuàng)建關(guān)于數(shù)據(jù)的安全表達(dá)式。作為示例,可利用SQL編程語言中的CREATE實(shí)用工具來創(chuàng)建安全表達(dá)式。例如,能利用以下SQL語法來創(chuàng)建安全表達(dá)式CREATEEXPRESSION<expression_name>ON<data_name>AS(<expression>)其中<expression_name>指定表達(dá)式名,<data_name>指定來源(例如,一個或多個表名或其中的子集),且<expression>是為了訪問行中的數(shù)據(jù)行必須滿足的安全表達(dá)式。如上所述,這種表達(dá)式可與特定的請求者和/或請求者組鏈接。例如,當(dāng)利用SQL時,數(shù)據(jù)管理員可通過GRANT(準(zhǔn)許)、REVOKE(撤銷)和DENY(拒絕)實(shí)用工具將為特定數(shù)據(jù)源創(chuàng)建的安全表達(dá)式鏈接到用戶和/或用戶組中,或者通過DROP(放棄)實(shí)用工具移除安全表達(dá)式,如下詳述。在一特定示例中,查詢管理器120能通過嫁接由準(zhǔn)許的布爾表達(dá)式的邏輯和(例如“或”)組成的表達(dá)式(其中相應(yīng)的表達(dá)式與對其作出準(zhǔn)許的相關(guān)聯(lián)安全主體(securityprincipal)(例如身份安全)取邏輯積),并通過對所得邏輯和與拒絕的各個布爾表達(dá)式的補(bǔ)碼的邏輯積(例如“與”)取邏輯積(例如“與”)(其中相應(yīng)的表達(dá)式與對其作出拒絕的安全主體取邏輯積),來增強(qiáng)查詢。換言之,查詢管理器能增強(qiáng)查詢,使得在滿足至少一個準(zhǔn)許表達(dá)式并沒有滿足任何拒絕表達(dá)式時數(shù)據(jù)能夠滿足查詢。這種增強(qiáng)查詢可傳送到輸出組件130并用來推動查詢數(shù)據(jù)。圖4闡述了促進(jìn)數(shù)據(jù)庫安全的系統(tǒng)400。系統(tǒng)400包括對數(shù)據(jù)庫的用戶訪問點(diǎn)405。如圖所示,用戶訪問點(diǎn)405是臺式計(jì)算機(jī);然而,可以理解根據(jù)本發(fā)明的一方面,可采用諸如便攜式計(jì)算機(jī)(例如膝上型、筆記本PC……)、手持式計(jì)算機(jī)(例如PDA)、工作站、蜂窩式電話等等的任何基于微處理器的裝置。在許多示例中,用戶訪問點(diǎn)405耦合到較大網(wǎng)絡(luò)/總線中(例如工廠或公司范圍)的子網(wǎng)絡(luò)/總線,其中有子網(wǎng)絡(luò)/總線賬戶的用戶可在用戶訪問點(diǎn)405登錄,并在提供給用戶的特權(quán)(例如權(quán)利、屬性……)范圍內(nèi)訪問駐留其中的實(shí)體和應(yīng)用。通常,會利用更細(xì)化的區(qū)分等級,其中關(guān)聯(lián)于網(wǎng)絡(luò)的用戶被描繪成與不同特權(quán)相關(guān)聯(lián)的領(lǐng)域、組、項(xiàng)目、工作描述、工作組、分公司、部門、狀態(tài)等。另外,在任何相似描述中的用戶可與不同特權(quán)相關(guān)聯(lián)。例如,多個用戶可組合在一起,而用戶之一可準(zhǔn)許作為其它用戶的督導(dǎo)者。這種用戶一般有特權(quán)去限制其它用戶。例如,督導(dǎo)者可更改其它用戶的讀、寫和執(zhí)行權(quán)利、查看特定信息的能力和/或因特網(wǎng)能力。在本示例中,用戶可被描繪成L個這樣的組,其中L是等于或大于1的整數(shù)。該L組包括組14101、組24102直到組L410L,它們統(tǒng)稱為組410。組410可包括不同和/或類似的用戶。因而,特定用戶可與多個組相關(guān)聯(lián)。組14101被示為包括M個用戶,其中M是等于或大于1的整數(shù)。M個用戶包括用戶14201、用戶24202直到用戶M420M。這種用戶統(tǒng)稱為用戶420。當(dāng)用戶420之一登錄訪問點(diǎn)405時,可確定和利用用戶身份(例如唯一ID、別名……)、組名、域名、工作組等來為用戶配置環(huán)境。這種配置可包括執(zhí)行一定制界面、隱藏?cái)?shù)據(jù)、揭示數(shù)據(jù)、設(shè)定讀、寫和/或執(zhí)行特權(quán)等。該用戶可通過查詢管理器110與數(shù)據(jù)庫430通信。例如,當(dāng)在數(shù)據(jù)庫430傳送查詢時,該查詢可由可獲取查詢來源和/或各種諸如用戶和/或組身份的其它特征的查詢管理器110接收。查詢管理器110可利用該信息來獲取并應(yīng)用適當(dāng)?shù)陌踩磉_(dá)式。如上所述,這種安全包括一個或多個布爾表達(dá)式,其中這些表達(dá)式可一些標(biāo)準(zhǔn)有關(guān),在數(shù)據(jù)滿足這些標(biāo)準(zhǔn)時使數(shù)據(jù)訪問成為可能,或在數(shù)據(jù)滿足這些標(biāo)準(zhǔn)時減少數(shù)據(jù)訪問。安全表達(dá)式可從表達(dá)式庫中獲取。這種表達(dá)式能關(guān)聯(lián)于一個或多個請求者和/或一個或多個請求者組,并在請求與表達(dá)式相關(guān)聯(lián)之后進(jìn)行檢索。例如,接收到的查詢可包括與請求者(例如用戶、應(yīng)用……)或傳送該請求的機(jī)器相關(guān)聯(lián)的唯一標(biāo)識符。在另一實(shí)例中,這種信息可以是在查詢之前和/或之后。在又一實(shí)例中,可采用智能來確定請求者和/或適當(dāng)?shù)陌踩磉_(dá)式集。可通過SQL編程語言來創(chuàng)建安全表達(dá)式。例如,可利用SQLCREATE實(shí)用工具來為表格創(chuàng)建指定表達(dá)式,其中指定表達(dá)式指定為了獲取對數(shù)據(jù)的訪問,數(shù)據(jù)所必須滿足的布爾表達(dá)式。這種表達(dá)式可與特定請求者和/或請求者組鏈接,以便利用數(shù)據(jù)安全。例如,當(dāng)利用SQL時,數(shù)據(jù)管理員可通過GRANT、REVOKE和DENY實(shí)用工具將為特定數(shù)據(jù)源創(chuàng)建的安全表達(dá)式鏈接到用戶和/或用戶組中,或者通過DROP實(shí)用工具移除安全表達(dá)式,如下詳述。一般而言,指定表達(dá)式對于基本上所有滿足該表達(dá)式的行充當(dāng)代替者。因而,通過利用該技術(shù),當(dāng)表格中存在初級關(guān)鍵字時可表達(dá)表格中所有的行/或各個單獨(dú)的行。另外,實(shí)質(zhì)上可對表格定義任意數(shù)量的表達(dá)式,且單個行可有一個以上對表格定義的表達(dá)式滿足。前述內(nèi)容提供了一種機(jī)制,以邏輯地聚類一組有相似安全特征的行,并視該組為指定表達(dá)式。查詢管理器210能通過嫁接由準(zhǔn)許布爾表達(dá)式的邏輯和(例如“或”)組成的表達(dá)式(其中表達(dá)式分別與對其作出準(zhǔn)許的相關(guān)聯(lián)安全主體(例如身份安全)取邏輯積),并通過對所得邏輯和與拒絕的各個布爾表達(dá)式補(bǔ)碼的邏輯積(例如“與”)取邏輯積(例如“與”)(其中表達(dá)式分別與對其作出拒絕的安全主體取邏輯積),來增強(qiáng)查詢。換言之,查詢管理器能增強(qiáng)查詢,使得在滿足至少一個準(zhǔn)許表達(dá)式并沒有滿足任何拒絕表達(dá)式時數(shù)據(jù)能夠滿足查詢??梢岳斫鈹?shù)據(jù)庫430中的安全表達(dá)式能由數(shù)據(jù)所有者或管理員創(chuàng)建,并鏈接于一個或多個用戶。該鏈接可作為對用戶的直接或間接準(zhǔn)許(通過對一個或多個用戶任務(wù)、服務(wù)器、組合等的準(zhǔn)許)的結(jié)果而建立。作為示例,表格可被定義為Emp(idint,salaryfloat)其中Emp是表格名,id是整數(shù)類型的變量而salary是浮點(diǎn)數(shù)(float)類型的變量。用于表格的表達(dá)式可通過SQLCreate表達(dá)式來創(chuàng)建。例如,可執(zhí)行以下語句以創(chuàng)建用于該表格的表達(dá)式CREATEEXPRESSIONSalLimitONEmpAS(salary<X)其中SalLimit是表達(dá)式名,salary(薪金)是要測試的字段,而X(例如100000)是確定行數(shù)據(jù)是否滿足安全表達(dá)式的變量。諸如否定和/或取消語句的各種其它語句可通過相應(yīng)表達(dá)式類似地采用。SalLimit安全表達(dá)式可通過以下準(zhǔn)許表達(dá)式語法鏈接到用戶GRANTSELECT(whereSalLimit)ONEmpTOUser1其中User1是授予了滿足SalLimit的表格中行數(shù)據(jù)的權(quán)限的用戶。這種語句隱含的意思是User1被允許查看Emp表格中滿足SalLimi表達(dá)式的行。如果沒有諸如上例的準(zhǔn)許安全表達(dá)式時,行中的數(shù)據(jù)不能滿足表達(dá)式因而不能向用戶提供對任何行的數(shù)據(jù)的訪問。另外,未滿足這種條件的任何行都對用戶呈現(xiàn)為不可見。此外,當(dāng)滿足拒絕安全表達(dá)式時,用戶被禁止查看數(shù)據(jù)。如上所述,安全也可附加地基于列。例如,以下語句能準(zhǔn)許行級別和列級別的兩種安全。GRANTSELECT(whereSalLimit,Col1)ONEmpTOUser1其中附加的參數(shù)Col1被用來指定表格Emp中的列。此外,在同一表格中可有多個準(zhǔn)許、拒絕、和/或取消語句。通常,拒絕語句會取代(supersede)準(zhǔn)許語句,但系統(tǒng)可作其它配置。這種語句的被準(zhǔn)許者可以是數(shù)據(jù)庫中授權(quán)的例如在本說明書中定義的任意主要安全。類似地,提供有行、列和/或表格級別安全的拒絕表達(dá)式,以及取消準(zhǔn)許或拒絕的取消表達(dá)式。示例性SQL拒絕語法如下所示DENYSELECT(WHERE<expression_name>)ON<data_name>TO(user_name)其中<expression_name>指定安全表達(dá)式,<data_name>指定源數(shù)據(jù)以根據(jù)安全表達(dá)式求值,且(user_name)指定用戶或用戶組以關(guān)聯(lián)于命名安全表達(dá)式,且示例性SQL取消語法如下所示REVOKESELECT(WHERE<expression_name>)ON<data_name>FROM(user_name)其中<expression_name>指定要取消的安全表達(dá)式,<data_name>指定源數(shù)據(jù),且(user_name)指定用戶或用戶組以與命名安全表達(dá)式分離。優(yōu)化器210能在接收到的查詢中移動包括安全表達(dá)式的表達(dá)式以便優(yōu)化性能。一般而言,對安全表達(dá)式會進(jìn)行標(biāo)記,以辨別安全表達(dá)式和非安全表達(dá)式,且謂項(xiàng)規(guī)則被用來定義如何將安全表達(dá)式合并到查詢中的范圍。謂項(xiàng)規(guī)則使優(yōu)化器210能夠只有在確保非安全表達(dá)式在執(zhí)行安全表達(dá)式之前不能被用來返回?cái)?shù)據(jù)之后,才把非安全表達(dá)式拉到安全表達(dá)式之上,或把非安全表達(dá)式壓到安全表達(dá)式之下。通常,邏輯操作被認(rèn)為是“安全”的,且優(yōu)化器210可把這種操作排列在安全表達(dá)式之上或之下。在許多實(shí)例中,要分析諸如用戶定義表達(dá)式的表達(dá)式以確定它是否安全。一般而言,邏輯操作通常被認(rèn)為是“安全”的。這種分析可靜態(tài)地加以執(zhí)行。如上所述,靜態(tài)分析在編譯時執(zhí)行。相反動態(tài)分析則在運(yùn)行時執(zhí)行。有了靜態(tài)分析,如果檢測到安全侵犯,則放棄查詢或查詢在“安全”模式中運(yùn)行,其中安全表達(dá)式在運(yùn)行非安全表達(dá)式之前求值。查詢管理器110可通過應(yīng)用安全表達(dá)式并只返回滿足該標(biāo)準(zhǔn)的數(shù)據(jù)來推動查詢。如所述,查詢在數(shù)據(jù)庫430上執(zhí)行,其中數(shù)據(jù)庫包括N個表格,表格14401、表格24402、直到表格N440N,其中N是大于或等于1的整數(shù),以及數(shù)據(jù)450。注意表格14401、表格24402和表格N440N可統(tǒng)稱為表格440。一般而言,表格440可存儲結(jié)構(gòu)化格式的數(shù)據(jù)。這種結(jié)構(gòu)化格式可包括有相似結(jié)構(gòu)的一個或多個實(shí)體集,其中響應(yīng)實(shí)體可被指為行。相應(yīng)的行可與能被指為列的字段相關(guān)聯(lián)。圖5-8示出了根據(jù)本發(fā)明的方法。為便于解釋,方法被顯示和描述成一系列動作??梢岳斫夂兔靼椎氖?,本發(fā)明并不限于所述動作和/或動作順序,例如動作能以各種順序和/或同時發(fā)生,并與未在此顯示和描述的其它動作一起發(fā)生。此外,要實(shí)現(xiàn)根據(jù)本發(fā)明的方法論,并不是所有的圖示動作都是必需的。另外,本領(lǐng)字段技術(shù)人員將理解和明白,這些方法論可另外通過狀態(tài)圖表示為一系列相互關(guān)連的狀態(tài)或事件。來看圖5,闡述了實(shí)現(xiàn)行級別數(shù)據(jù)庫安全的方法500。在標(biāo)記號510,接收到來自一個或多個用戶的一個或多個查詢。這種查詢能夠連續(xù)地或并發(fā)地接收,并能與數(shù)據(jù)中相似和/或不同的數(shù)據(jù)相關(guān)聯(lián)。另外,查詢可在諸如臺式計(jì)算機(jī)、便攜式計(jì)算機(jī)、手持式計(jì)算機(jī)、工作站、蜂窩式電話等等的數(shù)據(jù)訪問點(diǎn)上發(fā)送。在接收到查詢后,能確定查詢的來源。在許多實(shí)例中,來源關(guān)聯(lián)于能用來標(biāo)識用戶的用戶名、地址、網(wǎng)絡(luò)、子網(wǎng)絡(luò)、領(lǐng)域、組、項(xiàng)目、工作描述、工作組、分公司、部門、狀態(tài)等,其中單個用戶能與不同特權(quán)相關(guān)聯(lián)。相似描繪中的用戶能關(guān)聯(lián)于相似或不同的特權(quán)。在標(biāo)記號520,能為用戶獲取安全表達(dá)式。例如,數(shù)據(jù)庫中數(shù)據(jù)的所有者能為其數(shù)據(jù)創(chuàng)建一個或多個安全表達(dá)式,并將這種表達(dá)式鏈接到用戶。可以理解,可為一個或多個表格創(chuàng)建一個或多個安全表達(dá)式,并提供給一個或多個用戶。因而,數(shù)據(jù)能同時滿足多個安全表達(dá)式用來使多個用戶同步訪問數(shù)據(jù)。在未標(biāo)識來源的場合,能利用智能來推斷安全表達(dá)式和/或能應(yīng)用缺省安全表達(dá)式。在530,查詢能用安全表達(dá)式進(jìn)行增強(qiáng)。當(dāng)利用了一個以上表達(dá)式時,相應(yīng)的表達(dá)式能通過邏輯“與”和/或“或”被聚集到邏輯語句中,以提供判定。另外,可創(chuàng)建在其滿足時明白地允許(例如準(zhǔn)許)或禁止(例如拒絕)對數(shù)據(jù)的訪問的這種表達(dá)式。由于滿足禁止數(shù)據(jù)時這種表達(dá)式結(jié)果為“真”,可利用補(bǔ)碼使得滿足該表達(dá)式結(jié)果為“假”。因而,可創(chuàng)建當(dāng)滿足至少一個準(zhǔn)許表達(dá)式并沒有一個拒絕表達(dá)式的值為“真”時返回“真”的聚集表達(dá)式。可以理解,盡管采用了布爾表達(dá)式,根據(jù)本方面的一方面可利用其它技術(shù)。作為示例,通過對被準(zhǔn)許布爾表達(dá)式的邏輯和(其中表達(dá)式分別與對其作出準(zhǔn)許的相關(guān)聯(lián)主要安全取邏輯積),與被拒絕的各個布爾表達(dá)式補(bǔ)碼的邏輯積取邏輯積(其中表達(dá)式分別與對其作出拒絕的主要安全取邏輯積),查詢可得到增強(qiáng)。查詢能得到增強(qiáng),使得在滿足至少一個準(zhǔn)許表達(dá)式并沒有滿足任何拒絕表達(dá)式時數(shù)據(jù)能夠滿足查詢。在標(biāo)記號540,查詢能被最優(yōu)化,其中能在查詢中移動安全表達(dá)式以便最優(yōu)化性能。這種最優(yōu)化通過便于減少存儲器泄漏的謂詞規(guī)則引導(dǎo)。取決于非安全表達(dá)式是否“安全”,這些規(guī)則使非安全表達(dá)式被拖到(或壓到)安全表達(dá)式之上(或之下)。在許多情形中,可在編譯時執(zhí)行靜態(tài)分析以確定表達(dá)式是否是“安全”表達(dá)式,或者表達(dá)式是否能無信息揭示風(fēng)險(xiǎn)地運(yùn)行。在其它實(shí)例中,能可選地或附加地在運(yùn)行時執(zhí)行動態(tài)分析,以確定表達(dá)式是否是“安全”表達(dá)式。對于動態(tài)分析,一般不返回結(jié)果且也不作更改直到已成功運(yùn)行安全謂項(xiàng)和/或未遇到安全侵犯(例如錯誤條件、中斷、事件)。對于靜態(tài)和動態(tài)兩種分析,如果未遇風(fēng)險(xiǎn)安全侵犯,可確定表達(dá)式排列的順序以改進(jìn)性能。然而,如果檢測到了安全侵犯,可放棄查詢或查詢以安全模式運(yùn)行,其中安全表達(dá)式在運(yùn)行非安全表達(dá)式之前求值。一般而言,邏輯操作通常被認(rèn)為是“安全”的。在數(shù)據(jù)庫中查詢時可利用增強(qiáng)查詢。例如,當(dāng)執(zhí)行查詢時可對數(shù)據(jù)庫數(shù)據(jù)求值以便確定數(shù)據(jù)是否滿足安全。如果數(shù)據(jù)滿足安全,數(shù)據(jù)會被提供給請求者使得例如請求者能查看、下載和/或操作數(shù)據(jù)。圖6闡述了用來激活行級別數(shù)據(jù)庫安全以便提供行級別訪問的方法論600。在標(biāo)記號610,行級別安全激活。例如,可利用以下SQL語句來激活表格上的行級別訪問ALTERTABLEOrdersSETROWSECURITY=ON。通常,如果不激活行級別訪問,要么沒有任何一行對用戶而言是可訪問的,要么所有行對用戶而言都是可訪問的。在標(biāo)記號620,通過GRANTSELECT命令向用戶授予權(quán)限。在630,用戶限制通過CREATEEXPRESSION命令關(guān)聯(lián)到用戶。在640,通過GRANT“where”語句,謂項(xiàng)可關(guān)聯(lián)于一個或多個表格上的相關(guān)角色(role)。在650,查詢可用謂項(xiàng)進(jìn)行增強(qiáng)且可采用已增強(qiáng)查詢,其中向用戶提供滿足安全表達(dá)式的數(shù)據(jù)??梢岳斫?,在此所述的多個準(zhǔn)許安全表達(dá)式以及拒絕安全表達(dá)式可在查詢中結(jié)合,并在查詢數(shù)據(jù)期間利用。圖7闡述了用來激活行級別數(shù)據(jù)庫安全以便提供行級別訪問的方法700。在標(biāo)記號710,行級別安全被激活(例如ALTERTABLEOrdersSETROWSECURITY=ON)。在720,可利用SQLDENYEXPRESSION命令來拒絕對用戶的數(shù)據(jù)權(quán)限。在標(biāo)記號730,安全語句(例如布爾表達(dá)式)關(guān)聯(lián)于一個或多個表格上的相關(guān)角色。在740,安全語句被插入查詢中并在查詢時利用。當(dāng)用安全語句求值的數(shù)據(jù)滿足拒絕表達(dá)式時,數(shù)據(jù)對用戶隱藏。一般而言,拒絕安全表達(dá)式會取代準(zhǔn)許安全表達(dá)式使得關(guān)聯(lián)于準(zhǔn)許和拒絕表達(dá)式的數(shù)據(jù)滿足兩種表達(dá)式時用戶不能訪問數(shù)據(jù)。通常,拒絕表達(dá)式的補(bǔ)碼將與準(zhǔn)許表達(dá)式聚集,使得滿足該聚集表達(dá)式提供對數(shù)據(jù)的訪問。圖8闡述了撤銷行級別數(shù)據(jù)庫安全的方法800。在標(biāo)記號810,接收查詢并標(biāo)識查詢初啟程序。在標(biāo)記號820,數(shù)據(jù)管理員查明關(guān)聯(lián)于用戶的安全表達(dá)式,并選擇用戶不再希望與之相關(guān)聯(lián)的安全表達(dá)式。如上所述,準(zhǔn)許和拒絕安全表達(dá)式都可與用戶相關(guān)聯(lián)。在830,可利用REVOKE命令來切斷或中止關(guān)聯(lián)于用戶的限定準(zhǔn)許和/或拒絕安全表達(dá)式。圖9闡述了示例性SQL查詢管理系統(tǒng)900。SQL查詢管理器900包括接收數(shù)據(jù)查詢的輸入組件910、便于用安全表達(dá)式增強(qiáng)該查詢的SQL查詢管理器920、以及向用戶提供結(jié)果的輸出組件930。系統(tǒng)900能利用諸如CREATE、DROP、GRANT、REVOKE和DENY的SQL實(shí)用工具來便于行級別訪問控制,并且在表格上采用SELECT,UPDATE,DELETE,和/或INSERT等動作時是有利的。根據(jù)本發(fā)明的一方面以下提供示例性CREATE、DROP、GRANT、REVOKE和DENY語法與相應(yīng)解釋和示例,以及SELECT,UPDATE,DELETE,和INSERT的示例。CREATE(創(chuàng)建)使用DDLCREATEEXPRESSION,可創(chuàng)建要應(yīng)用于表格中用來激活行級別訪問控制(例如安全)的謂項(xiàng)??擅@種謂項(xiàng)并將其利用語法(例如GDR)用表達(dá)式名應(yīng)用于表格中。語法CREATEEXPRESSION<expression_name>ON<tablename>AS(<expression>)CREATE實(shí)用工具能在表格<tablename>上創(chuàng)建如在<expression>中規(guī)定的表達(dá)式,并向其分配稱為<expression_name>的名字。限制·通常不能包括子查詢?!と绻磉_(dá)式包括對功能的引用和這些功能上的創(chuàng)建者引用權(quán)限,可包括功能調(diào)用?!け磉_(dá)式必須被命名(<expression_name>)?!xpression_name必須是唯一的。權(quán)限在數(shù)據(jù)庫、模式和/或表格級別上有FULLCONTROL權(quán)限的db_ddladmin、db_owner角色、sysadmin角色、表格所有者和用戶可得到權(quán)限,以創(chuàng)建表格上的表達(dá)式。另外,表格上帶有ALTERANYTABLE和/或ALTER的用戶可得到權(quán)限以創(chuàng)建表格上的表達(dá)式。示例CREATEEXPRESSIONMy_FilterONshipTableAS(ship_city=’redmond’andorder_num>35)DROP(放棄)用CREATEEXPRESSION語句創(chuàng)建的謂項(xiàng)可使用DROPEXPRESSION語句放棄。語法DROPEXPRESSION<expression_name>ON<Tablename>限制·被指定的expression_name通常必須已經(jīng)存在?!ぎ?dāng)前用戶通常需要是表達(dá)式在其上被標(biāo)識的db_ddladmin、db_owner和/或sysadmin角色、表格所有者的成員,和/或在表格上有FULLCONTROL和/或ALTER權(quán)限以放棄表達(dá)式?!け磉_(dá)式通常只能在其當(dāng)前不被用來在表格上建立行級別安全時被放棄?!と绻魏蔚南拗票贿`反,可返回錯誤(例如“表達(dá)式不存在或在使用中或你沒有權(quán)限執(zhí)行該語句”)。GRANT(準(zhǔn)許)語法GRANT{ALL[PRIVILEGES]|[BEFORE|AFTER]permission[WHERE(<expression_name>[,...n])[,...n].}{[(column|[,...n])]ON{table|view}ON{table|view}[(column|[,...n])]ON{stored_procedure|extended_procedure}|ON{user_defined_function}}TOsecurity_account[,...n][WITHGRANTOPTION|][AS{group|role}]UPDATE權(quán)限可用BEFORE或AFTER做前綴。只有在指定行級別安全時才能指定BEFORE或AFTER。一般而言,BEFORE隱含地表示謂項(xiàng)應(yīng)用于行的前映像(preimage);安全基于行中的當(dāng)前值。AFTER隱含了安全基于后映像(postimage);值用來更新該行。<expression_name>是用來啟動安全限制的表達(dá)式的名字(例如,通過CREATEEXPRESSION稍早創(chuàng)建)。限制·通常GRANT不得不在表格上。·一般權(quán)限在表格級別上應(yīng)用。·當(dāng)指定行級別限制時通常將允許WITHGRANTOPTION。進(jìn)一步的準(zhǔn)許一般由準(zhǔn)許者在該表達(dá)式上作出?!?amp;lt;expression_name>必須是已經(jīng)通過CREATEEXPRESSION語句指定的有效表達(dá)式名字?!ぐl(fā)出GRANT的用戶需要是表格的所有者,或者在表格上有全控制權(quán)限,或者是db_ddladmin、db_owner和/或sysadmin角色的成員。示例GRANTSELECTWHERE(Myfilter)ONTable1TORedMgrsGRANTBEFOREUPDATEWHERE(Filter2)ONTable2TOpublicREVOKE語法REVOKE[GRANTOPTIONFOR]{ALL[PRIVILEGES]|permission[WHERE(<expression_name>[,...n])[,...n].}{[(column|[,...n])]ON{table|view}|ON{table|view}[(column|[,...n])]|ON{stored_procedure|extended_procedure}|ON{user_defined_function}}{TO|FROM}security_account[,...n][CASCADE][AS{group|role}]可使用REVOKE來撤銷已通過GRANT或DENY應(yīng)用的安全準(zhǔn)許。限制·<expression_name>對于要撤銷的特定權(quán)限,通常必須是表格上用稍早的GRANT或DENY已經(jīng)指定的有效表達(dá)式?!ねǔ?芍付ㄒ蜂N的列名或表達(dá)式?!ASCADE選項(xiàng)通常適用于基于GRANT或DENY的表達(dá)式撤銷。這通常將是在稍早的GRANT或DENY中指定的相同表達(dá)式,而且由已準(zhǔn)許表達(dá)式所指定行的子集不能被撤銷?!槭筊EVOKE成功,用戶一般需要是表格所有者、或者必須在表格上有FULLCONTROL權(quán)限、或者是db_securityadmin、db_owner和/或sysadmin角色的成員。示例REVOKESELECTWHERE(MyFilter)ONTable1TORedMgrsDENY(拒絕)語法DENY{ALL[PRIVILEGES]|[BEFORE|AFTER]permission[WHERE(<expression_name>[,...n])[,...n].}{[(column|[,...n])]ON{table|view}|ON{table|view}[(column|[,...n])]|ON{stored_procedure|extended_procedure}|ON{user_defined_function}}TOsecurity_account[,...n][CASCADE]<expression_name>是用于實(shí)現(xiàn)安全限制的表達(dá)式(稍早通過CREATEEXPRESSION語法創(chuàng)建)名字。限制·DENY一般在表格上。·權(quán)限一般應(yīng)用在表格級別上?!ぴ谥付ㄐ屑墑e限制時一般允許CASCADE選項(xiàng),且它將在第一級別拒絕并在更低級別撤銷已準(zhǔn)許的確切相同表達(dá)式,但不是其任何子集?!?amp;lt;expression_name>通常必須是通過CREATEEXPRESSION語句已經(jīng)指定的有效表達(dá)式?!ぐl(fā)出DENY的用戶一般需要是表格所有者、或者是db_owner、db_securityadmin和/或sysadmin角色的成員。示例DENYSELECTWHERE(MyFilter)ONTable1TOBelvMgrs這些表達(dá)式可包括在sysobjects對象中。另外,相應(yīng)的目錄查看可駐留在sys.objects中。有FULLCONTROL和/或VIEWDEFINITION權(quán)限的表格所有者和用戶能見到應(yīng)用在表格上的表達(dá)式。當(dāng)對照(against)表格發(fā)出查詢時,查詢用已在表格上應(yīng)用的謂項(xiàng)進(jìn)行增強(qiáng)以調(diào)用必須的安全限制。當(dāng)對照表格發(fā)出SELECT時,依靠GRANTSELECT或DENYSELECT語句查詢用已經(jīng)在表格上應(yīng)用的所有謂項(xiàng)進(jìn)行內(nèi)部增強(qiáng)。當(dāng)對照表格發(fā)出UPDATE時,依靠GRANT/DENY、UPDATEForBEFORE和SELECT語句查詢用已經(jīng)在表格上應(yīng)用的所有BEFORE和UPDATE謂項(xiàng)進(jìn)行內(nèi)部增強(qiáng)。對于BEFOREUPDATES,在謂項(xiàng)中指定的限制基于行中的當(dāng)前值而非更新值。AFTER、UPDATE和INSERT限制起象約束一樣的作用;它們作用于更新后的映像。僅可能更新用戶當(dāng)前可訪問進(jìn)行選擇的行。當(dāng)發(fā)出DELETE時,依靠GRANT/DENY和DELETE語句查詢用在表格上應(yīng)用的謂項(xiàng)進(jìn)行增強(qiáng)。用戶只能刪除當(dāng)前選定的行。在應(yīng)用任何其它謂項(xiàng)之前應(yīng)用定義在表格上的安全表達(dá)式;用戶謂項(xiàng)在估算樹上被壓在所有安全謂項(xiàng)之下。如果有多個安全謂項(xiàng),在GRANT中指定的謂項(xiàng)相或,且由DENY指定的相應(yīng)負(fù)謂項(xiàng)相與。另外,表格級別或列級別權(quán)限能在沒有行級別安全情況下進(jìn)行設(shè)定。引入了行級別安全,用戶可訪問那些已準(zhǔn)許明確訪問的行。因而,用戶在特定表格中見到的是行級別和列級別權(quán)限的交集。為了允許行級別安全,表格首先必須被如此標(biāo)記。這可用CREATE/ALTERTABLE語法中的ROW_SECURITY標(biāo)記完成(例如ALTERTABLESETROW_SECURITY=ON)。當(dāng)表格已能夠作行級別安全時,所有者能確定行級別安全是否應(yīng)用于某些單獨(dú)的行中。這可用準(zhǔn)許對一個或多個行訪問的謂項(xiàng)來完成。ExemptRowSecurity權(quán)限也可用來完成相同效果。該特準(zhǔn)許確保當(dāng)準(zhǔn)許者在表格上發(fā)出時沒有一個安全謂項(xiàng)可應(yīng)用于查詢,這可達(dá)到不應(yīng)用行級別安全的效果,因?yàn)樾屑墑e安全僅通過謂項(xiàng)應(yīng)用。ExemptRowSecurity權(quán)限也是有用的,因?yàn)槠湓试S所有者選擇性地確定誰將接收行級別安全??梢岳斫庵^項(xiàng)可在任何時候應(yīng)用于表格中;然而,這些將只對沒有ExemptRowSec權(quán)限的用戶的查詢增強(qiáng)。如上所述,準(zhǔn)許某些用戶有能力在沒有用謂項(xiàng)增強(qiáng)查詢的情況下查詢表格是有用的。另外,無須添加、移除和/或改變某些或所有謂項(xiàng)就可暫時停用行級別安全也是有用的。這可通過準(zhǔn)許ExemptRowSecurity權(quán)限來完成。表格所有者、db_owner和sysadmin角色的成員、以及有CONTROL權(quán)限的用戶缺省地有此權(quán)限。例如,為使用戶1(user1)免除表格T(TableT)上的行級別安全檢查,可利用以下GRANTExemptRowSecONTTO<user1>當(dāng)發(fā)出本語句時,用戶1對表格T的查詢不用任何謂項(xiàng)進(jìn)行增強(qiáng)。該權(quán)限僅在表格級別而非列級別上被準(zhǔn)許。因?yàn)橹^項(xiàng)可包括對依次調(diào)用其它其上也定義有謂項(xiàng)的表格的功能的調(diào)用,俘獲有循環(huán)的情形是重要的。例如,如果表格T有定義其上的基本上是對功能F調(diào)用的謂項(xiàng),其中功能F依次查詢表格T和表格S,謂項(xiàng)可應(yīng)用于表格S而不是表格T(因?yàn)榛蛘邥?dǎo)致死循環(huán)的發(fā)生),且因此俘獲了這種循環(huán)謂項(xiàng)情形,但僅當(dāng)循環(huán)中步驟數(shù)少于n時,其中n是用來為查看俘獲循環(huán)依賴性的相同數(shù)字。在審計(jì)途徑中,特權(quán)用戶可查看增強(qiáng)查詢。以下示出了示例性SQLCREATETABLE和ALTERTABLE實(shí)用工具。CREATETABLE(創(chuàng)建表格)語法CREATETABLE[database_name.[owner].|owner.]table_name({<column_definition>|column_nameAScomputed_column_expression|<table_constraint>∷=[CONSTRAINTconstraint_name]}[{PRIMARYKEY|UNIQUE}[,...n])[ON{filegroup|DEFAULT}][TEXTIMAGE_ON{filegroup|DEFAULT}][WITHROWSECURITY=(ON|OFF)<column_definition>∷={column_namedata_type}[COLLATE<collation_name>][[DEFAULTconstant_expression]|[IDENTITY[(seed,increment)[NOTFORREPLICATION]]]][ROWGUIDCOL][<column_constraint>][...n]<column_constraint>∷=[CONSTRAINTconstraint_name]{[NULL|NOTNULL]|[{PRIMARYKEY|UNIQUE}[CLUSTERED|NONCLUSTERED][WITHFILLFACTOR=fillfactor][ON{filegroup|DEFAULT}]]]|[[FOREIGNKEY]REFERENCESref_table[(ref_column)][ONDELETE{CASCADE|NOACTION}][ONUPDATE{CASCADE|NOACTION}][NOTFORREPLICATION]]|CHECK[NOTFORREPLICATION](logical_expression)}<table_constraint>∷=[CONSTRAINTconstraint_name]{[{PRIMARYKEY|UNIQUE}[CLUSTERED|NONCLUSTERED]{(column[ASC|DESC][,...n])}[WITHFILLFACTOR=fillfactor][ON{filegroup|DEFAULT}]]|FOREIGNKEY[(column[,...n])]REFERENCESref_table[(ref_column[,...n])][ONDELETE{CASCADE|NOACTION}][ONUPDATE{CASCADE|NOACTION}][NOTFORREPLICATION]|CHECK[NOTFORREPLICATION](search_conditions)}ALTERTABLE(更改表格)語法ALTERTABLEtable{[ALTERCOLUMNcolumn_name{new_data_type[(precision[,scale])][COLLATE<collation_name>][NULL|NOTNULL]|{ADD|DROP}ROWGUIDCOL}]|ADD{[<column_definition>]|column_nameAScomputed_column_expression}[,...n]|[WITHCHECK|WITHNOCHECK]ADD{<table_constraint>}[,...n]|DROP{[CONSTRAINT]constraint_name|COLUMNcolumn}[,...n]|{CHECK|NOCHECK}CONSTRAINT{ALL|constraint_name[,...n]}|{ENABLE|DISABLE}TRIGGER{ALL|trigger_name[,...n]}|SETROWSECURITY=(ON|OFF)}<column_degonition>∷={column_namedata_type}[[DEFAULTconstant_expression][WITHVALUES]|[IDENTITY[(seed,increment)[NOTFORREPLICATION]]]][ROWGUIDCOL][<column_constraint>][...n]<columnconstraint>∷=[CONSTRAINTconstraint_name]{[NULL|NOTNULL]|[{PRIMARYKEY|UNIQUE}[CLUSTERED|NONCLUSTERED][WITHFILLFACTOR=fillfactor][ON{filegroup|DEFAULT}]]|[[FOREIGNKEY]REFERENCESref_table[(ref_column)][ONDELETE{CASCADE|NOACTION}][ONUPDATE{CASCADE|NOACTION}][NOTFORREPLICATION]]|CHECK[NOTFORREPLICATION](logical_expression)}<table_constraint>∷=[CONSTRAINTconstraint_name]{[{PRIMARYKEY|UNIQUE}[CLUSTERED|NONCLUSTERED]{(column[,...n])}[WITHFILLFACTOR=fillfactor][ON{filegroup|DEFAULT}]]|FOREIGNKEY[(column[,...n])]REFERENCESref_table[(ref_column[,...n])][ONDELETE{CASCADE|NOACTION}][NOTFORREPLICATION]|DEFAULTconstant_expression[FORcolumn][WITHVALUES]|CHECK[NOTFORREPLICATION](search_conditions)}利用表格1和以下示例來說明本發(fā)明的不同示例性方面。OrderlDEmployeelDOrderDateShipCountryShipAddressShipcityCode123ABC1232002-4-3FranceSomeaddr67854789EFG7892001-8-25SpainSomeaddr43674456XYZ9802002-3-3GermanySomeaddr56373234SGC0072001-6-7FranceSomeaddr67443890RST6782002-4-4SpainSomeaddr43576表格1本示例的目標(biāo)是帶有以下限制準(zhǔn)予對Orders表格的選擇是FranceMgr角色成員的用戶只能查看到該國家的訂單;是SpainMgr角色成員的用戶只能查看到該國家的訂單;是Director角色成員的用戶能查看所有行。表格1的行級別安全通過以下激活A(yù)LTERTABLEOrdersSETROW_SECURITY=ON。對Director、FranceMgr和SpainMgr的準(zhǔn)許分別通過以下準(zhǔn)予GRANTSELECTONOrdersTOdirectors;GRANTSELECTONOrdersTOFranceMgr;以及GRANTSELECTONOrdersTOSpainMgr。限制分別通過以下關(guān)聯(lián)于Director、FranceMgr和SpainMgrCREATEEXPRESSIONSeeAllONOrdersAS1=1;CREATEEXPRESSIONSpainFilterONOrdersAS(Orders.ShipCountry=′Spain′);以及CREATEEXPRESSIONFranceFilterONOrdersAS(Orders.ShipCountry=′France′)。謂項(xiàng)可通過以下關(guān)聯(lián)到Orders表格上的相關(guān)角色GRANTSELECTONOrdersTODirectorsWhereSeeAll;GRANTSELECTWHERE(SpainFilter)ONOrderstoSpainMgrs;以及GRANTSELECTWHERE(FranceFilter)ONOrderstoFanceMgrs。可選地,可利用對Director準(zhǔn)許ExemptRowSec來免除Director角色成員對行級別謂項(xiàng)的任何增強(qiáng),從而當(dāng)Director角色成員查詢表格時,查詢不用任何謂項(xiàng)增強(qiáng)??刹樵冎^項(xiàng),其中以下謂項(xiàng)關(guān)聯(lián)于表格Directors;SpainFilter;andFranceFilter。在查詢時,查詢可用以上謂項(xiàng)增強(qiáng),從而由SELECT*FROMOrders定義的原始查詢被增強(qiáng)為SELECT*FROMOrdersWHERE((IS_MEMBER(‘Directors’)=1AND1=1)OR(IS_MEMBER(‘SpainMgrs’)=1ANDOrders.Shipcountry=‘Spain’)OR(IS_MEMBER(‘FranceMgrs’)=1ANDOrders.Shipcountry=‘France’))(其中((IS_MEMBER(‘Directors’)=1與1=1)或(IS_MEMBER(‘SpainMgrs’)=1與Orders.Shipcountry=‘Spain’)或(IS_MEMBER(‘FranceMgrs’)=1與Orders.Shipcountry=‘France’))。該增強(qiáng)查詢將實(shí)現(xiàn)所需的安全限制。所以現(xiàn)在,如果Director、FranceMgr和SpainMgr角色的采用要執(zhí)行以下查詢,她將獲得在2002年1月1日之后下的運(yùn)送國家分別是任何國家、法國和西班牙的那些訂單。原始查詢SELECT*FROMORDERSWHEREOrderDate>‘1/1/02.增強(qiáng)查詢SELECT*FROMORDERSWHEREOrderDate>‘1/1/02’AND((IS_MEMBER(‘Director’)=1AND1=1)OR(IS_MEMBER(‘SpainMgrs’)=1ANDOrders.Shipcountry=‘Spain’)OR(IS_MEMBER(‘FranceMgrs’)=1ANDOrders.Shipcountry=‘France’))為了提供用來實(shí)現(xiàn)本發(fā)明各方面的附加上下文,圖10-11及以下討論旨在提供本發(fā)明各方面可在其中實(shí)現(xiàn)的適當(dāng)計(jì)算環(huán)境的一般描述。盡管本發(fā)明在運(yùn)行于本地計(jì)算機(jī)和/或遠(yuǎn)程計(jì)算機(jī)上的計(jì)算機(jī)程序的計(jì)算機(jī)可執(zhí)行指令一般上下文上進(jìn)行描述,本領(lǐng)域技術(shù)人員將理解本發(fā)明也可結(jié)合其它程序模塊實(shí)現(xiàn)。通常,程序模塊包括執(zhí)行具體任務(wù)和/或?qū)崿F(xiàn)特定具體數(shù)據(jù)類型的例程、程序、組件、數(shù)據(jù)結(jié)構(gòu)等。此外,本領(lǐng)域技術(shù)人員將理解本發(fā)明方法可用其它計(jì)算機(jī)系統(tǒng)配置實(shí)踐,包括單處理器或多處理器計(jì)算機(jī)系統(tǒng)、迷你計(jì)算機(jī)、大型計(jì)算機(jī)、以及個人計(jì)算機(jī)、手持式計(jì)算裝置、基于微處理器和/或可編程消費(fèi)電器等等,其中每個裝置都可操作地與一個或多個相關(guān)聯(lián)裝置通信。本發(fā)明的諸說明方面也可在分布式計(jì)算環(huán)境中實(shí)踐,其中部分任務(wù)由通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理裝置執(zhí)行。然而,本發(fā)明的一些(如果不是全部)方面可在單機(jī)上實(shí)踐。在分布式計(jì)算環(huán)境中,程序模塊可位于本地/或遠(yuǎn)程存儲器存儲裝置。圖10是本發(fā)明可與之交互的采樣計(jì)算環(huán)境1000的示意方框圖。系統(tǒng)1000包括一臺或多臺客戶機(jī)1010??蛻魴C(jī)1010可以是硬件和/或軟件(例如線程、過程、計(jì)算裝置)。系統(tǒng)1000還可包括一臺或多臺服務(wù)器1030。服務(wù)器1030也可以是硬件和/或軟件(例如線程、過程、計(jì)算裝置)。服務(wù)器1030可采用本發(fā)明覆蓋線程來執(zhí)行變換。在客戶機(jī)1010和服務(wù)器1030間的一可能通信可能是以適于在兩個或多個計(jì)算機(jī)過程間傳送的數(shù)據(jù)包形式進(jìn)行。系統(tǒng)1000包括可用來便于客戶機(jī)1010和服務(wù)器1030間通信的通信框架1050??蛻魴C(jī)1010可與用來存儲客戶機(jī)1010本地信息的一個或多個客戶數(shù)據(jù)存儲1060作可操作連接。類似地,服務(wù)器1030可與用來存儲服務(wù)器1030本地信息的一個或多個客戶數(shù)據(jù)存儲1040作可操作連接。參照圖11,實(shí)現(xiàn)本發(fā)明各方面的示例性環(huán)境1100具有計(jì)算機(jī)1112。計(jì)算機(jī)1112具有處理單元1114、系統(tǒng)存儲器1116、及系統(tǒng)總線1118。系統(tǒng)總線1118耦合系統(tǒng)組件包括,但不限于將系統(tǒng)存儲器1116耦合到處理多元1114。處理單元1114可以是各種可用處理器的任一種。雙微處理器和其它多處理器架構(gòu)也可被用作處理單元1114。系統(tǒng)總線1118可以是若干類總線結(jié)構(gòu)的任一種,包括存儲器總線或存儲器控制器、外圍總線或外部總線、和/或使用各種可用總線架構(gòu)任一種的本地總線,這些總線架構(gòu)包括,但不限于,工業(yè)標(biāo)準(zhǔn)架構(gòu)(ISA)、微信道架構(gòu)(MSA)、擴(kuò)展ISA(EISA)、智能磁盤設(shè)備(IDE)、VESA局部總線(VLB)、外圍部件互連(PCI)、卡總線、通用串行總線(USB)、加速圖形接口(AGP)、個人計(jì)算機(jī)存儲卡國際協(xié)會總線(PCMCIA)、火線(IEEE1394)、和小型計(jì)算機(jī)系統(tǒng)接口(SCSI)。系統(tǒng)存儲器1116具有易失存儲器1120和非易失存儲器1122。包含在計(jì)算機(jī)1112硬件間傳送如起動時信息的基本例程的基本輸入/輸出系統(tǒng)(BIOS),存儲在非易失存儲器1122上。作為說明且無限制,非易失存儲器1122可包括只讀存儲器(ROM)、可編程ROM(PROM)、電可編程ROM(EPROM)、電可擦除ROM(EEPROM)或閃存。易失存儲器1120具有作為外部高速緩存的隨機(jī)存取存儲器(RAM)。作為說明且無限制,RAM有多種形式可用,如同步RAM(SRAM)、動態(tài)RAM(DRAM)、同步DRAM(SRAM)、雙數(shù)率SDRAM(DDRSDRAM)、增強(qiáng)DSRAM(ESDRAM)、同步鏈接DRAM(SLDRAM)、和直接RambusRAM(DRRAM)。計(jì)算機(jī)1112還具有可移動/不可移動、易失/非易失計(jì)算機(jī)存儲介質(zhì)。圖11示出了例如磁盤存儲器1124。磁盤存儲器包括,但不限于,象磁盤、軟盤、磁帶、Jaz盤、Zip盤、LS-100盤、閃存卡、或存儲棒。另外,磁盤存儲器1124可具有單獨(dú)存儲介質(zhì)或結(jié)合其它存儲介質(zhì)包括,但不限于,諸如光盤ROM設(shè)備(CD-ROM)、可記錄光盤驅(qū)動器(CD-R盤)、可重寫光盤驅(qū)動器(CD-RW盤)、或數(shù)字化視頻ROM盤(DVD-ROM)的光盤。為便于磁盤存儲器1124與系統(tǒng)總線1118的連接,通常可使用諸如接口1126的可移動或不可移動接口。應(yīng)當(dāng)理解,圖11描述了作為用戶和在適當(dāng)操作環(huán)境1100中描述的基本計(jì)算機(jī)資源間中間體的軟件。這種軟件具有操作系統(tǒng)1128??纱鎯υ诖疟P存儲器1124中的操作系統(tǒng)1128,其作用是控制和分配計(jì)算機(jī)系統(tǒng)1112的資源。系統(tǒng)應(yīng)用1130得益于操作系統(tǒng)1128通過存儲在或系統(tǒng)存儲器1116或磁盤存儲器1124中的程序模塊1132和程序數(shù)據(jù)1134對資源的管理??梢岳斫獗景l(fā)明可用各種操作系統(tǒng)或操作系統(tǒng)組合來實(shí)現(xiàn)。用戶通過輸入設(shè)備1136將命令或信息輸入到計(jì)算機(jī)1112中。輸入設(shè)備1136包括,但不限于,諸如鼠標(biāo)、跟蹤球、鐵筆、觸板、鍵盤、麥克風(fēng)、操縱桿、游戲墊、衛(wèi)星接收器、掃描儀、電視調(diào)諧器卡、數(shù)字相機(jī)、數(shù)字錄像照相機(jī)、網(wǎng)絡(luò)相機(jī)等定點(diǎn)設(shè)備。這些和其它輸入設(shè)備經(jīng)系統(tǒng)總線1118通過接口端口1138與處理單元1114相連。接口端口1138包括例如串行端口、并行端口、游戲端口、和通用串行總線(USB)。輸出設(shè)備1140使用象輸入設(shè)備1136的某些相同類型端口。因此,例如USB端口可用來為計(jì)算機(jī)1112提供輸入,并將信息從計(jì)算機(jī)1112輸出到輸出設(shè)備1140。輸出適配器1142被提供用來說明某些輸出設(shè)備象監(jiān)視器、揚(yáng)聲器、和打印機(jī),與其它輸出設(shè)備1140之間,需要特殊適配器。輸出適配器1142包括,作為說明且無限制,視頻卡和聲卡在輸出設(shè)備1140和相同總線1118間提供了連接方法。應(yīng)該注意的是諸如遠(yuǎn)程計(jì)算機(jī)1144的其它設(shè)備和/或設(shè)備系統(tǒng)提供輸入和輸出功能。計(jì)算機(jī)1112使用與一臺或多臺遠(yuǎn)程計(jì)算機(jī)如遠(yuǎn)程計(jì)算機(jī)1144的邏輯連接在網(wǎng)絡(luò)化環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)1144可以是個人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、工作站、基于微處理器設(shè)備、同等設(shè)備或其它相同網(wǎng)絡(luò)節(jié)點(diǎn)等等,而且通常包括所述與計(jì)算機(jī)1112相關(guān)的許多或全部元件。為簡化起見,僅存儲器存儲裝置1146與遠(yuǎn)程計(jì)算機(jī)1144一起圖示。遠(yuǎn)程計(jì)算機(jī)1144經(jīng)網(wǎng)絡(luò)接口1148與計(jì)算機(jī)1112邏輯連接,然后通過網(wǎng)絡(luò)連接1150進(jìn)行物理連接。網(wǎng)絡(luò)接口1148包括諸如局域網(wǎng)(LAN)和廣域網(wǎng)(WAN)的有線和/或無線通信網(wǎng)絡(luò)。LAN技術(shù)包括光纖分布式數(shù)據(jù)接口(FDDI)、銅線分布式數(shù)據(jù)接口(CDDI)、以太網(wǎng)、令牌環(huán)等等。WAN技術(shù)包括,但不限于,點(diǎn)對點(diǎn)鏈接、象綜合服務(wù)數(shù)字網(wǎng)(ISDN)及其后變種的電路切換網(wǎng)絡(luò)、報(bào)文分組交換網(wǎng)絡(luò)、和數(shù)字用戶線路(DSL)。通信連接1150指向被用來將網(wǎng)絡(luò)接口1148連接到總線1118的硬件/軟件。盡管為了清晰地說明,通信連接1150被示為位于計(jì)算機(jī)1112內(nèi),但它也可在計(jì)算機(jī)1112之外。與網(wǎng)絡(luò)接口1148連接所必需的硬件/軟件具有,僅作為示例,諸如包括常用電話級調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器和DSL調(diào)制解調(diào)器的調(diào)制解調(diào)器、ISDN適配器、和以太網(wǎng)卡等內(nèi)部和外部技術(shù)。以上所述包括本發(fā)明的諸多示例。當(dāng)然,為描述本發(fā)明而對每一能想到的組件或方法論組合進(jìn)行描述是不可能的,但本領(lǐng)域普通技術(shù)人員明白本發(fā)明的更多排列和組合是可能的。因此,本發(fā)明意欲包含所有這樣的在所附權(quán)利要求書精神和范圍內(nèi)的變更、修改、和變化。特別是關(guān)于以上所述組件、設(shè)備、電路、系統(tǒng)等等執(zhí)行的各種功能,除非另有注明,用于描述這些組件的術(shù)語(包括對“裝置(means)”的指代)意在對應(yīng)執(zhí)行所述組件(如功能等效體)特定功能的任何組件,盡管它在結(jié)構(gòu)上并非等同于在本發(fā)明在此所述示例性方面中執(zhí)行所述功能的揭示結(jié)構(gòu)。在這點(diǎn)上,也可明白本發(fā)明包括系統(tǒng)和具有計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì),用來執(zhí)行本發(fā)明各種方法的動作和/或事件。另外,盡管僅相對于若干實(shí)現(xiàn)之一已經(jīng)對本發(fā)明的具體特征作出了揭示,當(dāng)對任何給定或具體應(yīng)用有利或需要時,這種特征可與其它實(shí)現(xiàn)的一個或多個其它特征組合。此外,就用于具體實(shí)施方式或權(quán)利要求書的術(shù)語“具有”、和“含有”及其變型而言,這些術(shù)語意在以類似于術(shù)語“包括”的方式作包含意義解。權(quán)利要求1.一種推動數(shù)據(jù)庫安全的系統(tǒng),其特征在于,包括一輸入組件,其接收查詢;以及一查詢組件,其利用謂項(xiàng)規(guī)則至少以行級別安全表達(dá)式來增強(qiáng)所述查詢,所述增強(qiáng)查詢被用來搜索數(shù)據(jù)并返回至少滿足所述行級別安全表達(dá)式聚集的數(shù)據(jù)行。2.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述查詢通過插入一表達(dá)式來增強(qiáng),所述表達(dá)式由以下項(xiàng)的邏輯積組成布爾表達(dá)式的邏輯和,當(dāng)其滿足時準(zhǔn)許行訪問;相應(yīng)布爾表達(dá)式的補(bǔ)碼的邏輯積,當(dāng)其滿足時拒絕行訪問。3.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述行級別安全表達(dá)式被特殊標(biāo)記以便區(qū)分安全表達(dá)式和非安全表達(dá)式。4.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述謂項(xiàng)規(guī)則通過定義一個安全表達(dá)式和非安全表達(dá)式插入查詢的順序來減輕信息泄漏,所述順序確定在數(shù)據(jù)行估值期間所利用的各個表達(dá)式順序。5.如權(quán)利要求1所述的系統(tǒng),其特征在于,還包括一優(yōu)化器,其把非安全表達(dá)式拖到安全表達(dá)式之上或者把非安全表達(dá)式壓到安全表達(dá)式之下,以便改善性能并減輕信息泄漏。6.如權(quán)利要求1所述的系統(tǒng),其特征在于,還包括一組件,其在編譯時執(zhí)行一靜態(tài)分析以確定所述查詢中的非安全表達(dá)式是否安全。7.如權(quán)利要求6所述的系統(tǒng),其特征在于,安全表達(dá)式是在其執(zhí)行時不會有因安全突破而披露信息的表達(dá)式。8.如權(quán)利要求1所述的系統(tǒng),其特征在于,還包括一組件,其在運(yùn)行時執(zhí)行動態(tài)分析以確定所述查詢中的非安全表達(dá)式是否安全。9.如權(quán)利要求8所述的系統(tǒng),其特征在于,如果所有的安全表達(dá)式成功執(zhí)行,所述動態(tài)分析返回?cái)?shù)據(jù)。10.如權(quán)利要求1所述的系統(tǒng),其特征在于,還包括一組件,其檢測安全侵犯并放棄所述查詢或以“安全”模式重新起動所述查詢。11.如權(quán)利要求10所述的系統(tǒng),其特征在于,所述安全模式確保在采用非安全表達(dá)式對數(shù)據(jù)行求值之前先采用安全表達(dá)式來求值。12.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述安全表達(dá)式是布爾表達(dá)式。13.如權(quán)利要求1所述的系統(tǒng),其特征在于,一個或多個安全表達(dá)式由所述數(shù)據(jù)管理員通過SQL語句為一數(shù)據(jù)行創(chuàng)建。14.如權(quán)利要求1所述的系統(tǒng),其特征在于,一組數(shù)據(jù)行的一個或多個安全表達(dá)式由所述數(shù)據(jù)管理員關(guān)聯(lián)到一個或多個查詢初啟程序。15.一種用來采用行級別數(shù)據(jù)庫安全的方法,其特征在于,包括基于所述查詢的來源,為所述查詢獲取一個或多個行級別安全表達(dá)式;以及把所述一個或多個行級別安全表達(dá)式插入所述查詢中,從而所述安全表達(dá)式在執(zhí)行所述不安全的非安全表達(dá)式之前被用來對數(shù)據(jù)行求值。16.如權(quán)利要求15所述的方法,其特征在于,還包括嫁接一表達(dá)式,該表達(dá)式由在其滿足時即準(zhǔn)許行訪問的布爾表達(dá)式的邏輯和與在其滿足時即拒絕行訪問的相應(yīng)布爾表達(dá)式的補(bǔ)碼的邏輯積的邏輯積所組成,并將所述嫁接后表達(dá)式插入所述查詢中。17.如權(quán)利要求15所述的方法,其特征在于,還包括采用SQL語句來創(chuàng)建、關(guān)聯(lián)和/或撤銷安全表達(dá)式。18.如權(quán)利要求15所述的方法,其特征在于,還包括采用SQL語句向用戶授予或拒絕對數(shù)據(jù)行的權(quán)限。19.如權(quán)利要求15所述的方法,其特征在于,還包括在所述查詢不包括不安全非安全表達(dá)式時,把所述一個或多個行級別安全表達(dá)式插入所述查詢中以優(yōu)化性能。20.如權(quán)利要求15所述的方法,其特征在于,還包括利用移動謂項(xiàng)規(guī)則來推動所述安全表達(dá)式在所述查詢中的排序。21.如權(quán)利要求20所述的方法,其特征在于,所述謂項(xiàng)規(guī)則確定是否把非安全表達(dá)式拖到或壓到安全表達(dá)式之上或之下,以改進(jìn)性能并減輕數(shù)據(jù)泄漏。22.如權(quán)利要求15所述的方法,其特征在于,還包括執(zhí)行一靜態(tài)分析,以確定是否非安全表達(dá)式是不安全的。23.如權(quán)利要求15所述的方法,其特征在于,還包括執(zhí)行一動態(tài)分析,以確定是否非安全表達(dá)式是不安全的。24.如權(quán)利要求15所述的方法,其特征在于,還包括把邏輯非安全表達(dá)式定義為安全表達(dá)式。25.如權(quán)利要求15所述的方法,其特征在于,還包括當(dāng)檢測到安全侵犯時以安全模式重新起動查詢,安全模式確保安全表達(dá)式被先于非安全表達(dá)式用來對行數(shù)據(jù)求值。26.一種數(shù)據(jù)包,其在兩個或多個計(jì)算機(jī)組件間傳送,推動行級別數(shù)據(jù)庫安全,其特征在于,包括帶有一個或多個SQL創(chuàng)建的基于謂項(xiàng)規(guī)則并定位于其中的安全表達(dá)式的一查詢,所述謂項(xiàng)規(guī)則被用來對數(shù)據(jù)行求值以便在滿足所述安全表達(dá)式時提供對所述數(shù)據(jù)行的訪問。27.一種存儲計(jì)算機(jī)可執(zhí)行組件以推動行級別數(shù)據(jù)庫安全的計(jì)算機(jī)可讀介質(zhì),其特征在于,包括把用戶的安全表達(dá)式嫁接到語句中的組件;把所述語句加入由用戶發(fā)起的查詢的組件;優(yōu)化所述語句在所述查詢中的放置的組件;以及基于所述語句查詢數(shù)據(jù)行、并返回滿足所述語句的數(shù)據(jù)行的組件。28.一種數(shù)據(jù)庫安全系統(tǒng),其特征在于,包括用于以行級別安全表達(dá)式增強(qiáng)查詢的裝置;用于在所述查詢中安置所述行級別安全表達(dá)式以改進(jìn)性能或減輕數(shù)據(jù)泄漏的裝置;用于以所述行級別安全表達(dá)式估算數(shù)據(jù)行的裝置;以及用于向用戶提供對滿足所述行級別安全表達(dá)式的數(shù)據(jù)行的訪問的裝置。全文摘要通過利用SQL擴(kuò)展來創(chuàng)建指定安全表達(dá)式并使其與查詢初啟程序相關(guān)聯(lián),本發(fā)明的系統(tǒng)和方法推動數(shù)據(jù)庫行級別安全。這種表達(dá)式包括布爾表達(dá)式,其必須被數(shù)據(jù)行滿足以便該數(shù)據(jù)能被查詢初啟程序訪問。一般而言,查詢用在查詢數(shù)據(jù)行期間聚集并利用的安全表達(dá)式進(jìn)行增強(qiáng)。諸系統(tǒng)和方法不同地在查詢中置入安全表達(dá)式,以便最優(yōu)化查詢性能同時減輕信息泄漏。這通過對安全表達(dá)式作特殊標(biāo)記并取決于由靜態(tài)和/或動態(tài)分析確定的非安全表達(dá)式是安全的可能性,利用謂項(xiàng)規(guī)則把非安全表達(dá)式拖到或壓到安全表達(dá)式之上或之下來完成。文檔編號G06F17/30GK1655145SQ20051000593公開日2005年8月17日申請日期2005年1月20日優(yōu)先權(quán)日2004年2月11日發(fā)明者A·C·科米尤,G·錢德,J·R·漢米爾頓,L·B·克里斯托福,P·N·克萊恩,T·杜塔申請人:微軟公司