db2 10.5 数据库审计

简介

DB2 UDB 审计功能是 DBA 工具箱中一件重要的安全性工具。它可以生成对一系列预定义的数据库事件的审计跟踪,并允许 DBA 维护审计跟踪。它可以对一些数据库事件,例如授权检查、数据库对象维护、安全性维护、系统管理和用户验证等做日志记录。本文向您展示如何有效地使用该功能对可疑的系统活动进行跟踪和调查。

审计发生在实例级,这意味着一旦启动审计功能,它就会审计那个实例中所有数据库的活动。审计功能必须单独启动和停止。例如,如果使用 db2stop 命令停止一个实例,那么审计功能不会自动停止;它必须单独使用 db2audit stop 命令来停止。 只有具有 SYSADM 权限的用户才能配置和使用审计功能。

1、查看审计状态

1.1、查看实例审计状态

db2audit describe
DB2 AUDIT SETTINGS:Audit active: "FALSE "
Log audit events: "FAILURE"
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: ""
Audit Archive Path: ""AUD0000I  Operation succeeded.

1.2、查看数据库审计状态

-- 审计策略
SELECT * FROM syscat.auditpolicies;
-- 当前在用审计策略
SELECT * FROM syscat.audituse;

2、配置审计范围和状态

2.1、可以审计的数据库事件类型

事件类型 描述
审计 (AUDIT) 当审计设置被更改或者审计日志被访问时生成记录
权限检查 (CHECKING) 在对访问或操作 DB2 对象或函数的尝试进行权限检查时生成记录
对象维护 (OBJMAINT) 在创建或删除数据对象时生成记录
安全性维护 (SECMAINT) 在授予或者撤销对象或数据库特权或 DBADM 权限时生成记录当数据库管理器的安全性配置参数 SYSADM_GROUPSYSCTRL_GROUPSYSMAINT_GROUP 被修改时也会生成记录
系统管理 (SYSADMIN) 当执行需要 SYSADMSYSMAINTSYSCTRL 权限的操作时生成记录
用户验证 (VALIDATE) 当认证用户或检索系统安全性信息时生成记录
操作上下文 (CONTEXT) 当执行数据库操作时,生成记录以便显示操作上下文这样分类可以更好地解释审计记录。当与日志的事件相关符字段一起使用时,可以从一组事件跟踪回到一个数据库操作,该数据库操作可以提供分析审计结果所需的上下文。

2.2、实例审计配置

-- 数据库实例审计
db2audit configure scope all status both errortype audit
-- 设置审计数据存储位置
db2audit configure datapath /db2backup/auditlog archivepath /db2backup/auditlog

2.3、数据库审计示例1-全量审计

如果想要确定谁在对名为 SAMPLE 的数据库进行 DML,DDL 操作,执行如下操作:

注意此策略的审计数据量较大

CONNECT TO SAMPLE
-- 创建审计策略
CREATE AUDIT POLICY ALTPOLICY CATEGORIES AUDIT STATUS BOTH, OBJMAINT STATUS BOTH,  CHECKING STATUS BOTH, EXECUTE STATUS BOTH ERROR TYPE NORMAL
-- 审计数据库
AUDIT DATABASE USING POLICY ALTPOLICY
-- 移除数据库审计策略
AUDIT DATABASE REMOVE POLICY
-- 删除审计策略
DROP AUDIT POLICY ALTPOLICY

2.4、数据库审计示例2-登录审计

仅审计用户登录、创建或删除对象操作,执行如下操作:

CONNECT TO SAMPLE
-- 创建审计策略
CREATE AUDIT POLICY LOGINPOLICY CATEGORIES VALIDATE STATUS BOTH, OBJMAINT STATUS BOTH ERROR TYPE NORMAL
-- 审计数据库
AUDIT DATABASE USING POLICY LOGINPOLICY
-- 移除数据库审计策略
AUDIT DATABASE REMOVE POLICY
-- 删除审计策略
DROP AUDIT POLICY LOGINPOLICY

