12、概要文件和数据库审计

发布时间:2011-11-04 23:45:15   来源:文档文库   
字号:

第1章 概要文件和数据库审计

学习目标

本章内容介绍Oracle数据库概要文件Oracle数据库审计的概念通过概要文件可以进行口令管理和对用户资源进行限制。通过对数据库的审计可以监视和记录用户对数据库所作的操作,可以更好地保证数据库的安全以及数据库的高效运行。

【本章要点】

使用概要文件管理口令

使用概要文件进行资源限制

进行语句审计、权限审计和对象审计

【关键术语】

Profiles 概要文件 Password limits 口令限制

Resource limits 资源限制 Default profile 默认概要文件

Password expiration 口令失效 Password verification 口令验证

Password grace time 口令失效宽限时间

Audit 审计 Statement audit 语句审计

Privilege audit 权限审计 Object audit 对象审计

Audit trail 审计跟踪

1.1 概要文件管理

1.1.1 概要文件的作用

概要文件是口令限制和资源限制的命名集合,是Oracle安全策略的重要组成部分,利用概要文件可以对数据库用户进行口令管理和资源限制。例如使用概要文可以指定口令有效期、口令校验函数、用户连接时间以及最大空闲时间等。概要文件具有以下一些作用:

限制用户执行消耗资源过度的SQL操作。

自动断开空闲会话。

在大而复杂的多用户数据库系统中合理分配资源。

控制用户口令的使用。

在建立数据库时,Oracle会自动建立名称为DEFAULT的默认概要文件,初始的DEFAULT概要文件的所有口令及资源限制选项值均为UNLIMITED,即未进行任何口令及资源限制。当建立用户时,如果不指定概要文件,则Oracle会将DEFAULT概要文件分配给该用户。根据用户所承担任务的不同,DBA应该建立不同的概要文件,并将概要文件分配给相应用户。一个用户只能分配一个概要文件,一个概要文件可以同时包含口令限制和资源限制。

1.1.2 概要文件内容

概要文件内容包括口令和资源的限制,下面分别介绍这两部分的有关参数。

1. 口令策略参数

口令策略参数可以实现帐户锁定、口令的过期以及口令的复杂度等策略,在概要文件中的口令参数可以有以下几个:

FAILED_LOGIN_ATTEMPTS:该参数指定允许的输入错误口令的次数,超过该次数后用户帐户被自动锁定。

PASSWORD_LOCK_TIME:用于指定指定账户被锁定的天数(单位:天)

PASSWORD_LIFE_TIME:指定口令的有效期(单位:天)。如果在达到有效期前用户还没有更换口令,它的口令将失效,这时必须由DBA为它重新设置新的口令。

PASSWORD_GRACE_TIME:用于指定口令失效的宽限期(单位:天)

PASSWORD_REUSE_TIME:指定能够重复使用一个口令前必须经过的时间(单位:天)

PASSWORD_REUSE_MAX:用于指定在重复使用口令之前必须对口令进行修改的次数。PASSWORD_REUSE_TIMEPASSWORD_REUSE_MAX两个参数只能设置一个,另一个必须为UNLIMITED

PASSWORD_VERIFY_FUNCTION:指定验证口令复杂度的函数。Oracle提供了一个默认的口令校验函数,这可以通过运行脚本utlpwdmg.sql来建立该函数,脚本保存在ORACLE_HOME\rdbms\admin目录中。DBA也可以通过修改脚本来实现自己的口令校验函数。

2.资源限制参数

利用概要文件,可以对以下系统资源进行限制。

CPU时间

逻辑读

用户的并发会话数

空闲时间

连接时间

私有SGA

对这些资源的限制是通过在概要文件中设置参数来实现的,参数的值可以是一个整数,也可以是UNLIMITED(即不受限制),还可以是DEFAULT(使用DEFAULT概要文件中的参数设置)。下面分别介绍有关参数:

CPU_PER_SESSION:限制每个会话所能使用的CPU时间。参数值是一个整数,单位是百分之一秒。

SESSIONS_PER_USER:限制每个用户所允许建立的最大并发会话数。

CONNECT_TIME:限制每个会话能连接到数据库的最长时间,超过这个时间会话将自动断开。参数值是一个整数,单位是分钟。

IDLE_TIME:限制每个会话所允许的最长连续空闲时间,超过这个时间会话将自动断开。参数值是一个整数,单位是分钟。

LOGICAL_READS_PER _SESSION:限制每个会话所能读取的数据块数目。

PRIVATE_SGA:每个会话分配的私有SGA区大小(以字节为单位)。该参数只对共享服务器模式有效。

CPU_PER_CALL:用于指定每条SQL语句可占用的最大CPU时间,单位是百分之一秒。

LOGICAL_READS_PER_CALL:用于指定每条SQL语句最多所能读取的数据块数目。

1.2 使用概要文件管理口令

