关键字(Keyword):session,audit,unified audit,会话
问题:
在Oracle数据库中想“删库”,然后没事人地跑掉?
好吧,基本是不可能的了。
但是即使不会在发生这样严重的事,加强数据库的安全管理是必要的。
下面看看今天的问题:
如何监控数据库用户登录和注销信息?
解决方法:
Oracle提供了多种方法监控数据库用户登录和注销信息。
1)通过传统的审计功能
可参考之前发布的以下文章。
2)通过统一审计(12c版本之后)
Oracle12c版本之后,加强了审计功能,导入了统一审计功能。
通过统一审计可以轻松地监控数据库用户登录和注销信息。
关于统一审计可参考如下在线文档。
参考:What Is Unified Auditing?
统一审计监控数据库用户登录的具体方法如下:
1.设置统一审计策略
create audit policy <策略名> actions logon,logoff;
参考:(CREATE AUDIT POLICY (Unified Auditing) 的语法)
CREATE AUDIT POLICY policy
[ privilege_audit_clause ] [ action_audit_clause ] [ role_audit_clause ]
[ WHEN 'audit_condition' EVALUATE PER
{ STATEMENT | SESSION | INSTANCE } ]
[ ONLY TOPLEVEL ]
[ CONTAINER = { ALL | CURRENT } ] ;
https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/CREATE-AUDIT-POLICY-Unified-Auditing.html#GUID-8D6961FB-2E50-46F5-81F7-9AEA314FC693
2.使审计策略有效
audit policy <策略名>;
3.确认审计结果
可以通过unified_audit_trail 视图来确认审计结果。
测试例如下:(on 19c)
--0.准备测试用户
create user TeacherWhat identified by TeacherWhat;
grant connect,resource to TeacherWhat;
--1.设置统一审计策略
create audit policy AUDIT_LOGON actions logon,logoff;
--2.使审计策略有效
audit policy AUDIT_LOGON;
--查看设计策略
select USER_NAME,POLICY_NAME,ENABLED_OPT,SUCCESS,FAILURE from audit_unified_enabled_policies where POLICY_NAME ='AUDIT_LOGON';
--3.执行测试用户登录
conn TeacherWhat/TeacherWhat
--4.确认执行结果
conn / as sysdba
select to_char(event_timestamp, 'DD/MM/YYYY HH24:MI:SS.FF3'), action_name
from unified_audit_trail where dbusername='TeacherWhat' order by 1;
--5.使审计策略无效和删除
noaudit policy AUDIT_LOGON;
drop policy AUDIT_LOGON;