3、审计数据存储位置

审计日志与审计归档日志存储目录默认为:sqllib/security/auditdata ,示例:

# linux示例
/home/db2inst1/sqllib/security/auditdata
# windows示例
D:\ProgramData\IBM\DB2\DB2COPY1\DB2\security\auditdata

审计数据可通过 db2audit 进行配置,详见2.2

4、开启与停止审计

-- 开启审计
db2audit start
-- 停止审计
db2audit stop

5、导出审计记录

5.1、审计归档

审计数据导出前需要进行刷新与归档,流程如下:

-- 审计刷新
db2audit flush
-- 归档实例审计日志
db2audit archive
-- 归档数据库审计日志
db2audit archive database test

5.2、提取日志到文本文件

将审计日志导出为便于阅读的格式:

-- 导出实例审计日志
db2audit extract file d:\instance.aud from files db2audit.instance.log.0.20200413105254
-- 导出数据库审计日志
db2audit extract file d:\test.aud from files db2audit.db.test.log.0.20200413105254

5.3、提取日志到数据库

将审计日志导出到普通文本格式,仅用于基本阅读,如果需要进行数据审计分析,需要将审计日志导出数据库。

操作流程如下:首先提取日志到定界ascii文件,然后使用load导入数据库。

5.3.1、将记录提取到定界文件

mkdir output
-- 提取实例审计日志
db2audit extract delasc delimiter ! to d:\output from files db2audit.instance.log.0.20200413150306
-- 提取数据库审计日志
db2audit extract delasc delimiter ! to d:\output from files db2audit.db.TEST.log.0.20200413150306
-- output输出文件列表如下:
audit.del
auditlobs
checking.del
context.del
execute.del
objmaint.del
secmaint.del
sysadmin.del
validate.del

5.3.2、创建审计表

每种审计类别的日志格式有差异,需要根据根据每种日志类别建立日志表。
审计表创建脚本 db2audit.ddl 位于 sqllib/misc 目录中。该脚本创建的表有:AUDIT、CHECKING、OBJMAINT、SECMAINT、SYSADMIN、VALIDATE、 CONTEXT 和 EXECUTE。

-- 创建schema
-- 建议将审计日志表建立的单独的schema中,避免表命名冲突,创建失败问题。
CREATE SCHEMA AUDIT
SET CURRENT SCHEMA = 'AUDIT'
-- 执行脚本,创建审计表
db2 +o -tf sqllib/misc/db2audit.ddl-- 用户访问授权
-- 如果需要开放访问权限给用户,执行如下:
db2 GRANT select ON audit.validate  TO USER db2_user
db2 GRANT select ON audit.objmaint  TO USER db2_user

5.3.3、将审计日志写入表

-- 1、如果数据库未开启归档日志,可以使用以下方式导入:
db2 load from d:\output\validate.del of del modified by chardel! insert into audit.validate
db2 load from d:\output\objmaint.del of del modified by chardel! insert into audit.objmaint
-- 2、如果数据库开启归档日志,需要添加导入参数:nonrecoverable,以免数据导入后,表空间发生:备份暂挂 问题
db2 load from d:\output\validate.del of del modified by chardel! insert into audit.validate nonrecoverable
db2 load from d:\output\objmaint.del of del modified by chardel! insert into audit.objmaint nonrecoverable

5.3.4、load工具注意事项

-- 使用 load ... insert into ... 将新的表数据添加至现有表;
-- 使用 load ... replace into ... 将删除原有数据,然后写入新数据到表;
db2 load from d:\output\objmaint.del of del modified by chardel! replace into audit.objmaint nonrecoverable

6、归档活动审计日志(可选)

系统管理员可以使用 db2audit 工具来归档实例和数据库审计日志以及从任一类型的已归档日志中抽取审计数据。

