Oracle基于系统级触发器的审计功能

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于系统级触发器的审计功能

从Oracle8i开始,Oracle引入了特殊的触发器,这些触发器并不是和特殊的DML事件相关联的(DML事件,如,INSERT,UPDATE和DELETE)。这些系统级别的触发器包括:

●数据库启动/关闭触发器

●DDL触发器

●最终用户登陆/注销触发器

●系统错误触发器

●DDL触发器

使用这些触发器,可以对数据库发生的一些重要事件进行审计。

当触发事件发生的时候,可以启动触发器。在触发器中,可以通过DML操作将审计操作记录在日志表中,或者通过抛出一个EXCEPTION来制止某种操作。在触发器中,可以通过使用系统事件函数(Event Attribute Functions)来获取一些信息。以下是系统事件函数的详细情况:

可以获得一些和用户相关的信息,比如:

SELECT sys_context('USERENV','TERMINAL') FROM DUAL;

用户环境的取值包括:

●TERMINAL:客户端操作系统终端的名称

●LANGUAGE:NLS_LANG的值

●LANG :ISO字符集的名称.

●SESSIONID:SESSION的ID

●INSTANCE:实例的ID

●ISDBA:是否具有DBA权限

●CLIENT_INFO:64字节的用户信息,可以用DBMS_APPLICATION_INFO设置的

值:

●NLS_TERRITORY :当前SESSION的 territory

●NLS_CURRENCY:当前SESSION的货币符

●NLS_CALENDAR:当前SESSION的历法

●NLS_DATE_FORMAT:当前SESSION的日期格式

●NLS_DATE_LANGUAGE :显示日期的语言

●NLS_SORT:排序方式(BINARY 或者linguistic)

●CURRENT_USER:当前SESSION拥有权限的用户的名称(比如说当前SESSION

是SYS,但是正在执行system.myproc,那么current_user就是system)

●CURRENT_USERID :当前SESSION拥有的权限的用户的ID

●SESSION_USER:session所属的用户名

●SESSION_USERID:当前SESSION所属的用户id

●CURRENT_SCHEMA:当前SESSION缺省的SCHEMA名称,可以用SESSION SET

CURRENT_SCHEMA 语句修改.

●CURRENT_SCHEMAID :当前SESSION缺省的SCHEMA的ID

●PROXY_USER:打开当前SESSION的用户的名称

●PROXY_USERID:打开当前SESSION的用户的ID

●DB_DOMAIN:当前数据库的DOMAIN

●DB_NAME:当前数据库的名称

●HOST:客户端的主机名称

●OS_USER:客户端的操作系统用户名

●EXTERNAL_NAME:用户的外部名称。对于SSL用户,使用v.503协议,返回的

值是证书中的DN

●IP_ADDRESS:客户端的IP地址

●NETWORK_PROTOCOL:连接串中的PROTOCOL=protocol指明的网络协议

●BG_JOB_ID :如果当前的SESSION是由ORACLE后台进程启动的,那么返回

JOB_ID,否则返回空值

●FG_JOB_ID:如果当前SESSION是由ORACLE客户端进程启动的一个JOB,那么

返回JOB_ID,否则返回空值

●AUTHENTICATION_TYPE:返回数据库鉴权的方法,返回值包括:

●DATABASE: 使用数据库的用户名口令

●OS:使用操作系统外部用户鉴权

●NETWORK:网络鉴权

●PROXY:OCI的代理连接鉴权

●AUTHENTICATION_DATA:使用X.503证书鉴权的时候,返回HEX2的证书

1.5.1 oracle 8i新增的数据库事件触发器

从ORALCE 8i开始,用户可以通过常见系统级触发器来追踪一些系统事件。通过这些触发器,用户可以进行一些操作,包括审计、把一些对象PIN入共享池、进行一些维护操作等。以下是一些系统级触发器的类型:

可以用来进行一些数据库启动后和关闭前的前处理和后处理。比如在数据库启动的时候把一些PL/SQL对象固定倒内存中。Servererror触发器可以用于记录某些重要的错误信息,以便于跟踪系统,发现故障。在使用系统级触发器前,首先要确认系统参数

_system_trig_enabled是否设置为TRUE。

1.5.2 DDL触发器概述

通过DDL触发器可以记录特定的DDL操作。DDL触发器是从ORACLE 8i开始具有的触发器类型。在ORACLE 9i中,DDL触发器得到了加强。DDL触发器的触发事件���括:

●BEFORE / AFTER ALTER

●BEFORE / AFTER CREATE

●BEFORE / AFTER DROP

●BEFORE / AFTER RENAME

●BEFORE / AFTER ANALYZE

●BEFORE / AFTER ASSOCIATE STATISTICS

●BEFORE / AFTER DISASSOCIATE STATISTICS

●BEFORE / AFTER AUDIT

●BEFORE / AFTER NOAUDIT

●BEFORE / AFTER COMMENT

●BEFORE / AFTER DDL

●BEFORE / AFTER GRANT

●BEFORE / AFTER REVOKE

●BEFORE / AFTER TRUNCATE

●AFTER SUSPEND

要创建DDL触发器,需要一定的系统权限,这些权限包括:

●create trigger

●create any trigger

●administer database trigger

●alter any trigger

●drop any trigger

相关文档
最新文档