Oracle数据库中不同用户账户具有不同的口令,如何防止其他人窃取账户密码是DBA要重点关切的问题。为了加强用户账户的安全性,Oracle提供了概要文件来管理口令,概要文件管理口令有锁定账户、终止口令、口令历史以及口令校验等四种安全保护方式。大家需要注意,前面介绍的概要文件中共包含了7个口令管理选项,如果仅指定某个或某几个选项,那么其他选项将自动使用DEFAULT概要文件的相应选项值。

使用概要文件管理口令主要步骤是先创建概要文件,然后设置相关口令参数,最后把概要文件分配给用户。建立概要文件是使用CREATE PROFILE命令来完成的,一般情况下建立概要文件是由DBA来完成的,如果要以其他用户身份建立概要文件,则要求该用户必须具有CREATE PROFILE系统权限。

1.2.1 锁定帐户

通过使用概要文件,可以限制登录失败次数,如果连续登录的失败次数超出一定范围,那么Oracle会自动锁定账户。

【实例16-1】为了加强devp用户的口令安全,要限制其登录失败次数为3

1)以管理员身份登录

SQL>CONNECT / AS SYSDBA

已连接。

2)创建概要文件,设定相关参数

SQL>CREATE PROFILE devp_lock LIMIT

FAILED_LOGIN_ATTEMPTS 3;

配置文件已创建

3) 分配概要文件给用户devp,这既可以在建立用户时使用PROFILE子句,也可以在建立用户之后使用ALTER USER语句修改。

SQL>ALTER USER devp PROFILE devp_lock;

用户已更改。

当将概要文件分配给devp用户之后,如果以devp连接到数据库时,连续登录失败次数达到三次,那么系统会自动锁定该用户账户。此时,即使为用户devp提供了正确的口令,也将无法连接到数据库,并显示错误信息。例如:

SQL>connect devp

请输入口令

ERROR:

ORA-28000: the account is locked

1.2.2 终止口令

终止口令用于指定用户口令到期,并强制用户改变口令。当建立用户并为其提供了口令

之后,默认情况下其口令一直有效。为了加强口令安全,用户应该定期修改口令,以防止口令被泄露或被窃取。通过使用概要文件,DBA可以强制用户定期改变其自身口令。

【实例16-2】强制用户devp每隔10天修改其自身口令,并设置两天宽限期。

1)以管理员身份登录

SQL>CONNECT / AS SYSDBA

已连接。

2)创建概要文件,设定相关参数

SQL>CREATE PROFILE devp_life LIMIT

PASSWORD_LIFE_TIME 10

PASSWORD_GRACE_TIME 2;

配置文件已创建

3) 分配概要文件给用户devp

SQL>ALTER USER devp PROFILE devp_life;

用户已更改。

当将概要文件分配给用户devp之后,第10天登录会显示警告信息:

SQL>connect devp/development

ERROR

ORA_28002the password will expire within 2 days

已连接。

如果第10天未改变口令,那么第11天登录时仍然会显示类似警告信息。但用户如果第

11天仍然未改变口令,那么第12天登录时系统会强制你改变口令,并显示如下信息:

SQL>connect devp/development

ERROR:

ORA-28001: the password has expired

更改devp的口令

新口令:

重新键入新口令:

口令已更改

已连接。

1.2.3 口令历史

口令历史用于比较用户的新、旧口令,以确保用户在单位时间或特定次数内不会使用以前曾经用过的口令。当口令终止时用户必须要改变自身口令,然后才能登录,但对新口令没有进行任何限制。假定devp原有口令为development,终止口令时新口令仍然可以设置为development,这种做法显然失去了终止口令的含义。为了强制用户使用不同口令,可以使用口令历史选项。

【实例16-3】为了防止用户devp重用旧口令,强制该用户在口令终止10天之内不能重用以前口令。

1)以管理员身份登录

SQL>CONNECT / AS SYSDBA

2)创建概要文件,设定相关参数

SQL>CREATE PROFILE devp_his LIMIT

PASSWORD_LIFE_TIME 10

PASSWORD_GRACE_TIME 2

PASSWORD_REUSE_TIME 10

PASSWORD_REUSE_MAX UNLIMITED;

配置文件已创建

3) 分配概要文件给用户devp

SQL>ALTER USER devp PROFILE devp_his;

用户已更改。

注意,前面已经提到过,当使用口令历史选项时,PASSWORD_REUSE_TIMEPASSWORD_REUSE_MAX两个参数只能设置一个,另一个必须为UNLIMITED

当将概要文件分配给用户devp之后,如果前11天没有修改用户口令,那么在第12天登录时,Oracle会强制终止口令,并要求用户改变口令。但如果仍然使用过去的口令,则口令修改不能成功,如下所示:

SQL>CONNECT devp/development

ERROR:

ORA-28001: the password has expired

