AUDIT

说明

进行审计配置,把该审计配置记录的状态设为开启。

语法

audit ::=

参数

system_priv

某一权限,具体支持审计的权限,请参见 配置权限审计

DBA

对DBA角色包含的所有权限进行审计。

在神通数据库中,DBA角色包含除了开启/关闭审计、进行审计配置、查看/清除审计配置,查看审计踪迹外的所有权限, 所以当指定此关键字时,会对除这些权限以外的所有权限进行审计,这些权限参见 statement_opt 中的说明。

ALL

  • 在权限审计中,表示所有权限(即对 system_priv 中所有的权限进行审计)
  • 在语句审计中,表示所有的可审计SQL语句
  • 在对象审计中,表示本类对象上所有的可审计操作

WHENEVER [NOT] SUCCESSFUL

表示审计模式,是可选项。

  • 当指定 WHENEVER SUCCESSFUL 时,表示只审计执行成功的权限语句
  • 当指定 WHENEVER NOT SUCCESSFUL 时,表示只审计执行失败的权限语句
  • 当不指定此选项时,表示对执行成功和执行失败的权限语句都要审计

PRIVILEGES

指定 PRIVILEGES 关键字时,表示本审计配置为权限审计配置。 本审计配置记录将出现在权限审计配置视图 V_SYS_PRIVAUDCONF 中, 根据本审计配置记录生成的审计踪迹将出现在权限审计踪迹视图 V_SYS_PRIVAUDTRAIL 中。

statement_opt

表示要审计的某一SQL语句,具体支持的审计的语句,请参见 配置语句审计

BY user [, ... ]

指定该选项时,表示审计指定用户 user (可以是多个用户的列表,每个用户间以逗号分隔) 执行的由 statement_opt (或 ALL)指定的操作。

当不指定该选项时,表示要审计所有用户执行的由 statement_opt (或 ALL)指定的操作。

object_opt

表示要审计指定对象上的操作。 object_optstatement_opt 的一个子集, 不同对象上的操作也有所不同 。 在神通数据库中,提供审计支持的各类对象及它们上面的可审计操作, 详情请参见 配置对象审计

DEFAULT

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

一旦审计功能开启,该关键字生效,系统会为以后创建的所有对象执行本条审计配置指定的审计。 比如执行 AUDIT INSERT ON DEFAULT ,那么当系统每创建一张表、视图后, 就会为之生成一条相应的审计配置记录,新记录中的操作 object_opt 、审计模式同本条审计配置记录相同, 当执行 START AUDIT 后,当执行对表的插入后,就会为本次插入生成审计踪迹。

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

ON [ schema. ] object

表示要对在指定的对象进行的 object_opt 指定操作进行审计。

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

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

注解

只有系统安全员才可以进行审计配置。

审计配置表 SYS_AUDCONF 中有一列 BISON,表示本审计配置记录是否为开启。 当其值为 true 时,表示本审计配置记录是开启的,为 false 表示本审计配置记录是关闭的。

刚执行完 AUDIT 命令进行审计配置后,新生成的审计配置记录的状态为 true , 当通过 NOAUDIT 取消一条审计配置记录后,其 BISON 状态由 true 变为 false 。

示例

-- 审计用户的成功修改

AUDIT PRIVILEGES ALTER USER WHENEVER SUCCESSFUL;

-- 查看权限审计配置视图:
SELECT *FROM V_SYS_PRIVAUDCONF;

-- 结果如下:
-------------|+-------------------+----------+
CONFID | PRIV_NAME | MODE |
--------------+-------------------+----------+
34506 | ALTER USER | s |
-------------+-------------------+----------+
-- 审计所有的权限
AUDIT PRIVILEGES ALL;

-- 查看权限审计配置视图:

SELECT *FROM V_SYS_PRIVAUDCONF;

-- 结果如下:
CONFID | PRIV_NAME | MODE
------------+-------------------------+---------
34506 | ALTER SCHEMA | a
34497 | ALTER USER | a
34500 | CREATE ROLE | a
34505 | CREATE SCHEMA | a
34503 | CREATE USER | a
34501 | DROP ROLE | a
34507 | DROP SCHEMA | a
34504 | DROP USER | a
34498 | GRANT ROLE | a
34499 | REVOKE ROLE | a
(10 行)