安全性管理员或安全性管理员已向其授予对审计例程的 EXECUTE 特权的用户,可以通过运行 SYSPROC.AUDIT_ARCHIVE 存储过程来归档活动审计日志。要从日志中抽取数据并将该数据装入到定界文件中,他们可以使用 SYSPROC.AUDIT_DELIM_EXTRACT 存储过程。

以下是使用审计例程来归档和抽取审计日志的步骤:

6.1、归档日志

调度应用程序以使用存储过程 SYSPROC.AUDIT_ARCHIVE 来执行活动审计日志的常规归档。

-- 归档日志
CALL SYSPROC.AUDIT_ARCHIVE(NULL, -2 );

6.2、查看日志列表

确定感兴趣的已归档日志文件。使用 SYSPROC.AUDIT_LIST_LOGS 表函数来列示所有已归档审计日志。

-- 查看日志列表
SELECT * FROM TABLE(SYSPROC.AUDIT_LIST_LOGS(''))

6.3、抽取审计信息到定界文件

将文件名作为参数传递给 SYSPROC.AUDIT_DELIM_EXTRACT 存储过程以从日志中抽取数据并将它们装入到定界文件中。

-- 抽取审计信息
CALL SYSPROC.AUDIT_DELIM_EXTRACT('', 'd:\output', '',  'db2audit.db.TEST.log.0.20200413222128', '' ) ;

6.4、将文件写入数据库

将审计数据装入到 DB2 数据库表中以进行分析。

此步骤只能使用load命令进行。

不需要立即将已归档日志文件装入到表中以进行分析;可以保存它们以在将来分析。例如,可能只需要在进行公司审计时查看这些文件。

如果归档期间出现问题(例如,用完归档路径中的磁盘空间,或者归档路径不存在),那么归档进程将失败并且在审计日志数据路径中生成文件扩展名为 .bk 的临时日志文件,例如,db2audit.instance.log.0.20070508172043640941.bk。在解决问题后(通过在归档路径中分配足够多的磁盘空间,或者通过创建归档路径),必须将此临时日志移至归档路径。然后,可以像对待成功归档的日志一样对待该日志。

7、Linux定时任务

7.1、用途

用于定时将db2数据库审计日志写入数据库。

7.2、审计流程

  1. 清理过期审计文件
  2. 审计日志刷新
  3. 审计日志归档
  4. 将审计日志转换为定界符文本
  5. 移动审计归档日志到备份目录
  6. 审计日志入库

7.3、定时任务脚本

