ITPub博客

首页 > 数据库 > Oracle > OCP课程33:管理Ⅰ之审计

OCP课程33:管理Ⅰ之审计

原创 Oracle 作者:stonebox1122 时间:2016-02-04 10:33:52 0 删除 编辑

课程目标:

  • 安全和审计的职责
  • 启用标准数据库审计
  • 设置审计选项
  • 查看审计信息
  • 维护审计记录

1、职责分离

clipboard

拥有DBA权限的用户必须是可信的:DBA需要最高级别权限。

考虑以下:

滥用信任

审计线索放在受信任的位置

Oracle数据库钱夹:Oracle数据库钱夹可以用于强制执行权限分离,DBA是不允许查看业务数据的。


2、数据库安全

clipboard[1]

Oracle 11g提供业界最佳的安全系统框架。但要有效使用这个框架,数据库管理员必须遵循最佳实践,并不断地监控数据库活动。

限制对数据的访问和服务

所有用户不能访问所有数据。根据存储在数据库中的不同数据,限制访问可以被授权的业务需求。信用卡信息,卫生保健数据,身份信息等,必须进制未经授权的访问。数据库提供了非常细粒度的授权控制来限制数据库访问。限制访问必须包括应用最小权限原则。

用户认证

要加强对敏感数据的访问控制,系统必须先知道谁试图访问数据。妥协的认证可以使所有其他安全防护措施失效。用户身份验证的最基本的形式是密码。确保密码遵循可以大大提高系统的安全性的简单规则。更强的身份验证方法包括要求用户证书等。更强大的方式是通过独特的生物特征,如指纹,虹膜扫描,骨结构模式等,以确定用户身份。Oracle数据库通过高级安全选项,支持高级的身份验证技术(例如令牌、生物识别和证书识别)。没有使用的用户帐户必须被锁定。

监视可疑活动

识别不寻常的数据库活动(如雇员突然开始查询大量的信用卡信息,研究结果,或其他敏感信息)是检测信息窃取的第一步。Oracle数据库提供了一组丰富的审计工具来跟踪用户的活动,识别可疑活动。


3、监控遵守

clipboard[2]

通过捕获和存储系统中发生的信息来进行审计会增加系统的负载。集中审计以便捕获感兴趣的事件。合适的集中审计对系统性能影响最小。不恰当的集中审计会显著影响性能。

审计的类型:

  • 强制性审计:不管其他的审计选项或参数,某些动作必须被审计。强制审计日志的原因是数据库需要记录一些数据库活动,比如授权用户的连接。
  • 标准数据库审计:使用初始化参数audit_trail,在系统级别启用。选择要审核的对象和权限,并通过AUDIT命令设置审核属性。
  • 基于值的审计:标准数据库审计的扩展,不仅捕获发生的审计事件,还包括插入,更新或删除的实际值。通过数据库触发器实现了基于值的审计。
  • 细粒度审计(FGA):标准数据库审计的扩展,获取实际的SQL语句。
  • SYSDBA(和SYSOPER)审计:使用操作系统审计记录,在DBA和审计员或者监控DBA活动的管理员之间分离审计职责。

例子:查看审计线索初始化参数audit_trail

SQL> show parameter audit_trail

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

audit_trail                          string      DB


4、标准数据库审计

clipboard[3]

使用数据库审计,必须先设置静态参数AUDIT_TRAIL参数指定审计记录的存储位置同时启用数据库审计。启用数据库审计并指定审计选项后(登录事件、系统运行和对象权限,或SQL语句的使用),数据库开始收集审计信息。

如果AUDIT_TRAIL设置为OS,审计记录存储在操作系统。在Windows环境就是event log。在UNIX或Linux环境下,审计记录存储在AUDIT_FILE_DEST参数指定目录。

如果AUDIT_TRAIL设置为DB或DB,EXTENDED,可以在DBA_AUDIT_TRAIL视图(基于aud$的视图,其他如dba_audit_session,dba_audit_object,dba_audit_statement都只是dba_audit_trail的一个子集)查看审核记录。

如果AUDIT_TRAIL设置为XML或XML,EXTENDED,审计记录写入AUDIT_FILE_DEST参数指定目录下的XML文件,使用V$XML_AUDIT_TRAIL视图查看该目录下所有的XML文件。

