七大維度談NoSQL數(shù)據(jù)庫(kù)安全風(fēng)險(xiǎn)

摘要:NoSQL,泛指非關(guān)系型的數(shù)據(jù)庫(kù)。隨著近年數(shù)據(jù)規(guī)模的爆發(fā)式增長(zhǎng),數(shù)據(jù)庫(kù)的發(fā)展也經(jīng)歷了快速演變。為了解決大規(guī)模數(shù)據(jù)集合多重?cái)?shù)據(jù)種類帶來(lái)的挑戰(zhàn),尤其是大數(shù)據(jù)應(yīng)用難題,NoSQL數(shù)據(jù)庫(kù)應(yīng)運(yùn)而生。從2009年

NoSQL,泛指非關(guān)系型的數(shù)據(jù)庫(kù)。隨著近年數(shù)據(jù)規(guī)模的爆發(fā)式增長(zhǎng),數(shù)據(jù)庫(kù)的發(fā)展也經(jīng)歷了快速演變。為了解決大規(guī)模數(shù)據(jù)集合多重?cái)?shù)據(jù)種類帶來(lái)的挑戰(zhàn),尤其是大數(shù)據(jù)應(yīng)用難題,NoSQL數(shù)據(jù)庫(kù)應(yīng)運(yùn)而生。

從2009年登上歷史舞臺(tái),NoSQL數(shù)據(jù)庫(kù)只用了8年時(shí)間,已經(jīng)在主流數(shù)據(jù)庫(kù)中占據(jù)3個(gè)席位。相較傳統(tǒng)的非關(guān)系型數(shù)據(jù)庫(kù),NoSQL憑借其讀取數(shù)據(jù)的高效性、易擴(kuò)展性等優(yōu)勢(shì),在眾多細(xì)分領(lǐng)域應(yīng)用中取得主導(dǎo)地位。例如電商行業(yè):其業(yè)務(wù)屬于標(biāo)準(zhǔn)的多讀少寫(xiě)、事物簡(jiǎn)單,數(shù)據(jù)關(guān)系不復(fù)雜,這部分業(yè)務(wù)應(yīng)用NoSQL會(huì)事半功倍。

NoSQL數(shù)據(jù)庫(kù)不像標(biāo)準(zhǔn)關(guān)系數(shù)據(jù)庫(kù)有明確的定義,權(quán)威的規(guī)范,每種不同NoSQL適合的細(xì)分領(lǐng)域也多有不同,NoSQL從大類可以分成四類:

鍵值數(shù)據(jù)庫(kù)

文檔數(shù)據(jù)庫(kù)

列族數(shù)據(jù)庫(kù)

圖數(shù)據(jù)庫(kù)

仍以電商為例,該行業(yè)某些業(yè)務(wù)中使用的是鍵值數(shù)據(jù)庫(kù)和文檔數(shù)據(jù)庫(kù),本文對(duì)NoSQL安全問(wèn)題展開(kāi)分析也將主要從這兩大類數(shù)據(jù)庫(kù)類型入手。

一、NoSQL安全問(wèn)題綜述

NoSQL數(shù)據(jù)庫(kù)在設(shè)計(jì)之初,就是為大大提升用戶使用效率,所以并未做安全考慮。因此,NoSQL數(shù)據(jù)庫(kù)普遍存在大量安全問(wèn)題。安全問(wèn)題主要可以分為七大類,分別為:

身份認(rèn)證

權(quán)限控制

審計(jì)

通訊加密

數(shù)據(jù)加密

NoSQL注入

自身安全漏洞

大約在2013年前后,一些開(kāi)源項(xiàng)目被企業(yè)化,企業(yè)化后企業(yè)版在一定范圍內(nèi)解決了一部分NoSQL數(shù)據(jù)庫(kù)的安全問(wèn)題。但大部分解決方案是以犧牲性能為代價(jià),并不具備優(yōu)良的推廣性。大部分用戶使用最多的還是社區(qū)版,該版本存在諸多安全問(wèn)題,列舉如下:

1)身份認(rèn)證安全問(wèn)題

