MongoDB - 向用户添加数据库和集合级别角色

Meh*_*hai 1 python mongodb pymongo

我花了几个小时才开始研究 MongoDB。我无法弄清楚特定的角色/权限集(也需要知道差异)

这是我的问题:

给定一个数据库db_xyz

用户ABCD可以;

  1. 创建一个或多个集合
  2. 读/写/更新/删除/查找仅访问由以下人员创建的集合ABCD
  3. 可以删除创建的集合ABCD
  4. 无法以任何方式访问 db_xyz 中的其他集合或执行任何其他操作。

我将通过 Mongo 提示并使用 pymongo 混合这些操作。

Cle*_*ath 5

MongoDB 允许我们创建“用户定义的角色”,使用db.createRole(),有关更多信息,请db.createRole() 参见此处

下面的代码是创建一个名为 role_1 的角色,具有读/写/更新/删除/查找选项

use db_xyz
db.createRole(
   {
     role: "role_1",
     privileges: [
       { resource: { db: "db_xyz", collection: "" }, actions: [ "find", "update", "insert", "remove" ] },
     ],
     roles: []
   }
)
Run Code Online (Sandbox Code Playgroud)

创建角色后,请使用db.grantRolesToUser()更多信息,请db.grantRolesToUser() 参阅此处

下面所示的代码是将新创建的role_1分配给我们的用户ABCD

use db_xyz
db.grantRolesToUser(
    "ABCD",
    [
      { role: "role_1", db: "db_xyz" }
    ]
)
Run Code Online (Sandbox Code Playgroud)