Anar Godjaev
http://anargodjaev.wordpress.com/
AUDIT MEKANİZMASI
Kullanıcının yaptığı 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;
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;
Anar Godjaev
http://anargodjaev.wordpress.com/
GRANT connect TO 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.
Anar Godjaev
http://anargodjaev.wordpress.com/
Yalnız bazen DBA_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.

Audit Mekani̇zmasi

  • 1.
    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.