DBA生存警示:防范频发的数据误删除操作

编辑手记:对于资深的老DBA们,他们在漫长的职业生涯中养成了很多稀奇古怪的守则,以在复杂多变的环境中“幸存”,这源于无数血泪的教训,我曾经在《数据安全警示录》一书收录了大量现实案例,现在整理分享给大家,共为警示。

在数据库日常管理过程中,有些威胁来自数据库外部,而有些威胁则来自数据库内部,对于数据库外部,破坏性的操作有rm,而在数据库内部,同样有破坏性操作,如Truncate。

案例分享


误删除数据表

原来接手一个部门的所有数据库,结果漏了一个,也没人告诉我,所以我不知道这个数据库存在。一天一个程序人员误按了一个按钮,把大量的数据全部删除,找到我后,发现数据库没有归档,也没有任何备份。结果是程序人员补了几天的数据,我的奖金也直接泡汤。

误删除用户

刚从事DBA不久,可已经犯了个让我终生难忘的错误。原本是要将测试环境的一个user给删掉,由于桌面上开了多个窗口,结果drop user XXX cascade,直接将正式环境的一个user给drop了,刚按下enter,就感觉怪怪的,心想不会吧!!已经来不急了,还好这个user的信息是从另外一台服务器上同步过来的,要不然死定了。以后做什么动作我都习惯先看看是在哪个DB上那个服务器上,千万别搞错了。

误删除表数据

以前公司,有一个程序员写好的脚本,一个实施人员去执行,脚本里面带了 delete * from xxx; commit; 啥备份,归档都没有。结果我们公司全部人员出动,抱着笔记本,台式机,去北京某区县所有的机关单位上门录了一星期人员信息。至今记忆犹新。

误删除数据表

测试环境导出的腳本中包含drop語句,結果看都沒看就直接在生產環境中做了,一下子物料表就沒了,整个生产停线,后来做了恢复,丢了半天的数据。教训:执行的脚本一定要认真检查。

防范建议


1.通过触发器约束或禁用特定的DDL操作

对于TRUNCATE等高风险的数据库DDL操作,可以考虑通过触发器进行禁用,防止未授权的操作损害数据。 很多轻忽的数据灾难都来自于Truncate,这个类似于系统级别的rm命令极具破坏性,而且DDL不可以回退,即便发现已经为时过晚。所以我们建议用户可以考虑使用DDL触发器来禁用Truncate之类的危险操作,以达到安全防范的目的。

2.以最小权限原则进行授权

过度授权即是为数据库埋下安全隐患,在进行用户授权时一定要遵循最小权限授予原则,避免因为过度授权而带来的安全风险。

3.明确用户职责

应当明确不同的数据库用户能够用于的工作范围,应当使用普通用户身份的,就绝对不应该使用DBA的用户身份,只有职权相称,才能够避免错误。 即便是拥有管理员职责的用户,也应当遵循以不同身份执行不同任务的习惯,比如SYS和SYSTEM用户的使用就应当进行区分和界定。

4.在任何数据破坏之前进行备份

在进行数据表的截断、删除之前,进行备份,将备份养成一种习惯,这样才能够避免误操作之后的措手不及。

5.以重命名代替删除操作

不论操作系统级别还是数据库级别的删除操作,尽量以重命名替代删除,如重命名数据表,重命名数据文件,然后通过一段时间的观察和确认后再彻底删除。 Oracle10g中引入的回收站功能,就是将我们执行的DROP操作变更为重命名进行保护,当我们发现了失误之后,可以通过回收站找回,但是注意回收站保存对象的时间和空间有关,如果存储空间不足,对象会被自动释放。 我们在管理中借鉴这个回收站思想是很有帮助的。

6.尽量争取充足的时间

不要低估任何一次简单的维护操作,因为一个意外就可能大幅延长你的维护时间。所以,应当尽量争取充足的时间,包括做好充足的准备工作,加快无关紧要步骤的执行,减少不必要的时间消耗,时间越充裕,你用来应对可能出现的故障的时间就越多。

7.审核你的剪贴板

很多错误是由于粘贴剪贴板的内容引起的,所以,当你准备向一个窗口或者命令行粘贴你看不到的内容时,提高你的警惕性。在Windows上,有很多剪贴板增强工具,可以帮助我们记录和展现剪贴板的内容,可以考虑选用。 审核你的剪贴板,确保其中的内容是你期望的。

8.没有认真看过的脚本就绝不要执行

对于DBA来说,如果一个脚本你从来没有认真读取了解过,就不要去执行,脚本中的一个错误就可能导致严重的数据灾难。我们遇到过案例,由于脚本中的一个变量错误,导致所有数据文件被删除,教训惨痛。 如果实在无法审核脚本的内容,那么在进行重要操作之前,备份你的数据。

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2016-03-06

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IMWeb前端团队

作为一个前端,可以如何机智地弄坏一台电脑?

有人说,前端的界限就在浏览器那儿。 无论你触发了多少bug,最多导致浏览器崩溃,对系统影响不到哪去。 这就像二次元各种炫酷的毁灭世界,都不会导致三次元的世界末日...

2070
来自专栏携程技术中心

【QCon分享】携程无线App自动化测试实践

背景 近年来,携程的业务急剧增长如2015年第一季度交通票务预订量同比增长104%,而在携程所有的业务中约70%来自于无线,App累计下载量超过7亿(截至201...

20810
来自专栏成猿之路

Linux基础知识

1144
来自专栏Java社区

【五一福利】Java程序员编程学习之路资源合集

1203
来自专栏FreeBuf

记一次完整的办公网渗透到idc过程

前言: 看到各位大神分享他们内网渗透的经验与技巧,小菜打算也来分享分享。 http://www.freebuf.com/articles/sys...

1837
来自专栏FreeBuf

构建一个小巧的来电显示迷惑工具

但幸运的是,在正式任务开始之前我大约拥有两周的时间,让我去学习了解有关的技术知识。经过两周左右的折腾,我学到了许多关于调制解调器的安全测试技术,以及电话和Ast...

960
来自专栏FreeBuf

安全应急响应工具年末大放送

为了帮助安全分析师更好的完成工作,小编整理了一些现在比较流行的安全应急响应工具和资源,从磁盘镜像创建工具、内存分析工具到内存镜像工具、沙盒/逆向工具等,相信总有...

2176
来自专栏ImportSource

Docker架构里那些名字背后的秘密

Docker作为一个linux平台上一款轻量级虚拟化容器的管理引擎。在短短的两三年内火得不得了。人人都在说docker,大大小小的容器summit。 Docke...

3315
来自专栏FreeBuf

加油站也会被黑?来看看这个攻击案例

这篇文章涉及的问题主要与加油管理设备公司Veeder Root相关的油品液位仪TLS-300/350 UST和TLS-350R相关,原因在于可以通过其错误配置的...

1936
来自专栏python开发者

基于token的多平台身份认证架构设计

基于token的多平台身份认证架构设计 1   概述 在存在账号体系的信息系统中,对身份的鉴定是非常重要的事情。 随着移动互联网时代到来,客户端的类型越来越多,...

3076

扫描关注云+社区