使用mysql做saas_一种SaaS企业平台数据库系统及其连接方法与流程
本發(fā)明屬于數(shù)據(jù)庫領(lǐng)域,尤其涉及一種SaaS企業(yè)平臺數(shù)據(jù)庫及其連接方法。
背景技術(shù):
SaaS是Software-as-a-Service(軟件即服務(wù))的簡稱,隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展和應(yīng)用軟件的成熟,在21世紀開始興起的一種完全創(chuàng)新的軟件應(yīng)用模式。它與“on-demand software”(按需軟件),the application service provider(ASP,應(yīng)用服務(wù)提供商),hosted software(托管軟件)所具有相似的含義。它是一種通過Internet提供軟件的模式,廠商將應(yīng)用軟件統(tǒng)一部署在自己的服務(wù)器上,客戶可以根據(jù)自己實際需求,通過互聯(lián)網(wǎng)向廠商定購所需的應(yīng)用軟件服務(wù),按定購的服務(wù)多少和時間長短向廠商支付費用,并通過互聯(lián)網(wǎng)獲得廠商提供的服務(wù)。用戶不用再購買軟件,而改用向提供商租用基于Web的軟件,來管理企業(yè)經(jīng)營活動,且無需對軟件進行維護,服務(wù)提供商會全權(quán)管理和維護軟件,軟件廠商在向客戶提供互聯(lián)網(wǎng)應(yīng)用的同時,也提供軟件的離線操作和本地數(shù)據(jù)存儲,讓用戶隨時隨地都可以使用其定購的軟件和服務(wù)。對于許多小型企業(yè)來說,SaaS是采用先進技術(shù)的最好途徑,它消除了企業(yè)購買、構(gòu)建和維護基礎(chǔ)設(shè)施和應(yīng)用程序的需要。
傳統(tǒng)的SaaS數(shù)據(jù)庫一般采用大型數(shù)據(jù)庫(ORACLE、DB2、SYBASE等),各企業(yè)間的數(shù)據(jù)采用表字段companyId的方式進行隔離,因各企業(yè)間業(yè)務(wù)不同,導致個性化定制開發(fā)困難,開發(fā)與維護高等問題,
技術(shù)實現(xiàn)要素:
為了解決現(xiàn)有技術(shù)中的上述問題,本發(fā)明提供了一種SaaS企業(yè)平臺數(shù)據(jù)庫及其連接方法。
本發(fā)明采用的技術(shù)方案具體如下:
一種SaaS企業(yè)平臺數(shù)據(jù)庫系統(tǒng),包括中心服務(wù)器和多個數(shù)據(jù)庫服務(wù)器,其中,所述中心服務(wù)器上具有中心庫,所述數(shù)據(jù)庫服務(wù)器上具有企業(yè)庫,所述中心庫用于存儲企業(yè)的注冊信息,在企業(yè)注冊后調(diào)用創(chuàng)建初始化數(shù)據(jù)庫服務(wù),在數(shù)據(jù)庫服務(wù)器上同步產(chǎn)生企業(yè)庫和表結(jié)構(gòu);當企業(yè)A的用戶需要使用數(shù)據(jù)庫時,其使用客戶端連接中心庫,并通過中心庫與企業(yè)A庫所在的數(shù)據(jù)庫服務(wù)器A建立加密連接,具體過程包括:
(1)企業(yè)A為其下屬的用戶生成密碼,設(shè)所述用戶的賬號為User,則該用戶的密碼PW通過下式計算:
PW=Encode(E(PrivateKeyA,User||Auth))
其中,PrivateKeyA是所述企業(yè)A的私鑰,Encode是Base64編碼函數(shù),Auth是企業(yè)A給予該用戶的對數(shù)據(jù)庫的訪問權(quán)限;E為加密函數(shù),其使用函數(shù)的第一個參數(shù)作為密鑰,對第二個參數(shù)進行加密;
(2)將所述密碼PW拆分成PW1和PW2兩部分,PW1由用戶保存,PW2保存在用戶使用的客戶端中;
(3)用戶使用客戶端連接中心服務(wù)器,并在客戶端中輸入PW1以及用戶賬號User,客戶端組合PW1和PW2以獲得用戶密碼PW;
(4)所述客戶端使用中心庫數(shù)字證書的公鑰加密PW,將加密結(jié)果和用戶賬號User發(fā)送給中心服務(wù)器;
(5)中心服務(wù)器上的中心庫接收到該加密結(jié)果后,使用其私鑰解密該加密結(jié)果,獲得PW;
(6)中心庫計算U=D(PublicKeyA,Decode(PW)),判斷U的前K個字符與User是否相等,如果不相等,則拒絕客戶端的連接,方法結(jié)束;如果相等,則客戶端認證通過,中心庫向客戶端返回認證通過消息,同時中心庫將U去除前K個字符后剩余的部分作為該用戶的數(shù)據(jù)庫訪問權(quán)限Auth;其中K是User的長度,PublicKeyA是企業(yè)A的公鑰,Decode是Base64解碼函數(shù);D是與E相對應(yīng)的解密函數(shù),其使用函數(shù)的第一個參數(shù)作為密鑰,對第二個參數(shù)進行解密;
(7)所述客戶端在接收到認證通過消息后,隨機生成一個對稱加密密鑰Key,將該密鑰Key用中心庫數(shù)字證書公鑰加密后,發(fā)送給中心服務(wù)器;
(8)中心庫將接收到的加密結(jié)果EncKey進行解密,獲得密鑰Key,將該密鑰Key、訪問權(quán)限Auth以及客戶端的網(wǎng)絡(luò)地址發(fā)送給企業(yè)A庫所在的數(shù)據(jù)庫服務(wù)器A;
(9)所述數(shù)據(jù)庫服務(wù)器A基于該密鑰Key,與客戶端建立加密連接,并基于所述訪問權(quán)限Auth接收該客戶端的數(shù)據(jù)庫訪問。
進一步地,對于數(shù)據(jù)庫表升級操作,由中心庫記錄最新庫版本號和最新庫的數(shù)據(jù)庫表結(jié)構(gòu),當企業(yè)A的用戶登錄企業(yè)A庫后,對比中心庫和企業(yè)A庫的版本號,如果發(fā)現(xiàn)企業(yè)A庫的版本比中心庫低,則觸發(fā)升級庫腳本,同步更新企業(yè)A庫的版本與中心庫一致。
進一步地,其特征在于,中心庫中的企業(yè)注冊信息包括企業(yè)的數(shù)字證書。
進一步地,其特征在于,所述加密函數(shù)E和解密函數(shù)D使用的是RSA算法或者橢圓曲線算法。
進一步地,其特征在于,將PW的前N個字符作為PW1,剩余字符作為PW2,所述N是預定義的長度。
與上述系統(tǒng)相應(yīng)的,本發(fā)明還提供了一種SaaS企業(yè)平臺數(shù)據(jù)庫系統(tǒng)的連接方法。
本方法的有益效果為:方便企業(yè)定制自己的數(shù)據(jù)庫,在保證安全性的前提下,企業(yè)具有了更大的靈活性,可以自行控制其下屬的用戶,而無需進行系統(tǒng)注冊。
【附圖說明】
此處所說明的附圖是用來提供對本發(fā)明的進一步理解,構(gòu)成本申請的一部分,但并不構(gòu)成對本發(fā)明的不當限定,在附圖中:
圖1是本發(fā)明數(shù)據(jù)庫系統(tǒng)的連接關(guān)系圖。
【具體實施方式】
下面將結(jié)合附圖以及具體實施例來詳細說明本發(fā)明,其中的示意性實施例以及說明僅用來解釋本發(fā)明,但并不作為對本發(fā)明的限定。
本發(fā)明的SaaS企業(yè)平臺數(shù)據(jù)庫系統(tǒng)為每個企業(yè)都提供一個單庫,從而實現(xiàn)單企業(yè)單庫的結(jié)構(gòu)。如附圖1所示,系統(tǒng)中具有一個中心庫,每個企業(yè)在中心庫注冊賬號,產(chǎn)生注冊信息后,中心庫調(diào)用創(chuàng)建初始化數(shù)據(jù)庫服務(wù),同步產(chǎn)生該企業(yè)的庫和表結(jié)構(gòu)。所述中心庫位于一個中心服務(wù)器上,而企業(yè)庫位于其他的數(shù)據(jù)庫服務(wù)器上,不同企業(yè)庫可以位于不同的數(shù)據(jù)庫服務(wù)器上,也可以位于同一數(shù)據(jù)庫服務(wù)器上。
所述中心庫除了存儲企業(yè)的注冊信息外,還可將企業(yè)用戶的操作由中心庫路由到相應(yīng)的企業(yè)庫進行處理。對于數(shù)據(jù)庫表升級操作,可采用中心庫中記錄最新庫版本號和最新庫的數(shù)據(jù)庫表結(jié)構(gòu),當企業(yè)A的用戶登錄企業(yè)A庫后,對比中心庫和企業(yè)A庫的版本號,如果發(fā)現(xiàn)企業(yè)A庫的版本比中心庫低,則觸發(fā)升級庫腳本,同步更新企業(yè)A庫的版本與中心庫一致。
由于中心庫存儲了各個企業(yè)的注冊信息,因此中心庫也是作為企業(yè)用戶登錄和連接數(shù)據(jù)庫的中心點。企業(yè)用戶在使用客戶端連接該數(shù)據(jù)庫系統(tǒng)時,首先是連接中心庫,然后通過中心庫登錄,從而再連接與訪問相應(yīng)的企業(yè)庫。下面對企業(yè)A為例,對本發(fā)明的上述連接過程進行詳細說明。
首先,所述中心庫和每個企業(yè)都有各自的數(shù)字證書和相應(yīng)的私鑰,可以使用該私鑰和數(shù)字證書中的公鑰進行加解密操作。中心庫中的企業(yè)注冊信息就包括了企業(yè)的數(shù)字證書。
設(shè)加密函數(shù)為E(key,Data),即使用預設(shè)的加密算法和密鑰key,對數(shù)據(jù)Data進行加密,從而得到Data的加密結(jié)果;設(shè)解密函數(shù)為D(Deckey,Enc),即使用預設(shè)的解密算法和密鑰key,對密文Enc進行解密,從而得到解密結(jié)果。優(yōu)選的,所述加密和解密算法為RSA算法或者橢圓曲線算法。以下說明都使用這兩個函數(shù)的定義。
(1)企業(yè)A為其下屬的用戶生成密碼,設(shè)所述用戶的賬號為User,則該用戶的密碼PW通過下式計算:
PW=Encode(E(PrivateKeyA,User||Auth))
其中,PrivateKeyA是所述企業(yè)A的私鑰,Encode是Base64編碼函數(shù)。
Auth是企業(yè)A給予該用戶的對數(shù)據(jù)庫的訪問權(quán)限,符號“||”表示將兩個字符串連接。
(2)將所述密碼PW拆分成PW1和PW2兩部分。
優(yōu)選的,將PW的前N個字符作為PW1,剩余字符作為PW2。所述N是預定義的長度,優(yōu)選的,N=8。
PW1作為用戶個人密碼,由用戶自行記憶;PW2則作為客戶端密碼,保存在用戶使用的客戶端中,可以使用現(xiàn)有的一些安全保存方式來保持PW2。
(3)用戶使用客戶端連接中心服務(wù)器,并在客戶端中輸入PW1以及用戶賬號User,客戶端組合PW1和PW2以獲得用戶密碼PW。
所述組合過程就是步驟2中拆分過程的逆過程。
(4)客戶端使用中心庫數(shù)字證書的公鑰加密PW,將加密結(jié)果和用戶賬號User發(fā)送給中心服務(wù)器。
具體地,客戶端計算EncPW=E(PublicKeyCenter,PW),獲得PW的加密結(jié)果EncPW。其中,PublicKeyCenter是中心庫的公鑰。
(5)中心服務(wù)器上的中心庫接收到該加密結(jié)果后,使用其私鑰解密該加密結(jié)果,獲得PW。
具體地,中心庫計算PW=D(PrivateKeyCenter,EncPW)。其中,PrivateKeyCenter是中心庫的私鑰。
(6)中心庫計算U=D(PublicKeyA,Decode(PW)),判斷U的前K個字符與User是否相等,如果不相等,則拒絕客戶端的連接,方法結(jié)束;如果相等,則客戶端認證通過,中心庫向客戶端返回認證通過消息,同時中心庫將U去除前K個字符后剩余的部分作為該用戶的數(shù)據(jù)庫訪問權(quán)限Auth。
其中K是User的長度,PublicKeyA是企業(yè)A的公鑰,Decode是Base64解碼函數(shù)。步驟6的過程實際上是步驟1中計算公式的逆過程,因此可以驗證客戶端上傳的賬號密碼是否是企業(yè)A頒發(fā),同時獲得訪問權(quán)限Auth。通過這樣的驗證方式,企業(yè)A可以自主生成用戶賬號、密碼和權(quán)限,而無需在服務(wù)器側(cè)對用戶進行注冊用戶,在保證安全性的同時,保持了企業(yè)的自主靈活性。
(7)客戶端在接收到認證通過消息后,隨機生成一個對稱加密密鑰Key,將該密鑰Key用中心庫數(shù)字證書公鑰加密后,發(fā)送給中心服務(wù)器。
具體地,客戶端計算Key的加密結(jié)果EncKey,即
EncKey=E(PublicKeyCenter,Key)。
所述密鑰Key作為客戶端與企業(yè)A庫之間的通信密鑰,基于該通信密鑰可建立兩者間的加密連接。
(8)中心庫將接收到的加密結(jié)果EncKey進行解密,獲得密鑰Key,將該密鑰Key、訪問權(quán)限Auth以及客戶端的網(wǎng)絡(luò)地址發(fā)送給企業(yè)A庫所在的數(shù)據(jù)庫服務(wù)器A。
具體地,中心庫計算Key=D(PrivateKeyCenter,EncKey),獲得該密鑰,再將密鑰傳輸給數(shù)據(jù)庫服務(wù)器A。此外,由于客戶端與中心服務(wù)器建立了網(wǎng)絡(luò)連接,因此中心服務(wù)器可以獲得客戶端的網(wǎng)絡(luò)地址。
通常情況下,作為SaaS平臺,內(nèi)部服務(wù)器之間的通信都是安全的,或者同處于一個內(nèi)部網(wǎng)絡(luò)內(nèi),或者具有安全信道,因此可以安全傳輸數(shù)據(jù)。
(9)所述數(shù)據(jù)庫服務(wù)器A基于該密鑰Key,與客戶端建立加密連接,并基于所述訪問權(quán)限Auth接收該客戶端的數(shù)據(jù)庫訪問。
這一步驟由數(shù)據(jù)庫服務(wù)器A主動發(fā)起建立加密連接,因此客戶端無需事先知道企業(yè)A所對應(yīng)的數(shù)據(jù)庫服務(wù)器。
以上所述僅是本發(fā)明的較佳實施方式,故凡依本發(fā)明專利申請范圍所述的構(gòu)造、特征及原理所做的等效變化或修飾,均包括于本發(fā)明專利申請范圍內(nèi)。
總結(jié)
以上是生活随笔為你收集整理的使用mysql做saas_一种SaaS企业平台数据库系统及其连接方法与流程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python类加载器_利用Python反
- 下一篇: jstorm mysql_zookeep