【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';

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

まとめ

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

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