02.26 互联网公司,怎么防止程序员删除数据库,篡改、删除产品的程序?

engrossment


在程序员或者特别是运维圈中,“删库跑路”往往是圈内人相互调侃的一个段子,而这也正是因为删库这一错误实在太低级,在高学历和高技术能力的程序员中才能成为一个梗,毕更何况这一行为更是直接违反了我国《刑法》的第286条,也就是破坏计算机信息系统罪。所以真的敢在数据库中键入“rm -rf / ”这个明明,等待你的可能就只有一曲《铁窗泪》了。

微盟遭遇删库跑路

然而在2月23日,国内知名的智能商业服务提供商微盟系统出现故障,大面积服务集群无法响应,生产环境及数据遭受严重破坏。跟据官方发布的通告称,“犯罪嫌疑人乃微盟研发中心运维部核心运维人员贺某,贺某于2月23日晚18点56分通过个人VPN登入公司内网跳板机,因个人精神、生活等原因对微盟线上生产环境进行了恶意的破坏。”

受删库事件影响,微盟股价在24日出现下跌,市值一日之内蒸发约12.5亿港元。“rm -rf / ”这简单的几个字符,为何会产生如此大的破坏力呢?事实上,rm是linux系统中删除文件的命令。-r代表删除这个下面的一切,f则表示不需要用户确认直接执行。通常这个命令是用来删除指定文件夹, 例如“rm -rf /Temp/”就是删除/Temp/这个文件夹中的所有内容,但如果后面的文件夹路径没有加,“rm -rf /”在生产环境中被直接使用,就代表着清空所有数据。

事实上就像我们前文中提到的一样,删库操作属于非常低级的错误,但操作者毕竟是人不是机器,因此难免会有犯错误的时候,因此基本上所有的数据服务提供商都会准备备份服务器,或者容灾系统。当一处服务器因意外停止工作时,整个系统可以切换到另一处,使得系统功能可以继续正常工作。

没错,在2月23日晚间显然有不少微盟的用户也这么想的。据不少商家的回忆,起初大家只以为是简单的服务器宕机,毕竟这种情况并不罕见,强如Facebook的服务器都曾经崩溃过,而微盟方面最初公开的解释,则是腾讯云的硬件问题。

删库一时爽,客户全完蛋

正常情况下,微盟作为一家上市企业,即便与BAT等巨头还有一定的差距,但显然是会配备异地容灾系统,因此通过备份恢复数据也并不会太困难。然而就像微盟在公告中谈及的那样,这件事属于“我们之中出了一个内鬼”。“核心运营”就代表其在内部的权限不低,亲自动手实施这种报复性意味浓厚的行为,以他的经验来说大概率是把事做绝,因此很可能将备份也一并进行了删除,导致了后续微盟想要恢复所有数据,需要从此前浩如烟海的日志中找到相应数据。

虽说是内鬼动手这种防不胜防的事件,但海恩法则有云,“每一起严重事故的背后,必然有29次轻微事故和300起未遂先兆,以及1000起事故隐患”,因此这一事件显然也暴露了微盟内部流程管控上的缺陷。多副本保存、异地保存,乃至线上线下保存等容灾措施,虽然可能因为内鬼的行为导致功能失效,但是他是怎么完成针对不同数据库实现删库的操作呢?

这就意味着微盟在数据库管理员的管理方面有着一定的漏洞,例如文件加密权限隔离、双人复核机制、针对运维的高危操作没有审批机制,以及关键应用业务的删库监控管控等,这些监管机制在此次事件中并没有看到起作用的影子。试想一下,如果针对删库这一的关键操作,需要有另一人来复核的话,显然这场悲剧极有可能就不会发生。

城门失火,殃及池鱼

而这一事件除了让微盟自己遭殃之外,显然还殃及了池鱼。其一,就是目前大火的远程办公,由于疫情的原因,很多互联网企业都选择让员工在家进行远程办公,但这有一个缺陷,就是对于一些需要内网的操作,只能让员工通过VPN的方式来登陆,这其中的安全隐患不言而喻。但这个问题不解决,远程办公想要真正媲美线下显然并不太可能。

其二,就是微盟代表的SaaS(软件即服务)业务又一次走到了风口浪尖。事实上,SaaS提供了一套成熟化可供复制可以通用的软件,能够广泛应用在协作、OA、企业沟通、财务、人事等场景,并且由于上云,数据的处理速度、流程的流转速度都比之前上了一大台阶,从而又降低了人力和时间等方面的成本。

