综论数据库防火墙的自我修养系列之一:高可用性

DT时代的到来,正在逐渐改变人类的行为模式。数据,这个时代最巨量的产物,从未如今天这般珍贵而无价。也因此我们看到,越来越多的企业和政府部门开始将安全的关注重点从传统的边界安全转移到数据安全,保存核心数据资产的数据库系统,毫无疑问的成为防护的关键。

数据库防火墙,作为数据库的最后一道防御工事,自然获得了更多的关注,近年已越来越多的应用在关键系统的数据库安全防护中。所谓能力越大、责任越大,这句话用来形容数据库防火墙也许应该反过来理解,因其肩负数据库防护重任,人们对于他的要求也更加严苛。

我们在说数据库防火墙之前,需要先说明一个概念,了解了这一点,我们就更容易理解为什么用户对数据库防火墙的要求如此严苛。数据库防火墙部署方式通常分为两种:串联或旁路,两者差异很大。串联模式部署在应用系统与数据库之间,所有SQL语句必须经过数据库防火墙的审核后才能到达数据库,发起访问、操作;而旁路部署呢,虽然有些厂商宣称,可以通过发送reset(重置)命令进行重置会话,但内行人一想便知,在实际应用中,面对高压力场景, 旁路分析势必出现延迟,当数据库防火墙发现风险操作时,数据库早已执行完成,而此时阻断的基本上是其他不该被阻断的正常操作了。因此,要想真正发挥防护效果,数据库防火墙必须串联在数据库的前端,可以是物理的(透明串接)或逻辑的(代理)串联。

串联部署是发挥防护作用的必要前提,但这样就在应用与数据库之间增加了一个结点,如果把数据库系统比作整个IT架构中的“心脏”,用户更担心这个结点会不会出现故障,一旦血流不畅通,突发心梗可是得不偿失。

笔者多年来从事数据库防火墙产品的开发、实施和维护,不能说阅尽天下防火墙,九成也是有的,在笔者心中,一个真正成熟有价值的数据库防火墙产品,必须能够胜任串联部署重任,同时具备良好的自我修养,如何体现?下面7项指标量化考评:

1. 高可用性—保障业务的安全性、可用性和连续性

2. 高性能和可扩缩性—保障业务性能、吞吐量

3. 词法和语法分析—提供防护能力的基础

4. 防SQL注入和漏洞攻击—防护来自应用侧的攻击

5. 运维管控—内部运维控制

6. 动态掩码—防止敏感信息外泄

7. 规则和脚本语言—高大上的数据库防护能力

以上7点,排名确实分先后,先说高可用性,因为它在笔者心目中是凌驾于其他之上,最最重要的一点,甚至可以说是数据库防火墙产品是否可以存在的先决条件。

串联部署下的高可用,发挥最大价值还是给自己挖坑?

解释了串联部署的必要性,现在我们说回高可用性,由于数据库在企业中往往承载着关键核心业务,其重要性不言而喻,企业会采用大量的技术来保证数据库的高可用性,典型的有RAC、F5负载均衡、高可用网络等;当在这样的一个环境中串接一个新的节点时,对该节点的可用性要求甚至比数据库本身的要求还要高。让用户放心实施防火墙串联部署,高可用性的口号喊出去,会不会变成给自己挖坑?挑战不小。

是软件都会有bug,但别给业务系统惹麻烦!

是软件,都会有缺陷、有bug,更别说一个具有深度的完整数据库协议分析、SQL语法分析再加上策略控制等复杂逻辑的数据库防火墙产品。怎么解决?答案很简单:

数据库防火墙自身的缺陷,不应对操作数据库的业务行为产生任何影响;缺陷引起的故障对业务系统应当无感。

这一目标,对于数据库防火墙这样的串联产品,比任何特性都重要,是用户能否接受“串联部署”的关键指标。只为这一目标,着实需要从产品的架构设计、容错能力和异常管理能力上费一番脑筋。

高可用性的关键技术路线:

1:采用类似Oracle数据库的多进程和共享内存架构

对于每条数据库访问行为,相应的数据库防火墙对应一个完整的处理过程,包括完成全部计算和功能逻辑。处理完成后,整个进程关闭。

优点:进程间完全独立,即使一个进程触发了软件缺陷,也不会影响其他访问行为处理,将影响降到最小。