更改devp的口令

新口令:

重新键入新口令:

ERROR:

ORA-28007: the password cannot be reused

口令未更改

1.2.4 口令校验

口令校验是指使用PLSQL函数检查口令的有效性。在设置口令时,多数人都习惯于按照自己易记的方式(如用户名、生日等)来指定口令。但如果其他人很了解用户的各种习惯,那么口令将不再安全。通过使用口令校验函数,可以强制用户使用复杂的口令。尽管这种做法会给用户带来一些小麻烦,但却可以大大加强口令的安全性。大家需要注意,如果要使用口令校验函数,那么必须要以SYS用户建立口令校验函数,并且口令校验函数必须满足如下规范:

function_name(

userid_parameter IN VARCHAR2(30),

password_parameter IN VARCHAR2(30),

old_password_parameter IN VARCHAR2(30))

RETURN BOOLEAN

其中,userid_parameter对应于用户名,password_parameter对应于用户的新口令,old_password_parameter对应于用户的旧口令。如果函数返回值为TRUE,则表示新口令可以使用;但如果返回值为FALSE,则表示新口令不满足函数规则。另外,Oracle也提供了默认的口令校验函数VERIFY_FUNCTION,该口令校验函数具有以下一些功能:

口令最少为4个字符。

口令不能与用户名相同。

新口令与旧口令至少有三个字符不同。

口令至少包含一个阿拉伯字母、一个数字和一个特殊字符。

可以通过以SYS用户身份登录后运行脚本utlpwdmg.sql来建立默认的口令校验函数,脚本保存在ORACLE_HOME\rdbms\admin目录中。DBA也可以通过修改脚本来实现自己的口令校验函数。

【实例16-4】为用户devp指定口令校验函数以强制它使用复杂口令

1)以管理员身份登录

SQL>CONNECT / AS SYSDBA

已连接。

2)运行脚本utlpwdmg.sql建立默认口令校验函数VERIFY_FUNCTION。(当然也可自己创建口令校验函数)

SQL>@%ORACLE_HOME%/rdbms/admin/utlpwdmg.sql

函数已创建。

3)创建概要文件,设定参数

SQL>CREATE PROFILE devp_verify LIMIT

PASSWORD_LIFE_TIME 10

PASSWORD_GRACE_TIME 2

PASSWORD_VERIFY_FUNCTION verify_function;

配置文件已创建

4) 分配概要文件给用户devp

SQL>ALTER USER devp PROFILE devp_verify;

用户已更改。

这样,当修改devp用户口令时,如果不满足函数规则,会出错。如把devp的口令改成与用户名一样,则会显示如下错误信息:

SQL>alter user devp identified by devp;

alter user devp identified by devp

*

ERROR 位于第 1 :

ORA-28003: 指定口令的口令验证失败

ORA-20001: Password same as or similar to user

另外,如果你不想使用口令校验函数,则可以将PASSWORD_VERIFY_FUNCTION选项设置为NULL

1.3 使用概要文件管理资源

概要文件不仅可用于管理用户口令,也可用于限制用户的资源占用。概要文件既可以限制整个会话的资源占用,也可以限制调用级(SQL语句)的资源占用。但大家需要注意,如果要使用概要文件管理资源,则必须要激活资源限制功能,这可以通过设置初始化参数RESOURCE_LIMITTRUE做到:

ALTER SYSTEM SET RESOURCE_LIMIT=TRUE;

使用概要文件管理资源的步骤同管理口令的步骤一样,也是先创建概要文件,然后设置相关资源参数,最后把概要文件分配给用户。

1.3.1 限制会话资源

限制会话资源是指限制会话在连接期间所占用的总计资源。当超过会话资源限制时,系统要么自动断开会话并释放其所占用资源,要么不对SQL语句进行任何处理并返回错误信息。当连接到数据库时,Oracle会在服务器端为用户进程分配相应的服务器进程(占用内存资源),而当用户发出SQL语句时,所有SQL操作都是由服务器进程来执行的(占用CPU资源)。即使用户不执行任何操作,服务器进程也会一直占用内存资源。为了有效地利用CPU和内存资源,就必须对用户资源进行适当限制。

【实例16-5】数据库最多允许两个开发人员以devp用户登录进行应用开发,每个会话连接时间不能超过30min,会话空闲时间不能超过10min

1)以管理员身份登录

SQL>CONNECT / AS SYSDBA

已连接。

2)创建概要文件,设定参数

SQL>CREATE PROFILE devp_session LIMIT

CPU_PER_SESSION 5000

SESSIONS_PER_USER 2

CONNECT_TIME 30

IDLE_TIME 10;

配置文件已创建

3) 分配概要文件给用户devp

SQL>ALTER USER devp PROFILE devp_session;

用户已更改。

