工程师误删了公司生产数据库,如何看待数据安全架构的脆弱性?

简介: 工程师误删了公司生产数据库,如何看待数据安全架构的脆弱性?

背景


这个事情发生在两年前,是某丰的工程师,根据网上披露的信息,大体情况是这样:首先工程师接到了需求变更的任务工单,需要进行数据库SQL执行操作,并事先准备好了SQL的脚本。接下来通过登陆跳板机就进入到了生产数据库的管理端,然后运行Navicat-MySQL的客户端管理工具。


这时候问题出现了,他发现自己选择错了数据库,但是SQL脚本已经粘贴上准备执行了,所以他的目的是按delete键删除选定的执行SQL语句,可是万万没想到鼠标光标跳到了数据库实例上面,这时候的delete键就是删除数据库实例了,结果这位工程师还不看弹出框的提醒,直接按了回车键。最后的结果那就是运营监控管控平台挂了!故障持续了10小时,对企业造成了严重的负面影响,直接负责人也被解雇。


拿出来这个事情聊,其实并不是想再吐槽什么,只不过为我下来真正想吐槽的其他事情做一个铺垫,我认为某丰的安全管理做的有几个亮点是可以拿出来说的。


关键数据库的部署必须是在独立的安全域内,任何外部的操作需要通过跳板机实现。他们做得很好,甚至达到了政府信息中心安全的要求。


数据中心管控要按照最小范围考虑,谁出的问题,能最快地追踪到。


数据库的操作需要走需求变更流程,而不是被工程师随心所欲地修改。


其实他们出现的问题是赋予MySQL数据库登陆操作的权限太大了,可是直接干库,也就是说越是关键性高的平台系统,运维过程中越要注重具体细节,你不能上来就给root。


你的数据库在互联网开放端口吗?


前段时间,我在“有问题就有答案”的平台回答了一个问题,内容涉及到我曾经遇到的一个架构升级问题,被领导要求对互联网开放端口,内容大体是这样子:


我以前做过一个云端业务服务产品,开始一直是用大厂云,不过随着业务需求增加,部分服务又要在国企云部署。也就涉及到了双云交互。


具体业务场景我也描述一下:各家云的数据库数据所有权属于不同的运营方,所以要分开,各个云存储各自的,但客户端业务是统一入口。举个例子,可以这么去理解:App平台业务需要入驻很多商家,但某一个区域的的所有商家数据需要归该区域自己选择的云服务商托管,数据自然也归该区域的商家联盟所有,但是商家是服务全国的,自然APP是全国一个入口。


那为什么要用MQ呢?实际上的目标设计:统一入口的API网关可以将全国任何一个客户端的请求调度到国企云的子网关上去执行该区域的微服务业务,并将数据存储在国企云,但是中心数据库还是在大厂云,仍然需要将国企云作为二级平台数据库的数据通过MQ的方式同步到数据中心,甚至以后还会有类似模式。


另外数据中心还要统一管理基础平台数据,任何的记录调整,都要通过MQ分发到二级云平台的数据库中,防止各自为政的情况。那么这时候大厂云就是数据中心了,而新的国企云就是二级平台的数据库。这样以后不仅可以容纳其它云平台,包括以后独立自建的私有云机房也可以通过此模式连接起来。


因此要有个MQ,实现数据协作,当时我认为RabbitMQ更合适一些,总之要做关键业务的消息传递,作为架构师我给领导提出来架构需要调整,双云走MQ比较稳妥。


你们猜领导怎么跟我沟通的?


领导:你把事情搞复杂了,要简单地来,


我:咋简单?


领导:大厂云的数据库端口开放给国企云,国企云就部署微服务访问大厂云数据库。


我:我说数据库暴露在互联网很危险,而且执行一次业务在公网来回传递,会拖慢平台整体性能。


领导:你说得也太玄乎了!


好吧,那我们就直接上架构图看看按照领导的意见到底是个什么效果。


先看看原来的架构图,如下图所示:我们可以看到红色圈中的API网关->微服务->数据库通讯交互,都是在一个内部高速、稳定且几乎不存在路由的网络中进行在线事务计算处理的请求响应过程中。


