Oracle Database 12c Unified Audit

Oracle Database 12c Unified Audit

12c ile gelen bu özellik hakkında bilgilendirme ayarlama ve işleyişi ile bilgiler veriyor olacağım

Unified Audit, veri tabanında yapılan her türlü işlemi tek bir merkez de toplayan bir mekanizma

Bu işlemlerden örnekler; Rman, Data pump, User logon/logoff, Dml ve Ddl komutları, Databasede yer alan objeler ve schemalara ait işlemler

Veri tabanında bu özellik false olarak gelmekte

SELECT VALUE FROM V$OPTION WHERE PARAMETER = ‘Unified Auditing’;

metin içeren bir resim

Açıklama otomatik olarak oluşturuldu

Bu özellik veri tabanındaki internal parametreyle aktif olmuyor.

İşleme başlamadan önce 11g ve öncesi audit özelliği varsa veri tabanına bağlanıp kapatmakta yarar var

alter system set audit_trail=’NONE’ scope=spfile;

Aktif etmek için Listener ve veri tabanı kapatılıyor. Sonrasında cd $ORACLE_HOME/rdbms/lib dizininde “make -f ins_rdbms.mk uniaud_on ioracle” komutunu çalıştırarak özelliği devreye alıyorum

metin içeren bir resim

Açıklama otomatik olarak oluşturuldu

Veri tabanı ve listener servisini açıp kontrol edelim

metin içeren bir resim

Açıklama otomatik olarak oluşturuldu

Artık Audit işlemini sistem veya object bazında gerçekleştirebilirim. Veri tabanında iki role bulunmakta, AUDIT_ADMIN ve AUDIT_VIEWER. AUDIT_ADMIN yetkisi audit tabloları yaratma, AUDSYS şemasını düzenleme gibi yetkilerine sahipken AUDIT_VIEWER sadece veriyi görüntüleme iznine sahiptir.

EXEC DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_PROPERTY(-

DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, –

DBMS_AUDIT_MGMT.AUDIT_TRAIL_WRITE_MODE, –

DBMS_AUDIT_MGMT.AUDIT_TRAIL_QUEUED_WRITE);

Oracle, audit bilgilerini sga yani memory alanında saklar. Bu alan dolduğunda diske yazar. Default mode olarak gelir

EXEC DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_PROPERTY(-

DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, –

DBMS_AUDIT_MGMT.AUDIT_TRAIL_WRITE_MODE, –

DBMS_AUDIT_MGMT.AUDIT_TRAIL_IMMEDIATE_WRITE);

Diğer çalışma mode olarak ise sga alanını kullanmadan diske yaz seçeneğidir. Veri tabanında çok fazla log üreten bir yapı varsa sürekli diske yazma aktivitesi doğuracağından performans kayıpları yaşanabilir.

Audit Policy

Veri tabanını izlemek için default policyler bulunmakta. Biz kendimizde policy yaratabiliriz, yarattığımız policy hangi audit için kullanacaksak ona assign edebiliriz. Tüm kullanıcılar için kullanabiliriz.

Default olarak gelen iki tane aktif policy bulunmaktadır

metin içeren bir resim

Açıklama otomatik olarak oluşturuldu

Ornek 1

ORA_SECURECONFIG policy üzerinde çalışacağım. Tablodaki, Sys kullanıcısının işlemleri ile ilgili audit tutacağım.

ALTER AUDIT POLICY ORA_SECURECONFIG

ADD Actions DROP TABLE;

ALTER AUDIT POLICY ORA_SECURECONFIG

ADD Actions DROP USER;

ALTER AUDIT POLICY ORA_SECURECONFIG

ADD Actions CREATE TABLE;

ALTER AUDIT POLICY ORA_SECURECONFIG

ADD Actions CREATE USER;

AUDIT POLICY ORA_SECURECONFIG

BY SYS;

SYS kullanıcısıyla HR shemasında sys_table isimli tablo yarattım ve sonra sildim. Hr kullanısından dba role’nu geri aldım. İşlemi alter user ve revoke olarak logladı

SELECT event_timestamp, dbusername, action_name, object_schema, object_name FROM unified_audit_trail WHERE dbusername = ‘SYS’;

Yapılan işlemlere ait loglar