因为在建立概要文件时指定SESSION_PER_USER选项为2,即允许用户最多可以同时建立两个会话,所以如果用户devp的并发会话个数达到两个,那么当建立第三个会话时则会显示如下错误信息:

SQL>CONNECT devp/development

ERROR

ORA-02391exceeded simultaneous SESSIONS_PER_USER limit

因为IDLE_TIME选项被设置为10,所以如果会话空闲时间超过10min,那么Oracle会自动断开会话。

1.3.2 限制调用资源

通过限制调用资源,可以确保用户不能执行消耗资源过度的SQL操作。当超出调用级资源限制时,Oracle会自动终止语句处理并回退该语句操作。

【实例16-6】限制用户devp的调用级资源。

1)以管理员身份登录

SQL>CONNECT / AS SYSDBA

已连接。

2)创建概要文件,设定参数

SQL>CREATE PROFILE devp_call LIMIT

CPU_PER_CALL 200

LOGICAL_READS_PER_CALL 3;

配置文件已创建

3) 分配概要文件给用户devp

SQL>ALTER USER devp PROFILE devp_call;

用户已更改。

因为在建立概要文件devp_call时指定了LOGICAL_READS_PER_CALL选项为3,所以如果执行单条SQL语句访问的数据块总数超过3,则会显示如下错误信息:

SQL> CONNECT devp/development

已连接。

SQL>select * from scott.emp;

select * from scott.emp

*

ERROR 位于第 1 :

ORA-02395: 超出 IO 使用的调用限制

1.4 其它操作

1.4.1 修改概要文件

当口令和资源限制无法满足用户的实际需求时,你就需要修改概要文件中的口令及资源限制参数。修改概要文件是使用ALTER PROFILE命令由DBA来完成的;如果要以其它用户身份修改概要文件,则要求该用户必须具有ALTER PROFILE系统权限。需要注意,修改概要文件对已存在会话没有影响,而只对新会话起作用。

【实例16-7】修改用户devp的口令和资源限制。

1)以管理员身份登录

SQL>CONNECT / AS SYSDBA

已连接。

2)修改概要文件

SQL>ALTER PROFILE devp_call LIMIT

SESSIONS_PER_USER 2

FAILED_LOGIN_ATTEMPTS 2

CPU_PER_CALL 200;

配置文件已更改

修改用户devp当前的概要文件后,当devp重新登录后,其口令和资源限制就发生变化了,如该用户的口令失败次数只能两次。

1.4.2 删除概要文件

当某个概要文件不需要时,可以删除它。删除概要文件是使用DROP PROFILE命令由DBA来完成的,如果要以其他用户身份删除概要文件,则要求该用户必须具有DROP PROFILE系统权限。

【实例16-8】删除概要文件devp_call

1)以管理员身份登录

SQL>CONNECT / AS SYSDBA

已连接。

2)删除概要文件

SQL>DROP PROFILE devp_call CASCADE;

配置文件已丢弃

需要注意,如果概要文件已经被分配给某个用户,那么当删除概要文件时必须带有CASCADE选项。

如果用户的概要文件已经被删除,Oracle将自动为用户重新指定DEFAULT概要文件。

1.4.3 显示概要文件信息

Oracle提供了几个数据字典视图查询有关概要文件的信息。下面分别介绍。

1.显示用户的概要文件

当建立或修改用户时,通过PROFILE子句可以为用户分配概要文件。如果没有显式地分配概要文件,那么Oracle会将DEFAULT概要文件自动分配给用户。那么如何确定用户的概要文件呢?通过查询数据字典视图DBA_USERS,可以取得用户的概要文件信息。

【实例16-9】查询用户devp的概要文件

1)以管理员身份登录

SQL>CONNECT / AS SYSDBA

已连接。

2)查询

SQL>SELECT profile FROM DBA_USERS WHERE username=’DEVP’;

PROFILE

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

DEFAULT

2.显示概要文件的内容

数据字典视图DBA_PROFILES中包含了每个概要文件的内容,通过查询该数据字典视图可以取得用户的口令限制及资源限制信息。

【实例16-10】查询概要文件devp_session的口令和资源限制。

1)以管理员身份登录

SQL>CONNECT / AS SYSDBA

已连接。

2)查询

SQL>SELECT * FROM DBA_PROFILES

WHERE profile=’DEVP_SESSION’;

PROFILE RESOURCE_NAME RESOURCE_TYPE LIMIT

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

DEVP_SESSION CONNECT_TIME KERNAL 30

DEVP_SESSION IDLE_TIME KERNAL 10

DEVP_SESSION SESSIONS_ PER_USER KERNAL 3

DEVP_SESSION CPU_PER_SESSION KERNAL 5000

DEVP_SESSION PASSWORD_LIFE_TIME PASSWORD DEFAULT

其中:

PROFILE:概要文件名称。

RESOURCE_NAME:口令或资源选项名。