维护审计线索是一项重要的管理任务。根据审计选项的重点,审计线索可能会非常迅速地增长。如果没有正确的维护,审计线索可以创建非常多记录从而影响系统的性能。

例子:查看审计记录文件位置初始化参数audit_file_dest以及该目录下的审计文件

SQL> show parameter audit_file_dest

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

audit_file_dest                      string      /u01/app/oracle/admin/stone/adump

[oracle@oracletest1 ~]$ cat /u01/app/oracle/admin/stone/adump/stone_ora_29780_20151223144457552475143795.aud

Audit file /u01/app/oracle/admin/stone/adump/stone_ora_29780_20151223144457552475143795.aud

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, Automatic Storage Management, OLAP, Data Mining

and Real Application Testing options

ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1

System name:    Linux

Node name:      oracletest1

Release:        2.6.32-504.el6.x86_64

Version:        #1 SMP Tue Sep 16 01:56:35 EDT 2014

Machine:        x86_64

VM name:        VMWare Version: 6

Instance name: stone

Redo thread mounted by this instance: 1

Oracle process number: 37

Unix process pid: 29780, image: oracle@oracletest1 (TNS V1-V3)

Wed Dec 23 14:44:57 2015 +08:00

LENGTH : '160'

ACTION :[7] 'CONNECT'

DATABASE USER:[1] '/'

PRIVILEGE :[6] 'SYSDBA'

CLIENT USER:[6] 'oracle'

CLIENT TERMINAL:[5] 'pts/1'

STATUS:[1] '0'

DBID:[10] '3003597140'

例子:通过DBA_AUDIT_TRAIL视图查看对HR用户从昨天开始的审计记录

SQL> select username,action_name,priv_used,timestamp from dba_audit_trail where username='HR' and timestamp>sysdate-1;

USERNAME   ACTION_NAME                  PRIV_USED                                TIMESTAMP

---------- ---------------------------- ---------------------------------------- ------------

HR         ALTER SYSTEM                                                          22-DEC-15

HR         LOGON                        CREATE SESSION                           22-DEC-15

HR         LOGON                        CREATE SESSION                           22-DEC-15

HR         LOGON                        CREATE SESSION                           22-DEC-15

HR         LOGON                        CREATE SESSION                           22-DEC-15

HR         LOGON                        CREATE SESSION                           22-DEC-15

HR         LOGON                        CREATE SESSION                           22-DEC-15

HR         LOGOFF BY CLEANUP                                                     22-DEC-15

HR         LOGOFF                                                                22-DEC-15

HR         LOGOFF                                                                22-DEC-15

HR         LOGOFF                                                                22-DEC-15

USERNAME   ACTION_NAME                  PRIV_USED                                TIMESTAMP

---------- ---------------------------- ---------------------------------------- ------------

HR         LOGOFF                                                                22-DEC-15

HR         LOGOFF                                                                22-DEC-15

HR         LOGOFF                                                                22-DEC-15

14 rows selected.

例子:查看各种动作审计的记录数量

SQL> select action_name,count(*) from dba_audit_trail group by action_name;

ACTION_NAME                    COUNT(*)

---------------------------- ----------

LOGOFF BY CLEANUP                   312

SYSTEM REVOKE                         1

LOGON                              9149

LOGOFF                             8454

DROP DIRECTORY                        1

GRANT ROLE                            1

SESSION REC                           1

CREATE DIRECTORY                     13

SET ROLE                             18

SYSTEM GRANT                          4

ALTER SYSTEM                          1

ACTION_NAME                    COUNT(*)

---------------------------- ----------

CREATE DATABASE LINK                  1

12 rows selected.


5、配置AUDIT_TRAIL参数

clipboard[4]

你可以使用EM设置AUDIT_TRAIL参数(从初始化参数页)或使用ALTER SYSTEM命令设置AUDIT_TRAIL参数。因为这是一个静态的参数,所以修改后必须重新启动数据库才能生效。

如果使用数据库配置助手(DBCA)创建的数据库,默认AUDIT_TRAIL参数设置为DB。当AUDIT_TRAIL设置DB,默认行为是将审计线索记录到AUD$表。大多数情况下不会对数据库性能有很大的影响。

Oracle推荐使用操作系统审计线索文件。如果你手动创建的数据库(使用CREATE DATABASE命令),AUDIT_TRAIL参数默认设置为NONE。

