Oracle 11g 新特性 安全性方面(默认密码,密码大小写,profile,审计)

1.默认密码

11g新增加了一个视图DBA_USERS_WITH_DEFPWD,该 视图记录了默认密码的用户,如果某一个用户更改了密码,那么就会从此视图中移除。

SQL> set pagesize 200
SQL> select * from dba_users_with_defpwd;

USERNAME
------------------------------
。。
SCOTT
。。

20 rows selected.

SQL> alter user scott identified by tiger1;

User altered.

SQL> select * from dba_users_with_defpwd;

USERNAME
------------------------------
。。。

19 rows selected.
密码更改后,scott从此视图中移除了。

SQL> alter user scott identified by tiger;

User altered.

SQL> select * from dba_users_with_defpwd;

USERNAME
------------------------------
。。。
SCOTT
。。。


20 rows selected.

不过又改回默认密码后,又重新加了进来。

2.区分密码大小写

SQL> conn scott/tiger;
Connected.
SQL> conn scott/TIGER:
ERROR:
ORA-01017: invalid username/password; logon denied


Warning: You are no longer connected to ORACLE.
SQL>

发现大写的TIGER就登入不了了,10G的情况下是不区分大小写的。

控制是否需要区别密码大小写的一个参数 是SEC_CASE_SENSITIVE_LOGON,系统 默认是true.

SQL> show parameter  SEC_CASE_SENSITIVE_LOGON

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sec_case_sensitive_logon             boolean     TRUE

另外 dba_users多了一列password_versions,用户如果是从Oracle 10g导入的,那么PASSWORD_VERSIONS的值就是“10G”,维护区分大小写的密码不依赖于 SEC_CASE_SENSITIVE_LOGON参数设置。假设SEC_CASE_SENSITIVE_LOGON参数被设置为TRUE,密码立即变为大小写敏感。

SQL> select username, password, password_versions from dba_users;

USERNAME                       PASSWORD                       PASSWORD
------------------------------ ------------------------------ --------
MGMT_VIEW                                                     10G 11G
SYS                                                           10G 11G
SYSTEM                                                        10G 11G
DBSNMP                                                        10G 11G

我的数据库是oracle11g安装好后用dbca创建的,所有都会显示10G 11G,如果是10G升级到11G的应该只会显示10G,这个没有做测试。Oracle Database 10g 数据库升级后,只有使用ALTER USER… 命令更改口令后,口令才会区分大小写。

如果您希望的话,在创建口令文件时,您也可以输入一个新参数 ignorecase 来实现 SYSDBA 口令的大小写区分,如下所示:

$ orapwd file=orapwPRODB3 password=abc123 entries=10 ignorecase=n

在以上示例中,SYSDBA 的口令将为 abc123,而不是 ABC123 或任何其他大小写变体。

通过采用区分大小写的口令,不仅使得强行破解口令更为困难,同时能够使您满足更多合规性要求。更重要的是,您可以动态地执行口令要求而不必关闭数据库。在进行升级或因升级原有应用程序而对登录问题进行调试时,这是非常有用的。

3.profiel配置文件

在 Oracle Database 11g 中,口令管理功能具有新的经过改进的验证逻辑。如果您查看 $ORACLE_HOME/rdbms/admin 下的口令验证文件 utlpwdmg.sql,就会发现脚本新建了一个名为 verify_fnction_11g 的口令函数。脚本末尾的语句如下所示:

ALTER PROFILE DEFAULT LIMIT
PASSWORD_LIFE_TIME 180
PASSWORD_GRACE_TIME 7
PASSWORD_REUSE_TIME UNLIMITED
PASSWORD_REUSE_MAX UNLIMITED
FAILED_LOGIN_ATTEMPTS 10
PASSWORD_LOCK_TIME 1
PASSWORD_VERIFY_FUNCTION verify_function_11G;

脚本将该函数附加到配置文件 DEFAULT 中。除非明确分配了其他文件,该文件是所有用户的默认配置文件。这使得认证符合许多规定的要求。

verify_function_11g功能将检查口令是否至少包含八个字符、是否至少包含一个数字和一个字母字符,以及是否至少有三个字符与以前口令不同。

该函数还确认此口令不是以下项:用户名或附加了1 到100 之间任何数字的用户名、反向的用户名、服务器名或附加了1 到100 之间数字的服务器名,或者一组众所周知的常用口令,如“welcome1”、“database1”、“oracle123”或“oracle(附加了1 到100 之间的数字)”等。

要使用这个功能就需要先启用profile功能,运行该脚本创建verify_function 和 verify_function_11G两个函数。

如果profile中命名的口令复杂性检查功能中存在错误或此功能不存在,则不能更改口令,也不能创建用户。解决方法是在概要文件中将PASSWORD_VERIFY_FUNCTION 设置为NULL,直到问题得到解决。

用sysdba权限的用户执行这个脚本后,然后修改profile,启用密码验证:

--创建函数:

SQL> CONNECT / as SYSDBA

SQL> @?/rdbms/admin/utlpwdmg.sql

 

--修改profile:

ALTER PROFILE DEFAULT

LIMIT

PASSWORD_VERIFY_FUNCTION verify_function_11g;

 

4.审计的两个改动

4.1数据库参数 audit_trail 现在默认情况下设置为 DB,也就是将审计的记录保存在数据库中,具体是在sys.AUD$表中。在以前的版本中,它的默认值为 NONE。这允许您对任何对象、语句或权限打开审计,而无需重复使用数据库。

注意:

Oracle 11g的审计记录表SYS.AUD$是放在SYSTEM 表空间。 而且增长巨快。 会占用当量的空间。当SYSTEM表空间因磁盘空间而无法扩展时将导致这部分审计记录无法生成,这将最终导致普通用户的新会话将无法正常创建,普通用户将无法登陆数据库。

升级到 Oracle Database 11g 后,默认情况下的审计将打开。如果 没有手动关闭,就要定期的转移审计的历史记录,或者直接truncate 审计表,最好是把审计表迁移到其他的表空间。

SQL> select count(*) from SYS.AUD$;

  COUNT(*)
----------
     10666

4.2第二处改动是,默认情况下更多语句处于审计范围内。清单如下:

ALTER SYSTEM
SYSTEM AUDIT
CREATE SESSION
CREATE USER
ALTER USER
DROP USER
ROLE
CREATE ANY TABLE
ALTER ANY TABLE
DROP ANY TABLE
CREATE PUBLIC DATABASE LINK
GRANT ANY ROLE
ALTER DATABASE
CREATE ANY PROCEDURE
ALTER ANY PROCEDURE
DROP ANY PROCEDURE
ALTER PROFILE
DROP PROFILE
GRANT ANY PRIVILEGE
CREATE ANY LIBRARY
EXEMPT ACCESS POLICY
GRANT ANY OBJECT PRIVILEGE
CREATE ANY JOB
CREATE EXTERNAL JOB

这两处改动带来了一些强大的即需即用的审计功能。当然,它们只是一些数据库参数和审计设置;如果需要的话,您可以轻松地关闭它们。

猜你喜欢

转载自blog.csdn.net/jolly10/article/details/81179144