MongoDB安全配置

2021-12-30 10:48:40 字數 3256 閱讀 7091

1.mongodb安裝時不新增任何引數,預設是沒有許可權驗證的,登入的使用者可以對資料庫任意操作而且可以遠端訪問資料庫,需以--auth引數啟動。

2.在剛安裝完畢的時候mongodb都預設有乙個admin資料庫,此時admin資料庫是空的,沒有記錄許可權相關的資訊。當admin.system.users乙個使用者都沒有時,即使mongod啟動時新增了--auth引數,如果沒有在admin資料庫中新增使用者,此時不進行任何認證還是可以做任何操作(不管是否是以--auth 引數啟動),直到在admin.system.users中新增了乙個使用者。

3.mongodb的訪問分為連線和許可權驗證,即使以--auth引數啟動還是可以不使用使用者名稱連線資料庫,但是不會有任何的許可權進行任何操作

4.admin資料庫中的使用者名稱可以管理所有資料庫,其他資料庫中的使用者只能管理其所在的資料庫。

5.在2.4之前版本中,使用者的許可權分為唯讀和擁有所有許可權;2.4版本的許可權管理主要分為:資料庫的操作許可權、資料庫使用者的管理許可權、集群的管理許可權,建議由超級使用者在admin資料庫中管理這些使用者。不過依然相容2.4版本之前的使用者管理方法。

資料庫的唯讀許可權,包括:

aggregate,checkshardingindex,clonecollectionascapped,collstats,count,datasize,dbhash,dbstats,distinct,filemd5,mapreduce (inline output only.),text (beta feature.)geonear,geosearch,geowalk,group資料庫的讀寫許可權,包括:

read角色的所有許可權

clonecollection (as the target database.),converttocapped,create (and to create collections implicitly.),renamecollection (within the same database.)findandmodify,mapreduce (output to a collection.) drop(),dropindexes,emptycapped,ensureindex()資料庫的管理許可權,包括:

clean,collmod,collstats,compact,converttocappe create,db.createcollection(),dbstats,drop(),dropindexes ensureindex(),indexstats,profile,reindex renamecollection (within a single database.),validate資料庫的使用者管理許可權

集群管理許可權(副本集、分片、主從等相關管理),包括:

addshard,closealldatabases,connpoolstats,connpoolsync,_cpuprofilerstart_cpuprofilerstop,cursorinfo,diaglogging,dropdatabase shardingstate,shutdown,splitchunk,splitvector,split,top,touchresync serverstatus,setparameter,setshardversion,shardcollection replsetmaintenance,replsetreconfig,replsetstepdown,replsetsyncfrom repairdatabase,replsetfreeze,replsetgetstatus,replsetinitiate logrotate,movechunk,moveprimary,netstat,removeshard,unsetsharding hostinfo,db.currentop(),db.killop(),listdatabases,listshardsgetcmdlineopts,getlog,getparameter,getshardmap,getshardversion enablesharding,flushrouterconfig,fsync,db.fsyncunlock()任何資料庫的唯讀許可權(和read相似)

任何資料庫的讀寫許可權(和readwrite相似)任何資料庫使用者的管理許可權(和useradmin相似)

任何資料庫的管理許可權(dbadmin相似)

加了--auth之後mongodb才需要驗證

不加會有乙個28017的埠監聽,可以通過網頁管理mongodb,不需要請去掉

加之後可以限制訪問的ip

加了之後可以重新制定埠,預設為27017

只有在admin資料庫中新增乙個使用者後才能使認證生效

注:安裝的過程其實就是新增1個服務,指定啟動時候的引數。

1.1、進入admin建立乙個管理賬號use admin db.adduser("test","test")1.2、進入需要使用的資料庫中建立乙個程式使用使用者use test db.adduser("test","test")預設擁有讀寫許可權 db.adduser("test","test",true)擁有讀取許可權2.1、進入admin建立乙個管理賬號use admin db.adduser("test","test")2.2、進入admin給使用的資料庫test建立乙個對資料庫及日誌擁有讀寫許可權的賬戶

use admin db.adduser(})預設情況下mongodb是無需驗證的,所以這是至關重要的一步

具體根據實際情況來設定,也可以直接在伺服器防火牆上做

預設的web管理一般不會用,且很多人不知道,最好關閉

4. 管理使用者處理

因需要在admin中建立乙個管理賬戶用於管理,最好是設定強密碼,但是不要給其他程式使用

windows下可以使用network service 或者新建乙個使用者,使用預設的users組,然後新增給予資料庫檔案及日誌儲存目錄的寫許可權,並建議取消對cmd等程式的執行許可權。

linux下新建乙個賬戶,給予程式的執行許可權和資料庫檔案及日誌目錄的讀寫許可權,並建議取消對sh等程式的執行許可權。

**或者其他程式使用的使用者只給予對應庫的許可權,不要使用admin資料庫中的管理賬戶。

mongod --dbpath d:\mongodb\data --logpath d:\mongodb\log\mongodb.log ----nohttpinte***ce --auth --installuse admin db.adduser("test","test")show dbsuse testmongo test -uroot -p123456db.auth("username","password")db.system.users.find()就寫幾個基本的,其他的網上很多,或者用工具連上去之後操作。

客戶端形式的管理工具

基於php的web管理

不足之處求大牛指正!

MongoDB安全指引

mongodb社群版有三大主要安全措施,分別是安全認證 角色授權和tls ssl傳輸加密。當然除此之外,定期做資料庫備份,也是很好的安全防範手段。另外,本文還將對一些提公升mongodb安全性的細節做闡述。其中部分安全措施,暫時不能細化操作步驟,以後實踐中再補充。開發期間做過多的安全配置,會影響開發...

MongoDB安全認證

切換到admin資料庫對使用者的新增 use admin db.createuser userdocument 用於建立 mongodb 登入使用者以及分配許可權的方法 db.createuser 要使用安全認證必須新增超級使用者,以及針對某個庫的使用者 建立管理員 建立普通使用者 mongodb ...

Mongodb寫安全設定

在nosql資料庫中,mongodb資料庫被認為是未來新秀。mongodb主從模式中一般被設定成讀寫分離,即寫操作在主節點,讀操作在從節點。但是mongodb的主從模式是根據從節點定期到拉取主節點oplog檔案中儲存的寫操作命令,那麼問題就來了,如何保證每次在從節點讀取到的資料都是最新的呢。在檢視m...