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。