-- 审计所有成功的授权语句
AUDIT GRANT WHENEVER SUCCESSFUL;

-- 查看语句审计配置视图:
SELECT *FROM V_SYS_STMTAUDCONF;

-- 结果如下:
------------+------------------------+----------+
CONFID | STMT_NAME | MODE |
-----------+------------------------+----------+
34508 | GRANT | a |
-----------+-----------------------+-----------+
-- 审计所有可审计的语句
AUDIT ALL;

-- 同样可以运行SELECT * FROM
V_SYS_STMTAUDCONF;查看语句审计配置视图查看审计配置结果。

-- 审计用户HU执行的删除索引操作
AUDIT DROP INDEX BY HU;

-- 查看用户审计配置视图:
SELECT * FROM V_SYS_USRAUDCONF;

-- 结果如下:
+-------------------+---------------------+----------+
| USER_NAME | STMT_NAME | MODE |
+-------------------+---------------------+----------+
| HU | DROP INDEX | a |
+-------------------+---------------------+----------+
(一行)

-- 审计所有用户对表TAB1的不成功删除操作
AUDIT DELETE ON TAB1 WHENEVER NOT SUCCESSFUL;

-- 查看对象审计配置视图:
SELECT * FROM V_SYS_OBJAUDCONF;

-- 结果如下:
+----------------+---------------------+-----------------------+----------------+------------+----------+
| OBJ_NAME | OBJ_SCHEMA | OBJ_DATABASE | OBJ_TYPE | ACTION |
MODE |
+----------------+---------------------+-----------------------+----------------+------------+----------+
| TAB1 | PUBLIC | FENIX | r | DELETE | a |
+----------------+---------------------+-----------------------+----------------+------------+----------+
(一行)

-- 为系统以后创建的对象建立默认SELECT审计规则
AUDIT SELECT ON DEFAULT;

-- 当执行完该语句后,由于目前还没有新建的对象,所以此审计配置记录不出现在对象审计配置视图中,而是出现在审计配置表SYS_AUDCONF中。查看审计配置表:SELECT
* FROM SYS_AUDCONF;结果如下:
+-----------+---------------+-----------+------------+----------+
| HTGTID | STRNAME | CTYPE | CMODE | BISON |
+-----------+---------------+-----------+------------+----------+
| 0 | SELECT | 8 | a | true |
+-----------+---------------+-----------+------------+----------+
(一行)

-- 其HTGTID为0且CTYPE为8,表示对所有后续新建对象都执行此审计配置指定的SELECT审计。
-- 配置完默认审计规则后,当系统每创建一个新的对象(表、视图或序列)时,审计配置表中就会为该新建对象在审计配置表中生成一条审计配置,这些针对新建对象的审计配置会出现在对象审计配置视图中。如假设配置后上述默认SELECT审计规则后,系统中有用户FLATER创建了表FTAB,则查看对象审计配置视图:SELECT
* FROM V_SYS_OBJAUDCONF;

-- 结果如下:
+----------------+---------------------+-----------------------+----------------+------------+----------+
| OBJ_NAME | OBJ_SCHEMA | OBJ_DATABASE | OBJ_TYPE | ACTION |
MODE |
+----------------+---------------------+-----------------------+----------------+------------+----------+
| FTAB | PUBLIC | FENIX | r | SELECT | a |
+----------------+---------------------+-----------------------+----------------+------------+----------+

(一行)

-- 再查看审计配置表:SELECT * FROM SYS_AUDCONF;
-- 结果如下:
+------------+--------------+-----------+------------+----------+
| HTGTID | STRNAME | CTYPE | CMODE | BISON |
+------------+--------------+-----------+------------+----------+
| 0 | SELECT | 8 | a | true |
| 33090 | SELECT | 8 | a | true |
+------------+--------------+-----------+------------+----------+
(2 行)

-- 可以看出,除了默认的SELECT审计配置外,还有一条对唯一标识为33090的对象的SELECT审计配置,这里33090就是新建的表FTAB的唯一标识。