前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【迪B课堂】MySQL误删数据如何规避?

【迪B课堂】MySQL误删数据如何规避?

作者头像
腾讯云数据库 TencentDB
发布2019-05-16 15:00:00
1.3K0
发布2019-05-16 15:00:00
举报

点击上方蓝字关注每天学习数据库

【迪B课堂】为腾讯云数据库产品经理迪B哥开设的面向数据库开发者、数据库运维人员、云端运维人员的系列培训课程,旨在为开发者解决数据库选择和使用过程中遇到的问题。《我说》为迪B课堂的答疑系列,3分钟帮您解决数据库日常运维过程中的小难题。搜索关注腾讯云数据库官方微信,立得10元云代金券,可移动端一键管理数据库。

本期解答的问题是:MySQL误删数据如何规避?

视频核心信息:

关于腾讯云数据库审计

审计策略

定义对哪些用户行为进行审计以及如何响应的策略。 【审核策略】=【审核对象】+【审计规则】+【响应动作】 即配置一条审计策略,需要指定审计内容,如果经过解析,某些(用户或系统)行为的特征正好符合某个审计规则,且恰好在策略生效时间,审计引擎就会按照此策略定义的响应方式进行响应,例如告警等。

审计规则

审计策略中,规定了需要审计的一系列行为的集合,称为规则。规则由规则参数组成,每个规则参数定义了一种具体的行为匹配特征。

产品能力与限制条件

腾讯云提供数据库审计能力,审计日志默认保存 15 天(后续版本可延长保存时间),帮助企业对可能存在的数据库访问进行风险控制,提高数据安全等级。

注意事项

数据库审计目前支持:TencentDB for MySQL 5.6 版本,暂不支持 TencentDB for MySQL 5.5 版本以及 5.7 版本。

一、如何进行审计操作?

开通数据库审计

  1. 登录 腾讯云官网 ,单击产品面板【数据库审计】,跳转页面后,单击【审计规则】中右侧的【新建规则】。

注意: 数据库审计支持 5.6 版本,需要升级审计内核的用户,可单击页面中【立即升级】进行升级。

  1. 填写所需审计方式,单击【创建】即可

启用审计规则

  1. 单击左侧导航页【审计策略】,跳转页面后单击【新建策略】。
  1. 选择目标审计实例和所需启动的审计规则,单击【确定】即可启动。
  1. 单击所需策略右侧【修改】。
  1. 跳转页面后单击【是否启用】右侧滑块,单击【确定】即可关闭审计规则。

查看审计效果

单击左侧导航页【审计日志】,可查看审计效果。

基于条件定位

  1. 单击左侧导航页【审计日志】,可单击右侧时间框,选择所需时间段,可查看所选时间段内相关审计效果。
  1. 可单击右侧审计实例框,选择所需实例,查看相关审计效果。
  1. 可在右侧文本框输入关键标签进行搜索,查看相关审计效果。

说明: 可在文本框输入多组关键标签进行搜索,使用回车键分割关键标签。

  1. 可在右侧文本框输入关键 SQL 命令组合进行搜索,查看相关审计效果。

说明: 可在文本框输入 SQL 命令、客户端 IP、帐号、数据库、对象名、策略名、执行时间范围、影响行数数量等关键组合信息。

二、SQL审计规则

规则内容

支持以下类型设置: 客户端 IP,数据库帐户,数据库名,表名,SQL命令,SQL类型,影响行数,执行时间。

  • 客户端 IP,数据库帐户,数据库名,表名支持【包含,不包含,等于,不等于,正则】方式匹配;
  • SQL命令支持【包含,不包含,正则】方式匹配;
  • SQL类型支持【等于,不等于】方式匹配;
  • 影响行数,执行时间支持【>,<,>=,<=,=】方式匹配。

全量审计规则,该规则为特殊规则,启用后审计所有语句。

规则运算
  1. 每个规则内部不同类型为追加限制条件关系,即与(&&)关系。 如用户名指定为 user1,匹配类型为等于,数据库名指定为 test, 匹配类型为等于,那么仅审计 user1 用户对 test 库的动作,其它忽略。
  2. 规则与规则之间为或(||)关系 。 每个实例可以指定一个或多个审计规则,只要符合任意一个规则,就应该审计。如 A 规则指定只审计 user1 的执行时间 >=1秒的操作,B 规则审计 user1 并且执行时间 <1的语句,那么最终对 user1 所有语句都要审计。

