MongoDB最佳安全实践 (2)

MongoDB创建用户操作和上面不同。上边的内容,是在数据库运行以前进行,而创建用户,是在数据库运行以后。

$ ./mongo your_ip:your_port
> use admin
switched to db admin
> db.createUser({"user" : "user_name""pwd" : "user_password","roles" : [{"role" : "userAdminAnyDatabase""db" : "admin"}]})
Successfully added user: {
    "user" : "user_name",
    "roles" : [
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        }
    ]
}

这样我们就加入了一个用户。

MongoDB内建的角色分以下几类:

超级用户:root

数据库用户角色:read、readWrite

数据库管理角色:dbAdmin、dbOwner、userAdmin

集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager

可操作所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

备份、恢复角色:backup、restore

角色不详细解释了,角色名称的英文写的很明白。

在实际操作中,通常会将用户建在admin中,用roles里的db来指定用户可以使用或管理的数据库名称。

通过这一通操作,我们已经在数据库中创建好了用户。下面需要服务器启用鉴权。

命令行:

./mongod --auth

配置文件:

auth=true

这个用于mongod启动的数据库。对于集群的router,即mongos,会默认启用auth,所以不需要显式启用。

当MongoDB启用鉴权后,再用mongo客户端连接数据库,就需要输入用户帐号信息了。

$ ./mongo -u user_name -p user_password your_ip:your_port/admin

$ ./mongo -u user_name -p your_ip:your_port/admin #提示输入密码

同样,在代码中,数据库连接串也同步变成了:

"MongoConnection""mongodb://user_name:user_password@localhost:27017/admin?wtimeoutMS=2000"
三、总结

一般来说,做完上面的安全处理,就可以完全满足生产环境的安全要求了。

再高的要求,可以通过启用TLS来强化。这会是另一个文章。

 

 

老王Plus

 

微信公众账号:老王Plus

如果你想及时得到个人文章以及内容的消息推送,或者想看看个人推荐的技术资料,可以扫描左边二维码(或者长按识别二维码)关注个人公众号)。

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpzjwg.html