例子:修改初始化参数audit_trail为db,extended

SQL> show parameter audit_trail

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

audit_trail                          string      DB

SQL> alter system set audit_trail=db,extended scope=spfile;

System altered.

SQL> show parameter audit_trail

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

audit_trail                          string      DB

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup

ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance

ORACLE instance started.

Total System Global Area  835104768 bytes

Fixed Size                  2257840 bytes

Variable Size             549456976 bytes

Database Buffers          281018368 bytes

Redo Buffers                2371584 bytes

Database mounted.

Database opened.

SQL> show parameter audit_trail

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

audit_trail                          string      DB, EXTENDED


6、统一审计线索

clipboard[5]

对于标准和细粒度审计,数据库跟踪相同的字段,可以更加简单地分析数据库活动。

标准审计收集的额外信息包括:

  • 系统改变号(SCN),记录系统的每一个变化
  • SQL语句及其绑定变量

细粒度审计收集的额外信息包括:

  • 每一个审计记录的序列号
  • 链接多个源于单个语句的审核项的语句号

两者都会收集的信息包括:

  • 全局时间戳,用于监视在不同的地理位置和时区的服务器。
  • RAC集群的实例编号
  • 分组审核记录的事务标识符

DBA_COMMON_AUDIT_TRAIL视图包含了标准和细粒度的审计日志记录。

例子:通过DBA_COMMON_AUDIT_TRAIL视图查看对HR用户从昨天开始的审计记录

SQL> select audit_type,db_user,statement_type,priv_used,extended_timestamp from DBA_COMMON_AUDIT_TRAIL

  2  where db_user='HR' and extended_timestamp>sysdate-1;

AUDIT_TYPE             DB_US STATEMENT_TYPE               PRIV_USED            EXTENDED_TIMESTAMP

---------------------- ----- ---------------------------- -------------------- ----------------------------------------

Standard Audit         HR    ALTER SYSTEM                                      22-DEC-15 04.57.24.478172 PM +08:00

Standard Audit         HR    LOGON                        CREATE SESSION       22-DEC-15 04.24.15.821173 PM +08:00

Standard Audit         HR    LOGON                        CREATE SESSION       22-DEC-15 04.25.19.863358 PM +08:00

Standard Audit         HR    LOGON                        CREATE SESSION       22-DEC-15 04.26.02.415283 PM +08:00

Standard Audit         HR    LOGON                        CREATE SESSION       22-DEC-15 04.26.21.517455 PM +08:00

Standard Audit         HR    LOGON                        CREATE SESSION       22-DEC-15 04.26.55.641184 PM +08:00

Standard Audit         HR    LOGOFF BY CLEANUP                                 22-DEC-15 11.10.11.996552 PM +08:00

Standard Audit         HR    LOGOFF                                            22-DEC-15 04.24.15.787890 PM +08:00

Standard Audit         HR    LOGOFF                                            22-DEC-15 04.25.12.309045 PM +08:00

Standard Audit         HR    LOGOFF                                            22-DEC-15 04.25.50.705529 PM +08:00

Standard Audit         HR    LOGOFF                                            22-DEC-15 04.26.17.797885 PM +08:00

AUDIT_TYPE             DB_US STATEMENT_TYPE               PRIV_USED            EXTENDED_TIMESTAMP

---------------------- ----- ---------------------------- -------------------- ----------------------------------------

Standard Audit         HR    LOGOFF                                            22-DEC-15 04.26.52.783032 PM +08:00

Standard Audit         HR    LOGOFF                                            22-DEC-15 04.57.03.609548 PM +08:00

13 rows selected.


7、指定审核选项

clipboard[6]

SQL语句审计:可以审计任何对表的数据定义语言(DDL)语句,包括创建表,删除表,截断表等等。SQL语句审计也可以用于审核用户以及执行语句成功或者失败:

SQL> audit table by hr whenever not successful;

系统权限审计:用于审计系统权限的使用(如DROP ANY TABLE)。可以用于审核用户以及执行语句成功或者失败。默认情况下使用BY ACESS。每次审核系统权限就会生成一条审核记录。可以通过BY SESSION对记录进行分组,一个会话中的相同语句类型对应一条记录,减少对系统性能和存储的影响。

