摘要:眾所周知,等知名的數(shù)據(jù)庫都是有在安全方面作出相當(dāng)?shù)姆雷o(hù)的。就是針對服務(wù)端的做白名單控制。我是上海小胖,專注等開源數(shù)據(jù)庫的,擁抱開源,接受收費(fèi)。上海小胖原創(chuàng)地址聯(lián)系方式歡迎各位大神前來評論。每周五,敬請期待,上海小胖獨(dú)更。
前言
好了,看了這個(gè)標(biāo)題,我不知道你有沒有一種潛意識,如果有,沒錯(cuò),那就是這個(gè)了,MongoDB 終于開放了我覺得對于一個(gè)數(shù)據(jù)庫的安全來說,比較重要的一個(gè)模塊了 --- IP 白名單。
眾所周知,MySQL、Oracle、SqlServer等知名的數(shù)據(jù)庫都是有在安全方面作出相當(dāng)?shù)姆雷o(hù)的。
IP白名單
針對庫、表的權(quán)限區(qū)分
針對不同的增刪改查、事務(wù)、admin等的權(quán)限分配
甚至于Oracle還提供了針對于不同權(quán)限所組合而成的邏輯角色,MySQL在這方面也做了相應(yīng)的調(diào)整。
但是回過頭來看看MongoDB,從最一開始的最最簡單的用戶名+密碼的方式,到了之后引入了Bult-in Role、Custom Role、Privilege等的概念推出,再到即將推出的3.6中,明確了將bind_ip調(diào)整成了localhost,這也是受比特幣案的影響吧。
這一次,3.6中,新加入了authenticationRestrictions,就是用來解決IP白名單的缺陷。
那么接下來就讓我們一起來看一下,這個(gè)非常吸引我的特性是如何實(shí)現(xiàn)的吧。
講道理首先還是先來看看MongoDB的官方文檔吧。https://docs.mongodb.com/master/reference/method/db.createUser/#authentication-restrictions
Field Name | Value | Description |
---|---|---|
clientSource | Array of IP addresses and/or CIDR ranges | If present, when authenticating a user, the server verifies that the client’s IP address is either in the given list or belongs to a CIDR range in the list. If the client’s IP address is not present, the server does not authenticate the user. |
serverAddress | Array of IP addresses and/or CIDR ranges | A list of IP addresses or CIDR ranges to which the client can connect. If present, the server will verify that the client’s connection was accepted via an IP address in the given list. If the connection was accepted via an unrecognized IP address, the server does not authenticate the user. |
簡單來說,clientSource 就是針對客戶端的IP 做白名單控制。serverAddress 就是針對服務(wù)端的IP 做白名單控制。
那么這里問題來了,客戶端IP 好理解,無非就是哪里連過來的連接么,這和我們理解上的都一致,那么服務(wù)端地IP呢?什么意思?這里,服務(wù)端的IP 指的是客戶端在連接過來的時(shí)候指定的host 地址,比如:mongo --host=192.168.56.101,那么serverAddress 就必須包含192.168.56.101,這里的包含是什么意思?和MySQL一樣,同樣可以指定B、C網(wǎng)段,來達(dá)到多個(gè)地址地開放,只是寫法有些許出入,MySQL中是:192.168.56.*,MongoDB 中是:192.168.56.0/24。那么如果是使用驅(qū)動(dòng)的話,也是一樣的,在host參數(shù)中指定對應(yīng)的IP即可。
那么接下來我們就來操作一把。
擺事實(shí)1.創(chuàng)建一個(gè)應(yīng)用賬號miracle
use admin db.createUser( { user: "root", pwd: "root", roles: [{role: "root", db: "admin"} ] } ) db.createUser( { user: "miracle", pwd: "young", roles: [ {role: "readWrite", db: "young"} ], authenticationRestrictions: [ { clientSource: ["192.168.31.246"], serverAddress: ["192.168.31.246"] } ] } )
2.重啟數(shù)據(jù)庫,開啟權(quán)限認(rèn)證
3.進(jìn)入miracle 數(shù)據(jù)庫,并驗(yàn)證
4.使用符合要求的格式重新連接數(shù)據(jù)庫
5.第四步中出錯(cuò)的原因是因?yàn)槟J(rèn)3.6 開啟了bind_ip=localhost,而由于一開始忽略了這個(gè)問題,折騰了我好久。重啟數(shù)據(jù)庫加上--bind_ip_all
6.重新連接
至此,MongoDB的IP白名單功能驗(yàn)證完畢,希望能夠幫助到大家在實(shí)際的維護(hù)中更安全的控制好開發(fā)者的權(quán)限。
我是上海小胖[MiracleYoung],專注MongoDB、MySQL、Redis等開源數(shù)據(jù)庫的 DevOps,擁抱開源,接受收費(fèi)。
上海小胖[MiracleYoung] 原創(chuàng)地址: https://segmentfault.com/u/shanghaixiaopang/articles
聯(lián)系方式:miracleyoung0723@gmail.com
歡迎各位大神前來評論。
每周五,敬請期待,上海小胖[MiracleYoung] 獨(dú)更。
如果夏雨荷還在大明湖畔等著我的話,我就不更了。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/17660.html
摘要:另外,保證數(shù)據(jù)庫的訪問安全非常重要,同時(shí)也需要保證數(shù)據(jù)的安全性,做好必要的數(shù)據(jù)備份。關(guān)于如何保護(hù)數(shù)據(jù)的安全性,可以參考我們的博客是這樣備份數(shù)據(jù)的。 上周寫了個(gè)簡短的新聞《MongoDB裸奔,2億國人求職簡歷泄漏!》: 根據(jù)安全站點(diǎn)HackenProof的報(bào)告,由于MongoDB數(shù)據(jù)庫沒有采取任何安全保護(hù)措施,導(dǎo)致共計(jì)202,730,434份國人求職簡歷泄漏。 然后很多人評論說Mongo...
閱讀 2317·2021-11-22 12:01
閱讀 1995·2021-11-12 10:34
閱讀 4518·2021-09-22 15:47
閱讀 2832·2019-08-30 15:56
閱讀 2865·2019-08-30 15:53
閱讀 2404·2019-08-30 13:53
閱讀 3378·2019-08-29 15:35
閱讀 3126·2019-08-29 12:27