规则详解

  • 对于客户端IP,数据库帐户,数据库名,表名支持【包含,不包含,等于,不等于,正则】运算,一次只支持一个运算符设置,如“不等于”。当“等于”和“不等于”时,可以写多个值,多个值之间用逗号分隔,正则、包含、不包含只能写唯一值。如运算符为”相等“,值可以为 user1,user2,user3, “正则”则只能写一个值。
  • SQL命令支持 【包含,不包含,正则】方式匹配,同上只支持一个运算符,正则、包含、不包含为一个值,其它可以写多个值。
  • SQL类型支持【等于,不等于】方式匹配,同上只支持一个运算符,多个值。这里的值的范围为: 【1. SELECT, 2. INSERT, 3. UPDATE, 4. DELETE, 5. CREATE, 6. DROP, 7. ALTER, 8. REPLACE, 9. SET,10. EXECUTE】 为了便于客户设置时简单,每个项SQL类型都对应一个或多个sql动作,一共对应40多种后台类型,每个项与数据库操作类型对应关系如下: 除上面类型外其它类型显示为 OTHER。 【11.LOGIN,12.LOGOUT,13.CHANGEUSER】是登录相关的操作,默认都会被审计,无需用户设置规则。
    1. SELECT, SQLCOM_SELECT
    2. INSERT, SQLCOM_INSERT, SQLCOM_INSERT_SELECT,
    3. UPDATE, SQLCOM_UPDATE, SQLCOM_UPDATE_MULTI
    4. DELETE, SQLCOM_DELETE, SQLCOM_DELETE_MULTI, SQLCOM_TRUNCATE
    5. CREATE, SQLCOM_CREATE_TABLE, SQLCOM_CREATE_INDEX, SQLCOM_CREATE_DB, SQLCOM_CREATE_FUNCTION, SQLCOM_CREATE_PROCEDURE, SQLCOM_CREATE_SPFUNCTION,SQLCOM_CREATE_USER,SQLCOM_CREATE_VIEW,SQLCOM_CREATE_TRIGGER,SQLCOM_CREATE_SERVER,SQLCOM_CREATE_EVENT,
    6. DROP, SQLCOM_DROP_TABLE, SQLCOM_DROP_INDEX, SQLCOM_DROP_DB, SQLCOM_DROP_FUNCTION, SQLCOM_DROP_USER, SQLCOM_DROP_PROCEDURE, SQLCOM_DROP_VIEW,SQLCOM_DROP_TRIGGER,SQLCOM_DROP_SERVER, SQLCOM_DROP_EVENT,
    7. ALTER, SQLCOM_ALTER_TABLE, SQLCOM_ALTER_DB, SQLCOM_ALTER_PROCEDURE, SQLCOM_ALTER_FUNCTION, SQLCOM_ALTER_TABLESPACE, SQLCOM_ALTER_SERVER,SQLCOM_ALTER_EVENT,SQLCOM_ALTER_DB_UPGRADE,SQLCOM_ALTER_USER,
    8. REPLACE, SQLCOM_REPLACE, SQLCOM_REPLACE_SELECT,
    9. SET SQLCOM_SET_OPTION, SQLCOM_RESET,
    10. EXECUTE SQLCOM_EXECUTE
  • 影响行数,执行时间支持【>,<,>=,<=,=】方式匹配,只支持一个运算符和一个值方式设置,如执行时间 > 1000 。
表对象规则处理

我们支持表对象审计,允许用户基于表设置审计规则,为保证能取到表信息,当前只对以下类型的动作取表名和数据库名,其它类型操作将不会取语句中的表名和数据库名:

代码语言:javascript
复制
SQLCOM_SELECT, SQLCOM_CREATE_TABLE, SQLCOM_CREATE_INDEX, SQLCOM_ALTER_TABLE,
SQLCOM_UPDATE, SQLCOM_INSERT, SQLCOM_INSERT_SELECT, SQLCOM_DELETE, SQLCOM_TRUNCATE, SQLCOM_DROP_TABLE

出于性能方面及实际场景使用考虑,当前只取一个语句中的前 64 个表名数据库名,且不去重复。

例如,设置规则为审计 SELECT 动作,表名为 t1,那么只对 t1 上所有 select 动作都会审计。如果是 execute 方式执行的 select,当前不会取表和数据库名信息,不能被这条规则审计。

对于数据库名的说明

如果是上面的表对象类型的语句,即以下:

代码语言:javascript
复制
SQLCOM_SELECT, SQLCOM_CREATE_TABLE, SQLCOM_CREATE_INDEX, SQLCOM_ALTER_TABLE,
SQLCOM_UPDATE, SQLCOM_INSERT, SQLCOM_INSERT_SELECT, SQLCOM_DELETE, SQLCOM_TRUNCATE, SQLCOM_DROP_TABLE

类型动作时,数据库名以语句中实际操作的数据库名为准。例如,当前是 use db3 库,语句为:

代码语言:javascript
复制
select *from db1.test,db2.test;

那么会以 db1 和 db2 作为目标库进行规则判断,如果规则配置要审计 db1 的库则会进行审计,规则配置要审计 db3 的库则不会进行审计。

如果不是上面的表对象类型语句,以当前 use 的库作为目标库进行判断。如当前库为 use db1; 执行语句为show databases;

那么以当前库 db1 作为目标库进行规则判断,若规则配置审计db1则会进行审计。

对于影响行数,执行时间,规则设置取值范围为【0~999999999】,其它值为无效值,执行时间单位是微秒。

特别说明

正则、包含、不包含只能写一个值;如果写多个会被当成一个串,造成匹配不对。

正则表达式的不包含多个串规则较为复杂(如非100.200.100.100,100.200.100.101这两个 IP 来的请求要审计),如果需要用到此类规则,可以写到不包含规则里,以竖线连接。例如: 100.200.100.100|100.200.100.101,竖线两边不能有空格。这种方式可以实现多个串模糊否定。

作者简介:

刘迪,腾讯云数据库产品经理,中国计算机行业协会开源数据库专业委员会副会长。现就职于腾讯公司腾讯云数据库(TencentDB)产品团队,曾负责腾讯公司OMG(现PCG)事业群MySQL、MongoDB、Redis数据库平台的管理、建设以及相关运维工作,主要服务腾讯视频,企鹅号,腾讯网,腾讯新闻,腾讯体育等业务。曾受邀作为分享嘉宾参与MongoDB中文社区大会,同时也在腾讯云学院、公众号等媒体平台制作《迪B课堂》、《我说》等数据库教学科普类节目。

往期推荐

《迪B课堂:如何正确的选择云数据库》

《使用JSON类型选择MongoDB还是MySQL?》

《迪B课堂:关于MySQL备份周期》

《迪B课堂:MySQL运行时系统CPU压力大怎么办?》

《MySQL的show proceslist中存在大量sleep的隐患?》

《迪B课堂:详解MySQL的性能监控》

《迪B课堂:NUMA为什么会导致MySQL性能下降》

羊毛速薅

腾讯云数据库新春采购秒杀低至2.8折,09:00, 11:00, 14:00, 16:00, 19:00每天五场秒杀嗨购新春!点阅读原文即可进入会场,记得定好闹钟抢购哦~

↓↓点这儿抄底价

好文和朋友一起看!

var first_sceen__time = (+new Date());if ("" == 1 && document.getElementById('js_content')) { document.getElementById('js_content').addEventListener("selectstart",function(e){ e.preventDefault(); }); } (function(){ if (navigator.userAgent.indexOf("WindowsWechat") != -1){ var link = document.createElement('link'); var head = document.getElementsByTagName('head')[0]; link.rel = 'stylesheet'; link.type = 'text/css'; link.href = "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/style/page/appmsg_new/winwx45ba31.css"; head.appendChild(link); } })();

TencentDB

赞赏

长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

阅读原文

阅读

分享 在看

已同步到看一看

取消 发送

我知道了

朋友会在“发现-看一看”看到你“在看”的内容

确定

已同步到看一看写下你的想法

最多200字,当前共字 发送

已发送

朋友将在看一看看到

确定

写下你的想法...

取消

发布到看一看

确定

最多200字,当前共字

发送中

微信扫一扫 关注该公众号

微信扫一扫 使用小程序

即将打开""小程序

取消 打开

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯云数据库 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 审计策略
  • 审计规则
  • 产品能力与限制条件
  • 注意事项
  • 启用审计规则
  • 查看审计效果
  • 基于条件定位
  • 二、SQL审计规则
    • 规则内容
      • 规则运算
        • 规则详解
          • 表对象规则处理
          • 对于数据库名的说明
        • 特别说明
          • 朋友会在“发现-看一看”看到你“在看”的内容
          • 朋友将在看一看看到
          • 发布到看一看
      相关产品与服务
      云数据库 SQL Server
      腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档