Audit trail - Verfijnde auditing - Oracle 10G Onderhoud en Security

Verfijnde auditing -Fine Grained Auditing (FGA) -  breidt de standaard Oracle auditing mogelijkheden uit door gebuikers toe te staan 'user-gedefinieerde inhoud' te auditten. Dit is onafhankelijk van de AUDIT_TRAIL parameter setting en alle audit records worden opgelsagen in de

FGA_LOG$ tabel, in plaats van de AUD$ tabel. Het volgende voorbeeld hoe deze te gebuiken:

Eerste en test tabel maken:

CONN audit_test/password
CREATE TABLE emp (empno NUMBER(4) NOT NULL,ename VARCHAR2(10),job VARCHAR2(9),mgr NUMBER(4),hiredate DATE,sal NUMBER(7,2),comm NUMBER(7,2),deptno NUMBER(2));

INSERT INTO emp (empno, ename, sal) VALUES (9999, 'Tim', 1);INSERT INTO emp (empno, ename, sal) VALUES (9999, 'Larry', 50001);
COMMIT;

De volgende policy audits alle queries op de salary tabel met salarissen boven £50,000.

CONN sys/password AS sysdba

BEGIN
DBMS_FGA.add_policy(object_schema => 'AUDIT_TEST',
object_name => 'EMP',
policy_name => 'SALARY_CHK_AUDIT',
audit_condition => 'SAL > 50000',
audit_column => 'SAL');
END;
/

Door beide employees te querien bewijs je je juiste werking:

CONN audit_test/password

SELECT sal
FROM emp
WHERE ename = 'Tim';

SELECT sal
FROM emp
WHERE ename = 'Larry';

CONN sys/password AS SYSDBA

SELECT sql_text
FROM dba_fga_audit_trail;

SQL_TEXT
-----------------------------------------

SELECT sal FROM emp WHERE ename = 'Larry'

1 row selected.

SQL>

Extra processing kan geassocieerd worden met een FGA event door een procedure te definieren en de associeren aan een audit event. Een voorbeeld gaat er van uit dat de FIRE_CLERK procedure gedefinieerd is:

BEGIN
DBMS_FGA.add_policy(object_schema => 'AUDIT_TEST',
object_name => 'EMP',
policy_name => 'SALARY_CHK_AUDIT',
audit_condition => 'SAL > 50000',
audit_column => 'SAL',
handler_schema => 'AUDIT_TEST'
,handler_module => 'FIRE_CLERK',
enable => TRUE);
END;
/

De DBMS_FGA package bevat de volgende procedures:

ADD_POLICY
DROP_POLICY
ENABLE_POLICY
DISABLE_POLICY

In Oracle9i was fine grained auditing gelimitteerd aan queries maarin Oracle 10g is het uitgebreid met DML statements, zoals je in het volgende voorbeeld kan zien:

--Schoon de audit trail.

CONN sys/password AS SYSDBA

TRUNCATE TABLE fga_log$;
SELECT sql_text
FROM dba_fga_audit_trail;

no rows selected.

-- Voeg de policy toe aan de SAL kolom van de EMP tabel.

BEGIN
DBMS_FGA.add_policy(
object_schema => 'AUDIT_TEST',
object_name => 'EMP',
policy_name => 'SAL_AUDIT',
audit_condition => NULL, -- Equivalent to TRUE
audit_column => 'SAL',
statement_types => 'SELECT,INSERT,UPDATE,DELETE');
END;
/

-- Test de auditing.

CONN audit_test/password

SELECT * FROM emp WHERE empno = 9998;
INSERT INTO emp (empno, ename, sal) VALUES (9998, 'Bill', 1);
DELETE emp WHERE empno = 9998;
ROLLBACK;

-- Check de audit trail.

CONN sys/password AS SYSDBA
SELECT sql_text FROM dba_fga_audit_trail;

SQL_TEXT
--------------------------------------

SELECT * FROM emp WHERE empno = 9998
INSERT INTO emp (empno, ename, sal) VALUES (9998, 'Bill', 1)
UPDATE emp SET sal = 10 WHERE empno = 9998
DELETE emp WHERE empno = 99984

4rows selected.

-- Drop de policy.

CONN sys/password AS SYSDBA

BEGIN
DBMS_FGA.drop_policy(object_schema => 'AUDIT_TEST',
object_name => 'EMP',
policy_name => 'SAL_AUDIT');
END;
/

zie ook :

Server Setup
Audit Options
View Audit Trail
Onderhoud en Security

 

 

Advertentie

>

Poll

Voorkeur
 

Wie is er aanwezig

We hebben 173 gasten online