【发布时间】:2020-12-08 06:40:14
【问题描述】:
我正在开发一个使用不同数据库的应用程序,并努力实现正确的用户管理。
假设我们有一个用户“BasicUser”(在 admin 数据库中创建),它只对特定数据库拥有 dbAdmin 权限,在本例中称为“TestDb”。此外,我们还创建了一个没有任何访问权限的用户“TestUser”。
BasicUser 是否有可能为 TestUser 授予对 TestDb 的读/写访问权限?
我在使用 BasicUser 登录时尝试了以下选项
- 使用TestDb; db.grantRolesToUser("TestUser", ["read"]) --> 这会返回找不到用户的错误
- 使用TestDb; db.updateUser("TestUser", {roles: ["read"]}) --> 这会返回一个错误,我们没有被授权执行命令
需要明确的是,我不想为 BasicUser 提供 admin 数据库的任何管理员权限,因为我不希望 BasicUser 看到任何其他数据库。此用户应该只能看到 TestDb 并在此 db 上执行其管理任务。
【问题讨论】:
-
我遇到了同样的问题。在 3.4 版中,文档 https://docs.mongodb.com/v3.4/reference/method/db.grantRolesToUser/#required-access 声明“您必须对数据库执行 grantRole 操作才能授予该数据库的角色。”如果您处于诸如 OpenShift 之类的环境中(其中 db 用户可能没有这些权限),那么分配用户 privs 可能不是一个选项。我的 OpenShift 集群每个数据库只允许一个数据库用户,每个数据库服务只允许一个数据库(在创建数据库时指定)。
标签: mongodb