温馨提示×

MongoDB配置中的security怎么设置

小樊
38
2025-12-17 11:34:58
栏目: 云计算

MongoDB security 配置详解

一 核心配置项与示例

  • 启用授权(必选):在配置文件 mongod.confsecurity 段开启授权,使所有客户端必须先认证再访问资源。
  • 认证机制(可选,进阶):通过 authenticationMechanisms 指定允许的认证方式,默认包含 SCRAM-SHA-256、SCRAM-SHA-1、MONGODB-X509
  • 本地主机例外(可选,初始化):enableLocalhostAuthBypass 允许本机在未创建用户前免密登录,创建首个管理员后应关闭。
  • 集群内部认证(可选,副本集/分片):clusterAuthMode 设置集群成员间认证方式(如 x509),与对外访问的 TLS 配置配合。
  • 示例(最小可用安全基线):
# mongod.conf
security:
  authorization: enabled
  # 可选:仅允许 SCRAM-SHA-256 与 MONGODB-X509
  # authenticationMechanisms: SCRAM-SHA-256,MONGODB-X509
  # 可选:初始化完成后关闭本机免密
  # enableLocalhostAuthBypass: false

net:
  port: 27017
  bindIp: 127.0.0.1,10.0.0.10   # 仅内网或管理网段
  # 可选:启用 TLS
  # ssl:
  #   mode: requireSSL
  #   PEMKeyFile: /etc/ssl/mongodb.pem
  #   CAFile: /etc/ssl/ca.pem

说明:

  • 旧版配置中可见 auth = true 的写法,新版 YAML 推荐使用 security.authorization: enabled
  • MongoDB 4.0 起已移除 MONGODB-CR,默认使用更安全的 SCRAMX.509

二 启用后的初始化步骤

  • 启动服务(以 systemd 为例):sudo systemctl start mongod
  • 连接 Shell:mongosh(或 mongo)
  • 切换到 admin 并创建管理员(示例赋予超级权限,生产环境可按需收敛):
use admin
db.createUser({
  user: "admin",
  pwd: "StrongPassw0rd!",
  roles: ["root"]
})
  • 使用带认证的客户端连接:
mongosh -u admin -p 'StrongPassw0rd!' --authenticationDatabase admin

要点:

  • 创建首个管理员前,可利用 localhost 例外 完成初始化;完成后务必关闭该例外,避免安全风险。

三 常见认证与授权场景

  • 内置角色快速选用(遵循最小权限原则):
    • 应用读写:readWrite(指定库)
    • 库级管理:dbAdmin / dbOwner / userAdmin
    • 全局用户管理:userAdminAnyDatabase
    • 集群管理:clusterAdmin / clusterManager / clusterMonitor
    • 备份恢复:backup / restore
    • 超级用户:root
  • 自定义角色(细粒度到集合/操作):
use admin
db.createRole({
  role: "reportsReadOnly",
  privileges: [
    { resource: { db: "sales", collection: "reports" }, actions: ["find", "aggregate"] }
  ],
  roles: []
})
db.grantRolesToUser("reportUser", [{ role: "reportsReadOnly", db: "admin" }])
  • 外部认证(企业版):
    • LDAP:通过 SASL/LDAP 对接企业目录,适合统一账号治理。
    • x.509 证书认证:客户端与服务端使用证书完成双向认证,适合高安全与自动化场景。

四 与 security 配套的网络与加密建议

  • 绑定 IP 与端口:仅监听必要地址(如 127.0.0.1 或内网网段),避免暴露在公网。
  • 防火墙:仅放行受控来源的 27017 端口(如 ufw/iptables/firewalld)。
  • 传输加密:启用 TLS/SSL(推荐 TLS 1.2+),妥善管理证书与私钥,禁用不安全套件。
  • 审计与日志:开启审计(enterprise 版功能更完善),并集中化存储与告警;常规日志建议落盘并滚动。
  • 版本与补丁:保持 MongoDB 版本与驱动更新,及时修复已知漏洞。

五 验证与运维要点

  • 验证授权生效:未认证连接应被拒绝;使用创建的用户能连接并具备预期权限。
  • 检查参数:db.adminCommand({getParameter:1, authenticationMechanisms:1})
  • 滚动升级与集群:副本集/分片在升级或变更 clusterAuthMode 时,保持成员间认证方式一致,按官方步骤执行以减少停机。
  • 安全基线复查:定期审计用户、角色、网络策略与证书有效期,确保最小权限与加密持续合规。

0