專利名稱:多租戶數(shù)據庫系統(tǒng)的制作方法
技術領域:
本發(fā)明一般地涉及在數(shù)據庫網絡系統(tǒng)中保護數(shù)據,更具體,涉及在多租戶數(shù)據庫 網絡系統(tǒng)中保護數(shù)據。
背景技術:
在現(xiàn)代數(shù)據庫系統(tǒng)中,一個或更多的客戶可以共享數(shù)據庫系統(tǒng)硬件和軟件的不同 組分。與各客戶如果必須購買用于自身的硬件和軟件的情況相比,這種共享硬件和軟件的 途徑使得能以遠為更低的成本提供與數(shù)據庫相關的服務。在這種系統(tǒng)中,高度期望保證客 戶數(shù)據保持安全,而且在組織中只有適當用戶才能看見以及進行更新。數(shù)據安全以物理安全開始,包括入侵檢測和物理訪問控制。在網絡層,除了適當通 過HTTP協(xié)議之外,通常使用工業(yè)標準網絡防火墻來阻塞對數(shù)據中心內所有機器的訪問。此 外,也可以從數(shù)據中心外部對網絡進行掃描,以確信網絡防火墻正在阻塞所有未經授權的 訪問。雖然如此,仍然有用的是,提供另外的或者可選擇的安全系統(tǒng)和方法,作為針對可能 導致將錯誤頁面或數(shù)據返回給用戶的應用軟件、系統(tǒng)及網絡軟件、和/或系統(tǒng)及網絡硬件 中的可能錯誤或缺陷的防御。因此,期望提供系統(tǒng)和方法,以保證共享的硬件和軟件基礎結構中的任何錯誤或 缺陷都不會導致將極其重要的客戶數(shù)據交付給錯誤的用戶。
發(fā)明內容
本發(fā)明提供用于在多租戶數(shù)據庫網絡環(huán)境中提高系統(tǒng)及網絡安全的系統(tǒng)和方法。 這些系統(tǒng)和方法采用一種或多種技術,諸如識別可疑查詢計劃;比較包括在查詢中的用 戶和組織信息與包括在來自應用服務器的響應中的用戶和組織信息,以驗證響應確實發(fā)送 給適當?shù)挠脩簦灰约?,通過比較存儲在客戶機處的用戶和組織ID信息與響應中的類似信 息,驗證來自應用服務器的響應是否確實發(fā)送給適當?shù)挠脩粝到y(tǒng)。采用這些技術中的一種 或多種,可以使實施方式能在多租戶環(huán)境下保護客戶數(shù)據。如在此使用的那樣,在說明書中,術語多租戶數(shù)據庫系統(tǒng)指那些系統(tǒng),其中數(shù)據庫 系統(tǒng)的硬件和軟件的不同組分可以由一個或更多客戶共享。例如,給定的應用服務器可以同時為許多客戶處理請求;以及,給定的數(shù)據庫表格可以為潛在的更大量的客戶存儲行。如 在此使用的那樣,在說明書中,術語查詢計劃指用于在數(shù)據庫系統(tǒng)中訪問信息的一組步驟。根據一種實施方式并作為示例,查詢計劃檢測模塊輪詢數(shù)據庫系統(tǒng),以判斷任何 查詢計劃是否為可疑查詢計劃,如果是則發(fā)出警報。可疑查詢計劃包括在多租戶數(shù)據庫系 統(tǒng)中應該從不出現(xiàn)的那些查詢計劃,以及應該只在少數(shù)識別過的情況下出現(xiàn)的查詢計劃, 舉例來說,諸如讀取多個分區(qū)的結合(join)以及散列結合(hash join)。因為在多租戶數(shù) 據庫中各組織的數(shù)據可以被存儲在單個物理數(shù)據庫分區(qū)中,由用戶發(fā)起的在多個分區(qū)中訪 問數(shù)據的任何查詢都可以被視為是可疑查詢計劃。類似地,在使用大表格以跨越多個租戶 存儲數(shù)據的情況下,讀取表格中全部或大部分數(shù)據行的任何查詢計劃也都可以被視為是可 疑的。為了簡潔在此未列舉的其他可疑查詢計劃也都在實施方式的設想之中。此外,取代 或者除發(fā)出警報之外,實施方式還可以執(zhí)行其他動作,諸如不帶限制地廢除可疑查詢計劃、 延遲查詢計劃的執(zhí)行、記錄審核消息等。實施方式還可以判斷特殊可疑查詢計劃是否為查 詢計劃例外類的成員,如果是則可以允許執(zhí)行該查詢計劃而不發(fā)出警報。根據另一實施方式,服務器側防火墻系統(tǒng)包括位于應用服務器與客戶機系統(tǒng)之間 的一個或多個防火墻服務器的堆疊。防火墻服務器記錄關于所接收的各客戶機請求的用戶 和組織信息,并比較該信息與包括在來自應用服務器的響應中的用戶和組織信息,以驗證 響應確實發(fā)送給適當?shù)挠脩?。根據另一實施方式,客戶機側防火墻系統(tǒng)包括在客戶機系統(tǒng) 上執(zhí)行的邏輯,該邏輯通過比較存儲在客戶機處的用戶和組織ID信息與響應中的類似信 息,驗證來自應用服務器的響應是否確實發(fā)送給適當?shù)挠脩粝到y(tǒng)??蛻魴C側防火墻對檢測 網絡硬件和/或軟件消息傳送中的錯誤是有用的??蛻魴C和服務器防火墻的實施方式可以基于類似的原理跟蹤正在請求頁面的用 戶和組織,然后保證返回給用戶的頁面正是實際想要提供給那個用戶。在實施方式中,這些 途徑可以提供針對應用軟件、系統(tǒng)軟件或硬件中可能導致將錯誤頁面返回給用戶的錯誤或 缺點的防御。在示例客戶機側防火墻實施方式中,使用用戶和組織的唯一 ID(例如,在用戶散 列cookie中)來跟蹤正在請求頁面的用戶。服務器防火墻利用對話ID(SID)(其分配給為 鑒定過的用戶直接建立的各對話)對此進行跟蹤。因為SID是潛在敏感信息,可能并不希 望在每個頁面上返回,本實施方式中的應用服務器在被返回頁面的超文本標志語言(HTML) 中直接插進用戶散列、以及在超文本傳送協(xié)議(HTTP)標題中直接插入SID。服務器防火墻 掃描各頁面標題中的SID,然后在將頁面返回給客戶機之前除去SID。然而,在一方面,在通 過客戶機防火墻確認的場合,在HTML中保留用戶散列。服務器防火墻實施方式可以具有的優(yōu)點在于為每個請求運行服務器防火墻,而 客戶機防火墻只為支持實現(xiàn)防火墻的邏輯平臺(例如,Java、JavMcript、ActiveX等)的 客戶機運行。然而,客戶機防火墻實施方式可以具有的優(yōu)點在于客戶機防火墻可以捕獲 在服務器防火墻與客戶機防火墻之間網絡層中的錯誤,這種錯誤用服務器防火墻則捕獲不 到。本發(fā)明提供一種多租戶數(shù)據庫系統(tǒng),包括數(shù)據庫系統(tǒng),為多個租戶存儲數(shù)據;應 用服務器,與所述數(shù)據庫系統(tǒng)和網絡可通信地耦合,所述應用服務器為至少一個客戶機系 統(tǒng)提供對所述數(shù)據庫系統(tǒng)的網絡訪問;以及至少一個防火墻服務器,可通信地耦合在所述應用服務器與所述至少一個客戶機系統(tǒng)之間。所述至少一個防火墻服務器可操作以接收 客戶機請求;從所述客戶機請求中提取用戶和組織信息;轉發(fā)所述客戶機請求給所述應用 服務器;以及比較包括在從所述應用服務器接收到的響應消息中的用戶和組織信息與從所 述客戶機請求中提取出的用戶和組織信息。參考說明書的其余部分,包括附圖和權利要求,將會了解本發(fā)明的其他特點和優(yōu) 點。下面,參照附圖詳細說明本發(fā)明進一步的特點和優(yōu)點、以及本發(fā)明的不同實施方式的結 構和操作。在附圖中,相同的標號說明相同或功能類似的部分。
下面參照附圖描述根據本發(fā)明的不同實施方式,其中圖1圖示其中可以使用多租戶數(shù)據庫系統(tǒng)的環(huán)境;圖2更具體地圖示圖1的組元和各種互連;圖3圖示根據一種實施方式的數(shù)據庫查詢計劃檢測系統(tǒng)200的結構;圖4圖示根據一種實施方式的服務器側防火墻系統(tǒng)300的結構;以及圖5圖示根據本發(fā)明一種實施方式的客戶機防火墻處理。
具體實施例方式根據本發(fā)明的實施方式提供了在多租戶數(shù)據庫網絡環(huán)境中保護客戶數(shù)據的系統(tǒng) 和方法。特別地,這些系統(tǒng)和方法幫助確保在多租戶數(shù)據庫網絡系統(tǒng)的共享軟件和硬件 結構中可能出現(xiàn)的任何錯誤或缺陷,都不會導致頁面或數(shù)據分送給錯誤的用戶。在某些方 面,這些系統(tǒng)和方法分析查詢計劃、并檢測應該從不出現(xiàn)、或者只在少數(shù)明確定義的環(huán)境中 出現(xiàn)的某些查詢計劃。此外,根據某些實施方式的服務器側防火墻系統(tǒng)和方法,保證發(fā)送給 用戶的數(shù)據和頁面的安全不會受到服務器側的基礎結構問題的影響。在某些方面,提供客 戶機側防火墻系統(tǒng)和方法,用于保證發(fā)送給用戶的數(shù)據和頁面的安全不會受到網絡層基礎 結構問題的影響。安全概述應用級的安全可以概念化為包括三個主要方面鑒別、授權和審核。鑒別機制通常 要求注冊進入服務的各用戶輸入他們的密碼??梢詫⒋嗣艽a與存儲在例如數(shù)據庫中的密碼 進行核對,以驗證用戶身份。一旦驗證之后,為此用戶創(chuàng)建對話,并將對話ID(SID)分配給 該對話,SID可以包括諸如用戶ID、組織ID、客戶機IP地址、以及過期時間等信息。此外, 可以對SID進行加密,以避免惡意黑客改變其內容。SID通常作為超文本傳輸協(xié)議(HTTP)Cookie返回給用戶,用于利用瀏覽器的客戶 機訪問;或者作為串數(shù)據字段返回給用戶,用于借助應用程序設計接口(API)的客戶機訪 問。在各后續(xù)請求中,客戶機返回包含該SID的這種cookie或數(shù)據字段。當處理請求時, 應用服務器首先讀取SID、解密SID,以驗證SID未被篡改,以及,驗證該SID未過期并且該 用戶還被授權從專用IP地址訪問系統(tǒng)。對于在SID被設置為過期之前(例如,15分鐘)發(fā) 生在窗口內的任何請求,應用服務器可以通過以更遲的過期時間創(chuàng)建新SID來“延長對話 的壽命”。—旦應用知道用戶的身份以及用戶所屬的組織(來自例如上述SID機制),授權機制通常包括基于用戶簡檔對不同特征和功能的實施適當訪問的應用。應用還基于為該組織 配置的任何數(shù)據共享準則實施適當?shù)臄?shù)據行訪問。審核機制通常包括這樣的應用,例如,基于來自SID的用戶ID和組織ID,記錄用戶 注冊日期時間以及他們在系統(tǒng)上執(zhí)行的動作。該信息可以用于各種審核行為。下面,參照示例的實施方式,在一個或更多的鑒別、授權和審核方面,說明用于對 應用安全提供改進的機制和方法。系統(tǒng)概述圖1圖示一種其中可以使用多租戶數(shù)據庫系統(tǒng)的環(huán)境。如圖1(以及圖2中更為 詳細)所示,用戶系統(tǒng)12可以經由網絡14與多租戶數(shù)據庫系統(tǒng)(MTS) 16相互作用。這些 用戶系統(tǒng)12的用戶可以是處于不同能力的用戶,而特定用戶系統(tǒng)12的能力可以由關于當 前用戶的許可(許可等級)完全確定。例如,在銷售人員使用特定用戶系統(tǒng)12與MTS 16 相互作用的情況下,用戶系統(tǒng)具有分配給該銷售人員的能力。然而,當管理人員使用該用戶 系統(tǒng)與MTS 16相互作用時,該用戶系統(tǒng)具有分配給該管理人員的能力。在具有層次角色模 型的系統(tǒng)中,處于一種許可等級的用戶,可以具有對可由更低許可等級用戶訪問的應用、數(shù) 據和數(shù)據庫信息的訪問,但不能具有對可由處于更高許可等級的用戶訪問的某些應用、數(shù) 據庫信息和數(shù)據的訪問。因此,對于訪問和修改應用及數(shù)據庫信息而言,不同的用戶具有不 同的能力,這取決于用戶安全或許可等級。網絡14可以是LAN(局域網)、WAN(廣域網)、無線網、點對點網、星型網、令牌環(huán) 形網、集線器網或其他適當?shù)慕Y構。作為目前使用的最通用類型的網絡是TCP/IP(傳輸控 制協(xié)議和網際協(xié)議)網絡,諸如網絡的全球互聯(lián)網經常以字母“I”稱為“因特網”,這將在本 文的許多示例中使用。然而,應當理解,本發(fā)明可以使用的網絡并不局限于此,盡管TCP/IP 是目前首選的協(xié)議。用戶系統(tǒng)12可以使用TCP/IP與MTS 16通信,以及,在更高的網絡層,使用其他通 用網際協(xié)議進行通信,諸如HTTP、FTP、AFS、WAP等。在使用HTTP的示例中,用戶系統(tǒng)12可 以包括通常稱為“瀏覽器”的HTTP客戶機程序,用于向MTS 16處的HTTP服務器發(fā)送HTTP 消息、以及接收來自MTS 16處的HTTP服務器的消息。這種HTTP服務器可以實現(xiàn)為MTS 16 與網絡14之間的唯一的網絡接口,但也可以還使用其他技術或被取代。在有些實現(xiàn)中,MTS 16與網絡14之間的接口包括負荷共享功能,諸如循環(huán)復用HTTP請求分配器,以便在多個服 務器之間平衡負荷并均勻分配到來的HTTP請求。優(yōu)選的是,多個服務器中的每一個都具有 對MTS數(shù)據的訪問,至少對訪問該服務器的用戶而言。在一方面,圖1中示出的系統(tǒng)實現(xiàn)了基于web的客戶關系管理(CRM)系統(tǒng)。例如, 在一方面,MTS 16包括應用服務器,配置用來實現(xiàn)并執(zhí)行CRM軟件應用,以及向和從用戶系 統(tǒng)12提供相關的數(shù)據、代碼、表單、網頁和其他信息;以及,用來將相關的數(shù)據、對象和網頁 內容存儲至數(shù)據庫系統(tǒng),并且從數(shù)據庫系統(tǒng)檢索相關的數(shù)據、對象和網頁內容。采用多租戶 系統(tǒng),關于多個租戶的數(shù)據可以存儲在相同的物理數(shù)據庫對象中,然而,通常將租戶數(shù)據排 列成使一個租戶的數(shù)據與其他租戶的數(shù)據保持邏輯上的獨立,因而一個租戶不能訪問其他 租戶的數(shù)據,除非這種數(shù)據是明顯共享的。在某些方面,系統(tǒng)16實現(xiàn)不同于或除CRM應用 之外的應用。例如,系統(tǒng)16可以提供租戶對多宿主(標準和定制)應用包括CRM應用的訪 問。
用于MTS 16的部件的一種排列示于圖1中,包括網絡接口 20 ;存儲器22,用于 租戶數(shù)據;存儲器M,用于系統(tǒng)數(shù)據,對于MTS 16和可能的多個租戶來說可訪問;程序代碼 26,用于實現(xiàn)MTS 16的各種功能;以及處理空間觀,用于執(zhí)行MTS系統(tǒng)處理和租戶特定處 理,諸如運行作為應用宿主服務一部分的應用。在MTS 16上可以執(zhí)行的另外處理包括數(shù)據 庫索引處理。示于圖1系統(tǒng)中的幾個部件包括在此無需詳細說明的常規(guī)公知的部件。例如,各 用戶系統(tǒng)12可以包括桌面?zhèn)€人計算機、工作站、膝上型電腦、PDA、蜂窩電話、或者任何一種 無線訪問協(xié)議(WAP)使能設備、或者能夠與因特網或其他網絡連接直接或間接接口的任何 其他計算設備。用戶系統(tǒng)12通常運行HTTP客戶機程序,例如瀏覽程序,諸如Microsoft's Internet Explorerbrowser、Netscape‘ s Navigator browser、Opera' s browser、或在蜂 窩電話、PDA或其他無線設備等情況下的WAP使能瀏覽器,允許用戶系統(tǒng)12的用戶(例如 多租戶數(shù)據庫系統(tǒng)的訂戶)對其在網絡14上從MTS 16能得到的信息、頁面及應用進行訪 問、處理及查看。各用戶系統(tǒng)12通常還包括一個或更多的用戶接口裝置,諸如鍵盤、鼠標、 觸摸屏、手寫筆等,用來與顯示器上(例如,監(jiān)視器屏幕、IXD顯示器等)由瀏覽器提供的圖 形用戶接口(GUI)、連同由MTS 16或其他系統(tǒng)或服務器提供的頁面、表單、應用和其他信息 一起進行交互。例如,可以使用用戶接口裝置訪問由MTS 16宿主的數(shù)據和應用,以及對所 存儲的數(shù)據執(zhí)行搜索等等,或者,允許用戶與可能呈現(xiàn)給用戶的不同GUI頁面進行交互。如上所述,本發(fā)明適合于與因特網一起使用,因特網指網絡的特定全球互聯(lián)網。然 而,應當理解,可以使用其他網絡代替因特網,諸如內聯(lián)網、外聯(lián)網、虛擬個人網(VPN)、非基 于TCP/IP的網絡、以及LAN或WAN等。根據一種實施方式,各用戶系統(tǒng)12及其所有部件是操作者使用諸如瀏覽器的應 用可配置的,這些應用包括使用諸如htel Pentium處理器等的中央處理單元的計算機代 碼運行。類似地,MTS 16 (以及不只存在一個情況下MTS的另外實例)和所有它們的部件, 可以是操作者使用應用可配置的,應用包括使用諸如htel Pentium處理器等、或多處理器 單元的中央處理單元的計算機代碼運行。用于操作和配置MTS 16以互通消息以及處理網 頁、應用和其他數(shù)據以及如這里所描述的媒體內容的計算機代碼,優(yōu)選地被下載并存儲在 硬盤上,不過,整個程序代碼或其部分,也可以存儲在任何其他如所公知的易失性存儲器或 非易失性存儲器介質或裝置中,例如ROM和RAM,或者提供在任何能夠存儲程序代碼的介質 上,諸如壓縮光盤(⑶)介質、數(shù)字通用光盤(DVD)介質、軟盤等。另外,整個程序代碼或其部 分,可以例如在因特網上傳輸從軟件源下載,或者從如公知的從其他服務器下載,或者如公 知的使用任何通訊介質和協(xié)議(例如,TCP/IP、HTTP、HTTPS、以太網等)在如所公知的任何 其他常規(guī)網絡連接(例如,外聯(lián)網、VPN、LAN等)上傳輸。同樣值得贊許的是,用于實現(xiàn)本發(fā) 明的方面的計算機代碼可以實現(xiàn)為在客戶機系統(tǒng)和/或服務器或服務器系統(tǒng)上可以執(zhí)行 的任何編程語言,例如,諸如C、C++、HTML、任何其他標志語言、Java、Javakript、ActiveX、 任何其他腳本語言如VBkript、以及如公知的許多其他編程語言。根據一種實施方式,各MTS 16被配置用于向用戶(客戶機)系統(tǒng)12提供網頁、表 單、應用、數(shù)據和媒體內容,以支持由作為MTS 16租戶的用戶系統(tǒng)12進行的訪問。同樣,MTS 16提供安全機制,以保持各租戶數(shù)據隔離,除非該數(shù)據被共享。如果使用不只一個MTS,它 們可以位置上彼此接近(例如,在位于單棟建筑物或校園內的服務器站),或者,它們可以
7分布于彼此遙遠的位置(例如,一臺或多臺服務器位于城市A,而一臺或多臺服務器位于城 市B)。在這里使用時,各MTS可以包括一臺或多臺邏輯上和/或物理上連接但局部分布或 者跨越一個或更多地理位置的服務器。另外,術語“服務器”意思包括計算機系統(tǒng),如本領域 公知的,計算機系統(tǒng)包括處理硬件及處理空間、以及相關的存儲系統(tǒng)和數(shù)據庫應用(例如, OODBMS或RDBMS)。還應當理解,“服務器系統(tǒng)”和“服務器”在這里經??苫Q使用。類似 地,這里所描述的數(shù)據庫可以實現(xiàn)為單數(shù)據庫、分布式數(shù)據庫、分布式數(shù)據庫的集合、帶有 在線冗余或離線備份或其他冗余等的數(shù)據庫,以及可以包括分布式數(shù)據庫或存儲網絡以及 相關的處理智能。圖2更具體地圖示MTS 16的部件和各種互連。在本示例中,網絡接口實現(xiàn)為一個 或多個HTTP應用服務器100。還示出系統(tǒng)處理空間102,包括個別租戶處理空間104、系統(tǒng) 數(shù)據庫106、租戶數(shù)據庫108、以及租戶管理處理空間110。租戶數(shù)據庫108可以分成個別租 戶存儲區(qū)112,其可以是物理排列或邏輯排列。在各租戶存儲區(qū)112內,可以為各用戶類似 地配給用戶存儲區(qū)114。例如,用戶最近使用(MRU)項目的副本可以存儲至用戶存儲區(qū)114。 類似地,用于作為一個租戶的整個組織的MRU項目的副本也可以存儲至租戶存儲區(qū)112。還應當理解,經由不同的網絡連接,各應用服務器100能可通信地耦合至數(shù)據庫 系統(tǒng),例如系統(tǒng)數(shù)據庫106和租戶數(shù)據庫108。例如,服務器IOO1可以經由因特網連接,另 一服務器IOCV1可以經由直接網絡鏈接耦合,而另一服務器IOOn則可以經由另外不同的網 絡連接進行耦合。傳輸控制協(xié)議和網際協(xié)議(TCP/IP)是用于服務器100與數(shù)據庫系統(tǒng)之 間通信的典型協(xié)議,然而,本領域技術人員易于理解,也可以使用其他傳輸協(xié)議,以根據所 使用的網絡互連來優(yōu)化系統(tǒng)。在某些方面,各應用服務器100配置成處理關于與作為一個租戶的任何組織相關 聯(lián)的任何一個用戶的請求。因為希望的是,能因任何原因在任何時間添加應用服務器到服 務器組中或從服務器組中去除應用服務器,優(yōu)選的是,對于用戶和/或組織不存在任何對 于特定的應用服務器100的服務器仿射性(affinity)。所以,在一種實施方式中,將實現(xiàn)負 荷平衡功能(例如,F(xiàn)5Big-IP負荷平衡器)的接口系統(tǒng)(例如,參見圖4)可通信地耦合在 服務器100與用戶系統(tǒng)12之間,以分配對服務器100的請求。在一方面,負荷平衡器使用 最小連接算法將用戶請求路由向服務器100。也可以使用負荷平衡算法的其他示例,諸如循 環(huán)復用和觀測響應時間。例如,在某些方面,來自同一用戶的三個連續(xù)請求可能命中三個不 同的服務器100,而來自不同用戶的三個請求則可能命中同一服務器100。按照這種方式, MTS 16是多租戶的,其中MTS 16處理跨越完全不同的用戶和組織的不同對象、數(shù)據和應用 的存貯以及對它們的訪問。作為存儲的示例,一個租戶可能是雇用了銷售力量的公司,其中各銷售人員使用 MTS 16以管理他們的銷售處理。因此,用戶可能維持合同數(shù)據、訂貨至交貨時間數(shù)據(leads data)、客戶跟蹤數(shù)據、性能數(shù)據、目標和進展數(shù)據等所有可應用于該用戶的個人銷售處理 (例如,在租戶數(shù)據庫108中)。在優(yōu)選的MTS安排中,由于要訪問、查看、修改、報告、傳輸、 計算等的所有該數(shù)據和應用,都可以借助于具有不比網絡訪問多任何內容的用戶系統(tǒng)進行 維持和訪問,所以,用戶從許多不同用戶系統(tǒng)的任何一個都可以管理其銷售成就和周轉周 期。例如,如果銷售人員正在訪問在其接待室里具有因特網入口的客戶,銷售人員在等待客 戶到達接待室的同時,可以獲得關于此客戶的關鍵更新。
盡管各用戶的數(shù)據可以與其他用戶的數(shù)據隔離而與各用戶的雇主無關,但有些數(shù) 據可以是由作為一個租戶的給定組織的多個用戶或所有用戶共享或可訪問的組織范圍內 的數(shù)據。因此,可能有一些數(shù)據結構由MTS 16進行管理,將其定位于租戶級;同時,另外的 數(shù)據結構則可以在用戶級進行管理。因為MTS可以支持包括可能是競爭對手的多個租戶, 所以MTS應當具有安全協(xié)議,其保持數(shù)據、應用以及應用使用分離。此外,因為許多租戶將 選擇對MTS進行訪問,而不是維持它們自己的系統(tǒng),所以,冗余、及時和備份是附加的重要 功能,而且需要在MTS中實現(xiàn)。除了用戶特定數(shù)據和租戶特定數(shù)據之外,MTS 16還能維持可以由多個租戶或其他 數(shù)據使用的系統(tǒng)級數(shù)據。這種系統(tǒng)級數(shù)據可以包括可在租戶之中共享的工業(yè)報告、新聞、記錄等。在某些方面,客戶機系統(tǒng)12與應用服務器100通信,以請求并更新來自MTS 16的 系統(tǒng)級和租戶級數(shù)據,這可能需要對數(shù)據庫系統(tǒng)106和/或數(shù)據庫系統(tǒng)108的一次或更多 次查詢。MTS 16(例如,MTS 16中的應用服務器100)自動生成設計以訪問期望信息的一個 或更多的SQL陳述(SQL查詢)。數(shù)據庫系統(tǒng)108可以生成從數(shù)據庫中訪問所請求數(shù)據的查 詢計劃。各數(shù)據庫通常可以被視為對象的集合,諸如一組邏輯表格,包括符合預定類別的 數(shù)據。“表格”是數(shù)據對象的一個代表,以及在此使用以簡化根據本發(fā)明的對象和客戶對象 的概念性描述。應當理解“表格”和“對象”在這里可以互換使用。各表格通常包含一個或 更多的數(shù)據類別,邏輯上排列成可視模式的列或字段。表格的各行或記錄包含由字段定義 的關于各類別的數(shù)據實例。例如,CRM數(shù)據庫可以包括以關于諸如姓名、地址、電話號碼、傳 真號碼等基本合同信息的字段描述客戶的表格。另一表格可以描述定購單,其包括關于諸 如客戶、產品、銷售價格、日期等信息的字段。在有些多租戶系統(tǒng)中,可以提供適合于所有租 戶使用的標準實體表格。對于CRM數(shù)據庫應用而言,這樣的標準實體可以包括用于帳目、合 同、訂貨至交貨時間和機會數(shù)據,各自包含預定義的字段。應當理解,“實體”在這里也可以 與“對象”和“表格”互換使用。在有些多租戶數(shù)據庫系統(tǒng)中,可以允許租戶創(chuàng)建并存儲定制對象,或者可以允許 他們定制標準實體或對象,例如通過創(chuàng)建用于標準對象的客戶字段,包括定制索引字段。 2004年4月 2 日提交的名稱為“Custom Entitiesand Fields In a Multi-Tenant Database System”美國專利申請系列號為No. 10/817161專利申請講授了用于在多租戶數(shù)據庫系統(tǒng) 中創(chuàng)建定制對象以及定制標準對象的系統(tǒng)和方法,該申請以引用的方式在此并入本文。例 如,在某些方面,所有的定制實體數(shù)據行存儲在單一的多租戶物理表格中,其可以包括每個 組織的多個邏輯表格。對客戶透明的是,他們的多個“表格”實際上存儲在一個大表格中或 者他們的數(shù)據可以與其他客戶的數(shù)據存儲在相同的表格中。在多租戶數(shù)據庫系統(tǒng)中,所有客戶可以共享運行系統(tǒng)的硬件和軟件的不同組分。 例如,給定的應用服務器可以同時處理關于數(shù)以百計客戶的請求。以及,給定的數(shù)據庫表格 可以存儲來自數(shù)以千計客戶的行。在這種系統(tǒng)中,高度期望保證客戶數(shù)據保持安全,并且只 有組織中的適當用戶可以看見以及進行更新。盡管可以實現(xiàn)常規(guī)的數(shù)據安全,諸如入侵檢 測和物理訪問控制、以及工業(yè)標準網絡防火墻,但仍然有用的是提供另外的或可選的安全 系統(tǒng)和方法,作為針對可能導致將錯誤頁面或數(shù)據返回給用戶的應用軟件、系統(tǒng)和網絡軟件和/或系統(tǒng)和網絡硬件中的錯誤和缺陷的防范。安全特征圖3圖示根據一種實施方式的數(shù)據庫查詢計劃檢測系統(tǒng)200。在一方面,圖3的 數(shù)據庫查詢計劃檢測系統(tǒng)實現(xiàn)在圖1的多租戶數(shù)據庫系統(tǒng)16中。如圖所示,數(shù)據庫查詢計 劃檢測系統(tǒng)200包括可與數(shù)據庫系統(tǒng)220 (例如,圖2的系統(tǒng)數(shù)據庫106和/或租戶數(shù)據庫 108)通信地耦合的數(shù)據庫查詢計劃檢測模塊210。數(shù)據庫查詢計劃檢測模塊210執(zhí)行定 期查詢數(shù)據庫220以檢索并分析查詢計劃的處理。在某些方面,數(shù)據庫查詢計劃檢測模塊 210實現(xiàn)在如圖所示的獨立裝置諸如獨立的服務器或計算機系統(tǒng)中,盡管其值得贊許,或者 也可以將其實現(xiàn)在應用服務器100或數(shù)據庫服務器中。在典型的多租戶數(shù)據庫方案中,某些查詢計劃應該從不出現(xiàn),而另外的查詢計劃 只在少數(shù)鑒別過的環(huán)境中出現(xiàn)。這些可能包括讀取多個分區(qū)的結合(join)和散列結合。例 如,因為各組織的數(shù)據可以存儲在單個物理數(shù)據庫分區(qū)中,所以,由用戶發(fā)起的訪問多個分 區(qū)中數(shù)據的任何查詢都是可疑的。類似地,在使用大表格存儲跨越多個租戶的數(shù)據的情況 下,讀取表格中全部或者大部分數(shù)據行的任何查詢計劃也是可疑的。在一方面,數(shù)據庫查詢計劃檢測模塊執(zhí)行獨立于數(shù)據庫運行的后臺處理,并經常 輪詢關于正在使用數(shù)據庫的查詢計劃的數(shù)據庫,以查找任何非預期的或可疑的計劃。如果 它檢測到任何不適當?shù)幕蚩梢傻牟樵冇媱?,在一方面,模塊判斷該可疑計劃是否歸入例外, 例如執(zhí)行系統(tǒng)整理任務的查詢計劃,如若不然,模塊記錄信息并發(fā)出適當警報。如果該計劃 歸入例外,則可以允許其繼續(xù)進行。在產品服務以及在開發(fā)和測試期間都運行此查詢計劃 檢測模塊是有益的,以便檢測可能導致由錯誤客戶訪問錯誤數(shù)據的任何代碼或基礎結構問 題。可疑的其他查詢計劃的實例,包括涉及全表格掃描、合并結合笛卡兒坐標(merge join Cartesian)或“分區(qū)散列全部(Partition Hash All) ”查詢或類似操作的任何一種 計劃。在“分區(qū)散列全部”查詢執(zhí)行步驟或類似情況下,數(shù)據庫可能將整個分區(qū)讀進存儲器, 并對其進行組織用于全面訪問。這意味著查詢將跨越物理分區(qū)進行掃描。執(zhí)行任何全表格 掃描的查詢計劃,可能是不包括組織過濾器的查詢的象征。對于一個典型的多租戶數(shù)據庫 方案而言,給定組織的行通常只是數(shù)據庫表格的較低百分比。如果數(shù)據庫正在執(zhí)行“不使用 索引”的全表格掃描,這表示查詢很可能遺漏了組織ID過濾器。合并結合笛卡兒坐標是一 種特定計劃,其說明數(shù)據庫(例如,由美國加利福尼亞州Redwood Shores市的Oracle公司 提供的數(shù)據庫)正在試圖通過將來自兩個表格的所有數(shù)據讀進用于查詢的存儲器來優(yōu)化 查詢,該查詢將在該表格中訪問高百分比的行。所有這些計劃在少數(shù)情況下可能是有效的, 因此,在一方面,它們將出現(xiàn)在“例外”清單中。圖4圖示根據一種實施方式的服務器側防火墻系統(tǒng)300。在一方面,圖4的防火墻 系統(tǒng)與圖1的多租戶數(shù)據庫系統(tǒng)16 —起實現(xiàn)。如圖所示,防火墻系統(tǒng)300包括可與應用服 務器100通信耦合的一個或多個防火墻服務器310。此處,出現(xiàn)了包括一個或多個負荷平 衡服務器的負荷平衡系統(tǒng)305,防火墻服務器310位于負荷平衡系統(tǒng)305與應用服務器100 之間。然而,應當理解,防火墻服務器310的功能也可以在負荷平衡系統(tǒng)305中或者在應用 服務器100中實現(xiàn)。然而,優(yōu)選的是,防火墻服務器功能與應用服務器分開,以及防火墻服 務器在與應用服務器不同的硬件和軟件平臺上運行。這使得影響一個系統(tǒng)(例如應用服務器系統(tǒng)或者防火墻服務器系統(tǒng))的任何基礎結構問題更少可能影響另一個。類似地,希望 的是,負荷平衡系統(tǒng)305在與防火墻服務器310不同的硬件和軟件平臺上運行。在一方面,如圖4所示,防火墻系統(tǒng)300包括與應用服務器100分開的一個或多個 服務器310的堆疊,其呈現(xiàn)UI并執(zhí)行事務邏輯。這些防火墻服務器310的目的是在負荷平 衡系統(tǒng)305與應用服務器100之間(或者,在不存在任何負荷平衡功能的情況下,則是在網 絡14與應用服務器100之間)中繼請求。對于它們中繼的各請求,各防火墻服務器310執(zhí) 行以下步驟1)記錄在從客戶機12接收的請求中的SID (或者客戶機散列);以及2)將該請求轉發(fā)給應用服務器100。在某些方面,在負荷平衡器與防火墻服務器之間,它們可以是一對一、一對多、多 對多的對應。也就是,一個負荷平衡服務器可以配置成尋址一個或多個特定防火墻服務器, 或者它可以尋址任何防火墻服務器。類似地,在防火墻服務器與應用服務器之間,也可以是
一對一、一對多、或者多對多對應。當應用服務器100響應所接收到的客戶機請求時,它通常為響應添加包含SID (或 者帶有用戶ID或組織ID信息的客戶機散列)的響應標題。防火墻服務器310接收該響應 消息,提取SID (或者客戶機散列),并比較在該響應中的SID (或者客戶機散列)中的信息 與由客戶機最初發(fā)出的SID中的信息。如果它們不同,防火墻服務器就知道存在某種錯誤, 并以錯誤代碼響應于該客戶機,而不是以錯誤頁面響應于該客戶機。它記錄此錯誤并發(fā)出 適當警報,例如,通過向系統(tǒng)管理員發(fā)送通知。如果信息匹配,則防火墻服務器310可以從 頁面體和/或從HTTP標題中除去SID,并將響應轉發(fā)給請求的客戶機。圖5圖示根據一種實施方式的示例性客戶機防火墻處理。在典型操作中,客戶機 系統(tǒng)通過向MTS 16發(fā)送注冊請求發(fā)起對話,該請求由應用服務器100接收。在響應中,應 用服務器發(fā)送注冊響應返回給請求的客戶機系統(tǒng)12。在一方面,該響應包括注冊頁面;當 注冊進入時,頁面“frontdoor, jsp”總是用戶命中的第一頁。此頁面運行(客戶機上的) 一個簡單的注冊腳本,以驗證該客戶機支持確認邏輯。這點是重要的,因為客戶機防火墻依 賴于客戶機側確認邏輯處理。在一方面,在JavMcript中實現(xiàn)確認邏輯,以及,注冊腳本驗 證該客戶機支持Jav必cript。如果客戶機不支持JavaScript (或者,在其中實現(xiàn)防火墻的 任何客戶機邏輯平臺),應用程序仍能工作但不帶防火墻。在一方面,當用戶注冊進入時,“frontdoor, jsp”頁面設置SID cookie。如果它是 在SID過期之前(例如,15分鐘)的窗口內請求的首頁,服務中的任何其它頁面可以設置 SID cookie.,當設置SID cookie時,也就設置稱為“用戶散列”的另一 cookie。該cookie 包含唯一地識別給定的用戶和組織的字母數(shù)字串。必須使用客戶機邏輯(諸如JavaScript)而不是HTTP cookie標題,來設置SID 和用戶散列cookie。這使客戶機防火墻邏輯能夠在設置SID或用戶散列cookie之前確認 該頁面確切打算供該客戶機使用。如果使用標準的HTTP標題設置cookie,則瀏覽器將在客 戶機防火墻代碼運行之前設置SID和用戶散列cookie,而導致檢查無用?;氐綀D5,在用戶注冊進入系統(tǒng)之后,可以向系統(tǒng)發(fā)出請求或查詢。應用服務器 100接收并處理該請求,并發(fā)送響應消息返回給請求的客戶機。在一方面,對于發(fā)回給客戶 機的各頁面,應用服務器100包括用戶ID和組織ID的散列,其用于為之產生頁面的用戶和組織。它還將基于客戶機的邏輯(例如,JavaScript)包括入每一頁面。當被客戶機接 收到時,客戶機邏輯執(zhí)行并確認為之產生頁面的用戶ID和組織ID與做出最初請求的用戶 ID和組織ID是相同的。在一方面,此邏輯對存儲在客戶機(例如,在SID和/或用戶散列 cookie中)的用戶ID及組織ID與隨頁面返回的ID進行比較。用于此客戶機側邏輯的 JavaScript源代碼的示例如下<script language = ‘“‘ JavaScriptl. 2,,src = "/js/session, js" ></script)〈script〉var hvch = needsClientHash(' sid_Client' ,' OOOOOOOcBXHOOOOOOOOO 62',' 65. 118. 120. 94',' /servlet/servlet. ClientHashValidator ? ResponseRequestedURL =% 2F0033000000DCGGg');〈/script〉下面提供用于功能"needsClientHash"和其他相關JavaScript功能的 JavaScript源代碼的示例function putClientHash (name, value, domain, path) {document, cookie = name+' =' +value+((domain) ? ‘ ;domain = ' +domain: " ) +((path) ? ‘ ;path = ' +path: ‘ ;path = /');}function getClientHash(name){var dc = document, cookie ;var prefix = name+'=';var begin = dc. indexOf (' ; ' +prefix);if (begin ==-1) {begin = dc. indexOf (prefix);if (begin ! = 0) return null ;}else{Begin+ = 2 ;}var end = document, cookie. indexOf(' ; ‘,begin);if (end == -1) {end = dc. length ;}return unescape(dc. substring(begin+prefix. length, end));}function needsClientHash(hashName, hashValue, clientSrc, nextPage) {var clientHash = getClientHash (hashName);var needsClientHash = clientHash == haseValue ;
if( ! needsClientHash) {
var currLoc = unescape(window, location, href); var index = currLoc. indexOf(hash value,0); needsClientHash = index>_l ;
}
If(
needsClientHash){
window, location, href = nextPage+ ' &winLoc = ' +window, location+' &c =' +clientHash+' &s =' +hashValue+' &cs =' +clientSrc ;}return needsClientHash ;}與服務器防火墻的實施方式類似,如果客戶機防火墻檢測到頁面被傳送給錯誤的 用戶或組織,防火墻立即從應用程序中注銷該用戶,并發(fā)出適當?shù)木瘓?。應當理解,客戶機防火墻確認邏輯可以使用其他的客戶機編程邏輯實現(xiàn)。例如,它 可以使用Java或ActiveX cookie程序等。例如,如果實現(xiàn)成ActiveX插件程序,發(fā)送給客 戶機的各頁面可以包括對ActiveX插件程序的調用,以執(zhí)行確認邏輯。盡管利用示例并根據特殊實施方式對本發(fā)明進行了說明,但應當理解本發(fā)明并不 局限于所公開的實施方式。相反,打算覆蓋對本領域技術人員而言顯而易見的不同修改和 類似裝置。因此,所附權利要求的范圍應當與最寬解釋一致,以便包括所有這種修改和類似
直ο
權利要求
1.一種多租戶數(shù)據庫系統(tǒng),包括數(shù)據庫系統(tǒng),為多個租戶存儲數(shù)據;應用服務器,與所述數(shù)據庫系統(tǒng)和網絡可通信地耦合,所述應用服務器為至少一個客 戶機系統(tǒng)提供對所述數(shù)據庫系統(tǒng)的網絡訪問;以及至少一個防火墻服務器,可通信地耦合在所述應用服務器與所述至少一個客戶機系統(tǒng) 之間,所述至少一個防火墻服務器可操作以接收客戶機請求;從所述客戶機請求中提取用戶和組織信息;轉發(fā)所述客戶機請求給所述應用服務器;以及比較包括在從所述應用服務器接收到的響應消息中的用戶和組織信息與從所述客戶 機請求中提取出的用戶和組織信息。
2.根據權利要求1所述的多租戶數(shù)據庫系統(tǒng),其中,所述用戶和組織信息包括在對話 ID(SID)Cookie和串數(shù)據字段的至少一個之中,以及其中,所述客戶機請求和所述響應消息 各自包括所述對話ID(SID)Cookie和所述串數(shù)據字段中的至少一個。
3.根據權利要求1所述的多租戶數(shù)據庫系統(tǒng),其中,所述防火墻服務器從包括作為所 述響應消息一部分的頁面體中除去所述用戶和組織信息的部分,并將所述響應消息轉發(fā)給 所述客戶機系統(tǒng)。
4.根據權利要求1所述的多租戶數(shù)據庫系統(tǒng),其中,當所述響應中的所述用戶和組織 信息與所提取的用戶和組織信息不匹配時,所述防火墻服務器發(fā)出警報。
5.根據權利要求1所述的多租戶數(shù)據庫系統(tǒng),其中,當所述響應中的所述用戶和組織 信息與所提取的用戶和組織信息不匹配時,所述防火墻服務器響應于所述客戶機請求生成 并發(fā)送錯誤代碼。
6.根據權利要求1所述的多租戶數(shù)據庫系統(tǒng),其中,當所述響應中的所述用戶和組織 信息與所提取的用戶和組織信息不匹配時,所述防火墻服務器響應于所述客戶機請求將所 述客戶機系統(tǒng)從所述應用服務器中注銷。
7.根據權利要求1所述的多租戶數(shù)據庫系統(tǒng),其中,當所述響應中的所述用戶和組織 信息與所提取的用戶和組織信息不匹配時,所述防火墻服務器記錄錯誤信息。
8.根據權利要求1所述的多租戶數(shù)據庫系統(tǒng),其中,所述防火墻服務器使用所述用戶 和組織信息的唯一 ID來跟蹤請求頁面的用戶的身份。
9.根據權利要求1所述的多租戶數(shù)據系統(tǒng),其中,所述防火墻服務器提取包括在所述 響應消息中的所述用戶和組織信息。
10.根據權利要求1所述的多租戶數(shù)據系統(tǒng),其中,所述防火墻服務器從所述響應消息 的HTML標題中提取所述用戶和組織信息。
全文摘要
提供了一種多租戶數(shù)據庫系統(tǒng)。利用查詢計劃檢測模塊不斷輪詢數(shù)據庫系統(tǒng),以找出可疑查詢計劃并發(fā)出警報,提高了在多租戶數(shù)據庫網絡環(huán)境下的網絡安全。利用位于應用服務器與客戶機系統(tǒng)之間的防火墻系統(tǒng),其記錄關于所接收的各客戶機請求的用戶和組織信息,比較該信息與包括在來自應用服務器的響應中的信息,并驗證該響應被發(fā)送給適當?shù)挠脩?,也能提高安全。利用帶有在客戶機系統(tǒng)上執(zhí)行的邏輯的客戶機側防火墻系統(tǒng),通過比較存儲在客戶機處的用戶和組織ID信息與響應中的類似信息,客戶機側防火墻系統(tǒng)驗證來自應用服務器的響應被發(fā)送給適當?shù)挠脩粝到y(tǒng),也能提高安全。
文檔編號G06F17/30GK102117310SQ20101057211
公開日2011年7月6日 申請日期2006年11月30日 優(yōu)先權日2005年12月2日
發(fā)明者保羅·納卡達, 克雷格·韋斯曼, 埃里克·陳, 戴夫·莫倫霍夫, 托德·麥金農 申請人:易享信息技術有限公司