在 CentOS 上配置 MongoDB 加密,通常包含以下几个方面(按安全层级从基础到进阶):
编辑 MongoDB 配置文件(通常为 /etc/mongod.conf):
security:
authorization: enabled
mongo
use admin
db.createUser({
user: "admin",
pwd: "StrongPassword",
roles: [{ role: "root", db: "admin" }]
})
systemctl restart mongod
之后连接需使用:
mongo -u admin -p --authenticationDatabase admin
openssl req -newkey rsa:2048 -nodes -keyout mongodb.key -x509 -days 365 -out mongodb.crt
cat mongodb.key mongodb.crt > mongodb.pem
net:
port: 27017
tls:
mode: requireTLS
certificateKeyFile: /etc/ssl/mongodb.pem
systemctl restart mongod
客户端连接:
mongo --tls --tlsCAFile mongodb.crt
⚠️ 仅 MongoDB Enterprise 支持
security:
enableEncryption: true
encryptionKeyFile: /path/to/keyfile
使用 LUKS 加密磁盘或分区:
cryptsetup luksFormat /dev/sdb
cryptsetup open /dev/sdb mongo_encrypted
mkfs.xfs /dev/mapper/mongo_encrypted
mount /dev/mapper/mongo_encrypted /var/lib/mongo
MongoDB 4.2+ 支持 Client-Side Field Level Encryption (CSFLE)
适用于敏感字段(如密码、身份证):
mongocryptdchown mongod:mongod /etc/mongod.conf
chmod 600 /etc/mongod.conf
net:
bindIp: 127.0.0.1,内网IP
firewall-cmd --add-port=27017/tcp --permanent
firewall-cmd --reload
✅ 认证
✅ TLS
✅ LUKS 磁盘加密
✅ 防火墙限制 IP
✅ 定期备份 + 密钥分离
如果你能提供:
我可以给你一套可直接用的配置示例。