简介
用户rpm包安装的mongo数据库,是没有用户权限认证的,这样非常的不安全,攻击者使用特定的脚本就能连上你的mongo数据库,并将数据进行加密,并给你留勒索信息
如果你的数据非常重要,你将会付出惨重的代价,要么花很长的时间去恢复数据,前提是你有备份,并且还不能保证完全恢复,要么给攻击者付酬金。所以重要的数据库一定要设置用户认证,保证数据安全。说到mongo的用户认证,就不得不提其内部设置的用户角色,其角色分为以下几种
MongoDB角色介绍
1.Database User Roles(普通用户角色):read(非系统数据库只读),readWrite(非系统数据库读写)
2.Database Administration Roles(数据库管理员角色):dbAdmin,dbOwner,userAdmin
3.Cluster Administration Roles(集群管理管角色):clusterAdmin,clusterManager,clusterMonitor,hostManager
4.Backup and Restoration Roles(备份恢复角色):backup,restore
5.All-Database Roles(系统和非系统管理员角色):readAnyDatabase,readWriteAnyDatabase,userAdminAnyDatabase,dbAdminAnyDatabase
6.Superuser Roles(超级管理员角色):root
那每个角色有什么权限,这里给大家详细介绍一下,为安全起见,赋权的时候,一定要最小范围赋权,不要给普通应用访问用户赋管理员角色或者超级管理员角色,这样做就会非常的不安全。
MongoDB角色创建命令
1.创建超级管理员用户
db.createUser({user:'root',pwd:'123456',roles:['root']}) Successfully added user: { "user" : "root", "roles" : [ "root" ] }
2.查看创建的用户
db.system.users.find();
3.创建普通用户,有testdb数据库readWrite的权限
db.createUser({user:'jim',pwd:'jim123456',roles:[{role:'readWrite',db:'testdb'}]})
默认mongo是没有用户认证的,如果要想让用户认证生效,需要重启mongo数据库实例 先关闭实例 mongod --shutdown -f /etc/mongod.conf 再加--auth启动实例 mongod --auth --fork -f /etc/mongod.conf
测试一下效果
[root@~]# mongo
MongoDB shell version v4.2.2
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("709083d5-fe98-4b21-919d-7ffce4ced0e5") }
MongoDB server version: 4.2.2
> show dbs;
> show collections;
Warning: unable to run listCollections, attempting to approximate collection names by parsing connectionStatus
不用输入用户名和密码,对mongo数据库已经做不了任何操作了。用刚才创建的新用户登录测试一下,看看效果
[root@~]# mongo -u jim -p jim123456
MongoDB shell version v4.2.2
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("a1e8fbdb-8870-46a1-ae80-b97448c37db2") }
MongoDB server version: 4.2.2
> show dbs;
testdb 0.000GB
> use testdb;
switched to db testdb
> show collections;
t_1
test
testdb
关注 1.如果您喜欢这篇文章,请点赞+转发。
2.如果您特别喜欢,请加关注。