RESOURCE_TYPEPASSWORD表示口令管理选项,而KERNAL则表示资源限制选项。

LIMIT:概要文件选项值。

1.5 用控制台管理概要文件

用控制台管理概要文件过程如下:

1以独立方式启动控制台,连接到要管理的数据库。展开数据库中的“安全性”项目,然后选中其中的“概要文件”选项,如图16-1

2如果要创建概要文件,在“概要文件”选项上右击鼠标,然后在快捷菜单中选择“创建”,弹出如图16-2的对话框。进入“一般信息”选项卡,首先为新建的概要文件命名,然后可以对各资源参数进行设置。在设置资源参数时,可以直接在文本框中输入参数值,也可以从对应的下拉列表中选择一个适当的值。然后进入“口令”选项卡,设置概要文件中的口令参数,如图16-3

3完成设置后,单击“创建”按钮。

如果要修改概要文件,在图16-1对话框中双击要修改的概要文件,然后同步骤2一样,在各个选项卡中修改概要文件的口令和资源参数,最后按确定按钮。

16-1 控制台中数据库的概要文件

16-2 为新建概要文件设置资源参数

16-3新建概要文件设置口令参数

1.6 数据库审计

1.6.1 审计的作用

Oracle DBA而言,审计就是监视和记录用户对数据库所作的操作,审计记录可以告诉你用户对数据库做了什么操作,使用了哪些系统权限,在高峰时期有多少用户在使用数据库,每个会话平均持续多长时间以及其它有关事实。

审计能帮助DBA完成的操作类型包括:

监视用户活动,记录企图闯入数据库的失败尝试。

确定最繁忙的表,以便对它作额外的调整。

调查对关键表的可疑的更改。

获得数据库的使用信息,规划资源消耗。

通过对数据库审计,可以帮助DBA更好地保证数据库的安全以及数据库的高效运行。审计记录既可以存放到SYS模式的AUD$表中,也可以存放到操作系统文件中。

1.6.2 审计的激活

我们知道,为了调查数据库可疑活动或收集活动数据,可以使用审计。但是对数据库的审计是需要激活的,激活审计是通过设置初始化参数AUDIT_TRAIL来完成的。初始化参数AUDIT_TRAIL具有三种取值:

DBTRUE:表示激活审计并将审计记录存放到SYS.AUD$表中。

OS:激活审计并将审计记录存放到操作系统文件中。

FALSENONE:表示禁止审计。

该初始化参数没有默认值。

需要注意的是,特权用户操作(如启动、关闭数据库等)总是被审计,不需要激活的,并且其审计信息会存放到警告文件中,而不是存放在审计记录中。

【训练16-11】设置初始化参数,激活数据库的审计

1)连接数据库

SQL>CONNECT / AS SYSDBA

已连接。

2)设置初始化参数

SQL>ALTER SYSTEM SET AUDIT_TRAIL=DB SCOPE=SPFILE;

系统已更改。

3)重新启动数据库

SQL>STARTUP FORCE

这样,数据库审计被激活了,并且审计信息将被存放到SYS.AUD$表中。

1.6.3 审计的级别

Oracle数据库的审计分为三个级别,分别是语句级审计、权限级审计以及对象级审计。

语句级审计用于审计特定类型的SQL语句,而不去考虑该语句作用于哪个对象,例如可以审计某个DDL语句。可以对特定的数据库用户或数据库的每个用户设置语句审计。

权限级审计用于审计系统权限的使用,例如审计CREATE ANY TRIGGER系统权限,我们可以对特定的数据库用户或数据库的每个用户设置权限审计。

对象级审计用于审计在特定模式对象上所执行的特定操作,例如审计在表HR.EMPLOYEES上的SELECT操作。对象审计总是对所有用户设定的。

要进行某个级别的审计,需要DBA手动设置,下面来讨论这个问题。

1.7 设置审计操作

在激活审计之后,为了在某个级别上进行审计,DBA必须用命令设置审计操作。设置审计操作是使用AUDIT命令来完成的,在设置审计操作时可以带有以下一些选项:

WHENEVER SUCCESSFUL | WHENEVER NOT SUCCESSFUL:选项WHENEVER SUCCESSFUL指要审计成功执行的语句,而WHENEVER NOT SUCCESSFUL指要审计执行失败的语句。如果忽略这两个选项,则无论成功与否都要审计。

BY SESSION:该选项表示在同一个会话中对相同类型的语句或同一对象的相同操作只生成一条审计记录。BY SESSION是默认选项。

BY用户名:指定审计某个用户的操作。

BY ACCESS:该选项表示每次执行语句都会生成一条审计记录。如果审计DDL语句或DDL权限,那么无论是否指定BY ACCSS选项,Oracle总是使用BY ACCESS选项。

注意:特权用户和SYS用户的操作不会生成审计记录。

下面介绍如何设置各个级别的审计操作。

1.7.1 语句审计

