czwartek, 24 stycznia 2013

Oracle Express 10.x - Profile cz.6

Profile pozwalają na ustalenie ile jakiemu użytkownikowi przydzielić zasobów oraz określają w pewnym zakresie sposób ustalania haseł oraz ich zmiany.
Warto pamiętać że jeden użytkownik może posiadać tylko jeden profil, profili natomiast może być wiele.
Domyślnie po skonfigurowaniu bazy istnieje jeden  profil, który ma jedną zasadnicza wadę - pozwala na zbyt wiele.


Szablon polecenia jak utworzyć profil:


CREATE PROFILE profile LIMIT 
[SESSIONS_PER_USER          {liczba | UNLIMITED | DEFAULT}] 
[CPU_PER_SESSION            {liczba | UNLIMITED | DEFAULT}] 
[CPU_PER_CALL               {liczba | UNLIMITED | DEFAULT}] 
[CONNECT_TIME               {liczba | UNLIMITED | DEFAULT}] 
[IDLE_TIME                  {liczba | UNLIMITED | DEFAULT}] 
[LOGICAL_READS_PER_SESSION  {liczba | UNLIMITED | DEFAULT}] 
[LOGICAL_READS_PER_CALL     {liczba | UNLIMITED | DEFAULT}] 
[COMPOSITE_LIMIT            {liczba | UNLIMITED | DEFAULT}] 
[PRIVATE_SGA                {liczba [K|M]| UNLIMITED | DEFAULT}}] 
[FAILED_LOGIN_ATTEMPTS      {liczba | UNLIMITED | DEFAULT}] 
[PASSWORD_LIFE_TIME         {liczba | UNLIMITED | DEFAULT}] 
[{PASSWORD_REUSE_TIME | PASSWORD_REUSE_MAX}  
                                 { liczba | UNLIMITED | DEFAULT}] 
[PASSWORD_LOCK_TIME         { liczba | UNLIMITED | DEFAULT}] 
[PASSWORD_GRACE_TIME        { liczba | UNLIMITED | DEFAULT}] 
[PASSWORD_VERIFY_FUNCTION   {function | NULL | DEFAULT}];

Ewentualnych zmian dokonujemy oczywiście poleceniem ALTER z w/w parametrami.

Opis parametrów:


*profile  -  Nazwa tworzonego / zmienianego profilu.
*SESSIONS_PER_USER  -  Ogranicza liczbę równocześnie otwartych sesji użytkownika.
*CPU_PER_SESSION  -  Ogranicza czas procesora dla sesji, podany w setnych częściach sekundy.
*CPU_PER_CALL  -  Ogranicza czas procesora dla wywołania (parse, execute, fetch), podany
w setnych częściach sekundy.
*CONNECT_TIME  -  Ogranicza czas trwania sesji, podany w minutach.
*IDLE_TIME -  Ogranicza okres ciągłej bezczynności podczas sesji, podany w minutach.
Długotrwałe operacje (np. zapytania) nie są brane pod uwagę przy ustalaniu
czasu bezczynności, nawet, jeśli aplikacja nie wykonuje żadnych operacji.
*LOGICAL_READS_PER_SESSION -  Ogranicza liczbę odczytanych bloków danych w sesji. Pod uwagę brane są bloki odczytane, z dysku jak i z pamięci operacyjnej.
*LOGICAL_READS_PER_CALL  -  Ogranicza liczbę odczytanych bloków (z dysku i z pamięci) podczas jednego wywołania polecenia SQL.
*COMPOSITE_LIMIT  -  Ogranicza wykorzystanie całkowitego kosztu zasobów dla sesji. System
oblicza całkowity koszt zasobów jako sumę ważoną wartości:
  CPU_PER_SESSION,
  CONNECT_TIME,
  LOGICAL_READS_PER_SESSION,
  PRIVATE_SGA,
którą można określić poleceniem ALTER RESOURCE COST.
*PRIVATE_SGA  -  Ogranicza ilość prywatnej przestrzeni sesji przydzielonej w SHARED POOL
obszaru SGA. Wielkość podana w bajtach, kilobajtach (K), lub megabajtach
(M). Ograniczenie ma sens jedynie w przypadku serwera wielowątkowego.
*FAILED_LOGIN_ATTEMPTS  -  Określa ilość nieudanych prób logowania na konto użytkownika, po których nastąpi zablokowanie konta na czas zależny od wartości PASSWORD_LOCK_TIME.

*PASSWORD_LIFETIME  -  Ograniczają okres ważności hasła.
*PASSWORD_GRACE_TIME  -  Po upłynięciu PASSWORD_LIFETIME dni od ostatniej zmiany hasła, przy pierwszym logowaniu zaczyna być obliczany okres PASSWORD_GRACE_TIME, po którym hasło wygasa. Jednocześnie w okresie PASSWORD_GRACE_TIME, użytkownik jest informowany o liczbie dni pozostałych do wygaśnięcia.
*PASSWORD_REUSE_TIME  -  Określa liczbę dni, przez jaką hasło nie może być ponownie wykorzystane podczas zmiany hasła przez użytkownika. Jeżeli wartość PASSWORD_REUSE_TIME ma wartość liczbową, to wartość PASSWORD_REUSE_MAX musi być ustalona na UNLIMITED.
*PASSWORD_REUSE_MAX  -  Określa liczbę zmian haseł, po której hasło może być ponownie wykorzystane podczas zmiany hasła przez użytkownika. Jeżeli wartość PASSWORD_REUSE_MAX ma wartość liczbową, to wartość PASSWORD_REUSE_TIME musi być ustalona na UNLIMITED.
*PASSWORD_LOCK_TIME  -  Określa liczbę dni, przez jakie konto będzie zablokowane po określonej przez FAILED_LOGIN_ATTEMPTS nieudanych próbach logowania.
*PASSWORD_VERIFY_FUNCTION  -  Nazwa funkcji weryfikacji hasła. Funkcja ta musi być umieszczona w schemacie użytkownika SYS i posiadać definicję następującej postaci:
FUNCTION nazwa_funkcji
(
  nazwa_użytkownika IN VARCHAR2,
  hasło             IN VARCHAR2,
  poprzednie_hasło  IN VARCHAR2
)
 RETURN BOOLEAN;

Jeżeli chcemy usunąć profil używamy oczywiście polecenia DROP :

 DROP PROFILE nazwa_profilu [CASCADE];


Przykład użycia:


CREATE PROFILE naszprofil LIMIT 
     PASSWORD_LIFE_TIME 10 
     PASSWORD_GRACE_TIME 20 
     SESSIONS_PER_USER 1 
     FAILED_LOGIN_ATTEMPTS 2 
     PASSWORD_LOCK_TIME 3;


Podłączamy konto pracownik do naszego profilu:

ALTER USER pracownik PROFILE naszprofil; 

Po zalogowaniu się na konto zmieniamy nasze hasło:

 ALTER USER pracownik IDENTIFIED BY nasze_haslo;

Po zalogowaniu w miarę upływu czasu będziemy informowani o tym za ile musimy zmienić nasze hasło. Jeżeli przegapimy ten termin zostaniemy poproszeni  zmianę przy kolejnym logowaniu.

Jeżeli chcemy wymusić zmianę hasła przy pierwszym logowaniu przez naszego użytkownika musimy przy jego tworzeniu dodać parametr: PASSWORD EXPIRE; .
Musimy również przyznać mu prawa do tworzenia sesji (czyli logowania) oraz tworzenia np. tabelek:

GRANT create session,create table TO pracownik;



Brak komentarzy:

Prześlij komentarz