無(wú)密碼的身份認(rèn)證安全問(wèn)題

由于NoSQL中默認(rèn)沒(méi)有用開(kāi)啟戶身份認(rèn)證機(jī)制,所以任何用戶都可以偽裝成合法用戶來(lái)訪問(wèn)數(shù)據(jù)庫(kù),并對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行各種操作。如2016年底至2017年初興起的一股針對(duì)NoSQL數(shù)據(jù)庫(kù)的勒索行動(dòng),就是利用無(wú)身份認(rèn)證登陸上NoSQL數(shù)據(jù)庫(kù)實(shí)施敲詐勒索,這只是此安全隱患最簡(jiǎn)單的利用方式。很多時(shí)候黑客會(huì)以NoSQL數(shù)據(jù)庫(kù)為跳板入侵NoSQL數(shù)據(jù)庫(kù)所在的服務(wù)器,甚至整個(gè)網(wǎng)絡(luò)環(huán)境。目前,最直接的解決方法就是給NoSQL加用戶名和密碼。

有密碼的身份認(rèn)證安全問(wèn)題

NoSQL出于性能考量,默認(rèn)不設(shè)置用戶名和密碼。要解決身份認(rèn)證安全問(wèn)題,一般采取兩種方法。一種是使用NoSQL數(shù)據(jù)庫(kù)自身支持的簡(jiǎn)單身份驗(yàn)證。通過(guò)客戶端獲取用戶名和密碼,然后和數(shù)據(jù)庫(kù)中對(duì)應(yīng)的記錄進(jìn)行比對(duì),吻合則批準(zhǔn)登錄。該方法在抗暴力破解和網(wǎng)絡(luò)竊取上非常差,一旦用戶數(shù)量過(guò)多會(huì)引起性能的嚴(yán)重下降,所以部分NoSQL數(shù)據(jù)庫(kù)不支持多用戶登錄。

另一種解決方案是以Hbase為代表,引入成熟的身份認(rèn)證機(jī)制Kerberos來(lái)完成身份認(rèn)證工作。該方式較適合以計(jì)算為主業(yè)的NoSQL數(shù)據(jù)庫(kù),對(duì)于要求執(zhí)行效率和以大量查詢?yōu)橹饕臉I(yè)務(wù)并不適合。隨著用戶數(shù)量增長(zhǎng),并發(fā)量不斷提高,KCD(密鑰奮發(fā)中心)很快會(huì)成為整個(gè)業(yè)務(wù)流程的瓶頸。

2)權(quán)限控制

NoSQL數(shù)據(jù)庫(kù)不僅缺乏身份驗(yàn)證,更缺乏對(duì)每個(gè)數(shù)據(jù)庫(kù)用戶的權(quán)限控制。很多NoSQL數(shù)據(jù)庫(kù),把自己當(dāng)作“應(yīng)用數(shù)據(jù)庫(kù)”去設(shè)計(jì),完全不關(guān)心數(shù)據(jù)庫(kù)用戶之間的權(quán)限區(qū)別,導(dǎo)致任意用戶都相當(dāng)于ORACLE數(shù)據(jù)庫(kù)的sys用戶。這種權(quán)限的混亂可能導(dǎo)致應(yīng)用側(cè)、運(yùn)維側(cè)兩個(gè)層面的三種安全風(fēng)險(xiǎn):1、缺乏命令權(quán)限控制;2、缺乏集合訪問(wèn)權(quán)限控制;3、缺乏集合內(nèi)部數(shù)據(jù)訪問(wèn)控制。

NoSQL中有兩類權(quán)限,一類是調(diào)用腳本的權(quán)限;另一類是對(duì)數(shù)據(jù)庫(kù)系統(tǒng)的權(quán)限。Redis在這部分做得較差,任意用戶都可以調(diào)用這兩類權(quán)限,導(dǎo)致數(shù)據(jù)庫(kù)面臨安全威脅。一些重視安全的NoSQL數(shù)據(jù)庫(kù)具備一定的訪問(wèn)控制能力,但仍缺乏細(xì)粒度的訪問(wèn)控制能力。

