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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了某银行用户安华金和二代数据库安全审计产品测试体验相关的知识,希望对你有一定的参考价值。

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

阅读摘要:

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

测试背景:

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

本次针对安华金和数据库监控与审计系统(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

以上是关于某银行用户安华金和二代数据库安全审计产品测试体验的主要内容,如果未能解决你的问题,请参考以下文章

2022年数据库审计产品排行榜-必看!

2022年数据库审计产品排行榜-必看!

安全有保障,效率大提升 | 超千点麒麟信安云在长沙某银行稳定运行!

安恒信息审计设备默认账号密码

IBM的OpenJ9

数据库怎么加密?