startup 的安全问题

安全这个问题好像离绝大多数的 startup 比较遥远,好像谈到安全只有 BAT 这类规模的才会重视。
绝大多数的 startup 起家都是短糙快,怎么好搞怎么搞,怎么方便怎么搞,怎么省事怎么搞。再加上「绝大多数的创业公司都喜欢宣称自己是「平均年龄25 的年轻团队。」,正面理解起来是有活力的团队,反面理解起来,其实代表的是「招不到人,只能忽悠年轻人,组建的一只没经验靠人力时间堆砌的弱逼团队」」,其整体的安全性可想而知。
这或许在初期并没有什么问题,因为本来知道你的人就不多嘛,cracker 们也没兴趣花时间在只有几千几百用户的上团体上。
但是如果你很幸运,成为了那百分之几甚至千分之几的存活下来的,那就是另外一回事了,你们的产品会在短期内被很多的用户知道,得到了不少用户的认可,用户数量逐渐变多,接下来可能要经过一段爆发性的增长,一方面来说是好事,但是,另外一方面,对公司整体的技术也是一个非常大的挑战,再加上很多都是没什么经验的工程师,真的就是摸着石头过河了,在这期间,会经历若干次的宕机服务不可用事故,为了尽快的 available,不得不牺牲很多方面,正所谓 tradeoff,比如牺牲了安全。
然后名气慢慢大了,积累的用户数量在圈子里面也数一数二了,白帽子也好黑帽子也罢,都对其产生了很大的兴趣,随便扫扫,就发现了不少有价值的信息,至于什么信息大家自己补脑吧。
好在有类似 wooyun 这样的平台,突然有一天 startup 在 wooyun 上收到了一封「弱口令」(关于弱密码的危害,请看这里)的漏洞提交,至此,公司开始对安全有了一定的认识,发现原来弱口令还是导致直接渗透到内网,于是上上下下一顿整改,但这毕竟只是冰山一角,前几年为了方便留下的祸患太多了,接下来,不停的收到若口令、权限绕过、设计缺陷等等各种各样的漏洞报告。虽然大多数人都很重视这类问题,积极的配合整改,但总会有那么些人不以为然,认为这些事情不值一提,根据 2/8 原则,80% 的漏洞都是由 20% 的人造成的,直到某一天,发现公司的用户信息、代码被拖库了,傻眼了。
上面可能是很多 startup 都要经历的过程:为了方便随便上线,携带敏感信息的配置文件不加任何处理,无任何限制的开放对内服务的访问权限,弱密码,以上还仅仅是技术层面的因素,如果遇到叼炸天的工程师自以为是等人为非技术因素,后期需要改进沟通的更是难上加难。
出几次事故也未必是坏事,最起码让我们明白,不好好对待这个问题,迟早是要出大事的,用户信息泄漏了导致公司陷入危机的不在少数,那些处在风华正茂认为老子(或许有老娘这么一说)天下第一无人能敌写代码如行云流水天马行空 bug free 的也是会出些非常低级的错误的。很多东西,尤其是安全,仅仅是从技术层面加以控制是完全不够的,更多的是需要从行政手段上加以干预,有奖有惩,才能从根源控制。当然,上面说的这些尤其是最后一点在一个仅仅发展了两三年,连基本的工程师制度惩处措施都没有,没有强大的执行力或者说是重视此问题的有话语权工程师的干预下,是不可能做到的。

维护 github enterprise 版本

作为高富帅的公司,我们毫不手软的购买了 github 的 enterprise 版本,截止到 3 月底,我们累计的投入已经接近 6 位数的 $$$ 了。我作为维护者,从管理的角度说说使用的感受。总的来说,四个字 – 「物超所值」。如果你们公司的工程师在 500 人以下,不妨试试,码农们的心情绝对会因为使用这么好的产品而屁颠的合不拢嘴,间接的提高的生产效率,最终受益的还是公司。
目前这种 "out of box" 的产品越来越多,github 是一个典型,包括我之前提到的 elasticsearch 同样是一个典型(github enterprise 重度依赖 es)。好处不必多说,维护起来工作量会小的多,你没有必要也不大可能了解到产品内部的运行的机制,这个从 github 提供的 ssh 登录账号就能看出:
To preserve the integrity of the appliance and ensure it remains in a consistent state, we have the following limitations in place:

    Root access is not provided.
    The admin user password is not provided.
    Installation and execution of third party software is not permitted.
    Modification of the underlying VM configuration is not permitted.

