株式会社コーソル

KNOWLEDGE

コーソルの技術情報

コーソルでは経験豊かなエンジニアが、Oracle Databaseに関するお役立ち情報を発信しています。
データベースのチューニングや設定にお役立ていただけます。

KNOWLEDGE検索人気のキーワード

Oracle DB ベストプラクティス

アカウントステータスの遷移と対処方法のまとめ

Oracle Databaseのユーザーアカウントに対して、プロファイルと呼ばれるセキュリティポリシーのセットを定義することができます。
セキュリティポリシーの観点から問題点が確認された場合、ユーザーのDatabaseへの接続を不可(ユーザーアカウント使用不可)にすることができます。また、同様の制御を、管理者が明示的にコマンドを実行することでも実現できます。
このようなユーザーアカウントの使用状態をアカウントステータスと呼び、現在のアカウントステータスはデータディクショナリビュー DBA_USERS の ACCOUNT_STATUS列から確認できます。しかし、ACCOUNT_STATUS列は様々な値をとることができ、理解しにくいため、本稿で整理します。

01.ACCOUNT_STATUS列の値一覧

DBA_USERS の ACCOUNT_STATUS列の列値と、対応するユーザーアカウントの状態についての説明をまとめます。

ACCOUNT_STATUS列値              説明
------------------------------- ----------------------------------------------------------------
OPEN 正常(アカウント使用可)
LOCKED(TIMED) パスワードの繰り返し入力ミスのため、ロック
LOCKED 管理者による手動ロック
EXPIRED パスワード期限切れまたは管理者による手動期限切れ
EXPIRED(GRACE) パスワード期限切れ後で、アカウント使用不可になるまでの猶予期間
EXPIRED & LOCKED(TIMED) (以下は上記の組み合わせのため、説明を省略)
EXPIRED(GRACE) & LOCKED(TIMED)
EXPIRED & LOCKED
EXPIRED(GRACE) & LOCKED

02.ユーザーアカウントのロック

プロファイルの設定項目である FAILED_LOGIN_ATTEMPTS に指定された回数以上、パスワードの入力ミスを繰りかえすと、ユーザーアカウントはロックされ、ACCOUNT_STATUS列は “LOCKED(TIMED)”となります。
LOCKED(TIMED)ではユーザーアカウントは使用不可であり、ユーザーはDatabaseに接続できませんが、PASSWORD_LOCK_TIMEの日数が経過するとユーザーアカウントは自動的にOPENとなり、再度ユーザーアカウントが使用可能になります。
また、ALTER USER ACCOUNT LOCK; で管理者がユーザーアカウントを手動でロックすることもできますが、このときはACCOUNT_STATUS列は “LOCKED”となり、PASSWORD_LOCK_TIMEの日数が経過してもOPENになりません。

ロックに関連するACCOUNT_STATUS列値

                            ACCOUNT_STATUS列  アカウント使用可否
----------------- --------------------
1) 繰り返しパスワードミス LOCKED(TIMED) 不可
2) 手動ロック LOCKED 不可

ロックに関連するACCOUNT_STATUS列値の遷移

            ALTER USER ACCOUNT UNLOCK;
┌─────────────────────────────────────────┐
│ │
│ ALTER USER ACCOUNT LOCK; │
│┌───────────────────────────────────→ LOCKED
↓│
OPEN
↑│
│└───────────────────────────────────→ LOCKED(TIMED) (*1)
│ FAILED_LOGIN_ATTEMPTS回 │
│ パスワード入力ミス │
│ │
└──────────────────────────────────────────┘
PASSWORD_LOCK_TIME日 経過 (*1) 11.2- で PASSWORD_LOCK_TIME=UNLIMITED の場合は LOCKEDとなる

03.ユーザーアカウントのパスワード期限切れ

同一のパスワードを PASSWORD_LIFE_TIME 日間 使用し続けると、ユーザーアカウントはパスワード期限切れとなり、PASSWORD_GRACE_TIMEで設定された猶予期間の日数だけ EXPIRED(GRACE) となります。
アカウントステータスがEXPIRED(GRACE) であれば、ユーザーアカウントを使用可能ですが、
PASSWORD_GRACE_TIMEで設定された猶予期間が経過するとアカウントステータスは EXPIRED に遷移して、ユーザーアカウントは使用不可となります。
PASSWORD_LIFE_TIME、PASSWORD_GRACE_TIMEはプロファイルの設定項目です。
また、ALTER USER ACCOUNT EXPIRE; で管理者がユーザーアカウントを手動でパスワード期限切れにすることもできます。
パスワード期限切れとなった場合、パスワードを変更することでアカウントステータスをOPENにして、ユーザーアカウントを使用可能にできます。

パスワード期限切れに関連するACCOUNT_STATUS列値

                            ACCOUNT_STATUS列  アカウント使用可否
----------------- --------------------
1) パスワード期限切れ EXPIRED(GRACE) 可
(猶予期間内)
2) パスワード期限切れ EXPIRED 不可
(猶予期間超過)
3) 手動EXPIRE EXPIRED 不可

パスワード期限切れに関連するACCOUNT_STATUS列値の遷移

ALTER USER ... ACCOUNT EXPIRE;
┌────────────────────────────────────────────┐
│                                            │
│                                            ↓
OPEN ────────→ EXPIRED(GRACE) ─────────→ EXPIRED
↑   PASSWORD_      │         PASSWORD_       │
│   LIFE_TIME      │         GRACE_TIME      │
│   時間経過       │         時間経過        │
│                  │         (猶予期間超過)  │
│                  ↓                         │
└────────────────────────────────────────────┘
パスワードを変更