3)通訊加密

NoSQL數(shù)據(jù)庫(kù)不僅身份驗(yàn)證是明文傳輸,后面的請(qǐng)求和結(jié)果集同樣也是明文傳輸。這會(huì)導(dǎo)致戶隱私數(shù)據(jù)、系統(tǒng)敏感信息在傳輸過(guò)程被竊取。解決通訊加密一般會(huì)提供一個(gè)附加的SSL安全層,但ssl安全層會(huì)拖慢整個(gè)業(yè)務(wù)的執(zhí)行速度。后文會(huì)給出相應(yīng)解決方案。

4)審計(jì)

NoSQL數(shù)據(jù)庫(kù)缺乏審計(jì)能力,部分NoSQL數(shù)據(jù)庫(kù)可以通過(guò)配置添加日志監(jiān)控來(lái)完成一部分審計(jì)功能。通過(guò)日志的記錄來(lái)判斷整個(gè)流程中是否存在問(wèn)題。這種日志的記錄缺乏特征的判斷和自動(dòng)提示的功能。后面我們會(huì)用NoSQL審計(jì)產(chǎn)品完善審計(jì)功能的缺失。

5)數(shù)據(jù)加密

NoSQL數(shù)據(jù)庫(kù)缺乏對(duì)數(shù)據(jù)的存儲(chǔ)保護(hù),所有數(shù)據(jù)均是明文形式存儲(chǔ),超管可以不經(jīng)過(guò)用戶允許直接查看、修改用戶在云端保存的文件,很容易造成數(shù)據(jù)泄露。因此,需要常態(tài)保持加密,只允許具有固定身份的用戶拿到明文,這樣既保護(hù)了數(shù)據(jù)安全又強(qiáng)化了數(shù)據(jù)庫(kù)權(quán)限控制。

6)NoSQL注入

雖然NoSQL數(shù)據(jù)庫(kù)不再支持sql語(yǔ)句,也就沒(méi)有了sql注入的威脅,但存在另外一種威脅——NoSQL注入威脅。NoSQL注入和其他注入類攻擊類似,能獲得數(shù)據(jù)庫(kù)中整個(gè)集合(表)的信息,甚至通過(guò)改變語(yǔ)義,獲得其他集合(表)中的敏感信息。目前已發(fā)現(xiàn)的SQL注入有重言式、聯(lián)合查詢、JavaScript注入、背負(fù)式查詢四種。

7)自身安全漏洞

除了上述由于設(shè)計(jì)理念和web導(dǎo)致的安全風(fēng)險(xiǎn)外,NoSQL數(shù)據(jù)庫(kù)本身也存在一些安全漏洞。主要集中在三方面:1、泄露敏感數(shù)據(jù);2、越權(quán)操作;3、錄調(diào)用的函數(shù)存在緩沖區(qū)溢出漏洞,會(huì)導(dǎo)致服務(wù)宕機(jī)。解決方法有二:1、及時(shí)打補(bǔ)??;通過(guò)漏洞防護(hù)技術(shù)進(jìn)行防護(hù)。

二、NoSQL安全解決方案

NoSQL數(shù)據(jù)庫(kù)的設(shè)計(jì)目標(biāo)是追求極致的效率和簡(jiǎn)易擴(kuò)展性,設(shè)計(jì)者假設(shè)NoSQL數(shù)據(jù)庫(kù)在一個(gè)絕對(duì)安全的環(huán)境下運(yùn)行?,F(xiàn)實(shí)中并沒(méi)有絕對(duì)安全的運(yùn)行環(huán)境,因此不可避免的出現(xiàn)了很多安全問(wèn)題。

安華金和基于在數(shù)據(jù)庫(kù)安全領(lǐng)域的深厚積累和業(yè)務(wù)前瞻性眼光,密切關(guān)注大數(shù)據(jù)安全的體系搭建,從專業(yè)角度提出針對(duì)NoSQL數(shù)據(jù)庫(kù)全方位的安全解決方案,該解決方案主要由三部分構(gòu)成。

