【问题标题】:MongoDB permissions error to access Config collection访问 Config 集合的 MongoDB 权限错误
【发布时间】:2021-07-10 19:25:20
【问题描述】:

我正在尝试找出 MongoDB 4.0 中的哪个内置角色可以执行以下查询:

Caused by: com.mongodb.MongoQueryException: Query failed with error code 13 and error message 'not authorized on config to execute command { find: "system.sessions", filter: {}, $db: "config", $clusterTime: { clusterTime: Timestamp(1625944650, 1), signature: { hash: BinData(0, 5B0A62A5164EB17E7C0A1EB182AE1B9B44FC8DEF), keyId: 6983378611524861955 } }, lsid: { id: UUID("814ada4e-e25d-4598-89a5-197c9962eb50") }, $readPreference: { mode: "primaryPreferred" } }' on server localhost:27017

我尝试了以下方法:

db.createUser(
   {user: "order", pwd: "xxxx", 
    roles: [
        {role: "root", db: "admin"}, 
        {role: "clusterManager", db: "admin"}, 
        {role: "clusterMonitor", db: "admin"}]
   });

但是,我很确定我使用了错误的角色(或者完全遗漏了其他东西)。

编辑** 回答以下问题:

我以刚刚在上面创建的用户身份运行查询。我还尝试使用内置的 root 帐户(我对 Mongo 很陌生,所以我还在学习)。

文档将 clusterManager 称为角色内置的“listSessions”操作。

我正在使用 CDC 库 - Debezium,因此它会自动对会话集合进行查询。

【问题讨论】:

  • 您以什么用户身份运行此查询?该错误表明您试图在没有所需权限的情况下将用户添加到数据库。
  • 您不需要在 roleroot 上授予 clusterManager 或 clusterMonitor - 它已经包含在内。
  • 您可能不需要在会话集合上找到权限,有一个单独的命令:$listSessions
  • 我以刚刚在上面创建的用户身份运行查询。我还尝试使用内置的 root 帐户(我对 Mongo 很陌生,所以我还在学习)。文档将 clusterManager 称为角色内置的“listSessions”操作。我正在使用 CDC 库 - Debezium,因此它会自动对会话集合进行查询。

标签: mongodb permission-denied


【解决方案1】:

您需要将 listSessions 操作添加到您的角色到集群资源才能列出会话...

【讨论】:

  • 您能举个例子吗?在我正在查看的 Mongo 文档中,它说 clusterManager 角色具有“listSessions”,并且根据上面的评论 - 一位用户提到“clusterManager”已经是 root 的一部分。所以我假设上述角色之一会涵盖它,但它没有。
【解决方案2】:

我最终通过执行以下操作解决了这个问题(我使用的是一个名为 Debezium 的 CDC 库,它们在文档中不是很清楚)

db.createUser({user: "order", pwd: "xxxx", roles: ["debezium"]});

db.createRole({
    role: "debezium",
    privileges: [
        { resource: { db: "config", collection: "" }, actions: [ "find" ] },
        { resource: { db: "local", collection: "oplog.rs" }, actions: [ "find" ] },
        { resource: { db: "", collection: ""}, actions: ["listDatabases", "listCollections", "find"] }
    ],
    roles: [
        { role: "readWrite", db: "admin" }
    ]
})

我需要对它进行更多调整,以使其对这个特定角色更安全。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-09
    • 2017-09-24
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多