MST

星途 面试题库

面试题:MongoDB分片集群如何配置身份验证

请阐述在MongoDB分片集群环境下,配置身份验证的主要步骤和涉及到的关键组件,以及不同组件(如mongos、config server、shard server)在身份验证配置方面有什么区别。
24.8万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试

主要步骤

  1. 创建管理员用户:在MongoDB的admin数据库中创建管理员用户,使用createUser命令。例如:
use admin
db.createUser(
   {
     user: "adminUser",
     pwd: "adminPassword",
     roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
   }
)
  1. 开启身份验证:在所有节点(mongos、config server、shard server)的配置文件中添加security.authorization: enabled
  2. 为各个数据库创建用户:连接到每个需要认证的数据库,使用管理员用户登录后,为该数据库创建普通用户。例如:
use testDB
db.createUser(
   {
     user: "testUser",
     pwd: "testPassword",
     roles: [ { role: "readWrite", db: "testDB" } ]
   }
)

关键组件

  1. mongos:作为分片集群的查询路由器,接收客户端请求并转发到相应的分片。需要配置security.authorization: enabled来开启身份验证。它会从config server获取认证相关信息。
  2. config server:存储集群的元数据,包括分片信息、数据库和集合的路由信息等。同样需要security.authorization: enabled配置开启认证。它保存了整个集群的用户信息,是身份验证的重要数据存储处。
  3. shard server:实际存储数据的节点,也需要通过security.authorization: enabled开启认证。它从config server获取认证配置,验证客户端请求。

组件在身份验证配置方面的区别

  1. mongos:主要负责接收客户端请求并转发,自身不存储用户数据,依赖config server获取认证信息。它对客户端请求进行初步认证,然后将请求转发到相应分片。
  2. config server:存储整个集群的用户信息和认证配置,是认证信息的核心存储组件。其他组件(mongos和shard server)依赖它获取认证相关数据。
  3. shard server:负责实际的数据存储和读取,根据从config server获取的认证信息对本地数据的访问请求进行验证。在配置上与mongos、config server类似,但功能主要集中在本地数据的访问控制。