You are on page 1of 9

Administrarea parolelor

Administrarea parolelor

Oracle permite controlarea administrrii parolelor utilizatorilor bazei de date. Caracteristicile administrrii parolelor au multe capaciti:

Aceleai profile pe care le utilizm pentru a limita folosirea resurselor de sistem pot fi folosite pot folosite pentru administrarea parolelor. Profilele conin deja intrri pentru funciile de administrare a parolelor, dar acestea nu sunt activate dac nu rulm un script special: UTLPWDMG.SQL. Pentru a activa trsturile administrrii parolelor, executm acest script dup ce ne conectm la baza de date cu identificatorul SYS. Scriptul are dou componente: prima schimb intrrile corespondente parolelor n profilul DEFAULT i a doua construiete o funcie a complexitii parolelor n baza de date. De asemenea, acest script determin baza de date s porneasc activitile de verificare a parolelor n toate profilele.

Expir dinainte parole noi Expir parole dup o perioad de timp precizat Permite o perioad de graie ntre expirarea parolei i dezactivarea identificatorului utilizatorului mpiedic refolosirea unei parole dup o perioad de timp precizat Blocheaz i deblocheaz conturile n mod manual Determin o parol s ndeplineasc anumite cerine de complexitate

Administrarea parolelor este independent de administrarea resurselor

Dei caracteristicile administrrii parolelor sunt controlate de profilele bazei de date, acestea nu sunt activate i dezactivate n acelai fel n care limitele resurselor sunt controlate de profile. Verificrile limitelor resurselor sunt activate de pornirea bazei de date cu parametrul de iniializare RESOURCE_LIMIT sau de folosirea comenzii ALTER_SYSTEM pentru a schimba RESOURCE_LIMIT n TRUE. Verificarea poate fi dezactivat schimbnd valoarea n FALSE n fiierul parametru sau cu comanda ALTER SYSTEM. Administrarea parolelor este activat rulnd scriptul UTLPWDMG.SQL i rmne activ de acum nainte. Valoarea RESOURCE_LIMIT nu are nici un impact asupra activitilor de verificare a parolelor.

Consideraii pentru administrarea parolelor

POLITICA DE SECURITATE A PAROLELOR presupune crearea unor mecanisme pentru:

blocarea contului utilizatorului ceea ce nseamn c dac un utilizator, dup un

Dac dorim s folosim diferite reguli de administrare a parolelor pentru diferite categorii de utilizatori, o putem face cu uurin construind profile diferite pentru fiecare grup i atribuind acestora utilizatorii corespunztori. Trebuie s ne asigurm c orice utilizatori ce rmn atribuii profilului DEFAULT nu vor avea opiuni inadecvate de administrare a parolei definite de acesta. Trebuie s acordm o atenie deosebit identificatorilor utilizatorilor, SYS i SYSTEM, i altor identificatori folosii de personalul operativ sau de administratorii bazei de date, precum i oricror identificatori de utilizatori folosii pentru procesarea operaiunilor de grup. Dac opiunile parolei aplicate profilului DEFAULT de ctre scriptul UTLPWDMG.SQL nu sunt adecvate pentru aceti utilizatori, ar trebui s modificm profilul DEFAULT sau s construim i s atribuim profile pentru a le controla parolele n funcie de anumite necesiti.

numr de ncercri, nu furnizeaz corect parola, contul acestuia este blocat, adic nu mai are acces la baza de date un anumit timp; controlul timpului de utilizare a parolei, care permite definirea unui interval de timp n care s fie valabil parola utilizatorului. Dup expirarea acestui timp parola trebuie recreeat cu alt nume. pstrarea unui istoric al parolelor utilizate, care permite pstrarea unui anumit interval de timp a parolelor utilizate, astfel c n acest interval o parol nu poate fi utilizat de dou ori.

Verificarea complexitii parolelor

Dac dorim s impunem ca parolele utilizatorilor s satisfac anumite reguli, cum ar fi un numr minim de caractere sau cel puin o cifr n parol, trebuie s folosim o funcie PL/SQL pentru a efectua verificrile necesare. Oracle ofer VERIFY_FUNCTION ca funcie implicit pentru verificarea complexitii parolei. Funcia returneaz o valoare boolean TRUE dac parola ndeplinete toate verificrile, sau se termin cu un mesaj de eroare dac parola nu reuete o verificare. Funcia este creat de scriptul UTLPWDMG.SQL, care de asemenea i adaug numele la opiunea PASSWORD_VERIFY_FUNCTION n profilul DEFAULT. Dac dorim s crem propria funcie de verificare a complexitii parolei, ar trebui s folosim ca model funcia VERIFY_FUNCTION. Putem examina codul funciei interognd vederea dicionarului de date DBA_SOURCE sau, mai simplu, citind scriptul UTLPWDMG.SQL. Putem activa funciile parolei imediat ce acestea sunt create denumindu-le n opiunea PASSWORD_VERIFY_FUNCTION a comenzii CREATE sau ALTER PROFILE. Utilizatorii atribuii unui profil vor avea orice parole noi verificate de funcia proprie.

Verificarea complexitii parolelor


