《云數據庫安全初探》要點:
本文介紹了云數據庫安全初探,希望對您有用。如果有疑問,可以聯系我們。
本文根據目前國內外數據庫安全的發展現狀和經驗,結合亞馬遜AWS[1]、阿里云、騰訊云、UCloud、華為云等國內外云服務廠商,和IBM、微軟等IT巨頭的云服務情況,從云數據庫安全角度,介紹了云環境下數據庫安全四種技術路線與安全模型架構,和云數據庫安全的關鍵技術,適合從事云安全、云計算、數據安全等相關人員和安全喜好者學習探討.
本文來自安華金和.
每個公司對私有云、公有云的定義都不一樣,但是CIO們卻在不斷重演莎翁經典對白:“公有云還是私有云,這是個問題”,政府、企業、金融、公共事業等都在建設或者規劃上云.引發這一問題的核心是:云環境的平安合規性問題,也就是云環境的法規遵從、云數據的平安如何保障、云環境風險管理.
云數據(庫)平安之技術路線
從法規遵從和企業、個人敏感信息防護的角度,相比私有云環境和傳統企業IT環境,公有云和混合云環境中的數據面臨著前所未有的,來自開放環境和云運維服務環境的平安挑戰.筆者認為抓住主要矛盾,圍繞核心敏感數據,進行最徹底有效的加密保護,比較典型的敏感數據包括身份證號、姓名、住址、銀行卡、信用卡號、社會保險號等等,以及企業的核心資產數據.在此觀點下,筆者提出以加密保護為基礎的技術路線:
以敏感數據加密為基礎
以平安可靠、體系完善的密鑰管理系統為核心
以三權分立、敏感數據拜訪控制為主要手段
輔助數據庫防火墻、數據脫敏、審計等邊界系統,規范和監控數據的拜訪行為
云數據(庫)平安之模型和架構
實現以敏感數據加密為基礎的技術路線,最關鍵的是“密鑰由誰控制、在哪管理”;同時需要辦理數據加密防護和密鑰管理引起的對系統運行效率,系統部署和改造的代價,自動化運維的影響等一系列問題.對此,亞馬遜AWS的辦理方案中采用多種密鑰管理模型:
模型A:加密辦法,密鑰存儲,密鑰管理全部由用戶控制,典型的是整個KMS[2](密鑰管理系統)部署在用戶的數據中心.
模型B:與模型A中的加密辦法是一樣的,區別在于密鑰的存儲是在云的KMS而不是在用戶端的數據中心.
模型C:本模型提供了完整的服務器端加密,加密辦法和密鑰的管理對于用戶是透明的.
AWS云數據平安模型
核心機制 | 平安性 | |
---|---|---|
模型A | 密鑰的存儲和管理完全掌握在用戶手上,“云”無法獲得密鑰或對用戶的數據進行加密、解密 | 平安性最好 |
模型B | KMS負責生成和存儲密鑰,負責進行加解密操作;但不負責密鑰生命期的管理,訪問控制,密鑰輪轉等 | 密鑰的平安性由云的KMS保障 |
模型C | 完全是服務器端加密,對用戶是透明的 | 數據的平安完全由云的平安性保證 |
圍繞三種平安模型,可以在多個層上實現數據加密防護—多層數據加密防護架構,具體如下:
1、 磁盤加密:采用的是Block-Level加密技術,必要云存儲卷采用Block存儲機制,例如AWS的EBS[3],阿里云的ECS[4]等.這種加密最大的好處在于,它對操作系統是透明的.
2、 文件加密:通過堆疊在其它文件系統之上(如 Ext2, Ext3, ReiserFS, JFS 等),為應用程序提供透明、動態、高效和平安的加密功能.典型的是用于加密指定的目錄.需要關注的是這種加密方式可能會產生較大的性能損失.
3、 數據庫加密:(1)以亞馬遜AWS的RDS[5]為例,典型的是使用DBMS[6]提供的數據庫透明加密,自動的對數據庫表空間數據進行加密,密鑰管理也是由DBMS提供的API或組件實現,應用透明.由于RDS沒有對外開放RDS用于存儲數據的磁盤,因此前面提到的“透明”磁盤、文件加密技術無法在RDS上使用.(2)對于用戶在云上自行部署使用的DBMS,可以使用第三方專業數據庫加密廠商提供的產品,如安華金和的數據庫保險箱DBCoffer,可提供應用透明的按列加密才能,獨立的密鑰管理、三權分立、靜態數據掩碼才能.
4、 應用層加密:在數據到達數據庫和RDS之前,甚至發送到云端之前,實時保護用戶的敏感數據;這里關鍵需要提供良好的應用透明性,保證絕大多數應用無需改造.云用戶(企業)沒有必要信任云計算提供商以保護企業的數據平安.數據平安是由企業自己控制的.
5、 密鑰管理和加解密組件:作為數據加密掩護的核心組件,KMS負責進行密鑰生成、管理和銷毀,并提供加解密能力;同時根據需要提供密鑰的生命期管理、開放的API接口.
綜上,云用戶(企業)可以根據自身的平安合規性需求,選擇適合的云數據平安模型和相應的數據平安技術(產品),對敏感數據進行加密防護.
多層云數據加密防護架構
云數據(庫)平安之關鍵技術
上文筆者提出了一套云環境下的“多層數據加密防護架構”.下面針對實現該平安防護架構與相關關鍵技術進行具體分析.需要說明的是,由于整盤加密和TDE[7]屬于云服務商和數據庫廠商的范圍,不在本文中討論.
KMS密鑰管理和加解密算法
密鑰管理包含了密鑰的創建、存儲、生命期管理、保護.密鑰的平安性直接決定了加密數據的平安性.建議密鑰獨立存儲,并采用根密鑰保護,根密鑰受硬件加密卡保護,或者被KMS服務的密碼保護.
密鑰平安體系
KMS密鑰管理通過用戶的口令掩護主密鑰,口令正確主密鑰解密;主密鑰對密鑰文件進行掩護,只有主密鑰成功解密后,密鑰文件才能使用,最后通過密鑰文件生成可用的密鑰.
加解密算法方面,除了需要的強加密算法(如AES256)和相關機構認證的硬件加密算法外,這里特別需要提出,為了實現應用的透明性,需要根據應用系統的需求提供專門的加密算法,如FPE[8],Tokenization,SSE[9]等.
FPE加密算法,是一種格式保存的加密算法,主要面向身份證、銀行卡號、信用卡號、社會保險號等具有數據特征的信息進行加密,該算法加密后的數據能夠保存原有的數據格式,從而對應用的業務邏輯不會產生任何影響,保證了應用的透明性.
Tokenization,是一種數據掩碼算法.與FPE[8]類似,通過對數據的“擾亂”,并保存數據的原有格式,達到加密的效果,同時保證應用的透明性.
FPE加密算法的效果
數據庫透明加密
數據庫透明加密是按列對數據進行加密的,針對指定的列,采納指定的加密算法和密鑰、鹽值等進行加密處理.加密后的數據以密文的形式存儲在DBMS[7]的表空間中.
只有經過授權的用戶才能看到明文數據,并且授權也是按列進行的,這種方式具備很好的靈活性和平安性.非授權用戶,將無法讀取加密列(查詢)和更改加密列的數據.
權限管理上,數據庫透明加密采用了分權的機制,實現了三權分立,有效制約了數據庫管理員(DBA)這樣的特權用戶對數據的拜訪.同時這種保護又是透明的,不會對管理員的日常工作造成不便.
最重要的是數據庫透明加密應用透明,應用系統和外圍維護工具無需改造,涵蓋SQL語句透明、存儲程序透明、開發接口透明、數據庫對象透明、管理工具透明.
數據庫透明加密防護技術
優勢:
對應用系統和數據庫管理工具透明
對數據庫帳戶細粒度控制,包含DB用戶,客戶端IP,客戶端MAC地址,應用程序或工具等
對敏感數據拜訪細粒度審計
限制:
必要針對不同的數據庫分別實現
需要實現專門的密文索引技術和透明拜訪技術,以滿足性能和應用透明性
無法適用于RDS、用戶在ECS上部署的DBMS實例
應用層透明加密
應用透明加密分為兩種實現技術:JDBC[10]/ODBC[11]加密驅動,和云訪問平安代理.其中最關鍵的是用于支撐應用透明的加密技術:FPE、Tokenization.
1、JDBC/ODBC加密驅動
應用層JDBC/ODBC加密驅動,可以通過在原有DBMS提供的JDBC/ODBC上,以Wrapper方式實現,部署時替換JDBC/ODBC加密驅動,實現對應用透明的數據加解密,實現數據在到達DBMS/RDS之前進行加密,和數據離開DBMS/RDS到達Application之后進行解密,最終保證多數應用系統無需改造;同時在JDBC/ODBC加密驅動層實現獨立的權限控制,密鑰的獲取.
對敏感數據,通過JDBC/ODBC加密驅動實現完整的敏感數據拜訪審計能力.
JDBC/ODBC加密驅動技術
優勢:
實現按字段加密,數據在到達DBMS/RDS之前就完成加密,平安性好
實現對應用的透明性,只需更換JDBC驅動即可完成
實現對數據庫帳戶細粒度控制,包含DB用戶,客戶端IP,客戶端MAC地址,應用程序或工具等
部分實現應用用戶控制,包含應用帳號、應用客戶端的IP等
限制:
對第三方數據工具(如PLSQL,TOAD等)無法實現透明,數據為密文
對服務器端程序,如存儲過程、駐留在DBMS主機的自動化腳本等,無法實現透明
必要針對不同的數據庫實現相應的JDBC/ODBC Wrapper
2、云訪問平安代理
云訪問安全安全代理(CASB),往往采用的是應用網關的方式,作為HTTP或HTTPS的反向代理服務網關,對HTTP頁面中的敏感數據進行加密和Tokenization兩種不同的保護方式.通過處理HTTP的哀求和響應,實現面向字段的數據和上傳內容的加密和解密,實現在數據發送到云端之前進行加密,密文數據離開云端到達客戶端之前進行解密.
云訪問平安代理網關典型部署在用戶數據中心側,用戶完全控制數據的加密密鑰和加解密過程.可以采用任意的inline proxy方式進行部署.
云訪問平安代理網關可以提供細致的面向應用系統用戶和組的訪問控制能力,同時提供面向應用系統用戶的細粒度訪問審計能力.
云訪問平安代理技術
優勢:
實現按字段的加密,可以在數據到達云端之前就完成加密,平安性最好
具有高平安性,能夠提供面向應用用戶的解密權限控制,有效防止DBA的高權限和SQL注入攻擊行為
最大限度滿足合規性才能
限制:
對應用系統可能無法實現真正的應用透明,必要對應用進行部分改造
對第三方數據工具(如PLSQL,TOAD等)無法實現透明,數據為密文
對服務器端程序,如存儲過程、駐留在DBMS主機的自動化腳本等,無法實現透明
文件級透明加密防護
文件級透明加密防護通過在云主機操作系統上部署專門的加解密agent,實現對專門的數據文件或卷(Volume)的加解密.對操作系統帳戶具有權限控制才能.只有專門的DBMS系統帳戶才有對文件或卷進行加解密.
文件級透明加密防護技術
優勢:
對數據庫系統(DBMS)和應用透明
同時支持布局化和非布局化文件的加密
有效控制操作系統用戶的拜訪,滿足通常的控制需求
限制:
無法提供細粒度的數據拜訪審計能力
必要針對不同的操作系統平臺提供專門的agent
無法控制數據庫帳戶對敏感數據的拜訪
數據自動脫敏
隨著云計算、彈性計算的廣泛使用,會出現兩種系統研發和測試的趨勢:
1)系統研發和測試在當地環境完成,然后部署在云端.
2)系統研發和測試也在云端進行,充分利用云端的彈性計算資源,和便利簡潔的云化部署能力.
以上無論哪種方式,都面臨將生產數據全部或部分轉移到測試和研發環境中,出于合規性和平安性需求,轉移的數據必須進行“脫敏”處理.
數據自動脫敏技術能夠對測試庫中的數據、遷移過程中的數據、導出成文件的數據進行“脫敏”處理;并能保證數據關系一致性,例如分散在分歧表中的相同身份證號數據脫敏后仍然是相同的.
數據自動脫敏技術
數據庫防火墻
數據庫防火墻,是基于數據庫協議分析與控制技術的數據庫平安防護技術.基于主動防御機制,數據庫防火墻實現了對數據庫的訪問行為控制、危險操作阻斷、可疑行為審計.是集數據庫IPS、IDS功能為一體的綜合數據庫平安防護技術.
數據庫防火墻技術
實施云數據(庫)防護的6個步調
由于云環境、企業云應用系統、核心數據的復雜性,選擇適合的云數據保護方案變得尤為重要.那么什么樣的方案是適合的?筆者認為應該涵蓋以下幾個關鍵點:(1)滿足平安需求和相關法規;(2)對各種危害來源進行有效防護;(3)可接受的部署和維護復雜性.
因此,為了保護云端的數據,需要有計劃、有步驟的實施云數據(庫)平安防護,這里結合前面的架構和關鍵技術,提出以下實施云數據(庫)防護的6個基本步驟:
步驟1:分析并確定需要掩護的關鍵數據
在對云數據進行掩護前,首先需要準確的分析哪些數據需要掩護,和為什么要掩護這些數據;評估和劃分哪些數據需要放置在云端,從而確定哪些數據是關鍵的必須掩護的數據,例如用戶身份證號碼、銀行卡或信用卡號碼、社保號碼等.另一個需要關注的就是法規遵從性需求.
步調2:選擇適合的技術方案和加密算法
作為云數據防護是否能夠成功實施的關鍵,企業需要在關鍵數據的平安性、保持云應用系統的功能可用性,和系統可維護性方面綜合考慮,來確定適合企業需要的加密保護的技術方案.下面的兩張圖表對前面提到的加密防護的關鍵技術能夠提供的防護效果,平安性和部署復雜性進行了對比,供讀者參考.
多層云數據加密防護效果分析
平安性和實施部署復雜性分析
加密辦法的選擇也很重要,這里舉個典型例子,在很多應用系統中會對銀行卡號數據進行格式校驗,如果數據不符合格式會造成應用系統無法接受“錯誤”的銀行卡號數據,因此對銀行卡號加密同時,還需要保留其格式特征,可供選擇的加密算法包括FPE和Tokenization.而姓名等數據則可以采用AES256等更通用的加密算法.
步驟3:掩護好數據的加密密鑰
為了保護密文數據不會被非法竊取,避免云服務廠商和第三方維護人員訪問到明文數據,最好的做法是將密文數據的密鑰控制在云用戶自己手中;讀者可以參考前面的圖1云數據平安模型和表1 平安模型對比.
步驟4:實施需要的防數據泄漏措施
雖然采取了必要的數據加密措施,但并不能徹底解決來自應用系統環境和云運維環境的平安威脅,典型的如來自云應用系統的SQL注入攻擊、后門程序、利用數據庫漏洞的攻擊行為、第三方運維人員的誤操作等.因此需要采用數據庫防火墻這樣的數據邊界防護技術,利用其細粒度的訪問控制、防攻擊、防批量數據下載等特性,實現有效的防數據泄漏.
步驟5:監控并審計數據的拜訪行為
一方面,黑客攻擊行為千變萬化,另一方面,系統的復雜性帶來的數據正常維護和管理行為往往也是不可預期的.因此,需要對重要數據的拜訪行為采取持續、及時的監控和審計,形成有效的風險報告提供給用戶發現新的風險,幫助用戶更好的進行數據保護.
步調6:利用自動脫敏防止測試環境數據泄漏
除了云環境的數據防護,企業內部的測試環境也是一個重要的信息泄漏源,特別是需要“抽取”云端生產數據用于測試系統時;利用數據自動脫敏技術可以在有效的掩護生產數據的同時,為測試環境提供可用的符合用戶預期的測試數據.
名詞術語解釋
[1]AWS:本文主要指亞馬遜的云計算服務
[2] KMS:Key Managerment System,是一種基于軟件或硬件加密卡技術的密鑰管理系統,實現了密鑰的生命期管理,提供豐富的加解密算法和接口
[3] EBS:Elastic Block Store,本文主要指亞馬遜的彈性塊存儲服務
[4] ECS:Elastic Compute Service,本文指阿里的云服務器服務
[5] RDS:Relational Database Service,本文主要是指阿里的云數據庫服務
[6] DBMS:Database Management System,數據庫管理系統
[7] TDE:Transparent Data Encryption,數據庫透明加密,一種由數據庫廠商提供的數據庫加密技術
[8] FPE:Format Preserving Encryption,是一種保留數據格式的加密算法,加密后的數據格式與明文數據的格式堅持一致.
[9] SSE:Searchable StrongEncryption,一種加密后數據可查詢檢索的加密算法,類似同態加密的結果
[10] JDBC:Java Data Base Connectivity,一種用于連接多種關系型數據庫的Java數據庫連接
[11]ODBC:Open Database Connectivity,開放數據庫互連,是Microsoft提出的數據庫拜訪接口標準
如果您必要了解更多內容,可以
參加QQ群:486207500
歡迎參與《云數據庫安全初探》討論,分享您的想法,維易PHP學院為您提供專業教程。