语句审计用来审计特定类型的SQL语句。设置语句审计一般是由DBA来完成的,如果要以其他用户身份设置语句审计,那么要求该用户必须具有AUDIT SYSTEM系统权限。需要注意的是,当指定了语句审计之后,只会对将来会话起作用,而对当前会话不起作用。

【训练16-12】设置语句审计,检查审计结果。

1)以管理员身份登录

SQL>CONNECT / AS SYSDBA

已连接。

2)命令设置

SQL>AUDIT TABLE BY ACCESS;

审计已成功。

3)实际验证

SQL>CONNECT devp/development

已连接。

SQL>CREATE TABLE tt(a int);

表已创建。

SQL>DROP TABLE tt;

表已丢弃。

4)检查结果

SQL>CONNECT / AS SYSDBA

已连接。

SQL>SELECT to_char(timestamp,'YYYY-MM-DD HH24:MI:SS'), username,obj_name,action_name FROM DBA_AUDIT_TRAIL;

TO_CHAR(TIMESTAMP,' USERNAME OBJ_NAM ACTION_NAME

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

2006-04-04 08:43:42 DEVP TT CREATE TABLE

2006-04-04 08:44:09 DEVP TT DROP TABLE

当设置了语句审计之后,如果用户执行了相关SQL语句,那么Oracle会将相应操作信息记载到审计记录中。例如,当用户DEVP执行CREATE TABLEDROP TABLE等操作后,Oracle会将该信息记载到表SYS.AUD$中。DBA可以直接查询该表取得审计信息,也可查询数据字典视图DBA_AUDIT_TRAIL取得审计跟踪信息。

1.7.2 权限审计

权限审计用于审计系统权限的使用。大家需要注意,当指定了权限审计之后,只会对将来会话起作用,而对当前会话不起作用。设置权限审计一般是由DBA来完成的,如果要以其他用户身份设置权限审计,那么要求该用户必须具有AUDIT SYSTEM系统权限。

【训练16-13】设置权限审计,审计create view系统权限。

1)以管理员身份登录

SQL>CONNECT / AS SYSDBA

已连接。

2)审计设置

SQL>AUDIT create view WHENEVER SUCCESSFUL;

审计已成功。

3)创建视图

SQL>CONNECT devp/development

已连接。

SQL>CREATE VIEW VEMP

AS

select empno,ename from scott.emp;

视图已建立。

4)查询审计结果

SQL>CONNECT / AS SYSDBA

已连接。

SQL>SELECT to_char(timestamp,'YYYY-MM-DD HH24:MI:SS'),username,obj_name,priv_used FROM DBA_AUDIT_TRAIL;

TO_CHAR(TIMESTAMP,' USERNAME OBJ_NAME PRIV_USED

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

2006-04-04 09:07:02 DEVP VEMP CREATE VIEW

因为在设置权限审计时指定了WHENEVER SUCCESSFUL选项,所以只有create view 权限执行成功后才会将相应信息记载到审计记录中。

当执行了与权限相关的操作,Oracle则会将该信息记载到审计记录中,通过查询数据字典视图DBA_AUDIT_TRAIL可以取得审计跟踪信息。

1.7.3 对象审计

对象审计用于审计在特定模式对象上所执行的SQL操作。需要注意,当指定了对象审计之后,不仅对将来会话起作用,而且对当前会话也生效。一般情况下,指定对象审计是由DBA来完成的,如果要以其他用户身份设置对象审计,那么要求该用户必须是对象所有者或具有AUDIT ANY系统权限。

【训练16-14】设置对象审计,审计对表SCOTT.DEPT所作的修改操作。

1)以用户登录

SQL>CONNECT / AS SYSDBA

已连接。

2)审计设置

SQL>AUDIT UPDATE ON scott.dept;

审计已成功。

3)修改SCOTT. DEPT表,以验证对象审计。

SQL>CONNECT scott/tiger

已连接。

SQL>UPDATE dept SET loc=’Shenzhen’ WHERE deptno=10;

4)查询审计结果

SQL>CONNECT / AS SYSDBA

已连接。

SQL>SELECT to_char(timestamp,'YYYY-MM-DD HH24:MI:SS'),username,obj_name, action_name FROM DBA_AUDIT_TRAIL;

TO_CHAR(TIMESTAMP,' USERNAME OBJ_NAM ACTION_NAME

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

2006-04-04 10:12:07 SCOTT DEPT SESSION REC

设置了对象审计后,当每次修改SCOTT.DEPT后,Oracle都会将信息记载到审计记录中。

用户scott执行了与对象审计相关的操作,那么Oracle就将信息记载到审计记录中了。通过查询据字典视图DBA_AUDIT_TRAIL,可以获得该审计信息。

1.8 其它审计操作

1.8.1 显示审计选项

在使用审计时,用户可能经常需要查看已经设置了哪些审计选项,并根据需要确定要增加的审计选项。如下一些数据字典视图包含了已经设置的各种审计选项:

ALL_DEF_AUDIT_OPTS:包含系统默认的审计选项。

DBA_STMT_AUDIT_OPTS:包含已经设置的语句审计选项。

DBA_PRIV_AUDIT_OPTS:包含已经设置的权限审计选项。

DBA_OBJ_AUDIT_OPTS 包含已经设置的对象审计选项。

【训练16-15】查询相关数据字典视图,显示已经设置的语句审计选项。

1)以SYS帐号登录