缺点:需要对进程的资源占用进行精细的管理和分配,避免消耗太多资源。

2:对于进程的故障,实现软件旁路的容错机制

当进程发生故障时,启动对进程的守护能力,接管通讯包,实现故障情况下的bypass旁路能力,从而“续上”应用与数据库的连接,让应用系统完全感受不到会话出现了异常。我们用安华金和数据库防火墙进行实际测试时模拟了此场景:在会话建立后,高压力运行SQL操作期间,“杀死”相应数据库防火墙进程,会话没有受到任何影响,持续稳定运行。

设备、系统故障了?业务不能断!

是设备,都有可能出故障,硬件故障、电源故障、系统故障、软件死锁……总之有任何可能性,让数据库防火墙的网络断开或僵死。,那用户可不干了,我的业务不能断!

高可用性的关键技术路线:

1: 采用硬件网卡ByPass,保障业务快速恢复

通过网卡的ByPass能力,并结合“看门狗”机制,当发生设备断电、操作系统故障、数据库防火墙核心组件僵死等异常情况时,能够快速的自动开启硬件ByPass,重新打通网络连接,保证业务系统在数据库防火墙发生异常后,在几秒内恢复正常。

2:采用双机HA网络,保障业务连续性

在很多关键核心业务系统中,往往会采用高可用网络和负载均衡设备来保证极端情况下的业务连续性。作为串联接入的数据库防火墙设备,需要能够无缝的适应这样的高可用环境,能够提供全透明(无IP)的串接方式,就好比一根网线,当这根“网线”出现故障,无法连通时,通讯包会被自动串接到另外一条链路上的数据库防火墙设备,从而无缝的继续业务操作。

忽然联想到,用户对数据库防火墙产品的高可用要求,就好比我们要求八达岭野生动物园的老虎兄弟,既希望它们不丧失原始的野性本能,同时又要保证它的安全性,不会伤害游客,要求这么高,稍有差池这不就出事儿了吗?活生生的老虎控制不了,可自己的产品还是能自己说了算的。

于是,在数据库防火墙产品开发之初,我们先给自己制定了一个能达到的小目标:实现串联部署下的高可用性。今天,作为国内最为成熟的数据库防火墙产品——安华金和数据库防火墙,已成功应用于多个大型项目中,以串联部署的方式,保证业务系统在安全状态下正常、高效的运行,为用户提供了安全、无感的体验效果。

鼎峰小胡
QQ.2881064155
[email protected]

时间: 2024-10-13 12:22:35

综论数据库防火墙的自我修养系列之一:高可用性的相关文章

程序员的自我修养系列(三):习惯付费

前言 现在有了互联网,很容易让很多人产生错觉,觉得很多东西可以免费得到,似乎你也正在享受很多免费的东西,头条让你免费看新闻,抖音让你免费看娱乐,各种视频网站也可以免费看到很多电影,电视剧八卦等. 我们有没有认真想想,这些东西你真的是免费得到的吗?你是不是在忍受各种广告?你的各种点赞是不是在帮助服务商标注数据?你的安全信息已经各种泄露,你在互联网早就一丝不挂,你说没有?你朋友有没有?现在各种APP都可以读取通讯录,虽然你没有,但是只要你出现在你朋友的联系人里,如果他上传了,你的自然也暴露了. 这个

《程序员的自我修养》系列技术文章整理收藏

整理的一些程序员修炼方面的文章,与大家共勉,有些系列感觉还是很不错的,读来颇受益,一下就是收藏的文章,希望大家喜欢 1思维改变生活:不需要经历也能明白 2思维改变生活:亲身经历了就一定能明白吗? 3思维改变生活:很多事情亲身经历之后才会明白 4工作:不管你愿不愿意,你都要改变 5Doodle:让眼睛一直注视着你的鼠标 6抗干扰的秘诀:分类.整理与专注 7心智模式:认识你自己 8心智模式:如何面对逆境? 9心智模式:心智模式成熟的标志 10心智模式:什么是心智模式? 11心智模式:如何改善我们的心

程序员的自我修养(2)——计算机网络(转)

