7

Click here to load reader

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

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: 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

Page 2: 1.oracle 11g 用户管理新功能

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";

用户已删除。

从上面的样例来看,用户名称带有双引号,则删除时也带有双引号才行,值得提

醒的是:如果你采用带有双引号的方法创建用户的话,那么要访问该用户的对

象也要加双引号,作者在这里建议不要带有双引号。

Page 3: 1.oracle 11g 用户管理新功能

§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

Page 4: 1.oracle 11g 用户管理新功能

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_TIME 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

函数已创建。

配置文件已更改

函数已创建。

Page 5: 1.oracle 11g 用户管理新功能

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 参数,以启用口令的大小区别功能。这个参数的语法如下:

Page 6: 1.oracle 11g 用户管理新功能

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 时,不回相关信息。

Page 7: 1.oracle 11g 用户管理新功能

§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