隨著云計算、大數據的快速發展,政府越來越意識到網絡、數據安全的重要性。相應的法律法規不斷完善,這其中包括《網絡安全法》、《網絡安全等級保護》、《重要數據出境安全評估指南》、《個人信息安全規范、大數據安全標準白皮書》、《大數據服務安全能力要求》等等。作為數據安全的重要組成部分,數據存儲安全是安全的基礎之一。本文,將描述數據存儲加密的主流方案并進行對比,同時針對痛點難點問題進行說明。
1. 數據存儲加密的場景方案
要對數據進行有效的存儲安全管理,可遵循如下步驟:
步驟1:分析并確定要保護的關鍵數據
要對數據進行保護之前,首先要確定哪些數據需要保護和為什么要保護這些數據。這其本質是一個數據分級的問題。數據分級從概念上講是根據數據的敏感程度和數據遭到篡改、破壞、泄露或非法利用后對受害者的影響程度,按照一定的原則和方法進行定義。另一方面也需要關注的就是法規遵從性需求。例如《數據安全法》第二十一條就規定,”國家建立數據分類分級保護制度,根據數據在經濟社會發展中的重要程度,以及一旦遭到篡改、破壞、泄露或者非法獲取、非法利用,對國家安全、公共利益或者個人、組織合法權益造成的危害程度,對數據實行分類分級保護”。下圖就是就是按數據敏感程度做的一個劃分示例:
步驟2:選擇適合技術方案和加密算法
作為數據防護是否能夠成功實施的關鍵,企業需要在關鍵數據的安全性、保持應用系統的功能可用性,和系統可維護性方面綜合考慮,來確定適合企業需要的加密保護的技術方案。下表羅列常用加密技術及應對的安全風險。
- 磁盤加密
磁盤采用的塊級別加密技術,例如AWS的EBS,阿里云的ECS等都支持磁盤加密。這種加密最大的好處在于,它對操作系統是透明的。性能在加密后較加密前有所降低,根據上層應用的不同性能下降幅度各異。
- 文件加密
通過堆疊在其它文件系統之上(如 Ext2, Ext3, ReiserFS, JFS 等),為應用程序提供透明、動態、高效和安全的加密功能。典型的是用于加密指定的目錄。需要關注的是這種加密方式可能會產生較大的性能損失。
- 數據庫加密-TDE
透明數據加密TDE,是數據庫提供的一種加密技術,即對數據文件執行實時I/O加密和解密。數據在寫入磁盤之前進行加密,從磁盤讀入內存時進行解密。TDE不會增加數據文件的大小,開發人員無需更改任何應用程序。其對應密鑰管理也是由數據庫提供的API或組件實現,應用透明。在某些場景下磁盤或系統無法對用戶開放(如云環境)的條件下,這種方式就比較適合。
- 數據庫加密-三方加固
數據庫加密還有種方式是采用對數據庫進行三方加固的方式,即將第三方專業數據庫加密廠商的產品內置在數據庫之中,提供透明數據加密能力。所謂透明是指,用戶應用系統不需要做改造即可使用,且具有權限的用戶看到的是明文數據,完全無感。此外,還可以增強原有數據庫的安全能力,如提供三權分立、脫敏展示等。
- 應用層加密
應用層加密,可以說是一種終極方案,其可保證在數據到達數據庫之前,就已經做了數據加密,可實時保護用戶敏感數據。這里關鍵需要提供應用透明性,保證應用無需改造或僅需少量改造。這種方式完全由用戶自己控制,無需信任任何三方廠商提供的數據安全保障,得到充分的自由度和靈活性。例如可以跨多數據庫提供統一安全加密策略等。
對比幾種方式
步驟3:保護好數據的加密密鑰
為了保護好加密數據,不會被非法竊取,需要保護好數據的加密密鑰。避免第三方廠商或個人接觸到明文數據,最好做法就是將密文數據的密鑰控制在用戶自己手中。密鑰管理包含了密鑰的創建、存儲、生命期管理、保護。密鑰的安全性直接決定了加密數據的安全性。建議密鑰獨立存儲,并采用根密鑰保護,根密鑰受硬件加密卡保護,或者被KMS服務的密碼保護。所謂KMS密鑰管理,是通過用戶的口令保護主密鑰,口令正確主密鑰解密;主密鑰對密鑰文件進行保護,只有主密鑰成功解密后,密鑰文件才能使用,最后通過密鑰文件生成可用的密鑰。
步驟4:實施必要的防數據泄漏措施
雖然采取了必要的數據加密措施,但并不能徹底解決來自應用系統環境和運維環境的安全威脅,典型的如來自應用系統的SQL注入攻擊、后門程序、利用數據庫漏洞的攻擊行為、第三方運維人員的誤操作等。因此需要采用數據庫防火墻這樣的數據邊界防護技術,利用其細粒度的訪問控制、防攻擊、防批量數據下載等特性,實現有效的防數據泄漏。
步驟5:監控并審計數據的訪問行為
一方面,黑客攻擊行為千變萬化,另一方面,系統的復雜性帶來的數據正常維護和管理行為往往也是不可預期的。因此,需要對重要數據的訪問行為采取持續、及時的監控和審計,形成有效的風險報告提供給用戶發現新的風險,幫助用戶更好地進行數據保護。
步驟6:利用自動脫敏防止測試環境數據泄漏
除了生產環境的數據防護外,企業內部測試環境也是一個重要信息泄漏源,特別是需要“抽取”源端生產數據用于測試系統時;利用數據自動脫敏技術可以在有效地保護生產數據的同時,為測試環境提供可用的符合用戶預期的測試數據。
2. 數據存儲加密的若干難點
應用透明問題
在數據存儲安全的同時,如何提供如未加密前的使用體驗非常重要。這里可總結為對應用的透明性。使用者或應用系統不需要關心系統進行了哪些保護,可完全無感地使用數據。這樣的透明性主要體現在以下方面:
- SQL 語句透明:如常規的SELECT、UPDATE、INSERT、DELETE 等語句可進行操作,應用程序不用作修改即可擁有安全特性。
- 庫內計算透明:對于應用透明支持的含義還包括庫內的計算(如存儲過程和函數透明的支持等)。
- 開發接口透明:提供對應用開發接口的全面透明支持,包括:JDBC、ODBC等。
- 生態工具透明:數據庫自身及周邊生態工具仍然可以正常使用。
廠商綁定問題
如上面提到的幾種加密方式中,存儲層加密、文件層加密會存在完全依賴于底層基礎設施廠商(或云廠商)的問題,數據庫加密也要部分依賴于數據庫廠商或三方安全廠商;上述幾種方式都會存在廠商綁定風險。對比而言,應用層加密相對靈活度最大,可完全從用戶角度考慮加密問題,但這一方式必然存在較大投入,如何能做到應用無感是比較頭疼的問題。目前主流有通過數據中間層的方式解決,即在應用與數據庫之間構建訪問層,將數據加密、解密、脫敏等功能實現其中。對上面的應用提供標準化、透明的數據訪問接口,對下數據庫提供標準規范的安全策略,可不綁定具體產品。
接入方式問題
如前面談到的應用層加密,也許是個不錯的選擇。對應用來講,最好的透明使用方式是提供出標準的數據庫接口服務。當前主流是采用Proxy模式,可以讓應用完全無感地使用。但想做到無感,是需要從數據庫協議層面仿真模擬,但受限于商業數據庫協議的封閉,是存在一定局限的。雖然可以通過如JDBC/Client的方式去做,但這種方式一是無法完全無感,二是會存在更新客戶端困難等問題。
性能效率問題
數據存儲安全所涉及的數據加密、解密、脫敏等,勢必會影響到應用使用效率。雖然很多產品都號稱效率很高,但這個性能瓶頸是客觀存在的。這里首先需要的是正視效率問題,能客觀評估效率差異;此外如何能通過某些方式去擴展計算能力,部分解決效率低下問題也是一種思路。相對而言,采用存儲層、文件層方式,可在一定程度上解決此問題。
清洗遷移問題
針對數據加密,存在一個存量的問題。如果是新建項目,完全可以采用全新的數據安全策略,但對于已有項目且存在數據,是需要解決數據清洗及遷移問題。針對前者,難點在于如何實現動態清洗,在系統在線的同時,應用可同步處理新舊數據,逐步完成清洗動作。清洗后的解決還需解決數據校驗等,確保清洗是準確的。針對后者,在清洗完畢后,需要做應用層面遷移,完全切換回去;這里需解決平滑過度問題及可能出現的回退問題。針對上述難點,應用層方案,無疑是比較好可以解決此問題的。
安全計算問題
數據最終是要參與到計算中的,不能因安全需求而影響到計算。對于數據安全計算,取決于其所處的位置在何處。對于存儲層、文件層,其位于數據庫之下,作為數據計算主體的數據庫是可不感知的,但對于數據庫層和應用層是要解決這一問題。數據經過加密后,會失去其數據特征,這會影響到優化器、執行器的工作。應用層加密也是同樣的。目前存在一些密態計算技術,能在一定程度上解決這一問題。
國密算法問題
國密算法,即國家商用密碼算法。是由國家密碼管理局認定和公布的密碼算法標準及其應用規范,其中部分密碼算法已經成為國際標準。如SM系列密碼,SM代表商密,即商業密碼,是指用于商業的、不涉及國家秘密的密碼技術。之前很多的安全產品(特別是國外產品)是不支持國密算法的,這點是企業在做安全策略時需考慮的問題,特別是重監管的企業。
統一管控問題
數據散落在企業各處,提供統一、全局、細粒度的安全管控,包括復雜條件授權等是很有意義的。對于企業可采用統一的數據視角解決安全問題。目前通常的做法是基于不同數據庫自己來實現各自安全策略,對客戶不甚友好,如能統?處理,非常具有商業意義。針對這點,是需要站在單一產品之上,從數據使用生態標準角度去考慮。
數據加密風險
數據加密是存在風險的,可能存在加密后無法還原的風險。通常的做法是使用明文與密文并存方式解決。但由于明文的存在,必然會導致安全風險。目前針對這一問題沒有很好的解法,常規的做法就是并存+隔離、小步快跑的策略。
用戶意愿問題
這是一個終極問題,由于數據存儲安全需求帶來的各種問題,勢必會影響用戶對數據的使用且會存在較大的成本投入及面臨風險。因而導致用戶整體意愿不高,更多是政策層面的驅動。針對這一問題,一方面要看到數據安全已受到國家層面的關注,是必須要解決的問題;一方面通過技術上的不斷完善成熟,加速穩定落地。
作者介紹
韓鋒,51CTO社區編輯,CCIA(中國計算機協會)常務理事,前Oracle?ACE,騰訊TVP,阿里云MVP,dbaplus等多家社群創始人或專家團成員。有著豐富的一線數據庫架構、軟件研發、產品設計、團隊管理經驗。曾擔任多家公司首席DBA、數據庫架構師等職。在云、電商、金融、互聯網等行業均有涉獵,精通多種關系型數據庫,對NoSQL及大數據相關技術也有涉足,實踐經驗豐富。曾著有數據庫相關著作《SQL優化最佳實踐》、《數據庫高效優化》。