专栏首页腾讯云数据库(TencentDB)删库跑路只用1秒,数据恢复7天7夜,如何避免历史重演?

删库跑路只用1秒,数据恢复7天7夜,如何避免历史重演?

 “删库跑路”作为调侃程序猿的梗一直以来广为流传,但是当真的发生的时候,犹如黑天鹅降临,瞬间业务全线停摆,造成难以估量的损失。在SaaS领域举足轻重的服务提供商微盟,就刚刚经历了这样一场没有硝烟又争分夺秒的战争。

一周前,微盟部署在自建MySQL数据库上的核心业务数据,被微盟某运维人员用一种让程序员闻风丧胆的Linux系统下文件删除命令,整体进行了不可逆的删除。更残酷的是,备份数据也一起删除了。

所有微盟平台上的用户和商家业务因此被迫停滞了一周,而服务没有恢复的每一分每一秒都是收入和用户的损失,这次删库造成的后果也超出了外界想象。

要想快速恢复业务正常运转,摆在微盟面前的难题是如何在数据库连同备份文件被全部删除,且数据体量达到数百T的情况下,进行100%的数据恢复。而专业的数据恢复公司,也只敢谨慎评估20%左右的修复预期。

微盟立刻启动紧急响应机制,并向腾讯云紧急求援。

1

PartⅠ 7天7夜,数据100%恢复

幸运的是,虽然文件相关的索引节点信息被删除了,但只要没有数据写入,数据块还是在的,这为修复提供了一种潜在可能。备份服务器上文件类型单一,数据集中,且微盟数据被删后,硬盘没有被二次写入,理论上里面可能存在相对完整的备份数据,于是技术团队决定从备份服务器入手恢复数据。

至此,一场可以载入史册的操作系统级的数据恢复战役打响了。

为减少恢复时间,在征得微盟同意后,技术团队越过镜像拷贝的步骤,在不拆除原有服务器上的数据盘的前提下,将另外一块系统盘安装到原有服务器上,通过新系统盘加载OS和数据恢复软件,直接扫描提取数据盘中的“隐藏”数据,其间涉及到数据读取、不同数据块的拼接、遗漏数据的二次扫描、数据验证等环环相扣的操作步骤此处不一一描述。

终于,经过7天7夜的奋战,3月1日晚,微盟发布公告称,数据已经全面找回,同时宣布基础设施全力上云。

根据微盟公告,微盟将在权限管理方面,使用腾讯云CAM权限系统进行云资源管理,严格执行分级授权和最小集权制度,对高危险动作执行二次授权制度;使用腾讯云堡垒机替换自建堡垒机,进行细粒度许可权分级和授权管理。

同时,微盟将借助腾讯云数据库MySQL的数据高可用和安全体系,逐步放弃自建数据库服务,迁移到腾讯云数据库,提升数据库跨可用区和易地灾备的能力。

云数据库在数据安全、运维成本、稳定性、可用性和备份恢复上比自建数据库更有优势,这也是微盟此次决定全面迁移到腾讯云数据库的主要原因。

1

Part Ⅱ 六大法宝,将灾难扼杀在摇篮

相比较于事后抢救性恢复,如何避免这样的灾难再次发生,是更为重要的。只要把握住六大法宝,就可以防患于未然。

一、建设数据库灾备系统

数据库灾备系统是基于数据库层的技术和架构来实现对数据的保护,确保在诸如机房故障、地震、火灾等不可抗因素下数据的安全。

两地三中心、三地四中心这类叫法其实就是指数据库异地多中心的灾备系统。

建立灾备系统的好处显而易见:在业务环境发生安全故障(自然灾备、机房故障、人为误删)的时候,可以第一时间切换到异地的灾备数据库恢复数据和业务访问。一套健全的灾备系统可以使最佳复原时间目标(RTO)降低到秒级,点我了解腾讯云数据库灾备解决方案

目前主流云厂商数据库产品都有配套的灾备产品解决方案,以腾讯云MySQL产品的两地三中心方案为例:

自建数据库可以仿照云厂商的数据库灾备架构,来建设自己的数据库灾备系统。当然,搭建数据库灾备系统对企业的技术门槛要求较高。除了搭建部署数据库灾备架构,还需要架构链路的监控、网络质量保障、故障自动转移机制、数据一致性校验等配套的系统策略跟上。

二、有效的备份

数据库备份绝对是在安全故障下的救命稻草。

