合理分配用戶權限,保證數據庫安全
更新時間 2023-08-29 15:14:27
最近更新時間: 2023-08-29 15:14:27
分享文章
本頁介紹了如何通過合理分片用戶權限,保障數據庫安全。
用戶在控制臺上創建文檔數據庫服務實例成功之后,默認會分配 root 用戶進行數據庫操作。root 用戶具備超級權限,可以對整個實例的庫表進行讀寫,以及創建刪除等管理操作。
如果文檔數據庫服務實例被多個業務使用,建議按照數據庫和讀寫操作類型再創建獨立的用戶。通過對不同類型的業務分配最小最合適的操作權限,避免出現用戶權限過大帶來的安全風險。
文檔數據庫服務實例支持的所有操作都是基于 role 進行權限校驗的,role 定義了操作行為,比如是否讀寫,是否能進行管理或者監控類的操作等。一個 用戶可以包含1 個或者多個 role。
可以執行下面的命令,創建一個只對 db1 數據庫有讀權限的用戶 user1:
db.createUser({user:"user1", pwd: <替換為實際的密碼>, roles:[{role:"read", db:"db1"}]})
創建成功后通過 user1 登錄,則只能看到 db1 數據庫下面的表,并只能執行讀數據操作。
如果希望創建一個能讀 db1, 能讀寫 db2 的用戶 user2, 可以在使用 root 登錄后執行下面的命令:
db.createUser({user:"user2", pwd:<替換為實際的密碼>, roles:[{role:"read", db:"db1"}, {role:"readWrite", db:"db2"}]})
創建成功后通過 user2 登錄,則可以看到 db1 和 db2 數據庫下面的表,對 db1 的表只能執行讀操作,對 db2 可以執行建表和刪表操作以及表的讀寫操作。