Bypassing any of these limitations will void all warranties and may place your installation in an unsupportable state.

拿到一个新的产品服务,我第一要做的就是先通读遍官方的文档,初次打开,觉得不可思议,一共就几十篇文档,两三个小时就能过完。回头再看的时候发现,对于这么一个 out of box 的产品,几十篇文档绰绰有余了,我简单的总结了下涉及到的,也是我关心的方面:
1. 从监控的角度出发,官方提供了 API 方便调用,
2. 用户、log audit/forwarding 同样在 web portal 上简单的点点就完成
3. 用户的认证方式也是支持多种,包括默认的 build-in 方式以及 LDAP 等
4. 数据的备份异常的简单,根据文档,几条 cli 就能搞定
5. 使用 virtualbox/VMware 来创建 instance,倒入证书、升级版本、迁移也是异常的方便
6. 如果磁盘用量规划不足,临时的增加 block device 也是异常的快捷

文档的价值有多高了?比如在指导你做 upgrade 的时候,会很明确的提示你:

  1. Shut down your Enterprise virtual machine.
  2. Take a snapshot of your virtual machine.
  3. Boot your virtual machine.
  4. Enable Maintenance Mode.

还有其他需要关注的吗?没了,就是这么简单。如果还有文档上没有涉及的问题怎么办,直接开 ticket,他们工程师反应时间、回答问题的质量以及态度跟 RedHat 是一个级别的。
要是 github IPO 了,我会长期持有他们家的股票的。放张很早之前我司某早期工程师破解的截图,现在我们已经「改邪归正」,早用官方授权的 seats 了。

 

Elasticsearch 跟 VC(venture capital)

在 IT 行业,想开个公司做大做好最后大家都能吃香喝辣,基本是离不开幕后的 VC,不管是国外的 Google、Facebook、Twitter,还是国内的 Baidu、人人、微博,包括我司在内的,统统离不开这帮干爹。不仅仅是 IT/TMT 行业,连北京满大街的粥店火锅店卖鸡蛋的开房的都会有 VC 的帮助。
总之,VC 的产生总的来看是一件好事,你愿意出钱我愿意烧钱,大家做的都是心甘情愿,赢了大家按协议分钱退出;输了优先清算点东西,也图不到个什么。除非 founder 都是不缺钱的土壕(canonical 的 CEO),一般的创业者还是离不开 VC 的。
之前在火车上把桂曙光老师写的《创业之初你不可不知的融资知识》看了两遍,对VC/LP/GP/Option/Term sheet 等这些概念有了个大致的了解,再加上本身对 IT 跟 VC 这两个方向都比较感兴趣,而且这两者基本可以说是臭气相投,谁也离不开谁(相比 TMT,VC 基本不会投资芯片、新药研发这类项目,因为前者更加的来钱来的快,更容易 copy),平时也比较关注这方面的动态。

下面进入正题,Elasticsearch,主要说说 ES 跟 VC 的关系。