第一部分如上圖黃線所示,采用NoSQL漏掃產(chǎn)品,對(duì)NoSQL數(shù)據(jù)庫(kù)進(jìn)行弱口令、CVE漏洞、未使用安全配置進(jìn)行檢測(cè),并生成報(bào)告提醒管理人員對(duì)NoSQL數(shù)據(jù)庫(kù)進(jìn)行安全加固。通過(guò)配置可以解決一部分安全問(wèn)題,但很多細(xì)節(jié)問(wèn)題難以解決。

于是需要引入上文紅線所示的一套NoSQL防火墻+加解密代理。作為整套實(shí)時(shí)防護(hù)技術(shù)的核心,NoSQL防火墻通過(guò)截獲web端到數(shù)據(jù)的數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行分析,獲取登錄信息后進(jìn)行一系列身份驗(yàn)證。在確定訪問(wèn)用戶后,經(jīng)過(guò)判斷權(quán)限來(lái)決定放行與否。此外,NoSQL防火墻還是應(yīng)對(duì)暴力破解的好手。如果單位時(shí)間內(nèi)同一用戶錯(cuò)誤登錄10次,則會(huì)對(duì)該用戶的登錄進(jìn)行限時(shí)禁止行為,防止數(shù)據(jù)庫(kù)被暴力破解。基于NoSQL防火墻對(duì)NoSQL數(shù)據(jù)庫(kù)的語(yǔ)法解析能力,提煉出特定特征可以有效阻止NoSQL注入和CVE漏洞攻擊,防止低權(quán)限用戶越權(quán)操作。盡管NoSQL防火墻可以解決身份認(rèn)證、細(xì)粒度訪問(wèn)控制、暴力破解、NoSQL注入、CVE漏洞攻擊等問(wèn)題,但欠缺對(duì)明文數(shù)據(jù)的保護(hù)。作為必要補(bǔ)充,部署加解密代理可以有效應(yīng)對(duì)這個(gè)問(wèn)題。數(shù)據(jù)通過(guò)加解密代理存入數(shù)據(jù)庫(kù)后成為密文形態(tài)。加解密代理和NoSQL防火墻聯(lián)動(dòng),保證只有具備訪問(wèn)目標(biāo)value值的用戶拿到的返回值才是明文,其他用戶即使獲取數(shù)據(jù)也是密文形態(tài)。

第三條綠線則是通過(guò)部署NoSQL審計(jì)產(chǎn)品對(duì)數(shù)據(jù)庫(kù)的行為、動(dòng)態(tài)進(jìn)行更深入細(xì)致的追查。在事后為客戶追查問(wèn)題,提供有力保障。

至此,安華金和所提供的完整的NoSQL數(shù)據(jù)庫(kù)安全環(huán)境搭建完畢。這個(gè)環(huán)境從事前、事中和事后三個(gè)層面,以縱向包裹整個(gè)NoSQL數(shù)據(jù)庫(kù), 從而保障數(shù)據(jù)庫(kù)的安全。

極客網(wǎng)企業(yè)會(huì)員

免責(zé)聲明:本網(wǎng)站內(nèi)容主要來(lái)自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁(yè)或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書(shū)面權(quán)利通知或不實(shí)情況說(shuō)明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開(kāi)相關(guān)鏈接。

2017-11-05
七大維度談NoSQL數(shù)據(jù)庫(kù)安全風(fēng)險(xiǎn)
摘要:NoSQL,泛指非關(guān)系型的數(shù)據(jù)庫(kù)。隨著近年數(shù)據(jù)規(guī)模的爆發(fā)式增長(zhǎng),數(shù)據(jù)庫(kù)的發(fā)展也經(jīng)歷了快速演變。為了解決大規(guī)模數(shù)據(jù)集合多重?cái)?shù)據(jù)種類帶來(lái)的挑戰(zhàn),尤其是大數(shù)據(jù)應(yīng)用難題,NoSQL數(shù)據(jù)庫(kù)應(yīng)運(yùn)而生。

長(zhǎng)按掃碼 閱讀全文