#!/bin/sh
#----------------------------------------
# db2数据库审计入库脚本
#
# 脚本名称: audit_to_db.sh
# 执行权限: chmod 744 audit_to_db.sh
# 计划任务:crontab -e
# 测试用
# */2 * * * * nohup sh /db2backup/auditlog/script/audit_to_db.sh &
# 正式用
# 0 */4 * * * nohup sh /db2backup/auditlog/script/audit_to_db.sh &
#
# 目录结构:
# /db2backup/auditlog 审计日志目录
# /db2backup/auditlog/archlog 默认归档日志存储在上一级目录,经过提取存储到数据库后,通过脚本转储到归档目录
# /db2backup/auditlog/output 审计日志提取目录,存储转换为定界符文件的目录
# /db2backup/auditlog/script 审计日志脚本目录
#----------------------------------------
# 数据库名称
db_name=TEST
# 根目录
base_path=/db2backup/auditlog
# 审计归档目录
arch_path=$base_path/archlog
# 审计日志提取目录
output_path=$base_path/output
# 审计日志脚本目录
script_path=$base_path/script
# 审计日志入库记录
arch_log=$script_path/db2audit_arch.log # 设置环境变量
if [ -f ${HOME}/sqllib/db2profile ]; then. ${HOME}/sqllib/db2profile
fi# 函数:输出日志
function logmsg(){echo "`date +'%Y-%m-%d %H:%M:%S'` $1" >>  $arch_log
}# 函数:检测异常并输出日志
function logCheck(){code=$?if [ $code -gt 0 ]; thenlogmsg "[error] code=$code $1."exit 1elselogmsg "[success] $1."fi
}logmsg "-------------------------------"
logmsg "开始db2审计"# 清理临时文件
rm -f $output_path/*
logCheck "清理临时定界符文件"
find $arch_path -mtime +30 -name "db2audit.*" | xargs rm -f
logCheck "清理审计归档文件"# 审计刷新
db2audit flush
logCheck "审计日志刷新"# 审计日志归档
db2audit archive
logCheck "实例审计日志归档"
db2audit archive database $db_name
logCheck "数据库审计日志归档"# 遍历实例审计归档日志
for f in `ls $base_path | grep db2audit.instance.log.0.`
do  # 审计归档日志移动mv $base_path/$f $arch_pathlogCheck "实例审计归档日志移动"
done  # 遍历数据库审计归档日志
for f in `ls $base_path | grep db2audit.db.$db_name.log.0.`
do  # 审计日志提取db2audit extract delasc delimiter ! to $output_path from files $flogCheck "数据库审计日志提取"# 审计归档日志移动mv $base_path/$f $arch_pathlogCheck "数据库审计归档日志移动"
done  # 审计日志入库
db2 connect to $db_name
db2 load from $output_path/validate.del of del modified by chardel! insert into audit.validate nonrecoverable
logCheck "审计日志入库:validate.del"
db2 load from $output_path/objmaint.del of del modified by chardel! insert into audit.objmaint nonrecoverable
logCheck "审计日志入库:objmaint.del"logmsg "-------------------------------"

8、创建测试库

-- 基于windows环境测试
-- 创建测试库
CREATE DATABASE test;
db2 connect to test
-- 启用归档日志
db2 update db cfg using logarchmeth1 disk:d:/
db2 update db cfg using trackmod yes
db2 update db cfg using locktimeout 20
-- 重启数据库
db2stop force
db2start-- 备份数据库
db2 backup db test to d:\-- 创建测试表
drop table t1;
CREATE TABLE t1(ID       INTEGER,NAME     VARCHAR (10),BIRTHDAY DATE);
INSERT INTO t1(ID,NAME) VALUES(1,'n1');
INSERT INTO t1(ID,NAME) VALUES(2,'n2');SELECT * FROM t1;
DELETE FROM t1;

参考

https://www.ibm.com/support/knowledgecenter/zh/SSEPGG_10.5.0/com.ibm.db2.luw.admin.sec.doc/doc/c0050525.html
https://www.ibm.com/support/knowledgecenter/zh/SSEPGG_10.5.0/com.ibm.db2.luw.admin.sec.doc/doc/c0052328.html
https://www.ibm.com/support/knowledgecenter/zh/SSEPGG_10.5.0/com.ibm.db2.luw.admin.sec.doc/doc/t0011542.html
https://www.ibm.com/support/knowledgecenter/en/SSEPGG_10.5.0/com.ibm.db2.luw.admin.cmd.doc/doc/r0002072.html
https://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0603wasserman/
https://blog.csdn.net/liujinwei2005/article/details/8640352

db2 10.5 数据库审计相关推荐

  1. db2 10.1 数据库文件介绍

    db2数据库文件介绍一.全局分区目录相关文件(Partition-global directory) 全局分区目录一般为 your_instance/NODExxxx/SQLxxxxx1.全局物理写死 ...

  2. 使用IBM InfoSphere Guardium监视和审计IBM DB2 for i数据库活动

    总览 InfoSphere Guardium是企业信息数据库审核和保护解决方案,可帮助企业跨各种关系和非关系数据源(例如Oracle,Teradata,IMS,VSAM,Microsoft Share ...

  3. win10 安装db2 10.1 并使用DBserver连接db2数据库

    系统:win10 64 专业版 db2下载:链接:https://pan.baidu.com/s/1IiAUdRUTIDcGAew7WbVTHQ  提取码:wzpg dbServer 链接:https ...

  4. 无锡市公安局ETL/BI/数据复制/数据库审计采购要求

    三.项目技术要求和有关说明 本项目为无锡市公安局的社会信息采集汇聚(二)数据管理服务平台一期,项目具体要求如下,投标人须提供满足以下要求的产品和服务:   (一) 技术要求: 1.项目概述 随着全省公 ...

  5. 数据库审计服务器性能要求,数据库审计技术指标资质要求-.docx

    数据库审计技术指标 资质要求: 提供自主知识产权证明文件(软件著作权.软件产品登记). 提供与需求单位同类HIS系统的三甲医院数据库审计的销售案例. 中标供应商必须在成交结果公示后按照用户要求提供为期 ...

  6. oracle数据库视图存放位置,oracle数据库审计

    一.何谓数据库审计? 数据库审计,就是对数据库的活动做跟踪记录,主要包括数据库连接,SQL语句执行,数据库对象访问这些方面的跟踪记录. 二.审记记录的存储方式 分为两种:一种是存储在操作系统文件中,一 ...

  7. 绿盟数据库审计系统hive_数据库审计系统

    产品简介: 中安威士数据库审计系统(简称VS-AD),是由中安威士(北京)科技有限公司开发的具有完全自主知识产权的数据安全防护产品.该系统通过监控数据库的多重状态和通信内容,不仅能准确评估数据库所面临 ...

  8. db2 10.5 64位 linux,db2 10.5 使用列式存储

    环境: SUSE11 SP2,  DB2 10.5 设置db2set DB2_WORKLOAD=ANALYTIC 创建表t1 create table t1( empno char(6), first ...

  9. mssql 数据库审计账户_SQLServer数据库审计功能入门之SQL Server审核 (SQL Server Audit)...

    本文主要向大家介绍了SQLServer数据库审计功能入门之SQL Server审核,通过具体的内容向大家展现,希望对大家学习SQLServer数据库有所帮助. 介绍 Audit是SQL Server ...

最新文章

  1. 【转】android电池(四):电池 电量计(MAX17040)驱动分析篇
  2. 《Offer一箩筐》2W字总结面试套路14问——不给例子的教程都是耍流氓!!
  3. 有比 ReadWriteLock更快的锁?
  4. 搭载「光线追踪」技术的次时代主机会有怎样的画面表现?
  5. 数学函数(C/C++)
  6. oracle报错00838,oracle11g的内存分配不当,导致的错误ORA-01034,ORA-00838,ORA-27101
  7. (递推1)兔子繁殖问题
  8. mysql死锁语句_记一次神奇的Mysql死锁排查
  9. 教你在 CentOS 8上安装GCC实现开发编译功能
  10. java 包依赖_java命令执行带jar包依赖的文件执行不了
  11. java详细安装教程(含安装包+详细安装视频)
  12. win32API中文参考手册
  13. 阿里语音识别看这一篇就够了
  14. 《社会动物——爱、性格和成就的潜在根源》读后感及摘录(2)
  15. provide和inject的用法
  16. html格式错误检测,HTML格式错误
  17. R语言如何从外部读取数据到R中
  18. 【MySQL】查看支持的字符集show character set;
  19. BZOJ4355: Play with sequence
  20. 大丰银行:银行IPO被否第一家,宣告商业银行IPO的审核标准发生了重大变化

热门文章

  1. 羊皮卷的故事-第八章-羊皮卷之一
  2. 中外合作计算机专业的大学排名,美国计算机专业大学排名
  3. 校园跑腿小程序毕业设计毕设作品开题报告答辩PPT
  4. 开发的阅读文档来源灵感
  5. Spacy en_core_web_sm
  6. 执着的数字思想者——Pascal之父(转贴)
  7. 二叉树的存储方式【顺序储存(数组)、链式存储、邻接表存储等】
  8. Spring中的各种Utils(四):ClassUtils详解
  9. 霍金:移民太空是避免世界末日最好方式
  10. 技术内部创新的类型和要素