MST

星途 面试题库

面试题:MongoDB分片集群安全性配置之身份验证

在MongoDB分片集群中,如何配置基于角色的访问控制(RBAC)来进行身份验证?请描述主要步骤及相关命令。
33.5万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试
  1. 开启身份验证
    • 在每个MongoDB实例(config server、shard server、mongos)的配置文件(通常是mongod.conf)中添加或修改以下配置来开启身份验证:
    security:
      authorization: enabled
    
    • 重启MongoDB服务使配置生效。例如,在Linux系统下,对于mongod服务可以使用sudo systemctl restart mongod,对于mongos服务可以使用sudo systemctl restart mongos
  2. 创建管理员用户
    • 连接到MongoDB的admin数据库。如果是分片集群,连接到其中一个mongos实例:
    mongo --host <mongos_host>:<mongos_port> -u <admin_username> -p <admin_password> --authenticationDatabase admin
    
    • 使用以下命令创建管理员用户,该用户具有root角色,拥有最高权限:
    use admin
    db.createUser({
      user: "adminUser",
      pwd: "adminPassword",
      roles: [ { role: "root", db: "admin" } ]
    });
    
  3. 创建普通用户并分配角色
    • 连接到需要操作的数据库(例如testDB):
    mongo --host <mongos_host>:<mongos_port> -u adminUser -p adminPassword --authenticationDatabase admin
    use testDB
    
    • 创建普通用户并分配角色。例如,创建一个具有readWrite角色的用户:
    db.createUser({
      user: "testUser",
      pwd: "testPassword",
      roles: [ { role: "readWrite", db: "testDB" } ]
    });
    
  4. 客户端连接验证
    • 普通用户连接:
    mongo --host <mongos_host>:<mongos_port> -u testUser -p testPassword --authenticationDatabase testDB
    
    • 管理员用户连接:
    mongo --host <mongos_host>:<mongos_port> -u adminUser -p adminPassword --authenticationDatabase admin
    

在配置RBAC时,需注意不同角色的权限范围,根据实际需求谨慎分配,确保数据库的安全性和用户操作的便利性。同时,连接字符串中的主机和端口需根据实际的分片集群配置填写。