如何为MongoDB多数据库的现有用户启用身份验证功能
注意:所有操作请在业务低峰期执行,修改配置文件前先备份原文件,避免配置错误导致服务不可用。
Windows环境MongoDB 3.2.5 安全配置步骤
前置校验:确认现有账号可用性
先验证你已创建的两个账号可以正常登录,避免开启认证后无法进入数据库:
- 打开cmd执行以下命令验证超级管理员账号:
mongo admin -u root -p 你设置的root账号密码
如果能正常进入admin库执行show collections无报错,说明root账号可用。 - 验证业务库账号:
mongo appdb -u appuser -p 你设置的appuser账号密码
如果能正常进入appdb执行读写操作无报错,说明业务账号可用。
步骤1:开启身份认证
- 找到MongoDB配置文件,默认安装路径为
C:\Program Files\MongoDB\Server\3.2\bin\mongod.cfg,用文本编辑器打开。 - 找到
security配置段,没有的话直接在文件末尾添加以下内容,注意yaml格式缩进:
security: authorization: enabled
- 保存配置文件后重启MongoDB服务:
- 方法1:管理员权限打开cmd,执行
net stop MongoDB,执行完成后再执行net start MongoDB(如果安装时自定义了服务名,替换成你自己的服务名即可) - 方法2:打开Windows服务管理器,找到MongoDB服务右键选择重启
- 方法1:管理员权限打开cmd,执行
注:如果你是手动命令行启动Mongo而非系统服务,启动时加上
--auth参数即可生效。
步骤2:验证认证生效
重启完成后直接在cmd执行mongo进入数据库,执行show dbs会提示无权限,说明认证已经生效。用之前校验过的账号登录即可正常操作对应权限的数据库。
步骤3:local库安全配置
local库默认存储实例本地运行数据(如oplog、副本集配置等),无特殊需求不需要创建普通用户,避免误操作影响实例运行。如果确实需要账号访问local库,可使用root账号登录admin库后执行以下命令创建用户,按需分配最小权限:
use local db.createUser({ user: "localuser", pwd: "自定义强密码", roles: [ { role: "read", db: "local" } ] })
其他生产环境加固建议
- 限制访问IP:修改配置文件
net段的bindIp值,只绑定127.0.0.1和业务服务器内网IP,禁止绑定0.0.0.0,禁止Mongo端口对公网开放 - 修改默认端口:把
net段默认的port: 27017改成其他未被占用的端口,降低被扫描攻击的概率 - 关闭高危接口:在
net段添加以下配置,关闭http接口和REST接口:
net: http: enabled: false RESTInterfaceEnabled: false
- 操作系统层面防护:Windows防火墙只放通信任的业务服务器IP访问Mongo端口,拦截所有未授权IP的访问请求
- 定期密码轮换:所有数据库账号每3-6个月更换一次强密码,密码要求长度不低于12位,包含大小写字母、数字和特殊字符
- 开启操作审计:按需开启审计日志,记录所有账号的操作记录,方便后续安全排查
内容的提问来源于stack exchange,提问作者ksingh
相关产品推荐
相关产品推荐

