Sunteți pe pagina 1din 26

CAP.

5
Integritatea şi securitatea
bazelor de date
Tipuri de restrictii neprocedurale
<<OAI_14>>
Restricţia Descriere

NOT NULL Specifică faptul că o coloană nu acceptă valori nule

UNIQUE Desemnează o coloană sau grup de coloane care


prezintă o valoare, sau combinaţie de valori, unică la
nivelul unei tabele
PRIMARY Desemnează o coloană sau un grup de coloane ca
KEY fiind cheia primară a unei tabele

FOREIGN Desemnează o coloană sau un grup de coloane ca


KEY reprezentând cheie străină într-o restricţie
referenţială
CHECK Specifică o condiţie verificată la nivelul fiecărei linii
dintr-o tabelă
Starea restricţiilor de integritate
neprocedurale
• Dezactivate – disabled. O astfel de restricţie deşi
este consemnată în dicţionarul de date nu este
verificată, astfel că atât datele existente în baza de
date cât şi cele ce urmează a fi inserate ar putea fi
neconforme cu aceasta
• Activate fără validare. În acest caz doar datele
nou inserate vor fi verificate, tabela putând conţine
date invalide introduse înaintea activării acestor
tipuri de restricţii
• Activate cu validare. În acest caz toate datele, atât
cele existe cât şi cele noi trebuie să fie conforme
cu respectivele restricţii
Categorii ale restricţiilor de
integritate neprocedurale
• restricţii neamânabile (nondeferred) sau
imediate, cele care nu pot fi verificate decât
strict la nivelul fiecărei comenzi DML
• restricţii amânabile (deferred) care pot fi
întârziate până la sfârşitul tranzacţiei: dacă
o astfel de restricţie este încălcată atunci
întreaga tranzacţie va fi anulată (rollback),
altfel va avea loc comiterea
Definirea unei constrângeri amânabile
poate fi realizată în două moduri:

• iniţial neamânată (initially immediate), la


început va funcţiona ca o restricţie imediată
• iniţial amânată (initially deferred), la
început va funcţiona ca o restricţie amânată
(verificată doar la sfârşitul tranzacţiei)
Declararea restr. neproc. in CREATE TABLE

La nivelul unei coloane

column datatype [CONSTRAINT constr_name]


{ [NOT] NULL
| PRIMARY KEY [USING INDEX index_clause]
| UNIQUE KEY [USING INDEX index_clause]
| REFERENCES [schema.]table [(column)] [ON DELETE
CASCADE]
| CHECK (condition)
}
[ NOT DEFERRABLE
| DEFERRABLE [INITIALLY {IMMEDIATE | DEFERRED}]
]
[DISABLE | ENABLE [VALIDATE | NOVALIDATE]]
Declararea restr. neproc. in CREATE TABLE

La nivelul intregii tabele

[CONSTRAINT constr_name]
PRIMARY KEY (column [,column] … ) [USING INDEX index_clause]
| UNIQUE KEY (column [,column] … ) [USING INDEX index_clause]
| FOREIGN KEY (column [,column] … )
REFERENCES [schema.]table [(column [,column] … )] [ON DELETE
CASCADE]
| CHECK (condition)
 
[ NOT DEFERRABLE
| DEFERRABLE [INITIALLY {IMMEDIATE | DEFERRED}]
]
[DISABLE | ENABLE [VALIDATE | NOVALIDATE]]
Activarea si dezactivarea restrictiilor
ALTER TABLE table DISABLE CONSTRAINT constraint CASCADE;
Fara validarea inregistrarilor existente
ALTER TABLE table
ENABLE NOVALIDATE
{ CONSTRAINT costraint | PRIMARY KEY | UNIQUE ( column [, column]
… )}
[ USING INDEX index_specifications ]
Cu validarea inregistrarilor existente
ALTER TABLE table
ENABLE [ VALIDATE ]
{ CONSTRAINT costraint | PRIMARY KEY | UNIQUE ( column [, column]
… )}
[ USING INDEX index_specifications ]
[EXCEPTIONS INTO table]

ALTER TABLE table DROP CONSTRAINT constraint;


Informatii despre restrictiile neprocedurale

DBA_CONSTRAINTS DBA_CONS_COLUMNS

- OWNER - OWNER
- CONSTRAINT_NAME - CONSTRAINT_NAME
- CONSTRAINT_TYPE - TABLE_NAME
- TABLE_NAME - COLUMN_NAME
- SEARCH_CONDITION - POSITION
- R_OWNER
- R_CONSTRAINT_NAME
- DELETE_RULE
- STATUS
- DEFERRABLE
- DEFERRED
- VALIDATED
Restrictiile procedurale TRIGGER-e

• Există doisprezece combinaţii de trigger-e,


