在 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 标志,一切正常。