对于一款开源的产品,我了解的大部分运作模式基本有下列几种:

  1. 如果是从公司诞生的,比如像 linkedin 开源的 kafka,Twitter 开源的 twemproxy 等等,这类自然不用担心"销路"问题,这类产品都是有专职的工程师去开发,说白了,就是公司花钱雇这帮人来专门的维护开源产品。如果发展的不错,还能被 Apache 基金会纳为顶级开源项目,比如上面提到的 Kafka,这个对公司绝对是一种莫大的荣誉,就像如果你是一名 ASF 的 committers,同样是一个非常大的荣誉。
  2. 更多的是像下面描述的那样。很多时候纯粹是个人不满于现状,于是开发了一个更好用的工具,然后在 github 上开源出来了,然后世界上对现状不满意的人还蛮多的,那些人发现了这个项目之后,认为这是个非常好的东西,确实能够解决自身的需求。于是本着  don't reinvent the wheel 的原则,大家就一起来贡献代码了,然后,然后就越来越火了。不过这类模式有个问题就是,很多都是凭作者的兴趣爱好感觉来走,他们的专职工作并不在此,如果这个项目很火,有很多人贡献代码还好,如果这个项目不是很火,可能适用的领域很狭窄,可能最活跃的贡献者就是原作者本人,如果哪天作者说迫于生计不想再继续了,或者没时间了,或者没兴趣了,这个项目基本就死了。这个也是目前 Linux 下大多数软件工具产生的方式。看看那些项目主页出现的 "donate me" 就知道了。
  3. 最后一种也是最近几年比较火的方式,找 VC。虽然之前也有,但是一直都比较的低调,最著名的就是 RedHat 了,早在 97 年的时候,Cygnus Solutions(99 年被 RedHat 收购) 就接受了第一笔 VC 投资,这同时也是开源软件领域的第一笔风资 。近几年,最有代表性的就是 Puppet 跟 Elasticsearch。开源项目找 VC 看上去比较矛盾,源代码都是是公开的,就在 github 上。那怎么赚钱了?不过仔细研究下就会发现一点都不矛盾。这个应该是所有开源软件的套路了:
  • 卖服务,包括企业培训,7×24 的生产环境支持,快速的 bug 修复等等。
  • 还有一小部分的是收费的会开放更多的功能而免费的版本只提供基本的功能,这类的在各个 repo 里面能看到不少。

为什么要把 Elasticsearch 单独列出来说了?我认为这是开源公司跟 VC 合作的一个比较成功的案例,虽然说成功为时过早,不过从目前的发展来看,前景是相当的令人兴奋,完暴 Solr。

从去年中旬起,我们开始调研开源的日志收集处理方案,当时如果你 Google elasticsearch 同时肯定会出现 logstash/graylog2/kibana 等与之配套的条目,并且当时这几个(graylog2 目前已经不在主流了,接下来不提他了,Elasticsearch/logstash/kibana 已成为 log 收集处理的工业标准)项目都是各自独立发展的:

ES 在 12 年 11 月完成了 A 轮 $10M 的融资。紧接着,3 个月之后(这么快?),也就是 13 年 1 月 ES 宣布了 B 轮融资。从他们的对外报告中可以看到,这 $24M 的费用主要会用在哪里,其中之一就是人才的招聘。接着从他们的 blog 中可以明显的看到他们加快了招人、扩展海外市场(US)的步伐。插个话,说说我们的经历,我正好是在宣布拿到 A 轮的时候进入的,接着就经历了从 0 开始的大张旗鼓的数据中心建设,这个跟当年对外的口径基本一致。目前每个月仅仅花在带宽服务器网络设备上的费用就多的吓人,至于花在人上面的费用,大概数数应该都是能算得出来的。
Aug 27, 2013, Jordan Sissel 跟他的 logstash 加入到了 Elasticsearch,而 Rashid Khan 先前也加入到了 ES。再细挖他们的 blog(我疑惑的是,他们把员工的信息补充的如此详细,从 twitter 到 linkedin,不怕别别的公司挖墙脚么?) 就会发现,ES 把几乎跟其周边生态系统相关的人都挖过来了,从各个语言客户端的 API 作者到有经验的使用者传道者,只要是跟其相关的,统统都挖过来了。这个完全没问题,搞开源重要的一点就是要形成一个生态系统,看看 Hadoop 就知道了,孤立的搞下去基本会完蛋。挖人是需要花费很高的代价的,除了要晓之以礼,动之以情之外,Salary Package 是绝对不会低的:
We pay our people very well – probably above the industry average.
再者,ES 在 Bay Area 开设了除 Netherlands 的第二个办公室。除了这些,对外开放的免费的演讲,开设 Webinar 都是需要时间跟费用的。不说其他的,一天的下午茶零食,如果再包含午餐、晚餐,开销就不小了。
而上面这些费用,也只有 VC 才能供得起,ES 前后拿到的一共 $34M 估计也够花一阵子了。

