随着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开启大小写敏感的数据库后,密码依然能够区分大小写。建议结合数据库版本升级的契机,逐步启用密码大小写敏感,增强密码的健壮性。




