1.Oracle 11g 用户管理新功能

§1 Oracle 11g 用户管理新功能
关键字:Oracle、User、password、security
读者级别:初级
作者:赵元杰
概要:做过Oracle系统DBA的人员都具有这样的体会:每个Oracle版本在用户和口令的安全管理上都存在些差异,特别是Oracle 11g版本在管理用户功能上系统进行了较大的改动。比如:口令可区别大小写、不建议使用默认口令等。这里给出基于Oracle 11g版本的用户创建与口令等的几点安全知识介绍。
§1.1 用户与方案(Schema)
Oracle 系统中的用户是一个可登录到数据库的账户;而方案(schema)或模式是一组对象的集合名词(或某一用户下所有数据库对象的集合构成一个方案)。当Oracle用户具有一定权限后,该用户可创建自己的对象,也可以不创建任何对象。当用户创建对象后,这个用户就自动成为方案(schema)或模式了。但是,你是否真正理解Oracle系统的user 与schema的细微差异并不重要。
这里讨论的用户与模式主要是让使用Oracle 系统的人员了解某个用户是否有对象,用户有对象才能称为schema,请看下面的语句的结果:

SQL> create user "赵元杰" identified by zhao_ABC_#123 default tablespace users;

用户已创建。

SQL> select username,created from dba_users
2 where username NOT IN (select distinct owner from dba_objects);

USERNAME CREATED
------------------------------------------------------------ --------------
赵元杰 17-2月 -12
MGMT_VIEW 30-3月 -10
NLS_SORT 17-2月 -12
SPATIAL_WFS_ADMIN_USR 30-3月 -10
XS$NULL 30-3月 -10


MDDATA 30-3月 -10
ANONYMOUS 30-3月 -10
DIP 30-3月 -10
APEX_PUBLIC_USER 30-3月 -10
SPATIAL_CSW_ADMIN_USR 30-3月 -10

已选择10行。

SQL> drop user "赵元杰" ;

用户已删除。


从上面语句获得的结果来看,刚创建的"赵元杰"只是一个普通Oracle账户(用户)而已,它并不是方案。
§1.2 创建用户规范问题
创建Oracle 系统中的用户(账户)的名称比较随意;比如用户名称可以是普通的字符与数字串构词,这些字符串可带有双引号,比如:
SQL>

SQL> show user
USER 为 "SYS"
SQL> create user "zhao" identified by zhao_ABC_#123 default tablespace users;

用户已创建。

SQL> drop user zhao;
drop user zhao
*
第 1 行

出现错误:
ORA-01918: 用户 'ZHAO' 不存在


SQL> drop user "zhao";

用户已删除。



从上面的样例来看,用户名称带有双引号,则删除时也带有双引号才行,值得提醒的是:如果你采用带有双引号的方法创建用户的话,那么要访问该用户的对象也要加双引号,作者在这里建议不要带有双引号。

§1.3 如何使用强口令(Strong Password)
§1.3.1 理解Oracle 11g 版本默认口令管理
Oracle11g版本虽然提供了很强安全功能。但是,默认情况,Oracle11g系统并没有启用强口令管理,比如:
SQL> select * from v$version;

BANNER
----------------------------------------------------------------------------------------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for 64-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
--
SQL> --使用保留字修改口令
SQL> ALTER user scott identified by SESSION_CACHED_CURSORS ;

用户已更改。

SQL> ALTER user scott identified by RETURING ;

用户已更改。

SQL> --使用保留字给用户命名:
SQL> CREATE user RETURING identified by RETURING ;

用户已创建。


从上面的试验结果来看,我们给出很简单的口令,Oracle 11g 页允许通过,显然,默认情况下,口令的管理并不严格。
§1.3.2 如何启用Oracle 11g强口令管理
Oracle11g版本与之前版本类似,也提供了严谨的口令管理功能,但是,需要DBA进行启用,主要的启用操作非常简单,详细下面的脚本:

--登录到sysdba
SQL> col profile for a20
SQL> col resource_name for a28
SQL> select * from dba_profiles where resource_type='PASSWORD'
2 order by profile;

PROFILE RESOURCE_NAME RESOURCE_TYPE LIMIT
-------------------- ---------------------------- ---------------- --------------------------------------------------------------------------------
DEFAULT PASSWORD_REUSE_TIME PASSWORD UNLIMITED
DEFAULT PASSWORD_LOCK_TIME PASSWORD 1
DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD 10
DEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD NULL
DEFAULT PASSWORD_LIFE_TIME PASSWORD 180
DEFAULT PASSWORD_REUSE_MAX PASSWORD UNLIMITED
DEFAULT PASSWORD_GRACE_TIME PASSWORD 7
MONITORING_PROFILE PASSWORD_GRACE_TIME PASSWORD DEFAULT
MONITORING_PROFILE PASSWORD_LOCK_TIME PASSWORD DEFAULT
MONITORING_PROFILE PASSWORD_VERIFY_FUNCTION PASSWORD DEFAULT
MONITORING_PROFILE PASSWORD_REUSE_TI