相关文章:程序员的自我修养——操作系统篇 几乎所有的计算机程序,都会牵涉到网络通信.因此,了解计算机基础网络知识,对每一个程序员来说都是异常重要的. 本文在介绍一些基础网络知识的同时,给出了一些高质量的系列文章链接,以方便大家随时参考学习.相信通过本文的学习,你能对计算机网络有全面的认识! 在阅读本文之前,建议阅读以下两遍文章,以便对”计算机网络是如何工作”的有个大概的了解. 互联网协议入门(一) 互联网协议入门(二) 接下来,我们介绍一些基础网络知识. OSI参考模型 一上来就是OSI七层参考

一个程序员的自我修养

在网上看到一篇程序员的自我修养,深以为然,不禁摘录一些,勉励自己 一个好的开发人员,应该能够全面.高效.严谨的去处理任何软件程序和业务问题,成为一个好的开发,是一个很有意思的话题,不过无论这个话题如何开展,基础两个字必不可少,虽然代码量是衡量开发能力的重要指标,但仅能够熟练的进行代码编写是不够的,更要能深刻的理解技术原理和业务逻辑,扎实的个人基础和技术基础往往会促进代码的编写,更游刃有余的解决问题. 下面说的一些基础,可能绝大部分开发人员都不会在意甚至忽略,但恰恰这些才是开发大厦的基石. 1.科

后ARM时代,嵌入式工程师的自我修养

1嵌入式学习的一些概念理解误区 很多嵌入式初学者认为,学嵌入式,就是学习ARM,就是学习开发板.买一块开发板,然后在上面"移植"u-boot.Linux内核,再使用busybox制作一个根文件系统,大功告成!觉得可以出去找工作了.这其实是有一定片面性的:首先ARM是个CPU架构,跟PC上的X86架构一样,你见过有人在Windows下面学习C/C++编程.MFC编程.网络编程.互联网编程,说自己学习X86的吗?当然,也不可否认,嵌入式平台的多样性.硬件的可定制性导致我们在嵌入式平台上开发

《程序员的自我修养》 第二章——编译和链接

摘自http://blog.chinaunix.net/uid-26548237-id-3839979.html <程序员的自我修养>第二章——编译和链接 2.1 被隐藏了的过程    C语句的经典,“Hello World”程序几乎是每个程序员闭着眼睛都能写出的,编译运行一气呵成,基本成了程序入门和开发环境测试的默认标准. #include <stdio.h> int main() { printf("Hello World\n"); return 0; 在L

GIS制图人员的自我修养(2)--制图意识

by 李远祥 上次提及到GIS制图人员的一些制图误区,主要是为GIS制图人员剖析在制图工作中的一些问题.但如何提高制图的自我修养,却是一个非常漫长的过程,这一章主要为提升制图修养作一些理论铺垫.其中,最值得强调的就是制图意识. 什么是制图意识?就是当第一时间看到数据的时候,就立刻针对该数据做出反应,基本上形成初步的制图思路,并确定制图的技术路线.说到底,所谓的制图意识,对于制图界的老鸟来说,就是经验.但是经验往往是需要长时间的积累的.还有一种情况就是具有制图天赋的人,天生就具备这种敏锐的触觉.但

很认真的聊一聊程序员的自我修养

首先要谈的是,今天的话题所聊的程序员包含哪些人? 在中国,写程序,不仅仅是一种兴趣,更多的时候,还是一种普通职业和谋生工具 大公司有厉害的程序员,优秀的架构师,但大量的小公司也有很多普通的程序员.在我这些年的工作经历中,也越来越深刻的感受到普通程序员的影响和力量.对于高阶程序员,所谓八仙过海各有神通,各有各的成就,各有各的修养,但程序员在达成较高的水平之前,有一些"自我修养",是最基础的,是普世的. 所以今天的话题面向的程序员,就是所有的正在写代码或者曾经写过代码的程序员,也包括广义上

【读书笔记】程序员的自我修养总结(二)

程序员的自我修养总结(二) 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:这是程序员的自我修养一书的读书总结,随着阅读的推进,逐步增加内容. 由源文件到可执行文件 分为四个步骤: 预处理 处理源代码中以#开始的预编译指令,进行宏定义展开,处理所有条件预编译指令,将被包含文件插入到预编译指令的位置,删除所有注释,添加行号及文件标识,保留#pragma编译器指令,因为编译器需用到. 编译 进行一系列词法分析,语法分析,语义分析及优化后生成汇编代码文件