问题描述
嗨,汤姆
感谢以前的解决方案。
请指导我或分享一些有用的链接,以实现以下要求。
1-> 我们要审核不是由应用程序创建的会话的所有操作。
2-> 具有1000记录的游标将在审核中生成1000行。
注意 * 我们有12c R2 SE Oracle数据库。所以没有细粒度的审计。
我只需要存储信息 (操作,object_name,schema_name,主机,OS_user,ip地址,时间,日期)。
“所有操作” 包括所有内容 (更改,创建,删除,更新,删除等),例如 “成功时按模式审核”。
实际场景:: 应用程序用户被许多开发人员使用,我们只想审核开发人员会话的操作,而不是应用程序。
我们如何才能在对性能影响最小的情况下实现它。
感谢以前的解决方案。
请指导我或分享一些有用的链接,以实现以下要求。
1-> 我们要审核不是由应用程序创建的会话的所有操作。
2-> 具有1000记录的游标将在审核中生成1000行。
注意 * 我们有12c R2 SE Oracle数据库。所以没有细粒度的审计。
我只需要存储信息 (操作,object_name,schema_name,主机,OS_user,ip地址,时间,日期)。
“所有操作” 包括所有内容 (更改,创建,删除,更新,删除等),例如 “成功时按模式审核”。
实际场景:: 应用程序用户被许多开发人员使用,我们只想审核开发人员会话的操作,而不是应用程序。
我们如何才能在对性能影响最小的情况下实现它。
专家解答
1.您可以使用统一审计。
创建一个策略,该策略指定用于确定审核内容的标准。您可以在此处访问sys_context变量,因此您可以将其基于用户名,IP,主机,...
这将审核用户U所做的一切:
请记住,有可能欺骗许多 (全部?) 您可以用来检查语句是否来自应用程序的属性。因此,坚定的开发人员可以找到一种方法来假装成为绕过您的审核的应用程序。审计一切都要容易和安全得多。
2.你会得到每个SQL语句的行如果您一次选择1000行,您将有一个条目。
创建一个策略,该策略指定用于确定审核内容的标准。您可以在此处访问sys_context变量,因此您可以将其基于用户名,IP,主机,...
这将审核用户U所做的一切:
grant create session, create table, unlimited tablespace to u
identified by u;
create audit policy test_audit_policy
actions all
when q'!sys_context('userenv', 'session_user') = 'U'!'
evaluate per session
container = current;
audit policy test_audit_policy;请记住,有可能欺骗许多 (全部?) 您可以用来检查语句是否来自应用程序的属性。因此,坚定的开发人员可以找到一种方法来假装成为绕过您的审核的应用程序。审计一切都要容易和安全得多。
2.你会得到每个SQL语句的行如果您一次选择1000行,您将有一个条目。
conn u/u create table t ( c1 int ); insert into t with rws as ( select level x from dual connect by level <= 100 ) select * from rws; commit; select count (*) from t; var cur refcursor; exec open :cur for select * from t; print :cur conn chris select action_name, sql_text from unified_audit_trail where dbusername = 'U' and event_timestamp > systimestamp - interval '1' minute and action_name <> 'EXECUTE' order by event_timestamp; ACTION_NAME SQL_TEXT -------------------- ------------------------------------------------------------ LOGOFFLOGON ALTER SESSION ALTER SESSION SET TIME_ZONE='Europe/London' NLS_LANGUAGE='AM ERICAN' NLS_TERRITOR SELECT select * from v$version where banner like '%Oracle%' SELECT select parameter,value from nls_session_parameters union all SELECT 'DB_TIMEZO ALTER SESSION ALTER SESSION SET TIME_ZONE = 'Europe/London' COMMIT ALTER SESSION SET TIME_ZONE = 'Europe/London' SELECT SELECT DBTIMEZONE FROM DUAL SELECT select parameter,value from nls_session_parameters union all SELECT 'DB_TIMEZO SELECT select sys_context('userenv','service_name') from dual SELECT select USER from dual CREATE TABLE create table t ( c1 int ) INSERT insert into t with rws as ( select level x from dual connect by level <= 10 COMMIT commit COMMIT commit SELECT select count (*) from t SELECT SELECT * FROM T COMMIT LOGOFF
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




