前言
MongoDB 是一款非常流行的 NoSQL 数据库,广泛应用于前端、后端以及移动端等各领域。然而,由于 MongoDB 的默认配置较为宽松,一旦设置不当可能会造成数据安全问题。本文将针对 MongoDB 的安全设置进行详细讲解,并提供代码实例。
数据库访问控制
MongoDB 可以通过用户名和密码进行身份认证,用于防止未授权的访问。下面是如何在 MongoDB 中创建用户和角色。
创建管理员账户
管理员账户的权限最高,可以管理整个数据库。
use admin; db.createUser( { user: "admin", pwd: "password", roles: [ { role: "root", db: "admin" } ] } );
创建普通用户
普通用户的权限根据角色进行设置。
use test; db.createUser( { user: "user", pwd: "password", roles: [ { role: "readWrite", db: "test" } ] } );
角色设置
MongoDB 中的角色主要包括以下几个:
- root:超级管理员,对所有数据库有完全访问权限。
- dbOwner:对指定数据库拥有完全权限,包括创建和删除集合、创建和删除索引等。
- dbAdmin:对指定数据库可以进行管理员操作,但不能进行用户管理。
- userAdmin:对指定数据库进行用户管理,但不能进行管理员操作。
- readWrite:对指定数据库进行读写操作。
- read:对指定数据库进行只读操作。
-- -------------------- ---- ------- --- ------ -------------- - ----- ------------- ----------- - - --------- - --- ------- ----------- -- -- -------- - ------- --------- --------- -- -- ------ -- - --
IP 白名单
IP 白名单可以限制数据库的访问来源,这是非常重要的安全机制。
启用 IP 白名单
启用 IP 白名单可以从以下两个方面进行设置:
MongoDB 配置文件设置
-- -------------------- ---- ------- - ---------------- --- --------- -------------- ------- -------- ---------------- ---------------- ---- ---- ----- ---------- ------------------- -------------------- ----- --------- ------------------ ------------ ----------------------- ------------------------- - ----------- - -------------- ------- ------- ---
MongoDB Shell 设置
use admin; db.runCommand({ setParameter: 1, "clusterIpSourceWhitelist": ["192.168.1.1", "192.168.1.2/24"] });
数据加密
数据加密是保证数据安全的重要手段,MongoDB 支持多种加密方式。
SSL 加密
MongoDB 支持在数据传输过程中使用 SSL 加密,这是一种最常见的加密方式。以下是如何启用 SSL 加密:
- 创建 TLS 证书
在 Linux 系统上,可以使用 OpenSSL 工具来创建 TLS 证书。以下是创建私钥和证书的命令:
openssl req -newkey rsa:2048 -new -x509 -days 365 -nodes -out mongodb-cert.crt -keyout mongodb-keyfile.key
- 启用 SSL
# /etc/mongod.conf ... net: ssl: mode: requireSSL PEMKeyFile: /path/to/mongodb.pem ...
数据库加密
MongoDB 还支持在数据存储时进行加密,该加密方式被称为透明数据加密(TDE)。
以下是启用 TDE 的步骤:
创建密钥
openssl rand -base64 32 > mongodb.key
启用 TDE
-- -------------------- ---- ------- - ---------------- --- -------- ------- -------- ----------- ------------- ----------------- -------- -------------------- ---------- --------------------------------------------- ---
总结
本文中介绍了 MongoDB 的安全设置指南,包括数据库访问控制、IP 白名单和数据加密等方面,希望能够帮助开发者更好地保护 MongoDB 中的数据安全。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6471a19e968c7c53b0f862e2