首页 > Linux操作系统 > Linux操作系统 > ORACLE AUDIT
打开数据库审计功能:
alter system set audit_sys_operations=true scope=spfile;
alter system set audit_trail=db scope=spfile;
重启数据库
SQL> show parameter audit_
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
audit_sys_operations boolean TRUE
audit_trail string DB
transaction_auditing boolean TRUE
audit_sys_operations审计SYSDBA的活动。默认值是false。相关的审计信息不会记录在aud$中,因为有可能此时数据库还未启动,只能记录在操作系统层面的文件中。默认为false,不意味着没有审计信息,像conn / as sysdba这样的操作仍然会被记录。audit_file_dest参数指定的审计信息的文件夹。
将audit_sys_operations设置成true后,那么做为sysdba或sysoper连接数据库的用户所发布的每条语句都会被写入操作系统的审计中,从而能够给出DBA所进行操作的完整记录。
如果是windows平台,audti trail会记录在windows的事件管理中,假如是linux/unix平台则会记录在audit_file_dest参数指定的文件中。
1.对用户登录的审计:
① 开启审计:
使用audit开启审计,使用noaudit取消审计。如audit session whenever successful对应的取消审计语句为noaudit session whenever successful;
SQL> audit session whenever successful;
Audit succeeded
② 通过查询审计相关记录视图
select * from DBA_AUDIT_SESSION;
Timestamp表示登录时间
Logoff_time表示退出登录时间
③ 通过SYS.AUD$可以查到相关登录的IP。(列COMMENT$TEXT)
select * from SYS.AUD$;
Authenticated by: DATABASE; Client address: (ADDRESS=(PROTOCOL=tcp)(HOST=172.16.4.174)(PORT=1835))
2.密码规则审计
密码规则的审计需要新建profile文件,并指定有相关需求的用户。
另外需要创建存储过程,并修改dba_profiles参数PASSWORD_VERIFY_FUNCTION,默认为NULL
① 存储过程的创建可参考$ORACLE_HOME/RDBMS/ADMIN/utlpwdmg.sql,(附录)
② 如果需要将密码修改结果保存到记录表中,在存储过程中(文件末RETURN(TRUE);语句前)添加以下语句
INSERT INTO passwd_changed VALUES(username,old_password,password);
并且新建记录表
SQL> create table passwd_changed
(
user_name varchar2(20) ,
old_passwd varchar2(100) ,
new_passwd varchar2(100)
);
③ 修改用户profile参数,使用密码规则限制存储过程
SQL> alter profile safty_profile limit PASSWORD_VERIFY_FUNCTION verify_function;
或者新建profile
SQL> create profile safty_profile limit password_verify_function verify_function;
其余profile参数会以默认设置存在。
④ 指定有安全需求用户的profile为safty_profile
SQL> alter user yeyj profile safty_profile;
尝试修改用户密码:
密码不符合强度规则时会报错,并修改不成功。
SQL> alter user yeyj identified by yeyj;
alter user yeyj identified by yeyj
ORA-28003: 指定口令的口令验证失败
ORA-20001: Password same as or similar to user
密码符合规则则修改成功
SQL> alter user yeyj identified by yeyj_1988;
User altered
SQL> select * from passwd_changed;
USER_NAME OLD_PASSWD NEW_PASSWD
-------------------- ----------------------------------------------------
YEYJ YEYJ_1988
尝试创建用户,但需注意创建语句中需指定profile:
create user new identified by password profile safty_profile
同样不符合密码强度规则会报错:
SQL> create user yeyj2 identified by yeyj profile safty_profile;
create user yeyj2 identified by yeyj
ORA-28003: 指定口令的口令验证失败
ORA-20003: Password should contain at least one digit, one character and one punctuation
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24005010/viewspace-730089/,如需转载,请注明出处,否则将追究法律责任。