如何避免删库跑路?

news2024/11/19 10:39:22

如何避免删库跑路,这几乎是一个老生常谈的话题,也是大部分上了规模的企业都很关心的话题,京东到家、微盟、链家、思科... 在这些大企业上发生过的删库事件仍然历历在目,无论是否当事人有意为之还是系统 BUG 导致,造成的后果与损失都是深刻且无法挽回的,只有从物理层面上拦截删库操作,才能在真正意义上杜绝此类事件,毕竟谁都无法保证自己不会成为下一个受害者。

因此本文要聊的话题,虽不标新立异,却也兹事体大,关系到企业最核心的财产:数据。

传统的变更流程

数据的重要性自然不必多言,懂的都懂,然而懂是一回事,实际情况就是,很多企业的数据库仍然存在如下问题:

  • 直连数据库:这是最大的安全隐患,很多企业的数据库账号通常是根据部门划分,即一个部门下所有成员使用同一个账号,难以区分 SQL 执行来自哪个人员,审计难度很大。同时,无法基于每个人员的职责定制权限,存在无关人员拥有变更权限的风险。此外,人员新增、转岗与离职等原因导致的数据库权限变更,也难以有效地进行管理。

  • 变更毫无章法:开发人员的经验和习惯各不相同,他们可能会使用不同的数据库设计模式、命名规则、数据类型等。这可能会导致数据库结构混乱,数据冗余,形成恶性循环,导致数据库时间越长越难以维护。虽然企业可能通过培训等方式推广生产数据库规范,但在缺乏平台规范以及审批流程等强制措施的情况下无法保证所有开发人员按规矩办事。

  • 变更流程不完善:针对数据源提交的变更,多数情况下是由研发人员通过邮件、JIRA 等方式提交给 DBA,当然其中不乏流程不完善的企业直接通过聊天工具进行数据变更的沟通与提交。更有甚者,由研发人员直接进行生产的变更,非常的不安全。

解决上述问题就可以在很大程度上规避删库跑路的风险。下面我将提供一种解决方案,通过 NineData 工具,完整演示从录入数据源、配置规范和审批流程,到研发人员提交生产发布的全过程,展示 NineData 如何解决删库跑路问题。

NineData 集成了数据库 DevOps、数据复制、数据备份、数据对比多个模块,而我们需要利用它的数据库 DevOps 模块来管理我们的数据库。数据库 DevOps 具有数据资产管理、数据查询、SQL 执行、数据编辑、数据导入导出、SQL 审批流、SQL 规范预检、审批流程、敏感数据保护等等功能,可以完整覆盖我们上面说的几个问题。

步骤一:录入数据源到 NineData

通过将数据源录入到 NineData,实现企业内部统一化平台登录,无需再使用各种各样的客户端和工具,最重要的是,彻底杜绝了直连数据库带来的安全问题。

图片

NineData 提供了一个数据 Owner 的特性,该特性将在后期配置审批流程的时候发挥重要的作用,我将在具体章节详细说明,此处暂且略过。在创建完数据源(即录入数据源到 NineData)后,该数据源的创建人默认为 Owner。

图片

步骤二:配置开发规范和审批流程

默认情况下,NineData 平台提供了开发和生产环境下的通用规范和流程,每个数据源在创建的时候需要选择环境,创建完成后将基于选择的环境默认绑定该环境对应的规范和流程。

图片

如果默认的规范和流程无法满足您的要求,可以根据实际情况手动配置。本流程以禁用生产库的 SQL 窗口变更能力,以及配置二级审批流程为例,介绍配置方法。

1. 打开需要配置的 SQL 开发规范详情页面,找到负责管理 SQL 窗口变更能力的两条规则,删除所有允许操作的 SQL 类型。

图片

图片

2. 打开需要配置的审批流程详情页面,找到目标任务的审批流程,新增审批流程并选择审批人。

图片

根据图片的配置,研发人员如果提交了 SQL 任务,并且在规范预检通过的情况下,需要分别通过一级审批和二级审批,才可实际执行到生产库。

这里不得不提一下图片中配置的数据源 Owner,我们在步骤一中提到过,这是一种简化审批流程配置的方案。因为通常情况下,企业配置审批流程会有两种方法:

  • 把所有审批人员放到一个审批流程:在单个审批流程中放入多个业务负责人,由提交人根据实际情况选择。该方法优点是配置方便,后期有人员变动只需要调整一次;缺点是业务负责人多的情况下,找都要找半天,如果提交人对业务情况不熟悉,还可能选错业务负责人。

  • 为所有业务创建不同审批流程:为避免上述问题,每个业务拥有独立的审批流程。该方法优点是精准;缺点是如果有 1000 个业务,那就需要配置 1000 条审批流程,先不论初始化配置成本,万一有个人员变动,每条流程都需要调整,维护难度巨大。

