TDA OBD Atestarea 1 I2101 Chiorescu Gheorghe Auditarea BD 30 p 1. De creat un utilizator, cu privilegii necesare efectuarii auditului evenimentelor system si obiect. CREATE USER nume_utilizator IDENTIFIED BY 'parola_utilizator'; GRANT AUDIT_ADMIN TO nume_utilizator; GRANT SELECT_CATALOG_ROLE TO nume_utilizator; COMMIT; (↑ pentru salvarea modificarilor) 2. De activat sistema de auditare. ALTER SYSTEM pentru a activa sistemul de auditare si a specifica setarile pentru auditare. De exemplu, pentru a activa auditarea tuturor accesurilor la tabela "X" ALTER SYSTEM SET AUDIT_TRAIL_DB=TRUE SCOPE=SPFILE; AUDIT SELECT, UPDATE, DELETE, INSERT ON X BY ACCESS; AUDIT cu argumentele corespunzatoare. De exemplu, pentru a auditati toate evenimentele de conectare la baza de date AUDIT CONNECT; COMMIT; 3. fixati auditarea : Adaugarea informatiei in tabela X AUDIT INSERT ON X BY ACCESS; COMMIT; 4. De afisat informatiile despre audit SELECT os_username, username, userhost, timestamp, action_name, obj_name FROM dba_audit_trail WHERE obj_name = 'X'; COMMIT; 5. De oprit procesul de auditare NOAUDIT INSERT ON X; COMMIT; 6. De sters informatiile despre auditarea efectuata DELETE FROM dba_audit_trail WHERE obj_name = 'X'; COMMIT; Tranzactii 20p Instalati nivelul de izolare read commited ALTER SESSION SET ISOLATION_LEVEL = READ COMMITTED; Verificati setarile de izolare folosind comanda SELECT: SELECT * FROM v$transaction WHERE addr IN (SELECT xidusn FROM v$session WHERE sid = sys_context('USERENV', 'SID')); COMMIT; Creați utilizatorul U1. Atribuiții privilegii necesare conectării și RESOURCE. 2p CREATE USER U1 IDENTIFIED BY password; GRANT CONNECT, RESOURCE TO U1; COMMIT; Conectativa cu contul SCOTT. Oferiti dreptul de a insera si selecta datelele din tabela sa EMP utilizatorulu U1. 2p GRANT INSERT, SELECT ON scott.emp TO U1; COMMIT; Conectativa cu contul U1. Adăugați înregistrati in tabela EMP.2p INSERT INTO scott.emp (empno, ename, job, mgr, hiredate, sal, comm, deptno) VALUES (9999, 'John Doe', 'Manager', 7839, TO_DATE('17-MAR-2023', 'DD-MON-YYYY'), 5000, NULL, 20); COMMIT; Numarati rindurile din ambele sesiuni ai tabelei EMP. 2p SELECT COUNT(*) FROM scott.emp; Aceasta comanda va returna numarul total de randuri din tabela EMP. Deoarece aceasta comanda nu tine cont de sesiuni, va returna acelasi rezultat indiferent de sesiunea utilizata. Confirmati tranzactiele. 2p Pentru a confirma o tranzactie si a salva modificarile in baza de date, utilizati comanda : COMMIT; Ce concluzie puteti face?4p Tranzactiile reprezinta o modalitate importanta de a gestiona si a mentine integritatea datelor in baza de date. O tranzactie este o secventa de operatii care trebuie efectuate ca o unitate atomica, astfel incat fie toate operatiile sa fie finalizate cu succes si modificarile sa fie salvate, fie nicio operatie sa nu fie efectuata. Implementarea unei politici de Securitate 30 Fie tabela EXEMPLU Create table exemplu (cod number primary key, Nume varchar2(50), Facultate varchar2(25), Media number); Creati utilizatorii u1 si u2. Atribuiții privilegii necesare conectării și RESOURCE. Utilizatorii sa gestioneze tabela in modul urmator: Utilizatorul u1 are drepturile de a selecta, insera si sterge rindurile tabelei, iar utilizatorul u2 are dreptul sa adauge inregistrari in tabela si sa modifice numele. De folosit pachetul dbms_rls 20p -- Crearea utilizatorului u1 si acordarea de privilegii CREATE USER u1 IDENTIFIED BY password; GRANT CONNECT, RESOURCE TO u1; GRANT SELECT, INSERT, DELETE ON exemplu TO u1; -- Crearea utilizatorului u2 si acordarea de privilegii CREATE USER u2 IDENTIFIED BY password; GRANT CONNECT, RESOURCE TO u2; GRANT INSERT, UPDATE(exemplu) ON exemplu TO u2; -- Crearea functiei de politica de securitate pentru utilizatorul u2 CREATE OR REPLACE FUNCTION exemplu_policy (p_schema IN VARCHAR2, p_object IN VARCHAR2) RETURN VARCHAR2 IS BEGIN IF SYS_CONTEXT('USERENV', 'SESSION_USER') = 'U2' THEN RETURN 'facultate = USERENV(''SESSION_USER'')'; ELSE RETURN NULL; END IF; END; -- Aplicarea politicii de securitate pe tabela EXEMPLU BEGIN DBMS_RLS.ADD_POLICY( object_schema => 'scott', object_name => 'exemplu', policy_name => 'exemplu_policy', function_schema => 'scott', policy_function => 'exemplu_policy', statement_types => 'INSERT, UPDATE', update_check => TRUE, enable => TRUE); END;