2016年4月21日木曜日

[Oracle]パスワードの複雑度を検証する

パスワードの複雑度の検証を行うには、デフォルト(ユーザ)プロファイルのPASSWORD_VERIFY_FUNCTIONに検証を行うファンクションを設定する。
デフォルトでは、何も設定されていないので、簡単なパスワードも普通に使える状態になっている。(例えばアカウント名と同じパスワードも設定できる)

検証ロジックは、「@$ORACLE_HOME/RDBMS/ADMIN/utlpwdmg.sql」を参考にして作成すると良い。
Oracle12cの場合は、ora12c_verify_functionに検証ロジックが書かれている。

検証用ファンクションの設定方法
ALTER PROFILE default LIMIT
PASSWORD_VERIFY_FUNCTION ora12c_verify_function;

今設定されている検証用ファンクションを確認する方法
select
  profile,
  resource_name,
  resource_type,
  limit
from
  dba_profiles
where
  profile = 'DEFAULT'
  and resource_name='PASSWORD_VERIFY_FUNCTION'

結果
PROFILE         RESOURCE_NAME                  RESOURCE_TYPE   LIMIT
--------------- ------------------------------ --------------- ---------------
DEFAULT         PASSWORD_VERIFY_FUNCTION       PASSWORD        ORA12C_VERIFY_F
                                                               UNCTION