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

时间:2018-08-10 07:29:02

标签: python mongodb pymongo

我花了几个小时进入MongoDB。 我无法弄清楚特定的角色/特权集(也需要了解差异)

这是我的问题:

提供了一个数据库db_xyz

用户ABCD可以;

  1. 创建一个或多个收藏夹
  2. 仅对ABCD创建的集合进行读/写/更新/删除/查找访问
  3. 可以删除由ABCD创建的收藏集
  4. 不能以任何方式访问db_xyz中的其他集合或执行任何其他操作。

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

1 个答案:

答案 0 :(得分:1)

MongoDB允许我们使用db.createRole()创建"User Defined Roles",以获取有关db.createRole() see here

的更多信息。

以下代码用于创建一个具有读取/写入/更新/删除/查找选项的角色Role_1

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

创建角色后,在db.grantRolesToUser() see here上使用db.grantRolesToUser()更多信息

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

use db_xyz
db.grantRolesToUser(
    "ABCD",
    [
      { role: "role_1", db: "db_xyz" }
    ]
)