在 MongoDB 中定义用户和角色
Define users and roles in MongoDB
我正在尝试在 MongoDB 中定义一个用户,该用户能够读取数据库中的所有集合,但只能将数据插入两个集合:日志和指标。
我使用了下一个命令来设置它:
创建角色:
use Emerald
db.runCommand({ createRole: "ApiReaderRole",
privileges: [
{ resource: { db: "Emerald", collection: "Metrics" }, actions: [ "insert" ] },
{ resource: { db: "Emerald", collection: "Logs" }, actions: [ "insert" ] }
],
roles: [
{ role: "read", db:"Emerald" }
],
writeConcern: { w: "majority" , wtimeout: 5000 }
})
创建用户:
use Emerald
db.createUser({
"user": "EmeraldAPIreader",
"pwd": "emrldApi+",
"roles": [
{
role: "ApiReaderRole",
db: "Emerald"
},
{
role: "read",
db: "Emerald"
}
]
},
{
w: "majority",
wtimeout: 5000
})
我将所需的凭据添加到连接字符串,当我尝试(通过 C# 代码)将数据插入到我定义为只读的集合时,它成功了(我希望得到未经授权的异常).
我做错了什么?
已解决,
我在Auth - Client Access Control模式下没有运行MongoDB服务。
现在,使用 Auth 标志,一切正常。
我正在尝试在 MongoDB 中定义一个用户,该用户能够读取数据库中的所有集合,但只能将数据插入两个集合:日志和指标。
我使用了下一个命令来设置它: 创建角色:
use Emerald
db.runCommand({ createRole: "ApiReaderRole",
privileges: [
{ resource: { db: "Emerald", collection: "Metrics" }, actions: [ "insert" ] },
{ resource: { db: "Emerald", collection: "Logs" }, actions: [ "insert" ] }
],
roles: [
{ role: "read", db:"Emerald" }
],
writeConcern: { w: "majority" , wtimeout: 5000 }
})
创建用户:
use Emerald
db.createUser({
"user": "EmeraldAPIreader",
"pwd": "emrldApi+",
"roles": [
{
role: "ApiReaderRole",
db: "Emerald"
},
{
role: "read",
db: "Emerald"
}
]
},
{
w: "majority",
wtimeout: 5000
})
我将所需的凭据添加到连接字符串,当我尝试(通过 C# 代码)将数据插入到我定义为只读的集合时,它成功了(我希望得到未经授权的异常). 我做错了什么?
已解决, 我在Auth - Client Access Control模式下没有运行MongoDB服务。 现在,使用 Auth 标志,一切正常。