配置对象审计

说明

对象审计表示对所有用户在特定对象上的特定操作进行审计, 如审计对表 tab1 上的插入操作可以执行执行 AUDIT INSERT ON tab1。

语法

  • 配置对象审计 (需要以系统审计管理员身份执行)

    audit_object ::=

  • 取消对象审计 (需要以系统审计管理员身份执行)

    noaudit_object ::=

参数

object_opt

表示要审计指定对象上的操作。它是 statement_opt 操作的一个子集(statement_opt 参见"配置语句审计"), 不同对象上的操作也有所不同,在神通数据库中,提供审计支持的各类对象及它们上面的可审计操作见下表。

对象及操作表

可审计操作 表(TABLE) 视图(VIEW) 序列(SEQUENCE) 函数(FUNCTION) 存储过程(PROCEDURE) 包(PACKAGE)
SELECT  
INSERT        
UPDATE        
DELETE        
ALTER          
COMMENT      
GRANT      
REVOKE      
TRUNCATE          
EXEC        
CALL        
BULK        

schema

表示要审计的对象所有的模式名;不指定该项时其值为进行审计配置时的当前默认模式名。

object

表示要审计的对象的名称,这里的对象包括表、视图和序列。

ALL

表示指定对象类型上的所有可审计操作的集合。

DEFAULT

默认审计规则,表示为系统以后创建的所有对象建立和本条审计配置记录同样的审计配置。

一旦审计功能开启,该关键字生效,系统会为以后创建的所有对象执行本条审计配置指定的审计。

如执行 AUDIT INSERT ON DEFAULT,那么当系统每创建一张表、视图后,就会为之生成一条相应的审计配置记录, 新记录中的操作 object_opt 和审计模式和本条审计配置记录相同, 当执行 START AUDIT ,再执行对表的插入后,就会为本次插入生成审计踪迹。

需要注意的是当执行 NOAUDIT xxx DEFAULT 时,只会使系统停止为新建的对象执行原默认审计规则指定的审计, 而原来因默认审计规则建立的新的审计配置记录不会失效。

相关视图

神通数据库中提供了对象审计配置视图 V_SYS_OBJAUDCONF,通过它可以查看当前对象审计的配置情况。

该视图各字段意义如下:

列名 类型 描述 备注
CONFID OID 配置ID(系统分配)  
OBJ_NAME Name 待审计对象名  
OBJ_SCHEMA Name 待审计对象所属模式  
OBJ_DATABASE Name 待审计对象所属数据库 即当前数据库名
OBJ_TYPE Char 对象类型 'r' 表示表(table) 'v' 表示视图(view) 'S' 表示序列(sequence)
ACTION Name 审计类型 取值参见上文 object_opt 参数介绍
MODE Char 审计模式 's'表示只审计执行成功的 'f'表示只审计执行失败 'a'表示两者都审计

示例

示例1: 审计指定表的删除操作

--  连接 sysdba 用户
CONNECT sysdba/szoscar55;
drop table t1;
--  创建表
create table t1(a int);

--  连接 sysaudit 用户
CONNECT sysaudit/szoscar55;

--  开启审计
start audit;
clean audit configuration;


--  审计所有用户对表 SYSDBA.T1 的删除操作
AUDIT DELETE ON SYSDBA.T1;

--  查看对象审计配置视图    
SELECT OBJ_NAME, OBJ_SCHEMA, OBJ_TYPE, ACTION, MODE  FROM V_SYS_OBJAUDCONF;
OBJ_NAME(name)      |OBJ_SCHEMA(name)      |OBJ_TYPE("CHAR")      |ACTION(name)      |MODE("CHAR")      |
----------------------------------------------------------------------------------------------------
T1                  |SYSDBA                |r                     |DELETE            |a                 |
总数目:1

--  关闭审计
drop audit;

--  删除审计配置
clean audit configuration;

--  连接 sysdba 用户
CONNECT sysdba/szoscar55;

--  删除表
drop table t1;

示例2: 审计指定表的 BULK 操作

--  连接 sysdba 用户
CONNECT sysdba/szoscar55;
drop table t1;
--  创建表
create table t1(a int, b int);

--  连接 sysaudit 用户
CONNECT sysaudit/szoscar55;

--  开启审计
start audit;
clean audit configuration;


-- 审计所有用户对表 SYSDBA.T1 的删除操作
AUDIT BULK ON SYSDBA.T1;

