2017年下半年新發佈的MongoDB 3.6版本在安全性上做了很大提升,主要歸結為兩點: 1.將將bind_ip 預設值修改為了localhost; 2. 在db.createUser()和 db.updateUser()中添加了authenticationRestrictions 參數,可以用來 ...
2017年下半年新發佈的MongoDB 3.6版本在安全性上做了很大提升,主要歸結為兩點:
1.將將bind_ip 預設值修改為了localhost;
2. 在db.createUser()和 db.updateUser()中添加了authenticationRestrictions 參數,可以用來控制Client端發來的請求源IP以及請求的Server端指定IP。
以下說明和測試主要是針對第一點。
以前的版本預設Mongo服務啟動後,使用Server IP 可以直接登入,但是3.6 已將服務啟動bind_ip的預設值限定為localhost。
因此,即使在Local Server使用ServerIP登入也會報錯。
<圖1>
只能使用localhost登入
<圖2>
修改方式,修改conf 配置文件,調整bind_ip參數,將本地IP賦予此參數。賦予後使用Server IP登入可以,但此時使用localhost 失敗。為了同時相容2種登入方式,將參數的賦值調整為:
bind_ip=localhost,172.XXX.XXX.XXX
中間使用登號隔開。
<圖3>驗證說明採用上述參數配置後2種登入方式都可以。
<圖3>
說明:(1) 如果不想做IP限制,可以將bind_ip 賦值為0.0.0.0 或者 在配置文件中啟用另外一個參數bind_ip_all,將其設置為true。
以上兩種設置都可以滿足localhost登入和指定ServerIP登入。 當指定bind_ip_all參數時,配置文件中可以沒有bind_ip參數。
(2)登入預設的資料庫不同。在3.6 版本,預設的連接資料庫變成了test,而3.4/3.2 版本預設是admin庫。所以,在設置具有root許可權的管理員賬號時,請先轉至admin下操作(因為賬號的查詢,系統只有在admin才可以查詢,所以root許可權的賬號,建議在admin庫創建,用戶資料庫的賬號,轉到用戶資料庫下創建)。賬號的刪除一定要在歸屬庫下刪除。