Oracle audit fga - azerbaycan dilinde

6

Click here to load reader

description

Oracle audit - FGA - Azerbaycan dilinde

Transcript of Oracle audit fga - azerbaycan dilinde

Page 1: Oracle audit   fga - azerbaycan dilinde

Oracle audit - Fine-Grained Audit

Bildiyiniz kimi Oracle verilənlər bazasında müxtəlif hadisələrə audit təyin etmək olurdu. Bunlara misal SQL

sorğusu, hüquqlar (privileges), sxema və obyektlər. Əlavə olaraq fine-grained audit istifadə edərək verilənlər

bazasındakı fəaliyyətlərə belə ki, cədvəllər üzərində əməliyyatlar və ya fəaliyyət zamanına nəzarət göstərə bilərik.

Bugün mən sizə fine-grained audit haqqında məlumat verəcəm. İlk dəfə bu audit özəlliyi Oracle 9i da təqdim

olunmuşdur. Məqsəd istifadəçinin cədvəldən etdiyi sorğunu (select) audit qeydini yazmaq idi. Çünki digər audit

metodları ilə cədvəldəki dəyişikliyi audit-ləmək mümkün idi.

Diqqət, FGA, AUDIT_TRAIL parameterindən aslı deyil və bütün ona aid audit qeydləri FGA_LOG$ cədvəlinə

yazır.

Siz fine-grained auditing dən aşağıdakı hallarda istifadə edə bilərsiniz: Cədvəllər (misal üçün) səhər 9-dan axşam 6-ya dək və ya həftə sonları;

Korporativ şəbəkə xarici İP istifadəsi;

Cədvəl sütunu seçmək (select) və ya dəyişmək (Selecting or updating a table column);

Cədvəlin sütunundakı dəyəri dəyişmək (Modifying a value in a table column)

Gəlin bir nümunəyə baxaq. Öncə gəlin audit_trail parameterini VB təyin edək və VB restart edək. Bu parameter

dəyişiklikdən sonra effektiv olması üçün VB yenidən açılmalıdır (restart olmalıdır).

SQL> alter system set audit_trail=DB scope=spfile;

System altered.

SQL> shut immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup

ORACLE instance started.

Total System Global Area 422670336 bytes

Fixed Size 1336960 bytes

Variable Size 310380928 bytes

Database Buffers 104857600 bytes

Redo Buffers 6094848 bytes

Database mounted.

Database opened.

SQL>

SQL> show parameters audit_trail

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

audit_trail string DB

Page 2: Oracle audit   fga - azerbaycan dilinde

--Yeni cədvəl yaradaq və ona bir neçə sətr daxil edək

SQL> conn ulfet/ulfet

Connected.

SQL> create table telebeler (

id number,

f_name varchar2(10),

l_name varchar2(15),

lesson_name char(20),

score number);

Table created.

SQL> insert into telebeler values(1, 'Azer', 'Ibrahimov', 'History', 5);

1 row created.

SQL> insert into telebeler values(2, 'Kerim', 'Veliyev', 'History', 2);

1 row created.

SQL> insert into telebeler values(3, 'Ulfet', 'Tanriverdiyev', 'History', 4);

1 row created.

SQL> insert into telebeler values(4, 'Mamed', 'Aliyev', 'History', 3);

1 row created.

SQL> insert into telebeler values(5, 'Omar', 'Tanriverdiyev', 'History', 5);

1 row created.

SQL> commit;

Commit complete.

Cədvəlimiz hazırdır, audit polisimizi təyin edək.

Aşağıdakı polisi telebeler cədvəlindəki score sütunun dəyərinin 4 və 4-dən böyük olduğu halda audit qeydini

edəcək.

--Connect as sys

SQL> conn sys/?????? as sysdba

Connected.

SQL> BEGIN

DBMS_FGA.add_policy(

object_schema => 'ULFET',

object_name => 'TELEBELER',

policy_name => 'CHECK_SCORE_AUDIT',

audit_condition => 'score >= 4',

audit_column => 'SCORE');

END;

/

2 3 4 5 6 7 8 9

PL/SQL procedure successfully completed.

İndisə ulfet istifadəçisi ilə VB bağlanaq və bəzi select –lər yazaq.

Page 3: Oracle audit   fga - azerbaycan dilinde

Sorğularımız audit-ə düşməsi üçün “where” yazaraq score sütununa uyğun dəyərlər yazaq.

SQL> select * from telebeler where score <=3;

ID F_NAME L_NAME LESSON_NAME SCORE

---------- ------------ --------------- -------------------- ----------

2 Kerim Veliyev History 2

4 Mamed Aliyev History 3

SQL> select * from telebeler where score=5;

ID F_NAME L_NAME LESSON_NAME SCORE

---------- ------------ --------------- -------------------- ----------

1 Azer Ibrahimov History 5

5 Omar Tanriverdiyev History 5

SQL> select * from telebeler where score>=4;

ID F_NAME L_NAME LESSON_NAME SCORE

---------- ------------ --------------- -------------------- ----------

1 Azer Ibrahimov History 5

3 Ulfet Tanriverdiyev History 4

5 Omar Tanriverdiyev History 5

SQL>.

İndisə sys istifadəçisi kimi daxil olub yoxlayaq.

--Connect as sys

SQL> conn sys/?????? as sysdba

SQL> select db_user,policy_name,sql_text,TIMESTAMP from dba_fga_audit_trail order by 4;

DB_USER POLICY_NAME SQL_TEXT TIMESTAMP

---------------- ---------------------- --------------------------------------------------------- -----------------------