--  查看对象审计配置表
SELECT *  FROM sys_audconf;
STRNAME(name)      |CONFID(OID)      |AUDTORID(int)      |HTGTID(int)      |CTYPE("CHAR")      |CMODE("CHAR")      |BISON(boolean)      |ATTR(INT2VECTOR)      |
--------------------------------------------------------------------------------------------------------------------------------------------------------
BULK               |35000            |4                  |34999            |8                  |a                  |true                |                      |
总数目:1

--  BULK还支持列审计
-- 审计所有用户对表 SYSDBA.T1 上 a 列进行的BULK操作
-- 支持列审计的操作还有SELECT/INSERT/UPDATE等
-- 需要注意的是,同一对象的列审计不能和一般对象审计并存,需要将之前相同对象的审计配置信息清除。
clean audit configuration;

AUDIT BULK ON SYSDBA.T1(a);

--  查看对象审计配置表  , ATTR 表示被审计列的列号序列 
SELECT *  FROM sys_audconf;
STRNAME(name)      |CONFID(OID)      |AUDTORID(int)      |HTGTID(int)      |CTYPE("CHAR")      |CMODE("CHAR")      |BISON(boolean)      |ATTR(INT2VECTOR)      |
--------------------------------------------------------------------------------------------------------------------------------------------------------
BULK               |35001            |4                  |34999            |8                  |a                  |true                |1                     |
总数目:1

--  关闭审计
drop audit;

--  删除审计配置
clean audit configuration;

--  连接 sysdba 用户
CONNECT sysdba/szoscar55;

--  删除表
drop table t1;

示例3: 审计全部 SELECT 操作

--  连接 sysaudit 用户
CONNECT sysaudit/szoscar55;

--  开启审计
start audit;
clean audit configuration;


--  对系统以后创建的所有表、视图、序列都默认配置SELECT审计    
AUDIT SELECT ON DEFAULT;
      
--  当执行完该语句后,由于目前还没有新建的对象,    
--  所以此审计配置记录不出现在对象审计配置视图中,而是出现在审计配置表SYS_AUDCONF中
--  查看审计配置表 
--  其 HTGTID 为 0 且 CTYPE 为 8 ,表示对所有后续新建对象都执行此审计配置指定的SELECT审计   
SELECT STRNAME, AUDTORID, HTGTID, CTYPE, CMODE, BISON FROM SYS_AUDCONF;
STRNAME(name)      |AUDTORID(int)      |HTGTID(int)      |CTYPE("CHAR")      |CMODE("CHAR")      |BISON(boolean)      |
-----------------------------------------------------------------------------------------------------------------
SELECT             |4                  |0                |8                  |a                  |true                |
总数目:1
  
--  配置完默认审计规则后,当系统每创建一个新的对象(表、视图或序列)时,
--  连接 sysdba 用户
CONNECT sysdba/szoscar55;

--  创建表
create table t1(a int);


--  审计配置表中就会为该新建对象在审计配置表中生成一条审计配置,
--  这些针对新建对象的审计配置会出现在对象审计配置视图中。
--  连接 sysaudit 用户
CONNECT sysaudit/szoscar55;

--  查看对象审计配置视图
SELECT OBJ_NAME, OBJ_SCHEMA,  OBJ_TYPE, ACTION, MODE FROM V_SYS_OBJAUDCONF;
OBJ_NAME(name)      |OBJ_SCHEMA(name)      |OBJ_TYPE("CHAR")      |ACTION(name)      |MODE("CHAR")      |
----------------------------------------------------------------------------------------------------
T1                  |SYSDBA                |r                     |SELECT            |a                 |
总数目:1


--  再查看审计配置表
--  除了默认的SELECT审计配置外,还有一条为新建对象的SELECT审计配置
SELECT STRNAME, AUDTORID, HTGTID, CTYPE, CMODE, BISON FROM SYS_AUDCONF;   
STRNAME(name)      |AUDTORID(int)      |HTGTID(int)      |CTYPE("CHAR")      |CMODE("CHAR")      |BISON(boolean)      |
-----------------------------------------------------------------------------------------------------------------
SELECT             |4                  |0                |8                  |a                  |true                |
-----------------------------------------------------------------------------------------------------------------
SELECT             |4                  |35003            |8                  |a                  |true                |
总数目:2

--  关闭审计
drop audit;

--  删除审计配置
clean audit configuration;

--  连接 sysdba 用户
CONNECT sysdba/szoscar55;

--  删除表
drop table t1;