自2011年以來,多家互聯(lián)網(wǎng)站頻發(fā)被黑客公開用戶數(shù)據(jù)庫的事件,超過5000萬個(gè)用戶帳號(hào)和密碼在網(wǎng)上大規(guī)模被泄露,數(shù)據(jù)庫拖庫事件頻發(fā)。2018年某中文論壇上,公然出現(xiàn)了售賣國內(nèi)知名酒店集團(tuán)數(shù)據(jù)庫的“廣告”,詳細(xì)信息合計(jì)近 5 億條,涵蓋了入住者及酒店會(huì)員個(gè)人信息、入住登記、開房記錄等內(nèi)容。
最近,網(wǎng)絡(luò)安全組織GDI基金會(huì)又爆出,有數(shù)以億計(jì)的中國用戶私人聊天記錄被泄露在互聯(lián)網(wǎng)上。據(jù)美國電信公司Verizon 2018年發(fā)布的年度安全報(bào)告顯示,在數(shù)據(jù)泄露原因方面,62%的數(shù)據(jù)泄露與黑客攻擊有關(guān);81%的的數(shù)據(jù)泄露涉及到撞庫或弱口令。
數(shù)據(jù)庫泄露的原因很多,數(shù)據(jù)庫管理員安全意識(shí)弱、程序設(shè)計(jì)沒有考慮安全冗余性、應(yīng)用層漏洞等均可導(dǎo)致數(shù)據(jù)庫拖庫、數(shù)據(jù)泄露。單一的安全手段已經(jīng)無法防范數(shù)據(jù)泄露的多重風(fēng)險(xiǎn),只有多手段并用才可以最大程度地提高數(shù)據(jù)安全。
由世紀(jì)互聯(lián)運(yùn)營的Azure服務(wù)平臺(tái)通過多種先進(jìn)的安全技術(shù)構(gòu)建完整的安全平臺(tái),從多角度、多層面保護(hù)用戶的數(shù)據(jù)安全,防止數(shù)據(jù)泄露事件的發(fā)生。Azure中國版SQL數(shù)據(jù)庫服務(wù)目前已提供了以下四種數(shù)據(jù)庫安全增強(qiáng)配置,分別是高級(jí)數(shù)據(jù)安全(ADS)、透明數(shù)據(jù)加密(TDE)、動(dòng)態(tài)數(shù)據(jù)掩碼(DDM)、審核(Audit),真正做到了多維度數(shù)據(jù)保護(hù)。
高級(jí)數(shù)據(jù)安全 (ADS)
高級(jí)數(shù)據(jù)安全 (ADS) 是一種從策略上保護(hù)數(shù)據(jù)庫安全性的機(jī)制,它提供一組高級(jí) SQL 安全功能,包括數(shù)據(jù)發(fā)現(xiàn)與分類、漏洞評(píng)估和威脅檢測。漏洞評(píng)估可以發(fā)現(xiàn)、跟蹤并幫助修正潛在的數(shù)據(jù)庫漏洞,分析檢查身份驗(yàn)證與授權(quán)配置、數(shù)據(jù)保護(hù)設(shè)置、外圍應(yīng)用設(shè)置、審核配置等,并提供相應(yīng)的修復(fù)方法與建議。它可直觀查看安全狀態(tài),包括解決安全問題的可操作步驟,并可加強(qiáng)數(shù)據(jù)庫的防御工事。
如上圖所示,檢測結(jié)果發(fā)現(xiàn)dbo賬戶被當(dāng)作普通用戶去使用,這被標(biāo)記為中等風(fēng)險(xiǎn),因?yàn)閐bo具有最高的權(quán)限,ADS功能會(huì)針對(duì)不同風(fēng)險(xiǎn)給出相應(yīng)建議與解決方法。
除了對(duì)數(shù)據(jù)庫漏洞及配置進(jìn)行評(píng)估,ADS還集成了威脅檢測模塊,對(duì)常見的風(fēng)險(xiǎn)如SQL注入等進(jìn)行檢測,用戶可根據(jù)需要勾選。 來自異常位置的訪問、陌生賬戶的登錄、暴力破解SQL憑據(jù)的行為都可以被檢測到并觸發(fā)警報(bào)。
ADS功能支持設(shè)置定期掃描、設(shè)置安全基線,并生成安全報(bào)告發(fā)送至管理員郵箱。這些功能有效減少了黑客撞庫或管理員配置弱口令的可能性。
透明數(shù)據(jù)加密 (TDE)
透明數(shù)據(jù)加密 (TDE) 是一種從元數(shù)據(jù)層級(jí)保護(hù)數(shù)據(jù)庫的方式,它有助于保護(hù) Azure SQL 數(shù)據(jù)庫、Azure SQL 托管實(shí)例和 Azure 數(shù)據(jù)倉庫免受惡意活動(dòng)的威脅。 它可執(zhí)行靜態(tài)數(shù)據(jù)庫、關(guān)聯(lián)備份和事務(wù)日志文件的實(shí)時(shí)加密和解密,無需更改應(yīng)用程序。 默認(rèn)情況下,為所有新部署的 Azure SQL 數(shù)據(jù)庫啟用了 TDE。
TDE功能可以防止數(shù)據(jù)庫文件(mdf/ndf/ldf)被附加到非授權(quán)服務(wù)器或者使用TDE功能的備份文件被輕易還原到別的服務(wù)器上,從而進(jìn)一步加強(qiáng)了數(shù)據(jù)的安全性。對(duì)黑客拖庫行為有一定的限制作用。啟用TDE后,將組織內(nèi)部的密鑰與數(shù)據(jù)管理責(zé)任相分離,即使非授權(quán)人員在取得數(shù)據(jù)庫后,如無密鑰,無法在異地還原盜取的數(shù)據(jù)庫。
如上圖所示,我們?cè)诒镜卦噲D還原一個(gè)啟用過TDE的數(shù)據(jù)庫,在沒有密鑰的情況下顯示還原失敗。這樣,即便數(shù)據(jù)庫文件層級(jí)泄露,黑客也無法訪問數(shù)據(jù)。
動(dòng)態(tài)數(shù)據(jù)掩碼(DDM)
動(dòng)態(tài)數(shù)據(jù)掩碼技術(shù)用一種假名化(pseudonymization)手段保護(hù)元數(shù)據(jù),通過對(duì)非特權(quán)用戶模糊化敏感數(shù)據(jù)來限制此類數(shù)據(jù)的泄露。動(dòng)態(tài)數(shù)據(jù)屏蔽允許客戶指定在對(duì)應(yīng)用層產(chǎn)生最小影響的前提下可以透露的敏感數(shù)據(jù)量,從而幫助防止未經(jīng)授權(quán)的用戶訪問敏感數(shù)據(jù)。它是一種基于策略的安全功能,會(huì)在針對(duì)指定的數(shù)據(jù)庫字段運(yùn)行查詢后返回的結(jié)果集中隱藏敏感數(shù)據(jù),同時(shí)保持?jǐn)?shù)據(jù)庫中的數(shù)據(jù)不變。
例如,我們用管理員賬戶在數(shù)據(jù)庫中創(chuàng)建表dbo.JOBS并插入數(shù)據(jù):
開啟動(dòng)態(tài)數(shù)據(jù)掩碼功能,并設(shè)置掩碼字段, 掩飾工資字段:
切換為非管理員賬戶后執(zhí)行查詢:
如圖所示,敏感字段已經(jīng)自動(dòng)按照配置規(guī)則進(jìn)行掩飾。這項(xiàng)功能在一定程度上緩解了非拖庫行為造成的數(shù)據(jù)泄露,例如SQL注入。該功能目前支持自定義屏蔽規(guī)則及屏蔽函數(shù)。
審核(Audit)
除了上述安全功能,Azure版SQL還具有審核功能。審核 Azure SQL 數(shù)據(jù)庫和 SQL 數(shù)據(jù)倉庫會(huì)跟蹤數(shù)據(jù)庫事件,并將這些事件寫入 Azure 存儲(chǔ)帳戶、OMS 工作區(qū)或事件中心中的審核日志。審核功能幫助管理員追溯數(shù)據(jù)庫發(fā)生的事件,它能告訴你“誰什么時(shí)候做了什么事情”。具體是指審核SQL Server 數(shù)據(jù)庫引擎實(shí)例或單獨(dú)的數(shù)據(jù)庫涉及到跟蹤和記錄數(shù)據(jù)庫引擎中發(fā)生的事件。
如圖所示,審核日志提供了訪問者IP地址、賬戶名稱、事件類型、執(zhí)行語句等詳細(xì)信息,幫助數(shù)據(jù)庫管理員定位問題,及時(shí)排查風(fēng)險(xiǎn),解決隱患。
Azure版SQL數(shù)據(jù)庫依托強(qiáng)大的Azure平臺(tái),不僅支持以上安全特性,還集成了一些平臺(tái)的安全特點(diǎn),如集成Azure AD身份驗(yàn)證、服務(wù)器級(jí)別IP防火墻、傳輸過程加密等特征。通過分層深度防御的方法,分別在網(wǎng)絡(luò)安全、訪問管理、威脅防護(hù)、信息保護(hù)四大方面無死角保護(hù)用戶虛擬資產(chǎn)安全,盡可能降低數(shù)據(jù)泄露風(fēng)險(xiǎn)。
當(dāng)然,數(shù)據(jù)千萬條,安全第一條;配置不規(guī)范,用戶兩行淚。Azure為廣大用戶提供了強(qiáng)大的安全防護(hù),數(shù)據(jù)庫管理員還需要樹立安全意識(shí),減少不規(guī)范的配置問題,杜絕弱口令,嚴(yán)格限制賬戶權(quán)限,適當(dāng)開啟IP訪問白名單,減小黑客攻擊面。
(本文作者陳初,世紀(jì)互聯(lián)藍(lán)云ISC security團(tuán)隊(duì)工程師)