讲解Oracle数据库提供的多种安全性措施(1)(2)
三、Oracle的审计技术
在Oracle中,审计分为用户级审计和系统级审计。用户级审计是任何Oracle用户可设置的审计,主要是用户针对自己创建的数据库表或视图进行审计,记录所有用户对这些表或视图的一切成功和(或)不成功的访问要求以及各种类型的SQL操作。
系统级审计只能由DBA设置,用以监测成功或失败的登录要求、监测GRANT和REVOKE操作以及其他数据库级权限下的操作。
Oracle的审计功能很灵活,是否使用审计,对哪些表进行审计,对哪些操作进行审计等都可以由用户选择。为此,Oracle提供了AUDIT语句设置审计功能,NOAUDIT语句取消审计功能。设置审计时,可以详细指定对哪些SQL操作进行审计。例如,
对修改SC表结构或数据的操作进行审计可使用如下语句:
AUDIE ALTER,UPDATE ON SC;
取消对SC表的一切审计可使用如下语句:
NOAUDIT ALL ON SC;
在Oracle中,审计设置以及审计内容均存放在数据字典中。其中审计设置记录在数据字典表SYS.TABLES中,审计内容记录在数据字典表SYS.AUDIT_TRAIL中。
四、用户定义的安全性措施
除了系统级的安全性措施外,Oracle还允许用户用数据库触发器定义特殊的更复杂的用户级安全措施。例如,规定只能在工作时间内更新Student表,可以定义如下触发器,其中sysdate为系统当前时间: CREATE OR REPLACE TRIGGER secure_student
BEFORE INSERT OR UPDATE OR DELETE
ON student
BEGIN
IF (TO_CHAR (SYSDATE, 'DY') IN ('SAT', 'SUN'))
OR (TO_NUMBER (SYSDATE, 'HH24') NOT BETWEEN 8 AND 17)
THEN
raise_application_error
(-20506,
'You may only change data during normal business hours.'
);
END IF;
END;
触发器一经定义便存放在数据字典中。用户每次对Student表执行INSERT,UPDATE或DELETE操作时都会自动触发该触发器,由系统检查当时的系统时间,如果是周六或周日,或者不是8点至17点,系统会拒绝执行用户的更新操作,并提示出错信息。
类似的,用户还可以利用触发器进一步细化审计规则,使审计操作的粒度更细。
综上所述,Oracle提供了多种安全性措施,提供了多级安全性检查,其安全性机制与操作系统的安全机制彼此独立,数据字典在Oracle的安全性授权和检查以及审计技术中起着重要作用。安全技术是在不断更新着,一代比一代技术更为强大,如果大家有更好的安全维护方法,随时欢迎大家与我分享。



