DB2审计原理

db2audit审计发生在实例级,这意味着一旦启动审计功能,它就会审计那个实例中所有数据库的活动。审计功能必须单独启动和停止。

DB2 UDB 架构中的 DB2 审计功能原理图:


审计选项说明:

Log audit events: "FAILURE"                                   

当审计设置被更改或者审计日志被访问时生成记录

Log checking events:   "FAILURE"                                

 在对访问或操作 DB2 对象或函数的尝试进行权限检查时生成记录

Log object maintenance events:   "FAILURE"                        

在创建或删除数据对象时生成记录

Log security maintenance events:   "FAILURE"                      

在授予或者撤销对象或数据库特权或 DBADM 权限时生成记录

Log system administrator events:   "FAILURE"                      

当执行需要 SYSADM、SYSMAINT   或 SYSCTRL 权限的操作时生成记录

Log validate events:   "FAILURE"                                 

当认证用户或检索系统安全性信息时生成记录             

Log context events: "NONE"                                    

执行数据库操作时,生成记录以便显示操作上下文

审计配置

db2的审计分为实例界别和数据库级别,在网上查找审计时,通常看到的都只是实例级别的审计介绍,下面分别是两种类型的配置举例。

实例级别配置

通过db2audit describe查看

SL1:/db2audit_arch # db2audit describe

DB2 AUDIT SETTINGS:

 

Audit active: "TRUE "

Log audit events: "NONE"

Log checking events: "FAILURE"

Log object maintenance events: "FAILURE"

Log security maintenance events: "FAILURE"

Log system administrator events: "FAILURE"

Log validate events: "FAILURE"

Log context events: "NONE"

Return SQLCA on audit error: "FALSE "

Audit Data Path: "/db2audit_arch/"

Audit Archive Path: "/db2audit_arch/"

 

AUD0000I  Operation succeeded.

库级别配置

通过查看syscat.auditpolicies表查看

审计选项

AUDITPOLICYNAME

SAMPLEPOLICY

AUDITPOLICYID

100

CREATE_TIME

2016-03-03-11.08.34.117134

ALTER_TIME

2016-03-15-10.35.45.099762

AUDITSTATUS

N

CONTEXTSTATUS

S

VALIDATESTATUS

N

CHECKINGSTATUS

N

SECMAINTSTATUS

N

OBJMAINTSTATUS

N

SYSADMINSTATUS

N

EXECUTESTATUS

N

EXECUTEWITHDATA

N

ERRORTYPE

A

REMARKS

-

审计日志目录

数据库产生的审计日志,直接写入到/db2audit_arch目录下。当该目录使用率满时,将无法记录审计日志,数据库将无法进行正常使用

/dev/aduitarch     40.00     34.51   14%       22     1% /db2audit_arch

审计调度时间

通常我们可以编写定时任务脚本,对审计日志进行管理。比如,归档、抽取、入库等。定时任务的时间,可以根据实际环境进行配置。

50 * * * * /db2archive/db2inst1/SAMPLE/NODE0000/_db2audit/mkaudit_SQL.sh &

审计任务执行过程

定时脚本调起时,大致可以归纳如下步骤:

A.      将审计flush到文件;

B.       将数据库级审计日志进行归档;

C.       将审计日志从二进制转换为可阅读格式;

D.      将审计记录进行入库保存或者将审计文件上传到审计部门;

E.       定期清理审计文件;

F.        定期清理库中的审计记录。

审计文件保留周期

审计日志的保留周期,通常在1~3年。根据要求部署定期清理脚本即可。

 

本地审计原文件,存放在/db2audit_arch

/dev/aduitarch     40.00     34.51   14%       22     1% /db2audit_arch

SL1:/db2audit_arch # ls -rlt

total 11510256

-rw-------    1 db2inst1     db2grp     53852001 Jun 27 17:50 db2audit.db.SAMPLE.log.0.20170627175001

-rw-------    1 db2inst1     db2grp     71379624 Jun 27 19:50 db2audit.db.SAMPLE.log.0.20170627195001

-rw-------    1 db2inst1     db2grp     96795801 Jun 27 23:50 db2audit.db.SAMPLE.log.0.20170627235001

-rw-------    1 db2inst1     db2grp   4369101512 Jun 28 03:50 db2audit.db.SAMPLE.log.0.20170628035001

-rw-------    1 db2inst1     db2grp     82103216 Jun 28 07:50 db2audit.db.SAMPLE.log.0.20170628075000

-rw-------    1 db2inst1     db2grp    141386477 Jun 28 11:50 db2audit.db.SAMPLE.log.0.20170628115001

-rw-------    1 db2inst1     db2grp    611120029 Jun 28 15:45 db2audit.instance.log.0

-rw-------    1 db2inst1     db2grp    197411690 Jun 28 15:50 db2audit.db.SAMPLE.log.0.20170628155001

-rw-------    1 db2inst1     db2grp      4637688 Jun 28 15:54 db2audit.db.SAMPLE.log.0

转换格式后的文件,保存在/db2archive/db2inst1/SAMPLE/NODE0000/_db2audit

SL1:/db2audit_arch # ls -rlt

total 11510256

drwxr-xr-x    2 db2inst1     db2grp          256 Mar 15 2016  lost+found

-rw-rw-rw-    1 db2inst1     db2grp            0 Jun 21 2016  validate.del

-rw-rw-rw-    1 db2inst1     db2grp            0 Jun 21 2016  sysadmin.del

-rw-rw-rw-    1 db2inst1     db2grp            0 Jun 21 2016  secmaint.del

-rw-rw-rw-    1 db2inst1     db2grp            0 Jun 21 2016  objmaint.del

-rw-rw-rw-    1 db2inst1     db2grp            0 Jun 21 2016  execute.del

-rw-rw-rw-    1 db2inst1     db2grp            0 Jun 21 2016  checking.del

-rw-rw-rw-    1 db2inst1     db2grp            0 Jun 21 2016  audit.del

-rw-rw-rw-    1 db2inst1     db2grp    186838785 Jun 02 17:28 context.del

-rw-rw-rw-    1 db2inst1     db2grp     78538009 Jun 02 17:28 auditlobs

开启方法

审计开启/关闭

db2audit start/stop

确认开关是否开启

db2inst1@s1l:~/audit_dump> db2audit describe|grep -i 'Audit active'

Audit active: "TRUE "

实例级别审计,通过db2audit,修改相应选项,即可开启对应的审计。

db2audit configure scope context status SUCCESS errortype normal

库级别审计通过db2 audit database using开启。

db2 audit database using policy auditdb

注意事项

在开启审计后,一定要对审计目录使用率进行监控,否则在撑爆后,影响数据库访问。
归档实例级别审计使用“db2audit archive”,库级别审计使用“db2audit archive database dbname。