definite funcţie de :
– fraza DML: INSERT, UPDATE, DELETE
– momentul declanşării sau lansării în execuţie: înainte –
BEFORE - sau după – AFTER - execuţia comenzii
DML
– frecvenţă: pentru fiecare linie invocată sau modificată
de comanda DML – ROW - sau o singură dată pentru
întrega frază DML - STATEMENT
Restrictiile procedurale TRIGGER-e

ALTER TRIGGER trigger {ENABLE | DISABLE};

ALTER TABLE table {ENABLE | DISABLE} ALL TRIGGERS;

DBA_TRIGGERS DBA_TRIGGER_COLS

- OWNER - TRIGGER_OWNER
- TRIGGER_NAME - TRIGGER_NAME
- TRIGGER_TYPE - TABLE_OWNER
- TRIGGERING_EVENT - TABLE_NAME
- TABLE_OWNER - COLUMN_NAME
- TABLE_NAME
- STATUS
- TRIGGER_BODY
DBA_OBJECTS

- OWNER
- OBJECT_NAME
- OBJECT_TYPE
- STATUS
Securitatea accesului în
baza de date
• Conturi utilizatori
• Profile
• Privilegii
• roluri
Crearea conturilor utilizatorilor <<OAI_17>>
CREATE USER user
IDENTIFIED { BY password | EXTERNALY }
[DEFAULT TABLESPACE tablespace]
[TEMPORARY TABLESPACE tablespace]
[QUOTA {INTEGER [k | M] | UNLIMITED} ON TABLESPACE
[QUOTA {INTEGER [k | M] | UNLIMITED } ON TABLESPACE] … ]
[PASSWORD EXPIRE]
[ACCOUNT {LOCK | UNLOCK}]
[PROFILE {profile | DEFAULT}]

Modificarea conturilor utilizatorilor

ALTER USER user


[ IDENTIFIED { BY password | EXTERNALY } ]
[ PASSWORD EXPIRE ]
[ ACCOUNT {LOCK | UNLOCK} ]
Modificarea conturilor utilizatorilor
ALTER USER user
[ DEFAULT TABLESPACE tablespace ]
[ TEMPORARY TABLESPACE tablespace ]
[ QUOTA {INTEGER [k | M] | UNLIMITED} ON TABLESPACE
[ QUOTA {INTEGER [k | M] | UNLIMITED } ON TABLESPACE] … ]
DROP USER user [ CASCADE ];

DBA_USER DBA_TS_QUOTAS

- USERNAME - USER_NAME
- USER_ID - TABLESPACE_NAME
- CREATED - BYTES
- ACCOUNT_STATUS - MAX_BYTES
- LOCK_DATE - BLOCKS
- EXPITY_DATE - MAX_BLOCKS
- DEFAULT_TABLESPACE
- TEMPORARY_TABLESAPCE
Crearea si activarea profilelor

CREATE PROFILE profil LIMIT


[ limit1 max_value ]
[ limit2 max_value ]
….

ALTER USER user PROFILE profil;


ALTER SYSTEM SET RESOURCE_LIMIT=TRUE;

DBA_USERS DBA_PROFILES

- PROFILE - PROFILE
- USERNAME - RESOURCE_NAME
- - RESOURCE_TYPE
- LIMIT
Restrictii privind resursele sistemului
Restricţii Descriere

La nivel de sesiune

CPU_PER_SESSION Timp total CPU măsurat în sutimi de


secundă
SESSIONS_PER_USER Nr. de sesiuni concurente ale aceluiăşi
cont utilizator
CONNECT_TIME Timp total de conectare în minute

IDLE_TIME Durata perioadelor de inactiviate în


minute
LOGICAL_READS_PER_SESSION Numărul de blocuri de date (citiri logice şi
fizice)
PRIVATE_SGA Dimensiunea spaţiu privat în SGA în
arhitecturi MTS[1]
La nivel de apel

CPU_PER_CALL Timp CPU pentru un singur apel în sutimi


de secundă
LOGICAL_READS_PER_CALL Numărul de blocuri de date
Restrictii privind parolele
Restricţii Descriere

FAILED_LOGIN_ATTEMPS Numărul de încercări repetate de conectare


după care se blochează contul respectiv

PASSWORD_LOCK_TIME Numărul de zile în care contul rămâne blocat


în cazul expirării parolei

PASSWORD_LIFE_TIME Durata de viaţă a unei parole în zile, după


care parola respectivului cont expiră

PASSWORD_GRACE_TIME Perioada în zile în care se permite schimbarea


unei parole expirate, de la ultima conectare cu
succes folosind vechea parolă
PASSWORD_REUSE_TIME Perioda în zile după care poate fi refolosită o
parolă veche

PASSWORD_REUSE_MAX De câte ori poate fi refolosită o parolă