这个时候如果没有数据库备份,或者备份没有验证过导致备份文件不可用,就失去了最后一根救命稻草,只能选择走操作系统级别的磁盘文件恢复。即使侥幸能恢复,耗时也会非常之久,导致相当长的业务停机时间。

需要注意的是,备份不是简单的工具应用,而是系统化的备份策略。全量备份、增量备份、日志备份的策略搭配、备份异地存储、备份有效性验证都必须考虑到位,把备份当做一个系统工程去建设,而不只是简单的备份工具运营。

三、访问控制策略

对于绝大多数中小型公司来说,一个运维或DBA管整个系统,并且拥有整个系统所有主机的最大权限,比如root。这种集权式的管理就存在“删库跑路”的风险。

在运维体系的建议中,我们需要规避这种不受到权限制约的超级用户。建议方案是建立多权分立的权限体系。

以三权分立的体系为例,将传统数据库系统 DBA 的角色分解为三个相互独立的角色,分别是安全管理员,审计管理员,数据管理员。基于此基础提出的安全策略,主要细分为三个部分,分别为数据加密、数据脱敏访问、强制访问控制,三者组合提供多个层级的数据安全保障能力。

安全管理员、审计管理员、数据管理员这三个角色之间相互制约,消除出系统中的超级权限,从系统角色设计上了解决了数据安全问题。

三权分立权限分解图如下:

四、数据存储加密

数据加密是将数据库中的数据通过身份认证、密钥+密码、密钥管理等进行数据保护的技术,是防止数据库的数据信息篡改和泄露的有效手段,通过数据信息加密能够确保数据用户信息的安全,即使数据被非法导出、备份文件被窃取,也无法恢复和访问丢失的数据。

数据库服务器端的加密需要对数据库管理系统本身进行操作,属于核心层加密,能够对数据库的敏感列、表空间、备份、Data Pump 的Export文件等进行加密,也能够对客户端到数据库之间的通信链路传输进行加密,防止物理链路数据被窃取。客户端加密的好处是不会加重数据库服务器的负载,这种加密方式通常利用数据库外层工具实现。

对于一些重要的机密数据,如一些金融数据、账号密码、商业秘密等,都必须存储在数据库中,需要防止对它们的未授权访问,哪怕是整个系统都被破坏了,加密仍可以保护数据的安全。对数据库安全性的威胁有时来自于网络内部,一些内部用户可能非法获取用户名和密码,或利用其他方法越权使用数据库,甚至可以直接打开数据库文件来窃取或篡改信息。

因此,采用加密技术对重要数据进行加密处理,能够保证数据存储的安全。数据加密方式有两种:

  1. 业务则加密 调用数据库内置的加密函数,将加密后的结果写入数据库,正常读取的也是加密后的数据,在应用里面执行解密。当然,业务则加密这里涉及到一定的应用程序改造成本,需要决策层权衡下。
  2. 数据库内置加密功能 比如MySQL5.7版本推出的数据库内置的TDE 透明数据加密,可对数据库的表空间文件进行加密。

现在主流云厂商的数据库产品都陆续推出了自己的加密功能,可以做到更加细粒度的加密,以腾讯云自研数据库的加密功能为例,支持两种加密粒度,列级加密和文件加密。

五、数据库审计能力

数据库审计能够实时记录数据库活动,对数据库操作进行细粒度审计的合规性管理,对数据库遭受到的风险行为进行告警,如黑客对数据库 SQL 注入攻击、异常操作等。

因此,提高数据库的安全级别,还需要数据库审计技术支撑。

审计主要有如下几种:

另外,数据库审计技术还用于监视并记录对数据库服务器的各类操作行为,通过对网络数据的分析,实时、智能地解析对数据库服务器的各种操作,并记入审计数据库中以便日后进行查询、分析、过滤,实现对目标数据库系统用户操作的监控和审计。

数据库审计技术可以监控和审计用户对数据库中的数据库表、视图、序列、包、存储过程、函数、库、索引、同义词、快照、触发器等的创建、修改和删除等,分析的内容可以精确到SQL操作语句一级。还可以根据设置的规则,智能判断出违规操作数据库的行为,并对违规行为进行记录和报警。

六、强调安全规范

这一点其实并不是数据库功能系统层面的安全,而是管控制度层面的安全建设。

