BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

为首次部署MongoDB做好准备:备份和安全

| 作者 Mat Keep 关注 0 他的粉丝 ,译者 孙镜涛 关注 2 他的粉丝 发布于 2014年5月13日. 估计阅读时间: 11 分钟 | AICon 关注机器学习、计算机视觉、NLP、自动驾驶等20+AI热点技术和最新落地成功案例。

在该系列的第一篇文章中,我们讨论了部署关系型数据库时使用的哪些概念、操作和过程可以直接应用到MongoDB上,同时还介绍了硬件选择以及部署和监控的最佳实践。

在该系列的第二篇文章中,我们将会介绍如何使用备份工具和安全策略保护你的部署。

MongoDB备份和恢复

备份MongoDB数据库常见的方式有三种:

  • 使用MongoDB管理服务(MMS)进行云备份
  • 使用文件系统快照
  • 使用MongoDB自身的mongodump工具

使用MongoDB管理服务(MMS)备份

除了上一篇文章提到的监控方法之外,MMS提供了一个管理全面的云备份解决方案,它托管在可靠、有冗余且安全的数据中心上。用户需要将MMS备份代理本地安装到MongoDB集群上并执行初始同步,在那之后加密和压缩的oplog数据(用于MongoDB复制集)会从备份代理流到MMS上。快照每6小时创建一次。

MMS备份是唯一一个支持复制集时间点恢复和分片集群整体快照的解决方案。过去24小时之内的oplog数据会被存储起来,你可以使用这些数据为一个复制集创建定制快照。对于分片集群,负载均衡每6小时会暂停一次,同时一个无操作令牌会被插入到所有分片、Mongos和配置服务器上。oplog能够被应用到集群中的所有复制集上(直到令牌插入的那个点),为整个集群提供了一个一致的快照。

恢复数据的时候,你可以通过SCP直接将数据发送到你的服务器上,或者可以通过生成的自定义URL下载它们。MMS需要对所有恢复进行双重认证。如果你想了解与MMS备份服务相关的更多信息,那么可以查看MongoDB网站上的文档页面

文件系统备份

文件系统备份,例如Linux LVM提供的方式,我们可以快速有效地创建一个文件系统的一致性快照,然后复制该快照用于数据的备份或者恢复。如果你想了解如何使用文件系统快照创建MongoDB备份,那么可以参考文档:使用文件系统快照进行备份和恢复

mongodump

mongodump是与MongoDB捆绑在一起的一个工具,它能对MongoDB中的数据进行实时备份。我们可以使用mongodump dump整个数据库、集合或者一个查询的结果。mongodump可以通过dump oplog创建能够反映某个时间点数据的dump文件,然后通过mongorestore(一个能够从mongodump产生的BSON数据库dump文件中导入数据的工具)重放。mongodump还能处理不活动的数据库文件集。

备份和恢复策略的MongoDB文档页面上可以找到更多与备份创建相关的信息。

安全

与其他所有的软件一样,MongoDB管理员也必须考虑与MongoDB部署相关的安全和风险问题。减轻风险没有魔幻的解决方案,维持一个安全的MongoDB部署环境需要持续不间断的努力。

纵深防护(Defense in Depth)

纵深防护是安全的MongoDB部署推荐使用的方法,它有很多不同的方法可用于管理并降低风险。纵深防护的目的是把环境分层,确保系统中没有可以让侵入者或者不受信任的团体利用的错误点,从而使其无法获取到存储在MongoDB数据库中的数据。降低暴露风险最有效的方法就是让MongoDB运行在受信任的环境中,通过访问限制、遵循最小权限系统、遵循安全的部署生命周期、遵循最佳部署实践等方法实现良好的风险管控。

所有处理敏感信息的数据库都需要提供全面的安全防护机制,包括:

  • 通过用户权限管理限制对敏感数据的访问,通过认证和授权控制实现。
  • 记录数据库操作日志并对其进行审计。
  • 对需要通过网络传输的数据和存储在数据库中的数据进行加密保护。
  • 环境和流程控制。

MongoDB 2.4引入的很多功能可以处理上面的需求,同时MongoDB 2.6将会继续提供这些功能。点击这里获取MongoDB Enterprise 2.6开发者预览版。

认证

对访问MongoDB的实体进行认证的方式包括使用数据库本身的认证机制和集成外部的安全机制(包括MongoDB Enterprise 2.4的Kerberos服务、LDAP以及Windows活动目录和MongoDB 2.6中新增的x.509证书认证)。

授权

