MongoDB安全配置詳解

來源:互聯網
上載者:User

   這篇文章主要介紹了MongoDB安全配置詳解,本文來自國內安全廠商烏雲平台,講解的還是比較全面的,需要的朋友可以參考下

  0x00 MongoDB許可權介紹

  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版本之前的使用者管理方法。

  0x01 MongoDB中使用者的角色說明

  1. read角色

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

   代碼如下:

  aggregate,checkShardingIndex,cloneCollectionAsCapped,collStats,count,dataSize,dbHash,dbStats,distinct,filemd5,mapReduce (inline output only.),text (beta feature.)geoNear,geoSearch,geoWalk,group

  2. readWrite角色

  資料庫的讀寫權限,包括:

  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()

  3. dbAdmin角色

  資料庫的系統管理權限,包括:

   代碼如下:

  clean,collMod,collStats,compact,convertToCappe

  create,db.createCollection(),dbStats,drop(),dropIndexes

  ensureIndex(),indexStats,profile,reIndex

  renameCollection (within a single database.),validate

  4. userAdmin角色

  資料庫的使用者系統管理權限

  5. clusterAdmin角色

  叢集系統管理權限(複本集、分區、主從等相關管理),包括:

   代碼如下:

  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,getSha

rdVersion

  enableSharding,flushRouterConfig,fsync,db.fsyncUnlock()

  6. readAnyDatabase角色

  任何資料庫的唯讀許可權(和read相似)

  7. readWriteAnyDatabase角色

  任何資料庫的讀寫權限(和readWrite相似)

  8. userAdminAnyDatabase角色

  任何資料庫使用者的系統管理權限(和userAdmin相似)

  9. dbAdminAnyDatabase角色

  任何資料庫的系統管理權限(dbAdmin相似)

  0x02 MongoDB安裝注意事項

  1. 安裝的時候需要加--auth

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

  2. 需要加--nohttpinterface

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

  3. 可以加--bind_ip

  加之後可以限制訪問的ip

  4. 可以加--port

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

  5. 安裝完之後需立即在admin資料庫中添加一個使用者

  只有在admin資料庫中添加一個使用者後才能使認證生效

  註:安裝的過程其實就是添加1個服務,指定啟動時候的參數。

  0x03 使用者授權

  1. 2.4之前版本的使用者管理方式

  1.1、進入admin建立一個管理帳號

  代碼如下:

  use admin

  db.addUser("test","test")

  1.2、進入需要使用的資料庫中建立一個程式使用使用者

   代碼如下:

  use test

  db.addUser("test","test")預設擁有讀寫權限

  db.addUser("test","test",True)擁有讀取許可權

  2. 2.4版本的使用者管理,也可使用之前版本的方式

  2.1、進入admin建立一個管理帳號

   代碼如下:

  use admin

  db.addUser("test","test")

  2.2、進入admin給使用的資料庫test建立一個對資料庫及日誌擁有讀寫權限的賬戶

   代碼如下:

  use admin

  db.addUser({

  "user": "test",

  "pwd": "test",

  "roles": [ ],

  "otherDBRoles": {

  "test": [

  "readWrite"

  ],

  "test_log": [

  "readWrite"

  ]

  }

  })

  0x04 安全配置方案

  1. 安裝的時候加--auth,並立即在admin資料庫建立一個使用者

  預設情況下MongoDB是無需驗證的,所以這是至關重要的一步

  2. 可以考慮安裝的時候修改連接埠和指定訪問ip

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

  3. 安裝的時候建議加上--nohttpinterface取消預設的一個網頁管理方式

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

  4. 系統管理使用者處理

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

  5. MongoDB服務運行賬戶

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

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

  6. 控制好網站或者其他程式使用的串連使用者權限

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

  0x05 常用命令

  1. 安裝

  代碼如下:

  mongod --dbpath d:mongodbdata --logpath d:mongodblogmongodb.log ----nohttpinterface --auth --install

  2. 添加使用者

  代碼如下:

  use admin

  db.addUser("test","test")

  3. 顯示所有資料庫

   代碼如下:

  show dbs

  4. 使用某個資料庫

   代碼如下:

  use test

  5. 串連資料庫

  代碼如下:

  mongo test -uroot -p123456

  6. 添加使用者認證

  代碼如下:

  db.auth("username","password")

  7. 查看使用者

  代碼如下:

  db.system.users.find()

  就寫幾個基本的,其他的網上很多,或者用工具連上去之後操作。

  0x06 管理工具

  1. MongoVUE

  用戶端形式的管理工具

  2. rockmongo

  基於php的web管理

  不足之處求大牛指正!

相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。