PASSWORD_VERIFY_FUNCTION Funcţia PL/SQL care face verificarea


complexităţii unei parole înainte de asignarea
acesteia
Privilegii SYSTEM
Categorie privelegii SYSTEM Exemple

INDEX CREATE ANY INDEX


ALTER ANY INDEX
DROP ANY INDEX

TABLE CREATE TABLE


CREATE ANY TABLE
ALTER ANY TABLE
DROP ANY TABLE
SELECT ANY TABLE
UPDATE ANY TABLE
DELETE ANY TABLE
SESSION CREATE SESSION
ALTER SESSION
RESTRICTED SESSION

TABLESPACE CREATE TABLESPACE


ALTER TABLESPACE
DROP TABLESPACE
UNLIMITED TABLESPACE
Privilegii OBIECT
Priv. Obiect Tabelă View Secvenţă Procedură

ALTER      

DELETE      

EXECUTE       

INDEX       

INSERT      

REFERENC       
ES
SELECT     

UPDATE      
Acordarea si revocarea privilegiilor SYSTEM

GRANT {system_privilege | role}


[,{system_privilege | role}] …
TO {user | role | PUBLIC}
[{user | role | PUBLIC}, ] …
[WITH ADMIN OPTION]

REVOKE {system_privilege | role}


[,{system_privilege | role}] …
FROM {user | role | PUBLIC}
[{user | role | PUBLIC}, ] …
Acordarea si revocarea privilegiilor SYSTEM

GRANT {object_priv [(column_list)]


[,object_priv [(column_list)] ] … | ALL [PRIVILEGES]}
ON [schema.]object
TO {user | role | PUBLIC}
[{user | role | PUBLIC}, ] …
[WITH ADMIN OPTION]

REVOKE {object_priv [,object_priv ] … | ALL [PRIVILEGES]}


ON [schema.]object
FROM {user | role | PUBLIC}
[{user | role | PUBLIC}, ] …
[CASCADE CONSTRAINT]
Informatii despre privilegiile SYSTEM si OBIECT

DBA_SYS_PRIVS SESSION_PRIVS

- GRANTEE - PRIVILEGE
- PRIVILEGE
- ADMIN OPTION

DBA_TAB_PRIVS DBA_COL_PRIVS

- GRANTEE - GRANTEE
- OWNER - OWNER
- TABLE_NAME - TABLE_NAME
- GRANTOR - COLUMN_NAME
- PRIVILEGE - GRANTOR
- GRANTABLE - PRIVILEGE
- GRANTABLE
Crearea, modificarea şi asignarea sau acordarea rolurilor (1)

CREATE ROL role


[NOT IDETIFIED | IDENTIFIED {BY password | EXTERNALLY}]

GRANT role, [role] …


TO {user | role | public} [,{user | role | public}] …
[WITH ADMIN OPTION]

ALTER USER user DEFAULT ROLE


{role [, role] … | ALL [EXCEPT {role [, role] …}] | NONE }
Crearea, modificarea şi asignarea sau acordarea rolurilor (2)

SET ROLE {role [IDENTIFIED BY password]


[,role [IDENTIFIED BY password]] …
ALL [EXCEPT {role [, role] …}] | NONE }

REVOKE role [,role] …


FROM {user | role | PUBLIC}
[{user | role | PUBLIC}, ] …
Roluri predefinite
Nume rol predefinit Descriere

CONNECT Asigură posibilitatea deschiderii


unei sesiuni precum şi dreptul de
RESOURCE crea obiecte în schema proprie

DBA Înseamnă toate privilegiile


SISTEM cu ADMIN OPTION

EXP_FULL_DATABASE Privilegiile de a exporta baza de


date
IMP_FULL_DATABASE Privilegiile de a importa baza de
date
DELETE_CATALOG_ROLE Privilegiile DELETE pentru toate
tabelele dicţionarului de date

EXECUTE_CATALOG_ROLE Privilegiile EXECUTE pentru toate


package-urile dicţionarului de date

SELECT_CATALOG_ROLE Privilegiile SELECT pentru toate


tabelele dicţionarului de date
Informatii despre roluri
View-ul din DD Descriere

DBA_ROLES Toate rolurile existente în BD

DBA_ROLE_PRIVS Rolurile acordate utilizatorilor sau


altor roluri
ROLE_ROLE_PRIVS Numai rolurile acordate altor roluri

DBA_SYS_PRIVS Privilegiile SISTEM acordate rolurilor


şi utilizarilor

ROLE_SYS_PRIVS Numai privilegiile sistem acordate


rolurilor
ROLE_TAB_PRIVS Numai privilegiile OBIECT ale
tabelelor acordate altor roluri

SESSION_ROLES Rolurile active la un moment dat


pentru utilizatorului curent

S-ar putea să vă placă și