SQL>CONNECT / AS SYSDBA

已连接。

2)查询数据字典视图

SQL>SELECT user_name,audit_option,success

FROM dba_stmt_audit_opts;

USER_NAME AUDIT_OPTION SUCCESS

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

TABLE BY ACCESS

CREATE VIEW BY ACCESS

DEVP SELECT ANY TABLE BY SESSION

【练习16-1】查询相关数据字典视图,显示已经设置的权限审计和对象审计选项。

1.8.2 显示审计跟踪结果

当执行了与审计相关的操作之后,Oracle会将审计跟踪结果记载到表SYS.AUD$中,通过查询表SYS.AUD$可以获得审计跟踪结果。另外,查询数据字典视图DBA_AUDIT_TRAIL也可以获得审计跟踪结果,它是基于表SYS.AUD$的视图。如下所示:

SQL>SELECT obj_name,action_name FROM dba_audit_trail;

OBJ_NAM ACTION_NAME

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

TT CREATE TABLE

TT DROP TABLE

VEMP CREATE VIEW

另外,还有一些数据字典视图也可以获得审计跟踪结果:

DBA_AUDIT_SESSION:显示与会话相关的审计跟踪结果,例如连接和断开连接等。

DBA_AUDIT_OBJECT:显示审计涉及到的模式对象。

DBA_AUDIT_STATEMENT:显示语句审计的跟踪结果。。

1.8.3 禁止审计

当设置的审计操作完成了相应的审计任务之后,应该禁止审计操作,以免产生太多的审计信息占用系统资源。禁止审计操作是使用NOAUDIT命令由DBA来完成的,如果以其他用户身份禁止语句或权限审计操作,则要求用户必须具有AUDIT SYSTEM系统权限;而如果以其他用户身份禁止对象审计操作,则要求用户必须是对象所有者或具有AUDIT ANY系统权限。

【训练16-16】禁止语句审计。

1)以管理员身份登录

SQL>CONNECT / AS SYSDBA

已连接。

2)禁止审计

SQL>NOAUDIT TABLE;

审计未成功。

当执行了以上语句之后,用户所执行的语句审计信息就不会被记载到审计跟踪记录中了。

1.8.4 删除审计信息

当激活了数据库审计之后,随着时间的推移,审计跟踪信息会越来越多。但是过去审计的信息可能已经不再需要,此时用户应该删除不需要的审计跟踪记录,以释放其所占用的空间。一般情况下,删除审计跟踪记录是由DBA来完成的,如果要以其他用户身份删除审计跟踪记录,则要求用户必须具有DELETE_CATALOG_ROLE角色。

【训练16-17】删除审计记录。

1)以管理员身份登录

SQL>CONNECT / AS SYSDBA

已连接。

2)删除审计记录

SQL>DELETE FROM SYS.AUD$;

已删除36行。

1.9 小结

通过概要文件可以实施口令管理策略,资源进行限制。每个用户都有一个默认生效的概要文件,用户也可以创建新的概要文件,来实施自定义管理策略。对口令的管理包括,指定登录失败次数指定用户口令有效期,账户锁定天数,口令校验函数等对资源的限制包括,用户并发会话数,用户会话时间,用户会话空闲时间、用户会话CPU使用时间等。

通过审计我们可以知道用户对数据库所作的操作,以及使用了哪些系统权限等信息Oracle数据库的审计分为三个级别,分别是语句级审计、权限级审计对象级审计。审计活动需要激活,审计的结果记录在数据字典SYS.AUD$表中,通过查询数据字典视图DBA_AUDIT_TRAIL也可以获得审计跟踪结果

1.10 综合训练项目

目标完成概要文件管理和数据库审计有关操作,写出操作步骤和命令。

准备Windows 2000 ServerWindows XP操作系统、Oracle数据库服务器环境。

时间50分钟

步骤

查询可以使用如下数据字典视图。

DBA_PROFILES

DBA_USERS

dba_priv_audit_opts

DBA_AUDIT_TRAIL

1SYS用户登录,创建用户Jeff,然后运行脚本: $ORACLE_HOME\rdbms\admin\utlpwdmg.sql

创建默认口令校验函数VERIFY_FUNCTION,接着创建概要文件,设置口令校验函数为默认口令校验函数VERIFY_FUNCTION,最后把概要文件分配给用户Jeff

