社区/文章分享/新能力 | 云开发数据库备份回档,教你优雅地防范删库跑路

新能力 | 云开发数据库备份回档,教你优雅地防范删库跑路

哈喽~ 各位开发者们好,我是腾讯云后台开发工程师 gore,今天想跟大家一起探讨下数据库的那些事。当然只要提到数据库,首推经典书籍《数据库从入 shan 门 ku 到精 pao 通 lu》。

玩笑归玩笑,但确实没想到这一幕在现实中上演了—— 微盟事件。本篇文章将讲述这个事件给我们带来的思考,以及我们能做些什么来保护好用户数据。

事件回顾

2020 年 2 月 23 日,因公司员工恶意破坏线上生产环境和数据,导致微盟系统服务不可用。截止到 3 月 1 日晚 8 点,在腾讯云团队协助下,经过 7*24 小时的努力,共同完成了这项几乎不可能完成的任务,3 月 3 日上午 9 点数据恢复正式上线。

几百 T 的数据 100%完整恢复,给大佬们点赞。但与此同时,我们也不得不深思,如何保障 SaaS 服务的数据安全呢?

在业界有一些常用做法,可通过数据备份、权限管理、流程制度等方面来进行一定的约束,尽最大限度保障数据安全。

备份相关

  • 建立跨机房、跨地域容灾备份体系
  • 启用相关的快照策略,保证全量备份和增量备份,并且数据只增不减

权限相关

  • 对权限系统实行严格的分级授权和最小化授权制度
  • 将数据库操作权限和备份权限分离

流程相关

  • 对数据库做修改、删除操作必须由技术主管审批并生成相关操作授权码,通过授权码才能执行相关命令
  • 对高危操作命令,直接电话告警到相关核心人员
  • 对于非常敏感的操作只能申请在监督人员陪同下,进入机房通过专用的设备进行

制度相关

  • 使用堡垒机并定期对日志进行审计,生成审计日报并知会相关负责人。
  • 定期进行灾备的演练

通过技术和制度方面的限制,基本可杜绝由于人为因素导致事故。用户为本,科技向善。云开发在应对用户数据安全方面有哪些新能力和解决方案呢?

下面我给大家介绍云开发提供的新功能 -- 数据库备份回档。

云开发的数据库备份回档

能力特性

云开发的数据库备份回档功能,即备份数据与还原数据。该功能将由系统自动在每天凌晨进行全量数据备份,最长可以保留最近 7 天内的备份数据,开发者可根据需求来选择将集合回档到指定的时间点。

云开发的数据安全底层保障机制

到这里肯定会有小伙伴坐不住要问了,这不就是个备份嘛,谁知道云开发的备份是不是安全呢?

对这个问题我也有过同样的疑惑。在这次事件之后,通过找开发、运维同学的层层打探,了解到云开发数据以及备份的安全细节,准备分享给大家。其实我想说要删库跑路确实还挺难的,哪有想的那么简单,一下子给删了。

下面给各位看官一一道来,要经过多少层关卡才有可能删掉云开发上的一份数据!

云开发的数据和备份到底有几份?首先在数据库的服务器上是存有一份源数据和主从同步日志的,其次在云存储上有数据和日志的冷备份,最后还有冷备份的快照。

显而易见,要想完全删掉云开发上的这份数据需要从这三个地方都"下狠手"。下面将以小故事的形式来讲述这个过程,如有雷同,纯属巧合。

scene1: 数据库被恶意删除

A 同学是 DBA,有一天,由于个人原因心血来潮突然想到删库跑路。虽然他有数据库服务器的 root 权限,但是服务器上有监控,对于敏感操作也是需要审批的。经过不可描述的 sao 操作,竟然绕过了各种监控、审计过了第一道红线,把数据库服务器的数据、主从同步日志都给删除了,并且还没有被发现。删完后突然想起来开发同学有说过这个全量备份数据、增量备份日志是有冷备份到云存储上的,还得想个办法一起清除干净。

scene2: 数据库被恶意删除,同时冷备份也被删

经过仔细思考,A 同学决定一不做二不休。由于冷备份实现逻辑是由数据库开发同学(简称 B 同学)实现的,所以存储帐号的权限只在 B 同学这边有。邪恶的想法来了,拉 B 同学一起下水吧!经过软磨硬泡,B 同学答应了 A 同学的请求。本以为就是登录账号点个“删除”的事情,万万没想到云开发的存储是有做分级权限控制的,账号权限显示:可读写、不可覆盖或删除。由于 B 同学手上的子账号权限不足,根本就没办法删除。A 同学见此场景有点慌了神,心想已经把服务器上的数据删除了,再不赶紧把冷备数据删除了,一会儿就被发现可咋整。此时,A 同学有点纳闷 B 同学不想办法解决,还在机器上老在敲些啥命令。B 同学突然大叫一声"搞定",A 同学凑过去看的一脸迷糊,怎么账号变成了 admin 用户,没想到 B 同学居然懂 hack 技术,入侵总监电脑拿到了更高权限的帐号!一气呵成把文件给删了,联合两人之力过了第二道红线。

scene3: 数据库、冷备份被恶意删除,备份文件的快照也被删除

然而,经过删库、删备份,A、B 同学的邪恶计划并没有在得逞。因为虽然存储上的备份数据删除了一份,但是云开发的存储开启了版本快照功能,底层机器机器上面还有备份。灵光一闪,A 同学说他在存储部门认识个老同学是运维(简称 C 同学),看能不能拉他入伙一起来干一票大的吧。C 同学听到 A、B 同学给的诱惑条件,立马登录机器,删除命令一把梭,按下回车 done,三人准备立即跑路。本以为神不知鬼不觉完美删除数据以及各种备份,越过第三道红线,没想到这道门通往的是监狱!!

课代表小黑板:

在云开发的数据安全机制下,人为希望通过歪门邪道删除数据,必须绕过各种细粒度分级权限、操作日志审计、敏感操作告警、监控等,并且要至少三位不同部门不同岗位的同学合伙才有可能做到。通过上述故事,大家可以感受到云开发在数据安全性这方面是拿捏得死死的。其实这只是云开发在数据安全保护方面的冰山一角,在实际的业务中,云开发还有敏感操作的校验审计、批量敏感操作触发告警拦截、备份数据存储历史版本等保护机制,在此就不再一一赘述。

云开发数据备份回档 Quick Start

1.登录微信开发者工具 - 云开发控制台

2.数据库 - 新建回档

3.选择回档的时间点、集合

4.设置回档后集合名称,确认回档

5.查看回档结果

总结

大船沉没,原由小孔,百丈之堤,溃于蚁穴。

希望开发者们能正视数据安全性问题,检查自身业务。还没有备份的同学,数据库备份回档功能赶紧用起来吧~

文档链接:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/database/backup.html

云开发(CloudBase)是一款云端一体化的产品方案 ,采用 serverless 架构,免环境搭建等运维事务 ,支持一云多端,助力快速构建小程序、Web 应用、移动应用。

技术文档:https://www.cloudbase.net/
微信搜索:腾讯云云开发,获取项目最新进展