UJP - 技術情報2 : Oracleユーザのパスワード有効期限を検証 Oracle/11g/express/07password_life_time_unlimited

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

Page Top

はじめに anchor.png

 Oracle 10gあたりから,Oracle database上のユーザアカウントに有効期限がつく様になっている.その設定内容を確認した上で,変更したり無期限に設定したり,ORA-28002エラーに対処する方法を説明する.

Everything is expanded.Everything is shortened.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
 
 
 
 
 
 
 
 
 
 
 
 
 
 
select username,expiry_date from dba_users where username = 'SCOTT'
select sysdate from dual
select sysdate + 180 from dual
select * from dba_profiles where resource_name = 'PASSWORD_LIFE_TIME'
alter profile default limit password_life_time 1
select * from dba_profiles where resource_name = 'PASSWORD_LIFE_TIME'
select username,expiry_date from dba_users where username = 'SCOTT'
select sysdate from dual
column username for a15
select username,expiry_date from dba_users order by expiry_date
alter profile default limit password_life_time 180
select username,expiry_date from dba_users order by expiry_date
alter profile default limit password_life_time unlimited
select * from dba_profiles where resource_name = 'PASSWORD_LIFE_TIME'
Page Top

ユーザのパスワード有効期限を確認 anchor.png

 scottユーザの有効期限を確認する.

SQL> select username,expiry_date from dba_users where username = 'SCOTT';
USERNAME
--------------------------------------------------------------------------------
EXPIRY_D
--------
SCOTT
16-11-27
SQL>

 パスワードを変更する

SQL> alter user scott identified by tiger;
ユーザーが変更されました。
SQL>

 変更された後,再度有効期限を確認する.

SQL> select username,expiry_date from dba_users where username = 'SCOTT';
USERNAME
--------------------------------------------------------------------------------
EXPIRY_D
--------
SCOTT
16-12-05
SQL>

 これが180日後なのか,確認してみる.  まずは,今現在の日付を確認.

SQL> select sysdate from dual;
SYSDATE
--------
16-06-08
SQL>

 今日から180日を計算してみる.

SQL> select sysdate + 180 from dual;
SYSDATE+
--------
16-12-05
SQL>

 180日後に変更されていることが確認できた.

Page Top

デフォルトのパスワード有効期限を確認して変更する anchor.png

 パスワードの有効期限は,dba_profilesに登録されているので確認する.

SQL> select * from dba_profiles where resource_name = 'PASSWORD_LIFE_TIME';
PROFILE
--------------------------------------------------------------------------------
RESOURCE_NAME
--------------------------------------------------------------------------------
RESOURCE_TYPE
------------------------
LIMIT
--------------------------------------------------------------------------------
DEFAULT
PASSWORD_LIFE_TIME
PASSWORD
180
SQL>

 180日だと確認できた  デフォルトのプロフィールのはず.これを1日に変更してみる.

SQL> alter profile default limit password_life_time 1;
プロファイルが変更されました。
SQL>

 変更後,設定されたか確認する.

SQL> select * from dba_profiles where resource_name = 'PASSWORD_LIFE_TIME';
PROFILE
--------------------------------------------------------------------------------
RESOURCE_NAME
--------------------------------------------------------------------------------
RESOURCE_TYPE
------------------------
LIMIT
--------------------------------------------------------------------------------
DEFAULT
PASSWORD_LIFE_TIME
PASSWORD
1
SQL>

 設定変更されたことが確認できた.

Page Top

プロフィールのexpiry_dateを変更したら即時反映されることを確認 anchor.png

 先ほどの手順で,scottユーザのパスワードを変更したので180日後の16-12-05が期限になっていたが,その後プロフィールを変更した事でscottユーザのパスワード有効期限がどうなっているか確認する.

SQL> select username,expiry_date from dba_users where username = 'SCOTT';
USERNAME
--------------------------------------------------------------------------------
EXPIRY_D
--------
SCOTT
16-06-09
SQL>

 16-06-09に変更されている.  現在日付を確認.

SQL> select sysdate from dual;

SYSDATE


16-06-08

SQL>

 180日後だったものが,自動的に反映されて1日後になっていることが確認できる.

Page Top

他のユーザへの影響を確認 anchor.png

 パスワードのexpiry_dateを1に変更したが,それがどこまで影響があるか確認する. まずは,現在のユーザ.

SQL> column username for a15
SQL> select username,expiry_date from dba_users order by expiry_date;
USERNAME	EXPIRY_D
--------------- --------
DIP		16-05-23
ORACLE_OCM	16-05-23
DBSNMP		16-05-23
APPQOSSYS	16-05-23
XDB		16-05-23
XS$NULL 	16-05-23
SYS		16-05-24
OUTLN		16-05-24
CTXSYS		16-05-24
ANONYMOUS	16-05-24
MDSYS		16-05-24
USERNAME	EXPIRY_D
--------------- --------
HR		16-05-24
SCOTT2		16-06-09
SCOTT		16-06-09
SYSTEM		16-06-15
15行が選択されました。
SQL>

 先ほど変更したscottユーザが明日になっているのはわかるにしても,その他のユーザの多くが16-05-24となっている.  以前の180日に戻して,確認してみる.

SQL> alter profile default limit password_life_time 180;
プロファイルが変更されました。
SQL> select username,expiry_date from dba_users order by expiry_date;
USERNAME	EXPIRY_D
--------------- --------
DIP		16-05-23
ORACLE_OCM	16-05-23
DBSNMP		16-05-23
APPQOSSYS	16-05-23
XDB		16-05-23
XS$NULL 	16-05-23
SYSTEM		16-06-15
SYS		16-11-19
OUTLN		16-11-19
CTXSYS		16-11-19
ANONYMOUS	16-11-19
USERNAME	EXPIRY_D
--------------- --------
MDSYS		16-11-19
HR		16-11-19
SCOTT2		16-12-05
SCOTT		16-12-05
15行が選択されました。
SQL>
Page Top

パスワードの有効期限を無制限にする anchor.png

 プロフィールを変更してリミットを解除する.

SQL> alter profile default limit password_life_time unlimited;
プロファイルが変更されました。
SQL>

 どの様に設定されたか確認する.

SQL> select * from dba_profiles where resource_name = 'PASSWORD_LIFE_TIME';
PROFILE
--------------------------------------------------------------------------------
RESOURCE_NAME
--------------------------------------------------------------------------------
RESOURCE_TYPE
------------------------
LIMIT
--------------------------------------------------------------------------------
DEFAULT
PASSWORD_LIFE_TIME
PASSWORD
UNLIMITED
SQL>

 数値じゃなくてUNLIMITEDが設定されている.

Page Top

ORA-28002: the password will expire anchor.png

 systemユーザでログインしたら,この様なエラーが.

SQL> conn system/manager@192.168.20.28
ERROR:
ORA-28002: the password will expire within 7 days
接続されました。
SQL>

 パスワード有効期間を調べて見る.

SQL> select expiry_date from dba_users where username = 'SYSTEM';
EXPIRY_D
--------
16-06-15
SQL>

 今日現在の日付に7を足してみる.

SQL> select sysdate + 7 from dual;
SYSDATE+
--------
16-06-16
SQL>
 expiry_dateに設定されている日付であっていることが確認できた.

トップ   差分 バックアップ 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Counter: 13039, today: 8, yesterday: 7
最終更新: 2016-06-09 (木) 00:55:05 (JST) (2849d) by shinnai(shinnai)

広告スペース
Google