尽管微盟事件对于SaaS业内的其他企业也或多或少有所影响,但其自己受到的损失可能并没有想象中那么大。君不见,随着生产环境和数据的修复,在2月25日港股收盘时,微盟股价还上涨4.22%至6.18港币。业内有观点认为,这或许是因为微盟作为一家老牌厂商,其所沉淀的客户数据是海量的,因此对于客户来说想要离开可能也并不那么容易。

而SaaS,就是服务商为商家既提供设施又提供人手来解决相应需求,其关键的指标就是续约率,而为了让客户续约,SaaS服务商可谓是八仙过海各显神通,但微盟这一事件显然会对用户的信心造成一定的影响。与此同时,阿里的钉钉和腾讯的企业微信其实也在蚕食着SaaS的市场,并且阿里和腾讯不收钱只要流量的打法,无疑更切合国人钟爱免费的特点,因此在这样的双重打击之下,SaaS行业在国内的前景也蒙上了一层阴影。

归根结底,微盟这次马失前蹄的关键,可能正如有行业人士所言,是企业文化建设出现了问题。马云曾有云,员工辞职的原因无外乎“钱给少了,心里委屈了”,而这次微盟的核心运维不惜以违法犯罪为代价,也要让其付出损失,其中必有故事。如果微盟乃至其他提供数据库服务的企业不能引以为戒,要么提升员工的归属感,要么严格规章制度,或许这种删库跑路的案例还会接着重演。


三易生活


如何防止程序员删库跑路呢?

这个问题之前在新闻中报道过的不止一次了,其实最关键的就是权限,控制每个开发人员的权限。

具体如何控制呢?从以下几个方面:

1、数据库权限

正式环境开发人员不具备任何delete、insert、update更操作权限,只能进行selete,执行sql升级,必须又dba进行审核执行。

不同项目程序使用不同的用户,根据程序使用范围授权相应的权限,程序连接数据库必须使用密文,通过自己特有的方式进行加、解密。对程序进行区别用户,对以后问题的查找是非常有利的。

2、服务器权限限制

所有开发人员是没有服务器root权限的,登录服务器必须通过堡垒机,并且堡垒机有日志、命令、视频监控功能,可以记录每个人员的操作。

堡垒机的登录,必须做登录限制,比如:只允许公司的地址进行登录等。

正式环境的升级必须通过专门的发布系统进行升级,比如jenkins、ansibles都可以结合起来使用,进行权限控制。

3、本地git权限控制

git上所有项目,只有对应项目的开发人员有提交权限,其他权限没有,并且git都有历史提交日志,可以记录某人、某个时间,做了什么提交。

git权限由质量管理工程师统一分配、管理。

4、账号、权限的及时回收

针对已经离职的开发人员,对授权的用户、权限必须及时、有效的进行回收,避险账号泄漏等。

以上思路,希望对大家有一定的帮助。


悬钟Mr


“删库跑路”是违法的,没有哪个程序员会无故冒这样的风险。

造成这种结果,只有两个原因,一是心理委屈了,再就是钱给的不到位。


当然,防止人为的意外事故(黑客、竞争对手),保护公司的数据资产安全也是非常有必要的。可以从以下几个方面入手:信息的保密性、真实性、完整性、未授权拷贝和寄生系统的安全。

一、划分安全域

根据办公PC的重要程度来划分安全域:

重度PC、中度PC、轻度PC。

像研发、运维人员对于电脑配置和网络环境要求比较高,这类PC就应该划入重度PC。对于客服、销售人员平常只用上一下CRM等系统就可以划到轻度PC。

对于服务器和办公网环境必须划分安全域,随着服务器数量的增多还需要划分安全子域。

二、终端管理

严格对访问进行限制。

必要时可以上保垒机对于运维操作进行审计。补丁方面可以利用第三方的软件类似有LANDdesk等,或者微软自带的WSUS等。组策略可以根据主机中固策略做。

三、DLP

像财务、研发方面的数据都非常重要。不能轻易流出公司,对这类数据必须要做防泄漏管理,可以安装像赛门铁克相关方面的安全软件。

四、防网关病毒

在办公边界布署上网行为管理软件,记录重点岗位的电脑上网行为,如有异常及时预警,随时调整安全级别。

五、远程访问

远程访问最好要有保垒机,通过保垒机登陆后才能操作。

六、介质管理

这个是最基本的,U盘等移动设备必须要进行管控。防病毒感染、恶意拷贝,拷贝要有记录,很多行为管理软件都有这方面的功能。

七、代码审计

成型产品的代码要有行为审计。代码的增、删、改操作要有授权机制。

八、备份

这是最后一道防线,服务、数据、程序、设备等的备份,要有任何一个模块出现问题,都可在短时间内恢复生产的能力。

以上是我的回答,希望能对您有所帮助。祝好!