為了保證資料的安全性,mongodb提供了兩種方式的安全驗證機制:①帳號密碼認證 ②IP綁定
一、帳號密碼認證
這個沒什麼好說的,和普通關係型的資料庫一樣,使用帳號密碼進行認證,並且,使用者有許可權的概念,比如mysql中使用者細分可以管理哪些表。
在mongodb中,使用者有兩種,一種是超級管理使用者,一種是資料庫擁有者。
切換至admin資料庫,在system.users集合中,我們可以看到本執行個體中所有的使用者,及其roel。如下:
而後,在啟動mongoDB的時候,使用 -auth 表示需要使用者名稱帳號密碼驗證。
可以使用db.addUser('userName','pwd')向本資料庫下添加使用者。
在java中,驗證使用者帳號密碼身份:
db.authenticateCommand(username, password)
在python中,驗證帳號密碼“:
db.authenticate('testAdmin','123')
二、ip地址綁定
啟動mongodb的時候,使用 -bind_ip 192.168.20.21 表示啟動ip地址綁定,資料庫執行個體將只監聽192.168.20.21的請求。
ip綁定是怎麼實現安全控制的呢。
假設我們的mongodb安裝在一台串連外網的伺服器上,這台伺服器又和其他伺服器處於區域網路中。那麼這台伺服器將有三個ip地址:127.0.1.1,內網ip,外網ip。為了保證安全,我們只能只用127.0.0.1或者內網ip。
如果使用127.0.0.1,那麼串連mongoDB的應用就必須在mongodb的伺服器上。這樣肯定能實現安全保證。
如果使用內網ip,應用在串連mongodb的時候,必須MongoClient client = new MongoClient("192.168.20.114", 27017);這個ip必須是一個內網ip,外部網路的伺服器就不能訪問mongodb伺服器。從而實現安全。
總結:為了儘可能保證安全,我們一般使用兩種方式的結合體,既綁定ip又使用帳號密碼認證機制。
另外,mongodb的預設連接埠是27017,一般也需要更改這個預設連接埠,來儘可能提高安全性。如何更改預設連接埠呢。只需要在啟動mongodb的時候加上 -port參數就OK了。