MongoDB允许管理员定义一个应用程序或者用户应该拥有哪些权限,在执行查询的时候能够看到哪些数据。MongoDB拥有大量的内置角色,同时在MongoDB 2.6中用户能够配置细粒度的自定义角色。例如,某些用户可能有权查看某一条记录,但是永远不能更新或者删除这条记录。MongoDB 2.6提供了域级别的安全机制让用户能够对敏感数据进行细粒度的安全授权控制,同时能够定义在运行时实现的声明式安全策略。通过域级别的管理控制,描述某个资源的单个文档可以包含使用多个安全级别的数据,避免了需要将使用不同安全级别的单个信息分离到多个数据库中的复杂性。

审计

MongoDB 2.6通过维护审计日志增加了对记录数据库管理操作的支持。为了便于使用,分布在一个MongoDB集群中的审计日志可以被合并到一个单独的log文件中,从而能够将由某个单独的操作产生且影响多个节点的事件关联起来。

加密

MongoDB能够对需要在网络间进行传输的数据和位于持久存储中的数据进行加密。

对SSL的支持允许客户端通过加密通道连接到MongoDB。如果使用FIPS验证的Cryptographic模块在FIPS模式下运行,那么MongoDB还能支持FIPS 140-2加密

有多种方式能对MongoDB中的数据进行加密。一种方式是在应用程序层使用合适且必要的加密类型对域级别的数据进行加密。

另一种方式是使用像NcryptFS和LUKS这样的第三方类库,它们作为操作系统内核的一部分为Linux提供了磁盘级别的加密,它们所提供的高级管理功能可以确保只有得到授权的进程才能访问这些数据。对于Windows平台而言,可以使用像IBM Guardium数据加密、BitLocker驱动盘加密和TrueCrypt这样的技术。

下面是一个创建安全部署所需关键步骤的检查列表:

准备安全的运行环境

 

安装MongoDB企业版

产品发布

开发发布

配置网络(防火墙、绑定IP地址、VPN等)

检查平台特定的文档

MongoDB网络文档

创建MongoDB用户帐号和权限

检查创建OS登录和权限时使用的平台特定的文档和文件系统文档

配置加密文件系统

Linux:Gazzang zNcryptLUKS

Windows:IBM Guardium数据加密BitLocker驱动盘加密TrueCrypt

   

MongoDB部署准备

 

配置喜欢的外部认证

LDAP文档

Kerberos文档

Red Hat IdM文档

配置群集认证

x.509 证书文档

设置SSL证书

SSL文档

启用FIPS模式

FIPS模式文档

配置审计

管理操作的审计(MongoDB)

读/写操作的管理(Guardium)

   

定义用户和角色

 

将访问系统的文档(Document)角色

项目团队流程

创建MongoDB管理员帐号

向MongoDB添加用户

为每一个角色配置权限

内置的(标准的)MongoDB角色

用户自定义角色

可选高级配置:实现域级别的安全

修订文档

   

监控部署

 

配置MongoDB管理服务

MMS文档

监控并应用最新的补丁

订阅MongoDB Google Group公告从而获取最新的版本和补丁

监控补丁警报和基础设施的更新(服务器、网络和存储组件、OS、中间件等)

查询注入

对于MongoDB客户端程序而言,它生成的查询为BSON对象,而不是字符串,所以传统的SQL注入攻击对将查询作为BSON对象提交的系统不会造成危险。

但是,有一些MongoDB操作允许对任意JavaScript表达式求值,这时候应该注意避免恶意表达式。幸运的是大部分查询能够被表示为BSON,同时在必须使用JavaScript的情况下用户能够混合JavaScript和BSON,所以用户特定的值会被评估为值而不是代码。

结论

MongoDB用户能够通过本文以及前一篇文章所讨论的最佳实践满足当今业务系统对维护高可用、安全和可扩展运营的需要。

这些介绍以及其他的最佳实践在MongoDB运营指南(PDF文档)中有非常详细的介绍。

关于作者

Mat Keep (@matkeep) 是MongoDB产品营销团队的一员,负责为MongoDB的产品和服务构建愿景、定位和内容,同时也负责对市场趋势和客户需求进行分析。在就职于MongoDB之前,Mat是Oracle公司的产品管理总监,负责MySQL数据库在Web、电信行业、云和大数据方面的应用。在这之后他还在技术供应商和面向最终用户的公司中从事过一系列的工作,包括销售、商业开发与分析、程序员。

 

查看英文原文Preparing for Your First MongoDB Deployment: Backup and Security

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT