码迷,mamicode.com
首页 > 数据库 > 详细

某银行用户安华金和二代数据库安全审计产品测试体验

时间:2016-01-26 12:41:34      阅读:449      评论:0      收藏:0      [点我收藏+]

标签:安华金和   数据库安全   数据库审计   二代数据库审计产品   

某银行信用卡中心运维主管 王晶晶

阅读摘要:

某银行信用卡中心运维人员,加入到安华金和二代数据库安全审计产品测试评估当中,将产品体验分享大家。

测试背景:

在银行的数据库系统中,时常面临因账户和权限设置不当或账户被滥用而带来的风险。如果数据库管理员利用工作之便,窃取、篡改重要业务数据,或者管理账号被窃取、导致数据库被恶意损毁,将对企业带来难以挽回的重大损失。而数据库自身审计日志存在局限性,难以提供便捷的审计信息查询方式和报表,所以很难用于安全事件定位分析,以及事后追查取证。

本次针对安华金和数据库监控与审计系统(DBAudit)产品进行测试体验,发现该产品能够实时记录网络上的数据库活动,对数据库遭受到的风险行为进行告警。该系统通过对用户访问数据库行为的记录、分析和汇报,帮助用户事后生成合规报告、事故追根溯源,同时加强数据库内外部网络行为记录,提高数据资产安全。

测试结果:

经过详细测试,其主要优势包括:

一、全面监测数据库超级账户、临时账户等指定账户的数据库操作行为;

二、实时监测数据库操作行为,发现非法违规操作能及时告警响应;

三、详细记录数据库操作信息,并提供用户、IP、客户端工具、访问时间、操作对象、SQL操作类型、成功与否、访问时长、影响行数等多种检索条件,方便事件定位分析、事后取证;

四、能够以报表形式呈现用户名称,操作时间,操作类型(如修改、查询、删除),操作所涉及到相关数据(如表、视图)等信息;

五、支持自定义高中低风险等级,漏洞攻击、SQL注入、黑名单语句、违反授权策略的SQL行为等审计规则和邮件、短信、日志等告警策略;

六、界面友好,按照语句、会话、风险为线索对数据库审计信息进行组织和导航,并提供业务翻译能力,将复杂的SQL语句提炼为中文业务操作描述;

七、能够展现数据库完整会话操作,对系统管理提供重要诊断依据;

八、系统支持ORALCE、SQL SERVER、MY SQL、DB2、Sybase、Infomix等主流数据库系统。

当然产品也存在一些不足:

一、无法完整记录SELECT语句的返回结果集,将可能导致特定情况下的审计材料缺失;

二、审计信息存在10秒左右的延迟:执行的SQL语句,并不能立即在审计系统中显现。

测试过程

1.对存在风险的操作是否能够准确记录用于审计

测试用例:设置针对DW_AREA表的查询为风险操作,然后使用指定条件对该表进行查询。

测试目的:查询语句能够被准确记录,客户端的用户名和IP地址等详细信息能够准确反映。

测试结果:能够准确捕获风险操作语句,客户端信息包括IP、账户、执行时间等。

技术分享

2.是否提供方便的检索功能和报表查询

测试用例:设置针对DW_PAYMENT_INTERFACE表的查询为风险操作,然后使用指定条件对该表进行查询。

测试目的:系统是否提供了方便的检索功能和报表查询功能,达到快速事后取证的目的。

测试结果:能够利用账户、IP、查询条件等从多种维度对风险信息进行过滤,方便信息检索和定位。

技术分享
技术分享

3.对带Schema的表能否准确解析并审计

测试用例:select * from mysql.db limit 10

测试目的:是否准确识别出表名是db,数据库名称是mysql。

测试结果:准确识别。

技术分享

4.对Union中的多表能否准确解析并审计

测试用例:

select type from mysql.proc limit 2

union all

select name from test.test

union

select db from mysql.db

测试目的:是否准确识别出表是mysql.proc、test.test、mysql.db。

测试结果:准确识别。

技术分享

5.对Update中的多表能否能否准确解析并审计

测试用例:

update test a, test2 b set a.name= b.name where a.id=b.id

测试目的:是否准确识别出更新表是test、test2。

测试结果:准确识别。

技术分享

6.对insert中的多表能否准确解析并审计

测试用例a:

insert into test2 select * from test

测试目的:Insert语句有涉及多表时,是否准确识别出表test、test2。

测试结果:准确识别。

技术分享

测试用例b:

insert into test2 values (6,‘testname‘)

测试目的:是否能够准确识别出插入的数据值。

测试结果:语句模板中,所有整形数值记为0,所有text类型数值都记为’#’;具体参数数值可在深度追踪中呈现。

技术分享

7.对join中的多表能否准确解析并审计

测试用例:

select * from test.test inner join test2 on test.test.id=test2.id

where test2.name like ‘%yes%‘

测试目的:join语句有涉及多表时,是否准确识别。

测试结果:准确识别。

技术分享

8.对复杂查询及子查询中能否准确记录并审计

测试用例:

SELECT
       sum(d.id)

FROM
       (
              SELECT
                     a.id,
                     a. NAME
              FROM
                     test a
              INNER JOIN test2 b ON a.id = b.id
              WHERE
                     a.id IN (
                            SELECT DISTINCT
                                   c.id
                            FROM
                                   test2 c
                     )
       ) d

GROUP BY
       d.id

HAVING
       d.id > 0

测试目的:对函数、复杂查询以及子查询,是否能够准确识别。

测试结果:准确识别。

技术分享
技术分享

 

9. 对复杂嵌套查询能否准确记录并审计

测试用例:

select
       p1.*, p2.username,
       p8. name as user_area,
       u.username as kefu_username,
       p2.qq,
       p3.

value
       as credit_jifen,
       p4.pic as credit_pic,
       p5.area as add_area,
       p1.account_yes / p1.account as scales,
       p7. name as usetypename,
       p2.realname

from
       dw_borrow as p1

left join dw_user as p2 on p1.user_id = p2.user_id

left join dw_user_cache as uca on uca.user_id = p1.user_id

left join dw_user as u on u.user_id = uca.kefu_userid

left join dw_credit as p3 on p1.user_id = p3.user_id

left join dw_credit_rank as p4 on p3.

value
       <= p4.point2

and p3.

value
       >= p4.point1

left join dw_userinfo as p5 on p1.user_id = p5.user_id

left join dw_linkage as p7 on p1.use = p7.id

left join dw_area as p8 on p2.province = p8.id

where
       0 = 0

and p1.type = 0

and (
       (
              (
                     (p1. status = 0)
                     or (
                            p1. status in (0, 0, 0, 0)
                            and p1.type != 0
                     )
              )
              and p1.type != 0
       )
       or (
              p1.type = 0
              and p1. status in (0, 0)
       )

)

and time_limit <= 0

order by

p1.verify_time desc

limit 0,

测试目的:复杂查询,应能够准确识别DW_LINKAGE,DW_CREDIT_RANK,DW_AREA,DW_USER,DW_BORROW,DW_USERINFO,DW_CREDIT表信息。

测试结果:准确识别。

技术分享

10.是否具备双向审计能力

测试用例:查看执行成功和失败的语句详细信息。

测试目的:实现单包返回状态分析,并能够实现对查询结果进行分析。

测试结果:准确显示执行成功和失败的语句详细信息

技术分享

本次测试未能涵盖的方面包括:

一、无法验证高并发、高负载情况下是否存在数据丢失;

二、对现有数据库的性能影响;

三、审计系统自身的安全性无法验证;

四、只针对Mysql数据库的运行情况进行测试;

五、邮件、短信、日志等告警时效性和体验尚未验证。

总之,通过部署安全审计系统将帮助企业实现:实时监控、全面记录数据库各种账户(如超级管理员、临时账户等)的数据库操作行为,及时发现各种非法、违规操作,并作告警响应处理,降低数据库安全风险;通过提供丰富的审计信息查询方式和报表,方便安全事件定位分析,事后追查取证,达到保护企业数据库资产安全的目的。



本文出自 “数据库安全” 博客,请务必保留此出处http://schina.blog.51cto.com/9734953/1738556

某银行用户安华金和二代数据库安全审计产品测试体验

标签:安华金和   数据库安全   数据库审计   二代数据库审计产品   

原文地址:http://schina.blog.51cto.com/9734953/1738556

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!