29 Mart 2011

oracleegitimi.com yayında ....

Arkadaşlar merhaba,

Eğitimlerimin yoğunluğundan dolayı arada sıradada olsa yazmaya çalışıyorum. Buarada Bilginç IT Academy eğitmenlerinin yazılarını yayınlayacağı forum tadında bir siteyi hayata geçirdik ve ortalama 1 ay kadar bir süredir karşılaşılan hatalar, başınıza gelebilecek önemli işler, tuning ile ilgili bilgiler ve/veya genel bilgiler olmak üzere aklımıza ne gelirse, hangi sorunlarla karşılaşırsak, o an ne ile uğraşıyorsak onunla ilgili bir şeyler yazıp yayınladığımız bir forum olmasını ve ziyaret edenlerin birşeyler öğrenip gideceği bir blog olmasını temenni ederek yola çıktık. Evet hadi geçelim bizim siteye bir göz atalım .... :)

oracleegitimi.com

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.