この記事ではPASSWORD_VERIFY_FUNCTIONで新旧パスワードの違いが検出されないケースについて解説します。
目次[非表示]
PASSWORD_VERIFY_FUNCTIONとは
PASSWORD_VERIFY_FUNCTIONとはユーザプロファイルで設定できるパラメータファイルの1つです。
PASSWORD_VERIFY_FUNCTIONを設定するとDBユーザのパスワード要件を設定することができます。
パスワード要件は事前定義されているものが使用可能です。
現在推奨されている設定可能なパラメータは以下の2つです。
・ora12c_verify_function
・ora12c_strong_verify_function
ora12c_verify_functionのパスワード要件
ora12c_verify_functionをPASSWORD_VERIFY_FUNCTIONに設定した場合のパスワード要件は以下の通りです。
・パスワードが8文字以上であり、少なくとも数字が1つと英字が1つ含まれていること。
・パスワードがユーザー名またはユーザー名のスペルを逆にしたものと同一でないこと。
・パスワードがデータベース名と同一でないこと。
・パスワードにoracle (oracle123など)の語が含まれていないこと。
・パスワードに少なくとも1つの特殊文字が含まれていること。
ora12c_stig_verify_functionのパスワード要件
ora12c_stig_verify_functionをPASSWORD_VERIFY_FUNCTIONに設定した場合のパスワード要件は以下の通りです。
・パスワードが15文字以上であること。
・パスワードに少なくとも1文字以上の小文字と、1文字以上の大文字が含まれていること。
・パスワードに少なくとも1つの数字が含まれていること。
・パスワードに少なくとも1つの特殊文字が含まれていること。
・以前のパスワードとの違いが8文字以上あること。
新旧パスワードの違いを検出する方法
上記のようにパスワードを変更する際に新旧のパスワードを比較し、違いがあることをチェックすることがあります。
このチェックはパスワード変更時に新旧のパスワードを入力する場合に発生します。
passwordコマンドや「ALTER USER <ユーザー名> IDENTIFIED BY <NEWPASSWORD> REPLACE <old_password>;」コマンドでパスワードを変更するケースがこれに該当します。
反対に「ALTER USER <ユーザー名> IDENTIFIED BY <NEWPASSWORD>」でパスワードを変更する際は新旧パスワードの違いはチェックされません。
Oracleのパスワードは暗号化されて保存されているため、古いパスワードを入力しない限りそのパスワードを確認することができないためです。
パスワード変更時に新旧パスワードのチェックを行いたい場合は、旧パスワードを入力する方法で行う必要があります。