暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 12c数据库应用用户密码大小写敏感策略管理方法

开系植物园 2018-04-26
2263

随着Oracle数据库版本的不断演变,其应用用户密码管理策略也不断调整。 在最新发布的Oracle12cR2 版本中,其默认启用应用用户密码大小写敏感策略(即ABCD不同于abcd),且同11g相比在是否启用用户密码大小写敏感的配置方法上发生较大的变化,就是说原11g版通过设置参数sec_case_sensitive_logon=false关闭大小写敏感(该参数默认为true,调整后用户登录数据库密码不区分大小写)的方法在12c不再适用。

针对大量由11g升级到12c应用,由于源环境的应用用户密码采取不区分大小写的策略,为保证应用兼容性,在升级到新版本后需要继续保持该策略。而针对该项设置的方法同11g相比发生了变化,传统设置方法不再有效, 需要针对新版本针对性研究。

下文以12.2.0.1 for linux x86-64版本为例,针对设置方法进行了详细介绍,供大家参考。

一、12c版本数据库默认启用大小写敏感的管理策略

  12c数据库在创建应用用户后,即默认启用了用户密码大小写敏感的策略,这个和11g是的默认策略是保持一致,对应用用户密码管理的精细化程度给出了更高要求。下面的例子可以看到密码大小写在数据库内部的处理变化

1、数据库参数保持默认值

SQL> show parametersec_case_sensitive_logon

 

NAME                                 TYPE        VALUE

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

sec_case_sensitive_logon             boolean     TRUE

2、创建一个包含大小写的应用用户

SQL> createuser test identified by Test1234;

User created.

3、登陆验证

(1)区分大小写的密码登陆成功

Connected to:

Oracle Database 12c Enterprise EditionRelease 12.2.0.1.0 - 64bit Production

 

SQL> conntest/Test1234

Connected.

(2)不区分大小写的密码登陆失败

全部小写失败:

SQL> conntest/test1234

ERROR:

ORA-01017: invalidusername/password; logon denied

Warning: You are no longer connectedto ORACLE.

全部大写也失败:

SQL> conntest/TEST1234

ERROR:

ORA-01017: invalid username/password;logon denied

Warning: You are no longer connectedto ORACLE.

二、沿用11g传统配置方法,在12c不再有效

我们按照11g的配置方法,关闭数据库的大小写敏感参数,验证是否取得预期效果

1、调整数据库参数配置

SQL> alter system set sec_case_sensitive_logon=FALSE scope=both;

2、验证是否取得预期效果

Enter user-name: test/Test1234

ERROR:

ORA-01017: invalid username/password;logon denied

 

Enter user-name: test/test1234

ERROR:

ORA-01017: invalid username/password;logon denied

 

结论:无法连接到数据库

 

 这表明11g通用的方法在12.2版本已经不再使用,需要研究新的配置方法。

三、在12c版本正确关闭用户密码大小写敏感的设置方法

      我们经过大量查阅官方文档,反复模拟,总结出以下标准步骤,可有效解决密码大小写敏感的问题,其步骤为:

1、调整数据库参数配置

SQL> alter system set sec_case_sensitive_logon=FALSE scope=both;

2、调整sqlnet.ora参数

调整$ORACLE_HOME/network/admin/sqlnet.ora参数,修改其中的SQLNET.ALLOWED_LOGON_VERSION_SERVER配置项,将其值设置为11,如果无该配置项或者sqlnet.ora 文件,手工添加即可。

vi $ORACLE_HOME/network/admin/sqlnet.ora

SQLNET.ALLOWED_LOGON_VERSION_SERVER=11

3、重启监听

$ lsnrctl stop listener

$ lsnrctl start listener

此项配置后12.2数据库即对用户大小写不敏感

4、先创建用户,后调整参数,策略未生效。

SQL> conntest/test1234

ERROR:

ORA-01017: invalid username/password;logon denied

Warning: You are no longer connectedto ORACLE.

SQL> conntest/Test1234

ERROR:

ORA-01017: invalid username/password;logon denied

5、重新设置密码后,策略生效。

SQL> alteruser test identified by Test1234;

User altered.

SQL> conntest/test1234