对象权限审计:可用于审核表、视图、程序、序列、目录和用户定义的数据类型的操作。可以用于审核执行语句成功或失败,并按会话或访问分组。与系统权限审计不同,默认按会话分组。如果要为每个操作生成一个单独的审计线索记录,则必须显式指定BY ACESS。

例子:增加HR用户访问表失败的SQL语句的审计

SQL> audit table by hr whenever not successful;

Audit succeeded.

例子:增加对HR用户SELECT ANY TABLE系统权限的审计

SQL> audit select any table by hr by session;

Audit succeeded.

例子:增加对HR模式下EMPLOYEES表的更新和删除记录的审计

SQL> audit update,delete on hr.emp by access;

Audit succeeded.

SQL> select username,action_name,priv_used,timestamp from dba_audit_trail where username='HR';

USERNAME                       ACTION_NAME                  PRIV_USED                                TIMESTAMP

------------------------------ ---------------------------- ---------------------------------------- ---------------------

HR                             LOGOFF                                                                23-dec-15 17:11:56

HR                             LOGON                        CREATE SESSION                           23-dec-15 17:11:59

HR                             DELETE                                                                23-dec-15 17:12:39


8、默认审计

clipboard[7]

在Oracle 11g启用审计后,默认审计对安全重要的权限和语句,对以上权限和语句访问成功或者失败的审计。

例子:查看审计的权限

SQL> select PRIVILEGE,SUCCESS,FAILURE from DBA_PRIV_AUDIT_OPTS;

PRIVILEGE                                SUCCESS    FAILURE

---------------------------------------- ---------- ----------

CREATE EXTERNAL JOB                      BY ACCESS  BY ACCESS

CREATE ANY JOB                           BY ACCESS  BY ACCESS

GRANT ANY OBJECT PRIVILEGE               BY ACCESS  BY ACCESS

EXEMPT ACCESS POLICY                     BY ACCESS  BY ACCESS

CREATE ANY LIBRARY                       BY ACCESS  BY ACCESS

GRANT ANY PRIVILEGE                      BY ACCESS  BY ACCESS

DROP PROFILE                             BY ACCESS  BY ACCESS

ALTER PROFILE                            BY ACCESS  BY ACCESS

DROP ANY PROCEDURE                       BY ACCESS  BY ACCESS

ALTER ANY PROCEDURE                      BY ACCESS  BY ACCESS

CREATE ANY PROCEDURE                     BY ACCESS  BY ACCESS

PRIVILEGE                                SUCCESS    FAILURE

---------------------------------------- ---------- ----------

ALTER DATABASE                           BY ACCESS  BY ACCESS

GRANT ANY ROLE                           BY ACCESS  BY ACCESS

CREATE PUBLIC DATABASE LINK              BY ACCESS  BY ACCESS

DROP ANY TABLE                           BY ACCESS  BY ACCESS

ALTER ANY TABLE                          BY ACCESS  BY ACCESS

CREATE ANY TABLE                         BY ACCESS  BY ACCESS

DROP USER                                BY ACCESS  BY ACCESS

ALTER USER                               BY ACCESS  BY ACCESS

CREATE USER                              BY ACCESS  BY ACCESS

CREATE SESSION                           BY ACCESS  BY ACCESS

AUDIT SYSTEM                             BY ACCESS  BY ACCESS

PRIVILEGE                                SUCCESS    FAILURE

---------------------------------------- ---------- ----------

ALTER SYSTEM                             BY ACCESS  BY ACCESS

23 rows selected.

例子:查看审计的对象

SQL> select owner,object_name,object_type from DBA_OBJ_AUDIT_OPTS;

OWNER                          OBJECT_NAME                    OBJECT_TYPE

------------------------------ ------------------------------ -----------------------

HR                             EMP                            TABLE

例子:查看审计的语句

SQL> select audit_option from dba_stmt_audit_opts

  2  minus

  3  select privilege from dba_priv_audit_opts;

AUDIT_OPTION

----------------------------------------

DATABASE LINK

DIRECTORY

PROFILE

PUBLIC SYNONYM

ROLE

SYSTEM AUDIT

SYSTEM GRANT

7 rows selected.


9、EM审计页面

clipboard[8]

通过单击“服务器”选项卡,然后单击“安全性”中的“审计设置”链接,进入“审计”页面。

