在 MongoDB 7.0 版本中,仅具有“查找”权限创建的角色可以执行删除和写入操作。我怎样才能防止这种情况发生?

问题描述 投票:0回答:1

我正在使用 MongoDB 社区版本 7.0。问题是,我只授予“读取”权限的用户可以删除集合并执行写入操作。我无法准确理解问题发生在哪里。有人遇到过这种情况吗

以下是我创建用户时遵循的步骤。

use admin
db.createRole({
   role: "findRole",
   privileges: [
     { resource: { db: "example", collection: "" }, actions: ["find"] }
   ],
   roles: []
})

db.createUser({user: 'emre', pwd: 'password123', roles: [{role: 'findRole', db: 'example'}]})

定义用户后,我使用 MongoDB Compass 登录。当我运行“db.test.drop()”命令时,它能够删除集合。 我等待你的帮助

我尝试在MongoDB中创建一个只读用户,但是我创建的用户仍然可以执行写操作。我想解决这个问题。

mongodb nosql mongodb-compass mongodb-replica-set
1个回答
0
投票

首先,您是否启用了身份验证?默认情况下它是禁用的。

其次,您执行了

use admin
,因此角色
findRole
的作用域为
admin
数据库。您必须授予

roles: [{role: 'findRole', db: 'admin'}] 

您还可以授予 built-in 角色,而不是创建用户定义的角色:

roles: [{role: 'read', db: 'example'}] 

应该是一样的。

© www.soinside.com 2019 - 2024. All rights reserved.