一、何谓数据库审计?
数据库审计,就是对数据库的活动做跟踪记录,主要包括数据库连接,sql语句执行,数据库对象访问这些方面的跟踪记录。
二、审记记录的存储方式
分为两种:一种是存储在操作系统文件中,一种是存储在system表空间中的sys.aud$表中。
三、对数据库性能影响的考虑
审计必然需要占用cpu,因此,需要综合平衡审计需求与性能之间的平衡性问题,以确定出最好的审许策略。
四、审记结果中包含哪些信息
前面讲到审许结果的存储分数据库存储和文件存储两种方式。对于数据库存储的情况,sys.aud$表中包含以下信息:
1)·操作系统用户名
2)·数据库用户名
3)·连接会话标识
4)·终端标识
5)·被访问的schema对象名
6)·尝试的操作
7)·操作的完整代码
8)·日期和时间戳
若审计记录存储在外部操作文件中,则该文件可能包含以下信息:
1)·操作系统产生的审计记录
2)·数据库的审计记录
3)·被审计到的数据库操作
4)·超级管理员(sys)的审计记录
其中,被写到文件中的审计记录是以编码的方式存储的,如果要理解这些编码所对应的信息,可以查询以下数据字典表:
编码信息数据字典表
-------------------------------
数据库操作代码表示尝试的操作。它的相关描述可以从数据字典表audit_actions表中查询到
操作所使用的权限可以在字典表system_privilege_map中查询到对应的说明
完整的操作代码操作成功时将返回0,失败时返回相关oracle错误信息,错误信息码所对应的说明可以从oracle官方文档中获得
--------------------------------
五、缺省的审计
不论当前是否已经开启的审计功能,数据库都会把一些数据库相关的操作写入外部审计文件中(注意:不是写入sys.aud$表),这些被缺省审计的操作是:
1)·以超级管理员权限对数据库的连接(connectassysdba或connectassysoper)
2)·数据库启动
3)·数据库停止
六、对超级管理员用户的操作行为的审计
超级管理员用户指的是以assysdba或assysoper方式连接数据库的用户。初始化参数audit_sys_operations用来指定是超级管理员的审计选项,如果将audit_sys_operations设置为true,那么所有超级管理员的操作都将被审计,而不管当前是否有开启审计功能,而且所有的审计信息都被写入外部审计文件中(注意:不是写入sys.aud$表)。
七、执行审计
1.设定审计记录的存放位置
初始化参数audit_trail指定了审计记录的存放位置,该参数有三个取值:
1)·db审计记录存放在数据库的sys.aud$表中
2)·os审计记录存放在外部的操作系统文件中
3)·none关闭审计(缺省值)
初始化参数audit_file_dest指定了当审外部审记文件目标存储路径,其缺省值是$oracle_home/rdbms/audit
2.审计选项
这个审计选项指的是执行审计的audit语句的可选项。audit语句的语法请参考oracle官方sql参考。
3.以实例说明审计
a.审计某用户的会话的创建与结束
auditsessionbyscott,fey;
b.审计所有用户的会话的创建与结束
auditsession;
c.审计删除表的操作
auditdeleteanytable;
c.审计删除表的操作(限制:只审计删除失败的情况)
auditdeleteanytablewhenevernotsuccessful;
d.审计删除表的操作(限制:只审计删除成功的情况)
auditdeleteanytablewheneversuccessful;
e.审计删除表的操作(限制:同一个会话中相同的操作语句只审计一次)
auditdeleteanytablebysession;
(注:对于这种情况,如果审计记录被设定为存储在外部文件中时,这个效果是体现不出来的,因为oracle无法判断是否已经审计过相同的操作语句。)
f.审计删除表的操作(限制:每支删除语句都审计,不论同一会话中是否有多条相同的操作语句)
auditdeleteanytablebyaccess;
g.审计对fey.employee表的delete操作
auditdeleteonfey.employee;
h.审计对fey.employee表的delete、updet、insert操作
auditdelete,update,insertonfey.employee;
八、停止审计
停止审计使用noaudit语句,该语句的语法请参考oracle官方sql参考。下面以实例说明noaudit的使用:
a.停止所有对会话的创建与结束的审计
noauditsession;
b.停止对用户fey,scott的会话的创建与结束的审计
noauditsessionbyfey,scott;
c.停止审计删除表的操作
noauditdeleteanytable;
c.停止审计删除表的操作(限制:停止审计删除失败的情况)
noauditdeleteanytablewhenevernotsuccessful;
d.停止审计删除表的操作(限制:停止审计删除成功的情况)
noauditdeleteanytablewheneversuccessful;
g.停止审计对fey.employee表的delete操作
noauditdeleteonfey.employee;
h.停止审计对fey.employee表的delete、updet、insert操作
noauditdelete,update,insertonfey.employee;
九、对审计记录表sys.aud$的管理
当sys.aud$表的审计记录越来越多的时候,以至达到存储极限时,会因为审计记录无法写入而产生错误。或许我还也需要对该表的数据进行一些转储或者碎片的整理,或是删除一些我们认为不再需要的审计记录。这些都是要考虑的事情。下面给出一个对该表进行存储碎片的整理的一个方法:
a.将该表的数据selectinto到另一个表中,或利用export导出到外部文件
b.truncate这张表(要以超级管理员登录才行)
c.再将原先转储的数据再加载进来。
也许我们需要对针对sys.aud$表的操作进行审计,如:auditinsert,update,deleteonsys.aud$byaccess;
十、fine-grained审计
如前面所述,审计的记录中并没有含操作所作用的数据,比如说,需要审计针对一个表的select,而且需要在审计记录中包含select语句所返回的数据。这时,就需要用到fine-grained审计。fine-grained审计是基于oracle的事件,其原理是在insert,update或delete相关的事件中截取相关的数据。属于orale程序开发的范畴。具体可以参考相关oracle文檔。
十一、审计相关的数据字典视图
stmt_audit_option_map
audit_actions
all_def_audit_opts
dba_stmt_audit_opts
dba_priv_audit_opts
dba_obj_audit_opts
user_obj_audit_opts
dba_audit_trail
user_audit_trail
dba_audit_object
user_audit_object
dba_audit_session
user_audit_session
dba_audit_statement
user_audit_statement
dba_audit_exists
dba_audit_policies
dba_fga_audit_trail
各视图的详细说明可以参考oracle官方参考手册。
下面以安华金和数据库安全审计系统为例,详细介绍一下产品功能:
数据库发现与管理
基于流量识别技术,自动发现网络中所有的数据库,并提供自动添加数据库的功能,解决网络环境复杂、数据资产不清晰等问题;为重要数据库添加“关注”;对同类或同业务数据库进行分组管理;使用默认或自定义规则,快速关联数据库。
探针式数据采集
当针对复杂的虚拟化网络环境或本地数据库进行审计时,需要使用“探针”的部署方式,即产品在应用端或数据库服务器部署rmagent组件,通过虚拟环境分配的审计管理网口进行数据传输,完成数据库流量采集。
结果集审计
das支持审计sql语句的执行结果,包括执行该sql语句的影响行数、响应时间和应答错误号。另外,用户可以在das中定义结果集中包含特定字段时是否打开审计、告警开关。
加密协议解析
在非安全的环境中,为了保证数据库服务的安全性,组织通常选择开启数据访问通信加密功能,然而也为审计解析带来困难,das的审计功能通过解析数据库通讯协议获取数据信息。
应用关联审计与监控
常规的数据库通讯协议解析只能解析到客户端一层的信息,das采用在应用端部署插件的方式,基于应用会话捕获“应用账户”及“应用ip”等关联审计信息,并添加到风险策略进行风险行为监控。
数据库对象统计
通过对象统计实时监测对表的操作以及访问情况,并可标记敏感表,实现对敏感表的操作统计和深度追踪,从而对敏感数据进行实时监控。
数据库行为监测
当外部系统利用数据库漏洞进行攻击时,das可以实时捕获到对应的sql语句和相关会话信息并发送告警,实时监控入侵行为;当隐藏在应用软件中的后门程序启动时,das提供异常情况的实时告警,实时监控异常行为;das提供丰富的规则类型,并支持从审计的行为记录结果中一键设置规则,监控敏感表的访问权限、操作权限和影响行数,并判断no where语句风险,实时监控数据库违规行为。
数据库行为建模
das在解析数据库通讯协议的过程中不断学习,建立和完善sql语句模板,并结合会话信息和应用关联信息实现数据库行为建模。
多维度关联分析
das提供数据库全局查询、分组查询和独立查询三种分析视角,用户可以根据业务需求进行综合分析。同时,das提供用户行为的统计信息环比结果,帮助用户直观获取同一数据库不同时间段及不同数据库同一时间段的sql语句量和会话量的对比数据和变化趋势。
丰富的报表展现
“报表”功能用于表现审计日志的数据化分析结果,帮助安全管理人员更加便捷、深入的剖析数据库运行风险。
合规性报表:包括sox、pci、等保合规分析报表。
专项报表:提供风险、性能、客户端、失败信息等多维度的独立分析报表。
综合报表:单库或全量数据库审计信息的全量综合分析。
自定义报表:自定义符合自身业务特点的报表。
数据库性能分析
das实时监控数据库的sql吞吐量和会话并发量,从而评估数据库运行状态和资源使用情况。
提供独立的“top sql”分析界面,帮助用户快速定位应用系统或运维操作过程中耗时最长、操作频率最高的sql语句,协助优化业务系统,提高数据库资源使用率。
数据备份与恢复
das将存储空间进行合理划分,分别存储“在线语句量”和“备份语句量”。das支持对在线语句进行全文检索和分析,并自动压缩和存储备份语句。
系统权限控制
针对这种复杂的人员结构以及复杂的业务场景,das增加数据库组、用户和角色,以实现详细的管理权限划分。
对外数据传输接口
为便于第三方平台接收日志进行二次分析,das提供数据对外传输能力,并提供标准化接口(例如kafka接口)。除此之外,das还支持抽取“系统审计日志”并传输给第三方系统监管平台,或者通过snmp方式传递系统的cpu、内存等操作系统层信息,便于用户对审计设备的监督、管理。
多节点集群管理
das支持多节点部署。各审计节点通过上报、审批加入集群管理列表,通过集权管理中心登录和管理各审计节点。
试用申请