审核页面包含以下区域:

  • Configuration:显示当前的配置参数值,并包含编辑参数值的链接
  • Audit Trails:访问已收集的审计信息

使用这些标签页设置和取消设置审计选项:

审计的权限:显示被审计的权限

审计的对象:显示被审计的对象

审计的语句:显示被审计的语句

clipboard[9]

clipboard[10]


10、使用和维护审计信息

clipboard[11]

审计会导致性能损失,与写入审计跟踪的数量成比例。根据需求来调整审计选项,只需满足安全策略所需的选项即可。重点审计,以减少审计跟踪记录的数量。

例子:查看对象的审计信息

clipboard[12]

clipboard[13]

例子:取消对象的审计

clipboard[14]

clipboard[15]


11、基于值的审计

clipboard[16]

数据库审计记录在被审计对象中发生的插入、更新和删除,但不捕获更改的实际值。基于值的审计利用数据库触发器来捕获已更改的值。

当用户插入、更新或删除有相关触发器表的数据的时候,触发器拷贝审计信息到包含审计信息的表。相比标准的数据库审计,基于值的审计更加影响性能,因为每一次插入,更新,或删除操作都会执行触发器。只有在标准数据库审计所捕获的信息不足的情况下,才需要使用基于值的审计。

审计触发器是基于值审计的关键,可以用一个简单的PL/SQL触发器捕捉审计信息。

典型审计触发器的例子:

CREATE OR REPLACE TRIGGER system.hrsalary_audit
AFTER UPDATE OF salary
ON hr.employees
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
BEGIN
IF :old.salary != :new.salary THEN
INSERT INTO system.audit_employees
VALUES (sys_context('userenv','os_user'), sysdate,
sys_context('userenv','ip_address'),
:new.employee_id ||

' salary changed from '||:old.salary||
' to '||:new.salary);

END IF;
END;

/

这个触发器捕捉hr.employees表工资列的变化。当更新行时,触发器将检查工资字段。如果旧的值不等于新的值,则将审计记录插入到audit_employees表(在SYSTEM模式单独创建的一个表)。审计记录包括用户名、IP地址、识别记录变更的主键和变更的实际工资值。

数据库触发器也可用于捕获标准数据库审计没有收集足够数据的情况下的用户连接信息。通过登录触发器,管理员可以捕捉到连接到数据库的用户的数据。包括:

  • IP地址
  • 用来连接到实例的程序的前48个字符
  • 用于连接实例的终端名称

12、细粒度审计

clipboard[17]

数据库审计记录已经发生的操作,但不捕获导致该操作的语句的信息。细粒度审计(FGA)捕获实际的查询或操纵数据的SQL语句。

FGA选项可以是一个表或视图的单个列,甚至可以指定捕获条件。FGA策略支持多个相关列,默认情况下,任何一个列出现在SQL语句中都会被审计。使用dbms_fga.all_columns和dbms_fga.any_columns指定审计基于的列。

使用dbms_fga PL/SQL包创建表或视图的审计策略。如果查询块返回的任何一行与被审计列和指定的审计条件相匹配,审计事件会创建一个审计记录并存储在审计跟踪中。FGA审计在语句级别,一个返回数千行的选择语句只产生一个审计记录。


13、FGA策略

clipboard[18]

上图使用dbms_fga.add_policy存储过程创建一个细粒度的审计策略。

参数:

策略名称(policy_name):policy_name = >‘audit_emps_salary'

审核条件(audit_condition):指定条件或者审计的行,根据查询结果决定,audit_condition = >'department_id = 10'

审核列(audit_column):指定字段,可选,audit_column = >'salary,commision_pct'

对象(object_schema,object_name):指定审计的对象,包括模式名称和对象名称,object_schema = >'hr',  object_name = >'employees'

处理程序(handler):一个可选的PL/SQL事件处理程序,指定必须在审计中采取的动作。例如,事件处理程序可以向管理员发送警告页面。如果未定义,则将审计事件记录插入到审计跟踪中。如果定义了一个审计事件处理程序,则将该审核记录插入到审计跟踪,并执行审计事件处理程序。

事件处理程序包括2个参数:

  • 包含PL/SQL程序的模式
  • PL/SQL程序的名称

上面例子中,handler_schema = >‘secure’  handler_module = >'log_emps_salary'

状态(status):状态指示是否启用FGA政策。enable=>true


14、审计DML语句

