Oracle 统一审计- Best 实践二

来源:这里教程网 时间:2026-03-03 19:36:13 作者:

Oracle 数据库开启审计最 Best 实践-配置审计策略继续上一篇的介绍,我们继续学习,即可以利用统一审计进行设计,统一审计支持自定义统一审计策略、预定义统一审计策略和细粒度审计。一 选择审计类型数据库工程师可以审计一般活动(例如SQL语句操作)、常用审计活动及细粒度审计场景。1.1审计SQL语句、特权和其他常规活动我们可以审计许多类型的对象,从SQL语句到其他Oracle数据库组件(如Oracle Database Vault)。此外,我们还可以创建使用条件的策略。但是,如果要审计特定的列或使用事件处理程序,则必须使用细粒度审计。执行这类审计的一般步骤如下:1.在大多数情况下,使用CREATE AUDIT POLICY语句创建审计策略。如果必须审计应用程序上下文值,则使用audit语句。参见“统一审计策略的审计活动”和“审计报表”中的相关类别。2.如果我们正在创建一个审计策略,那么使用audit语句来启用它,并可选地将审计设置应用(或排除)到一个或多个用户,包括使用SYSDBA管理权限登录的管理用户(例如SYS用户)。审计还使您能够根据操作的成功、失败或两者同时进行创建审计记录。请参见向用户和角色启用并应用统一审计策略。3.查询UNIFIED_AUDIT_TRAIL视图,查找生成的审计记录。有关其他视图,请参见审计策略数据字典视图。4.定期归档和清除审计跟踪的内容。请参见清理审计跟踪记录。1.2审计常用的安全相关活动Oracle数据库提供了一组默认的统一审计策略,我们可以从中选择常用的安全相关审计。执行这类审计的一般步骤如下:默认的审计策略,请参见预置统一审计策略的审计活动。1.使用AUDIT语句启用策略,并可选择将审计设置应用(或排除)到一个或多个用户。请参见向用户和角色启用并应用统一审计策略。2.查询UNIFIED_AUDIT_TRAIL视图,查找生成的审计记录。有关其他视图,请参见审计策略数据字典视图。3.定期归档和清除审计跟踪的内容。请参见清理审计跟踪记录。1.3 审计特定的、细粒度的活动如果希望审计单个列并使用事件处理程序,请使用细粒度审计。这种类型的审计提供了统一审计策略的所有特性。细粒度审计的一般步骤如下:1.请参阅使用细粒度审计审计特定活动以了解有关审计特定活动的更多信息。2.使用DBMS_FGA PL/SQL包配置细粒度审计策略。请参见使用DBMS_FGA PL/SQL包管理细粒度审计策略。3.查询UNIFIED_AUDIT_TRAIL视图,查找生成的审计记录。有关其他视图,请参见审计策略数据字典视图。4.定期归档和清除审计跟踪的内容。请参见清理审计跟踪记录。二 采用统一审计策略和审计报表的审计活动数据库工程师可以通过CREATE AUDIT POLICY和AUDIT语句来使用统一的审计策略。1.关于统一审计策略与审计的审计活动数据库工程师可以使用统一的审计策略和audit SQL语句审计几种类型的活动。可以审核的活动类型如下:(1)用户帐户(包括使用SYSDBA管理权限登录的管理用户)、角色和特权(2)对象操作,例如删除表或运行过程(3)应用程序上下文值(4)Oracle数据库真实应用安全、Oracle恢复管理器、Oracle数据挖掘、Oracle数据泵、Oracle SQL*Loader直接路径事件、Oracle数据 库保险库和Oracle标签安全的活动要查找要审计的系统操作,可以查询AUDITABLE_SYSTEM_ACTIONS系统表。要做到这一点,根据数据库安全员想要审计的内容,使用以下方法:(1)统一的审计策略,统一审计策略是一组命名的审计设置,使数据库工程师能够审计数据库中用户行为的特定方面。要创建策略,可以使用create AUDIT policy语句。该策略可以像审计单个用户的活动一样简单,也可以创建使用条件的复杂审计策略。一个数据库中可以同时有多个有效的审计策略。审计策略可以包含系统范围和特定于对象的审计选项。您将为一般活动(包括标准审计)进行的大多数审计(2)审计和NOAUDIT SQL语句。使用AUDIT和NOAUDIT SQL语句,您可以分别启用和禁用审计策略。AUDIT语句还允许您为策略包括或排除特定用户。AUDIT和NOAUDIT语句还使您能够审计应用程序上下文值。(3)对于Oracle Recovery Manager,不需要创建统一的审计策略。UNIFIED_AUDIT_TRAIL视图自动捕获通常审计的Recovery Manager事件。2.创建自定义统一审计策略的 Best 实践数据库工程师可以一次在数据库中启用多个策略,但理想情况下,尽量限制启用策略的数量。统一审计策略语法的设计使我们可以编写一个包含数据库所需的所有审计设置的策略。一个好的做法是将相关选项分组到单个策略中,而不是创建多个小策略。这使我们能够更轻松地管理策略。例如,每个预定义的审计策略在一个统一的审计策略中包含多个审计设置。限制用户会话的审计策略的启用数量,有以下好处:(1)它减少了与将审计策略的详细信息加载到会话的UGA内存相关的登录开销。如果启用的策略计数较少,则用于加载策略信息的时间较少。(2)它减少了会话的UGA内存消耗,因为需要在UGA内存中缓存的策略数量更少。(3)它使内部审计检查功能更加高效,从而决定是否为其关联事件生成审计记录。(4)如果我们已经为LOGON语句配置了统一的审计策略,那么将生成直接登录以及ALTER SESSION和SET CONTAINER语句的审计记录。3.创建统一审计策略语法要创建统一的审计策略,必须使用create audit policy语句。创建统一审计策略时,Oracle数据库将其存储在SYS模式下的第一类对象中,而不是存储在创建该策略的用户的模式中。例27-1展示了CREATE AUDIT POLICY语句的语法。例27-1 CREATE审计策略语句语法CREATE AUDIT POLICY policy_name{ {privilege_audit_clause [action_audit_clause ] [role_audit_clause ]}| { action_audit_clause [role_audit_clause ] }| { role_audit_clause }}[WHEN audit_condition EVALUATE PER {STATEMENT|SESSION|INSTANCE}][ONLY TOPLEVEL][CONTAINER = {CURRENT | ALL}];在本规范中:Privilege_audit_clause子句描述与特权相关的审计选项。有关详细信息,请参见审计系统权限。配置特权审计选项的详细语法如下:privilege_audit_clause := PRIVILEGES privilege1 [, privilege2]Action_audit_clause子句和standard_actions描述与对象操作相关的审计选项。参见审计对象操作。语法如下:action_audit_clause := {standard_actions | component_actions}[, component_actions ]standard_actions :=ACTIONS action1 [ ON {schema.obj_name| DIRECTORY directory_name| MINING MODEL schema.obj_name}][, action2 [ ON {schema.obj_name| DIRECTORY directory_name| MINING MODEL schema.obj_name}]component_actions用于创建“Oracle Label Security”、“Oracle Database Real Application Security”、“Oracle Database Vault”、“Oracle Data Pump”和“Oracle SQL*Loader”审计策略。有关更多信息,请参阅使用统一审计策略的审计活动和审计报表中的相应部分。语法是:component_actions :=ACTIONS COMPONENT=[OLS|XS] action1 [,action2 ] |ACTIONS COMPONENT=DV DV_action ON DV_object_name |ACTIONS COMPONENT=DATAPUMP [ EXPORT | IMPORT | ALL ] |ACTIONS COMPONENT=DIRECT_LOAD [ LOAD | ALL ]Role_audit_clause子句用于审计角色。请参见审计角色。语法是:role_audit_clause := ROLES role1 [, role2]WHEN audit_condition EVALUATE PER可以指定一个函数,为审计策略和评估频率创建一个条件。必须在WHEN条件中包含EVALUATE PER子句。请参见创建统一审计策略的条件。语法是:WHEN 'audit_condition := function operation value_list'EVALUATE PER {STATEMENT|SESSION|INSTANCE}ONLY TOPLEVEL允许用户只审计配置为此审计策略一部分的操作所执行的所有操作。请参见只审计所有语句。CONTAINER,允许用户只审计为配置为此审计策略的一部分的操作执行的所有操作。请参见统一审计策略或多租户环境下的审计设置。该语法用于审计策略中列出的任何组件。例如,假设您创建了以下策略:CREATE AUDIT POLICY table_polPRIVILEGES CREATE ANY TABLE, DROP ANY TABLEROLES emp_admin, sales_admin;审计跟踪将捕获需要CREATE ANY TABLE系统特权或DROP ANY TABLE系统特权或直接授予角色emp_admin的任何系统特权或直接授予角色sales_admin的任何系统特权的SQL语句。(请注意,它审计的是直接授予的特权,而不是通过角色递归授予的特权。)创建策略后,必须使用AUDIT语句启用该策略。您还可以选择将该策略应用于一个或多个用户,将一个或多个用户从该策略中排除,并指定是在审计操作成功时写入审计记录,还是失败时写入审计记录,还是同时成功或失败时写入审计记录。请参见向用户和角色启用并应用统一审计策略。三 审计角色可以使用CREATE AUDIT POLICY语句对数据库角色进行审计。3.1 关于角色审计当审计一个角色时,Oracle数据库审计所有直接授予该角色的系统权限。可以审计任何角色,包括自定义角色。如果使用roles审计选项为角色创建通用统一审计策略,则在角色列表中只能指定通用角色。当启用这种策略时,Oracle数据库审计所有通常直接授予公共角色的系统特权。不审计本地授予公共角色的系统权限。要查找角色是否通常被授予,请查询DBA_ROLES数据字典3.2配置角色统一审计策略要创建统一的审计策略来捕获角色使用情况,必须在create audit policy语句中包含ROLES子句。使用如下语法创建统一的审计策略,对角色进行审计:CREATE AUDIT POLICY policy_name ROLES role1 [, role2];例如;CREATE AUDIT POLICY audit_roles_pol ROLES IMP_FULL_DATABASE, EXP_FULL_DATABASE;我们可以构建更复杂的角色统一审计策略,例如包含条件的审计策略。请记住,在创建策略之后,必须使用AUDIT语句来启用它3.3示例:审计多租户环境中的DBA角色CREATE AUDIT POLICY语句可以对多租户环境中的角色进行审计。下面的示例展示了如何在多租户环境中审计预定义的公共角色DBA。例27-2审计多租户环境中的DBA角色CREATE AUDIT POLICY role_dba_audit_pol ROLES DBA CONTAINER = ALL;AUDIT POLICY role_dba_audit_pol;四 审计系统权限-待续参考文档:

相关推荐