閱讀57 返回首頁    go 阿裏雲 go 技術社區[雲棲]


從七大維度談NoSQL數據庫安全風險



2fd0e76064b154e88c835c8eb89416dd9bbf8285


  • 鍵值數據庫

  • 文檔數據庫

  • 列族數據庫

  • 圖數據庫

仍以電商為例,該行業某些業務中使用的是鍵值數據庫和文檔數據庫,本文對NoSQL安全問題展開分析也將主要從這兩大類數據庫類型入手。


NoSQL安全問題綜述


NoSQL數據庫在設計之初,就是為大大提升用戶使用效率,所以並未做安全考慮。因此,NoSQL數據庫普遍存在大量安全問題。安全問題主要可以分為七大類,分別為:

  • 身份認證

  • 權限控製

  • 審計

  • 通訊加密

  • 數據加密

  • NoSql注入

  • 自身安全漏洞


大約在2013年前後,一些開源項目被企業化,企業化後企業版在一定範圍內解決了一部分NoSQL數據庫的安全問題。但大部分解決方案是以犧牲性能為代價,並不具備優良的推廣性。大部分用戶使用最多的還是社區版,該版本存在很多嚴重的安全問題。


1)無密碼的身份認證安全問題

由於NoSQL中默認沒有用開啟戶身份認證機製,所以任何用戶都可以偽裝成合法用戶來訪問數據庫,並對數據庫中的數據進行各種操作。如2016年底至2017年初興起的一股針對NoSQL數據庫的勒索行動,就是利用無身份認證登陸上NoSQL數據庫實施敲詐勒索,這隻是此安全隱患最簡單的利用方式。很多時候黑客會以NoSQL數據庫為跳板入侵NoSQL數據庫所在的服務器,甚至整個網絡環境。目前,最直接的解決方法就是給NoSQL加用戶名和密碼。


2)有密碼的身份認證安全問題

NoSQL出於性能考量,默認不設置用戶名和密碼。要解決身份認證安全問題,一般采取兩種方法。一種是使用NoSQL數據庫自身支持的簡單身份驗證。通過客戶端獲取用戶名和密碼,然後和數據庫中對應的記錄進行比對,吻合則批準登錄。該方法在抗暴力破解和網絡竊取上非常差,一旦用戶數量過多會引起性能的嚴重下降,所以部分NoSQL數據庫不支持多用戶登錄。


另一種解決方案是以Hbase為代表,引入成熟的身份認證機製Kerberos來完成身份認證工作。該方式較適合以計算為主業的NoSQL數據庫,對於要求執行效率和以大量查詢為主要的業務並不適合。隨著用戶數量增長,並發量不斷提高,KCD(密鑰奮發中心)很快會成為整個業務流程的瓶頸。


NoSQL數據庫不僅缺乏身份驗證,更缺乏對每個數據庫用戶的權限控製。很多NoSQL數據庫,把自己當作“應用數據庫”去設計,完全不關心數據庫用戶之間的權限區別,導致任意用戶都相當於Oracle數據庫的sys用戶。這種權限的混亂可能導致應用側、運維側兩個層麵的三種安全風險:1、缺乏命令權限控製;2、缺乏集合訪問權限控製;3、缺乏集合內部數據訪問控製。


NoSQL中有兩類權限,一類是調用腳本的權限;另一類是對數據庫係統的權限。Redis在這部分做得較差,任意用戶都可以調用這兩類權限,導致數據庫麵臨安全威脅。一些重視安全的NoSQL數據庫具備一定的訪問控製能力,但仍缺乏細粒度的訪問控製能力。


NoSQL數據庫不僅身份驗證是明文傳輸,後麵的請求和結果集同樣也是明文傳輸。這會導致戶隱私數據、係統敏感信息在傳輸過程被竊取。解決通訊加密一般會提供一個附加的SSL安全層,但ssl安全層會拖慢整個業務的執行速度。後文會給出相應解決方案。