clipboard[19]

为DML语句定义FGA策略后,如果一个DML语句相关字段满足定义的策略,则该DML语句将会被审计。

然而,如果在策略定义中指定了相关字段,当数据满足FGA策略的定义以及语句使用了相关字段,则该语句会被审计。

对于DELETE语句,在策略定义中指定相关列没有用,因为DELETE语句会涉及到表的所有列,因此,不论是否指定了被审计字段,DELETE语句总是会被审计。

FGA支持MERGE语句。如果满足条件,则相关的INSERT,UPDATE和DELETE语句都会被审计。

使用前面定义的策略,不会审计第一条语句,但是会审计第二条语句。因为commission_pct=.2的人员都不在部门10里面,但employee_id=200的人员里面有在部门10的。

例子:创建一个FGA审计,进行操作后查看审计记录

SQL> SHOW USER;

USER is "SYS"

SQL> exec dbms_fga.add_policy(object_schema=>'HR', object_name=> 'EMP', policy_name=> 'check_emp_audit',statement_types => 'INSERT, UPDATE, DELETE, SELECT');

PL/SQL procedure successfully completed.

对emp表进行增删改查

SQL> conn hr/hr

Connected.

SQL> insert into hr.emp select * from hr.employees;

107 rows created.

SQL> select count(*) from hr.emp;

  COUNT(*)

----------

       107

SQL> update emp set salary=10000 where employee_id=100;

1 row updated.

SQL> delete from hr.emp;

107 rows deleted.

SQL> rollback;

Rollback complete.

查看审计结果

SQL> conn / as sysdba

SQL> select db_user,sql_text from dba_fga_audit_trail;

DB_USER                        SQL_TEXT

------------------------------ ----------------------------------------------------------------------

HR                             insert into hr.emp select * from hr.employees

HR                             select count(*) from hr.emp

HR                             update emp set salary=10000 where employee_id=100

HR                             delete from hr.emp


15、FGA使用指导

clipboard[20]

  • 如果要审计所有行,设置audit_column为null
  • 如果要审计所有列,设置audit_column为null
  • 策略名字必须唯一
  • 被审计的表或者视图必须先要存在
  • 如果审计条件语法错误,则访问审计对象的时候会返回ORA-28112错误
  • 如果审计字段不在表中,则没有行会被审计
  • 如果event handler不存在,不返回错误,还是会创建审计记录

对于SELECT语句,FGA捕获语句本身而不是实际的行。然而,当FGA结合闪回查询,可以重建在某个时间点的记录。


16、SYSDBA审计

clipboard[21]

SYSDBA和SYSOPER权限的用户可以启动和关闭数据库。因为它们可以在数据库关闭时进行更改,所以这些权限的审计跟踪必须存储在数据库之外。Oracle数据库自动捕获用户SYSDBA和SYSOPER的登录事件,可以跟踪授权或未授权的SYSDBA和SYSOPER行为,只在使用操作系统的审计跟踪才有用。

数据库总是捕获授权用户的登录事件。如果DBA审计启用还会捕获其他动作。通过设置初始化参数AUDIT_SYS_OPERATIONS=TURE(默认值为FALSE),启用对SYSDBA和SYSOPER用户的审计。

如果审计SYS的操作,AUDIT_FILE_DEST初始化参数控制审计记录的存储位置。在Windows平台上,审计跟踪默认为事件日志。在Unix和Linux平台,审计记录存储在AUDIT_FILE_DEST位置。

例子:查看初始化参数AUDIT_SYS_OPERATIONS并修改

SQL> show parameter audit_sys_operations

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

audit_sys_operations                 boolean     FALSE

clipboard[22]


17、维护审计线索

clipboard[23]

必须维护好每种审计线索。基本维护必须包括查看审计记录并从数据库或操作系统中删除旧记录。审计线索可能会用完存储。如果存储空间不足,系统可能会崩溃或导致性能问题。

标准审计的审计线索存储在AUD$表。FGA的审计线索是FGA_LOG$表。这些表默认情况下在SYSTEM表空间创建。你可以使用数据泵导出导入工具把这些表移动到另一个表空间。

注意:不支持将审计表移出SYSTEM表空间。

最佳实践提示:

使用基于时间戳的导出,然后基于相同时间戳删除审计线索。

例子:查看AUD$表的记录以及大小

