<audio id="audio" title="063 | 文档数据库的缔造者MongoDB（下）" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/8c/2a/8c655fdf7bda1b43b44277585b08752a.mp3"></audio>

鉴于10gen公司改名叫MongoDB了，这篇文章里我们统一称为MongoDB公司。上回说到MongoDB公司的发展策略是尽善尽美地提供良好的使用体验，而对于产品功能本身，则是哪怕不成熟也先推出来再说。这种策略的好处是让这个数据库很快地流行开来，坏处是用户用久了各种问题层出不穷，苦不堪言，用户甚至跳出来公开说“不要用MongoDB”。

**MongoDB作为一个不成熟的产品，在2016年的时候终于曝出了一个非常严重的事件：MongoDB的安全门事件**。任何一个国家的任何一个计算机产品，如果出现了安全相关的事件，对产品的影响都可能是致命的。

这个事件是安全界大牛维克托 · 格弗斯（Victor Gevers）在2016年底发现的，并于2017年初开始广为人知。做这个事情的黑客组织（HaRak1r1）把MongoDB的数据给删除了，然后留下一个叫作WARNING的数据库，里面的主要内容是说：给我们送0.2比特币到某个收费的地址，然后给我们发邮件（harak1r1@sigaint.org）告诉我们你的IP地址，这样你就能够把丢失的数据拿回来。

大概是这个事情被到处报道，闹得沸沸扬扬的，而这个黑客组织又怕暴露在聚光灯下，在两天紧锣密鼓地攻击了大概8500个不同的MongoDB以后，这个黑客组织收手了。

然而架不住“撑死胆大的，饿死胆小的”，黑客后浪推前浪，前浪虽然死在了沙滩上，后浪仍接踵而来，own3d马上就开始继续搞事，而且收费涨到了半个比特币，一下涨了好几倍。这之后，阿猫阿狗的黑客组织鱼龙混杂地展开攻击，开始删除各种MongoDB的数据。事情到这个地步，问题已经扩大化了。

**那么，到底是什么导致了这个问题呢**？为什么有那么多人的MongoDB在“裸奔”呢？这个问题非常有意思，而国外早有好事者在研究。

**简单来说，MongoDB从一开始就不是一个安全的系统**。MongoDB的早期版本一直都默认侦听0.0.0.0这个外网地址，但如果有基本的安全常识，都应该知道默认配置要放到内网地址127.0.0.1。

这个问题在2011年11月就有用户汇报给了MongoDB，有兴趣的可以查Jira上的Server-4216。很有意思的是，在这个汇报的问题中，MongoDB公司CTO在2012年还回复说，如果我们修了这个BUG，就会影响到以前的安装的行为。如此严重的BUG在MongoDB中，又是什么时候修复的呢？2014年。

近三年的时间里，这个BUG的优先级居然只有P2级别。一般软件公司遇到这种安全问题，给的等级多半都是P0级别。当我亲自去查看这个BUG的详情时，一种恐惧感油然而生。MongoDB的人，难道基本的安全常识都没有吗？

做个对比来看，传统的数据库，不管是商用的Oracle、SQL Server，还是开源的PostgreSQL、MySQL，默认的设置都有用户名和密码，都会监听在内网上。我们不能说这就特别安全，但起码默认的设置还是合情合理的。MongoDB倒好，默认的设置是在外网上“裸奔”。我也不知道这个事情为什么长久未被解决。

根据不完全统计，这次全球暴露在黑客眼皮子底下，没有任何安全防范措施的数据近600 TB。当然，这个数字还可能更大。这件事让我们看到了，一个产品如果做得非常好用，但是该花力气的地方却没花，可能造成的破坏力到底有多大。

**MongoDB的这次安全门事件，也引发了一些人一直以来就有的顾虑**。在印度，政府对MongoDB一直就持怀疑态度，觉得这个软件不安全，其主要理由是MongoDB的投资机构里面有一家叫作In-Q-Tel的风险投资公司。这家公司在创投圈里很有名，可能不被普通群众熟知，但是其背后的老板，那可是无人不知无人不晓的CIA。

一家接受了CIA这个美国情报机构作为老板的风险投资公司，它开发的软件到底安全性有多高，是不是有后门，有没有搞鬼，基本上是件说不清楚的问题。这次大规模的数据泄露“裸奔”事件，和产品可能既有的漏洞是不是有关系，更是谁也说不清楚的事情了。

**可以说，在我见过的数据库产品中，这是第一个犯下如此常识性数据安全错误的**。那么，一家企业会想让自己的数据“裸奔”于互联网，被黑客删除问你要比特币吗？如果你不想面临这样的境况，那就得仔细斟酌一下要不要使用MongoDB了。

当然，MongoDB的新版里这个问题早就修复了。只是很多人，尤其是政府部门，对于这个接了CIA投资的公司，始终都保持了一些警惕的态度。我并没有看到中国对这家公司和这个产品的担心，但是印度已经有了这样的担心。这种担心是杞人忧天，还是确有必要呢？

**2017年下半年，震撼整个IT圈的事情莫过于MongoDB开始准备材料要上市了**。具体上市的时间可能不是今年底，就是明年初。MongoDB这一路走来，终于走向上市的道路，这的确是一件可喜可贺的事。

小道消息传来，有人采访MongoDB的领导，领导当然是一副天机不可泄露的样子。今年9月份在慕尼黑参加数据库领域的顶级会议VLDB时，我还和MongoDB的人聊天，问他们对公司即将上市是怎么看的。

对方的第一反应当然是环顾左右而言它，不想讨论这个话题。于是我说，要不我们就假设要上市吧，那么上市以后对你们有什么改变呢？当然，改变最大的就有辛辛苦苦那么久，终于要赚到钱了。

在北美市场上创业公司不计其数，能够最后走到上市的却百不存一。顺利地上市，无疑是对MongoDB这个产品的最大肯定。投资人终于有了回报，员工和创始人终于可以从此财务自由、衣食无忧了。上市，对于很多人来说是人生的新起点；对很多公司来说，也是发展的里程碑。

这条上市路，不知道MongoDB会怎样走下去，市场上对于MongoDB的热情毕竟没有当初那样热烈了。然而即使热度降低以后，MongoDB依然是全球市场上占有率最高的数据库之一。MongoDB“容易上手”的特性，决定了它在初创公司里占据特殊的地位，更何况很多公司还拿它来跑更重要的非初创产品呢。

但是我们也应该承认，即使到今天，MongoDB刨去“易用性”，在很多方面仍然存在很多这样那样的问题。MongoDB公司赚钱的途径也有一些，但是离盈利却还比较遥远。虽然大家都知道创业公司一般都要烧钱很多年。

MongoDB一路走来并即将上市，这也是一个成功的故事了。而从10gen发展至今，它在开发出MongoDB这个产品之后所采取的一系列开发和商业运作措施，和很多同时代、同类型的公司相比有着鲜明的特点。2017年初的这次大规模安全事件，则是一个非常值得你我思考的严肃事件。

关于MongoDB的故事讲完了，MongoDB上市的消息也已被证实。但不知道你又会如何看待MongoDB的这次安全门事件，以及MongoDB的投资机构里面有CIA作后台的In-Q-Tel呢？


