如何避免删库跑路,这几乎是一个老生常谈的话题,也是大部分上了规模的企业都很关心的话题,京东到家、微盟、链家、思科... 在这些大企业上发生过的删库事件仍然历历在目,无论是否当事人有意为之还是系统 BUG 导致,造成的后果与损失都是深刻且无法挽回的,只有从物理层面上拦截删库操作,才能在真正意义上杜绝此类事件,毕竟谁都无法保证自己不会成为下一个受害者。
因此本文要聊的话题,虽不标新立异,却也兹事体大,关系到企业最核心的财产:数据。
传统的变更流程
数据的重要性自然不必多言,懂的都懂,然而懂是一回事,实际情况就是,很多企业的数据库仍然存在如下问题:
直连数据库:这是最大的安全隐患,很多企业的数据库账号通常是根据部门划分,即一个部门下所有成员使用同一个账号,难以区分 SQL 执行来自哪个人员,审计难度很大。同时,无法基于每个人员的职责定制权限,存在无关人员拥有变更权限的风险。此外,人员新增、转岗与离职等原因导致的数据库权限变更,也难以有效地进行管理。 变更毫无章法:开发人员的经验和习惯各不相同,他们可能会使用不同的数据库设计模式、命名规则、数据类型等。这可能会导致数据库结构混乱,数据冗余,形成恶性循环,导致数据库时间越长越难以维护。虽然企业可能通过培训等方式推广生产数据库规范,但在缺乏平台规范以及审批流程等强制措施的情况下无法保证所有开发人员按规矩办事。 变更流程不完善:针对数据源提交的变更,多数情况下是由研发人员通过邮件、JIRA 等方式提交给 DBA,当然其中不乏流程不完善的企业直接通过聊天工具进行数据变更的沟通与提交。更有甚者,由研发人员直接进行生产的变更,非常的不安全。
解决上述问题就可以在很大程度上规避删库跑路的风险。下面我将提供一种解决方案,通过 NineData 工具,完整演示从录入数据源、配置规范和审批流程,到研发人员提交生产发布的全过程,展示 NineData 如何解决删库跑路问题。
NineData 集成了数据库 DevOps、数据复制、数据备份、数据对比多个模块,而我们需要利用它的数据库 DevOps 模块来管理我们的数据库。数据库 DevOps 具有数据资产管理、数据查询、SQL 执行、数据编辑、数据导入导出、SQL 审批流、SQL 规范预检、审批流程、敏感数据保护等等功能,可以完整覆盖我们上面说的几个问题。
步骤一:录入数据源到 NineData
通过将数据源录入到 NineData,实现企业内部统一化平台登录,无需再使用各种各样的客户端和工具,最重要的是,彻底杜绝了直连数据库带来的安全问题。
NineData 提供了一个数据 Owner 的特性,该特性将在后期配置审批流程的时候发挥重要的作用,我将在具体章节详细说明,此处暂且略过。在创建完数据源(即录入数据源到 NineData)后,该数据源的创建人默认为 Owner。
把所有审批人员放到一个审批流程:在单个审批流程中放入多个业务负责人,由提交人根据实际情况选择。该方法优点是配置方便,后期有人员变动只需要调整一次;缺点是业务负责人多的情况下,找都要找半天,如果提交人对业务情况不熟悉,还可能选错业务负责人。 为所有业务创建不同审批流程:为避免上述问题,每个业务拥有独立的审批流程。该方法优点是精准;缺点是如果有 1000 个业务,那就需要配置 1000 条审批流程,先不论初始化配置成本,万一有个人员变动,每条流程都需要调整,维护难度巨大。