而通过数据 Owner 方案,管理员可以为每个业务(数据源、库)配置不同的负责人,即数据 Owner,并在审批流程中选择数据 Owner 作为审批人,而不用配置具体的人员,当提交人针对某个数据源或库提交操作申请时,系统将自动拉取该数据源或库的数据 Owner,有效简化审批流程配置,降低了操作成本和维护难度。

使用效果

经过上述配置之后,基本就已经大功告成,剩下的就是要求企业内所有需要接触数据库的员工通过 NineData 平台登录来执行相关操作。

1. 已禁用 SQL 窗口变更,普通员工无法在 SQL 窗口直接对生产库进行 DDL 或 DML 操作,页面将引导用户创建 SQL 任务,走审批流程进行发布。

图片

2. 用户在提交 SQL 任务后,系统将先根据管理员预先配置的 SQL 开发规范,对 SQL 进行审核,审核通过后,才需要进行人工审核。由于我们在上面步骤中配置了规则级别符合规范情况下的二级审批流程,因此当系统判断当前 SQL 命中符合规范之后,用户需要选择两个审批人。

图片

并且,由于我们在配置审批流程时,将数据源 Owner(即示例中名为 NineData 的用户)选为了一级审批人,因此用户在选择一级审批人的时候,系统自动拉取了名为 NineData 的用户。

3. 当审批人通过审批之后,用户选择的 SQL 任务执行人即可将该 SQL 执行到生产库中了。由于本示例选择的是自动执行,因此当审批人通过后,系统将立即执行该 SQL。

图片

4. 执行完成后,通过 SQL 窗口查询,发现已经成功写入。

图片

总结

至此,企业已经获得了一个较为可靠的数据变更解决方案,再也无需担心删库跑路问题了。

推荐 NineData 的原因,不仅仅是因为它可以完美解决企业的问题,更重要的是,如果企业的数据源数量低于 10 个,它是完全免费的。对于中小企业来说,能够以零成本获得如此全面且强大的数据管理和保护工具,无疑是降本增效的绝佳方案。

不仅如此,笔者介绍的其实仅仅是 NineData 最基础的几个功能,正如本文中的演示效果,可以看到页面左侧导航栏中还有数据追踪、数据归档、SQL 代码审核、慢查询分析、DSQL、数据导入导出等等功能,这些都是可以帮助企业管理数据库的强大工具,由于篇幅原因无法在本文中详细介绍,建议直接上手尝试,亲自体会 NineData 的强大之处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1887784.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue-advanced-chat 聊天控件的使用

测试代码:https://github.com/robinfoxnan/vue-advanced-chat-test0 控件源码:https://github.com/advanced-chat/vue-advanced-chat 先上个效果图: 这个控件就是专门为聊天而设计的,但是也有一些不足: 1&#xf…

国际数字影像产业园:汇聚全球力量,共绘影像新蓝图

在数字化浪潮席卷全球的今天,我们自豪地宣布,国际数字影像产业园已正式起航,以全球视野为引领,致力于推动数字影像产业的创新发展,引领全球潮流。 一、汇聚全球智慧 国际数字影像产业园以开放包容的姿态,汇…

MIX OTP——使用 ETS 加速

每次我们需要查找存储容器时,我们都需要向注册表发送一条消息。如果我们的注册表被多个进程同时访问,注册表可能会成为瓶颈! 在本章中,我们将了解 ETS(Erlang Term Storage)以及如何将其用作缓存机制。 警…

【信息系统项目管理师】常见图表

作文里面的画图题用语言描述画图过程 合同 采购综合评分标准 责任分配矩阵 成本预算表 成本估算 成本管理计划 活动清单 活动属性 变更日志 问题日志 项目章程 自己再添加更多内容 甘特图 甘特图包含以下三个含义: 1、以图形或表格的形式显示活动; 2、…

JavaScript中window对象 , location对象以及history对象使用方法详细介绍

2.BOM(Browser Object Model) 操作浏览器的。常用的浏览器对象: 1.window对象:Window 对象表示浏览器中打开的窗口。 2.location对象:Location 对象包含有关当前 URL 的信息。Location 对象是 window 对象的一部分&…

[PyTorch]:加速Pytorch 模型训练的几种方法(几行代码),最快提升八倍(附实验记录)

本篇文章转自:Some Techniques To Make Your PyTorch Models Train (Much) Faster 本篇博文概述了在不影响 PyTorch 模型准确性的情况下提高其训练性能的技术。为此,将 PyTorch 模型包装在 LightningModule 中,并使用 Trainer 类来实现各种训…

使用 Python 五年后,我发现学 python 必看这三本书!少走一半弯路

第一本 《Python编程-从入门到实践》 适合零基础的读者 豆瓣评分:9.1 推荐指数:5颗星 推荐理由: 本书是针对所有层次的 Python 读者而作的 Python 入门书。全书分为两部分: 第一部分介绍使用Python 编程所必须了解的…

