mongodb使用者與角色使用
此文件以mongodb 4.0版本進行對使用者許可權和角色講解,更詳細內容可參考mongodb官方文件.
官方文件:https://docs.mongodb.com/manual/core/security-users/
一.mongodb內部角色
1.資料庫使用者角色
read --讀取資料庫對像的許可權
readWrite --讀取和修改資料庫對像許可權
2.資料庫管理角色
dbAdmin --執行管理任務角色
dbOwner --資料庫所有者,可以對資料庫所有操作
userAdmin --當前資料庫上建立,修改角色和使用者功能
3.叢集管理角色
clusterAdmin --叢集管理員
clusterManager --管理叢集和監控
clusterMonitor --監控叢集和只讀訪問
hostManager --監控和管理伺服器功能
4.備份恢復角色
backup --備份資料最小許可權
restore --恢復許可權
5.所有資料庫角色
readAnyDatabase --只讀所有資料庫角色
readWriteAnyDatabase --讀寫所有資料庫
userAdminAnyDatabase --除local之外的所有資料庫相同的使用者管理操作訪問許可權
dbAdminAnyDatabase --除local之外的所有資料庫相同的許可權
6.超級使用者角色
root --提供所有資源readWriteAnyDatabase,dbAdminAnyDatabase,userAdminAnyDatabase,clusterAdmin,restore,backup
7.內部角色
__system --提供對資料庫中的任何物件執行任何操作的許可權
二.自定義角色
1.自定義角色格式
{ role: "<name>", privileges: [ { resource: { <resource> }, actions: [ "<action>", ... ] }, ... ], roles: [ { role: "<role>", db: "<database>" } | "<role>", ... ], authenticationRestrictions: [ { clientSource: ["<IP>" | "<CIDR range>", ...], serverAddress: ["<IP>" | "<CIDR range>", ...] }, ... ] }
2.自定義角色(對config庫所有表可以增刪改查,對users庫usersCollection表更新,插入,刪除,對所有資料庫有查詢許可權)
> use admin switched to db admin > db.createRole( { role: "wuhan123", --角色名 privileges: [ { resource: { db: "config", collection: "" }, actions: [ "find", "update", "insert", "remove" ] }, { resource: { db: "users", collection: "usersCollection" }, actions: [ "update", "insert", "remove" ] }, { resource: { db: "", collection: "" }, actions: [ "find" ] } ], roles: [ { role: "read", db: "admin" } ] } ) >
3.列出角色和刪除角色
> db.getRole("wuhan123") --顯示單個角色資訊(wuhan123是角色名) { "role" : "wuhan123", "db" : "admin", "isBuiltin" : false, "roles" : [ { "role" : "read", "db" : "admin" } ], "inheritedRoles" : [ { "role" : "read", "db" : "admin" } ] } > db.getRoles() --顯示當前庫所有角色 [ { "role" : "wuhan123", "db" : "admin", "isBuiltin" : false, "roles" : [ { "role" : "read", "db" : "admin" } ], "inheritedRoles" : [ { "role" : "read", "db" : "admin" } ] } ] > db.dropRole("wuhan123"); --刪除角色 true > db.dropAllRoles(); --刪除所有角色 NumberLong(1) >
三.建立使用者並使用角色
1.建立使用者格式
{ user: "<name>", pwd: "<cleartext password>", customData: { <any information> }, roles: [ { role: "<role>", db: "<database>" } | "<role>", ... ], authenticationRestrictions: [ { clientSource: ["<IP>" | "<CIDR range>", ...] serverAddress: ["<IP>" | "<CIDR range>", ...] }, ... ], mechanisms: [ "<SCRAM-SHA-1|SCRAM-SHA-256>", ... ], passwordDigestor: "<server|client>" }
2.建立使用者使用角色
> use tong --進入資料庫 switched to db tong > db.createUser( ... { ... user: "u_tong", --指定使用者名稱 ... pwd: "system123", --指定密碼 ... roles: [ "readWrite", "dbAdmin" ] --使用資料庫中的角色 ... } ... ) Successfully added user: { "user" : "u_tong", "roles" : [ "readWrite", "dbAdmin" ] } >
2.建立使用者指定來源IP和目標IP
> use tong switched to db tong > db.createUser( { user: "u1_tong", --使用者名稱 pwd: "system123", --密碼 roles: [ { role: "readWrite", db: "tong" } ], --角色 authenticationRestrictions: [ { clientSource: ["192.168.1.10"], --客戶端IP serverAddress: ["192.168.1.20"] --服務端IP } ] } )>
3.檢視使用者和刪除使用者
> db.getUsers(); --檢視當前資料庫所有使用者 [ { "_id" : "tong.u1_tong", "user" : "u1_tong", "db" : "tong", "roles" : [ { "role" : "readWrite", "db" : "tong" } ], "mechanisms" : [ "SCRAM-SHA-1", "SCRAM-SHA-256" ] }, { "_id" : "tong.u_tong", "user" : "u_tong", "db" : "tong", "roles" : [ { "role" : "readWrite", "db" : "tong" }, { "role" : "dbAdmin", "db" : "tong" } ], "mechanisms" : [ "SCRAM-SHA-1", "SCRAM-SHA-256" ] } ] > db.getUser("u_tong"); --檢視指定使用者 { "_id" : "tong.u_tong", "user" : "u_tong", "db" : "tong", "roles" : [ { "role" : "readWrite", "db" : "tong" }, { "role" : "dbAdmin", "db" : "tong" } ], "mechanisms" : [ "SCRAM-SHA-1", "SCRAM-SHA-256" ] } > db.dropUser("u_tong"); --刪除單個使用者 true > db.dropAllUsers(); --刪除當前庫所有使用者 NumberLong(1) >
4.將角色授權給使用者
> db.grantRolesToUser( "u_tong",[ "readWrite" , { role: "read", db: "tong" } ], > )
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25854343/viewspace-2640282/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MongoDB 使用者與許可權管理MongoDB
- PostgreSQL:使用者角色管理SQL
- MongoDB 6.0 單例項基於使用者角色實現授權登入MongoDB單例
- 使用者可在Messenger內讀書並與角色互動Messenger
- MongoDB 6.0.3 使用者管理MongoDB
- AWS EKS 新增IAM使用者角色
- PostgreSQL技術大講堂 - Part 6:PG使用者與角色管理SQL
- Oracle使用者角色許可權管理Oracle
- mongodb使用者許可權管理最全攻略:使用者的建立、檢視、刪除與修改,mongodb入坑之旅MongoDB
- 購買驅動因素與未來角色:10%的iPhone使用者佩戴,Apple Watch 使用者過億iPhoneAPP
- 【Mongo】mongodb的使用者認證MongoDB
- Oracle建立使用者、角色、授權、建表Oracle
- 使用者角色許可權管理架構架構
- 【ASP.NET Core】按使用者角色授權ASP.NET
- Rbac使用者角色許可權表設計
- Mongodb 也有collation 與 如何使用MongoDB
- 【clickhouse專欄】新建庫角色使用者初始化
- 使用者角色許可權控制包 Laravel-permission 使用說明Laravel
- Laravel——使用者角色許可權控制包 Laravel-permissionLaravel
- linux使用者使用者組與ACLLinux
- 對不同角色使用者設定不同的系統首頁
- MongoDB 資料庫安全之使用者密碼修改MongoDB資料庫密碼
- mongodb關於使用者許可權的總結MongoDB
- 當使用者管理系統遇上python和mongodb後……PythonMongoDB
- RabbitMQ使用教程(二)RabbitMQ使用者管理,角色管理及許可權設定MQ
- 09-使用者與使用者組管理
- MySQL新增使用者使用者與授權MySql
- 通過實驗理解PG邏輯結構:1 使用者(角色)
- oracle匯出使用者、表空間和角色的建立語句Oracle
- 使用者角色許可權控制包 Laravel-permission 使用筆記(Laravel5+)Laravel筆記
- MongoDB遷移到Cosmos DB以支援數百萬使用者 - SaketMongoDB
- Mongodb使用MongoDB
- MongoDB 使用MongoDB
- MongoDB圖形化工具的使用與java操作MongoDBJava
- MongoDB 4.0檢視,更新和回收角色許可權步驟MongoDB
- mongodb對資料庫建立使用者名稱和密碼MongoDB資料庫密碼
- MongoDB的使用MongoDB
- MongoDB使用初探MongoDB