所屬的技術人員能夠理解,本公開的各個方面可以實現(xiàn)為系統(tǒng)、方法或程序產(chǎn)品。因此,本公開的各個方面可以具體實現(xiàn)為以下形式,即:完全的硬件實施方式、完全的軟件實施方式(包括固件、微代碼等),或硬件和軟件方面結合的實施方式,這里可以統(tǒng)稱為“電路”、“模塊”或“系統(tǒng)”。本公開實施例提供了一種電子設備,示例性地,該電子設備包括:處理器與存儲器。該存儲器可以用于存儲處理器的可執(zhí)行指令。其中,處理器配置為經(jīng)由執(zhí)行上述可執(zhí)行指令來本公開實施例提供的數(shù)據(jù)加密方法。下面參照圖7來描述根據(jù)本公開的這種實施方式的電子設備700。圖7顯示的電子設備700僅僅是一個示例,不應對本公開實施例的功能和使用范圍帶來任何限制。如圖7所示,電子設備700以通用計算設備的形式表現(xiàn)。電子設備700的組件可以包括但不限于:至少一個處理單元710、至少一個存儲單元720、連接不同系統(tǒng)組件(包括存儲單元720和處理單元710)的總線730。其中,該存儲單元存儲有程序代碼,該程序代碼可以被該處理單元710執(zhí)行,使得該處理單元710執(zhí)行本說明書上述“示例性方法”部分中描述的根據(jù)本公開各種示例性實施方式的步驟。例如,該處理單元710可以執(zhí)行上述方法實施例的如下步驟:接收應用端發(fā)送的sql訪問請求;根據(jù)sql訪問請求確定對應的第一解析結果;向加解密功能模塊發(fā)送第一解析結果,其中加解密功能模塊用于對第一解析結果中包含的待加密的目標字段進行加密,得到第二解析結果;根據(jù)第二解析結果進行sql改寫與執(zhí)行,得到第一數(shù)據(jù)執(zhí)行結果;向應用端返回第一數(shù)據(jù)執(zhí)行結果。存儲單元720可以包括易失性存儲單元形式的可讀介質,例如隨機存取存儲單元(ram)7201和/或高速緩存存儲單元7202,還可以進一步包括只讀存儲單元(rom)7203。存儲單元720還可以包括具有一組(至少一個)程序模塊7205的程序/實用工具7204,這樣的程序模塊7205包括但不限于:操作系統(tǒng)、一個或者多個應用程序、其它程序模塊以及程序數(shù)據(jù),這些示例中的每一個或某種組合中可能包括網(wǎng)絡環(huán)境的實現(xiàn)??偩€730可以為表示幾類總線結構中的一種或多種,包括存儲單元總線或者存儲單元控制器、外圍總線、圖形加速端口、處理單元或者使用多種總線結構中的任意總線結構的局域總線。電子設備700也可以與一個或多個外部設備740(例如鍵盤、指向設備、藍牙設備等)通信,還可與一個或者多個使得用戶能與該電子設備700交互的設備通信,和/或與使得該電子設備700能與一個或多個其它計算設備進行通信的任何設備(例如路由器、調制解調器等等)通信。這種通信可以通過輸入/輸出(i/o)接口750進行。并且,電子設備700還可以通過網(wǎng)絡適配器760與一個或者多個網(wǎng)絡(例如局域網(wǎng)(lan),廣域網(wǎng)(wan)和/或公共網(wǎng)絡,例如因特網(wǎng))通信。如圖所示,網(wǎng)絡適配器760通過總線730與電子設備700的其它模塊通信。應當明白,盡管圖中未示出,可以結合電子設備700使用其它硬件和/或軟件模塊,包括但不限于:微代碼、設備驅動器、冗余處理單元、外部磁盤驅動陣列、raid系統(tǒng)、磁帶驅動器以及數(shù)據(jù)備份存儲系統(tǒng)等。通過以上的實施方式的描述,本領域的技術人員易于理解,這里描述的示例實施方式可以通過軟件實現(xiàn),也可以通過軟件結合必要的硬件的方式來實現(xiàn)。因此,根據(jù)本公開實施方式的技術方案可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品可以存儲在一個非易失性存儲介質(可以是cd-rom,u盤,移動硬盤等)中或網(wǎng)絡上,包括若干指令以使得一臺計算設備(可以是個人計算機、服務器、終端裝置、或者網(wǎng)絡設備等)執(zhí)行根據(jù)本公開實施方式的方法。特別地,根據(jù)本公開的實施例,上文參考流程圖描述的過程可以被實現(xiàn)為計算機程序產(chǎn)品,該計算機程序產(chǎn)品包括:計算機程序,該計算機程序被處理器執(zhí)行時實現(xiàn)上述數(shù)據(jù)加密方法。在本公開的示例性實施例中,還提供了一種計算機可讀存儲介質,其上存儲有計算機程序,計算機程序被處理器執(zhí)行時可以實現(xiàn)本公開實施例提供的數(shù)據(jù)加密方法。該計算機可讀存儲介質可以是可讀信號介質或者可讀存儲介質。圖8示出本公開實施例中一種計算機可讀存儲介質示意圖,如圖8所示,該計算機可讀存儲介質800上存儲有能夠實現(xiàn)本公開上述方法的程序產(chǎn)品。在一些可能的實施方式中,本公開的各個方面還可以實現(xiàn)為一種程序產(chǎn)品的形式,其包括程序代碼,當該程序產(chǎn)品在終端設備上運行時,該程序代碼用于使該終端設備執(zhí)行本說明書上述“示例性方法”部分中描述的根據(jù)本公開各種示例性實施方式的步驟。本公開中的計算機可讀存儲介質的更具體的例子可以包括但不限于:具有一個或多個導線的電連接、便攜式計算機磁盤、硬盤、隨機訪問存儲器(ram)、只讀存儲器(rom)、可擦式可編程只讀存儲器(eprom或閃存)、光纖、便攜式緊湊磁盤只讀存儲器(cd-rom)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。在本公開中,計算機可讀存儲介質可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號,其中承載了可讀程序代碼。這種傳播的數(shù)據(jù)信號可以采用多種形式,包括但不限于電磁信號、光信號或上述的任意合適的組合。可讀信號介質還可以是可讀存儲介質以外的任何可讀介質,該可讀介質可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結合使用的程序??蛇x地,計算機可讀存儲介質上包含的程序代碼可以用任何適當?shù)慕橘|傳輸,包括但不限于無線、有線、光纜、rf等等,或者上述的任意合適的組合。在具體實施時,可以以一種或多種程序設計語言的任意組合來編寫用于執(zhí)行本公開操作的程序代碼,該程序設計語言包括面向對象的程序設計語言—諸如java、c++等,還包括常規(guī)的過程式程序設計語言—諸如“c”語言或類似的程序設計語言。程序代碼可以完全地在用戶計算設備上執(zhí)行、部分地在用戶設備上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算設備上部分在遠程計算設備上執(zhí)行、或者完全在遠程計算設備或服務器上執(zhí)行。在涉及遠程計算設備的情形中,遠程計算設備可以通過任意種類的網(wǎng)絡,包括局域網(wǎng)(lan)或廣域網(wǎng)(wan),連接到用戶計算設備,或者,可以連接到外部計算設備(例如利用因特網(wǎng)服務提供商來通過因特網(wǎng)連接)。應當注意,盡管在上文詳細描述中提及了用于動作執(zhí)行的設備的若干模塊或者單元,但是這種劃分并非強制性的。實際上,根據(jù)本公開的實施方式,上文描述的兩個或更多模塊或者單元的特征和功能可以在一個模塊或者單元中具體化。反之,上文描述的一個模塊或者單元的特征和功能可以進一步劃分為由多個模塊或者單元來具體化。此外,盡管在附圖中以特定順序描述了本公開中方法的各個步驟,但是,這并非要求或者暗示必須按照該特定順序來執(zhí)行這些步驟,或是必須執(zhí)行全部所示的步驟才能實現(xiàn)期望的結果。附加的或備選的,可以省略某些步驟,將多個步驟合并為一個步驟執(zhí)行,以及/或者將一個步驟分解為多個步驟執(zhí)行等。通過以上實施方式的描述,本領域的技術人員易于理解,這里描述的示例實施方式可以通過軟件實現(xiàn),也可以通過軟件結合必要的硬件的方式來實現(xiàn)。因此,根據(jù)本公開實施方式的技術方案可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品可以存儲在一個非易失性存儲介質(可以是cd-rom,u盤,移動硬盤等)中或網(wǎng)絡上,包括若干指令以使得一臺計算設備(可以是個人計算機、服務器、移動終端、或者網(wǎng)絡設備等)執(zhí)行根據(jù)本公開實施方式的方法。本領域技術人員在考慮說明書及實踐這里公開的發(fā)明后,將容易想到本公開的其它實施方案。本公開旨在涵蓋本公開的任何變型、用途或者適應性變化,這些變型、用途或者適應性變化遵循本公開的一般性原理并包括本公開未公開的本中的公知常識或慣用技術手段。說明書和實施例僅被視為示例性的,本公開的真正范圍由所附的權利要求指出。
背景技術:
1、隨著分布式數(shù)據(jù)庫的迅速發(fā)展,數(shù)據(jù)安全也變得愈加重要。其中,數(shù)據(jù)加密技術是一種常見的用于分布式數(shù)據(jù)庫的安全手段和功能特性。
2、在相關技術中,可以在應用端引入jdbc(java?database?connectivity?driver,java數(shù)據(jù)庫連接驅動)驅動并在該jdbc驅動里嵌入數(shù)據(jù)加解密算法,從而實現(xiàn)數(shù)據(jù)傳輸訪問的加密。或者,可以在分布式數(shù)據(jù)庫底層存儲層,借助分布式存儲自帶的數(shù)據(jù)加密功能實現(xiàn)數(shù)據(jù)加密。
3、但是,jdbc驅動對開發(fā)語言有較大限制,且在使用過程中對加密算法進行實時調整的難度較大,數(shù)據(jù)加密的靈活性較差。而另一種方法依賴底層分布式存儲,技術門檻高,并且導致無法靈活選擇與調整加密算法。
4、需要說明的是,在上述背景技術部分公開的信息僅用于加強對本公開的背景的理解,因此可以包括不構成對本領域普通技術人員已知的現(xiàn)有技術的信息。
技術實現(xiàn)思路
1、本公開提供一種數(shù)據(jù)加密方法、裝置、電子設備及存儲介質,至少在一定程度上克服相關技術對開發(fā)語言有較大限制,技術門檻高,無法靈活選擇與調整加密算法,數(shù)據(jù)加密的靈活性較差等的問題。
2、本公開的其他特性和優(yōu)點將通過下面的詳細描述變得顯然,或部分地通過本公開的實踐而習得。
3、根據(jù)本公開的一個方面,提供了一種數(shù)據(jù)加密方法,包括:接收應用端發(fā)送的sql(structured?query?language,結構化查詢語言)訪問請求;根據(jù)sql訪問請求確定對應的第一解析結果;向加解密功能模塊發(fā)送第一解析結果,其中加解密功能模塊用于對第一解析結果中包含的待加密的目標字段進行加密,得到第二解析結果;根據(jù)第二解析結果進行sql改寫與執(zhí)行,得到第一數(shù)據(jù)執(zhí)行結果;向應用端返回第一數(shù)據(jù)執(zhí)行結果。
4、在一些實施例中,根據(jù)第二解析結果進行sql改寫與執(zhí)行,得到第一數(shù)據(jù)執(zhí)行結果,包括:根據(jù)第二解析結果進行sql改寫,得到改寫后的sql語句;執(zhí)行改寫后的sql語句,得到第一數(shù)據(jù)執(zhí)行結果;
5、其中,本公開實施例提供的方法還包括:向各個分布式存儲節(jié)點發(fā)送改寫后的sql語句,其中任一分布式存儲節(jié)點用于執(zhí)行改寫后的sql語句,得到對應的第二數(shù)據(jù)執(zhí)行結果;
6、向應用端返回第一數(shù)據(jù)執(zhí)行結果,包括:向應用端返回目標數(shù)據(jù)執(zhí)行結果,目標數(shù)據(jù)執(zhí)行結果包含第一數(shù)據(jù)執(zhí)行結果與各個第二數(shù)據(jù)執(zhí)行結果。
7、在一些實施例中,向加解密功能模塊發(fā)送第一解析結果,包括:調用功能可插拔接口;確定功能可插拔接口是否引用了加解密功能模塊;若引用了加解密功能模塊,則通過調用功能可插拔接口向加解密功能模塊發(fā)送第一解析結果。
8、在一些實施例中,向應用端返回目標數(shù)據(jù)執(zhí)行結果,包括:確定目標數(shù)據(jù)執(zhí)行結果是否包含加密字段;若目標數(shù)據(jù)執(zhí)行結果包含加密字段,則向加解密功能模塊發(fā)送目標數(shù)據(jù)執(zhí)行結果,其中加解密功能模塊用于對目標數(shù)據(jù)執(zhí)行結果中包含的加密字段進行解密,得到解密后的目標數(shù)據(jù)執(zhí)行結果;向應用端返回解密后的目標數(shù)據(jù)執(zhí)行結果。
9、在一些實施例中,根據(jù)sql訪問請求確定對應的第一解析結果,包括:對應用端的連接合法性和/或連接權限進行驗證;若驗證通過,則對sql訪問請求進行詞法解析和/或語法解析,得到第一解析結果。
10、在一些實施例中,本公開實施例提供的方法還包括:獲取預先配置的規(guī)則配置信息,規(guī)則配置信息用于描述對目標字段進行加密的加密規(guī)則;在根據(jù)第二解析結果進行sql改寫時,將規(guī)則配置信息加入改寫后的sql語句中;其中,加解密功能模塊還用于根據(jù)規(guī)則配置信息確定目標字段和/或用于對目標字段進行加密的加密算法。
11、在一些實施例中,本公開實施例提供的方法還包括:當規(guī)則配置信息發(fā)生更新時,獲取控制臺發(fā)送的更新后的規(guī)則配置信息,其中,控制臺用于對存儲規(guī)則配置信息的規(guī)則庫進行監(jiān)控;根據(jù)更新后的規(guī)則配置信息,對預先配置的規(guī)則配置信息進行對應更新。
12、在一些實施例中,當目標數(shù)據(jù)執(zhí)行結果包含加密字段時,加解密功能模塊還用于根據(jù)規(guī)則配置信息確定用于對加密字段進行解密的解密算法。
13、根據(jù)本公開的另一個方面,還提供了一種數(shù)據(jù)加密裝置,包括:
14、請求接收模塊,用于接收應用端發(fā)送的sql訪問請求;
15、第一解析結果確定模塊,用于根據(jù)sql訪問請求確定對應的第一解析結果;
16、接口調用模塊,用于向加解密功能模塊發(fā)送第一解析結果,其中加解密功能模塊用于對第一解析結果中包含的待加密的目標字段進行加密,得到第二解析結果;
17、第一數(shù)據(jù)執(zhí)行結果確定模塊,用于根據(jù)第二解析結果進行sql改寫與執(zhí)行,得到第一數(shù)據(jù)執(zhí)行結果;
18、第一數(shù)據(jù)執(zhí)行結果返回模塊,用于向應用端返回第一數(shù)據(jù)執(zhí)行結果。
19、在一些實施例中,第一數(shù)據(jù)執(zhí)行結果確定模塊,用于根據(jù)第二解析結果進行sql改寫,得到改寫后的sql語句;執(zhí)行改寫后的sql語句,得到第一數(shù)據(jù)執(zhí)行結果;
20、其中,本公開實施例提供的數(shù)據(jù)加密裝置還包括:
21、sql語句發(fā)送模塊,用于向各個分布式存儲節(jié)點發(fā)送改寫后的sql語句,其中任一分布式存儲節(jié)點用于執(zhí)行改寫后的sql語句,得到對應的第二數(shù)據(jù)執(zhí)行結果;
22、第一數(shù)據(jù)執(zhí)行結果返回模塊,用于向應用端返回目標數(shù)據(jù)執(zhí)行結果,目標數(shù)據(jù)執(zhí)行結果包含第一數(shù)據(jù)執(zhí)行結果與各個第二數(shù)據(jù)執(zhí)行結果。
23、在一些實施例中,接口調用模塊,用于調用功能可插拔接口;確定功能可插拔接口是否引用了加解密功能模塊;若引用了加解密功能模塊,則通過調用功能可插拔接口向加解密功能模塊發(fā)送第一解析結果。
24、在一些實施例中,第一數(shù)據(jù)執(zhí)行結果返回模塊,用于確定目標數(shù)據(jù)執(zhí)行結果是否包含加密字段;若目標數(shù)據(jù)執(zhí)行結果包含加密字段,則向加解密功能模塊發(fā)送目標數(shù)據(jù)執(zhí)行結果,其中加解密功能模塊用于對目標數(shù)據(jù)執(zhí)行結果中包含的加密字段進行解密,得到解密后的目標數(shù)據(jù)執(zhí)行結果;向應用端返回解密后的目標數(shù)據(jù)執(zhí)行結果。
25、在一些實施例中,第一解析結果確定模塊,用于對應用端的連接合法性和/或連接權限進行驗證;若驗證通過,則對sql訪問請求進行詞法解析和/或語法解析,得到第一解析結果。
26、在一些實施例中,本公開實施例提供的數(shù)據(jù)加密裝置,還包括:
27、規(guī)則配置信息獲取模塊,用于獲取預先配置的規(guī)則配置信息,規(guī)則配置信息用于描述對目標字段進行加密的加密規(guī)則;在根據(jù)第二解析結果進行sql改寫時,將規(guī)則配置信息加入改寫后的sql語句中;其中,加解密功能模塊還用于根據(jù)規(guī)則配置信息確定目標字段和/或用于對目標字段進行加密的加密算法。
28、在一些實施例中,規(guī)則配置信息獲取模塊,還用于當規(guī)則配置信息發(fā)生更新時,獲取控制臺發(fā)送的更新后的規(guī)則配置信息,其中,控制臺用于對存儲規(guī)則配置信息的規(guī)則庫進行監(jiān)控;根據(jù)更新后的規(guī)則配置信息,對預先配置的規(guī)則配置信息進行對應更新。
29、在一些實施例中,當目標數(shù)據(jù)執(zhí)行結果包含加密字段時,加解密功能模塊還用于根據(jù)規(guī)則配置信息確定用于對加密字段進行解密的解密算法。
30、根據(jù)本公開的另一個方面,還提供了一種電子設備,該電子設備包括:處理器;以及存儲器,用于存儲該處理器的可執(zhí)行指令;其中,該處理器配置為經(jīng)由執(zhí)行該可執(zhí)行指令來執(zhí)行上述任意一項的數(shù)據(jù)加密方法。
31、根據(jù)本公開的另一個方面,還提供了一種計算機可讀存儲介質,其上存儲有計算機程序,該計算機程序被處理器執(zhí)行時實現(xiàn)上述任意一項的數(shù)據(jù)加密方法。
32、根據(jù)本公開的另一個方面,提供了一種計算機程序產(chǎn)品或計算機程序,該計算機程序產(chǎn)品或計算機程序包括計算機指令,該計算機指令存儲在計算機可讀存儲介質中。電子設備的處理器從計算機可讀存儲介質讀取該計算機指令,處理器執(zhí)行該計算機指令,使得該電子設備執(zhí)行本公開任一實施例中的各種可選方式中提供的數(shù)據(jù)加密方法。
33、本公開的實施例中提供的技術方案,通過在得到第一解析結果后,向加解密功能模塊發(fā)送該第一解析結果,并通過加解密功能模塊對第一解析結果中包含的待加密的目標字段進行加密,再對加密得到的第二解析結果進行sql改寫與執(zhí)行。本公開實施例可以實現(xiàn)將加密的過程植入到sql解析、改寫、執(zhí)行的主路徑中去,降低技術門檻,并通過加解密功能模塊實現(xiàn)對加密算法的靈活調整,提高數(shù)據(jù)加密的靈活性。
34、應當理解的是,以上的一般描述和后文的細節(jié)描述僅是示例性和解釋性的,并不能限制本公開。