d5ad60500a55cbba64839cbc5faee165.jpg


好,看看现在按照领导要求的最简单办法——数据库暴漏公网,第二个云是部署所属服务范围的部分微服务。


如下图所示:红色线头代表的就是客户端发起请求,大厂云API网关就要通过公网反向代理到国企云的微服务,然后国企云的微服务做再通过公网同步访问大厂云的数据库做事务级处理。然后,再通过两次公网传输,把业务处理的数据响应给客户端。备注:这个过程中没有体现双云微服务之间的RPC协作。


d8e30a213e51ebcad6fe50131334faf3.jpg


这个架构就不谈什么高并发、低延时、事务稳定、访问可靠,因为底子都这样了,再谈这些都是扯淡。更关键的是安全性更为致命,在这种纯粹拿公网赌命的架构下,这已经不是平衡成本和技术的问题了。


为什么说这种架构安全性更为致命呢?说到这里,我也真的想先吐槽一下当时回答的评论中居然有不少搞技术的人觉得,互联网上开放生产数据库端口不是问题,可以用白名单、加密这些方法来控制。


咱们就再回头看看某丰的事件,这还是在正规的流程下,都会出现如此巧合的删库错误,更何况,把数据库放置在公开环境,已经形成无法控制的网络边界局面,这种架构一旦定型,只要以后随着业务的增加,只要再加入个某云,甚至是企业私有云,或者是某个第三方系统对接,数据中心都要在公网给所有外部访问开数据库白名单,那么数据中心的管控范围就会无限制地扩大。


只要任意一台在公网上与数据中心连接的服务器被攻击,在任意跨域的白名单服务器上走一个Navicat,甚至是终端命令,就能因为攻击或者是操作失误把数据库中心搞垮,记好,是整个数据中心!中心数据库就得完蛋,而且数据中心的管控人员还无法追踪责任人。我就想问这些提出没问题的技术人员不胆寒吗?


尽管在公网上开放MQ端口也有安全风险,它总比开放数据库风险小!删了MQ了,窃取了MQ数据,这都好恢复,损失也是最小。而且MQ只是通道,通道里的数据停留多少,都可以控制,还可以加密,例如:为了安全,我控制MQ通道数据就持久化一天,隔天就清理,难道我能把数据库中心隔天的数据清理吗?


因此安全不仅仅来自外部,往往问题出在内部,所以数据中心的安全一定要用最小范围的思想来限定网络边界,就是为了可控!


数据库安全问题的反思


有时候国内的架构师就得面对低成本,又怕麻烦的小企业主思维牵着鼻子走,尽量把问题简单化这个说法没错,但是简单化也要有个节制,否则就是无底线了,这会为企业信誉带来极大的潜在威胁,一旦东窗事发,可能会对社会造成不可挽回的损失。当然我并没有让这个事情朝坏的方向发展,还是顶住压力,坚持本心,这也是架构师的责任。


作为我们技术人员更应该懂得软件架构之复杂,软件架构之微妙和软件架构之责任,在互联网时代,很多数据都逐渐变得缺乏保护,作为架构师、工程师,我们多想一点,多出一份力,就一定能做得更好!


9cfc91d46573745c56814055990b87a3.png


上图我才给出真正想达到的双云架构目标,如下图所示:无论在何地的用户使用客户端APP需要访问国企云所属区域的服务,都会通过一个API网关总入口重定向到国企云所在的网关上,那么之后的所有在线事务操作都是在云内部完成,这样就保证了各云的业务通讯独立性,不会像上面那个架构的通讯变成了拖着长长的尾巴。


国企云的区域数据库通过同步任务,将数据经过MQ上传至数据中心,这就是分布式架构中保证了业务数据的最终一致性。同理,数据中心下发基础数据的修改,必要情况下,下发过程可以配合临时停止国企云的网关服务,保证同步完成后再启用,实现分布式环境下,基础配置数据在不同云的强一致性。  