2把用户Jeff的口令改为Jeff,发生什么情况?试把用户Jeff的口令修改为另一个符合默认口令校验函数的口令。

提示:口令必须至少一个数字,一个字母和一个特殊字符。

3使用ALTER PROFILE命令修改默认概要文件DEFAULT的参数,保证:

两次登录失败,帐户被锁住。

帐户有效期30天。

同样口令的重用时间至少1分钟以后

口令失效宽限期5

然后查询数据字典视图DBA_PROFILES,以确保以上设置正确。最后把DEFAULT概要文件分配给Jeff

4以用户Jeff登录,输入错误口令两次,第三次输入正确口令,将出现什么情况?

5SYS用户登录,查询数据字典视图DBA_USERS,看用户Jeff是否被锁住了。然后把用户Jeff解锁,再以用户Jeff登录。

提示:使用ALTER USER命令解锁。

6SYS用户登录,修改DEFAULT概要文件,把所有口令管理的参数设为UNLIMITED

7以用户Jeff登录,输入错误口令两次,第三次输入正确口令,将出现什么情况?为什么?

8SYS帐号登录,在数据库上激活审计并设置SELECT ANY TABLE权限审计。

9devp用户登录,查询scott.emp

10SYS帐号下查看数据字典视图DBA_AUDIT_TRAIL,以获取SELECT ANY TABLE权限的审计结果。

11SYS帐号下查看数据字典视图dba_priv_audit_opts,以显示已经设置的权限审计选项。

1.11 练习

1.概要文件不能用来限制下面哪一项?

ACPU时间 B.连接到数据库的时间

C.会话的最大空闲时间 D.读数据块的时间

2.下面哪个命令用来分配概要文件给一个用户

AALTER PROFILE BALTER USER

CSET PROFILE DALTER ROLE

3.下面哪一个是不正确的?

A.当数据库创建时,Oracle会创建一个名为DEFAULT的概要文件

B.概要文件不能被更名

CDEFAULT是一个有效的概要文件名

DDEFAULT概要文件中SESSION_PER_USER的初始值是5

4.当创建一个用户并不明确指明概要文件时,将产生什么效果?

AOracle提示输入概要文件 B.没有概要文件分配给用户

CDEFAULT概要文件分配给用户 DSYSTEM概要文件分配给用户

5.以下哪个数据字典视图包含用户的口令失效期?

ADBA_PROFILES BDBA_USERS

CDBA_PASSWORDS DV$SESSION

6.管理口令必须激活资源限制吗?

A.是 B.不是

7.为了同时指定口令限制和资源限制,需要给用户分配几个PROFILE?

A.两个 B.三个

C.一个

8.要查看某个概要文件的资源限制参数,应当查询哪一个数据字典视图?

ADBA_USERS BDBA_TABLES

CDBA_PROFILES DDBA_OBJECTS

9.假设DBADEFAULT概要文件中将口令校验函数设为默认的VERIFY_FUNCTION。某用户ABC被指定使用DEFAULT概要文件,并且他当前的口令为TIME2,那么下面哪个口令能作为他的下一个新口令?

AABC BABC1

CABC_D DABC4_DE

10.要为已有的用户指定概要文件,必须具有哪一种系统权限?

AALTER USER BCREATE USER

CALTER PROFILE DCREATE PROFILE

11.下列资源参数所控制的资源限制中哪一种是在调用级的?

APRIVATE_SGA BCONNECT_TIME

CCPU_PER_SESSION DLOGICAL_READS_PER_CALL

12.概要文件中下面哪一个口令参数能够限制用户在重用原口令之前需要一定的天数?

APASSWORD_REUSE_TIME BPASSWORD_REUSE_MAX

CPASSWORD_LIFE_TIME DPASSWORD_REUSE_DAYS

13.哪一种功能是数据库审计所不具有的功能?

A.对执行过的语句进行审计

B.对权限的使用情况进行审计

C.对数据库中发生的错误进行审计

D.对对象的操作进行审计

14.以下哪些角色不能删除审计跟踪记录?

ACONNECT

BRESOURCE

CDBA

DDELETE_CATALOG_ROLE

15.以下哪个数据字典视图可以显示已经设置的权限审计选项

ADBA_OBJ_AUDIT_OPTS

BALL_DEF_AUDIT_OPTS

CDBA_STMT_AUDIT_OPTS

DDBA_PRIV_AUDIT_OPTS

16.如果要求对对象的SQL操作执行成功后才记录审计跟踪信息,在设置审计选项时使用下列哪个参数?

ABY SESSION

BBY ACCESS

CWHENEVER NOT SUCCESSFUL

DWHENEVER SUCCESSFUL

本文来源:https://www.2haoxitong.net/k/doc/ea83543210661ed9ad51f3b7.html

《12、概要文件和数据库审计.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式