1 Mart 2011

DML Statement Auditlenmesi ve DBMS_FGA

Bu yazımda Insert, Update, Delete ve bunlara ek olarak Select cümlecikleri için specific audit yaratmak üzerine bilgiler paylaşıyor olacağım.

Öncelikle bu işi yaparken hangi objeleri, hangi kolonları ve hangi kriterleri sağlayan statementların audit lenmesi gerektiğini tasarlamamız gerekir. Örneğin;

begin
dbms_fga.add_policy (
object_schema => 'burak',
object_name => 'deneme',
policy_name =>  'audit_deneme_maas',
audit_condition =>  'department=90',
audit_column =>  'maas',
enable =>  TRUE,
statement_types=>  'select' );
end;

Yukarıdaki blogumuzda yarattığımız policy ile "Burak" schema sındaki "Deneme" tablosuna gelen, koşulunda "maas" kolonu ve "department=90" koşullarının geçtiği "Select" cümleleri için audit aktif hale getirmiş olduk.

Hangi sorgular audite takılır, hangiler takılmaz? ....

SELECT column1,column2 FROM burak.deneme; ---- Policy çalışmaz.
SELECT maas FROM burak.deneme; ---- Policy çalışır.
SELECT column2,maas FROM burak.deneme WHERE department = 90; --- Policy çalışır.
SELECT count(*) FROM burak.deneme WHERE department = 90 AND salary > &maas_gir; --- Policy çalışır.
SELECT maas FROM hr.employees; --- Policy çalışır.
SELECT column3 FROM hr.employees WHERE department = 90; --- Policy çalışmaz.
"Policy çalışmaz" olarak not düştüğümüz örnekler audit devreye girmeyecek olan statementlardır.

Auditlenen statementlar ise aşağıdaki tablodan sorgulanabilir.

SELECT to_char(timestamp, 'YYMMYYHH24MI') AS timestamp, db_user, policy_name, sql_bind, sql_text
FROM dba_fga_audit_trail;
 
Bu tarz senaryoları çok daha detaylı şekilde Oracle Database 11g Administration Workshop I Release 2 Eğitimi ve Oracle Database 11g Security DBA Release 2 Eğitimi konuları içerisinde bulabilirsiniz.

Hiç yorum yok:

Yorum Gönder