我试图创建一个允许的扩展角色 - 在任何数据库上读/写 - 允许任何数据库上的collMod - 允许在任何数据库上使用createCollection - 只读管理员数据库
我尝试了以下
use admin
db.runCommand({ createRole: "_ReadWriteAnyDatabase",
privileges: [
{ resource: { db: "", collection: "" }, actions: [ "collMod", "createCollection" ] }
],
roles: [
"readWriteAnyDatabase",
{ role: "read", db : "admin" }
]
})
然后我在admin数据库上创建了用户,因为我无法在备用数据库上创建用户
但我发现我可以在管理数据库中创建和删除集合
mongo admin -u user1 -p user1
db.createCollection('mycollection')
{ ok : 1 }
db.mycollection.drop()
{ ok : 1 }
答案 0 :(得分:1)
如果您授予用户“readWriteAnyDatabase”角色,则无法排除admin DB。因此,解决方案是为所有其他数据库使用“readWrite”角色,但之后用户无法创建新数据库。
您可以创建脚本(循环; forEach())列出所有数据库(不包括admin,local,config)并向用户授予“readWrite”权限。