SQL> select userid,count(1) from aud$ group by userid;

USERID                           COUNT(1)

------------------------------ ----------

OPS$TEST                                4

OPS$ORACLE                              1

OPS$SHILEI                              3

HR                                    133

USER001                                23

TS01                                    2

USER1                                   1

OE                                     26

SH                                      4

DBSNMP                              16199

SYSMAN                               1531

USERID                           COUNT(1)

------------------------------ ----------

STONE                                   1

BI                                      2

SYS                                     5

14 rows selected.

SQL> select owner,segment_name,bytes/1024/1024 mb from dba_segments where segment_name='AUD$';

OWNER      SEGMENT_NA         MB

---------- ---------- ----------

SYS        AUD$                4

可以取消对dbsnmp的审计

SQL> noaudit session by dbsnmp;

Noaudit succeeded.


18、Audit Vault

clipboard[24]

Audit Vault主要优点包括:

Oracle审计安全库(Audit Vault)透明的收集和加固审计数据,可用于Oracle 9i R2,微软SQL Server 2000和2005,IBM DB2的Unix、Linux、Windows 8.2、9.5和Sybase ASE 12.5–15.0。

数据库活动监视与防火墙:对所有认证版本的Oracle及第三方数据库进行SQL流量监视,包括 Microsoft SQL Server、SAP Sybase、IBM DB2和MySQL;采用独特的SQL语法分析方法,将数百万条SQL语句分成一些“集群”,以实现卓越的准确性和可扩展性;易于建立白名单、黑名单和异常事件列表,以更好地检测未授权的数据库活动,其中包括SQL注入攻击。

增强的企业级审计功能:可以收集、整合并管理来自Oracle和第三方数据库的本地审计及事件日志;还能够通过基于XML的审计信息收集插件(Audit Collection Plugin),收集与整合来自Microsoft Windows、Microsoft Active Directory、Oracle Solaris和Oracle自动存储管理集群文件系统(Oracle Automatic Storage Management Cluster File System)以及XML数据源和表格型审计数据源的审计及事件日志。

整合的报告与提醒功能:整合的、集中式的储存库存放所有审计及事件日志,以按照预先制定的策略对日志进行实时分析;对所存储过程执行、递归SQL及运行活动提供前所未有的可视性;几十种内置报告满足法律规范要求;强大的提醒功能,包括多事件提醒和警示临界值预警。


19、相关习题

(1)What is the effect of this command?
SQL> AUDIT DROP ANY TABLE BY scott BY SESSION WHENEVER SUCCESSFUL;
A.  One audit record is created for every successful DROP TABLE command executed in the session of SCOTT
B.  One  audit  record is  generated for  the  session  when  SCOTT  grants  the  DROP  ANY  TABLE  privilege  to other users
C.  One audit record is created for the whole session if user SCOTT successfully drops one or more tables in his session
D.  One  audit  record  is  created  for  every  session  of  any  other  user  in  which  a  table  owned  by  SCOTT  is dropped successfully
E.  One audit record is created for every successful DROP TABLE command executed by any user to drop tables owned by SCOTT

答案:C

(2)To make audit information more productive, the DBA executes the following command before starting an audit operations:
   SQL>ALTER SYSTEM SET AUDIT_TRAIL=DB,EXTENDED SCOPE=SPFILE;
Which statement is true regarding the audit record generated when auditing starts after restarting the database?
A.  It contains only the plan for the SQL statement executed by the user
B.  It contains the SQL text executed by the user and the bind variables used with it
C.  It contains the plan and statistics associated with the SQL statement executed by the user
D.  It contains the plan for the SQL statement executed by the user and the bind variables used with it

答案:B

(3)In your production database, data manipulation language (DML) operations are executed on the SALES table. You have noticed some dubious values in the SALES table during the last few days.  You  are  able  to  track  users,  actions  taken,  and  the  time  of  the  action  for  this particular period but the changes in data are not tracked. You decide to keep track of both the old data and new data in the table long with the user information.
What action would you take to achieve this task?
A.  Apply fine-grained auditing.
B.  Implement value-based auditing.
C.  Impose standard database auditing to audit object privileges.
D.  Impose standard database auditing to audit SQL statements.

答案:B

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28536251/viewspace-1986290/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-12-13

  • 博文量
    204
  • 访问量
    1080485