11. MongoDB 安全认证与备份恢复

MongoDB 安全体系: RBAC 角色权限、TLS 加密、审计日志与备份恢复策略

生产环境的 MongoDB 需要系统的安全加固,包括访问控制、网络加密、审计日志和数据备份策略。

1. RBAC 角色权限

1.1 创建用户与角色

// 启用认证后连接 admin 库
use admin;

db.createUser({
    user: "app_user",
    pwd: "secure_password",
    roles: [
        { role: "readWrite", db: "shop" },           // 读写 shop 库
        { role: "read", db: "analytics" }            // 只读 analytics
    ]
});

// 自定义角色
db.createRole({
    role: "orderProcessor",
    privileges: [
        { resource: { db: "shop", collection: "orders" },
          actions: ["find", "insert", "update"] },
        { resource: { db: "shop", collection: "inventory" },
          actions: ["find", "update"] }
    ],
    roles: []
});

1.2 内置角色

角色权限
read读取所有非系统集合
readWrite读写所有非系统集合
dbAdmin管理索引、统计、验证规则
userAdmin管理用户和角色
dbOwnerreadWrite + dbAdmin + userAdmin
clusterManager管理复制集/分片

2. TLS 加密

# mongod.conf
net:
  tls:
    mode: requireTLS
    certificateKeyFile: /etc/ssl/mongodb.pem
    CAFile: /etc/ssl/ca.pem
    allowConnectionsWithoutCertificates: false

# 客户端连接
mongo --tls --host mongo.example.com \
      --tlsCertificateKeyFile client.pem \
      --tlsCAFile ca.pem

3. 备份恢复

3.1 mongodump / mongorestore

# 备份(指定复制集)
mongodump --uri="mongodb://user:pass@rs0/mongo1:27017,mongo2:27017/shop?replicaSet=rs0" \
          --out=/backup/$(date +%Y%m%d)

# 恢复
mongorestore --uri="mongodb://user:pass@localhost/shop" \
             --dir=/backup/20240115/shop \
             --drop  # 恢复前删除现有集合

3.2 文件系统快照(更快)

# 使用 LVM 或云盘快照
# 要求开启 journal 并使用 WiredTiger

# 1. 锁定写入(仅 secondary 或 standalone)
mongo --eval "db.fsyncLock()"

# 2. 创建快照
lvcreate --snapshot --size 10G --name mongo-snap /dev/vg0/mongo

# 3. 解锁
db.fsyncUnlock()

3.3 oplog 还原到时间点

# 基于 oplog 恢复到特定时间点
mongorestore --oplogReplay --oplogLimit "1705315200:1" /backup/

4. 备份策略

策略RPORTO适用
每日 mongodump24h小时级中小数据量
hourly 增量 + 每日全量1h小时级大数据量
文件系统快照分钟级分钟级云环境
跨区复制集秒级分钟级高可用要求

延伸阅读

继续阅读

探索更多技术文章

浏览归档,发现更多关于系统设计、工具链和工程实践的内容。

全部文章 返回首页

「mongodb」更多文章

  1. 10. MongoDB 性能调优与运维监控
  2. 09. Spring Data MongoDB 实战
  3. 08. MongoDB Change Streams 实时同步