Connected.

SQL> exit

SQL> conntest/TEST1234

Connected.

---大小写已经不敏感。

6、对于调整参数后新创建的用户,策略已经生效

SQL> create user test_after identified by Test1234;

User altered.

SQL> conntest_after/test1234

Connected.

SQL> exit

SQL> conntest_after/TEST1234

Connected.

 

结论:

    遵循以上的配置步骤,12.2数据库即关闭了用户密码大小写敏感的策略,和11g保持一致。

    推荐在数据库实例创建结束后即配置相关参数,确保应用用户创建时自动生效。

 

四、在不同版本之间迁移数据库后用户密码大小写策略的变化

   对于从11g版本升级到12.2版本数据库,原11g环境是关闭大小写敏感的,而在12.2版本默认开启的策略下,其用户策略在新版本默认匹配大小写,可能导致部分应用程序因密码错误无法访问数据库。

1、11g数据库建立用户test,使用数据泵导出test用户

 

SQL>createuser test identified by Test1234;

 

Starting"SYS"."SYS_EXPORT_SCHEMA_01":  /******** AS SYSDBA directory=qianyidumpfile=expdp%U.dmp logfile=expdp.log schemas=test exclude=statisticsparallel=4

Estimate in progress using BLOCKSmethod...

Total estimation using BLOCKS method:0 KB

Processing object typeSCHEMA_EXPORT/USER

Processing object typeSCHEMA_EXPORT/SYSTEM_GRANT

Processing object typeSCHEMA_EXPORT/ROLE_GRANT

Processing object typeSCHEMA_EXPORT/DEFAULT_ROLE

Processing object typeSCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA

Master table"SYS"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded

******************************************************************************

Dump file set forSYS.SYS_EXPORT_SCHEMA_01 is:

 /oracleser/app11203/qianyi/expdp01.dmp

Job"SYS"."SYS_EXPORT_SCHEMA_01" successfully completed at13:35:41

2、12c采用默认策略导入test用户

pdccjoemsdbs014:JiaDing/oracleser/app11203/oracle/product/12.2.0/network/admin$catsqlnet.ora

cat: sqlnet.ora: No such file ordirectory

 

SQL> show parametersec_case_sensitive_logon

 

NAME                                 TYPE        VALUE

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

sec_case_sensitive_logon             boolean     TRUE

 

Starting"SYS"."SYS_IMPORT_FULL_01": /******** AS SYSDBA directory=qianyi dumpfile=expdp01.dmplogfile=impdp.log full=y parallel=4

Processing object typeSCHEMA_EXPORT/USER

Processing object typeSCHEMA_EXPORT/SYSTEM_GRANT

Processing object typeSCHEMA_EXPORT/ROLE_GRANT

Processing object typeSCHEMA_EXPORT/DEFAULT_ROLE

Processing object typeSCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA

Job"SYS"."SYS_IMPORT_FULL_01" successfully completed at WedApr 25 13:39:16 2018 elapsed 0 00:00:04

3、验证用户密码大小写是否敏感

Oracle Database 12c Enterprise EditionRelease 12.2.0.1.0 - 64bit Production

SQL> conn test/Test1234

Connected.

SQL> conn test/test1234;

ERROR:

ORA-01017: invalidusername/password; logon denied

     这表明,11g关闭大小写敏感后创建的test用户,迁移至12c打开大小写敏感的数据库后,大小写保持敏感。

四、总结

一方面,不同版本的数据库,用户密码管理策略在系统层面的配置方法也会出现差异,目前生产上默认策略是数据库大小写不敏感,新版本数据库尽可能的实现向前兼容,保持策略一致。针对不同版本的管理方法需要提前研究,找到相匹配的具体策略,不能简单犯经验主义、拿来主义错误。

另一方面,大小写敏感是提高安全性的一个必然趋势,应用程序要逐步适应、主动调整。经测试,11g关闭大小写敏感的数据库上,用户密码带大小写的,迁移至12c开启大小写敏感的数据库后,密码依然能够区分大小写。建议结合数据库版本升级的契机,逐步启用密码大小写敏感,增强密码的健壮性。


文章转载自开系植物园,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论