ULFET CHECK_SCORE_AUDIT select * from telebeler where score=5 07-DEC-12

ULFET CHECK_SCORE_AUDIT select * from telebeler where score>=4 07-DEC-12

VB-dakı FGA polisilərin siyahısını görmək üçün DBA_AUDIT_POLICIES görünüşündən (view) istifadə edə

bilərsiniz.

SQL> SELECT POLICY_NAME FROM DBA_AUDIT_POLICIES;

POLICY_NAME

-----------------------------

CHECK_SCORE_AUDIT

SQL>

Oralce 9i versiyasında fine-grained audit məhdud imkanlara sahib idi, lakin Oracle 10g-dən başlayaraq bu inkişaf

etdirildi və beləliklə DML əmrləridə (statements) daxil edildi. Bu özəllikdən istifadə edə bilmək üçün

DBMS_FGA.ADD_POLICY prosedurundakı statement_types parametrinə dəyər(lər) mənimsətmək lazımdır.

statement_types => 'SELECT,INSERT,UPDATE,DELETE');

Page 4: Oracle audit   fga - azerbaycan dilinde

Fine-Grained Audit Polisini istifadə etmək üçün istifadəçiyə DBMS_FGA PL/SQL paketinə çalışdırma (execute)

haqqı verilməlidir. Bu paket SYS istifadəçisinə məxsusdur.

Aşagıdakı əmrlərdən istifadə edərək fine-grained auditin istifadəsini bağlayıb (disable) və ya aça bilərik (enable)

SQL> BEGIN

DBMS_FGA.DISABLE_POLICY(

object_schema => 'ULFET',

object_name => 'TELEBELER',

policy_name => 'CHECK_SCORE_AUDIT');

END;

/ 2 3 4 5 6 7

PL/SQL procedure successfully completed.

SQL>

SQL> BEGIN

DBMS_FGA.ENABLE_POLICY(

object_schema => 'ULFET',

object_name => 'TELEBELER',

policy_name => 'CHECK_SCORE_AUDIT',

enable => TRUE);

END;

/ 2 3 4 5 6 7 8

PL/SQL procedure successfully completed.

SQL>

FGA polisini silmək üçün:

SQL> BEGIN

DBMS_FGA.DROP_POLICY(

object_schema => 'ULFET',

object_name => 'TELEBELER',

policy_name => 'CHECK_SCORE_AUDIT');

END;

/

PL/SQL procedure successfully completed.

Oracle 11g də FGA üçün yeni özəllik var. Bu DBMS_AUDIT_MGMT paketindən istifadə edərək audit cədvəllərinin

tablespace –lərini dəyişmək mümkündür.

Susma halına görə (default) audit trail SYS.AUD$ və SYS.FGA_LOG$ cədvəliləri SYSTEM tablespace də

yerləşirlər. Audit cədvəllərin tablespace-lərini dəyişmək üçün aşağıdakı əmri icra etmək lazımdır:

BEGIN

DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION(

AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,

AUDIT_TRAIL_LOCATION_VALUE => 'AUD_AUX');

END;

Page 5: Oracle audit   fga - azerbaycan dilinde

Bu nümunədə: AUDIT_TRAIL_TYPE: VB dakı audit trail tipinə əsaslanır. Aşağıdakılardan birini daxil edin:

DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD: Standart audit trail cədvəli, AUD$. DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD: Fine-grained audit trail cədvəli, FGA_LOG$. DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD: Həm standart həmdə fine-grained audit trail

cədvəlləri. AUDIT_TRAIL_LOCATION_VALUE: Hədəf tablespace təyin edir. Bu nümunə AUDİT_TABLES

tablespace-ni istifadə edir.

Gəlin tətbiq edək

SQL> conn /as sysdba

Connected.

SQL> SELECT table_name, tablespace_name FROM dba_tables

WHERE table_name IN ('AUD$', 'FGA_LOG$') ORDER BY 1;

TABLE_NAME TABLESPACE_NAME

------------------------------ ------------------------------

AUD$ SYSTEM

FGA_LOG$ SYSTEM

SQL>

Audit cədvəllərinin saxlanılması üçün yeni tablespace quraq.

SQL> create tablespace audit_tables datafile '/u01/app/oracle/oradata/testdb/audit_tables1' size 50m

autoextend on;

Tablespace created.

SQL>

İndisə fine-grained audit trail cədvəlinin tablespace-ni yeni tablespace-ə daşıyaq.

SQL> BEGIN

DBMS_AUDIT_MGMT.set_audit_trail_location(

audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD,

audit_trail_location_value => 'AUDIT_TABLES');

END;

/ 2 3 4 5 6

PL/SQL procedure successfully completed.

SQL>

Diqqət, bu əmr icra olunan zaman səbrli olun. Bu uzun zaman çəkə bilər və bu bir başa audit cədvəlinin

ölçüsündən aslıdır.

--Yuxarıdakı select-i bir daha icra edək

SQL> SELECT table_name, tablespace_name FROM dba_tables

WHERE table_name IN ('AUD$', 'FGA_LOG$') ORDER BY 1;

TABLE_NAME TABLESPACE_NAME

-------------------------------------- ------------------------------

AUD$ SYSTEM

FGA_LOG$ AUDIT_TABLES

Page 6: Oracle audit   fga - azerbaycan dilinde

Mənbə:

http://docs.oracle.com/cd/E11882_01/server.112/e25789/cmntopc.htm#CNCPT89153

http://docs.oracle.com/cd/E11882_01/network.112/e16543/auditing.htm#DBSEG60681