将excel表格转换为element table(上)

最近有个功能需要将excel展示到html 界面里面,看是简单的一个需求也是需要费尽心思才完得成 原始数据 想要把excel 读取出来,于是使用xlsl的插件 npm i xlsx通过插件可以获取到已经分析好的数据 然后使用sheet_to_html将数据转换为html 再使用v-htm…

ROS2 RQT

1. RQT是什么 RQT是一个GUI框架,通过插件的方式实现了各种各样的界面工具。 强行解读下:RQT就像插座,任何电器只要符合插座的型号就可以插上去工作。 2.选择插件 这里我们可以选择现有的几个RQT插件来试一试,可以看到和话题、参…

视频太大怎么压缩变小?6款视频压缩软件免费版分享

视频太大怎么压缩得又小又清晰呢?无论是视频文件传输、视频文件存储,还是进行自媒体视频上传,都对视频文件的大小有一定的限制。高质量的视频文件往往伴随着文件占据大量存储空间,导致文件传输速度变慢。今天教大家6种视频压缩软件…

配置WLAN 示例

规格 仅AR129CVW、AR129CGVW-L、AR109W、AR109GW-L、AR161W、AR161EW、AR161FGW-L、AR161FW、AR169FVW、AR169JFVW-4B4S、AR169JFVW-2S、AR169EGW-L、AR169EW、AR169FGW-L、AR169W-P-M9、AR1220EVW和AR301W支持WLAN-FAT AP功能。 组网需求 如图1所示,企业使用WLAN…

搜维尔科技:数据手套为什么要选择SenseGlove

了解 SenseGlove SenseGlove 是一支由电子工程师、触觉研究人员和计算机视觉专家、XR 开发人员、UX 设计师和产品创新者组成的科幻爱好者团队,他们拥有丰富人类能力和赋予 Metaverse 意义的技能和热情。 推进触觉技术是我们实现这一目标的方式。 公司及产品背景 S…

将多个SQL查询合并的两种方式

说明:单个简单查询是非常容易的,但是为了避免多次访问访问数据库,我们会尽可能通过表关联将业务所需要的字段值一次性查出来。而有时候不太清楚表之间的关联关系(这取决于对业务的熟悉程度),或者实际情况就…

ubuntu 安装并启用 samba

环境:ubuntu server 24.04 步骤如下: sudo apt update sudo apt install samba修改配置文件: sudo vi /etc/samba/smb.conf新增内容: [username]path /home/[username]available yesvalid users [username]read only nobrow…

2021强网杯

一、环境 网上自己找 二、步骤 2.1抛出引题 在这个代码中我们反序列&#xff0c;再序列化 <?php$raw O:1:"A":1:{s:1:"a";s:1:"b";};echo serialize(unserialize($raw));//O:1:"A":1:{s:1:"a";s:1:"b";…

RFID技术在粉末涂料配料生产线的精准应用

RFID技术在粉末涂料配料生产线的精准应用 应用背景 随着科技的快速发展&#xff0c;智能化、自动化已经成为现代工业生产的重要趋势。RFID&#xff08;无线射频识别&#xff09;技术以其独特的优势&#xff0c;如非接触式识别、高速读取、大容量数据存储等&#xff0c;在多个…

206.贪心算法:摆动序列(力扣)

代码展示 class Solution { public:int wiggleMaxLength(vector<int>& nums) {if (nums.size() < 1) return nums.size(); // 如果数组长度小于等于1&#xff0c;返回数组长度int curdiff 0; // 当前元素和前一个元素的差值int prediff 0; // 前一个差值int…

品牌推广怎么样?掌握正确做法,让品牌大放异彩!

品牌推广对于初创公司来说是一项至关重要的任务。在市场众多品牌中&#xff0c;如何脱颖而出&#xff0c;是每个品牌方都要考虑的问题。 作为一名手工酸奶品牌的创始人&#xff0c;目前全国复制了100多家门店&#xff0c;我来分享下&#xff0c;如何推广&#xff0c;可以让品牌…

Git 基础-创建版本库 git init、添加到暂存区git add、查看状态git status、查看改动git diff

1.创建版本库 git init 在目录中创建新的 Git 仓库。 你可以在任何时候、任何目录中这么做&#xff0c;完全是本地化的。 在目录中执行 git init&#xff0c;就可以创建一个 Git 仓库了。 注意: 没事不要手动修改 .git 目录里面的文件&#xff0c;不然改乱了&#xff0c;可能就…

zabbix“专家坐诊”第244期问答

问题一 Q&#xff1a;请教一下&#xff0c;我的zabbix6.0配置的基于snmptrap上报的日志提取关键字推送告警&#xff0c;正则表达式能否帮忙看看怎么弄&#xff1f;我这配置的提示一直不正确&#xff1f; A&#xff1a;具体看一下这里的信息。 Q&#xff1a;这个我是直接复制的…