【Oracle】パスワードポリシーをカスタマイズする方法|複雑さ・履歴・期限の管理

【Oracle】パスワードポリシーをカスタマイズする方法|複雑さ・履歴・期限の管理 Oracle

Oracle Databaseでは、ユーザーアカウントのセキュリティを強化するためにパスワードポリシーを設定できます。これにより、パスワードの有効期限や複雑さ、履歴の保持数などを制御可能です。

本記事では、パスワードポリシーの設定方法と各種パラメータの意味、カスタマイズ例について紹介します。

スポンサーリンク

プロファイル(PROFILE)とは

Oracleでは、ユーザーごとにPROFILEを適用し、その中でパスワード制御のルールを設定できます。初期状態では全ユーザーに「DEFAULT」プロファイルが適用されています。

SELECT username, profile FROM dba_users;

このコマンドで、各ユーザーに割り当てられているプロファイルを確認できます。

パスワードポリシーのカスタマイズ方法

プロファイルの設定はCREATE PROFILEまたはALTER PROFILEで行います。

パラメータ一覧

  • FAILED_LOGIN_ATTEMPTS:ログイン失敗回数の上限
  • PASSWORD_LIFE_TIME:パスワードの有効期限(日数)
  • PASSWORD_REUSE_TIME:以前のパスワードを再使用できるまでの日数
  • PASSWORD_REUSE_MAX:以前のパスワードを再使用できるまでの変更回数
  • PASSWORD_VERIFY_FUNCTION:複雑さをチェックする関数

例:パスワードルールを厳格にする設定

ALTER PROFILE DEFAULT LIMIT
  FAILED_LOGIN_ATTEMPTS 5
  PASSWORD_LIFE_TIME 90
  PASSWORD_REUSE_TIME 365
  PASSWORD_REUSE_MAX UNLIMITED
  PASSWORD_VERIFY_FUNCTION verify_function;

この例では、90日ごとの変更、1年間は再使用禁止、5回ログイン失敗でロックという厳しめの設定になっています。

PASSWORD_VERIFY_FUNCTIONの使い方

PASSWORD_VERIFY_FUNCTIONには、PL/SQLで記述した検証関数を指定できます。標準ではverify_functionというサンプル関数が用意されています。

SELECT name FROM dba_profiles WHERE resource_name = 'PASSWORD_VERIFY_FUNCTION';

カスタム関数を作成することで、独自ルール(大文字・小文字・数字・記号の使用など)を組み込むことも可能です。

プロファイルの作成とユーザーへの適用

既存のDEFAULTプロファイルを変更せずに、新しいプロファイルを作って割り当てることもできます。

CREATE PROFILE secure_profile LIMIT
  FAILED_LOGIN_ATTEMPTS 3
  PASSWORD_LIFE_TIME 60
  PASSWORD_VERIFY_FUNCTION verify_function;

ALTER USER sample_user PROFILE secure_profile;

これにより、特定のユーザーだけに異なるルールを適用できます。

パスワードの期限切れを確認する方法

ユーザーのパスワード期限切れ日を確認するには、以下のSQLを使用します。

SELECT username, expiry_date FROM dba_users WHERE account_status = 'OPEN';

期限が迫っているユーザーに通知を出す運用も可能です。

よくある質問(FAQ)

Q. Oracleでパスワードの有効期限を無制限に設定するにはどうすればよいですか?
A. ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;を実行します。ただし、セキュリティ要件によっては有効期限を設けることを推奨します。現在の設定はSELECT profile, resource_name, limit FROM dba_profiles WHERE resource_type='PASSWORD';で確認できます。
Q. パスワードの複雑さ(大文字・数字・記号の必須化)はどうやって設定しますか?
A. PASSWORD_VERIFY_FUNCTIONにカスタム関数を指定することで実現できます。Oracleが提供するORA12C_STRONG_VERIFY_FUNCTIONを使うと、英大文字・小文字・数字・特殊文字をそれぞれ1文字以上含む8文字以上のパスワードを強制できます。
Q. ユーザーが使用済みパスワードを再利用できないように制限するにはどうすればよいですか?
A. PROFILEのPASSWORD_REUSE_TIME(再利用禁止期間:日数)とPASSWORD_REUSE_MAX(再利用禁止回数)で制御します。例:ALTER PROFILE DEFAULT LIMIT PASSWORD_REUSE_TIME 365 PASSWORD_REUSE_MAX 5;で1年間または5世代前まで再利用禁止になります。

まとめ

Oracleではプロファイル機能を使って、パスワードの有効期限・複雑さ・再利用の制限などを柔軟に制御できます。セキュリティを強化しながら、開発や検証環境に応じたカスタマイズも可能です。

運用ルールに合わせてプロファイルを分け、ログ監視や期限管理と併用することで、より安全なデータベース運用が実現できます。