本文介紹一些應(yīng)實(shí)施的安全措施,以保護(hù)您的MongoDB安全。
啟用訪問(wèn)控制并指定認(rèn)證機(jī)制??梢允褂媚J(rèn)的MongoDB身份驗(yàn)證機(jī)制或現(xiàn)有的外部框架。 認(rèn)證要求所有客戶端和服務(wù)器在連接到系統(tǒng)之前提供有效的憑據(jù)。 在群集部署中,為每個(gè)MongoDB服務(wù)器啟用身份驗(yàn)證。
先創(chuàng)建用戶管理員,然后創(chuàng)建其他用戶。 為訪問(wèn)系統(tǒng)的每個(gè)人員和應(yīng)用程序創(chuàng)建一個(gè)唯一的MongoDB用戶。
創(chuàng)建定義一組用戶需要的確切訪問(wèn)權(quán)限的角色。 遵循最低權(quán)限的原則。 然后創(chuàng)建用戶并分配他們只需要執(zhí)行其操作所需的角色。用戶可以是個(gè)人或客戶端應(yīng)用程序。
配置MongoDB為所有傳入和傳出連接使用TLS/SSL。 使用TLS/SSL加密MongoDB部署的mongod和mongos組件之間以及所有應(yīng)用程序和MongoDB之間的通信。
從MongoDB Enterprise 3.2開(kāi)始,WiredTiger存儲(chǔ)引擎的本機(jī)加密在Rest中可以配置為加密存儲(chǔ)層中的數(shù)據(jù)。
如果您沒(méi)有使用WiredTiger的加密功能,則應(yīng)使用文件系統(tǒng),設(shè)備或物理加密在每臺(tái)主機(jī)上對(duì)MongoDB數(shù)據(jù)進(jìn)行加密。 使用文件系統(tǒng)權(quán)限保護(hù)MongoDB數(shù)據(jù)。MongoDB數(shù)據(jù)包括數(shù)據(jù)文件,配置文件,審核日志和密鑰文件。
確保MongoDB在受信任的網(wǎng)絡(luò)環(huán)境中運(yùn)行,并限制MongoDB實(shí)例監(jiān)聽(tīng)傳入連接的接口。 只允許受信任的客戶端訪問(wèn)MongoDB實(shí)例可用的網(wǎng)絡(luò)接口和端口。
跟蹤數(shù)據(jù)庫(kù)配置和數(shù)據(jù)的訪問(wèn)和更改。 MongoDB Enterprise包括一個(gè)系統(tǒng)審核工具,可以在MongoDB實(shí)例上記錄系統(tǒng)事件(例如用戶操作,連接事件)。 這些審核記錄允許進(jìn)行法證分析,并允許管理員驗(yàn)證正確的控制。
使用專用的操作系統(tǒng)用戶帳戶運(yùn)行MongoDB進(jìn)程。 確保帳戶具有訪問(wèn)數(shù)據(jù)但沒(méi)有不必要權(quán)限的權(quán)限而導(dǎo)致的安全問(wèn)題。
MongoDB支持執(zhí)行某些服務(wù)器端操作的JavaScript代碼:mapReduce,group和$where。 如果不使用這些操作,請(qǐng)使用命令行上的--noscripting選項(xiàng)禁用服務(wù)器端腳本。
在生產(chǎn)部署中僅使用MongoDB線路協(xié)議。 不啟用以下功能,所有這些都啟用了Web服務(wù)器接口:net.http.enabled,net.http.JSONPEnabled和net.http.RESTInterfaceEnabled。保持這些禁用,除非向后兼容性要求。
注:自 MongoDB3.2 版本以來(lái)已棄用:MongoDB的HTTP接口
保持輸入驗(yàn)證有效。 MongoDB默認(rèn)通過(guò)wireObjectCheck設(shè)置啟用輸入驗(yàn)證。 這確保了mongod實(shí)例存儲(chǔ)的所有文檔都是有效的BSON。
“安全技術(shù)實(shí)施指南”(STIG)載有美國(guó)國(guó)防部?jī)?nèi)部署的安全準(zhǔn)則。 MongoDB Inc.根據(jù)要求提供其STIG,用于需要的情況。 請(qǐng)索取副本以獲取更多信息。