MongoDB配置安全身份认证机制

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数据库开启身份认证是非常有必要的。

数据库标签