从上面的可以看到,VC 不但对于传统意义上的[移动]互联网有比较大的帮助,对于这类研发开源软件的公司同样有不小的帮助,只要是一个注册了的公司,都离不开上面的这些日常开销,差别在于多少的问题。比如,ES 允许员工 home based,这能节省一定的房租开销,不过其他方面该花的还是要花的。

不知道有没有人好奇这些 VC 的钱都哪里来的?VC 的都是 LP 给的,LP 的钱就各种来路了。再者,我理解的天使投资跟 VC 的界限并不是很明显,所以一起说了。

  • 天使投资的钱一般都是自己的,一般的套路都是有幸经历了某家公司的 IPO,作为早起员工,拿到了一大笔的 option,30 财富自由退休,不能再继续的苦逼写代码了,于是把钱拿出来做投资,虽说是风险投资,不过最终肯定是稳赚的,这就是上面说的不会投资芯片、新药这类需要大量投资而不容易除成果的产业的原因,门槛很高;要么就是黑钱了,比如那个前段时间被搞的薛蛮子。
  • 对于 VC,这个就是 LP 的了。LP 的大多数都是一些机构投资者,比如公共养老基金、保险公司等等;再者就是跟天使投资类似的富有的个人,据说现在不少的煤老板都成了 LP 了。
  • 另外,现在不少互联网公司也要一起近来玩,比如 Google Ventures,他就投资了 Puppet;再比如阿里巴巴集团战略投资部,也投资收购了不少公司

大致就说这么多了,最后放一段 ES 拍的视频,制作精良鼓舞人心 ;-)

《The Startup Kids》 观后

The Startup Kids》是一部讲欧美小青年做(移动)互联网创业的纪录片,采访了不少的 startup,包括我一直在使用的 dropbox、vimeo,曾经用过的  Soundcloud 以及从未用过的 Kiip、Scribd、drop.io 等等。

要成功无非分为内在与外在因素,其中内在的起绝对的主要作用,包括热爱激情坚持专业等等的内在素养。这里主要说说外因,外因对一个公司的发展也有非常大的影响,感受最深的几点是:

这些 startup 能非常容易的廉价的租用各种云,这个在大陆基本是不现实的,如果你服务的是大陆客户但是使用的墙外类如 ec2 的基础设施,这意味着严重的访问延时严重的丢包,最不幸的是直接被墙。而大陆的几家云,具体的我就不评价了,要是靠谱的话,被收购后某些业务早就迁移过去了,而不是现在是用物理机的传统方案。

能够方便的获取各种资源,包括但不限于技术上的资源,比如各种各样的开源技术方案;相比大陆好的多工商、税务、办公场所等等一系列的商业资源;以及最最基本的生活设施,包括空气水等等。不得不承认的是,大陆的大部分工程师还在为租房买房买车担忧的时候,对岸的则在想着 "How to make world better"。

纪录片在介绍 drop.io 的时候让我突然想到了域名的问题,同样的,如果目标是大陆的用户,并且是老老实实把服务器放大陆,使用 xxx.io 这类的比较新奇域名就是死路一条,因为中国的局域网有备案这一说法,因此还是老老实实的用 .cn, .com 域名,即使买了,也请老老实实的去拍照备案。当年我们曾经找人帮我们做加急的三天快速备案,一方面是当时有一部分的 .com 域名没有备案,另一方面是有不少类似 .io, .us "非主流"域名,后来发现,域名备案带动了一个新的产业链,从上游到下游。

影片中有不少黄皮肤,人肉了一下发现要么是纯正的中国血统(Ping Li),要么是全家移民过去的(Brain Wong),有的连 Co-founder 都是中国人。这是不是说明中国人其实还是很有创新实干能力的,只不过周围的大环境不太理想,一旦到了一个比较好的环境,还是能如鱼得水做出不少工作的。

最后,推荐大家一看。