NoSQL數據庫缺乏審計能力,部分NoSQL數據庫可以通過配置添加日誌監控來完成一部分審計功能。通過日誌的記錄來判斷整個流程中是否存在問題。這種日誌的記錄缺乏特征的判斷和自動提示的功能。後麵我們會用NoSQL審計產品完善審計功能的缺失。


NoSQL數據庫缺乏對數據的存儲保護,所有數據均是明文形式存儲,超管可以不經過用戶允許直接查看、修改用戶在雲端保存的文件,很容易造成數據泄露。因此,需要常態保持加密,隻允許具有固定身份的用戶拿到明文,這樣既保護了數據安全又強化了數據庫權限控製。


雖然NoSQL數據庫不再支持sql語句,也就沒有了sql注入的威脅,但存在另外一種威脅——NoSQL注入威脅。NoSQL注入和其他注入類攻擊類似,能獲得數據庫中整個集合(表)的信息,甚至通過改變語義,獲得其他集合(表)中的敏感信息。目前已發現的SQL注入有重言式、聯合查詢、JavaScript注入、背負式查詢四種。


8463c85dec9d33c601e57480d5511e31a1b3626b


除了上述由於設計理念和web導致的安全風險外,NoSQL數據庫本身也存在一些安全漏洞。主要集中在三方麵:

1、泄露敏感數據;

2、越權操作;

3、錄調用的函數存在緩衝區溢出漏洞,會導致服務宕機。

解決方法有二:1、及時打補丁;2、通過漏洞防護技術進行防護。





4ea91a5c243added6d8c89bd0648c5d579878f01


安華金和基於在數據庫安全領域的深厚積累和業務前瞻性眼光,密切關注大數據安全的體係搭建,從專業角度提出針對NoSQL數據庫全方位的安全解決方案,該解決方案主要由三部分構成。


第一部分如上圖黃線所示,采用NoSQL漏掃產品,對NoSQL數據庫進行弱口令、CVE漏洞、未使用安全配置進行檢測,並生成報告提醒管理人員對NoSQL數據庫進行安全加固。通過配置可以解決一部分安全問題,但很多細節問題難以解決。


於是需要引入上文紅線所示的一套NoSQL防火牆+加解密代理。作為整套實時防護技術的核心,NoSQL防火牆通過截獲web端到數據的數據,對數據進行分析,獲取登錄信息後進行一係列身份驗證。在確定訪問用戶後,經過判斷權限來決定放行與否。此外,NoSQL防火牆還是應對暴力破解的好手。如果單位時間內同一用戶錯誤登錄10次,則會對該用戶的登錄進行限時禁止行為,防止數據庫被暴力破解。基於NoSQL防火牆對NoSQL數據庫的語法解析能力,提煉出特定特征可以有效阻止NoSQL注入和CVE漏洞攻擊,防止低權限用戶越權操作。盡管NoSQL防火牆可以解決身份認證、細粒度訪問控製、暴力破解、NoSQL注入、CVE漏洞攻擊等問題,但欠缺對明文數據的保護。作為必要補充,部署加解密代理可以有效應對這個問題。數據通過加解密代理存入數據庫後成為密文形態。加解密代理和NoSQL防火牆聯動,保證隻有具備訪問目標value值的用戶拿到的返回值才是明文,其他用戶即使獲取數據也是密文形態。


第三條綠線則是通過部署NoSQL審計產品對數據庫的行為、動態進行更深入細致的追查。在事後為客戶追查問題,提供有力保障。


至此,安華金和所提供的完整的NoSQL數據庫安全環境搭建完畢。這個環境從事前、事中和事後三個層麵,以縱向包裹整個NoSQL數據庫,保障數據庫的安全。


c428ef09e8026eca6e7183dc015297ea54a439f2

最後更新:2017-11-14 12:04:11

  上一篇:go  再聊負載均衡SLB的主備可用區和高可用部署最佳實踐
  下一篇:go  大學生走向計算機行業的幾個方向