继上一篇审计管理用户的介绍,我们接下来减少一下“Auditing Object Actions”即审计对象操作六 审计对象操作
DBA可以使用CREATE AUDIT POLICY语句来审计对象操作。
6.1 审计对象操作
DBA可以审计对特定对象执行的操作,例如HR上的UPDATE语句
HR.EMPLOYEES表。
审计内容可以包括对象上使用的DDL和DML语句。一个统一的审计策略可以包含特权审计选项和操作审计选项,也可以为多个对象设置审计选项。
6.2 可审计的对象操作
审计对象操作可以是广泛的,也可以是集中的(例如,审计所有用户操作或仅审计选定的用户操作列表)。
如下
列出对象级标准数据库操作选项。SELECT SQL语句的审计策略将捕获READ操作和SELECT操作。
6.3 配置对象动作统一审计策略
CREATE AUDIT POLICY语句中的ACTIONS子句创建捕获对象操作的策略。
使用以下语法创建一个统一的审计策略,对对象的操作进行审计:
语法:CREATE AUDIT POLICY policy_name ACTIONS action1 [, action2 ON object1] [, action3 ON object2];
案例:CREATE AUDIT POLICY my_simple_obj_policy ACTIONS SELECT ON OE.ORDERS, UPDATE ON HR.EMPLOYEES;
注意,DBA可以审计多个对象上的多个操作,如本例所示。
DBA可以构建复杂的对象动作统一审计策略,例如包含条件的审计策略。需要注意,在创建策略之后,必须使用AUDIT语句来启用它。 6.4 示例:审计SYS对象上的操作 CREATE AUDIT POLICY语句可以审计SYS对象上的操作。 如下 演示如何创建审计策略,对SYS上的SELECT语句进行审计。sys.USER$ 系统表。审计策略适用于所有用户,包括“SYS”和“SYSTEM”。 CREATE AUDIT POLICY select_user_dictionary_table_pol ACTIONS SELECT ON SYS.USER$; AUDIT POLICY select_user_dictionary_table_pol; 6.5 示例:审计一个对象上的多个操作 CREATE AUDIT POLICY语句可以审计一个对象上的多个操作。 如下 展示了如何审计用户jrandolph和phhawkins在app_lib库上执行的多条SQL语句。 CREATE AUDIT POLICY actions_on_hr_emp_pol1 ACTIONS EXECUTE, GRANT ON app_lib; AUDIT POLICY actions_on_hr_emp_pol1 BY jrandolph, phawkins; 6.6 示例:审计对象上的GRANT和REVOKE操作 CREATE AUDIT POLICY语句可以审计对象(如表)上的GRANT和REVOKE操作。 用对对象上的GRANT操作的审计,也会自动启用对对象上的REVOKE操作的审计。 CREATE AUDIT POLICY grant_revoke_pol ACTIONS GRANT ON HR.EMPLOYEES; 要从UNIFIED_AUDIT_TRAIL数据字典视图中选择这种类型的策略,您可以执行类似于下面的查询。被授权者的名字(被授予特权的人)记录在TARGET_USER列中。AUDIT POLICY grant_revoke_pol; SELECT DBUSERNAME, OBJECT_PRIVILEGES, ACTION_NAME, OBJECT_SCHEMA, OBJECT_NAME, TARGET_USER FROM UNIFIED_AUDIT_TRAIL WHERE ACTION_NAME IN ('GRANT', 'REVOKE'); 6.7 示例:审计对象上的操作和权限 CREATE AUDIT POLICY语句可以使用单个策略审计对象上的操作和特权。 如下 显示了示例的一个变体,其中使用CREATE library特权的app_lib库上的所有EXECUTE和GRANT语句都被审计。 CREATE AUDIT POLICY actions_on_hr_emp_pol2 PRIVILEGES CREATE LIBRARY ACTIONS EXECUTE, GRANT ON app_lib; AUDIT POLICY actions_on_hr_emp_pol2 BY jrandolph, phawkins; DBA 可以审计目录对象。例如,假设您创建了一个目录对象,其中包含ORACLE_LOADER访问驱动程序将使用的预处理器程序。您可以审计在此目录对象中运行此程序的任何人。 6.8 示例:审计表上的所有操作 CREATE AUDIT POLICY语句可以审计表上的所有操作。 可以使用ALL关键字对所有动作进行审计。Oracle建议您只审计敏感对象上的所有操作。ALL很有用,因为它捕获了间接的SELECT操作。例27-10展示了如何审计HR上的所有动作。EMPLOYEES表,除了用户mulligan的操作。 CREATE AUDIT POLICY all_actions_on_hr_emp_pol ACTIONS ALL ON HR.EMPLOYEES; AUDIT POLICY all_actions_on_hr_emp_pol EXCEPT pmulligan; 6.9 示例:审计数据库中的所有操作 CREATE AUDIT POLICY语句可以审计数据库中的所有操作。 为了防止生成大量审计记录并迅速填满审计跟踪的情况,即使对于此审计策略配置的所有递归操作,也要在CREATE audit policy语句中包含ONLY TOPLEVEL子句。作为ONLY TOPLEVEL的替代方案,您可以使用条件来创建ACTIONS ALL策略,以便仅捕获记录的子集。 注意:谨慎使用ACTIONS ALL审计。不要为必须执行联机事务处理(OLTP)工作负载的用户启用它。这将避免产生大量的审计记录。 CREATE AUDIT POLICY all_actions_pol ACTIONS ALL ONLY TOPLEVEL; AUDIT POLICY all_actions_pol; 6.10 对象行为统一审计策略如何出现在审计跟踪中 UNIFIED_AUDIT_TRAIL数据字典视图列出了对象操作审计事件。 SELECT ACTION_NAME, OBJECT_SCHEMA, OBJECT_NAME FROM UNIFIED_AUDIT_TRAIL WHERE DBUSERNAME = 'SYS'; ACTION_NAME OBJECT_SCHEMA OBJECT_NAME ----------- ------------- ------------ SELECT HR EMPLOYEES 6.11 审计函数、过程、包和触发器 DBA可以审计函数、过程、PL/SQL包和触发器。 DBA可以审核的领域如下:
可以单独审计独立函数、独立过程和PL/SQL包。
如果审计一个PL/SQL包,Oracle数据库将审计包中的所有函数和过程。
如果为所有执行启用审计,Oracle数据库将审计数据库中的所有触发器,以及PL/SQL包中的所有函数和过程。
不能审计PL/SQL包中的单个函数或过程。
当审计PL/SQL存储过程或存储函数上的EXECUTE操作时 6.12 Oracle虚拟私有数据库谓词审计 统一审计跟踪自动捕获Oracle Virtual Private Database (VPD)策略中使用的谓词。 不需要创建统一的审计策略来获取VPD谓词审计信息。
这种类型的审计使DBA能够识别作为DML操作的一部分运行的谓词表达式,从而帮助DBA识别可能作为DML操作的一部分发生的其他操作。例如,如果对数据库的恶意攻击是使用VPD谓词执行的,那么您可以使用统一审计跟踪来跟踪攻击。除了来自用户创建的VPD策略的谓词之外,还有来自Oracle Label Security和Oracle Real Application Sec的内部谓词
下面的示例展示了如何审计VPD策略的谓词:
1.Create the following VPD policy function:
CREATE OR REPLACE FUNCTION auth_orders(
schema_var IN VARCHAR2,
table_var IN VARCHAR2
)
RETURN VARCHAR2
IS
return_val VARCHAR2 (400);
BEGIN
return_val := 'SALES_REP_ID = 159';
RETURN return_val;
END auth_orders;
/
2.Create the following VPD policy:
BEGIN
DBMS_RLS.ADD_POLICY (
object_schema => 'oe',
object_name => 'orders',
policy_name => 'orders_policy',
function_schema => 'sec_admin',
policy_function => 'auth_orders',
statement_types => 'select, insert, update, delete'
);
END;
/
3.Create and enable the following the unified audit policy:
CREATE AUDIT POLICY oe_pol ACTIONS SELECT ON OE.ORDERS;
AUDIT POLICY oe_pol;
4.Connect as user
OE and query the
OE.ORDERS table.
CONNECT OE Enter password: password SELECT COUNT(*) FROM ORDERS;
5.Connect as a user who has been granted the
AUDIT_ADMIN role, and then query the
Output similar to the following should appear:
((POLICY_TYPE=[3]'VPD'),(POLICY_SCHEMA=[9]'SEC_ADMIN'),(POLICY_NAME=[13]'ORDERS_POLICY'),(PREDICATE=[16]'SALES_REP_ID=159'));
6.To extract these details and add them to their own columns, run the appropriate function from the
UNIFIED_AUDIT_TRAIL data dictionary view.
CONNECT sec_admin
Enter password: password
SELECT RLS_INFO FROM UNIFIED_AUDIT_TRAIL;
DBMS_AUDIT_UTIL PL/SQL package.For unified auditing, you must run the
DBMS_AUDIT_UTIL.DECODE_RLS_INFO_ATRAIL_UNI function.For example:SELECT DBUSERNAME, ACTION_NAME, OBJECT_NAME, SQL_TEXT,
RLS_PREDICATE, RLS_POLICY_TYPE, RLS_POLICY_OWNER, RLS_POLICY_NAME
FROM TABLE (DBMS_AUDIT_UTIL.DECODE_RLS_INFO_ATRAIL_UNI
(CURSOR (SELECT * FROM UNIFIED_AUDIT_TRAIL)));
The reformatted audit trail output appears similar to the following:
DBUSERNAME ACTION_NAME OBJECT_NAME SQL_TEXT
---------- ----------- ----------- ---------------------------
RLS_PREDICATE RLS_POLICY_TYPE RLS_POLICY_OWNER RLS_POLICY_NAME
------------------ --------------- ---------------- ---------------
OE SELECT ORDERS SELECT COUNT(*) FROM ORDERS
SALES_REP_ID = 159 VPD SEC_ADMIN ORDERS_POLICY
6.13 Oracle虚拟私有数据库策略功能审计策略
审计可以影响动态VPD策略、静态VPD策略和上下文敏感的VPD策略。
动态策略:Oracle数据库计算两次策略函数,一次在SQL语句解析期间,另一次在执行期间。因此,为每个评估生成两个审计记录。
静态策略:Oracle数据库计算一次策略函数,然后将其缓存在SGA中。因此,只生成一条审计记录。
上下文敏感策略:Oracle数据库在语句解析期间执行一次策略功能。因此,只生成一条审计记录。 6.14 使用编辑对象进行统一审计 当一个已编辑的对象具有统一的审计策略时,它将应用于该对象可见的所有版本。 当一个已编辑的对象被实现时,附加到它的任何统一审计策略都是新附加到新的实际事件的。当您对继承的已编辑对象新应用统一审计策略时,此操作将实现该策略。
可以通过查询UNIFIED_AUDIT_TRAIL数据字典视图中的OBJECT_NAME和OBJ_EDITION_NAME列来查找审计对象出现的版本。 参考文档: Oracle 关于审计对象操作介绍
编辑推荐:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- Oracle 统一审计- Best 实践五
Oracle 统一审计- Best 实践五
26-03-03 - 查询DBA_FREE_SPACE缓慢问题
查询DBA_FREE_SPACE缓慢问题
26-03-03 - Oracle Linux 8.10 图形化安装 Oracle Database 21c
- 长沙岳麓区家具馆:邂逅高颜值餐桌,开启优雅用餐时光
长沙岳麓区家具馆:邂逅高颜值餐桌,开启优雅用餐时光
26-03-03 - 芯片行业ERP系统设计需要考虑哪些因素
芯片行业ERP系统设计需要考虑哪些因素
26-03-03 - 软件签名添加时间戳
软件签名添加时间戳
26-03-03 - OPatch安装补丁将Oracle 19.3升级到19.23
OPatch安装补丁将Oracle 19.3升级到19.23
26-03-03 - Oracle数据库如何模拟ORA-600 [4193]错误?如何解决?
Oracle数据库如何模拟ORA-600 [4193]错误?如何解决?
26-03-03 - shutdown abort关库,真的有可能起不来吗?
shutdown abort关库,真的有可能起不来吗?
26-03-03 - 又是windown服务器断电引起的ora-00333
又是windown服务器断电引起的ora-00333
26-03-03