ME PASSWORD DEFAULT
MONITORING_PROFILE PASSWORD_LIFE_TIME PASSWORD DEFAULT
MONITORING_PROFILE FAILED_LOGIN_ATTEMPTS PASSWORD UNLIMITED
MONITORING_PROFILE PASSWORD_REUSE_MAX PASSWORD DEFAULT

已选择14行。

上面的查询结果中PASSWORD_VERIFY_FUNCTION 项为 NULL,表明系统没有启用严格口令管理。需要DBA 进行下面的启用操作:
1.以 sysdba 运行 utlpwdmg.sql 脚本:
SQL>
SQL> show user
USER 为 "SYS"
--
SQL> @E:\app\dell\product\11.2.0\dbhome_2\RDBMS\ADMIN\utlpwdmg.sql

函数已创建。


配置文件已更改


函数已创建。



2.以 sysdba 修改profile中的口令验证函数(PASSWORD_VERIFY_FUNCTION)项:



SQL>
SQL> --然后设置profile使用该函数来检查密码即可
SQL> ALTER PROFILE default Limit PASSWORD_VERIFY_FUNCTION verify_function_11G;

配置文件已更改

SQL> create user nls_sort identified by zhao_ABC
2 default tablespace USERS;
create user nls_sort identified by zhao_ABC
*
第 1 行出现错误:
ORA-28003: 指定口令的口令验证失败
ORA-20008: Password must contain at least one digit, one character

SQL> CREATE user nls_sort identified by abc_123_ZHAO#
2 default tablespace USERS;

用户已创建。


3.随时可屏蔽PASSWORD_VERIFY_FUNCTION严格口令管理功能,你可使用:



--停止密码检验函数:

SQL>alter profile DEFAULT limit password_verify_function null;



§1.4 Oracle 11g 安全性相关参数
一般来说,Oracle 系统增加新功能对应相关的新参数,下面是Oracle 11g 版本在安全方面的新增参数的使用说明。
§1.4.1 sec_case_sensitive_logon参数
一直以来,Oracle 系统的口令不分大小写,但为了安全的增强,Oracle 11g 版本新增加sec_case_sensitive_logon参数,以启用口令的大小区别功能。这个参数的语法如下:

sec_case_sensitive_logon={true | false}

当参数设置 为TRUE 时表示启用口令大小写区别功能。

§1.4.2 防止Dos攻击参数
近年来,黑客开始重视数据库的攻击,对于Oracle 系统来说,为防止 DoS 攻击,新增加了sec_protocol_error_further_action和sec_protocol_error_trace_action参数,sec_protocol_error_further_action参数的语法为:

sec_protocol_error_further_action={ CONTINUE | (DELAY,integer) | (DROP,integer) }

CONTINUE : 这是默认值,就不是進行任何处理
DROP : 去除使用者的登入权限
DELAY : 延长使用者的再入登入的间隔时间,单位是秒

另外,sec_protocol_error_trace_action参数的语法如下:

sec_protocol_error_trace_action={ NONE | TRACE | LOG | ALERT }

NONE : 沒有动作
TRACE : 默认值,写入trace中
LOG : 写入alert log中
ALERT : 由dba手动或OEM中设定alert信息

§1.4.3 防止强力攻击参数


为了防止任何可能的强力攻击时,可设置sec_max_failed_login_attempts 参数,这个参数语法如下:

sec_max_failed_login_attempts={10|1 to unlimited}

当设置为unlimited 时,攻击者可进行多次的试图登录。

§1.4.4 sec_return_server_release_banner
这个参数了设置是否回传 Oracle 版本的相关信息到连接的客户端,语法如下:

可设定不回传oracle版本相关的信息:sec_return_server_release_banner={true | false}

当参数设置为TRUE时,不回相关信息。

§1.5 Oracle 11g 用户默认口令
Oracle 11g 版本在安全方面除了增加上面的功能外,也对使用默认口令的用户进行监控,还新增加数据字典DBA_USERS_WITH_DEFPWD用于记录使用默认口令的用户,下面简单的试验操作:

--登录到sysdba
SQL> conn / as sysdba

已连接。

SQL> alter user scott identified by change_on_install;

用户已更改。

SQL> select * from dba_users_with_defpwd where username = 'SCOTT';

USERNAME
------------------------------
SCOTT




相关文档
最新文档