Berkant KARDUMAN

Teknoloji günlüğü

Audit Mekanizması

İzlemenin Önemi

Veri tabanında ne olup bittiğini bilmek hakkınız. Ayrıca düzenli olarak izlenmesi gereken bir durum. Kim hangi kaydı güncelledi,neyi sildi,neyi ne zaman ekledi gibi sorular günlük hayatta çokça duymaya alışık olduğumuz sorular.
Bununla beraber kim hangi veriyi ne zaman görüntüledi sorusunu da sık sık duyarız. 

Oracle veri tabanı seviyesinde pek çok izleme mekanizması sunar. 

Trigger İle İzleme

Tablo seviyesinde hazırlanacak trigger sayesinde DML komutlarının izlenmesi sağlanabilir. before update,delete sırasında çalışacak olan trigger tespit edilen değşiklikleri izleme tablosuna yazabilir. 
Örnek trigger şu şekilde olabilir.

CREATE OR REPLACE TRIGGER TRG_SAMPLE$AUD
AFTER   UPDATE or DELETE ON SAMPLE_TABLE
FOR EACH ROW
begin
insert into AUD$SAMPE_TABLE(ID,NAME,EVENT_DATE,EVENT_USER)values(old.ID,old.NAME,sysdate,user);
end;

Elbette bu yapının bazı Database triggerları ve oturum takip mekanizmaları ile güçlendirilmesi gerekir.


Standart Audit

Oracle standart audit mekanizmasında sistem ve nesne seviyesinde izleme desteği sunar. Örneğin

AUDIT SESSION

kumutu ile tüm session ların izlenmesi sağlanır.

AUDIT DELETE ANY TABLE     BY ACCESS     WHENEVER NOT SUCCESSFUL;

komutu ile başarılı yada başarısız tüm delete istekleri için izleme kaydı oluşturulur.

Ayrıca nesne seviyesinde bu izlemeyi yapmak için 

AUDIT DELETE ON test.table_name; 

komutu kullanılabilir.


Fine Grained Auditing


Oracle ayrıca çok daha gelişmiş izleme mekanizmalarıda sunmaktadır. Bunlardan biride FGA yapısıdır.

Bu yapıda koşullu audit tanımlanabilmekte ve izleme için esnek bir yapı sağlanmaktadır.

FGA audit işlemleri için DBMS_FGA paketi kullanılır.

Bu paket içerisinde 

  • add_policy
  • drop_policy
  • enable_policy
  • disable_policy
komutları ile izleme politikaları yönetilir.

Örnek olarak aşağıdaki kod Maas tablosunda BolumKodu=2 olan kayıtlara yapılan erişimi izlemeye yarayacaktır.

DBMS_FGA.ADD_POLICY (
   object_schema      =>  'IK', 
   object_name        =>  'MAAS', 
   policy_name        =>  'MAAS_BOLUM_fga', 
   audit_condition    =>  'BolumKodu=2 ', 
   audit_column       =>  'Id,NetMaas', 
   handler_schema     =>   NULL, 
   handler_module     =>   NULL, 
   enable             =>   TRUE, 
   statement_types    =>  'SELECT', 
   audit_trail        =>   DBMS_FGA.XML + DBMS_FGA.EXTENDED, 
   audit_column_opts  =>   DBMS_FGA.ANY_COLUMNS); 
   
   end;
   

Burada audit_trail parametresi önemlidir.
  • XML
audit_Trail değeri XML olduğu için izleme dosyaları işletim sistemi seviyesinde audit_dump klasörüne kaydedilecektir. ve sonuçlar V$XML_AUDIT_TRAIL görünümünden izlenir.
  • DB

Eğer parametre değerini DB olarak yarlarsak veri tabanı seviyesinde FGA_LOG$ sistem tablosuna kaydedilir.ve DBA_FGA_AUDIT_TRAIL görünümden sonuçlar izlenir.


Extended değerini sayesinde izleme kayıtlarına SQL komutu ve Bind değişlenlerinin değerleride eklenecektir.


İzleme kayıtlarını silmek için Audit_Trail=DB olarak tanımlanmışsa  FGA_LOG$ tablosu truncate edilebilir.

Loading