相关文章
|
6天前
|
关系型数据库 数据库 数据安全/隐私保护
"告别繁琐!Python大神揭秘:如何一键定制阿里云RDS备份策略,让数据安全与效率并肩飞,轻松玩转云端数据库!"
【8月更文挑战第14天】在云计算时代,数据库安全至关重要。阿里云RDS提供自动备份,但标准策略难以适应所有场景。传统手动备份灵活性差、管理成本高且恢复效率低。本文对比手动备份,介绍使用Python自定义阿里云RDS备份策略的方法,实现动态调整备份频率、集中管理和智能决策,提升备份效率与数据安全性。示例代码演示如何创建自动备份任务。通过自动化与智能化备份管理,支持企业数字化转型。
17 2
|
14天前
|
监控 数据可视化 前端开发
基于python django生产数据与计划大屏,可链接数据库
本文介绍了一个基于Python Django框架开发的生产数据与计划大屏系统,该系统能够实时采集和展示生产数据,支持数据可视化和实时更新,以提高生产监控的效率和质量。
|
18天前
|
XML 分布式数据库 数据库
【计算机三级数据库技术】第13章 大规模数据库架构--附思维导图
文章概述了分布式数据库、并行数据库、云计算数据库架构和XML数据库的基本概念、目标、体系结构以及与传统数据库的比较,旨在提供对这些数据库技术的全面理解。
17 1
|
5天前
|
安全 Nacos 数据库
【技术安全大揭秘】Nacos暴露公网后被非法访问?!6大安全加固秘籍,手把手教你如何保护数据库免遭恶意篡改,打造坚不可摧的微服务注册与配置中心!从限制公网访问到启用访问控制,全方位解析如何构建安全防护体系,让您从此告别数据安全风险!
【8月更文挑战第15天】Nacos是一款广受好评的微服务注册与配置中心,但其公网暴露可能引发数据库被非法访问甚至篡改的安全隐患。本文剖析此问题并提供解决方案,包括限制公网访问、启用HTTPS、加强数据库安全、配置访问控制及监控等,帮助开发者确保服务安全稳定运行。
13 0
|
6天前
|
SQL 数据库
拒绝了对对象 ‘GetTips‘ (数据库 ‘vipsoft‘,架构 ‘dbo‘)的 EXECUTE 权限
拒绝了对对象 ‘GetTips‘ (数据库 ‘vipsoft‘,架构 ‘dbo‘)的 EXECUTE 权限
17 0
|
21天前
|
开发框架 前端开发 关系型数据库
ABP框架使用Mysql数据库,以及基于SQLServer创建Mysql数据库的架构和数据
ABP框架使用Mysql数据库,以及基于SQLServer创建Mysql数据库的架构和数据
|
1月前
|
存储 关系型数据库 分布式数据库
PolarDB,阿里云的云原生分布式数据库,以其存储计算分离架构为核心,解决传统数据库的扩展性问题
【7月更文挑战第3天】PolarDB,阿里云的云原生分布式数据库,以其存储计算分离架构为核心,解决传统数据库的扩展性问题。此架构让存储层专注数据可靠性,计算层专注处理SQL,提升性能并降低运维复杂度。通过RDMA加速通信,多副本确保高可用性。资源可独立扩展,便于成本控制。动态添加计算节点以应对流量高峰,展示了其灵活性。PolarDB的开源促进了数据库技术的持续创新和发展。
249 2
|
1月前
|
消息中间件 存储 数据库
微服务架构下的数据库设计策略
【6月更文挑战第30天】在分布式系统和微服务架构的浪潮中,传统的单一数据库模式已不再适应快速迭代和高并发的需求。本文将深入探讨在微服务环境下如何进行有效的数据库设计,包括数据一致性、可伸缩性以及安全性等方面的考量。通过分析不同的数据存储方案和同步策略,我们将为后端开发者提供一套实用且高效的数据库设计方案。
38 1
|
29天前
|
消息中间件 缓存 架构师
对抗软件复杂度问题之降低代码的复杂度,如何解决
对抗软件复杂度问题之降低代码的复杂度,如何解决
|
30天前
|
消息中间件 存储 缓存
高并发架构设计三大利器:缓存、限流和降级问题之在数据库层面确保缓存一致性问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之在数据库层面确保缓存一致性问题如何解决