Mongo中副本集之间的安全/授权

时间:2013-04-18 22:16:19

标签: mongodb set

我在Mongo中设置了3个节点作为副本集。所有人都在沟通,但是当我启用授权时,我无法弄清楚如何让他们继续沟通。

  • 我让他们全部复制
  • 我在辅助
  • 上的mongod.conf中启用了auth = true

我遇到以下问题:

                    "_id" : 2,
                    "name" : "50.17.?.?:27017",
                    "health" : 0,
                    "state" : 6,
                    "stateStr" : "(not reachable/healthy)",
                    "uptime" : 0,
                    "optime" : {
                            "t" : 1366321962,
                            "i" : 1
                    },
                    "optimeDate" : ISODate("2013-04-18T21:52:42Z"),
                    "lastHeartbeat" : ISODate("2013-04-18T22:04:52Z"),
                    "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
                    "pingMs" : 81,
                    "authenticated" : false,
                    "syncingTo" : "54.244.?.?:27017"

当我通过将auth设置为false来禁用auth时,它显然有效。现在我可能是新手,但不是愚蠢的。我知道它无法连接,因为我启用了授权。但是,一个人在哪里配置主要与auth = true二级同步?或者是否有任何其他解决方案如何在副本集之间启用通信,同时强制客户端需要授权>我到处寻找无济于事。

如果不可能除了使用防火墙之外什么是授权的替代方案?如果有人通过IP破坏可信系统会怎么样?我不希望他们能够在没有密码的情况下连接到辅助或主要。例如,如果我的办公室遭到入侵并且mongo primary信任我们的办公室IP。

1 个答案:

答案 0 :(得分:1)

感谢Asya和我在下面找到的文章,我能够允许用户授权,并且还让副本与密钥文件通信(在所有副本之间共享)。要强调的是,您不能像其他RDBMS那样使用副本与用户进行通信。

你必须记住chmod文件,否则mongod实例不会开始说密钥文件“太开放”。它试图保护你没有显示非必要的Linux用户/组的密钥。你还必须确保你知道mongod(在我的情况下)用户。

Mongodb KeyFile too open permissions