MongoDB是一款流行的NoSQL数据库,然而默认情况下其配置并不够安全.在生产环境中,为了保护数据库的安全,有必要进行安全配置.
启用认证是MongoDB安全配置中最重要也是最基础的一步.只有在认证机制启用后,才能限制用户登录和操作权限.启用认证的方法是在MongoDB的配置文件中设置启用认证.
security:
authorization: enabled
启用认证后,需要添加管理员及用户,如下:
use admin;
db.createUser(
{
roles: [ { role: "readWrite", db: "mydatabase" } ]
}
);
以上代码创建了一个名为admin的管理员,以及一个名为myuser的普通用户,myuser用户有mydatabase数据库的读写权限.
默认情况下,MongoDB可以监听所有网卡接口,这也是一个安全隐患,因为攻击者可以通过连接到数据库的方式来访问数据库.为了防止这种情况,需要绑定MongoDB的IP地址.
要绑定MongoDB的IP地址,需要在MongoDB的配置文件中设置bindIp:
net:
bindIp: 0.0.0.0 #绑定所有IP
port: 27017
以上配置将所有网卡接口的IP地址都绑定了,如果只想要绑定特定的IP地址,可以指定具体的IP地址绑定:
net:
bindIp: 192.16⑧1.101 #绑定特定IP
port: 27017
如果你使用MongoDB集群,你需要将配置文件复制到所有节点,并在每个节点上应用相同的配置.
首先,在每个节点启用认证,创建管理员及用户并设置正确的权限.
其次,在MongoDB配置文件中绑定正确的IP地址,以确保只有节点间互相访问而不受外部访问的影响.
不同于命令行,许多应用程序直接通过连接MongoDB访问数据库.在这种情况下,需要为应用程序创建一个专用的用户并控制其权限,防止应用程序发出无意义、危险的请求.
首先,启用认证,并分配给应用程序的权限进行访问.不要误将应用程序分配的权限与管理员权限混淆.
其次,在配置文件中配置bindIP.