Anar Godjaev
http://anargodjaev.wordpress.com/
AUDIT MEKANİZMASI
Kullanıcınınyaptığı haraketleri izlemek için kullanılan yapıdır.
Audit dosyaları genellikle $ORACLE_HOME/rdbms/audit klasöründe muhafaza edilmektedirler.
Audit işlemini aktif edebilmek için AUDIT_TRAIL parametresinin aktif olması gerekmektedir.
SQL > alter system set audit_trail=db scope=spfile;//İzlemeleri Database de tutar (SYS.AUD$)
SQL > alter system set audit_trail=os scope=spfile;//izlemeleri işletim sistemi pathinde tutar
SQL > alter system set audit_trail=none scope=spfile;//izlemeler devre dışı
Eğer Sys user’ının aktivitilerinide izlemek istiyorsak ,
Audit_sys_operations parametresini TRUE yapmamız gerekmektedir.
Çeşitli Audit operasyonları aşağıdaki gibidir.
SQL > CONNECT sys/password AS SYSDBA
SQL > AUDIT ALL BY fireid BY ACCESS;
SQL > AUDIT SELECT TABLE, UPDATE TABLE, INSERT TABLE, DELETE TABLE BY fireid BY ACCESS;
SQL > AUDIT EXECUTE PROCEDURE BY fireid BY ACCESS;
SQL > AUDIT create any trigger;
SQL > AUDIT SELECT ON emi.orders;
2.
Anar Godjaev
http://anargodjaev.wordpress.com/
Yine aynışekilde çeşitli auditler hakkında sorgu yapabilmek istersek,
SQL >SELECT audit_option, success,failure FROM dba_stmt_audit_opts
WHERE user_name = 'HR';
SQL >SELECT privilege,success,failure FROM dba_priv_audit_opts WHERE
user_name = 'HR';
SQL >SELECT object_name,object_type,del FROM dba_obj_audit_opts WHERE
owner='HR' AND object_name = 'EMPLOYEES';
SQL >select * from DBA_AUDIT_TRAIL
ÖRNEK
SQL> SHOW PARAMETER AUDIT
NAME
TYPE
VALUE
------------------------------------ ----------- -----------------------------audit_file_dest
string
C:ORACLEPRODUCT10.2.0ADMIN
DB10GADUMP
audit_sys_operations
boolean
FALSE
audit_trail
string
NONE
SQL>
SQL> ALTER SYSTEM SET audit_trail=db SCOPE=SPFILE;
System altered.
SQL> SHUTDOWN
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> STARTUP
ORACLE instance started.
Total System Global Area 289406976 bytes
Fixed Size
1248600 bytes
Variable Size
71303848 bytes
Database Buffers
213909504 bytes
Redo Buffers
2945024 bytes
Database mounted.
Database opened.
SQL>
CONNECT sys/password AS SYSDBA
CREATE USER patpat IDENTIFIED BY patpat
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA UNLIMITED ON users;
3.
Anar Godjaev
http://anargodjaev.wordpress.com/
GRANT connectTO patpat;
GRANT create table, create procedure TO patpat;
AUDIT ALL BY patpat BY ACCESS;
AUDIT SELECT TABLE, UPDATE TABLE, INSERT TABLE, DELETE TABLE BY patpat BY ACCESS;
AUDIT EXECUTE PROCEDURE BY patpat BY ACCESS;
CONN patpat/patpat
CREATE TABLE pat_tab (
id NUMBER
);
INSERT INTO pat_tab (id) VALUES (1);
UPDATE pat_tab SET id = 2;
SELECT * FROM pat_tab;
DELETE FROM pat_tab;
DROP TABLE pat_tab;
CONNECT sys/password AS SYSDBA
COLUMN
COLUMN
COLUMN
COLUMN
username FORMAT A10
owner FORMAT A10
obj_name FORMAT A10
extended_timestamp FORMAT A35
SELECT username,
extended_timestamp,
owner,
obj_name,
action_name
FROM dba_audit_trail
WHERE owner = patpat’
ORDER BY timestamp;
Bunun dışında sadece specific tablolar üzerinden yapılan haraketleride izlemek gerekebilir.Bunun için
öncelikle yapılması gereken hangi tablolar üzerinde audit olacağını belirlemek gerekir.
Örneğin aşağıdaki komutla 4 adet tablo için audit mekanizmasını açıyoruz.
SQL>audit
SQL>audit
SQL>audit
SQL>audit
select,delete,insert,update
select,delete,insert,update
select,delete,insert,update
select,delete,insert,update
on
on
on
on
user.tab1
user.tab2
user.tab3
user.tab4
by
by
by
by
access;
access;
access;
access;
Artık bu işlemden sonra bir kişi bu tablolardan biri üzerinde beliritilen select,update,insert,delete
komutlarından birini çalıştırırsa otomatik olarak bir log ile audit edilecektir.
Bunuda ,
SQL >select * from DBA_AUDIT_TRAIL;kullanarak görebilirsiniz.
4.
Anar Godjaev
http://anargodjaev.wordpress.com/
Yalnız bazenDBA_AUDIT_TRAIL içinde bazı yapılan sql sorgusunu görmek mümkün olmamaktadır.O
yüzden FGA policy dediğimiz kavram ile bu SQL leri istersek tablonun tamamı için yada sadece belirili bir
kolona özel olarak sorgulamak mümkündür.Ama yukarıdaki örnekte olan 4 tablo içinde bunu yapmak
gerekir.
Örnek olarak 1 tablo için yaparsak,
SQL >BEGIN
DBMS_FGA.add_policy(
object_schema => 'USER',
object_name
=> 'TAB1,
policy_name
=> 'BIR_ISIM_GIR',
statement_types => 'SELECT,INSERT,UPDATE,DELETE');
END;
/
Daha sonra tablo üzerinde select,insert,delete,update işlemlerinden biri yapıldığında otomatik olarak
loglanacaktır.
Daha sonra ,
SQL >SELECT *
FROM dba_fga_audit_trail;sorgusukullanılarakgereklibilgileralınabilir.