確認したこと
Oracle Database 23c でも、DBユーザのパスワード大文字小文字区別をなくすことは可能なのか?
環境
<2023/4(正式リリース前のベータ版)>
・Oracle Linux 8.8
・Oracle Database 23c Free (Developer Release)
<2023/9(正式リリースされたCloud版)>
・Oracle Database 23c Enterprise Edition (Oracle Cloud)
23cまでの経緯
19c:DBユーザのパスワード大文字小文字区別なしは非推奨。
初期化パラメータ「sec_case_sensitive_logon」を「false」に変更することで
区別なしにすることができた。
21c:DBユーザのパスワード大文字小文字区別なしは非サポート。
23c:21c時点ですでに非サポートのため、
継続してDBユーザのパスワード大文字小文字区別なしは非サポート。
区別なしには設定できない
実機確認
Oracle Database 23c Free (Developer Release)
[oracle@host01 ~]$ sqlplus / as sysdba
SQL*Plus: Release 23.0.0.0.0 - Developer-Release on 木 11月 9 08:48:34 2023
Version 23.2.0.0.0
Copyright (c) 1982, 2023, Oracle. All rights reserved.
Oracle Database 23c Free, Release 23.0.0.0.0 - Developer-Release
Version 23.2.0.0.0
に接続されました。
★19cで使用できたsec_case_sensitive_logonパラメータが存在するかを確認。
★存在しなかった
SQL> show parameter sec
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_securefile string PREFERRED
optimizer_secure_view_merging boolean TRUE
sec_max_failed_login_attempts integer 3
sec_protocol_error_further_action string (DROP,3)
sec_protocol_error_trace_action string TRACE
sec_return_server_release_banner boolean FALSE
sql92_security boolean TRUE
★存在しなくても設定しようとすると、廃止されたというエラーがでた
SQL> alter system set SEC_CASE_SENSITIVE_LOGON=false;
alter system set SEC_CASE_SENSITIVE_LOGON=false
*
行1でエラーが発生しました。:
ORA-25138: SEC_CASE_SENSITIVE_LOGON初期化パラメータは廃止されています。
★ユーザ作成できた。(パスワードは小文字の a とした)
SQL> create user c##test identified by a;
ユーザーが作成されました。
SQL> grant create session to c##test;
権限付与が成功しました。
★接続確認。パスワードは小文字のaに設定しているため、問題なく接続できた
SQL> connect c##test/a
接続されました。
★接続確認。パスワードを大文字で指定すると、エラーになった。
SQL> connect c##test/A
ERROR:
ORA-01017: ユーザー名/パスワードが無効です。ログオンは拒否されました。
警告: Oracleにはもう接続されていません。
SQL>
Oracle Database 23c Enterprise Edition (Oracle Cloud)
[oracle@db23c ~]$ sqlplus / as sysdba
SQL*Plus: Release 23.0.0.0.0 - Production on Thu Nov 9 14:05:55 2023
Version 23.3.0.23.09
Copyright (c) 1982, 2023, Oracle. All rights reserved.
Connected to:
Oracle Database 23c EE High Perf Release 23.0.0.0.0 - Production
Version 23.3.0.23.09
★オンプレFree版と同じように、sec_case_sencitive_logonパラメータは存在しない
SQL> show parameter sec
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_securefile string PREFERRED
optimizer_secure_view_merging boolean TRUE
sec_max_failed_login_attempts integer 3
sec_protocol_error_further_action string (DROP,3)
sec_protocol_error_trace_action string TRACE
sec_return_server_release_banner boolean FALSE
sql92_security boolean TRUE
SQL>
★無理やり指定しようとすると、パラメータは廃止されたというエラー
★ちなみに23cのエラーメッセージは、エラーマニュアルへのリンクが表示されます。
★エラーが少し具体的になって嬉しい
SQL> alter system set sec_case_sensitive_logon=false;
alter system set sec_case_sensitive_logon=false
*
ERROR at line 1:
ORA-25138: SEC_CASE_SENSITIVE_LOGON initialization parameter has been made
obsolete
Help: https://docs.oracle.com/error-help/db/ora-25138/
★オンプレFree版で実行できたSQLはエラーになる
★OCI版ではパスワードの複雑性ルールが有効になっている
SQL> create user c##test identified by a;
create user c##test identified by a
*
ERROR at line 1:
ORA-28003: The password chosen did not meet the required complexity rules set
by your organization.
ORA-20000: password length less than 9 characters
Help: https://docs.oracle.com/error-help/db/ora-28003/
★大文字小文字特殊文字数値2文字ずつで、合計9文字以上で作成できた
SQL> create user c##test identified by aaAA##11a;
User created.