十個(gè)提高M(jìn)ongoDB安全性的配置技巧
MongoDB提供了一系列組件來(lái)提升數(shù)據(jù)的安全性。數(shù)據(jù)安全在MongoDB中是最重要的——因此它利用這些組件來(lái)減少曝光面。下面是10個(gè)可以用來(lái)改善你個(gè)人或云中MongoDB服務(wù)器安全的小提示。
1. 啟用auth-即使在可信賴網(wǎng)絡(luò)中部署MongoDB服務(wù)器時(shí)啟用auth也是項(xiàng)好的安全實(shí)踐。當(dāng)你的網(wǎng)絡(luò)受攻擊時(shí)它能夠提供“深層防御”。編輯配置文件來(lái)啟用auth。
auth = true
2.不要把生產(chǎn)環(huán)境的數(shù)據(jù)庫(kù)暴 露在Internet上-限制對(duì)數(shù)據(jù)庫(kù)的物理訪問(wèn)是安全性的非常重要的一個(gè)措施。如果沒(méi)有必要,就不要把生產(chǎn)環(huán)境的數(shù)據(jù)庫(kù)暴露在Internet上。如果 攻擊者不能物理地連接到MongoDB服務(wù)器這種情形大打折扣,那么數(shù)據(jù)就不會(huì)比現(xiàn)在更安全。如果你把服務(wù)部署在亞馬遜web服務(wù)(AWS)上,那么你應(yīng) 當(dāng)把數(shù)據(jù)庫(kù)部署在虛擬私有云(VPC)的私有子網(wǎng)里。
3.使用防火墻-防火墻的使用可以限制允許哪些實(shí)體連接MongoDB服務(wù)器。最佳的措施就是僅僅允許你自己的應(yīng)用服務(wù)器訪 問(wèn)數(shù)據(jù)庫(kù)。如果你把無(wú)法部署在亞馬遜web服務(wù)(AWS)上,你可以使用"安全組“功能限制訪問(wèn)權(quán)限。如果你把服務(wù)部署在不支持防火墻功能的提供商的主機(jī) 上,那么你可以親自使用"iptables"對(duì)服務(wù)器進(jìn)行簡(jiǎn)單的配置。請(qǐng)參考mongodb的文檔,實(shí)現(xiàn)對(duì)你所面對(duì)的具體環(huán)境配置iptables。
4.使用key文件建立復(fù)制服務(wù)器集群-指定共享的key文件,啟用復(fù)制集群的MongoDB實(shí)例之間的通信。如下給配置文件中增加keyfile參數(shù)。復(fù)制集群里的所有機(jī)器上的這個(gè)文件的內(nèi)容必須相同。
keyFile = /srv/mongodb/keyfile
5.禁止HTTP狀態(tài)接口- 默認(rèn)情況下Mongodb在端口28017上運(yùn)行http接口,以提供“主”狀態(tài)頁(yè)面。在生產(chǎn)環(huán)境下推薦不要使用此接口,最好禁止這個(gè)接口。使用"nohttpinterface"配置設(shè)置可以禁止這個(gè)http接口。
nohttpinterface = true
6.禁止REST接口-在生產(chǎn)環(huán)境下建議不要啟用MongoDB的REST接口。這個(gè)接口不支持任何認(rèn)證。默認(rèn)情況下這個(gè)接口是關(guān)閉的。如果你使用的"rest"配置選項(xiàng)打開(kāi)了這個(gè)接口,那么你應(yīng)該在生產(chǎn)系統(tǒng)中關(guān)閉它。
rest = false
7.配置bind_ip- 如果你的系統(tǒng)使用的多個(gè)網(wǎng)絡(luò)接口,那么你可以使用"bind_ip"選項(xiàng)限制mongodb服務(wù)器只在與該配置項(xiàng)關(guān)聯(lián)的接口上偵聽(tīng)。默認(rèn)情況下mongoDB綁定所有的接口。
bind_ip = 10.10.0.25,10.10.0.26
8. 啟用SSL- 如果你沒(méi)有使用SSL,那么你在MongoDB客戶端和MongoDB服務(wù)器之間的傳輸?shù)臄?shù)據(jù)就是明文的,容易受到竊聽(tīng)、篡改和“中間人”攻擊。如果你是 通過(guò)像internet這樣的非安全網(wǎng)絡(luò)連接到MongoDB服務(wù)器,那么啟用SSL就顯得非常重要。
9.基于角色進(jìn)行認(rèn)證- MongoDB支持基于角色的認(rèn)證,這樣你就可以對(duì)每個(gè)用戶可以執(zhí)行的動(dòng)作進(jìn)行細(xì)粒度的控制。使用基于角色的認(rèn)證組建可以限制對(duì)數(shù)據(jù)庫(kù)的訪問(wèn),而不是所有的用戶都是管理員。更多的信息請(qǐng)參考有關(guān)角色的文檔。
10.企業(yè)級(jí)MongoDB與kerberos- 企業(yè)級(jí)mongodb繼承了kerberos認(rèn)證。有關(guān)這方面的更多信息請(qǐng)參考mongodb文檔?;谟脩裘?密碼的系統(tǒng)本身就是不安全的,因此如果可能的話,請(qǐng)使用基于kerberos的認(rèn)證。
相關(guān)文章
mongodb 添加用戶及權(quán)限設(shè)置詳解
我知道的關(guān)系型數(shù)據(jù)庫(kù)都是有權(quán)限控制的,什么用戶能訪問(wèn)什么庫(kù),什么表,什么用戶可以插入,更新,而有的用戶只有讀取權(quán)限。2014-07-07MongoDB數(shù)據(jù)庫(kù)部署環(huán)境準(zhǔn)備及使用介紹
這篇文章主要為大家介紹了MongoDB數(shù)據(jù)庫(kù)部署環(huán)境準(zhǔn)備以及基本的使用介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03基于Mongodb分布式鎖解決定時(shí)任務(wù)并發(fā)執(zhí)行問(wèn)題
這篇文章主要介紹了基于Mongodb分布式鎖解決定時(shí)任務(wù)并發(fā)執(zhí)行問(wèn)題,網(wǎng)上有很多分布式鎖的實(shí)現(xiàn)方案,基于redis、zk、等有很多,但是我的就是一個(gè)用了mysql和mongo的小應(yīng)用,本文給大家詳細(xì)講解,需要的朋友可以參考下2023-04-04PHP中安裝使用mongodb數(shù)據(jù)庫(kù)
最近有個(gè)項(xiàng)目,需要用php操作mongoDb數(shù)據(jù),所以了解下mongoDb為此整理了下,有需要的小伙伴可以參考下2015-12-12MongoDB聚合運(yùn)算符$dateFromString詳解
$dateFromString聚合運(yùn)算符將日期時(shí)間字符串轉(zhuǎn)換為日期對(duì)象,本文給大家介紹MongoDB聚合運(yùn)算符$dateFromString的相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧2024-03-03centos7防火墻導(dǎo)致java程序訪問(wèn)mongodb3.0.1時(shí)報(bào)錯(cuò)的問(wèn)題分析
這篇文章主要介紹了centos7防火墻導(dǎo)致java程序訪問(wèn)mongodb3.0.1時(shí)報(bào)錯(cuò)的問(wèn)題分析,需要的朋友參考下2017-01-01