Spring+MongoDB验证安全的配置
引言:在网上搜到的很多MongoDB安装教程都没有关于用户角色身份的验证安全策略的相关配置以及说明,所以这样安装的MongoDB其实相当于在网络上 “裸奔” 式的运行,而MongoDB本身又存在一些漏洞,会存在被黑客攻击(“偷走”数据并删库要挟比特币)的事情发现…
- 两种配置方式(本人已知的)
- 其他配置
- 相关资料链接
mongodb在spring中大致有两种配置方式(本人已知的):
1)、根据系统自身提供的各种参数一一对应设置参数值,此时最好开一个mongodb.properties文件枚举各个参数值:
<mongo:mongo id="mongoClient" host="${mongo.host}" port="${mongo.port}">
<mongo:options connections-per-host="${mongo.connectionsPerHost}"
threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}"
connect-timeout="${mongo.connectTimeout}"
max-wait-time="${mongo.maxWaitTime}"
auto-connect-retry="${mongo.autoConnectRetry}"
socket-keep-alive="${mongo.socketKeepAlive}"
socket-timeout="${mongo.socketTimeout}"
slave-ok="${mongo.slaveOk}"
write-number="1"
write-timeout="0"
write-fsync="true" />
</mongo:mongo>
<mongo:db-factory username="${mongo.username}" password="${mongo.password}" dbname="${mongo.dbname}" mongo-ref="mongoClient" />
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg ref="mongoClient" />
<constructor-arg name="databaseName" value="${mongo.dbname}" /><!-- 数据库的名称 -->
</bean>
备注:本方法可以一对一设置每个参数的值,对于需要简单配置使用以及 “小白” 可以参考理解一下其中的各参数的作用,但是存在没有安全验证的信息配置,对于应用于需要正式发布运营的项目来说是“禁止”使用该方法的(PS:也可能是本人还没有找到对的地方去设置)。
2)、直接在mongodb的工厂配置信息这里使用URI属性也可以实现配置
首先:咱们先来了解一个系统类com.mongodb.MongoClientURI,上面的URI需要的options属性可以根据该类的属性字段来对应配置;
然之:****URI配置非常简单,但是使用之前一定要了解里面的各个属性字段的意义,例如:(使用到了上面的mongodb.properties文件)
<mongo:db-factory id="mongoDbFactory" uri="mongodb://${mongo.username}:${mongo.password}@${mongo.host}:${mongo.port}/${mongo.dbname}?authSource=${mongo.authenticationDbname}&authMechanism=${mongo.authMechanism}"/>
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
</bean>
其他配置:
1)、验证方式authMechanism:SCRAM-SHA-1、MONGODB-CR(自己去百度区别)
2)、mongodb的etc目录下面的mongodb.conf文件配置:
#数据库数据存放目录
dbpath=/data/db/mongodb/data
#数据库日志存放目录
logpath=/data/db/mongodb/logs/mongodb.log
#以追加的方式记录日志
logappend=true
#端口号 默认为27017
port=27017
#以后台方式运行进程
fork=true
#开启用户认证
auth=true
#关闭http接口,默认关闭http端口访问
nohttpinterface=true
#mongodb所绑定的ip地址
bind_ip=127.0.0.1
#启用日志文件,默认启用
journal=true
#这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
quiet=true
3)、对数据库创建用户并且配置用户角色权限步骤如下:
show dbs;
use xxxxxtest;//切换到需要配置的数据库
db.createUser( { //创建用户
user: "xxxx",
pwd: "xxxxxx",
roles: [ "readWrite" ] //这里可以配置多个角色权限
});
db.auth('xxx','xxxxxx');//对用户的权限进行校验确认
相关资料链接:
MongoDB:多种方式关闭服务命令:https://www.cnblogs.com/PheonixHkbxoic/p/5665499.html
robomongo 连不上mongodb 权限问题:https://blog.csdn.net/sonycong/article/details/50466142