Mongo 分片 - 配置服务器和 Mongo 身份验证

nak*_*kor 6 security authentication sharding mongodb

我需要以很快就会分片的数据库,并且对我最好的做法是什么在启用身份验证不清mongosconfig服务器。

我想用密码保护一切。

  1. 每个配置服务器都应该auth启用吗?
  2. 如果是这样,那么每个用户都设置相同的用户?仅用于管理数据库?或者是否需要为配置数据库创建一个?
  3. 我猜你不需要在 mongos 上创建任何用户,因为它应该从配置和分片本身继承,这是正确的吗?
  4. 添加新分片时,是否需要为新分片上的每个分片数据库设置相同的用户?

谢谢!

Ada*_*m C 3

我会一次拿这些:

每个配置服务器都应该启用身份验证吗?

是的,基本上您运行的每个 mongod 实例都应该启用 auth (和 keyfile,这意味着 auth)。

如果是这样,那么每个用户都设置相同的用户吗?只是为了管理数据库?或者是否需要为配置数据库创建一个?

分片环境中的管理数据库实际上位于配置服务器上。因此,您将在所有三个服务器上拥有管理数据库的副本(它们彼此相同)。您应该始终通过连接到配置数据库,mongos并且不会在那里创建其他数据库,因此无需添加特定用户。

我猜你不需要在 mongos 上创建任何用户,因为它应该继承自配置和分片本身,这是正确的吗?

您添加的第一个分片(如果它具有现有数据库)将成为这些数据库的主分片(永远)。该主分片​​将包含这些数据库的身份验证记录,即使您随后将集合分片到多个分片也是如此。在分片后创建的任何后续数据库都可能存在于另一个分片上,并且它们的凭据将存储在那里。基本经验法则是:用于mongos在分片环境中管理用户。

注意:上述情况在 MongoDB 2.4 及以下版本中均适用。2.6 中计划的更改将把所有凭据集中到分片环境中的配置数据库,并消除一些复杂性。然而,经验法则仍然适用,使用mongos

添加新分片时,是否需要为新分片上的每个分片数据库设置相同的用户?

正如上一个问题的答案所暗示的那样,只要您始终通过以下方式连接,mongos就没有必要(推荐 - 它知道每个数据库的主分片是什么,并将适当地路由您的身份验证请求)。在某些边缘情况下,您可能需要在所有分片上拥有用户,在这种情况下,您必须在每个分片上添加(和维护)它们,但对于一般用途来说,这不是必需的。