数据库防火墙风险大?那是你还不知道应用关联

近年来,作为高效而直接的数据库防御工事,数据库防火墙已被越来越多的用户关注,应用在关键系统的数据库安全防护中,以保护核心数据资产安全。要实现危险行为的过滤,数据库防火墙必需串联部署,才能形成数据库的安全屏障。这要求其既要发挥抵御威胁行为的功能,同时又不能影响正常的应用访问,造成业务中断。

有人说:数据库防火墙风险大,一不小心你的应用就瘫痪了!真是这样吗?
        事实上,满足如此严苛要求的关键在于如何实现精准的应用关联防护,能够在不中断业务访问的基础上,精准定位威胁行为并拦截,从而达到精确而无副作用的防护效果。这也是一款数据库防火墙产品是否成熟可用的必要条件。
语句拦截——奠定应用防护的基础
        通常来讲,数据库防火墙可以通过两种方式实现威胁防御:中断会话和语句拦截。
1.中断会话
直接切断应用与数据库的会话连接,这种方式粗暴简单,也最易实现。这种防护方式也是很多不成熟的数据库防火墙产品所提供的解决方案。我们知道数据库的访问行为,来自DBA等运维人员及应用系统的访问调用,这其中应用系统的访问更为频繁。对于业务连续性的要求也最高,中断会话等于业务瘫痪,显然不可取。
2.语句拦截
        拦截语句的方式是指在保持原有会话畅通的基础上,精准拦截威胁语句。既不破坏业务连续性,又能将风险语句过滤下来。这考验数据库防火墙对SQL语句的精准解析、风险策略的灵活和适用性,也是实现数据库应用关联防护的基础所在。
应用关联审计——准确定位应用访问信息
        接触过数据库审计产品的朋友应该知道,“三层关联审计”功能在不少数据库审计产品中已经实现,即通过“时间戳”等方式从数据库访问信息中捕获应用账号、IP等应用关联信息。但众所周知,“时间戳”的方式在功能上具有极大的缺陷——关联审计信息并不准确,即使是在旁路审计上应用,也已经广受诟病,更何况串接部署的数据库防火墙。一旦解析错误,将造成正常语句被拦截, 严重影响业务运转。
        基于“应用插件”实现“应用关联审计”的理念是由安华金和在国内首先提出,目前也在行业内得到更广泛的应用。这种解析方式,是以一个简易的jar包集成到应用系统,从而完成部署,在并发达到上千级别的连接是,仍然能实现100%准确关联,以精确的方式捕获到应用端相关信息。同时,这种解析能力需要具备高适用性,除了适用于Weblogic、tomcat、Websphere、Jboss等主流的应用服务器,也能支持F5等负载均衡模式下针对代理IP的关联审计挖掘,准确定位应用访问信息。
        具备保持会话前提下的语句拦截功能,并能提供精准应用关联能力,如此看来,实现数据库的应用关联防护已经具备非常坚实的基础。最后一步,基于多维度匹配灵活的安全策略,是实现应用关联防护的最后一锤。
多样性的策略——实现细粒度行为控制
1.学习、建立数据库行为模型
        应用系统的访问特点是基于固定的业务模型执行批量的SQl语句,学习应用的访问行为是判断异常风险语句的关键。数据库防火墙在正式投入串接使用之前,需要旁路部署经过一段学习期,大量学习应用侧的访问行为,涵盖:
        (1)客户端信息(客户端IP、客户端工具、主机名、操作系统、登录的数据库用户等)
        (2)应用信息(应用账号、应用IP等)
        (3)访问对象信息(数据库实例、表、字段等)
        从而建立数据库行为模型,进一步制定全面灵活的安全策略。
2.高细粒度的安全策略设定
        精细化的安全策略需要具备高细粒度,能够基于单条策略进行多层次设定。将应用账号、客户端IP、SQL语句等进行绑定,实现对应用用户进行访问行为控制。譬如,客服人员(应用账号)只能基于指定的IP或IP端进行数据库访问,并且其执行的语句仅限于指定的若干语句模板,否则视为风险访问、违规操作,会直接被阻断或被拦截。
        数据库防火墙可以针对指定的访问对象进行行为控制,即针对某一数据库的某表、某字段进行增、删、改、查的控制。例如,寿险账单的用户电话号码就是以数据库的表字段进行存储。那么,应用关联防护在实现上,可以限制仅某些账户(如:业务主管)可以进行上述数据库字段的查询;某些账户(如:业务经理)可以进行上述数据的修改。
如果防火墙的防护粒度仅限于“数据库字段”,那么应用业务中更为深入的控制是否能满足呢?譬如,业务经理仅能查询和自己有关的用户电话号码,即数据库“电话号码字段”中的部分信息。在数据库防火墙中,组成一条规则的元素中包括“报文关键字”这一特性,即可以通过配置“正则表达式”匹配SQL语句中的关键字,如果命中即视为风险。例如:select 账户,电话号码 from 业务表 where 账户=”张三”;防火墙可以作出如下限定:如果关联发现执行该语句的账户不是“张三”,那么执行该语句时即视为风险语句进行拦截。
        同理,数据库防火墙将行为建模中捕获到的诸多元素,通过多维度的设置、排列组合即可实现多样性的防护规则,适用不同的访问场景,这如同在数据库前端织就了一张牢不可破的网。
        至此,在实现精确语句拦截、应用关联审计的前提下,赋予灵活多样的安全策略,这才造就了一个有深度有内涵的数据库防火墙产品。当然,安全策略的成熟度需要经过多个大型项目的打磨,应用程度越高的数据库防火墙产品,其接触的业务类型也就越多,能够为用户提供更精细、更具参考性的策略和规则,实现更准确、高效的数据库安全防护价值。