呂永國,張永棠
(廣東東軟學院計算機學院,廣東 佛山 528225)
數(shù)據(jù)庫在生產(chǎn)和生活中得到了廣泛的應用,但是數(shù)據(jù)池面臨著嚴重的安全威脅。目前,由于計算機網(wǎng)絡的發(fā)展,技術漏洞等因素,數(shù)據(jù)庫經(jīng)常受到攻擊。
隨著數(shù)據(jù)和數(shù)據(jù)庫功能的日益復雜,攻擊者攻擊方式的改變和技術的進步,傳統(tǒng)的攻擊方法已經(jīng)不能滿足實際需要。機器學習(ML)可以將順序掃描轉化為計算模型,將 DBA(數(shù)據(jù)庫管理員)經(jīng)驗轉化為預測模型,使入侵檢測更加智能化和動態(tài)化,以適應快速的工作量變化[1-4]?,F(xiàn)在計算能力可以滿足機器學習的需要。因此,將機器學習應用于數(shù)據(jù)庫安全威脅響應的文章越來越多,但很少有人對這些應對方法進行梳理,這反映了機器學習在處理某些威脅類型方面的優(yōu)勢。
主流數(shù)據(jù)庫一般采用訪問控制、信息流控制、密碼控制和推理控制等方法來保障數(shù)據(jù)庫安全性。訪問控制機制能確保用戶只有在授權的情況下,才能訪問數(shù)據(jù)庫資源。制定正確的信息流策略,對信息的收集、存儲、傳輸和處理采用不同的安全等級,確保受保護的數(shù)據(jù)和不受保護的數(shù)據(jù)不相互干擾,能有效減低重要數(shù)據(jù)信息泄露或有缺陷的訪問控制風險。數(shù)據(jù)庫加密技術是另外一種常用的主動防御機制,基于對關鍵信息存儲的加密,加強應用訪問的安全性,可以有效防止突破防御界限的外部黑客攻擊或者內部高權限用戶的信息泄密,從根本上實現(xiàn)數(shù)據(jù)高度安全。運用數(shù)據(jù)庫推理控制策略,分析用戶行為,重要系統(tǒng)命令運行和系統(tǒng)資源異常等情況,再依據(jù)相關的監(jiān)視信息,就能有效對異常情況進行及時的處理防范。
本文對數(shù)據(jù)庫安全的研究進行了梳理,找出了與數(shù)據(jù)庫安全密切相關的因素:數(shù)據(jù)、角色、防御系統(tǒng)、外部因素。因此,我們劃分了四個主要的威脅來源:數(shù)據(jù)保護無效、用戶異常、防御系統(tǒng)脆弱和外部攻擊。數(shù)據(jù)可進一步分為三類:數(shù)據(jù)篡改、數(shù)據(jù)暴露、監(jiān)測或收集的數(shù)據(jù)。用戶異常被細分為:非法行為、未經(jīng)授權的訪問、弱安全性。
數(shù)據(jù)庫系統(tǒng)在正常的運行當中,可能會遭受軟硬件攻擊、組織管理體系漏洞和自然災害等各種因素的影響,造成數(shù)據(jù)庫數(shù)據(jù)損失或崩潰,影響數(shù)據(jù)庫提供正常服務。數(shù)據(jù)庫系統(tǒng)提供數(shù)據(jù)給應用程序,它出問題會影響整個計算機系統(tǒng)提供服務的可靠性和安全性,因此保證數(shù)據(jù)庫安全非常重要。隨著科技的不斷進步,新攻擊手段和方法持續(xù)增加,數(shù)據(jù)庫安全性受到的挑戰(zhàn)也愈嚴峻。本文將重點從數(shù)據(jù)庫的安全屬性及主要安全技術進行重點分析,探索實現(xiàn)數(shù)據(jù)庫系統(tǒng)可靠安全性的策略。
數(shù)據(jù)庫主要安全風險如圖1所示。
圖1 數(shù)據(jù)庫主要安全風險Fig.1 main database security risks
一般而言,數(shù)據(jù)庫系統(tǒng)都提供對用戶賬號的權限控制。這些權限控制可以很好地限制用戶訪問權限以及數(shù)據(jù)庫操作。部分數(shù)據(jù)庫甚至還提供專門的用戶資源控制文件,以限制用戶對數(shù)據(jù)庫資源的開銷。例如Oracle數(shù)據(jù)庫允許用戶建立自己獨特的概要文件,用于控制每個用戶可以使用的資源數(shù)量,包括連接的會話數(shù)量以及CPU使用時間等[5]。
但是在實際情況中,經(jīng)常會發(fā)生合法特權濫用問題。這種情況發(fā)生,往往是企事業(yè)單位對數(shù)據(jù)庫用戶職責梳理不到位。對部門、崗位角色和人員的分工、權利和職責劃分不清晰明確,導致在數(shù)據(jù)庫用戶的角色和權限劃分混亂。此情形下,用戶使用自己擁有的訪問權限,除了訪問本身業(yè)務范圍數(shù)據(jù),也能訪問超越其業(yè)務范圍的資源數(shù)據(jù),導致數(shù)據(jù)濫用。舉一個普通企業(yè)信息管理系統(tǒng)為例,假設普通的數(shù)據(jù)庫管理員,可以訪問數(shù)據(jù)庫所有記錄,擁有修改銷售和倉庫的數(shù)據(jù)記錄權限。這樣的特權,會導致銷售或倉庫數(shù)據(jù)被誤修改的風險。因此,不用用戶擁有不一樣的用戶權限,去執(zhí)行本身的任務。授權超出業(yè)務范圍的權限,會給數(shù)據(jù)庫帶來數(shù)據(jù)安全危險。合法的特權濫用會帶來另一個問題,是會間接引誘數(shù)據(jù)庫用戶進行非法不道德活動,導致客戶敏感信息泄露。比如前段時間,國內部分酒店由于內部權限管理不到位,導致企業(yè)內部員工把過億條酒店客戶個人隱私數(shù)據(jù)放到網(wǎng)上非法銷售。這些事件嚴重侵犯了客戶權益,受影響酒店遭受巨大的經(jīng)濟損失和聲譽下降。
其次是數(shù)據(jù)庫特權提升的安全問題。由于數(shù)據(jù)庫使用的時間較長,在運行的過程中,會出現(xiàn)部分用戶由于崗位業(yè)務變更,或者職責的臨時特殊要求,需要對這些用戶進行業(yè)務權限的配置更改,或者對業(yè)務數(shù)據(jù)資源訪問操作行為的變動。這種變化,會對初始規(guī)劃的數(shù)據(jù)庫用戶角色權限進行變更。這些后期的權限改變,如果沒有很好的權限管理機制,缺乏有效的安全審計,很容易產(chǎn)生特殊身份濫用,甚至冒用的情形。粗放式的特權提升,例如輕易授予普通用戶管理員權限。會有權限過渡暴露的漏洞。這些漏洞一旦被攻擊者利用,就會篡改權限。擁有特殊權限的惡意用戶,可以對敏感信息進行肆意攻擊。甚至利用漏洞,虛構賬戶,轉移客戶資金等操作,給數(shù)據(jù)庫使用企業(yè)造成重大損失。
數(shù)據(jù)庫系統(tǒng)的運行,需要有計算機操作系統(tǒng)的支持,主流操作系統(tǒng)有Windows、Linux、Unix和MacOS等。 底層的操作系統(tǒng)有各種漏洞,如DoS、權限管理不當、遠程代碼執(zhí)行和憑證保護不充分等[6]。其次是數(shù)據(jù)庫本身系統(tǒng)的漏洞,如數(shù)據(jù)信道漏洞等。這些漏洞,會導致數(shù)據(jù)庫數(shù)據(jù)丟失或者損壞,嚴重會導致拒絕提供服務的情況。由于各類操作系統(tǒng)使用廣泛,用戶數(shù)據(jù)量基數(shù)大,因此出現(xiàn)相關的漏洞,會引起相當大的損失和危害。
以最常用的Linux和Windows操作系統(tǒng)為例,Linux是廣受歡迎免費使用的操作系統(tǒng),安裝在全球眾多的企業(yè)、組織的服務器以及個人電腦上,但是它的安全漏洞不少。以2020年為例,其主要的漏洞原因是內核技術開發(fā)人員失誤,例如邏輯和類型轉換錯誤,導致其內核經(jīng)常會出現(xiàn)邏輯實現(xiàn)不正確,類型轉換溢出等問題[7]。在此類問題上,Linux藍牙模塊和eBPF模塊漏洞較嚴重。這兩個模塊可以實施本地提權和遠程代碼執(zhí)行,利用寄存器范圍錯誤,繞過檢查,出現(xiàn)非常規(guī)的越界讀寫。由于上述模塊在內核運行,漏洞技術難度低,常被黑客利用,且成功率高。Windows操作系統(tǒng)比較復雜,涵蓋系統(tǒng)組件、驅動程序、應用程序等,每年都有大量的系統(tǒng)漏洞,微軟公司為了應付眾多的漏洞,每隔一段時間,就會發(fā)布系統(tǒng)補丁以供用戶升級。微軟持續(xù)的補丁升級,并沒有有效抑制漏洞的數(shù)量和危險性。以2020年為例,Windows系統(tǒng)的高危險漏洞主要是協(xié)議漏洞,該漏洞導致各種畸形的數(shù)據(jù)包未能正確被解析,進入到錯誤的流程處理或者直接繞過處理。該漏洞容易被攻擊者利用遠程代碼執(zhí)行,變成極具危害和傳播性的蠕蟲攻擊。
對數(shù)據(jù)庫系統(tǒng)本身漏洞的攻擊,是黑客慣用手段,例如SQL注入攻擊。入侵者將未經(jīng)授權的語句添加到存儲過程或者 Web應用程序的參數(shù)中,然后這些額外語句被傳入數(shù)據(jù)庫中并執(zhí)行。如果沒有對應防御措施,入侵者使用這種技術,就可以輕易訪問整個數(shù)據(jù)庫的數(shù)據(jù)。SQL注入是正常的Web端口訪問,表面上和其他正常的頁面訪問一致,故服務器的防火墻不會識別并抵御此類攻擊。如果系統(tǒng)管理員工作不嚴謹?shù)轿?,沒有時常查看日志的習慣,有可能不知曉數(shù)據(jù)庫系統(tǒng)被長期攻擊,數(shù)據(jù)已經(jīng)產(chǎn)生嚴重泄露的情形。
很多主流數(shù)據(jù)庫,提供審計功能,用于監(jiān)控所有用戶對數(shù)據(jù)庫的各項操作。數(shù)據(jù)庫會將監(jiān)控的相關記錄放在特定的文件中。數(shù)據(jù)庫管理員可以根據(jù)相關查閱,跟蹤記錄進行審核,用于調查數(shù)據(jù)庫可疑的異?;顒樱绶钦h除表的操作或者連接數(shù)據(jù)庫異常等。如果數(shù)據(jù)庫審計策略缺陷,不能夠自動記錄必要的數(shù)據(jù)庫異?;蛘呙舾惺聞眨瑢υ谟玫臄?shù)據(jù)庫構成嚴重風險。審計機制是數(shù)據(jù)庫防御機制的重要一環(huán)。如果黑客能夠突破數(shù)據(jù)庫其他的防御機制,成功攻擊數(shù)據(jù)庫。事后可跟蹤審核記錄,識別沖突,再確定特定用戶和沖突的關聯(lián),以修復系統(tǒng)[8]。
數(shù)據(jù)庫軟件提供的審計功能本身存在不少弱點或者限制,使得審核功能失效。首先,數(shù)據(jù)庫審計功能有缺陷,當啟用審計機制,會消耗計算機資源,如CPU和硬盤,從而導致數(shù)據(jù)庫服務性能下降。這種情形會導致不少數(shù)據(jù)庫管理員減少或者不使用該功能。另一個問題是本身的審計記錄細化度不夠,記錄信息不詳盡,不足以支持攻擊檢測、分析與修復。例如不少審計機制沒有記錄數(shù)據(jù)庫客戶端的應用程序,IP地址等關鍵信息。這就不能提供充足的信息給后期的審核分析。其次,擁有數(shù)據(jù)庫管理員權限的用戶,進行惡意操作的時候,可以直接先關閉審計功能,使得事后的推理追責審核功能失效。還有,對于多種數(shù)據(jù)庫混合的綜合平臺,審計流程存在不一致問題。常用的數(shù)據(jù)庫,Oracle、SQL Server和DB2等,它們的日志各不相同,因此無法在數(shù)據(jù)庫使用組織中,綜合各個數(shù)據(jù)庫,執(zhí)行統(tǒng)一的審計流程[9]。
身份驗證是數(shù)據(jù)庫安全防范的第一道防線。用戶登錄的身份,后續(xù)連接著訪問數(shù)據(jù)庫權限,可以明確該身份可以使用的功能及相關資源。因此攻擊身份驗證方案,獲取登錄數(shù)據(jù)庫的憑證,從而獲取合法數(shù)據(jù)庫用戶身份,成為攻擊者常用的方法。數(shù)據(jù)庫身份被不法分子獲取的原因中,弱密碼是最常見的。由于人天生的惰性或者記憶的限制,人們喜歡使用簡單,容易記憶的密碼,例如數(shù)字的連號,重復號等。部分數(shù)據(jù)庫有密碼規(guī)則的限制,比如要求使用大小寫字母加數(shù)字的方式,以減輕弱密碼的使用。但實際應用中,民眾偏愛使用簡單的密碼。這類密碼,較容易被破解,致使數(shù)據(jù)庫身份被盜用。
用戶缺乏安全意識,是密碼經(jīng)常泄露的另一種方式。不少用戶直接把登錄用戶名與密碼寫在紙條上,或者粘貼到計算機的文本文件中。這給攻擊者直接竊取用戶憑證提供便利。還有惡意者,利用電話騙術,冒充專業(yè)人員,以系統(tǒng)故障,提供維護服務等編造出來的理由,非法獲取受害人的登錄憑證。
網(wǎng)絡不法分子,常利用計算機技術非法獲取用戶憑證。比如采用自動化程序,不斷嘗試輸入不同用戶名和密碼的組合,循環(huán)登錄,直到獲取正確的登錄信息。這種暴力破解的方式,有時候會利用用戶曾用密碼做參考,加快效率,以縮短破解時間[10]。部分網(wǎng)絡犯罪者采用網(wǎng)絡釣魚電子郵件的方式獲取用戶的敏感信息。他們使用各種犯罪心理技巧,引誘受害者進行交流,以索要相關數(shù)據(jù)。這種方式隱蔽可怕,很多受害人被騙以后,對信息泄露卻全然不覺。
數(shù)據(jù)庫存儲的數(shù)據(jù),是應用程序正常運行的基石,因此數(shù)據(jù)庫備份工作是正常的安全管理要求。一旦發(fā)生意外,導致數(shù)據(jù)庫數(shù)據(jù)丟失或系統(tǒng)崩潰,數(shù)據(jù)庫管理員可使用備份數(shù)據(jù)庫,迅速恢復其正常運作。但數(shù)據(jù)庫外部存儲介質,如磁帶、DVD、或移動硬盤等備份的數(shù)據(jù),如保管不善,也有暴露風險。不少公司發(fā)生備份數(shù)據(jù)暴露事件,其中一個主要原因是公司內部備份數(shù)據(jù)管理不到位,內部員工能輕易拷貝備份數(shù)據(jù),外出泄露。這種行為,會給企業(yè)帶來無法挽回的損失,如制造業(yè)企業(yè)的機密圖紙或工藝流程等敏感數(shù)據(jù)流出。其次是數(shù)據(jù)庫管理員安全意識不足,導致備份數(shù)據(jù)暴露。例如粗心的管理員錯誤將備份文件存放在網(wǎng)站目錄下,外部的黑客就可以訪問Web路徑,技術破解文件名等方式,下載該備份數(shù)據(jù)文件,從而導致泄露事件。
數(shù)據(jù)庫的使用過程中,面臨各種風險等級不一的威脅。制定一個可靠的安全策略,并嚴格執(zhí)行,能有效防范內外部人員對數(shù)據(jù)庫惡意攻擊,減輕所受威脅傷害。如何根據(jù)數(shù)據(jù)庫面臨不同攻擊手段,采用不同的技術及標準,制定有效的數(shù)據(jù)安全機制,保護數(shù)據(jù)庫信息安全,以下將分為四點,給以重點闡述。
如果數(shù)據(jù)庫用戶擁有超過其職能范圍的權限,就容易引起濫用權限的問題。這種問題的根源來自數(shù)據(jù)庫管理員在權限初始規(guī)劃的時候,沒有對數(shù)據(jù)庫全體用戶權限業(yè)務和職能范圍梳理到位,簡單給用戶或者其角色賦予更高的訪問權限。解決該問題的方案是采用顆粒度小,細化的訪問控制機制。根據(jù)不同用戶,要求賦予其的權限不僅限定到最低要求的數(shù)據(jù)庫DML(數(shù)據(jù)庫操作語言)操作,而且數(shù)據(jù)控制到表的級別以下,細化到表里的字段。這種充分細化的控制手段,就可以有效避免超出職權范圍的惡意操作帶來的傷害。例如上文提及到超權限訪問的數(shù)據(jù)問題就不會發(fā)生,用戶查詢相關數(shù)據(jù),想惡意修改字段數(shù)據(jù)的時候,系統(tǒng)就警報該用戶只有查詢權限,沒有修改該字段信息的權限。
用戶私自使用合法的數(shù)據(jù)庫權限,用于未經(jīng)正規(guī)授權的活動,也會給數(shù)據(jù)庫安全帶來隱患。例如部分企業(yè)組織,由于數(shù)據(jù)庫存放的敏感數(shù)據(jù),會對查詢記錄數(shù)進行限制,并不允許復制相關數(shù)據(jù)。如果企業(yè)內部,存在惡意盜取數(shù)據(jù)的工作人員,就可以采用使用外部的客戶端登錄系統(tǒng),規(guī)避監(jiān)控獲取信息數(shù)據(jù),以供售賣獲利。這些信息,也可能被臨時存放在非法計算機設備。這些設備一旦受到黑客攻擊,就有可能發(fā)生泄露。對此類風險,應建立數(shù)據(jù)庫基于上下文的訪問控制,通過存儲用戶客戶端應用程序、訪問時間、IP地址和端口數(shù)據(jù)等方式,匹配連接上下文。假若匹配信息不服,系統(tǒng)將會發(fā)出異常警報。
隨著Windows與Linux等專業(yè)平臺功能愈加強大,復雜,覆蓋面越廣,系統(tǒng)平臺漏洞呈現(xiàn)出數(shù)據(jù)量逐年遞增,高風險性同比增長的態(tài)勢。這些系統(tǒng)所存在的缺陷,容易被黑客采用技術手段利用,攻擊以獲取電腦的控制權,非法獲取其中的重要信息資料。防范此類風險,首先要加強組織的內部計算機服務器的應用軟件安裝和訪問網(wǎng)站的控制。組織內部的機器,不能隨意安裝不明的應用程序,不要使用企業(yè)計算機隨意瀏覽與業(yè)務無關的網(wǎng)站,以減少黑客通過網(wǎng)絡植入木馬和病毒的方式,攻擊企業(yè)服務器的風險。其次是系統(tǒng)管理員應該及時更新軟件程序。軟件系統(tǒng)供應商不定期提供的補丁程序,能有效修補已經(jīng)發(fā)現(xiàn)的各種平臺漏洞,增強系統(tǒng)防御攻擊的能力。
數(shù)據(jù)庫系統(tǒng)提供的審計功能,可以很好監(jiān)控用戶數(shù)據(jù)庫操作及其使用資源情況。但是由于系統(tǒng)的審計功能自身的缺陷,有時候會導致審計功能失效。要避免此類情況,企業(yè)組織要組建高性能的網(wǎng)絡審計設備,審計的流程,交由專門的審計設備執(zhí)行。數(shù)據(jù)庫運行時,全程啟動審計功能。這樣就能有效避免審計功能消耗系統(tǒng)資源,引起數(shù)據(jù)庫服務器性能下降的問題。對于有權限的管理員,私下關閉數(shù)據(jù)庫審計功能,而導致審查跟蹤失效的問題,可以采用審計責任與數(shù)據(jù)庫管理權限相互獨立的策略。網(wǎng)絡審計設備的運行情況,不與數(shù)據(jù)庫管理員權限掛鉤。這種情況下,數(shù)據(jù)庫用戶沒有權限去關閉審計功能,就避免了數(shù)據(jù)庫用戶對審計功能的攻擊。對于上文提及的審計記錄不足的問題,可以采用細化數(shù)據(jù)庫事務的跟蹤信息。在對應的日志里面,添加詳細的跟蹤項目信息,如源應用程序名稱、源操作系統(tǒng)、源IP地址及其他關鍵數(shù)據(jù)。這些詳細的數(shù)據(jù),就可以供后期的事務分析和修復使用。
除了在技術手段上完善審核策略,還有在組織機構內部建立健全的問責機制,規(guī)范約束內部的操作以及失職行為的追究制度。從規(guī)章制度上面約束相關人員的誤操作或惡意操作,杜絕人為的技術性和非技術性錯誤操作行為。為企業(yè)組織提供規(guī)范行為的依據(jù),就能有效提高數(shù)據(jù)庫系統(tǒng)審計功能,從而提升其抵抗惡意攻擊的能力。
加密是最常用的安全保密方法,運用特殊的算法改變原有的信息數(shù)據(jù)。加密后的信息,傳送到目的地后,再采用技術手段還原到原始的信息。在信息傳遞的過程中非法獲取其中加密數(shù)據(jù),如果不能正確的解密,也無法獲知其中的內容。為此,加密技術被廣泛運用在數(shù)據(jù)庫上,以保護其安全?,F(xiàn)今的加密算法很多,其中三種數(shù)據(jù)庫比較常用:對稱加密、非對稱加密和散列加密[11]。
對稱加密要求發(fā)送方和接受方都有相同的密鑰。發(fā)送方用密鑰加密發(fā)送信息,接受方使用同樣的密鑰解密。這種加密方式加密和解密的速度較快,但需要雙方都確保密鑰的安全。對稱加密方式適用于入侵風險較低的封閉系統(tǒng)。非對稱加密在信息傳輸過程中,使用兩個不同的密鑰,公鑰和私鑰[12]。公鑰用于加密在傳送前加密的信息,為發(fā)送者擁有。私鑰用于接收信息的解密,為接收者擁有。這種加密方法,在安全性方面比對稱加密高,但是加密和解密的速度比前者低。散列加密,就是將數(shù)據(jù)信息通過哈希算法,生成一個固定長度的哈希值。散列加密的數(shù)據(jù),難以被破譯或者還原。上述的加密方法,經(jīng)常使用在數(shù)據(jù)庫敏感信息的保護中,比如用戶賬號及密碼。
數(shù)據(jù)庫在加密的顆粒度上,總共分為5個級別:數(shù)據(jù)庫級、表級、記錄級、字段級和數(shù)據(jù)項級。數(shù)據(jù)庫級別的加密就是將整個數(shù)據(jù)庫加密,讀取數(shù)據(jù)庫所在的物理塊號進行加密。這種加密方式簡單,但是效率比較低,對于數(shù)據(jù)庫來說,每次常規(guī)的操作,例如讀取數(shù)據(jù),都要對數(shù)據(jù)庫進行解密操作。表級加密類似數(shù)據(jù)庫級別加密,就是對特定的表進行加密處理。相對之前加密方式,在靈活性和系統(tǒng)性能方面有提高,但是也可能加密非必要的額外信息,消耗系統(tǒng)資源。比如加密用戶信息表中,可以加密名字,身份證號,聯(lián)系方式等信息,但表中其他信息,如性別,年齡等信息則沒有必要。記錄級別是加密數(shù)據(jù)庫表中的一條完整的信息,加密后各個字段都是密文。該加密方式顆粒度更小,靈活度更好,但是缺點是記錄數(shù)比較大時,每條記錄都對應一個密鑰,解密的過程也是逐條解密,效率比較低。字段級加密是加密數(shù)據(jù)庫表里面的某個字段。這種方式適合數(shù)據(jù)庫對特定字段的高頻率查詢,查詢效率高,系統(tǒng)開銷也比較小。
數(shù)據(jù)庫加密技術,歷經(jīng)多個階段,一直在持續(xù)改進發(fā)展中。從加密的層次實現(xiàn)來看,如今主要有4個層次的5種加密方式(如圖2所示):應用層的應用系統(tǒng)和專用數(shù)據(jù)庫中間件、數(shù)據(jù)庫系統(tǒng)層、操作系統(tǒng)層和存儲設備層。這幾個層次的加密方式都不相同,各有優(yōu)劣[13]。
圖2 數(shù)據(jù)庫加密層Fig.2 database encryption layer
應用系統(tǒng)加密主要是應用程序對敏感數(shù)據(jù)進行加密后,將加密的數(shù)據(jù)存入數(shù)據(jù)庫。數(shù)據(jù)檢索的時候,先從數(shù)據(jù)庫讀出數(shù)據(jù)到客戶端進行解密。這種方式的優(yōu)點是加密實現(xiàn)靈活,可以根據(jù)業(yè)務選擇不同的加密函數(shù)與密鑰等。劣勢也比較明顯,因為存入數(shù)據(jù)庫是密文信息,數(shù)據(jù)庫系統(tǒng)原有對數(shù)據(jù)高效組織和檢索等功能嚴重受損。應用系統(tǒng)因此額外承擔數(shù)據(jù)庫原有工作,如索引、查詢分析、執(zhí)行優(yōu)化等,這極大增加應用程序的負擔和程序的復雜度。
專用數(shù)據(jù)庫中間件(前置代理加密技術)[14]在應用程序和數(shù)據(jù)庫之間加一道安全代理服務。訪問數(shù)據(jù)庫服務前,先經(jīng)過該代理服務,對數(shù)據(jù)庫進行加解密工作,然后再通過數(shù)據(jù)庫接口實現(xiàn)數(shù)據(jù)庫存儲。相比之前的技術,前置加密技術減輕客戶端應用程序的壓力,應用層更專注業(yè)務邏輯及其實現(xiàn)。但和前者應用系統(tǒng)加密一樣,數(shù)據(jù)在存儲到數(shù)據(jù)庫前,已經(jīng)是密文的形式,數(shù)據(jù)庫因相同的原因,丟失本身的系統(tǒng)優(yōu)勢。
數(shù)據(jù)庫系統(tǒng)層(后置代理加密技術)是在數(shù)據(jù)庫內部對數(shù)據(jù)進行加密,應用系統(tǒng)對數(shù)據(jù)的處理過程完全透明[15]。用戶不需要知道數(shù)據(jù)庫相關加密操作,就如正常的執(zhí)行SQL語句一樣[16]。應用系統(tǒng)程序不需要做任何更改就能獲得數(shù)據(jù)加密功能。后置加密技術是通過視圖及觸發(fā)器加外部調用實現(xiàn)加解密工作。這種透明加密的技術比較成熟,被應用在大型的商業(yè)數(shù)據(jù)庫中,如 Oracle和SQL Server[17]。但技術也有缺陷,假如業(yè)務要求觸發(fā)器運行機制對每條數(shù)據(jù)的多列讀寫都要外部調用,或者查詢結果集中涉及加密數(shù)量比較大的時候,會導致數(shù)據(jù)庫性能下降。
操作系統(tǒng)層(文件系統(tǒng)加密技術)是通過對操作系統(tǒng)中數(shù)據(jù)庫文件進行加密的方式實現(xiàn),與數(shù)據(jù)庫系統(tǒng)類型無關[18]。因為數(shù)據(jù)庫系統(tǒng)皆運行在計算機操作系統(tǒng)上,數(shù)據(jù)庫就是存儲在操作系統(tǒng)上面的一系列文件。對這些文件加密,也就實現(xiàn)對數(shù)據(jù)庫的加密。對文件加密的方式有一個嚴重缺陷,就是每次對數(shù)據(jù)庫的DML常規(guī)操作[19],都需要對整個數(shù)據(jù)庫文件進行加解密,系統(tǒng)開銷大,效率低。
存儲設備層加密(磁盤加密技術)是通過存儲設備物理結構實現(xiàn)加密,能發(fā)揮設備硬件能力優(yōu)勢,同時對應用層和數(shù)據(jù)庫本身沒有關聯(lián)[20]。磁盤加密技術與文件加密技術類似,不具備數(shù)據(jù)庫權限控制。但由于磁盤數(shù)據(jù)庫加密相關技術還沒有成熟,現(xiàn)今沒有進入大規(guī)模實用化和產(chǎn)業(yè)化。
綜上所述,數(shù)據(jù)庫的加密技術,能夠顯著提高數(shù)據(jù)庫安全性,有效減輕上文提及的身份驗證缺陷和備份數(shù)據(jù)暴露的風險。數(shù)據(jù)庫惡意攻擊者,通過非法手段獲取的加密數(shù)據(jù),因不是明文方式,所以不清楚里面的具體內容而無法利用。
數(shù)據(jù)信息已經(jīng)成為企事業(yè)組織的重要財產(chǎn)。如何保護組織的敏感電子數(shù)據(jù)信息不被惡意攻擊而導致?lián)p失是一個巨大挑戰(zhàn)。本文重點分析了影響數(shù)據(jù)庫安全運行的幾個主要因素,并詳細闡述數(shù)據(jù)庫相關的安全控制策略,以降低受攻擊的威脅,加強對數(shù)據(jù)的保護。隨著數(shù)據(jù)庫技術持續(xù)進步,版本不斷更新,對數(shù)據(jù)庫攻擊手段亦發(fā)生變化。因此,應繼續(xù)研究對數(shù)據(jù)庫攻擊方式方法,提高數(shù)據(jù)庫持續(xù)的防御能力。