每日一句
Sometimes your whole life boils down to one insane move.
人一生中出人頭地的機會不多,一旦有了一定要抓住!
概述
默認情況下,MongoDB實體啟動運行時是沒有啟用用戶訪問權限控制的,也就是說,在實體本機服務器上都可以隨意連接到實體進行各種操作,MongoDB不會對連接客戶端進行用戶驗證,這是非常危險的,
可以通過以下的幾種方式來保障 MongoDB的安全:
- 使用新的埠,默認的 27017 埠如果一旦知道了IP就能連接上,不太安全
- 設定MongoDB的網路環境,最好將MongoDB部署到公司服務器內網,這樣外網是訪問不到的,公司內部訪問使用VPN等,
- 開啟安全認證,認證要同時設定服務器之間的內部認證方式,同時設定客戶端連接到集群的賬號密碼認證方式,
為了強制開啟用戶訪問控制(用戶驗證),則需要在MongoDB實體啟動時使用選項 --auth 或在指定啟動組態檔中添加選項 auth=true
相關概念
啟動訪問控制
MongoDB使用的是基于角色的訪問控制(Role-Based-Access-Control,RBAC)來管理用戶對實體的訪問,通過對用戶授予一個或多個角色來控制用戶訪問資料庫資源的權限和資料庫操作的權限,在對用戶分配角色之前,用戶無法訪問實體,
角色
在MongoDB中通過角色對用戶授予相應資料庫資源的操作權限,每個角色當中的權限可以顯式指定,也可以通過繼承其他角色的權限,或者兩者都存在的權限,
權限
權限由指定的資料庫資源(resource)以及允許在指定資源上進行的操作(action)組成,
- 資源(resource):資料庫、集合、部分集合和集群
- 操作(action):對資源進行的增、刪、改、查(CRUD)操作
角色
在角色定義時可以包含一個或多個已存在的角色,新創建的角色會繼承包含的角色所有的權限,在同一個資料庫中,新創建角色可以繼承其他角色的權限,在 admin 資料庫中創建的角色可以繼承在其它任意資料庫中角色的權限,
角色相關命令
# 查詢所有角色權限(僅用戶自定義角色)
db.runCommand({ rolesInfo: 1 })
# 查詢所有角色權限(包含內置角色)
db.runCommand({ rolesInfo: 1, showBuiltinRoles: true })
# 查詢當前資料庫中的某角色的權限
db.runCommand({ rolesInfo: "<rolename>" })
# 查詢其它資料庫中指定的角色權限
db.runCommand({ rolesInfo: { role: "<rolename>", db: "<database>" } }
# 查詢多個角色權限
db.runCommand( { rolesInfo: [ "<rolename>", { role: "<rolename>", db: "<database>" }, ... ] } )
常用的內置角色:
- 資料庫用戶角色:
read、readWrite - 所有資料庫用戶角色:
readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase - 資料庫管理角色:
dbAdmin、dbOwner、userAdmin; - 集群管理角色:
clusterAdmin、clusterManager、clusterMonitor、hostManager; - 備份恢復角色:
backup、restore; - 超級用戶角色:
root - 內部角色:
system
角色說明:
| 角色 | 權限描述 |
| read | 可以讀取指定資料庫中任何資料, |
| readWrite | 可以讀寫指定資料庫中任何資料,包括創建、重命名、洗掉集合, |
| readAnyDatabase | 可以讀取所有資料庫中任何資料(除了資料庫confifig和local之外), |
| readWriteAnyDatabase | 可以讀寫所有資料庫中任何資料(除了資料庫confifig和local之外), |
| userAdminAnyDatabase | 可以在指定資料庫創建和修改用戶(除了資料庫confifig和local之外), |
| dbAdminAnyDatabase | 可以讀取任何資料庫以及對資料庫進行清理、修改、壓縮、獲取統計資訊、執行檢查等操作(除了資料庫confifig和local之外), |
| dbAdmin | 可以讀取指定資料庫以及對資料庫進行清理、修改、壓縮、獲取統計資訊、執行檢查等操作, |
| userAdmin | 可以在指定資料庫創建和修改用戶, |
| clusterAdmin | 可以對整個集群或資料庫系統進行管理操作, |
| backup | 備份MongoDB資料最小的權限, |
| restore | 從備份檔案中還原恢復MongoDB資料(除了system.profifile集合)的權限, |
| root | 超級賬號,超級權限 |
美文佳句
人生其實就像一場旅行,不必在乎目的地,在乎的是沿途的風景以及看風景的心情,忙碌的生活中懂得適時停下腳步欣賞一路走來的風景,是一種享受,是一種需要,是一種智慧,更是一種對待人生的態度,
花隨風落,雨伴云晴,過客匆匆,相逢有期,路過的風景,經過的往事,放在心間就好,感恩生活的所有,珍惜所有的有緣人,努力讓自己活得更幸福快樂一點,
你好,我是yltrcc,日常分享技術點滴,歡迎關注我的公眾號:ylcoder
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/415267.html
標籤:其他
上一篇:如何自學編程?
下一篇:MongoDB 分片集群

