1.背景介紹
隨著移動寬帶、云計算等信息技術的發展,電子商務、電子政務等信息化應用已深入社會生活的各個方面,業務系統持續可靠運行成為信息系統運維與建設的一個重要指標,保持業務數據的可用性是必須考慮的重要方面。業界對數據庫和數據備份技術進行了廣泛研究,已有大量軟件廠商針對數據庫的備份恢復需求開發了專門的軟件產品。以oracle數據庫為例,存在各種備份恢復軟件,如Veritas公司的VeritasNetBackup、Legato公司的LegatoNetworkerModuleforOracle等。數據備份之后為實現容災備份需要建設同城或異地的容災備份中心,但許多小規模企業、初創公司或基層單位在信息化建設方面投入有限,對于短期內無法看見成效的災難恢復系統基本沒有預算,其信息系統不具備容災備份能力。云計算技術具有資源虛擬化、彈性分配和多租戶共享的特點,計算、存儲、網絡和軟件等資源可以作為服務對第三方提供,因而還具有門檻低、接入方便、能夠有效減少客戶投入的特點。采用以云計算為支撐的云存儲服務為第三方提供災難備份成為數據容災領域的一個熱點。云存儲服務需要將數據上傳到云中,物理存儲位置已脫離用戶網絡范圍,用戶無法再對數據的物理存儲層進行全面控制和管理,使得云用戶對數據的安全可控存在質疑。多項研究顯示,云存儲服務的安全性和云計算服務的安全性已成為制約云計算發展的關鍵要素之一,已經影響到用戶是否采用這項技術。2008年AmazonS3云存儲系統停機8小時,導致云服務失效并丟失部分客戶的資料;2011年4月SONY公司系統因安全問題導致用戶數據外漏。這些事件敲響了云計算與云存儲環境的安全性問題的警鐘,限制了云服務模式的推廣和應用。以第三方提供災備服務是一種新的運營模式,在處理災備數據時產生了新的安全要求。
云環境下數據存儲于用戶不完全可控的環境,采用數據加密是確保數據安全的有效方法。由于云存儲服務商的不可信,數據加/解密過程不應在云端完成而應在用戶端完成,這樣即便云端數據不幸泄露或丟失,也難以被人破解。采用云存儲服務實現數據庫實時備份需要設計一套加密備份和恢復模塊,實現數據在云端的加密存儲,實現備份數據可用性的高效檢測。
2.總體技術方案
用云存儲的數據庫實時備份系統的網絡結構如圖1所示,用戶數據庫數據通過網絡備份到云存儲服務中心,由云存儲服務中心提供的數據庫服務提供備份數據的管理。云存儲服務提供彈性的用戶存儲空間、網絡、計算等性能管理,利用云計算自身的分布式和多機冗余方式提供數據存儲的可靠性。采用云備份提高了系統資源的使用效率,降低了容災備份的建設和運維成本。
圖1 數據庫云備份的網絡結構
為解決云存儲帶來的數據安全問題,本文設計了如圖2所示的數據明文和密文環境加密方案。用戶的源數據庫為明文,云端備份數據庫為密文,通過加密備份和恢復模塊實現數據庫記錄的加密和解密,加解密密鑰由該模塊自動管理。
圖2 數據庫明密文環境
數據庫是典型的結構化數據,需結合數據特點,對加密算法、粒度以及模式進行合理選擇。對數據庫進行加密一般要求做到如下幾個方面:
1)加密有足夠的強度,確保數據庫加密后密文數據在盡量長的時間內不可破譯;
2)密文數據的存儲空間與明文數據的存儲空間相比不應明顯增大;
3)數據加解密性能要高,尤其是數據解密速度,應不能顯著影響原有應用系統性能,降低用戶體驗;
4)數據庫系統對密文數據具有靈活的用戶授權管理機制;
5)密鑰管理機制既能提供密鑰生成、存儲、分配和銷毀的安全管理,又能保證用戶能夠方便使用。
基于數據文件、基于表記錄和基于列字段的加密方式是常見的數據庫加密技術,各具特點。基于文件的數據庫加密技術采用整個數據庫文件作為加解密操作單元,用戶就算只是需要查看某一條記錄,他也必須將整個數據庫文件解密,這與數據庫權限分配管理相沖突,實際中使用較少。基于記錄的數據庫加密技術以數據庫的記錄作為加解密操作單元,可以對一個完整記錄項進行加密和解密,但無法實現對一個記錄中單個字段進行加解密。基于字段的數據庫加密技術以字段作為加解密操作單元,具有最小的加密粒度,數據加密的靈活性和適應性非常好。數據庫對每個字段可以采用不同密鑰的加密方式,這樣需要的密鑰數為字段個數和記錄個數的乘積,由于密鑰量龐大,實際中難以實現有效管理。
本文針對數據庫實時備份的需求即源端和云端的數據在記錄級必須保持實時同步,選擇采用記錄級數據加密。由于云存儲方式下又適合采用數據庫系統外部加密的方式,因此,本文采用系統外部加密的數據庫記錄級加密方案。
2.1 加密備份和恢復模塊總體結構
加密備份和恢復模塊分為以下幾個部分:1)密鑰管理部分。負責產生、存儲和定期更新密鑰。2)加解密部分。負責使用密鑰對數據記錄進行加密、完整性計算與驗證。3)備份部分。對數據庫的增量數據進行檢測或按照全量備份的策略進行所需數據的備份操作,調用加解密部分進行加密。4)恢復部分。對云備份數據庫按照恢復策略進行數據恢復,調用加解密部分進行解密。5)可用性檢驗部分。對云備份數據庫進行隨機數據記錄檢索,解密后與源端記錄進行比較,檢查備份數據的可用性。
2.2 密鑰管理功能
源數據庫管理員對數據庫記錄加密后實時備份到云端的備份加密數據庫,每個源庫使用一個數據加密密鑰(k)和初始向量(IV)。k和IV定期進行更換,更換周期與備份策略同步。為了保證k和IV的安全,在智能密碼鑰匙USB-Key中生成和存儲k和IV。USB-Key是一種經過國家密碼管理機構安全認定的專用密碼硬件,具備加密計算、隨機數生成、密鑰安全存儲、數字簽名等多種功能。每個USB-Key自主生成一對RSA密鑰為主密鑰,主密鑰用于加密k和IV。利用USBKey的隨機數生成功能,截取兩端256位隨機數為密鑰k和初始向量IV。當前有效的k和IV存放于USB-Key的安全存儲區內,其他歷史k和IV經過RSA加密后以文件方式存放。
2.3 加密功能
加密算法是數據加密的核心,加密算法產生的密文應具備頻率平衡、隨機無重碼的特征,攻擊者難以通過對密文頻率、重碼等特征進行分析破譯密文。加密算法通常分為對稱算法和非對稱算法兩種,在對數據庫數據進行加密時,其性能要求使得對稱加密算法應用更為廣泛。序列密碼和分組密碼是兩類主要對稱算法,序列密碼在運算速度上較快,但密鑰序列不能重復,密鑰的生成和管理限制了它在實際中的使用。分組密碼是在明文分組和密文分組上進行運算,常見的加密算法有DES、3DES和AES等。分組密碼算法主要有4種模式,分別是電子密碼本(ECB)、密碼分組鏈接模式(CBC)、加密反饋(CFM)和輸出反饋模式(OFM)。數據庫中的記錄具有相同結構,就有可能存在大量相同內容。例如,人口屬性中有性別和籍貫,大量記錄就會導致相同的性別、相同的籍貫。
加密后的數據記錄應該為不同密文,否則相同密文信息容易泄露明文信息,會有助于針對密鑰的攻擊,因此算法設計時應該避免記錄內字段特性的信息隱藏。此外還要選擇合適的加密數據封裝方式和合適的數據加密方法。本方案以數據記錄為加密單元,采用AES-OFM加密模式。
完整性校驗主要分為帶認證和不帶認證兩種。云端數據庫插入數據記錄時需要對數據記錄的完整性進行檢驗,本方案采用哈希算法實現。常見的哈希算法有MD5和SHA-1等。數據加密后的完整性需要通過檢驗字段來校驗,并選擇性能高的算法來實現,本方案采用MD5算法。加密數據記錄的封裝方式為記錄主鍵不加密,后續數據全部加密。加密后的數據記錄由3部分構成:記錄主鍵、加密數據記錄和完整性校驗數據。加密算法采用AES-OFM,加密的范圍是主鍵之外的數據記錄的所有值。完整性校驗采用MD5,完整性校驗范圍為主鍵和加密數據記錄。
2.4 備份和恢復功能
數據備份有全量備份和增量兩種方式。全量備份方式是某時刻下通過導出工具對全庫進行備份快照,備份工具對數據庫備份快照進行全庫、表和記錄級的掃描,加密并傳輸到云端,檢驗數據的完整性后增加到云端數據庫中。
增量備份過程與全量備份過程相似,只是增量備份的數據記錄的處理觸發是通過監視數據庫的數據變動日志來實現。當數據庫對記錄進行增、刪、改等操作時,每個操作的命令和參數被記錄,并觸發一次備份模塊的增量備份操作,操作命令和參數通過加密處理轉變為對云端備份數據庫的一次遠端操作,保持了源端和云端數據操作的一致性。
數據的恢復過程是備份的逆過程即數據從云端經過解密后恢復到源端。
2.5 可用性檢驗功能
備份數據的可用性是指備份在云端的數據是否與源端數據保持一致,若保持一致,則認為備份數據是可用的。在數據備份過程中,數據加密后存儲在云端,由于對云端服務的可靠性缺少相關評價標準,因而需要設計一種方案能夠檢驗數據的有效性。對云端數據記錄進行遍歷,并逐一和源端數據對比檢查的方案代價高昂,需要占用源端資源、網絡資源和云端資源。可以通過定期隨機抽取數據記錄的方式代替全檢,若出現不一致的數據記錄,則縮短定期檢查的時間間隔;若長期抽檢記錄都能保持一致,則可以擴大定期檢查的時間間隔。一個具體的記錄可以通過三元素(數據文件位置、表位置、記錄位置)來明確。方案具體描述如下:
1)確認抽檢時間間隔為T,并記錄累計相符記錄數為n,當時間間隔達到T時,開始一次新的抽查。
2)隨機生成抽檢記錄的位置。假設云中備份庫文件總數為sum1,指定庫文件的數據表總數為sum2,指定表的記錄總數為sum3。生成3個隨機數r1,r2,r3,r1對sum1求模得f_no,r2對sum2求模得t_no,r3對sum3求模得r_no。得到的(f_no,t_no,r_no)標記了一條隨機產生的抽檢記錄的位置。
3)在云端獲得(f_no,t_no,r_no)位置的記錄值,返回記錄主鍵和加密數據記錄。通過解密模塊解密得到記錄主鍵和數據記錄(key_cloud,rec_cloud)。
4)在源端獲得(f_no,t_no,r_no)位置的記錄值(key,rec)。
5)比對云端(key_cloud,rec_cloud)和源端(key,rec)。若兩者一致,則n增加1,且判斷n是否大過一個門限,若大過門限,則將T增大一倍。若兩者不一致,則n清0,并且將T縮小一半。完成一次抽檢。
3.結束語
中小企業存在對信息系統容災備份的迫切需求,但苦于成本效益因素的影響,此需求無法得到廣泛的滿足。云存儲的出現降低了容災中心的成本,但安全性是首先需要解決的問題。本文提出的數據庫記錄級加密實時備份方案能夠將數據庫記錄加密后存儲到云端,并且由于密鑰由源端用戶自主管理,云端無法知曉和破解,確保了數據的安全性。同時對云端備份數據的可用性提供了一種低成本的隨機數據可用性檢驗方法,為云端備份數據的可用性提供了保障。本文提出的是一種節約成本的云容災備份實現方案,可廣泛在中小企業中推廣使用。
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://www.guhuozai8.cn/
本文標題:基于云存儲的數據庫安全備份系統
本文網址:http://www.guhuozai8.cn/html/consultation/10839512912.html