MongoDB配置中的security怎么设置
导读:MongoDB security 配置详解 一 核心配置项与示例 启用授权(必选):在配置文件 mongod.conf 的 security 段开启授权,使所有客户端必须先认证再访问资源。 认证机制(可选,进阶):通过 authentic...
MongoDB security 配置详解
一 核心配置项与示例
- 启用授权(必选):在配置文件 mongod.conf 的 security 段开启授权,使所有客户端必须先认证再访问资源。
- 认证机制(可选,进阶):通过 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,默认使用更安全的 SCRAM 与 X.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 时,保持成员间认证方式一致,按官方步骤执行以减少停机。
- 安全基线复查:定期审计用户、角色、网络策略与证书有效期,确保最小权限与加密持续合规。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: MongoDB配置中的security怎么设置
本文地址: https://pptw.com/jishu/774337.html