İsletim sistemi seviyesinde sys kullanıcısı ile export aldım.

tablo içeren bir resim

Açıklama otomatik olarak oluşturuldu

Örnek 2

Auditor isimli bir kullanıcı oluşturup, audit_admin ve viewer role yetkileri verip, veri tabanında hr schemasını audit olarak izlemesini sağlayacağım. Öncelikle hr isimli yeni bir policy yaratacağım

CREATE AUDIT POLICY HR_POLICY

Actions

ALTER TABLE,

CREATE INDEX,

CREATE PACKAGE,

CREATE PACKAGE BODY,

CREATE PROCEDURE,

DROP TYPE,

DROP USER,

DROP VIEW,

GRANT,

INSERT,

SELECT,

UPDATE

/

AUDIT POLICY HR_POLICY

BY HR;

Policy enable etmek için audit policy hr_policy; komutunu çalıştırıyorum

Hr kullanıcısıyla login oluyorum, Hr schemasında AAA tablosunu yaratıp, drop ediyorum

Auditor kullanıcımla sql’mi çalıştırıyorum. Görüldüğü gibi başarılı bir şekilde audit tutmakta

Ayrıca işlemi yapan bilgisayarın ismini, bilgisayarın kullanıcısını vermekte

SELECT event_timestamp, dbusername, action_name, os_username object_schema, userhost,object_name FROM unified_audit_trail WHERE dbusername = ‘HR’;

Veri tabanında enable olan policyleri görmek için

SELECT POLICY_NAME FROM AUDIT_UNIFIED_ENABLED_POLICIES;

metin içeren bir resim

Açıklama otomatik olarak oluşturuldu

MOVE TABLESPACE

Audit, veri tabanında SYSAUX tablespace’ni kullanır. Ben sistem tablespace’ni kullanmayıp, yeni bir tablespace yaratıcam ve logların oraya yazılmasını sağlayacağım.

AUDIT_DATA isimli tablespace oluşturdum içinde bir tane boş datafile var.

Audit ile ilgili SYSAUX içerisinde bulunan objeleri AUDIT_DATA tablespace’ne taşıyıp yeni kayıtlarıda buraya yazmasını sağlayacağım

Default Table Space Adı > SYSAUX

tablo içeren bir resim

Açıklama otomatik olarak oluşturuldu

Lokasyon Değiştirme

BEGIN

DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION(

audit_trail_type => dbms_audit_mgmt.audit_trail_unified, audit_trail_location_value => ‘AUDIT_DATA’);

END;

/

Lokasyon Kontrolü

select owner,table_name,interval,partitioning_type,partition_count,def_tablespace_name from dba_part_Tables where owner=’AUDSYS’;

select OWNER,SEGMENT_NAME,SEGMENT_SUBTYPE,SEGMENT_TYPE,BYTES/1024/1024,TABLESPACE_NAME from dba_segments where OWNER = ‘AUDSYS’ order by 1;

tablo içeren bir resim

Açıklama otomatik olarak oluşturuldu

tablo içeren bir resim

Açıklama otomatik olarak oluşturuldu

İstersek Log tablolarını periyodik olarak temizleyebiliriz. Log tablosunu yedi gün öncesini temizleme

select SEGMENT_NAME,SEGMENT_SUBTYPE,SEGMENT_TYPE,BYTES/1024/1024,TABLESPACE_NAME from dba_segments where OWNER = ‘AUDSYS’;

EXEC DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP ( –

AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, –

LAST_ARCHIVE_TIME => SYSDATE-7);

İstersek Schedule Job Oluşturup haftalık olarak da silebiliriz

Audit Drop / Disable

Enable olarak çalışan policyleri disable, yada drop edebilirz

Disable: NOAUDIT POLICY HR_POLICY;

Drop: DROP POLICY HR_POLICY

Veri tabanında unified audit özelliğini kapatmak

Veri tabanı ve listener servisi kapatılır

İşletim sistemine login olunup

cd $ORACLE_HOME/rdbms/lib/

make -f ins_rdbms.mk uniaud_off ioracle ORACLE_HOME=$ORACLE_HOME

SELECT VALUE FROM V$OPTION WHERE PARAMETER=’Unified Auditing’;

metin içeren bir resim

Açıklama otomatik olarak oluşturuldu

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir