Oracle 11g lejáró jelszavak és account lockout

A napokban kaptam egy hibaüzenetet a szokásos oracle login-nál, hogy a jelszavam hamarosan lejár… Mint kiderült az Oracle-nál a 11-es verzióban valakinek jó ötletnek tűnt, hogy egy adatbázisnál alapértelmezett beállítás az, ha lejárnak a jelszavak. Szerintem ez egy nagyon rossz ötlet, ami elég sok komplikációt okozott, ami aztán rengeteg blog és dokumentáció olvasásához vezetett (+1 db restore-hoz). Ezért gyorsan le is írom mire jutottam:

Azt, hogy egy oracle felhasználóra milyen jelszó lejárati/kitiltási beállítások vonatkoznak a felhasználó profile beállítása írja le. Hogy milyen profile tartozik az adott felhasználóhoz, azt az alábbi select mondja meg:

select profile from DBA_USERS where username = 'DETDB';

Ha megvan a profile (jó esetben DEFAULT) akkor annak a beállításait lekérdezhetjük az alábbi módon:

select resource_name,limit from dba_profiles where profile='DEFAULT';

Itt mindennek UNLIMITED-nek kellene lenni, kivéve a PASSWORD_VERIFY_FUNCTION változónak, mert annak NULL

Ha valaki sql-ből szeretné ezt állítani, akkor:

alter profile default limit password_life_time unlimited;

De a beállítások elérhetőek az Oracle Enterprise Managerben is: Server->Profiles->Default->Edit->Password->Expire in->Unlimited

(Oracle EM indítása (shell, oracle user): emctl start dbconsole)

Ha már megtörtént a baj (lejárt a jelszó), akkor az alábbit kell tenni:

 ALTER USER DETDB IDENTIFIED BY ******;
 ALTER USER DETDB ACCOUNT UNLOCK;

Ez megváltoztatja a felhasználó jelszavát (ezáltal újra resetelődik a lejárati idő) és visszaengedi a felhasználót. Célszerű a limitek módosítása után ezt megtenni, akkor többet nem kell vele foglalkozni.

Ha ezután sem tudunk belépni, akkor érdemes megvizsgálni azokat a felhasználókat akikkel gond van:

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

Ha a felhasználónkat (mondjuk a jelszóváltoztatás után) folyamatosan zárolják a rossz jelszóval történő próbálkozások miatt, akkor jó lenne tudni, hogy ki és honnan. Ezt alapból nem tudjuk meg, ehhez engedélyezni kell a bejelentkezési események auditálását…

AUDIT network BY ACCESS;

Unlockoljuk a felhasználót, és várjuk a csodát (a 1017 return kóddal záródó login próbálkozásokat)

SELECT username,userhost,returncode, t.TIMESTAMP
 FROM dba_audit_session t
 WHERE username='DETDB' and returncode='1017'
 ORDER BY sessionid DESC;

A listában látható host-okon kell megváltoztatni a jelszót, és egy ideig megint minden jó lesz…

 

 

2 Replies to “Oracle 11g lejáró jelszavak és account lockout”

  1. Ha ezeket angolul posztolnád, népszerű lennél annál az évi egytucat embernél, aki ugyanebbe a folyóba lép bele (de magyarul nem tud).

    1. Jogos észrevétel, régebben jelentek meg cikkek angolul, de mostanában kicsit kevesebb idő jut a blogra. Ha két nyelven készülnek a postok, akkor az pont 2x annyi idő, ha csak angolul, akkor mi lenne azokkal a kedves magyarul tudó emberekkel, akik pont ebbe a folyóba lépnek… Szóval maradt a magyar, ha valaki olyan nagy bajban van, hogy csak itt találja meg a megoldást a problémájára, össze fogja csipegetni a dolgot a magyar kitöltő szöveg nélkül is, és még nagyobb sikerélménye is lesz, mintha angolul írtam volna (én is szoktam ilyet pl. japán oldalakról, tök izgi 🙂

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.