1. 什么是MongoDB安全身份认证机制
MongoDB安全身份认证机制是一种用来保护数据库安全性的技术,它可以阻止未经授权的访问和操作数据库的行为,例如:防止黑客攻击数据库的敏感信息。它可以让用户在访问MongoDB数据库之前必须验证自己的身份和凭据。
2. MongoDB安装配置
2.1 安装MongoDB
MongoDB是一个文档数据库,现在支持Windows,Linux和MacOS操作系统,这里以windows为例。在 官网下载页面中找到community的Windows版本,下载后,进行安装。
// 创建mongodb目录
$ mkdir mongodb
// 解压文件
$ tar -zxvf mongodb-linux-x86_64-4.0.3.tgz -C mongodb --strip-components 1
2.2 配置文件systemLog path
systemLog是MongoDB的日志记录器,它会把MongoDB的运行日志都打印到这个日志文件中,后续开启认证模式和自动化部署的时候都会使用它。打开配置文件SvcMongoDB.conf,并配置systemLog文件路径。
# The name of the file to which the mongod or mongos process should log information.
systemLog:
destination: file
path: /data/db/mongodb.log
2.3 配置mongod.conf
Mongod.conf文件是用于配置MongoDB服务的文件,这里我们需要做的就是启用MongoDB安全身份认证模式。如下示例:
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /data/db/mongodb.log
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1
# security
security:
authorization: enabled
3. MongoDB安全身份认证模式具体配置
3.1 创建用户并设置角色
在MongoDB中,用户认证信息保存在admin数据库的system.users集合中。所以,在配置管理员用户之前,我们需要先切换到admin数据库中。
// 连接mongoDB
$ mongo
// 切换到admin数据库
> use admin
// 创建管理员用户
> db.createUser(
{
user: "root",
pwd: "password",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
创建普通用户 - 除了管理员用户之外还可以创建普通用户,来实现限制权限。首先,需要创建一个普通用户,然后给这个用户分配访问数据集的权限,具体如下:
// 切换到具体数据库
> use test
// 创建普通用户
> db.createUser(
{
user: "user",
pwd: "password",
roles: [ "readWrite", "dbAdmin" ]
}
)
3.2 认证登录
在连接到MongoDB时,可以使用用户名和密码进行身份验证。连接到控制台时,使用以下命令:
$ mongo -u "user" -p "password" --authenticationDatabase "test"
在上述命令中,mongo连接命令被修改为使用用户名和密码进行身份验证。authenticationDatabase参数告诉MongoDB系统使用现有的test数据库作为身份验证数据库。test数据库是在此之前创建的,因此在这里它可以被重复使用。
3.3 配置keyFile
keyFile是在复制数据时使用的一个加密密钥,其目的在于检测并防止其他MongoDB实例连接到系统。要使用keyFile功能,需要将keyFile放入MongoDB的data目录中,并将其权限更改为600。然后,将以下内容添加到mongod.conf文件中:
security:
keyFile: /data/keyFile
4. 总结
以上就是MongoDB身份认证机制的配置,通过这篇文章的介绍,我们可以看到MongoDB提供了强大的安全机制来保护数据库的安全性。在实际生产环境中,考虑到数据安全问题,对MongoDB数据库开启身份认证是非常有必要的。