温馨提示×

debian mongodb怎样加密

小樊
38
2026-09-02 09:51:00
栏目: 云计算

在 Debian 上部署 MongoDB 时,“加密”通常包含三个层面,你可以根据实际需求选择:


一、传输加密(网络层,最常用)

目的: 防止客户端与 MongoDB 之间通信被窃听(类似 HTTPS)

1. 生成证书(自签或 CA)

openssl req -newkey rsa:2048 -nodes -keyout mongodb.key -x509 -days 365 -out mongodb.crt
cat mongodb.key mongodb.crt > mongodb.pem

2. 配置 MongoDB

编辑 /etc/mongod.conf

net:
  port: 27017
  tls:
    mode: requireTLS
    certificateKeyFile: /etc/mongod/mongodb.pem
    CAFile: /etc/mongod/mongodb.crt

3. 重启服务

sudo systemctl restart mongod

客户端连接:

mongo --tls --host localhost

二、静态数据加密(磁盘/文件层)

目的: 防止服务器被物理拿走或磁盘被复制

方案 1:MongoDB 企业版(WiredTiger 加密)

⚠️ 仅 MongoDB Enterprise 支持

storage:
  wiredTiger:
    encryption:
      name: percona
      keyFile: /path/to/key

方案 2:Linux 磁盘加密(推荐社区版)

使用 LUKS

cryptsetup luksFormat /dev/sdb
cryptsetup open /dev/sdb mongo_disk
mkfs.ext4 /dev/mapper/mongo_disk
mount /dev/mapper/mongo_disk /var/lib/mongodb

三、字段级加密(应用层)

目的: 即使 DB 被破解,数据也不可读

客户端字段级加密(CSFLE)

  • 使用 Mongo 4.2+
  • 应用端加密字段再写入

示例(Node.js):

const client = new MongoClient(uri, {
  autoEncryption: {
    keyVaultNamespace: "encryption.__keyVault",
    kmsProviders: { local: { key: localKey } }
  }
});

四、用户与权限(基础安全)

use admin
db.createUser({
  user: "admin",
  pwd: "强密码",
  roles: ["root"]
})

/etc/mongod.conf

security:
  authorization: enabled

推荐组合(通用安全方案)

✅ Debian + LUKS 磁盘加密
✅ MongoDB TLS 传输加密
✅ 用户认证 + 最小权限
✅ 重要字段应用层加密


如果你告诉我:

  • MongoDB 版本(community / enterprise)
  • 使用场景(内网 / 公网 / 云)
  • 是否已有数据

我可以给你更精确的配置步骤

0