1、严格管控权限,明确用户职责。遵循最小权限授予原则,避免因为过度授权而带来的安全风险。明确不同的数据库用户能够用于的工作范围,防范和隔离风险。比如:数据库应用账号只赋予SELECT、UPDATE、INSERT权限,取消DELETE权限。把需要DELETE权限的逻辑改成用UPDATE实现,避免被物理删除。

2、密码策略强化。防范弱口令带来的安全风险,定期更换密码,同时生产和测试环境严格使用不同的密码策略。

3、移除匿名账户和废弃的账户,比如经典的: mysql> use mysql;

mysql> DELETE FROM user WHERE user="";

mysql> flush privileges;

4、制订规范并贯彻执行,良好的规范是减少故障的基础,全面的规范提升开发和运维人员的标准化。

5、防范内部风险,绝大部分安全问题都来自于企业内部,通过规章、制度与技术手段规避安全风险。比如建立三权分立权限体系。

6、树立安全意识,安全问题最大的敌人是侥幸,制定安全方案,定期分析数据库风险,逐步完善数据库安全。

7、及时打好安全补丁,务必保持数据库为最新版本。因为攻击者可以利用上一个版本的已知漏洞来访问企业的数据库。

微盟事故的发生对其他企业的数据安全保护也敲响了警钟,仅仅依靠单点防护难以达到真正的安全防护效果,而构建基于全生命周期的安全防护成为必然选择。

直播预告

长按识别即可进入直播列表

 特惠体验云数据库  

↓↓更多惊喜优惠请点这儿~

本文分享自微信公众号 - 腾讯云数据库(TencentDB),作者:腾讯云数据库

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【直播预告】揭秘MySQL的数据类型

    点击上方蓝字每天学习数据库 ---- 【直播课程】由腾讯云数据库产品团队的主要技术负责人、中国计算机行业协会开源数据库专业委员会副会长刘迪(迪B哥)担任讲师,...

    腾讯云数据库 TencentDB
  • 图数据库及应用场景

    近年来,企业上云已经成为一种潮流和趋势,河南省政府也出台了《河南省“企业上云”行动计划(2018-2020年)》,怎么使用好云,怎么用好底层云数据库也成为了一个...

    腾讯云数据库 TencentDB
  • 腾讯数据库的三场战役

    ? 电影《头脑特工队》的封面上,有五个颜色各异的小精灵。他们在主人公小女孩的脑海里上班儿,专门负责整理她的记忆。 ? 小女孩儿的每段新经历,都会被涂上“喜怒忧...

    腾讯云数据库 TencentDB
  • eclipse如何导入、运行Java web项目

    在平时的学习与工作中,我们经常会参考一些开源项目,但是我们经常会遇到下载下来后无法运行的情况,一般开源项目都是经过很多人验证的,项目本身是不会有问题的,问题在于...

    小诸葛
  • 开放的计算能力为数据库瘦身

    开放的计算能力为数据库瘦身 计算封闭性导致臃肿的数据库 我们在上一期谈到,数据库的臃肿,也就是过多的中间表以及相关存储过程,是由于其计算封闭性造成的。如果能够实...

    企鹅号小编
  • 为什么要使用redis数据库?它有哪些妙用?

    redis是Nosql数据库中使用较为广泛的非关系型内存数据库,redis内部是一个key-value存储系统。它支持存储的value类型相对更多,包括stri...

    Java编程指南
  • MySQL的体系结构

    在使用淘宝网进行购物过程中,当我们查询商品时,实际上是查询淘宝网数据库中的商品;当我们购买某一件商品时,我们是在向淘宝网的数据库的订单中,填写了一条购买信息;当...

    搬砖俱乐部
  • NoSQL(MongoDB,Hbase,Redis)介绍

      NoSQL,泛指非关系型的数据库,随着互联网的发展传统的关系型数据库面对持续增长的数据处理起来显得越来越力不从心,此时非关系型数据库应运而生。

    用户4919348
  • wordpress提示:建立数据库连接时出错的解决方法

    今天数据库又爆表了,原来是数据库又自动备份了一些操作日志。 我记得我以前关闭过,后来去确定下,我没关。 今天看网站出现“建立数据库连接时出错”这个问题的时候,...

    速企云
  • 走近科学:隐藏在图像数据库中的安全问题

    本文原刊登于IEEE IT Professional杂志。 由于系统改造的代价之高,使用适于系统设计的网络安全措施则是最好的选择。而新科技和应用则带来更多安全与...

    FB客服

扫码关注云+社区

领取腾讯云代金券