哈喽~ 各位开发者们好,我是腾讯云后台开发工程师 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/
微信搜索:腾讯云云开发,获取项目最新进展