×

htp_audit MySQL审计插件

消耗积分:0 | 格式:zip | 大小:0.22 MB | 2022-06-22

ejlwj

分享资料个

授权协议 GPL
开发语言 C/C++
操作系统 跨平台
软件类型 开源软件

软件简介

htp_audit 是为 MySQL 开源数据库自主研发的审计插,弥补了 MySQL 开源数据库产品缺乏审计功能,为数据库安全透明运行提供技术保障。

审计插件 htp_audit 的应用场景

举例场景描述:企业发现某天数据库中的数据被人为删除了,尽管有数据备份,但因服务终止造成的损失可能高达上千万,还不计算殃及的品牌价值、用户体验等。企业必然要排查是什么原因触发的,这个删除操作是谁操作的,往往拥有数据库操作权限的人员较多,从何排查,证据在哪?

上述有关数据库的安全场景在企业中常出现,数据库作为企业业务系统的数据存储容器,类似人体的心脏和血液循环系统,数据就是企业业务系统的血液,数据库一旦出现问题就像心脏停止跳动,整个企业的生产系统或交易系统都将停止。当数据出现非正常修改的问题时,我们需要快速分析、诊断问题发生的原因,追踪数据不安全的根源,降低数据泄漏风险,进行实时风险预警,这就是通常所说的“数据库审计功能”。但是 MySQL 开源数据库缺失审计功能,这对于广大 MySQL 开源数据库用户而言是埋下了数据安全的隐患。

热璞科技开源的审计插件 htp_audit,能够实时记录数据库活动,帮助用户分析、追查、诊断追踪不安全事件,保障数据安全,实时预警数据库操作风险。对 MySQL 数据据库 DBA 而言,使用审计插件 htp_audit 非常简便,从 GitHub上 直接下载 htp_audit 审计插件源码文件,复制到 MySQL 数据库源码的 plugin 文件夹中,编译生成 htp_audit.so文件,然后在 MySQL 中安装使用:install plugin htp_audit soname 'htp_audit.so';。

审计插件 htp_audit 的功能简述

针对 MySQL 开源数据库的审计功能缺失,行业内也出现了一些解决的办法,例如:甲骨文公司在 MySQL5.5 的企业版中增加了 mysql-audit plugin,只限于 MySQL 数据库企业版,且功能类似于 general-log 的方式。也有一些第三方审计插件,但都没有达成 MySQL 数据库的审计功能,例如:MySQL 数据库中的事件类型较多,第三方审计工具未能做到对所有事件提供对应的处理函数;MySQL 数据库缺少配置文件,则不能灵活地配置审计事件的类型,往往调整配置则需要重启 mysqld 服务,甚至修改源代码重新编译。

热璞科技的 MySQL 源码团队调研了企业版本审计功能、收集 MySQL 数据库社区、大型企业客户等诉求,设计并研发的审计插件 htp_audit,能彻底做到审计全部事件、可动态在线修改配置等功能目标。审计插件 htp_audit 拥有以下三大特征:

  • 全类型事件审计:MySQL 开源数据库中的事件分为父类型和子类型,父类型如 table access 含有子类型 READ、INSERT、UPDATE、DELETE;父类型 connection 含有子类型 CONNECT、DISCONNECT 等,htp_audit 可根据配置文件进行所有子类型事件审计,保证审计的完整性和全面性。

  • 动态的审计配置:htp_audit 在启动时会从配置文件中获取要审计的事件类型,mysqld 实例在运行时也可通过全局变量 htp_audit_add_rule 添加需要审计的事件类型,通过 htp_audit_remove_rule 移除无需审计的事件类型。这就意味着在数据库运行过程中,htp_audit 可以动态增加或删除要审计的事件类型,保证整个审计过程对上层业务访问和业务系统是无感知的。

  • 发生及被审计次数展示:新增各类型事件的发生次数和配置审计事件被审计的次数,使用命令:SHOW  GLOBAL  STATUS  LIKE  "%audit%" 即可查看,方便用户实时了解审计插件的运行情况,例如:事件发生状况、业务负载状况等,轻松获取数据库审计信息。

 

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'htp_audit MySQL审计插件',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);