安全性管理员可以使用审计策略来配置审计设施,以仅收集关于所需数据和对象的信息。
根据审计策略,将审计该数据库内发生的所有可审计事件。
审计所有数据操作语言 (DML) 以及对表(无类型)、MQT(具体化查询表)或昵称的 XQUERY 访问。在访问表时,只生成包含或不包含数据的 EXECUTE 类别审计事件,即使策略指示应审计其他类别亦如此。
根据审计策略,将审计由特定可信上下文定义的可信连接内发生的所有可审计事件。
根据审计策略,将审计由指定用户启动的所有可审计事件。
根据审计策略,将审计作为组或角色成员的用户所启动的所有可审计事件。还包括间接角色成员资格,例如,通过其他角色或组。
通过为一个组定义工作负载并捕获活动详细信息,可以使用“工作负载管理”事件监视器来捕获类似数据。您应该了解,至工作负载的映射不仅仅涉及授权标识,还可能涉及其他属性,这可能会使您无法获得期望的审计粒度,或者在修改了这些其他属性时,连接可能会映射至不同(可能是未监视的)工作负载。审计解决方案保证审计用户、组或角色。
根据审计策略,将审计由拥有指定权限的用户启动的所有可审计事件,即使该权限对事件来说不是必需的,情况亦如此。
安全性管理员可以创建多个审计策略。例如,您所在的公司可能需要一个策略来审计敏感数据,并需要一个策略来审计拥有 DBADM 权限的用户的活动。如果多个审计策略对一个语句有效,那么将审计每个审计策略要求审计的所有事件(但只审计一次)。例如,如果数据库的审计策略要求审计特定表的成功 EXECUTE 事件,并且用户的审计策略要求审计同一个表的失败 EXECUTE 事件,那么将审计访问该表时的成功和失败尝试。
对于特定对象,只能有一个审计策略有效。例如,不能同时有多个审计策略与同一个表关联。
审计策略不能与视图或类型表关联。根据基础表的策略,将审计访问具有关联审计策略的表的视图。
适用于表的审计策略不会自动适用于基于该表的 MQT。如果将审计策略与一个表关联,那么应将相同策略与基于该表的任何 MQT 关联。
事务期间执行的审计是根据事务开始时的审计策略及其关联进行的。例如,如果安全性管理员将一个审计策略与用户关联并且该用户当时处于事务中,那么该审计策略不会影响在该事务内执行的任何其余语句。此外,对审计策略所作的更改要在落实后才生效。如果安全性管理员发出 ALTER AUDIT POLICY 语句,那么该语句要在落实后才生效。
仅审计与指定状态值相匹配的可审计事件。
安全性管理员使用 AUDIT 语句将审计策略与当前数据库或当前服务器中的数据库对象关联。只要该对象在使用中,就会根据此审计策略对它进行审计。
要删除审计策略,安全性管理员可以使用 DROP 语句。不能删除与任何对象关联的审计策略。使用 AUDIT REMOVE 语句除去与对象的任何其余关联。要将元数据添加至审计策略,安全性管理员可以使用 COMMENT 语句。
事件 | 审计类别 | 注释 |
---|---|---|
CONNECT | CONTEXT | |
CONNECT_RESET | CONTEXT | |
AUTHENTICATION | VALIDATE | 这包括在可信连接内连接和切换用户期间的认证。 |
CHECKING_FUNC | CHECKING | 尝试的访问是 SWITCH_USER。 |
将只根据与数据库关联的审计策略审计这些事件,而不使用与任何其他对象(例如,用户、用户组或权限)关联的审计策略进行审计。对于在连接期间发生的 CONNECT 和 AUTHENTICATION 事件,将使用实例级别审计设置,直到数据库被激活为止。数据库在第一次连接期间或发出 ACTIVATE DATABASE 命令时被激活。
如果在可信连接内切换用户,那么不会留下原始用户的任何信息。在此情况下,将不再考虑与原始用户关联的审计策略,并且将针对新用户重新评估适用的审计策略。任何与可信连接关联的审计策略仍有效。
如果使用 SET SESSION USER 语句,那么只切换会话授权标识。原始用户的授权标识(系统授权标识)的审计策略保持有效,并且还使用新用户的审计策略。如果在会话内发出了多个 SET SESSION USER 语句,那么只考虑与原始用户(系统授权标识)和当前用户(会话授权标识)关联的审计策略。
所有分区中一次只允许有一个未落实的 AUDIT 独占式 DDL 语句。如果未落实的 AUDIT 独占式 DDL 语句正在执行,那么后续 AUDIT 独占式 DDL 语句将等待,直到当前 AUDIT 独占式 DDL 语句落实或回滚为止。
请考虑这样一家公司,其 EMPLOYEE 表包含非常敏感的信息,并且该公司希望审计对该表中的数据的任何和所有 SQL 访问。可以使用 EXECUTE 类别来跟踪对表的所有访问;该类别审计 SQL 语句,并可以选择审计在执行时为该语句提供的输入数据值。
CREATE AUDIT POLICY SENSITIVEDATAPOLICY
CATEGORIES EXECUTE STATUS BOTH ERROR TYPE AUDIT
COMMIT
AUDIT TABLE EMPLOYEE USING POLICY SENSITIVEDATAPOLICY
COMMIT
为了完成安全合格证书,一家公司必须表明能够监视数据库内由拥有系统管理 (SYSADM) 或数据库管理 (DBADM) 权限的那些人执行的任何和所有活动。
CREATE AUDIT POLICY ADMINSPOLICY CATEGORIES EXECUTE STATUS BOTH,
SYSADMIN STATUS BOTH ERROR TYPE AUDIT
COMMIT
AUDIT SYSADM, DBADM USING POLICY ADMINSPOLICY
COMMIT
一家公司允许对其企业数据库进行 Web 应用程序访问。使用 Web 应用程序的确切个人未知。只知道使用的角色,该角色用于管理数据库权限。该公司希望监视作为该角色成员的任何人的操作,以便检查他们提交给数据库的请求并确保他们只通过 Web 应用程序访问数据库。
CREATE AUDIT POLICY WEBAPPPOLICY CATEGORIES EXECUTE WITH DATA
STATUS BOTH ERROR TYPE AUDIT
COMMIT
AUDIT ROLE TELLER, ROLE CLERK USING POLICY WEBAPPPOLICY
COMMIT
某个公司想要确定谁在对名为 SAMPLE 的数据库进行 DDL 更改(示例:ALTER TABLE)。
CONNECT TO SAMPLE
CREATE AUDIT POLICY ALTPOLICY CATEGORIES AUDIT STATUS BOTH,
OBJMAINT STATUS BOTH, CHECKING STATUS BOTH,
EXECUTE STATUS BOTH, ERROR TYPE NORMAL
AUDIT DATABASE USING POLICY ALTPOLICY