国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      智能使用用戶數(shù)據(jù)以搶先阻止違反訪問控制的查詢的執(zhí)行的制作方法

      文檔序號(hào):6417639閱讀:192來(lái)源:國(guó)知局
      專利名稱:智能使用用戶數(shù)據(jù)以搶先阻止違反訪問控制的查詢的執(zhí)行的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明一般涉及數(shù)據(jù)處理,特別涉及與在物理上表示數(shù)據(jù)的特定方式無(wú)關(guān)地訪問數(shù)據(jù)。
      背景技術(shù)
      數(shù)據(jù)庫(kù)是計(jì)算機(jī)化的信息存儲(chǔ)和檢索系統(tǒng)。關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)是使用關(guān)系技術(shù)來(lái)存儲(chǔ)和檢索數(shù)據(jù)的計(jì)算機(jī)數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)。最普及的數(shù)據(jù)庫(kù)類型是關(guān)系數(shù)據(jù)庫(kù),即數(shù)據(jù)被定義成可以以多種不同方式對(duì)其進(jìn)行重新組織和訪問的表式數(shù)據(jù)庫(kù)。
      與特定架構(gòu)無(wú)關(guān),在DBMS中,請(qǐng)求實(shí)體(例如,應(yīng)用程序或操作系統(tǒng))通過發(fā)出數(shù)據(jù)庫(kù)訪問請(qǐng)求來(lái)要求對(duì)指定數(shù)據(jù)庫(kù)的訪問。這樣的請(qǐng)求例如可包括簡(jiǎn)單的目錄查詢請(qǐng)求或事務(wù),以及用來(lái)在數(shù)據(jù)庫(kù)中讀取、改變和添加指定記錄的事務(wù)的組合。這些請(qǐng)求使用高級(jí)查詢語(yǔ)言如結(jié)構(gòu)化查詢語(yǔ)言(SQL)來(lái)創(chuàng)建。示例性地,SQL用來(lái)創(chuàng)建用于從數(shù)據(jù)庫(kù)如國(guó)際商業(yè)機(jī)器公司(IBM)的DB2、Microsoft的SQL Server以及來(lái)自O(shè)racle、Sybase和Computer Associates的數(shù)據(jù)庫(kù)產(chǎn)品獲得信息和更新數(shù)據(jù)庫(kù)的交互式查詢。術(shù)語(yǔ)“查詢”是指一組用于從所存儲(chǔ)的數(shù)據(jù)庫(kù)檢索數(shù)據(jù)的命令。查詢采取讓編程人員和程序選擇、插入、更新、找出數(shù)據(jù)位置等等的命令語(yǔ)言的形式。
      數(shù)據(jù)庫(kù)上下文中的一個(gè)重要問題是安全性。數(shù)據(jù)庫(kù)經(jīng)常包含需要一定程度的安全性以保護(hù)其不被訪問的保密或敏感材料。例如,醫(yī)療記錄被認(rèn)為是高度私人化和保密的。因而,對(duì)醫(yī)療記錄的訪問典型地限于選定用戶。為此,傳統(tǒng)的數(shù)據(jù)庫(kù)管理系統(tǒng)可實(shí)現(xiàn)指定授權(quán)級(jí)別的用戶簡(jiǎn)檔(profile)。用戶是否可以訪問某特定數(shù)據(jù)將取決于在其各自的簡(jiǎn)檔中指定的用戶授權(quán)級(jí)別。
      然而,前述方法是很不靈活的和靜態(tài)的。另一方面,數(shù)據(jù)是高度動(dòng)態(tài)的(即隨著時(shí)間的過去而發(fā)生變化)。結(jié)果,相對(duì)于用戶試圖訪問的數(shù)據(jù),施加在傳統(tǒng)數(shù)據(jù)庫(kù)的用戶上的安全性可能合適或可能不適合。例如,考慮用戶試圖訪問HIV測(cè)試結(jié)果??赡芷谕氖?,只要用戶自己的醫(yī)療記錄反映用戶已做過HIV測(cè)試,就阻止用戶訪問HIV測(cè)試結(jié)果,而不管其值(即,陽(yáng)性或陰性)。如果在首次嘗試訪問期間,用戶的醫(yī)療記錄沒有反映HIV測(cè)試,則允許用戶查詢HIV測(cè)試結(jié)果的醫(yī)療記錄。如果同一用戶隨后作了HIV測(cè)試,然后這反映在用戶的醫(yī)療記錄中,則將禁止隨后的訪問HIV測(cè)試結(jié)果的嘗試??蛇x地,可能期望的是,只有用戶自己的醫(yī)療記錄反映陽(yáng)性HIV測(cè)試結(jié)果,才阻止用戶訪問HIV測(cè)試結(jié)果。在任一情況下,傳統(tǒng)的數(shù)據(jù)庫(kù)管理系統(tǒng)不允許這種級(jí)別的靈活性。
      因此,需要改進(jìn)的數(shù)據(jù)庫(kù)安全性機(jī)制。

      發(fā)明內(nèi)容
      本發(fā)明一般涉及一種用于數(shù)據(jù)庫(kù)安全性的方法、系統(tǒng)和產(chǎn)品。
      在一個(gè)實(shí)施例中,提供了一種提供關(guān)于數(shù)據(jù)的安全性的方法。該方法包括接收用戶對(duì)數(shù)據(jù)庫(kù)發(fā)出的查詢,其中以至少一個(gè)字段和該至少一個(gè)字段的關(guān)聯(lián)值配置該查詢;并且基于該至少一個(gè)字段的特定于用戶的數(shù)據(jù)的存在性,確定是否必須調(diào)用針對(duì)該至少一個(gè)字段為用戶指定的安全性規(guī)則。
      另一種提供關(guān)于數(shù)據(jù)的安全性的方法包括生成至少一個(gè)安全性列表,該安全性列表反映針對(duì)給定用戶存在數(shù)據(jù)的多個(gè)字段的每一個(gè),其中該多個(gè)字段的每一個(gè)具有為給定用戶定義的安全性規(guī)則;接收給定用戶對(duì)數(shù)據(jù)庫(kù)發(fā)出的查詢,其中以至少一個(gè)字段和該至少一個(gè)字段的關(guān)聯(lián)值配置該查詢;訪問該至少一個(gè)安全性列表,以確定該查詢的該至少一個(gè)字段是否反映在該至少一個(gè)安全性列表中;并且如果該查詢的該至少一個(gè)字段反映在該至少一個(gè)安全性列表中,則施行安全性規(guī)則。
      在另一個(gè)實(shí)施例中,一種對(duì)具有特定物理數(shù)據(jù)表示的數(shù)據(jù)提供安全性的方法包括提供查詢規(guī)定,其包括多個(gè)用于定義抽象查詢的邏輯字段;提供將該多個(gè)邏輯字段映射到數(shù)據(jù)的物理實(shí)體的映射規(guī)則;為該多個(gè)邏輯字段提供用戶特定的安全性規(guī)則;接收用戶對(duì)數(shù)據(jù)發(fā)出的抽象查詢,其中該抽象查詢根據(jù)查詢規(guī)定來(lái)定義,并且以至少一個(gè)邏輯字段和該至少一個(gè)邏輯字段的關(guān)聯(lián)值配置;基于該至少一個(gè)邏輯字段的特定于用戶的數(shù)據(jù)的存在性,確定是否必須調(diào)用針對(duì)該至少一個(gè)邏輯字段為用戶指定的安全性規(guī)則。
      另一個(gè)實(shí)施例提供了一種包含當(dāng)被執(zhí)行時(shí)執(zhí)行安全性驗(yàn)證操作的安全性驗(yàn)證指令的計(jì)算機(jī)可讀介質(zhì),該安全性驗(yàn)證操作包括接收用戶對(duì)數(shù)據(jù)庫(kù)發(fā)出的查詢,其中以至少一個(gè)字段和該至少一個(gè)字段的關(guān)聯(lián)值配置該查詢;并且基于該至少一個(gè)字段的特定于用戶的數(shù)據(jù)的存在性,確定是否必須調(diào)用針對(duì)該至少一個(gè)字段為用戶指定的安全性規(guī)則。
      另一個(gè)實(shí)施例提供了一種包含當(dāng)被執(zhí)行時(shí)執(zhí)行安全性驗(yàn)證操作的安全性驗(yàn)證指令的計(jì)算機(jī)可讀介質(zhì)。該安全性驗(yàn)證操作包括生成至少一個(gè)安全性列表,該安全性列表反映針對(duì)給定用戶存在數(shù)據(jù)的多個(gè)字段的每一個(gè),其中該多個(gè)字段的每一個(gè)具有為給定用戶定義的安全性規(guī)則;接收給定用戶對(duì)數(shù)據(jù)庫(kù)發(fā)出的查詢,其中以至少一個(gè)字段和該至少一個(gè)字段的關(guān)聯(lián)值配置該查詢;訪問該至少一個(gè)安全性列表,以確定該查詢的該至少一個(gè)字段是否反映在該至少一個(gè)安全性列表中;并且如果該查詢的該至少一個(gè)字段反映在該至少一個(gè)安全性列表中,則施行安全性規(guī)則。
      另一個(gè)實(shí)施例提供了一種計(jì)算機(jī)可讀介質(zhì),其包括存儲(chǔ)在其上的信息,該信息包括查詢規(guī)定,其包括多個(gè)用于定義抽象查詢的邏輯字段;多個(gè)映射規(guī)則,其將該多個(gè)邏輯字段映射到數(shù)據(jù)的物理實(shí)體;該多個(gè)邏輯字段的多個(gè)用戶特定安全性規(guī)則;運(yùn)行時(shí)組件,其可執(zhí)行以響應(yīng)于接收用戶對(duì)數(shù)據(jù)發(fā)出的抽象查詢而執(zhí)行安全性驗(yàn)證操作,其中該抽象查詢根據(jù)查詢規(guī)定來(lái)定義,并且以至少一個(gè)邏輯字段和該至少一個(gè)邏輯字段的關(guān)聯(lián)值配置。該安全性驗(yàn)證操作包括,基于該至少一個(gè)邏輯字段的特定于用戶的數(shù)據(jù)的存在性,確定是否必須調(diào)用針對(duì)該至少一個(gè)邏輯字段為用戶指定的安全性規(guī)則。


      通過參考在附圖中示出的本發(fā)明實(shí)施例對(duì)上面簡(jiǎn)要概述的本發(fā)明進(jìn)行更具體的描述,可以詳細(xì)地理解實(shí)現(xiàn)本發(fā)明上述特性的方式。
      然而,要注意的是,附圖僅示出本發(fā)明的典型實(shí)施例,因此其不被認(rèn)為是限制其范圍,相反,本發(fā)明可以包括其它等效的實(shí)施例。
      圖1是計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例;圖2A是本發(fā)明一個(gè)實(shí)施例的軟件組件的邏輯/物理視圖;圖2B是抽象查詢和抽象數(shù)據(jù)存儲(chǔ)庫(kù)(repository)的邏輯視圖;圖3是示出應(yīng)用程序的啟動(dòng)和操作的流程圖;圖4是示出用戶登錄驗(yàn)證序列的流程圖;
      圖5是示出運(yùn)行時(shí)組件的操作的流程圖;以及圖6是示出運(yùn)行時(shí)組件的操作的流程圖。
      具體實(shí)施例方式
      介紹本發(fā)明一般涉及一種用于限制對(duì)數(shù)據(jù)的訪問的系統(tǒng)、方法和產(chǎn)品。一般而言,根據(jù)查詢中正被請(qǐng)求的數(shù)據(jù)與發(fā)出查詢的用戶之間的關(guān)聯(lián)來(lái)限制數(shù)據(jù)訪問。
      在一個(gè)實(shí)施例中,安全性規(guī)則被實(shí)現(xiàn)為數(shù)據(jù)邏輯模型的一部分。邏輯模型被實(shí)現(xiàn)為數(shù)據(jù)存儲(chǔ)庫(kù)抽象層,其提供底層數(shù)據(jù)存儲(chǔ)庫(kù)的邏輯視圖。以這種方式,與在物理上表示數(shù)據(jù)的特定方式無(wú)關(guān)地創(chuàng)建數(shù)據(jù)。還提供查詢抽象層,并且該查詢抽象層基于數(shù)據(jù)存儲(chǔ)庫(kù)抽象層。運(yùn)行時(shí)組件執(zhí)行抽象查詢到可針對(duì)特定物理數(shù)據(jù)表示而使用的形式的翻譯。
      本發(fā)明的一個(gè)實(shí)施例被實(shí)現(xiàn)為與計(jì)算機(jī)系統(tǒng)例如圖1所示和下面所述的計(jì)算機(jī)系統(tǒng)一起使用的程序產(chǎn)品。該程序產(chǎn)品的程序定義這些實(shí)施例的功能(包括這里所述的方法),并且可以包含在各種信號(hào)承載介質(zhì)上。示例性信號(hào)承載介質(zhì)包括但不限于(i)永久性地存儲(chǔ)在不可寫入存儲(chǔ)介質(zhì)(例如,計(jì)算機(jī)內(nèi)的只讀存儲(chǔ)器裝置,如可由CD-ROM驅(qū)動(dòng)器讀取的CD-ROM盤)上的信息;(ii)存儲(chǔ)在可寫入存儲(chǔ)介質(zhì)(例如,磁盤驅(qū)動(dòng)器內(nèi)的軟盤或者硬盤驅(qū)動(dòng)器)上的可變更信息;或者(iii)通過通信介質(zhì)例如通過計(jì)算機(jī)或電話網(wǎng)絡(luò)包括無(wú)線通信傳達(dá)給計(jì)算機(jī)的信息。后面的實(shí)施例特定地包括從因特網(wǎng)或其它網(wǎng)絡(luò)下載的信息。當(dāng)承載引導(dǎo)本發(fā)明的功能的計(jì)算機(jī)可讀指令時(shí),這些信號(hào)承載介質(zhì)表示本發(fā)明的實(shí)施例。
      一般而言,被執(zhí)行以實(shí)現(xiàn)本發(fā)明實(shí)施例的例程可以是操作系統(tǒng)或特定應(yīng)用程序、組件、程序、模塊、對(duì)象或指令序列的一部分。本發(fā)明的軟件典型地包括大量指令,它們將被本地計(jì)算機(jī)翻譯成可機(jī)讀格式以及由此的可執(zhí)行指令。另外,程序包括本地駐留于程序或者在存儲(chǔ)器或存儲(chǔ)裝置中找到的變量和數(shù)據(jù)結(jié)構(gòu)。另外,以下描述的各種程序可以根據(jù)在本發(fā)明的特定實(shí)施例中實(shí)現(xiàn)它們的應(yīng)用程序來(lái)標(biāo)識(shí)。然而,應(yīng)當(dāng)理解,下面任何特定的術(shù)語(yǔ)僅是為了方便起見而使用的,因此本發(fā)明不應(yīng)當(dāng)局限于僅在由這樣的術(shù)語(yǔ)標(biāo)識(shí)和/或暗示的任何特定應(yīng)用程序中使用。
      環(huán)境的物理視1示出可實(shí)現(xiàn)本發(fā)明實(shí)施例的連網(wǎng)系統(tǒng)100的方框圖。一般而言,連網(wǎng)系統(tǒng)100包括客戶端(例如用戶)計(jì)算機(jī)102(示出了三個(gè)這樣的客戶端計(jì)算機(jī)102)和至少一個(gè)服務(wù)器104(一個(gè)這樣的服務(wù)器104)??蛻舳擞?jì)算機(jī)102和服務(wù)器計(jì)算機(jī)104通過網(wǎng)絡(luò)126連接。一般而言,網(wǎng)絡(luò)126可以是局域網(wǎng)(LAN)和/或廣域網(wǎng)(WAN)。在特定實(shí)施例中,網(wǎng)絡(luò)126是因特網(wǎng)。
      客戶端計(jì)算機(jī)102包括通過總線130連接到存儲(chǔ)器112、存儲(chǔ)裝置114、輸入裝置116、輸出裝置119和網(wǎng)絡(luò)接口裝置118的中央處理單元(CPU)110。輸入裝置116可以是向客戶端計(jì)算機(jī)102提供輸入的任何裝置。例如,可以使用鍵盤、小鍵盤、光筆、觸摸屏、跟蹤球或語(yǔ)音識(shí)別單元、音頻/視頻播放器等等。輸出裝置119可以是向用戶提供輸出的任何裝置,例如任何傳統(tǒng)顯示屏。雖然與輸入裝置116分開示出,但是可以組合輸出裝置119和輸入裝置116。例如,可以使用具有集成觸摸屏的顯示屏、具有集成鍵盤的顯示器或者與文本語(yǔ)音轉(zhuǎn)換器組合的語(yǔ)音識(shí)別單元。
      網(wǎng)絡(luò)接口裝置118可以是被配置成允許通過網(wǎng)絡(luò)126在客戶端計(jì)算機(jī)102和服務(wù)器計(jì)算機(jī)104之間進(jìn)行網(wǎng)絡(luò)通信的任何出/入裝置。例如,網(wǎng)絡(luò)接口裝置118可以是網(wǎng)絡(luò)適配器或其它網(wǎng)絡(luò)接口卡(NIC)。
      存儲(chǔ)裝置114最好是直接訪問存儲(chǔ)裝置(DASD)。雖然它被示出為單個(gè)單元,但是它可以是固定和/或移動(dòng)存儲(chǔ)裝置如固定盤驅(qū)動(dòng)器、軟盤驅(qū)動(dòng)器、磁帶驅(qū)動(dòng)器、移動(dòng)存儲(chǔ)卡或光學(xué)存儲(chǔ)裝置的組合。存儲(chǔ)器112和存儲(chǔ)裝置114可以是跨越多個(gè)初級(jí)和次級(jí)存儲(chǔ)裝置的一個(gè)虛擬地址空間的一部分。
      存儲(chǔ)器112優(yōu)選地是大得足以保存本發(fā)明的必要程序和數(shù)據(jù)結(jié)構(gòu)的隨機(jī)存取存儲(chǔ)器。雖然存儲(chǔ)器112被示出為單個(gè)實(shí)體,但是應(yīng)當(dāng)理解,存儲(chǔ)器112實(shí)際上可包括多個(gè)模塊,并且存儲(chǔ)器112可存在于從高速寄存器和高速緩沖存儲(chǔ)器到較低速但較大的DRAM芯片的多個(gè)級(jí)別。
      示例性地,存儲(chǔ)器112包含操作系統(tǒng)124。可優(yōu)選使用的示例性操作系統(tǒng)包括Linux和Microsoft(微軟)的Windows。更一般地,可使用任何支持這里公開的功能的操作系統(tǒng)。
      存儲(chǔ)器112還被示出為包含瀏覽器程序122,當(dāng)在CPU 110上執(zhí)行時(shí)提供對(duì)在各個(gè)服務(wù)器104之間導(dǎo)航并且定位一個(gè)或多個(gè)服務(wù)器104上的網(wǎng)絡(luò)地址的支持。在一個(gè)實(shí)施例中,瀏覽器程序122包括基于萬(wàn)維網(wǎng)的圖形用戶界面(GUI),其允許用戶顯示超文本標(biāo)記語(yǔ)言(HTML)信息。然而,更一般地,瀏覽器程序122可以是能夠呈現(xiàn)從服務(wù)器計(jì)算機(jī)104傳輸?shù)男畔⒌娜魏纬绦?優(yōu)先地基于GUI)。
      服務(wù)器計(jì)算機(jī)104在物理上可以以類似于客戶端計(jì)算機(jī)102的方式布置。從而,服務(wù)器計(jì)算機(jī)104被一般性地示出為包括通過總線136相互耦接的CPU130、存儲(chǔ)器132、以及存儲(chǔ)裝置134。存儲(chǔ)器132可以是大得足以保存位于服務(wù)器計(jì)算機(jī)104上的必要程序和數(shù)據(jù)結(jié)構(gòu)的隨機(jī)存取存儲(chǔ)器。
      服務(wù)器計(jì)算機(jī)104一般處于駐留在存儲(chǔ)器132中的所示操作系統(tǒng)138的控制之下。操作系統(tǒng)138的例子包括IBM OS/400、UNIX、MicrosoftWindows等等。更一般地,可使用任何支持這里所述的功能的操作系統(tǒng)。
      存儲(chǔ)器132還包括一個(gè)或多個(gè)應(yīng)用程序140和抽象查詢接口146。應(yīng)用程序140和抽象查詢接口146是這樣的軟件產(chǎn)品,其包括在不同的時(shí)候駐留在計(jì)算機(jī)系統(tǒng)100中的不同存儲(chǔ)器和存儲(chǔ)裝置中的多條指令。當(dāng)由服務(wù)器104中的一個(gè)或多個(gè)處理器130讀取和執(zhí)行時(shí),應(yīng)用程序140和抽象查詢接口146使計(jì)算機(jī)系統(tǒng)100執(zhí)行對(duì)于執(zhí)行實(shí)施本發(fā)明的各方面的步驟或元素所需的步驟。應(yīng)用程序140(并且更一般地,任何請(qǐng)求實(shí)體,包括操作系統(tǒng)138,以及處于最高層的用戶)對(duì)數(shù)據(jù)庫(kù)(例如,數(shù)據(jù)庫(kù)1561…156N,統(tǒng)稱作數(shù)據(jù)庫(kù)156)發(fā)出查詢。示例性地,數(shù)據(jù)庫(kù)156被示出為存儲(chǔ)裝置134中的數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)的一部分。數(shù)據(jù)庫(kù)156代表任何數(shù)據(jù)集合而與特定物理表示無(wú)關(guān)。作為示例,數(shù)據(jù)庫(kù)156可根據(jù)關(guān)系大綱(schema)(可通過SQL查詢來(lái)訪問)或者根據(jù)XML大綱(可通過XML查詢來(lái)訪問)來(lái)組織。然而,本發(fā)明不限于特定大綱,并且考慮向目前未知的大綱的擴(kuò)展。這里所用的術(shù)語(yǔ)“大綱”一般性地是指數(shù)據(jù)的特定安排。
      在一個(gè)實(shí)施例中,由應(yīng)用程序140發(fā)出的查詢根據(jù)與每個(gè)應(yīng)用程序140一起包括的應(yīng)用程序查詢規(guī)定142來(lái)定義。由應(yīng)用程序140發(fā)出的查詢可以是預(yù)定義的(即被硬編碼為應(yīng)用程序140的一部分)或者可以響應(yīng)輸入(例如,用戶輸入)而生成。在任何情況下,查詢(這里稱作“抽象查詢”)使用由抽象查詢接口146定義的邏輯字段來(lái)組合/執(zhí)行。具體地說,在抽象查詢中使用的邏輯字段由抽象查詢接口146的數(shù)據(jù)存儲(chǔ)庫(kù)抽象組件148定義。抽象查詢由運(yùn)行時(shí)組件150執(zhí)行,其中運(yùn)行時(shí)組件150首先將抽象查詢變換成與包含在DBMS 154中的數(shù)據(jù)的物理表示一致的形式。
      在一個(gè)實(shí)施例中,數(shù)據(jù)存儲(chǔ)庫(kù)抽象組件148以安全性信息162配置。安全性信息162一般包括定義用戶對(duì)選定數(shù)據(jù)的訪問權(quán)限的安全性規(guī)則。運(yùn)行時(shí)組件150用來(lái)根據(jù)發(fā)出查詢的特定用戶和要通過查詢的執(zhí)行而訪問/返回的特定數(shù)據(jù)來(lái)施行安全性信息162。一般而言,安全性規(guī)則可以針對(duì)特定用戶、用戶組或所有用戶來(lái)定義。用戶是否與一個(gè)或多個(gè)其它用戶具有關(guān)聯(lián)定義在簡(jiǎn)檔158中。從而,對(duì)于試圖訪問數(shù)據(jù)庫(kù)156的每個(gè)用戶,可存在簡(jiǎn)檔158。
      在一個(gè)實(shí)施例中,通過圖形用戶界面(GUI)由用戶指定查詢的各元素。GUI的內(nèi)容由應(yīng)用程序140生成。在特定實(shí)施例中,GUI內(nèi)容是超文本標(biāo)記語(yǔ)言(HTML)內(nèi)容,其可以通過瀏覽器程序122在客戶端計(jì)算機(jī)系統(tǒng)102上呈現(xiàn)。從而,存儲(chǔ)器132包括超文本傳輸協(xié)議(http)服務(wù)器進(jìn)程152(例如,萬(wàn)維網(wǎng)服務(wù)器),其被配置成服務(wù)來(lái)自客戶端計(jì)算機(jī)102的請(qǐng)求。例如,服務(wù)器進(jìn)程152可響應(yīng)訪問示例性地駐留在服務(wù)器104上的數(shù)據(jù)庫(kù)156的請(qǐng)求。對(duì)數(shù)據(jù)庫(kù)156中的數(shù)據(jù)的進(jìn)入客戶端請(qǐng)求調(diào)用應(yīng)用程序140。當(dāng)由處理器130執(zhí)行時(shí),應(yīng)用程序140使服務(wù)器計(jì)算機(jī)104執(zhí)行實(shí)施本發(fā)明的各方面的步驟或元素,包括訪問數(shù)據(jù)庫(kù)156。在一個(gè)實(shí)施例中,應(yīng)用程序140包括多個(gè)小服務(wù)程序,其被配置成構(gòu)建然后由瀏覽器程序122程序呈現(xiàn)的GUI元素。
      圖1只是連網(wǎng)的客戶端計(jì)算機(jī)102和服務(wù)器計(jì)算機(jī)104的一種硬件/軟件配置。本發(fā)明的實(shí)施例可應(yīng)用于任何同等的硬件配置,而與計(jì)算機(jī)系統(tǒng)是否是復(fù)雜的多用戶計(jì)算設(shè)備、單用戶工作站或者沒有其自己的非易失性存儲(chǔ)裝置的網(wǎng)絡(luò)設(shè)備無(wú)關(guān)。此外,應(yīng)當(dāng)理解,雖然引用了特定標(biāo)記語(yǔ)言,包括HTML,但是本發(fā)明不限于特定語(yǔ)言、標(biāo)準(zhǔn)或版本。從而,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)認(rèn)識(shí)到,本發(fā)明可適用于其它標(biāo)記語(yǔ)言以及非標(biāo)記語(yǔ)言,并且本發(fā)明也適用于特定標(biāo)記語(yǔ)言的將來(lái)改變以及目前未知的其它語(yǔ)言。同樣地,圖1所示的http服務(wù)器進(jìn)程152僅是示例性的,并且可以考慮被配置成支持任何已知和未知協(xié)議的其它實(shí)施例。
      環(huán)境的邏輯/運(yùn)行時(shí)間視2A-2B示出本發(fā)明的各組件的示例性關(guān)系視圖200。請(qǐng)求實(shí)體(例如,應(yīng)用程序140之一)發(fā)出由請(qǐng)求實(shí)體的各自應(yīng)用程序查詢規(guī)定142定義的查詢202。所得到的查詢202在此一般性地稱作“抽象查詢”,因?yàn)樵摬樵兏鶕?jù)抽象(即邏輯)字段而非采用對(duì)DBMS 154中的底層物理數(shù)據(jù)實(shí)體的直接引用來(lái)組合。結(jié)果,可以定義與所使用的特定底層數(shù)據(jù)表示無(wú)關(guān)的抽象查詢。在一個(gè)實(shí)施例中,應(yīng)用程序查詢規(guī)定142可包括用于數(shù)據(jù)選擇的標(biāo)準(zhǔn)(選擇標(biāo)準(zhǔn)204)和根據(jù)選擇標(biāo)準(zhǔn)204要返回的字段的顯式規(guī)定(返回?cái)?shù)據(jù)規(guī)定206)。
      下面表1示出與圖2B所示的抽象查詢202對(duì)應(yīng)的示例性抽象查詢。作為示例,抽象查詢202采用XML來(lái)定義。然而,也可以有利地使用任何其它語(yǔ)言。
      表1-查詢例子001&lt;?xml version=″1.0″?&gt;
      002&lt;!--查詢字符串表示(FirstName=″Mary″AND LastName=003″McGoon″) OR State=″NC″--&gt;
      004&lt;QueryAbstraction&gt;
      005 &lt;Selection&gt;
      006 &lt;Condition internalID=″4″&gt;
      007 &lt;Condition field=″FirstName″operator=″EQ″value=″Mary″008 internalID=″1″/&gt;
      009 &lt;Condition field=″LastName″operator=″EQ″value=″McGoon″010 internalID=″3″relOperator=″AND″&gt;&lt;/Conditon&gt;
      011 &lt;/Conditon&gt;
      012 &lt;Condition field=″State″operator=″EQ″value=″NC″internalID=″2″013 relOperator=″OR″&gt;&lt;/Conditon&gt;
      014 &lt;/Selection&gt;
      015 &lt;Results&gt;
      016 &lt;Field name=″FirstName″/&gt;
      017 &lt;Field name=″LastName″/&gt;
      018 &lt;Field name=″State″/&gt;
      019 &lt;/Results&gt;
      020&lt;/QueryAbstraction&gt;
      示例性地,表1所示的抽象查詢包括選擇規(guī)定(第005-014行)和結(jié)果規(guī)定(第015-019行),其中選擇規(guī)定包含選擇標(biāo)準(zhǔn)。在一個(gè)實(shí)施例中,選擇標(biāo)準(zhǔn)包括字段名稱(用于邏輯字段)、比較操作符(=、>、<等)以及值表達(dá)式(即被比較的字段)。在一個(gè)實(shí)施例中,結(jié)果規(guī)定是要作為查詢執(zhí)行的結(jié)果而返回的抽象字段列表。抽象查詢中的結(jié)果規(guī)定可包括字段名稱和排序標(biāo)準(zhǔn)。
      由應(yīng)用程序查詢規(guī)定142規(guī)定且用來(lái)組合抽象查詢202的邏輯字段由數(shù)據(jù)存儲(chǔ)庫(kù)抽象組件148定義。一般而言,數(shù)據(jù)存儲(chǔ)庫(kù)抽象組件148暴露(expose)作為邏輯字段集的信息,其中該邏輯字段集可在由應(yīng)用程序140(其可以響應(yīng)用戶輸入查詢條件)發(fā)出的查詢(例如,抽象查詢202)內(nèi)使用,以指定數(shù)據(jù)選擇標(biāo)準(zhǔn)和指定從查詢操作返回的結(jié)果數(shù)據(jù)的形式。邏輯字段獨(dú)立于在DBMS154中使用的底層數(shù)據(jù)表示來(lái)定義,從而允許形成與底層數(shù)據(jù)表示松散耦合的查詢。
      一般而言,數(shù)據(jù)存儲(chǔ)庫(kù)抽象組件148包括多個(gè)字段規(guī)定2081、2082、...(作為示例而示出兩個(gè)),其統(tǒng)稱為字段規(guī)定208。具體地說,為可用于組合抽象查詢的每個(gè)邏輯字段提供字段規(guī)定。在一個(gè)實(shí)施例中,字段規(guī)定208包括邏輯字段名稱2101、2102(統(tǒng)稱為字段名稱210)和關(guān)聯(lián)的訪問方法2121、2122(統(tǒng)稱為訪問方法212)。在示例性實(shí)施例中,字段規(guī)定208也包括一個(gè)或多個(gè)范疇(category)名稱2161、2162(統(tǒng)稱為范疇名稱216)。范疇名稱關(guān)聯(lián)一組邏輯字段名稱。例如,在圖2B中,字段規(guī)定2081和2082指定demographic(人口統(tǒng)計(jì))范疇2161和person(人)范疇2162。然而,范疇的使用僅代表特定實(shí)施例,并且其它實(shí)施例不采用范疇。
      訪問方法212將邏輯字段名稱關(guān)聯(lián)(映射)到數(shù)據(jù)庫(kù)(例如,數(shù)據(jù)庫(kù)156之一)中的特定物理數(shù)據(jù)表示2141、2142...214N。作為示例,圖2A示出兩個(gè)數(shù)據(jù)表示,即XML數(shù)據(jù)表示2141和關(guān)系數(shù)據(jù)表示2142。然而,也可以考慮表示已知或未知的任何其它數(shù)據(jù)表示的物理數(shù)據(jù)表示214N。
      在一個(gè)實(shí)施例中,單個(gè)數(shù)據(jù)存儲(chǔ)庫(kù)抽象組件148包含兩個(gè)或更多個(gè)物理數(shù)據(jù)表示214的字段規(guī)定(以及關(guān)聯(lián)的訪問方法)。在可選實(shí)施例中,為每個(gè)單獨(dú)的物理數(shù)據(jù)表示214提供不同的單個(gè)數(shù)據(jù)存儲(chǔ)庫(kù)抽象組件148。在另一個(gè)實(shí)施例中,提供多個(gè)數(shù)據(jù)存儲(chǔ)庫(kù)抽象組件148,其中每個(gè)數(shù)據(jù)存儲(chǔ)庫(kù)抽象組件148暴露相同底層物理數(shù)據(jù)(其可包括一個(gè)或多個(gè)物理數(shù)據(jù)表示214)的不同部分。以這種方式,單個(gè)應(yīng)用程序140可以由多個(gè)用戶同時(shí)使用,以訪問相同的底層數(shù)據(jù),其中由各自的數(shù)據(jù)存儲(chǔ)庫(kù)抽象組件148確定向應(yīng)用程序暴露的底層數(shù)據(jù)的特定部分。
      根據(jù)所要支持的不同類型的邏輯字段的數(shù)目,可以考慮任意數(shù)目的訪問方法。在一個(gè)實(shí)施例中,提供對(duì)簡(jiǎn)單字段、過濾字段和組合字段的訪問方法。字段規(guī)定2081和2082分別是簡(jiǎn)單字段訪問方法2121和2122的例子。簡(jiǎn)單字段被直接映射到底層物理數(shù)據(jù)表示中的特定實(shí)體(例如,映射到給定數(shù)據(jù)庫(kù)表和列的字段)。作為示例,圖2B所示的簡(jiǎn)單字段訪問方法2121將邏輯字段名稱2101(“FirstName(名)”)映射到名稱為“contact(接觸)”的表中名稱為“f_name”的列。過濾字段(圖2中未示出例子)標(biāo)識(shí)關(guān)聯(lián)的物理實(shí)體,并且提供用來(lái)定義特定數(shù)據(jù)表示內(nèi)的特定項(xiàng)目子集的規(guī)則。過濾字段的例子是映射到郵政編碼的物理表示、并且將該數(shù)據(jù)僅限于為紐約州定義的那些郵政編碼的New YorkZIP code(紐約州郵政編碼)字段。組合訪問方法(圖2中未示出例子)使用作為訪問方法定義的一部分而提供的表達(dá)式,從一個(gè)或多個(gè)物理字段計(jì)算邏輯字段。以這種方式,可以計(jì)算在底層數(shù)據(jù)表示中不存在的信息。一個(gè)例子是通過將銷售價(jià)格字段乘以銷售稅率而組合的銷售稅字段。
      可以考慮,底層數(shù)據(jù)的任何給定數(shù)據(jù)類型(例如,日期、十進(jìn)制數(shù)字等)的格式可以變化。從而,在一個(gè)實(shí)施例中,字段規(guī)定208包括類型屬性,其反映底層數(shù)據(jù)的格式。然而,在另一個(gè)實(shí)施例中,字段規(guī)定208的數(shù)據(jù)格式不同于關(guān)聯(lián)的底層物理數(shù)據(jù),在這種情況下,訪問方法負(fù)責(zé)以由請(qǐng)求實(shí)體采取的適當(dāng)格式返回?cái)?shù)據(jù)。因此,訪問方法必須知道采取數(shù)據(jù)的什么格式(即,根據(jù)邏輯字段)以及底層物理數(shù)據(jù)的實(shí)際格式。然后,訪問方法可以將底層物理數(shù)據(jù)轉(zhuǎn)換成邏輯字段的格式。
      作為例子,圖2所示的數(shù)據(jù)存儲(chǔ)庫(kù)抽象組件148的字段規(guī)定208表示被映射到在關(guān)系數(shù)據(jù)表示2142中表示的數(shù)據(jù)的邏輯字段。然而,數(shù)據(jù)存儲(chǔ)庫(kù)抽象組件148的其它實(shí)例將邏輯字段映射到其它物理數(shù)據(jù)表示,如XML。
      在一個(gè)實(shí)施例中,以上面參照?qǐng)D1簡(jiǎn)要描述的安全性信息162配置字段規(guī)定208中的一個(gè)或多個(gè)。在所示實(shí)施例中,范疇定義和字段定義具有關(guān)聯(lián)的安全性信息162。然而,應(yīng)當(dāng)理解,不是所有范疇定義和所有字段定義都一定需要包括安全性信息。由于范疇定義兩個(gè)或更多個(gè)邏輯字段之間的關(guān)聯(lián),因此屬于相同范疇的邏輯字段繼承相同的范疇安全性信息。例如,字段規(guī)定2081和2082各自屬于Demographic范疇2161和Person范疇2162,從而繼承各自的安全性信息1621和1622。
      安全性信息162的另外方面可以參照表II來(lái)描述,其中表II示出與圖2B所示的數(shù)據(jù)存儲(chǔ)庫(kù)抽象組件148對(duì)應(yīng)的示例性數(shù)據(jù)存儲(chǔ)庫(kù)抽象組件。作為示例,數(shù)據(jù)存儲(chǔ)庫(kù)抽象148使用XML來(lái)定義。然而,可以有利地使用任何其它語(yǔ)言。
      表II-數(shù)據(jù)存儲(chǔ)庫(kù)抽象例子001&lt;?xml version=″1.0″?&gt;
      002&lt;DataAbstraction version=″1.0″003xmlnsxsi=″http//www.w3.org/2001/XMLSchema-instance″004xsinoNamespaceSchemaLocation=″DataAbstraction.xsd″&gt;
      005006&lt;Category name=″Person″&gt;
      007008 &lt;Security type=″value″&gt;
      009 &lt;SecurityRule&gt;
      010 &lt;User&gt;All&lt;/User&gt;
      011 &lt;Action&gt;NoRunAndLog&lt;/Action&gt;
      012 &lt;/SecurityRule&gt;
      013 &lt;/Security&gt;
      014015 &lt;Field name=″First Name″&gt;
      016 &lt;AccessMethod&gt;
      017 &lt;Simple attrName=″FNAME″e(cuò)ntityName=″PERSONINFO″/&gt;
      018 &lt;/AccessMethod&gt;
      019 &lt;Type baseType=″char″&gt;&lt;/Type&gt;
      020 &lt;/Field&gt;
      021022 &lt;Field name=″Last Name″&gt;
      023 &lt;AccessMethod&gt;
      024 &lt;Simple attrName=″LNAME″e(cuò)ntityName=″PERSONINFO″/&gt;
      025 &lt;/AccessMethod&gt;
      026 &lt;Type baseType=″char″&gt;&lt;/Type&gt;
      027 &lt;Security type=″value″&gt;
      028 &lt;SecurityRule&gt;
      029 &lt;User&gt;All&lt;/User&gt;
      030 &lt;Action&gt;RunAndLog&lt;/Action&gt;
      031 &lt;/SecurityRule&gt;
      032 &lt;SecurityRule&gt;
      033 &lt;User&gt;securityOfficers&lt;/User&gt;
      034 &lt;Action&gt;RunAndLog&lt;/Action&gt;
      035 &lt;/SecurityRule&gt;
      036 &lt;SecurityRule&gt;
      037 &lt;User&gt;Mary_McGoon&lt;/User&gt;
      038 &lt;Action&gt;NoAction&lt;/Action&gt;
      039 &lt;/SecurityRule&gt;
      040 &lt;/Security&gt;
      041 &lt;/Field&gt;
      042&lt;/Category&gt;
      043044&lt;Category name=″Test″&gt;&gt;
      045 &lt;Field name=″HIV Test″&gt;
      046&lt;AccessMethod&gt;
      047 &lt;Simple attrName=″RESULTS″e(cuò)ntityName=″TESTS″/&gt;
      048&lt;/AccessMethod&gt;
      049&lt;Type baseType=″char″&gt;&lt;/Type&gt;
      050 &lt;Security type=″access″&gt;
      051&lt;SecurityRule&gt;
      052 &lt;User&gt;All&lt;/User&gt;
      053 &lt;Action&gt;RunAndLog&lt;/Action&gt;
      054&lt;/SecurityRule&gt;
      055&lt;SecurityRule&gt;
      056 &lt;User&gt;securityOfficers&lt;/User&gt;
      057 &lt;Action&gt;RunAndLog&lt;/Action&gt;
      058&lt;/SecurityRule&gt;
      059&lt;SecurityRule&gt;
      060 &lt;User&gt;Mary_McGoon&lt;/User&gt;
      061 &lt;Action&gt;LogAndDoNotRun&lt;/Action&gt;
      062&lt;/SecurityRule&gt;
      063 &lt;/Security&gt;
      064 &lt;/Field&gt;
      065&lt;/Category&gt;
      066&lt;/DataRepository&gt;
      從表II可以看出,與每個(gè)范疇定義和字段定義相關(guān)聯(lián)的安全性信息一般包括安全性類型和安全性規(guī)則。安全性規(guī)則指定向其應(yīng)用規(guī)則的一個(gè)或多個(gè)用戶和當(dāng)調(diào)用規(guī)則時(shí)要采取的特定操作。示例性操作包括阻止執(zhí)行查詢和記錄嘗試,執(zhí)行查詢并且記錄執(zhí)行,或者不采取任何操作。當(dāng)然,可以考慮其它操作。
      在一個(gè)實(shí)施例中,安全性類型可以是“值”類型、“訪問”類型或兩者。在本例中,“Last Name(姓)”字段定義示出值類型安全性,并且“HIV Test(HIV測(cè)試)”字段定義示出訪問類型安全性。如這里所定義的,值類型安全性規(guī)則根據(jù)用戶指定信息和特定字段值(字段值的例子包括Mary、McGoon、1111Easy Street)來(lái)限制訪問。相比之下,訪問類型安全性規(guī)則根據(jù)用戶和字段類型來(lái)限制任何訪問,而與字段值無(wú)關(guān)(字段類型的例子包括first name(名)、lastname(姓)、address(地址))。為示例說明起見,考慮“l(fā)ast name”字段。假定期望阻止用戶訪問其自己的姓,而非任何其它姓。在這種情況下,如表II的示例性數(shù)據(jù)存儲(chǔ)庫(kù)抽象中所做的那樣(見第028-031行),為所有用戶的“l(fā)astname”字段實(shí)現(xiàn)值類型安全性規(guī)則。通過以這種方式添加安全性信息,使運(yùn)行時(shí)(run-time)組件150(在運(yùn)行時(shí))知道當(dāng)用戶試圖訪問“l(fā)ast name”字段時(shí)必須實(shí)現(xiàn)預(yù)定義的安全性算法151(圖1)。下面更詳細(xì)地描述運(yùn)行時(shí)組件的各方面。
      作為另一個(gè)示例,考慮“HIV Test”字段的情況。假定包含在該字段中的信息具有廣泛的敏感性,則可能期望阻止特定用戶完全地訪問該字段。例如,可能期望阻止本身是HIV陽(yáng)性的用戶訪問“HIV Test”字段。在這種情況下,安全性信息包括訪問類型安全性限制。(見第045-064行)。在運(yùn)行時(shí),運(yùn)行時(shí)組件150的安全性算法151(根據(jù)用戶是否為HIV陽(yáng)性)確定試圖訪問“HIV Test”字段的用戶是否被限制做此操作,或者更一般地,是否必須采取某安全性操作。從而,對(duì)于訪問類型限制,正被請(qǐng)求的“HIV Test”字段中的特定值是無(wú)關(guān)的。
      如表II(第022-041行)中的邏輯“l(fā)ast name”字段所示,給定字段/范疇定義的安全性信息可包括多于一條安全性規(guī)則。具體地說,可以針對(duì)不同類別的用戶提供不同的安全性規(guī)則。邏輯“l(fā)ast name”字段的定義示出針對(duì)所有用戶的第一安全性規(guī)則,針對(duì)用戶組的第二安全性規(guī)則、以及針對(duì)單個(gè)用戶的第三安全性規(guī)則。在一個(gè)實(shí)施例中,使用最佳適配(best-fit)算法(其可以是應(yīng)用程序140(圖1)的一部分)來(lái)確定對(duì)特定用戶類別施加什么限制。例如,如果用戶Mary_McGoon試圖訪問“l(fā)ast name”字段,則使用用戶簡(jiǎn)檔Mary_McGoon的規(guī)則。由于找到更精確的規(guī)則規(guī)定(即,特定于用戶Mary_McGoon的安全性規(guī)則),因此忽略“all(所有)”用戶和“security officer(安全官員)”的規(guī)則。
      然而,在一個(gè)實(shí)施例中,可以覆蓋由最佳適配算法確定的規(guī)則。從表II可以看出,數(shù)據(jù)存儲(chǔ)庫(kù)抽象組件148可具有分級(jí)樹結(jié)構(gòu)。在表II的示例性數(shù)據(jù)存儲(chǔ)庫(kù)抽象中,所表示的最高節(jié)點(diǎn)是demographic(人口統(tǒng)計(jì))范疇。次高節(jié)點(diǎn)是person(人)范疇,其具有first name字段和last name字段作為子(節(jié)點(diǎn))。從而,在一個(gè)實(shí)施例中,最嚴(yán)格的規(guī)則是與樹中的最高節(jié)點(diǎn)相關(guān)聯(lián)的規(guī)則。在本例中,最嚴(yán)格的規(guī)則是與demographic范疇的安全性信息相關(guān)聯(lián)的規(guī)則。因此,特定于用戶Mary_McGoon的安全性規(guī)則可以被demographic范疇的規(guī)則覆蓋。
      現(xiàn)在參照?qǐng)D3,示出了說明應(yīng)用程序140的初始程序裝載和操作的方法300。當(dāng)(例如,由管理員)啟動(dòng)應(yīng)用程序140時(shí),進(jìn)入該方法。在步驟302,裝載/檢索數(shù)據(jù)存儲(chǔ)庫(kù)抽象組件。在多個(gè)數(shù)據(jù)存儲(chǔ)庫(kù)抽象組件可用的一個(gè)實(shí)施例中,由應(yīng)用程序140指定要檢索的數(shù)據(jù)存儲(chǔ)庫(kù)抽象組件。在步驟304,針對(duì)數(shù)據(jù)存儲(chǔ)庫(kù)抽象組件的每個(gè)樹結(jié)構(gòu),進(jìn)入循環(huán)。在步驟306,識(shí)別樹結(jié)構(gòu)中的最嚴(yán)格規(guī)則。這通過從最低節(jié)點(diǎn)到最高節(jié)點(diǎn)向上“巡視(walking)”樹、并且識(shí)別具有關(guān)聯(lián)安全性規(guī)則的最高節(jié)點(diǎn)來(lái)完成。一旦識(shí)別出最嚴(yán)格的規(guī)則,則應(yīng)用程序140(在步驟308)確定規(guī)則是否為訪問類型。如果是,則在步驟310將與規(guī)則相關(guān)聯(lián)的字段置于用戶特定訪問類型安全性列表312中。然后,方法300返回到步驟304,以開始處理數(shù)據(jù)存儲(chǔ)庫(kù)抽象組件中的下一個(gè)樹結(jié)構(gòu)。
      如果步驟308被否定回答,則處理進(jìn)入步驟314,其中方法300確定規(guī)則是否為值類型規(guī)則。如果是,則在步驟316將與規(guī)則相關(guān)聯(lián)的字段置于用戶特定值類型安全性列表318中。然后,方法300返回到步驟304,以開始處理數(shù)據(jù)存儲(chǔ)庫(kù)抽象組件中的下一個(gè)樹結(jié)構(gòu)。
      如果步驟314被否定回答,則處理進(jìn)入步驟320,其中將與規(guī)則相關(guān)聯(lián)的字段置于適當(dāng)?shù)陌踩粤斜碇?。步驟320表示將方法300擴(kuò)展到其它類型的安全性規(guī)則。然后,方法300返回到步驟304,以開始處理數(shù)據(jù)存儲(chǔ)庫(kù)抽象組件中的下一個(gè)樹結(jié)構(gòu)。
      方法300繼續(xù)直到數(shù)據(jù)存儲(chǔ)庫(kù)抽象組件中的每個(gè)樹結(jié)構(gòu)都被處理為止。然后,應(yīng)用程序140準(zhǔn)備開始接受請(qǐng)求。
      圖4示出由應(yīng)用程序140的登錄驗(yàn)證算法160執(zhí)行的登錄驗(yàn)證方法400的一個(gè)實(shí)施例。每當(dāng)用戶登錄以便使用應(yīng)用程序140時(shí),執(zhí)行登錄驗(yàn)證方法400。在步驟402,登錄驗(yàn)證算法160檢索正在登錄的用戶的訪問類型安全性列表312。在步驟404,驗(yàn)證方法400針對(duì)安全性列表312的每個(gè)字段啟動(dòng)循環(huán)。在步驟406,驗(yàn)證算法160檢查用戶數(shù)據(jù)(即數(shù)據(jù)庫(kù)156內(nèi)的物理數(shù)據(jù)中)的對(duì)應(yīng)字段(即與正被處理的安全性列表字段對(duì)應(yīng)的字段)中的條目。如果未找到對(duì)應(yīng)的條目(步驟408),則從安全性列表312刪除正被處理的字段。這樣,在運(yùn)行時(shí)將不會(huì)為了安全性的目的而考慮被刪除的字段。如果找到對(duì)應(yīng)字段(步驟408),則不需要采取特定的操作,并且處理返回到步驟404,以開始處理安全性列表312的下一個(gè)字段。一旦安全性列表312的每個(gè)字段均被處理,則登錄驗(yàn)證方法400進(jìn)入步驟412。
      在步驟412,檢索正在登錄的用戶的值類型安全性列表318。在步驟414,進(jìn)入針對(duì)安全性列表的每個(gè)字段而執(zhí)行的循環(huán)。在步驟416,驗(yàn)證算法160檢查用戶數(shù)據(jù)(即數(shù)據(jù)庫(kù)156的物理數(shù)據(jù)中)的對(duì)應(yīng)字段(即與正被處理的安全性列表字段對(duì)應(yīng)的字段)中的條目。如果未找到對(duì)應(yīng)的條目(步驟418),則從安全性列表318刪除正被處理的字段。否則(即,如果在步驟418找到對(duì)應(yīng)字段),則與值類型安全性列表318一起(或者在某其它安全性數(shù)據(jù)結(jié)構(gòu)中)存儲(chǔ)對(duì)應(yīng)用戶特定條目的值。在任一情況下,處理返回到步驟414。當(dāng)安全性列表318的每個(gè)字段均被處理時(shí),登錄驗(yàn)證算法160退出,并且用戶現(xiàn)在可以開始發(fā)出查詢。
      圖5示出舉例說明運(yùn)行時(shí)組件150的操作的一個(gè)實(shí)施例的示例性運(yùn)行時(shí)方法500。具體地說,運(yùn)行時(shí)方法500的各方面可由安全性算法151(圖1)實(shí)現(xiàn)。當(dāng)運(yùn)行時(shí)組件150接收抽象查詢的實(shí)例(如圖2所示的抽象查詢202)作為輸入時(shí),在步驟502進(jìn)入方法500。在步驟504,運(yùn)行時(shí)組件150讀取和解析抽象查詢的實(shí)例,并且定位各個(gè)選擇標(biāo)準(zhǔn)和期望的結(jié)果字段。在步驟506,運(yùn)行時(shí)組件150進(jìn)入用于處理存在于抽象查詢中的每個(gè)查詢選擇標(biāo)準(zhǔn)語(yǔ)句的循環(huán),從而構(gòu)建具體查詢的數(shù)據(jù)選擇部分。在一個(gè)實(shí)施例中,選擇標(biāo)準(zhǔn)包括字段名稱(用于邏輯字段)、比較操作符(=、>、<等)以及值表達(dá)式(即被比較的字段)。在步驟508,運(yùn)行時(shí)組件150使用來(lái)自抽象查詢的選擇標(biāo)準(zhǔn)的字段名稱,以在數(shù)據(jù)存儲(chǔ)庫(kù)抽象組件148中查詢?cè)撟侄蔚囊?guī)定。如上所述,字段規(guī)定包括用來(lái)訪問與字段相關(guān)聯(lián)的物理數(shù)據(jù)的訪問方法的定義。另外,字段規(guī)定可包括安全性信息162。從而,運(yùn)行時(shí)組件150確定(步驟510)對(duì)于檢索的查詢字段規(guī)定是否存在該特定用戶(即發(fā)出查詢的用戶)的安全性規(guī)則。也就是,運(yùn)行時(shí)組件150參考訪問類型安全性列表312和值類型安全性列表318,以確定是否存在對(duì)應(yīng)于字段規(guī)定的字段名稱。如果在任一列表中都未找到字段規(guī)定的安全性規(guī)則,則處理進(jìn)入步驟516。如果存在安全性規(guī)則,則運(yùn)行時(shí)組件150確定(步驟512)是否必須采取由規(guī)則指定的安全性操作。在訪問類型限制的情況下,如果在步驟510在訪問類型安全性列表312中找到與字段規(guī)定的邏輯字段對(duì)應(yīng)的字段條目,則必須采取規(guī)則指定的安全性操作,而不管字段條目的值。在值類型限制的情況下,如果在步驟510在值類型安全性列表318中找到與正被分析的邏輯查詢組件/標(biāo)準(zhǔn)中的邏輯字段值對(duì)應(yīng)的字段值,則必須采取規(guī)則指定的安全性操作。如果步驟512被肯定回答,則運(yùn)行時(shí)組件150(在步驟514)記錄必須采取操作。然后,處理進(jìn)入步驟516。
      然后,運(yùn)行時(shí)組件150為正被處理的邏輯字段構(gòu)建(步驟516)具體查詢組成部分(Contribution)。如這里定義的,具體查詢組成部分是用來(lái)根據(jù)當(dāng)前邏輯字段執(zhí)行數(shù)據(jù)選擇的具體查詢的一部分。具體查詢是采用諸如SQL和XQuery的語(yǔ)言表示的查詢,并且與給定物理數(shù)據(jù)存儲(chǔ)庫(kù)(例如,關(guān)系數(shù)據(jù)庫(kù)或XML存儲(chǔ)庫(kù))的數(shù)據(jù)一致。從而,使用具體查詢來(lái)從由圖1所示的DBMS154所代表的物理數(shù)據(jù)存儲(chǔ)庫(kù)定位和檢索數(shù)據(jù)。然后,將為當(dāng)前字段生成的具體查詢組成部分添加(步驟518)到具體查詢語(yǔ)句。然后,方法500返回到步驟506,以開始處理抽象查詢的下一個(gè)字段。從而,針對(duì)抽象查詢中的每個(gè)數(shù)據(jù)選擇字段,迭代在步驟506進(jìn)入的過程,從而將附加內(nèi)容貢獻(xiàn)給要執(zhí)行的最終查詢。
      在構(gòu)建具體查詢的數(shù)據(jù)選擇部分之后,運(yùn)行時(shí)組件150識(shí)別要作為查詢執(zhí)行的結(jié)果而返回的信息。如上所述,在一個(gè)實(shí)施例中,抽象查詢定義要作為查詢執(zhí)行的結(jié)果而返回的抽象字段的列表,這里稱作結(jié)果規(guī)定。抽象查詢中的結(jié)果規(guī)定可包括字段名稱和排序標(biāo)準(zhǔn)。在一個(gè)實(shí)施例中,結(jié)果規(guī)定還包括安全性信息162,其可以相同于或類似于上面參照表II描述的安全性信息來(lái)定義。為了處理結(jié)果規(guī)定,方法500在步驟502進(jìn)入循環(huán),以將結(jié)果字段定義添加到正被生成的具體查詢。在步驟522,運(yùn)行時(shí)組件150在數(shù)據(jù)存儲(chǔ)庫(kù)抽象148中查詢(來(lái)自抽象查詢的結(jié)果規(guī)定的)結(jié)果字段名稱,然后從數(shù)據(jù)存儲(chǔ)庫(kù)抽象148檢索結(jié)果字段定義,以識(shí)別要為當(dāng)前邏輯結(jié)果字段返回的數(shù)據(jù)的物理位置。在步驟524,運(yùn)行時(shí)組件150確定對(duì)于正被處理的特定結(jié)果字段定義的該特定用戶是否存在安全性規(guī)則。也就是,運(yùn)行時(shí)組件150參考訪問類型安全性列表312,以確定是否存在對(duì)應(yīng)于結(jié)果規(guī)定的字段名稱(由于對(duì)于結(jié)果,沒有值是可用的,因此不檢查值類型安全性列表318)。如果在列表312中未找到結(jié)果規(guī)定的安全性規(guī)則。則處理進(jìn)入步驟530。否則,運(yùn)行時(shí)組件150確定(步驟526)為結(jié)果字段定義的規(guī)則是否指定必須采取的操作。這可以以類似于上面參照步驟512所述的方式來(lái)執(zhí)行。如果步驟526被肯定回答,則運(yùn)行時(shí)組件150記錄(步驟528)必須采取操作。在任一情況下,處理進(jìn)入步驟530。
      在步驟530,運(yùn)行時(shí)組件150(在步驟530)為邏輯結(jié)果字段構(gòu)建(識(shí)別要返回的數(shù)據(jù)的物理位置的具體查詢的)具體查詢組成部分。然后,在步驟532,將具體查詢組成部分添加到具體查詢語(yǔ)句。
      一旦抽象查詢中的每個(gè)結(jié)果規(guī)定均被處理,則運(yùn)行時(shí)組件150(根據(jù)是否以上述方式記錄了任何操作)確定(步驟534)是否必須采取任何安全性操作。如果否,則在步驟542執(zhí)行查詢。然而,如果必須采取安全性操作,則檢查所記錄的操作(步驟536)以確定最嚴(yán)格的操作。在一個(gè)實(shí)施例中,每個(gè)操作被分配一個(gè)數(shù)值,其中這些數(shù)值隨著增大的嚴(yán)格度而上升。在步驟538,運(yùn)行時(shí)組件150確定該操作是否是致命的(即,阻止執(zhí)行查詢)。如果否,則在步驟542執(zhí)行查詢。如果該操作是致命的,則不執(zhí)行查詢,并且向用戶通知違反安全性(步驟540)。然后,方法500結(jié)束。
      應(yīng)當(dāng)注意的是,由安全性算法151執(zhí)行的上述查詢驗(yàn)證一般可以在兩個(gè)時(shí)候的任一個(gè)執(zhí)行。在一個(gè)實(shí)施例中,當(dāng)構(gòu)建每個(gè)查詢條件時(shí),可以發(fā)生驗(yàn)證。這樣的方案將加速向用戶通知違反安全性。然而,該方案的缺點(diǎn)是它幫助試圖推翻安全限制的用戶進(jìn)行適當(dāng)?shù)脑囼?yàn)(例如,遞增地修改查詢)。從而,另一種可選方案是只有當(dāng)用戶輸入且發(fā)出了整個(gè)查詢時(shí)才執(zhí)行查詢驗(yàn)證。后一方案還確保在檢查違反之前向運(yùn)行時(shí)組件150提供查詢的“總畫面”,從而與單個(gè)條件相比使用戶的意圖更加明顯。
      值類型限制的運(yùn)行時(shí)方法500可參考關(guān)于表II的“l(fā)ast name”字段和數(shù)據(jù)存儲(chǔ)庫(kù)抽象的上面例子來(lái)說明。假定用戶是Mary McGoon,則將在登錄(登錄驗(yàn)證方法300)期間,在值類型安全性列表318中輸入了last name列中的值“McGoon”的條目?,F(xiàn)在假定Mary McGoon發(fā)出了在“l(fā)ast name”字段中包含值McGoon的邏輯查詢,則運(yùn)行時(shí)組件150檢查(步驟510和步驟524)(當(dāng)Mary McGoon登錄時(shí)為其生成的)訪問類型安全性列表312或值類型安全性列表318中的任一個(gè)是否包含“l(fā)ast name”字段的安全性規(guī)則。在確定值類型安全性列表318包含“l(fā)ast name”字段的安全性規(guī)則之后,安全性算法151響應(yīng)所嘗試的訪問確定(步驟512和526)規(guī)則是否需要操作。在本例中,由于正被分析的邏輯查詢標(biāo)準(zhǔn)包含值“McGoon”,并且規(guī)則是為用戶Mary McGoon指定操作的值類型規(guī)則,因此需要操作。由表II的數(shù)據(jù)存儲(chǔ)庫(kù)抽象組件指定(并且記錄在值類型安全性列表318中)的操作為“NoAction(無(wú)操作)”。如果所嘗試的訪問確實(shí)需要操作,則安全性算法151記錄必須采取在安全性信息162中定義的操作(步驟514和528)。
      在本例中,當(dāng)指定用戶發(fā)出具有特定值的查詢時(shí),執(zhí)行指定的安全性操作(在Mary McGoon的情況下為無(wú)操作)。當(dāng)然,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)認(rèn)識(shí)到,還可以采用NOT操作符來(lái)配置安全性規(guī)則邏輯。例如,安全性規(guī)則可被配置成如果用戶(例如,Mary McGoon)在查詢中輸入其它人的姓名,則“RunAndLog(運(yùn)行并記錄)”,但是如果同一用戶輸入其自己的名稱則采取“NoAction”,或者反之亦然。
      繼續(xù)Mary McGoon的例子,假定Mary的記錄表示她進(jìn)行了HIV測(cè)試。從而,訪問類型安全性列表將包含HIV測(cè)試字段的列(作為登錄驗(yàn)證方法300的結(jié)果)。還假定Mary發(fā)出了引用HIV測(cè)試字段的查詢。
      運(yùn)行時(shí)組件150檢查(步驟510和524)(當(dāng)Mary McGoon登錄時(shí)為其生成的)訪問類型安全性列表312或值類型安全性列表318中的任一個(gè)是否包含“HIV測(cè)試”字段的安全性規(guī)則。在確定訪問類型安全性列表312包含“HIV測(cè)試”字段的安全性規(guī)則之后,安全性算法151必定響應(yīng)所嘗試的訪問已確定(步驟512和526)該規(guī)則需要操作。這是因?yàn)椋瑢?duì)于訪問類型限制,在查詢中指定的字段的值是無(wú)關(guān)的,從而僅僅在訪問類型安全性列表312中存在HIV測(cè)試字段就表示存在并且必須施行安全性規(guī)則。應(yīng)當(dāng)注意的是,在本例子的每一個(gè)中,確定規(guī)則需要“操作”僅僅是確定規(guī)則已被指定并且用于施行規(guī)則的條件已被滿足。當(dāng)然,如在前面實(shí)施例中所述,規(guī)則可以是指定不要采取“任何操作”的“無(wú)操作”規(guī)則(例如,見表II、第038行)。在本例中,要采取的操作是“LogAndDoNotRun(記錄且不運(yùn)行)”。
      應(yīng)當(dāng)清楚,在一個(gè)實(shí)施例中,訪問類型安全性列表312和值類型安全性列表318僅僅是為了增強(qiáng)性能而提供的。在另一個(gè)實(shí)施例中,不使用列表312、318,并且運(yùn)行時(shí)組件150直接訪問數(shù)據(jù)存儲(chǔ)庫(kù)抽象組件148,以便驗(yàn)證查詢。
      參照?qǐng)D6描述用于根據(jù)步驟516和530構(gòu)建邏輯字段的具體查詢組成部分的方法600的一個(gè)實(shí)施例。在步驟602,方法600查詢與當(dāng)前邏輯字段相關(guān)聯(lián)的訪問方法是否是簡(jiǎn)單訪問方法。如果是,則基于物理數(shù)據(jù)位置信息構(gòu)建(步驟604)具體查詢組成部分,然后根據(jù)上述方法500繼續(xù)進(jìn)行處理。否則,處理繼續(xù)到步驟606,以查詢與當(dāng)前邏輯字段相關(guān)聯(lián)的訪問方法是否是過濾訪問方法。如果是,則基于某物理數(shù)據(jù)實(shí)體的物理數(shù)據(jù)位置信息構(gòu)建(步驟608)具體查詢組成部分。在步驟610,以用于與物理數(shù)據(jù)實(shí)體相關(guān)聯(lián)的子集數(shù)據(jù)的附加邏輯(過濾選擇)擴(kuò)展具體查詢組成部分。然后,根據(jù)上述方法500繼續(xù)進(jìn)行處理。
      如果訪問方法不是過濾訪問方法,則處理從步驟606進(jìn)入步驟612,其中方法600查詢?cè)L問方法是否是組合訪問方法。如果訪問方法是組合訪問方法,則在步驟614定位和檢索組合字段表達(dá)式中每個(gè)子字段引用的物理數(shù)據(jù)位置。在步驟616,以組合字段表達(dá)式的物理字段位置信息替代組合字段表達(dá)式的邏輯字段引用,由此生成具體查詢組成部分。然后,根據(jù)上述方法500繼續(xù)進(jìn)行處理。
      如果訪問方法不是組合訪問方法,則處理從步驟612進(jìn)入步驟618。步驟618代表可被考慮為本發(fā)明實(shí)施例的任何其它訪問方法類型。然而,應(yīng)當(dāng)理解,可以考慮其中實(shí)現(xiàn)少于全部可用訪問方法的實(shí)施例。例如,在特定實(shí)施例中,僅使用簡(jiǎn)單訪問方法。在另一個(gè)實(shí)施例中,僅使用簡(jiǎn)單訪問方法和過濾訪問方法。
      如上所述,如果邏輯字段指定不同于底層物理數(shù)據(jù)的數(shù)據(jù)格式,則可能有必要執(zhí)行數(shù)據(jù)轉(zhuǎn)換。在一個(gè)實(shí)施例中,當(dāng)根據(jù)方法600構(gòu)建邏輯字段的具體查詢組成部分時(shí),對(duì)每個(gè)相應(yīng)的訪問方法執(zhí)行初始轉(zhuǎn)換。例如,可以作為步驟604、608和616的一部分或者緊接在其后執(zhí)行轉(zhuǎn)換。在步驟542執(zhí)行查詢之后,執(zhí)行隨后的從物理數(shù)據(jù)格式到邏輯字段格式的轉(zhuǎn)換。當(dāng)然,如果邏輯字段定義的格式與底層物理數(shù)據(jù)相同,則轉(zhuǎn)換是不必要的。
      在前面說明中,安全性條件以在發(fā)出查詢的用戶的表中的列與另一個(gè)人的相同列之間建立關(guān)聯(lián)為前提。也就是,例如,值類型限制要求進(jìn)行用戶特定值(例如,姓)與另一個(gè)人的(用戶試圖訪問的)相同值之間的比較。當(dāng)然,在其它實(shí)施例中,安全性限制可被擴(kuò)展成包括任何其它“敏感”信息(從發(fā)出查詢的特定用戶的觀點(diǎn)來(lái)看)。例如,可能期望阻止用戶訪問前配偶的性??梢栽趹?yīng)用程序140的安全性算法中指定究竟限制哪些值/字段。
      在一個(gè)實(shí)施例中,將安全性限制擴(kuò)展成包括任何其它“敏感”信息的前述方面可通過字段相關(guān)來(lái)實(shí)現(xiàn)。字段相關(guān)允許特定字段上的安全性與另一個(gè)字段中的值相關(guān)。例如,“l(fā)ast name(姓)”字段可與“address(地址)”相關(guān),以在發(fā)出查詢的用戶居住于該地址的同時(shí),檢索目前或先前居住于同一地址的其它人的姓名。然后,給定這些姓名,可檢查用戶的姓名歷史,以生成可阻止用戶訪問的擴(kuò)展姓名列表。作為另一個(gè)示例,給定數(shù)據(jù)庫(kù)中的家譜信息,規(guī)則可被編寫成巡視(walk through)家族樹,從而構(gòu)建過去N代的復(fù)雜姓名列表(例如,其中N是整數(shù))。作為另一個(gè)示例,給定醫(yī)生的當(dāng)前病人列表(可以從數(shù)據(jù)倉(cāng)庫(kù)容易地獲得),可以為所有其它姓名對(duì)醫(yī)生施加一定程度的安全限制。
      如上所述,一些安全性操作包括記錄所嘗試的訪問。更一般地說,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)認(rèn)識(shí)到,當(dāng)調(diào)用安全性規(guī)則時(shí),可采取各種各樣的響應(yīng)。例如,可以向系統(tǒng)管理員發(fā)出通知(例如,通過電子郵件)。
      如上所述,數(shù)據(jù)存儲(chǔ)庫(kù)抽象組件148僅僅示例說明提供各種優(yōu)點(diǎn)的一個(gè)實(shí)施例。在一個(gè)方面中,通過定義應(yīng)用程序查詢規(guī)定和底層數(shù)據(jù)表示之間的松散耦合來(lái)實(shí)現(xiàn)這些優(yōu)點(diǎn)。不是采用特定表、列和關(guān)系信息對(duì)應(yīng)用程序進(jìn)行編碼,例如使用SQL的情況,而是應(yīng)用程序以更抽象的方式定義數(shù)據(jù)查詢需求,然后,在運(yùn)行時(shí)將這些需求綁定到特定物理數(shù)據(jù)表示。
      本發(fā)明的松散查詢-數(shù)據(jù)耦合使得,即使修改底層數(shù)據(jù)表示或者如果要與相比于在開發(fā)請(qǐng)求實(shí)體時(shí)所使用的是全新的物理數(shù)據(jù)表示一起使用請(qǐng)求實(shí)體,請(qǐng)求實(shí)體(例如,應(yīng)用程序)也能夠工作。在修改或重構(gòu)給定物理數(shù)據(jù)表示的情況下,更新對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)庫(kù)抽象,以反映對(duì)底層物理數(shù)據(jù)模型做出的修改。相同的邏輯字段集可供查詢使用,只是綁定于物理數(shù)據(jù)模型中的不同實(shí)體或位置。結(jié)果,即使對(duì)應(yīng)的物理數(shù)據(jù)模型發(fā)生了重大的改變,針對(duì)抽象查詢接口而編寫的請(qǐng)求實(shí)體也繼續(xù)不變地工作。在要與相比于在開發(fā)請(qǐng)求實(shí)體時(shí)所使用的是全新的物理數(shù)據(jù)表示一起使用請(qǐng)求實(shí)體的情況下,新的物理數(shù)據(jù)模型可使用相同的技術(shù)(例如,關(guān)系數(shù)據(jù)庫(kù))、但遵循不同的命名策略和組織信息(例如,不同的大綱)來(lái)被實(shí)現(xiàn)。新大綱將包含可使用簡(jiǎn)單、過濾和組合字段訪問方法技術(shù)映射到應(yīng)用程序所需的邏輯字段集的信息??蛇x地,新的物理表示可使用用于表示類似信息的可選技術(shù)(例如,使用基于XML的數(shù)據(jù)存儲(chǔ)庫(kù),而非關(guān)系數(shù)據(jù)庫(kù)系統(tǒng))。在任何情況下,通過提供映射在查詢中引用的字段與新物理數(shù)據(jù)模型中的位置和物理表示的可選數(shù)據(jù)存儲(chǔ)庫(kù)抽象,被編寫成使用抽象查詢接口的現(xiàn)有請(qǐng)求實(shí)體可以容易地移植成使用新的物理數(shù)據(jù)表示。
      關(guān)于最終用戶,數(shù)據(jù)存儲(chǔ)庫(kù)抽象提供數(shù)據(jù)過濾機(jī)制,從而暴露有關(guān)數(shù)據(jù),并且阻止訪問選定內(nèi)容。然而,應(yīng)當(dāng)理解,數(shù)據(jù)存儲(chǔ)庫(kù)抽象僅是本發(fā)明的一個(gè)實(shí)施例。更一般地,本發(fā)明以根據(jù)用戶-數(shù)據(jù)相關(guān)性提供查詢的執(zhí)行(或不執(zhí)行)的任何方式來(lái)實(shí)現(xiàn)。也就是,根據(jù)最終用戶和當(dāng)執(zhí)行時(shí)將由該查詢?cè)L問/返回的特定數(shù)據(jù),進(jìn)行查詢執(zhí)行。
      然而,應(yīng)當(dāng)強(qiáng)調(diào)的是,本領(lǐng)域的技術(shù)人員可以容易地認(rèn)識(shí)到,可以與數(shù)據(jù)存儲(chǔ)庫(kù)抽象組件分離地實(shí)現(xiàn)本發(fā)明的安全特性特征和機(jī)制。例如,在傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)的上下文中,一個(gè)實(shí)施例提供多個(gè)附加數(shù)據(jù)庫(kù)表,以存儲(chǔ)將表和列與安全性規(guī)則相關(guān)聯(lián)的信息。對(duì)訪問表/列中的信息的企圖應(yīng)用安全性規(guī)則。在這種情況下,安全性組件負(fù)責(zé)分析采用查詢語(yǔ)言(例如,SQL)編寫的查詢,并且根據(jù)在查詢斷定(predicate)內(nèi)引用、或者作為指定查詢的結(jié)果集的成員返回的表/列和集合,確定所應(yīng)用的安全性規(guī)則集。
      應(yīng)當(dāng)注意,這里對(duì)特定值、定義、編程語(yǔ)言和例子的任何引用僅僅為了示例說明的目的。從而,本發(fā)明不局限于任何特定說明和例子。此外,雖然本發(fā)明的各方面是參照SELECTION(選擇)操作來(lái)描述的,但是也可考慮其它輸入/輸出操作,包括公知的操作,如ADD(添加)、MODIFY(修改)、INSERT(插入)、DELETE(刪除)等。當(dāng)然,特定訪問方法可對(duì)抽象查詢功能的類型施加限制,其中可使用利用特定訪問方法的字段來(lái)定義抽象查詢功能。例如,涉及組合訪問方法的字段不是MODIFY、INSERT和DELETE的可行對(duì)象。
      雖然前文涉及本發(fā)明的多個(gè)實(shí)施例,但是在不脫離本發(fā)明的基本范圍的情況下可以設(shè)計(jì)本發(fā)明的其它和另外實(shí)施例,并且其范圍由所附權(quán)利要求限定。
      權(quán)利要求
      1.一種提供關(guān)于數(shù)據(jù)的安全性的方法,包括接收用戶對(duì)數(shù)據(jù)庫(kù)發(fā)出的查詢,其中以至少一個(gè)字段和該至少一個(gè)字段的關(guān)聯(lián)值配置該查詢;以及基于該至少一個(gè)字段的特定于用戶的數(shù)據(jù)的存在,確定是否必須調(diào)用針對(duì)該至少一個(gè)字段為用戶指定的安全性規(guī)則。
      2.如權(quán)利要求1所述的方法,其中該查詢是SQL查詢。
      3.如權(quán)利要求1所述的方法,還包括調(diào)用安全性規(guī)則;其中調(diào)用安全性規(guī)則包括確定是否執(zhí)行查詢。
      4.如權(quán)利要求1所述的方法,還包括當(dāng)確定存在該至少一個(gè)字段的特定于用戶的數(shù)據(jù)時(shí),必須調(diào)用安全性規(guī)則,而不管該至少一個(gè)字段的特定于用戶的數(shù)據(jù)的值。
      5.如權(quán)利要求1所述的方法,其中確定是否必須調(diào)用安全性規(guī)則包括確定該至少一個(gè)字段的關(guān)聯(lián)值與該至少一個(gè)字段的特定于用戶的數(shù)據(jù)的值之間的匹配。
      6.如權(quán)利要求1所述的方法,還包括在調(diào)用安全性規(guī)則之前,確定該至少一個(gè)字段的特定于用戶的數(shù)據(jù)的存在。
      7.如權(quán)利要求6所述的方法,其中在用戶登錄時(shí)執(zhí)行確定該至少一個(gè)字段的特定于用戶的數(shù)據(jù)的存在。
      8.一種提供關(guān)于數(shù)據(jù)的安全性的方法,包括生成至少一個(gè)安全性列表,該安全性列表反映針對(duì)給定用戶存在的數(shù)據(jù)的多個(gè)字段的每一個(gè),其中該多個(gè)字段的每一個(gè)具有為給定用戶定義的安全性規(guī)則;接收給定用戶對(duì)數(shù)據(jù)庫(kù)發(fā)出的查詢,其中以至少一個(gè)字段和該至少一個(gè)字段的關(guān)聯(lián)值配置該查詢;訪問該至少一個(gè)安全性列表,以確定該查詢的該至少一個(gè)字段是否反映在該至少一個(gè)安全性列表中;以及如果該查詢的該至少一個(gè)字段反映在該至少一個(gè)安全性列表中,則施行安全性規(guī)則。
      9.如權(quán)利要求8所述的方法,其中該至少一個(gè)安全性列表包括值類型安全性列表,其包含反映在值類型安全性列表中的多個(gè)字段的每一個(gè)的值,并且其中訪問該至少一個(gè)安全性列表包括確定該查詢的該至少一個(gè)字段的關(guān)聯(lián)值是否匹配反映在值類型安全性列表中的對(duì)應(yīng)字段的值。
      10.如權(quán)利要求8所述的方法,其中施行安全性規(guī)則包括阻止執(zhí)行查詢。
      11.如權(quán)利要求8所述的方法,其中施行安全性規(guī)則包括記錄查詢的發(fā)出。
      12.如權(quán)利要求8所述的方法,其中,如果該查詢的該至少一個(gè)字段反映在安全性列表中,則施行安全性規(guī)則,而不管反映在安全性列表中的該查詢的該至少一個(gè)字段的值。
      13.一種對(duì)具有特定物理數(shù)據(jù)表示的數(shù)據(jù)提供安全性的方法,包括提供查詢規(guī)定,其包括多個(gè)用于定義抽象查詢的邏輯字段;提供將該多個(gè)邏輯字段映射到數(shù)據(jù)的物理實(shí)體的映射規(guī)則;為該多個(gè)邏輯字段提供用戶特定的安全性規(guī)則;接收用戶對(duì)數(shù)據(jù)庫(kù)發(fā)出的抽象查詢,其中該抽象查詢根據(jù)查詢規(guī)定來(lái)定義,并且以至少一個(gè)邏輯字段和該至少一個(gè)邏輯字段的關(guān)聯(lián)值配置;基于該至少一個(gè)邏輯字段的特定于用戶的數(shù)據(jù)的存在,確定是否必須調(diào)用針對(duì)該至少一個(gè)邏輯字段為用戶指定的安全性規(guī)則。
      14.如權(quán)利要求13所述的方法,還包括,在調(diào)用安全性規(guī)則之前,確定該至少一個(gè)邏輯字段的特定于用戶的數(shù)據(jù)的存在。
      15.如權(quán)利要求13所述的方法,還包括調(diào)用安全性規(guī)則;其中調(diào)用安全性規(guī)則包括確定是否執(zhí)行查詢。
      16.如權(quán)利要求13所述的方法,還包括當(dāng)確定存在該至少一個(gè)字段的特定于用戶的數(shù)據(jù)時(shí),必須調(diào)用安全性規(guī)則,而不管該至少一個(gè)字段的特定于用戶的數(shù)據(jù)的值。
      17.如權(quán)利要求13所述的方法,其中確定是否必須調(diào)用安全性規(guī)則包括確定該至少一個(gè)字段的關(guān)聯(lián)值與該至少一個(gè)字段的特定于用戶的數(shù)據(jù)的值之間的匹配。
      18.一種包含當(dāng)被執(zhí)行時(shí)執(zhí)行安全性驗(yàn)證操作的安全性驗(yàn)證指令的計(jì)算機(jī)可讀介質(zhì),該安全性驗(yàn)證操作包括接收用戶對(duì)數(shù)據(jù)庫(kù)發(fā)出的查詢,其中以至少一個(gè)字段和該至少一個(gè)字段的關(guān)聯(lián)值配置該查詢;以及基于該至少一個(gè)字段的特定于用戶的數(shù)據(jù)的存在,確定是否必須調(diào)用針對(duì)該至少一個(gè)字段為用戶指定的安全性規(guī)則。
      19.如權(quán)利要求18所述的計(jì)算機(jī)可讀介質(zhì),安全性驗(yàn)證操作還包括調(diào)用安全性規(guī)則;其中調(diào)用安全性規(guī)則包括確定是否執(zhí)行查詢。
      20.如權(quán)利要求18所述的計(jì)算機(jī)可讀介質(zhì),其中該查詢是SQL查詢。
      21.如權(quán)利要求18所述的計(jì)算機(jī)可讀介質(zhì),安全性驗(yàn)證操作還包括當(dāng)確定存在該至少一個(gè)字段的特定于用戶的數(shù)據(jù)時(shí),必須調(diào)用安全性規(guī)則,而不管該至少一個(gè)字段的特定于用戶的數(shù)據(jù)的值。
      22.如權(quán)利要求18所述的計(jì)算機(jī)可讀介質(zhì),其中確定是否必須調(diào)用安全性規(guī)則包括確定該至少一個(gè)字段的關(guān)聯(lián)值與該至少一個(gè)字段的特定于用戶的數(shù)據(jù)的值之間的匹配。
      23.一種包含當(dāng)被執(zhí)行時(shí)執(zhí)行安全性驗(yàn)證操作的安全性驗(yàn)證指令的計(jì)算機(jī)可讀介質(zhì),該安全性驗(yàn)證操作包括生成至少一個(gè)安全性列表,該安全性列表反映針對(duì)給定用戶存在的數(shù)據(jù)的多個(gè)字段的每一個(gè),其中該多個(gè)字段的每一個(gè)具有為給定用戶定義的安全性規(guī)則;接收給定用戶對(duì)數(shù)據(jù)庫(kù)發(fā)出的查詢,其中以至少一個(gè)字段和該至少一個(gè)字段的關(guān)聯(lián)值配置該查詢;訪問該至少一個(gè)安全性列表,以確定該查詢的該至少一個(gè)字段是否反映在該至少一個(gè)安全性列表中;以及如果該查詢的該至少一個(gè)字段反映在該至少一個(gè)安全性列表中,則施行安全性規(guī)則。
      24.如權(quán)利要求23所述的計(jì)算機(jī)可讀介質(zhì),其中該至少一個(gè)安全性列表包括值類型安全性列表,其包含反映在值類型安全性列表中的多個(gè)字段的每一個(gè)的值,并且其中訪問該至少一個(gè)安全性列表包括確定該查詢的該至少一個(gè)字段的關(guān)聯(lián)值是否匹配反映在值類型安全性列表中的對(duì)應(yīng)字段的值。
      25.如權(quán)利要求23所述的計(jì)算機(jī)可讀介質(zhì),其中施行安全性規(guī)則包括阻止執(zhí)行查詢。
      26.如權(quán)利要求23所述的計(jì)算機(jī)可讀介質(zhì),其中施行安全性規(guī)則包括記錄查詢的發(fā)出。
      27.如權(quán)利要求23所述的計(jì)算機(jī)可讀介質(zhì),其中,如果該查詢的該至少一個(gè)字段反映在安全性列表中,則施行安全性規(guī)則,而不管反映在安全性列表中的查詢的該至少一個(gè)字段的值。
      28.一種計(jì)算機(jī)可讀介質(zhì),包括存儲(chǔ)在其上的信息,該信息包括查詢規(guī)定,其包括多個(gè)用于定義抽象查詢的邏輯字段;多個(gè)映射規(guī)則,其將該多個(gè)邏輯字段映射到數(shù)據(jù)的物理實(shí)體;該多個(gè)邏輯字段的多個(gè)用戶特定安全性規(guī)則;運(yùn)行時(shí)組件,其可執(zhí)行以響應(yīng)于接收用戶對(duì)數(shù)據(jù)發(fā)出的抽象查詢而執(zhí)行安全性驗(yàn)證操作,其中該抽象查詢根據(jù)查詢規(guī)定來(lái)定義,并且以至少一個(gè)邏輯字段和該至少一個(gè)邏輯字段的關(guān)聯(lián)值配置,該安全性驗(yàn)證操作包括基于該至少一個(gè)邏輯字段的特定于用戶的數(shù)據(jù)的存在,確定是否必須調(diào)用針對(duì)該至少一個(gè)邏輯字段為用戶指定的安全性規(guī)則。
      29.如權(quán)利要求28所述的計(jì)算機(jī)可讀介質(zhì),其中安全性驗(yàn)證操作還包括調(diào)用安全性規(guī)則;其中調(diào)用安全性規(guī)則包括確定是否執(zhí)行查詢。
      30.如權(quán)利要求28所述的計(jì)算機(jī)可讀介質(zhì),其中安全性驗(yàn)證操作還包括當(dāng)確定存在該至少一個(gè)字段的特定于用戶的數(shù)據(jù)時(shí),必須調(diào)用安全性規(guī)則,而不管該至少一個(gè)字段的特定于用戶的數(shù)據(jù)的值。
      31.如權(quán)利要求28所述的計(jì)算機(jī)可讀介質(zhì),其中運(yùn)行時(shí)組件確定是否必須調(diào)用安全性規(guī)則包括確定該至少一個(gè)字段的關(guān)聯(lián)值與該至少一個(gè)字段的特定于用戶的數(shù)據(jù)的值之間的匹配。
      全文摘要
      一種用于保護(hù)數(shù)據(jù)的系統(tǒng)、方法和產(chǎn)品。針對(duì)字段和/或字段值定義安全性規(guī)則(162)。安全性規(guī)則(162)指定要應(yīng)用規(guī)則(162)的一個(gè)或多個(gè)用戶。檢查查詢(202)的內(nèi)容,并且基于內(nèi)容(例如,字段和/或該字段的值)和用戶特定數(shù)據(jù)來(lái)確定是否需要安全性操作。
      文檔編號(hào)G06F21/00GK1688977SQ03823637
      公開日2005年10月26日 申請(qǐng)日期2003年9月25日 優(yōu)先權(quán)日2002年10月3日
      發(fā)明者理查德·D·德廷杰, 理查德·J·史蒂文斯 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1