我很快就需要分割一个数据库,并且不清楚在mongos和config服务器上启用身份validation的最佳实践。
我想所有的东西都用密码保护。
auth ? 谢谢!
我会一次拿这一个:
每个configuration服务器都应该启用auth?
是的,基本上每个你运行的mongod应该启用auth(和keyfile, 这意味着auth )。
如果是这样,那么在每个设置相同的用户? 只为pipe理数据库? 或者是否需要为configuration数据库创build一个?
分片环境中的admin数据库实际上将位于configuration服务器上。 因此,你将拥有三个pipe理数据库的副本(它们将是相同的)。 您应该始终通过mongos连接到configuration数据库,您不会在那里创build其他数据库,因此不需要添加特定的用户。
我猜你不需要在mongos上创build任何用户,因为它应该从configuration和碎片本身inheritance,这是正确的吗?
您添加的第一个分片(如果它具有现有数据库)将成为这些数据库的主要分片(永远)。 该主分片将包含这些数据库的authenticationlogging,即使您随后在多个分片中分片收集。 在分片之后创build的任何后续数据库都可能位于另一个分片上,并且其凭据将存储在那里。 基本的经验法则是:使用mongos在分散的环境中pipe理您的用户。
注意:以上是MongoDB 2.4及以下的版本。 2.6中计划的更改将所有凭据集中到分布式环境中的configuration数据库,并消除一些复杂性。 然而,经验法则仍然适用,使用mongos
添加新的分片时,是否需要为新的分片上的每个分片数据库设置相同的用户?
正如前面问题的答案所暗示的, 只要你总是通过mongos连接 (推荐 – 它知道每个数据库的主分片是什么,并且将适当地路由你的authentication请求),否则这是没有必要的。 在某些情况下,您可能需要在所有分片上拥有这些用户,在这种情况下,您必须在每个分片上添加(并维护)这些分片,但通常不需要。
看看这里find你的答案。 build议您使用keyFile以及networking级别的访问控制,通常是防火墙来保证服务器的安全。
最近的mongodb版本也支持Kerberos身份validation。 你可以在这里find信息。