在 CentOS 上“加密 MongoDB”通常有三种常见场景,按安全强度和实际需求从低到高分别是:
作用: 防止数据在网络中被窃听
适用: 客户端与服务端通信加密
openssl req -newkey rsa:2048 -nodes -keyout mongodb.key -x509 -days 365 -out mongodb.crt
cat mongodb.key mongodb.crt > mongodb.pem
编辑 /etc/mongod.conf
net:
port: 27017
tls:
mode: requireTLS
certificateKeyFile: /etc/ssl/mongodb.pem
CAFile: /etc/ssl/mongodb.crt
systemctl restart mongod
作用: 防止未授权访问数据库
适用: 所有生产环境必做
security:
authorization: enabled
use admin
db.createUser({
user: "admin",
pwd: "StrongPass!",
roles: ["root"]
})
mongo -u admin -p --authenticationDatabase admin
作用: 防止服务器被物理拿走或磁盘被挂载后泄露数据
推荐方案:LUKS(CentOS 原生支持)
yum install cryptsetup -y
cryptsetup luksFormat /dev/sdb
cryptsetup open /dev/sdb mongo_encrypted
mkfs.xfs /dev/mapper/mongo_encrypted
mkdir /data/mongo
mount /dev/mapper/mongo_encrypted /data/mongo
storage:
dbPath: /data/mongo
⚠️ 重启后需手动或脚本解锁
仅 MongoDB Enterprise 支持
security:
enableEncryption: true
encryptionKeyFile: /path/to/keyfile
社区版不支持此功能。
✅ CentOS + LUKS 磁盘加密
✅ MongoDB 开启认证
✅ 启用 TLS
✅ 定期备份并加密备份文件
❌ “给数据库加密码 = 加密数据”
❌ “MongoDB 社区版支持文件加密”
❌ “以为 TLS 能防止磁盘泄露”
如果你愿意,可以告诉我:
我可以给你一套精确到命令的方案。