關於tiobe程式語言排行榜的開發語言排名有什麼實際作用嗎?
阿新 • • 發佈:2020-11-17
MongoDB的使用者和角色許可權簡介
預設情況下,
MongoDB
例項啟動執行時是沒有啟用使用者訪問許可權控制的,也就是說,在例項本機伺服器上都可以隨意連線到例項進行各種操作,MongoDB
不會對連線客戶端進行使用者驗證。為了強制開啟使用者訪問控制(使用者驗證),則需要在
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>" }, ... ] })
示例:
檢視所有內建角色:
> db.runCommand({rolesInfo:1, showBuiltinRoles:true})
{
"roles" : [
{
"role" : "__queryableBackup",
"db" : "admin",
"isBuiltin" : true,
"roles" : [ ],
"inheritedRoles" : [ ]
},
{
"role" : "__system",
"db" : "admin",
"isBuiltin" : true,
"roles" : [ ],
"inheritedRoles" : [ ]
},
{
"role" : "backup",
"db" : "admin",
"isBuiltin" : true,
"roles" : [ ],
"inheritedRoles" : [ ]
},
{
"role" : "clusterAdmin",
"db" : "admin",
"isBuiltin" : true,
"roles" : [ ],
"inheritedRoles" : [ ]
},
{
"role" : "clusterManager",
"db" : "admin",
"isBuiltin" : true,
"roles" : [ ],
"inheritedRoles" : [ ]
},
{
"role" : "clusterMonitor",
"db" : "admin",
"isBuiltin" : true,
"roles" : [ ],
"inheritedRoles" : [ ]
},
{
"role" : "dbAdmin",
"db" : "admin",
"isBuiltin" : true,
"roles" : [ ],
"inheritedRoles" : [ ]
},
{
"role" : "dbAdminAnyDatabase",
"db" : "admin",
"isBuiltin" : true,
"roles" : [ ],
"inheritedRoles" : [ ]
},
{
"role" : "dbOwner",
"db" : "admin",
"isBuiltin" : true,
"roles" : [ ],
"inheritedRoles" : [ ]
},
{
"role" : "enableSharding",
"db" : "admin",
"isBuiltin" : true,
"roles" : [ ],
"inheritedRoles" : [ ]
},
{
"role" : "hostManager",
"db" : "admin",
"isBuiltin" : true,
"roles" : [ ],
"inheritedRoles" : [ ]
},
{
"role" : "read",
"db" : "admin",
"isBuiltin" : true,
"roles" : [ ],
"inheritedRoles" : [ ]
},
{
"role" : "readAnyDatabase",
"db" : "admin",
"isBuiltin" : true,
"roles" : [ ],
"inheritedRoles" : [ ]
},
{
"role" : "readWrite",
"db" : "admin",
"isBuiltin" : true,
"roles" : [ ],
"inheritedRoles" : [ ]
},
{
"role" : "readWriteAnyDatabase",
"db" : "admin",
"isBuiltin" : true,
"roles" : [ ],
"inheritedRoles" : [ ]
},
{
"role" : "restore",
"db" : "admin",
"isBuiltin" : true,
"roles" : [ ],
"inheritedRoles" : [ ]
},
{
"role" : "root",
"db" : "admin",
"isBuiltin" : true,
"roles" : [ ],
"inheritedRoles" : [ ]
},
{
"role" : "userAdmin",
"db" : "admin",
"isBuiltin" : true,
"roles" : [ ],
"inheritedRoles" : [ ]
},
{
"role" : "userAdminAnyDatabase",
"db" : "admin",
"isBuiltin" : true,
"roles" : [ ],
"inheritedRoles" : [ ]
}
],
"ok" : 1
}
常見的內建角色
- 資料庫使用者角色:
read
、readWrite
- 資料庫管理角色:
dbAdmin
、dbOwner
、userAdmin
- 叢集管理角色:
clusterAdmin
、clusterManager
、clusterMonitor
- 所有資料庫使用者角色:
readAnyDatabase
、readWriteAnyDatabase
、userAdminAnyDatabase
、dbAdminAnyDatabase
- 備份恢復角色:
backup
、restore
- 超級使用者角色:
root
- 內部角色:
system