【问题标题】:MongoDb - Give user access to specific databaseMongoDb - 授予用户访问特定数据库的权限
【发布时间】: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


【解决方案1】:

admin 数据库中创建用户(实际上我不知道为什么会在其他任何地方创建用户)。

然后授予

db.getSiblingDB("admin").grantRolesToUser( "TestUser", [ { role: "dbOwner", db: "TestDb" } ] )

不清楚您所说的“授予访问权限”是什么意思?也许您只想授予readWrite 而不是dbOwner,请参阅Built-In Roles

【讨论】:

    猜你喜欢
    • 2016-03-13
    • 1970-01-01
    • 2014-04-11
    • 1970-01-01
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 2020-09-05
    • 1970-01-01
    相关资源
    最近更新 更多