Putem nlocui funcia VERIFY_FUNCTION cu o funcie proprie i putem schimba profilul DEFAULT pentru a o identifica n felul urmtor: CREATE FUNCTION my_password_function (username VARCHAR2, password VARCHAR2, old_password VARCHAR2) RETURN boolean IS...END; ALTER PROFILE default PASSWORD_VERIFY_FUNCTION my_password_function;

Putem nchide verificarea complexitii pentru profil: ALTER PROFILE default PASSWORD_VERIFY_FUNCTION NULL;

Pentru a testa codul ntr-o funcie de complexitate a parolei, se recomand construirea i folosirea urmtorului script SQL*Plus: DECLARE status BOOLEAN BEGIN status :=function_name (user, &new_password, &old_password) END; /

Testarea propriilor funcii de complexitate a parolei

Putem apoi executa acest script dintr-o sesiune SQL*Plus oferind numele funciei ce va fi verificat i testnd valorile pentru parola nou i cea veche atunci cnd ni se va cere. Putem nlocui funcia USER cu variabila de substituie &USER dac dorim de asemenea s testm funcia pe diferii identificatori de utilizatori. De reinut c testarea funciei cu acest script va face ca schimbrile parolei s fie depozitate n baza de date. n cazul funciilor PL/SQL pentru a controla structura i complexitatea parolei, e necesar s dezvoltm o structur pentru a le testa. Putem crea un identificator de utilizator i un profil pentru dezvoltarea i testarea codului. De asemenea, vom folosi un fiier script care s conin comanda PL/SQL CREATE OR REPLACE FUNCTION. Se utilizeaz acelai nume pentru fiecare funcie n timp ce este n dezvoltare pentru a nu trebui s modificm n mod continuu intrarea PASSWORD_VERIFY_FUNCTION a profilului. Cnd exist sigurana c funcia lucreaz aa cum dorim, putem copia scriptul de test ntr-o locaie de depozitare permanent, schimbm numele testului ntr-un nume de producie, i executm scriptul ca utilizator SYS. Trebuie atenie n special cnd construim propriile funcii ale parolei pentru a fi folosite cu profilul DEFAULT sau cu alte profile atribuite cheii identificatorilor de utilizatori SYS, SYSTEM sau conturilor DBA.

Reguli la crearea parolelor

nainte s ncheiem aceast discuie despre funcia de complexitate, ar trebui s analizm pe scurt funcia VERIFY_FUNCTION oferit de Oracle deoarece, dac i privim codul, dou din verificri pot cauza unele confuzii:

Lum n considerare verificarea pentru a garanta c exist n parol cel puin unul din cele trei tipuri de caractere (liter, cifr i semn de punctuaie). Codul folosete variabile de tip ir pentru a pstra caractere valide pentru fiecare tip. irul pentru verificarea punctuaiei conine semnele standard cum ar fi punctul, virgula, asteriscul i aa mai departe. Aceasta ne-ar putea face s credem c utilizatorii pot acum crea parole cu asemenea caractere. De asemenea, am putea presupune c oricare din cele trei tipuri de caractere pot fi folosite oriunde ntr-o parol. Oricum, parolele trebuie s fie conforme conveniei standard de denumire pentru obiecte Oracle. Cu alte cuvinte, ale trebuie s nceap cu o liter i s conin numai litere, cifre, sublinieri(_), semnele dolar ($) i diez (#). Pentru a folosi orice alt format sau orice alt semn de punctuaie, utilizatorii trebuie s includ parolele ntre ghilimele () de fiecare dat cnd le folosesc.

Reguli la crearea parolelor

Totui, dac privim cu atenie codul, observm c aceast verificare nu este efectuat dac valoarea de intrare pentru vechea parol este un ir cu lungimea zero. Din nefericire, cnd funcia este executat ca parte a comenzii de schimbare a parolei (ALTER USER user_name IDENTIFIED BY password), Oracle nu ofer vechea parol deoarece nu o cunoate. Parolele nu sunt stocate direct n baza de date, ci printr -un algoritm de criptare cu un singur sens, ceea ce nseamn c parola curent nu poate fi extras din versiunea criptat. Valoarea pentru vechea parol este prin urmare ntotdeauna trimis funciei ca un ir gol. Desigur, rezultatul final este acela c funcia nu poate mpiedica refolosirea aceleiai parole sau a unei parole asemntoare. Putem anula o parte a acestei limitri folosind opiunea PASSWORD _REUSE_MAX. Aceasta poate mpiedica folosirea aceleiai parole de dou ori ntr-un rnd, sau chiar poate mpiedica refolosirea acesteie pn cnd un numr definit de parole diferite a fost folosit. n mod curent, nu exist nici o modalitate pentru a mpiedica pentru a mpiedica folosirea parolelor asemntoare n mod imediat, una dup cealalt. n plus, nu putem scrie coduri pentru oricare din propriile rutine ce depind de valoarea parolei vechi i nu le putem face s lucreze n exterior pentru a testa mediul.

Cealalt verificare ce induce n eroare compar vechea parol cu cea nou. Intenia acestei verificri este de a asigura faptul c acestea difer dup un anumit numr de caractere. Putem executa funcia VERIFY_FUNCTION n mod direct, oferind valorile pentru numele utilizatorului i parola nou i cea veche, pentru a confirma c aceast verificare lucreaz aa cum este documentat n script.