MST

星途 面试题库

面试题:MongoDB 备份数据安全策略之中等难度题

请阐述在 MongoDB 中,通过哪些常见的身份验证机制来保障备份数据安全,以及如何配置它们?
38.7万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试

常见身份验证机制

  1. MONGODB-CR 机制
    • 这是 MongoDB 早期版本(3.0 之前)使用的身份验证机制。它使用简单的挑战 - 响应机制,基于用户名和密码进行身份验证。服务器向客户端发送一个挑战,客户端使用其密码的散列来响应。
  2. SCRAM - SHA - 1 机制
    • 从 MongoDB 3.0 开始,SCRAM - SHA - 1 成为默认的身份验证机制。它是一种更安全的基于密码的身份验证机制。SCRAM - SHA - 1 使用加盐的密码哈希,并通过多次消息交互来验证客户端身份,防止密码在传输过程中被截取。
  3. SCRAM - SHA - 256 机制
    • 从 MongoDB 4.0 开始支持 SCRAM - SHA - 256 机制。它与 SCRAM - SHA - 1 类似,但使用更强的 SHA - 256 哈希算法,提供更高的安全性,适用于对安全性要求更高的场景。
  4. X.509 证书身份验证
    • 这种机制使用 X.509 数字证书来验证客户端和服务器的身份。证书包含公钥、标识信息(如组织名称、主机名等),并且由受信任的证书颁发机构(CA)签名。客户端和服务器通过交换证书和验证证书链来建立信任关系。

配置方法

  1. 启用身份验证
    • 在 MongoDB 配置文件(通常是 mongod.conf)中,添加或修改 security 部分,启用身份验证:
    security:
      authorization: enabled
    
  2. 添加用户并设置身份验证机制
    • MONGODB - CR 机制
      • 使用 mongo shell 连接到 MongoDB 实例(在没有启用身份验证时)。
      • 创建用户,例如:
      use admin
      db.createUser(
        {
          user: "adminUser",
          pwd: "password",
          roles: [ { role: "root", db: "admin" } ]
        }
      )
      
    • SCRAM - SHA - 1 机制
      • 连接到 MongoDB 实例(无身份验证时)。
      • 创建用户:
      use admin
      db.createUser(
        {
          user: "adminUser",
          pwd: "password",
          roles: [ { role: "root", db: "admin" } ],
          mechanisms: [ "SCRAM - SHA - 1" ]
        }
      )
      
    • SCRAM - SHA - 256 机制
      • 连接到 MongoDB 实例(无身份验证时)。
      • 创建用户:
      use admin
      db.createUser(
        {
          user: "adminUser",
          pwd: "password",
          roles: [ { role: "root", db: "admin" } ],
          mechanisms: [ "SCRAM - SHA - 256" ]
        }
      )
      
  3. X.509 证书身份验证配置
    • 生成证书
      • 可以使用 OpenSSL 等工具生成 CA 证书、服务器证书和客户端证书。例如,生成 CA 证书:
      openssl req -newkey rsa:2048 -days 365 -nodes -keyout ca.key -out ca.csr -subj "/CN=myCA"
      openssl x509 -req -in ca.csr -days 365 -signkey ca.key -out ca.crt
      
      • 生成服务器证书并由 CA 签名:
      openssl req -newkey rsa:2048 -days 365 -nodes -keyout server.key -out server.csr -subj "/CN=mongodb - server"
      openssl x509 -req -in server.csr -days 365 -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt
      
      • 生成客户端证书并由 CA 签名:
      openssl req -newkey rsa:2048 -days 365 -nodes -keyout client.key -out client.csr -subj "/CN=mongodb - client"
      openssl x509 -req -in client.csr -days 365 -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt
      
    • 配置 MongoDB 服务器
      • mongod.conf 文件中添加或修改以下配置:
      net:
        tls:
          mode: requireTLS
          certificateKeyFile: /path/to/server.crt.pem
          CAFile: /path/to/ca.crt.pem
      security:
        authorization: enabled
        clusterAuthMode: x509
      
    • 连接客户端
      • 使用 mongo 命令连接时,指定客户端证书、密钥和 CA 证书:
      mongo --tls --tlsCertificateKeyFile /path/to/client.crt.pem --tlsCAFile /path/to/ca.crt.pem