26
1

Oracle Audit Vault & Database Vault

Embed Size (px)

Citation preview

Page 1: Oracle Audit Vault & Database Vault

1

Page 2: Oracle Audit Vault & Database Vault

<Insert Picture Here>

Oracle Veritabanı Güvenliği Çözümleri – Oracle Audit Vault ve Oracle Database Vault

Orhan Eripek, Senior Oracle DBA, Aksigorta

http://orhaneripek.com/

http://www.youtube.com/user/BilisimSohbetleri

https://www.facebook.com/groups/BilisimSohbetleri

Page 3: Oracle Audit Vault & Database Vault

3

Audit (Denetim)

Şirketler;

• Denetim kapsamına alacakları en önemli ve kritik

gördükleri tablolarını belirlemelidir, bu listeyi zaman zaman

güncellemelidir,

• Veritabanlarında kullanıcı aktivitelerini denetlemeli,

loglarını tutmalıdır, logların günlük, aylık, yıllık periyotlarda

büyüme hızlarını izlemeli ve buna göre gerekli kaynak

(Disk, RAM, vs…) artışına gitmelidir,

• Bu logların backup’larını almalıdır,

• Anlık kritik işlemler hakkında Alert mailler ile haberdar

olmalıdır,

• Tüm bu aktiviteleri raporlayabilmelidir.

Page 4: Oracle Audit Vault & Database Vault

4

Veritabanı Güvenliği için Kullanılan Uygulamalar

• Veritabanı Güvenliğini, dış kaynaklı felaketlerden ve kötü

niyetli kullanıcılardan korumak için sağlarız.

• Biz bu sunumda kötü niyetli kullanıcılardan veritabanımızı,

dolayısıyla tablespace, tablo, index, package, procedure,

function, vs… tüm objelerimizi nasıl korumaya alırız,

bunlar üzerinde yapılan aktiviteleri (transaction) nasıl

izleriz, nasıl loglarız ve nasıl raporlarız, bunları

inceleyeceğiz,

• Kötü niyetli kullanıcı neler yapabilir? En önemli tablo ve

veritabanı objelerini silebilir, erişmesi yasak olan

tablolarda işlem yapabilir, başka kullanıcılara gizli yetkiler

verebilir, Audit loglarını silebilir, gizli bilgilere erişebilir…

Page 5: Oracle Audit Vault & Database Vault

5

En çok bilinen Veritabanı Güvenliği Uygulamaları;

Page 6: Oracle Audit Vault & Database Vault

6

Oracle Audit Vault 10.3

Özet olarak açıklamak gerekirse, veritabanı denetim ayarlarını yapabileceğimiz ve

kullanıcıların tüm veritabanı aktivitelerini raporlayabileceğimiz uygulamadır.

Page 7: Oracle Audit Vault & Database Vault

7

Oracle Database Vault 10.3

Özet olarak açıklamak gerekirse, DBA veya kullanıcıların şirket uygulamalarına doğrudan

erişimlerinin OS user ve IP bazında kısıtlanabileceği, veritabanı seviyesinde bazı yetki

kurallarını tanımlayarak güvenliği sağlayabileceğimiz uygulamadır.

Page 8: Oracle Audit Vault & Database Vault

8

Oracle Audit Vault and Database Firewall 12.1.1 Bu son versiyon ile yapılan temel değişiklikler; Agent’ların çalışma mantığı değiştirildi, artık

Collector+Agent değil de sadece Agent yönetiliyor, raporlama ekranları daha kullanışlı ve

yeni Database Firewall özelliğinin eklenmesi.

Page 9: Oracle Audit Vault & Database Vault

9

Oracle Audit Vault 12.1.1 ile beraber gelen Database Firewall uygulaması network üzerinde yetkisiz SQL trafiğini database’e ulaşmadan önce izler ve bloke eder. fwadmin (Firewall Admin) en yetkili kullanıcı olarak tüm gerekli sistem ayarlarını yapabilir.

Page 10: Oracle Audit Vault & Database Vault

10

Oracle Audit Vault Mimarisi

Page 11: Oracle Audit Vault & Database Vault

11

Oracle Audit Vault

Kaynak veritaban(lar)ındaki aktiviteleri izler (monitoring), loglar

(logging), raporlar (reporting) ve uyarır (alerting),

AVADMIN yönetir, AVAUDITOR raporlar.

CRM Data

ERP Data

Databases

HR Data

Audit Data

Policies

Built-in Reports

Alerts

Custom Reports

!

Auditor

Page 12: Oracle Audit Vault & Database Vault

12

AUDIT_TRAIL (Denetim İzi):

None: Denetime Kapalı

DB: Kayıtlar SYS.AUD$ tablosunda tutulur

DB, EXTENDED: Kayıtlar SYS.AUD$ tablosunda SQL bind ve SQL text kolon bilgileri ile birlikte tutulur

OS: *.aud uzantılı audit dosyaları Operating sistemde audit_file_dest dizininde tutulur

XML: Kayıtlar Operating sistemde XML formatında tutulur

XML, EXTENDED: Kayıtlar Operating sistemde XML formatında SQL bind ve SQL text kolon bilgileri ile birlikte tutulur

show parameter audit; veya

SQL> select name, value from v$parameter where lower(name) like 'audit%';

audit_file_dest string /oracle/db/admin/<instance_name>/adump

audit_syslog_level string

audit_sys_operations boolean TRUE

audit_trail string OS

ALTER SYSTEM SET AUDIT_TRAIL=OS SCOPE=SPFILE;

Page 13: Oracle Audit Vault & Database Vault

13

Alert Mekanizması

İstenmeyen durumların bildirimlerini almak için Alert mekanizması oluşturabiliriz. Belli periyotlarda grafiksel olarak Alert’lerin istatistiğini görebiliriz.

Page 14: Oracle Audit Vault & Database Vault

14

Page 15: Oracle Audit Vault & Database Vault

15

Page 16: Oracle Audit Vault & Database Vault

16

Mail’imize raporun linki gönderildiği gibi raporun kendisi de attach edilmiş olarak pdf

formatında gönderilebilmektedir, mail hesabımızın kotasının raporlardan dolayı

büyümemesi için raporun linkinin gönderilmesi de tercih edilebilir.

Page 17: Oracle Audit Vault & Database Vault

17

Otomatik Alert Mail

Audit Vault Tablespace Size durumu için Alert Mail:

Audit Vault tablespace doluluk oranı belli bir eşik değeri (örnek olması açısından aşağıdaki örnekte %60 limiti verildi, biz kullanımda %90 limitini vereceğiz) aştığında otomatik Alert mailini alabiliriz.

Page 18: Oracle Audit Vault & Database Vault

18

Audit Vault Uygulaması için Alert Mail:

Audit Vault uygulamalarının data toplayıcı kollektor’ları (Collectors) herhangi bir

sebepten dolayı duracak olursa otomatik mail ile Alert durumu öğrenebiliriz.

Page 19: Oracle Audit Vault & Database Vault

19

Triger ile Denetleme

Çok önemli gördüğümüz 2-3 tablo için trigger yapısıyla ‘old value’ , ‘new value’ değerlerini loglayabiliriz, ‘ORHAN_TRIGGER_DENEME’ isminde oluşturduğum triger’ın demosunu inceleyelim;

-- ÖRNEK TABLO YARATILIYOR

CREATE TABLE ORHAN_DENEME

(

OWNER VARCHAR2(30 BYTE),

OBJECT_NAME VARCHAR2(128 BYTE),

SUBOBJECT_NAME VARCHAR2(30 BYTE),

OBJECT_ID NUMBER,

DATA_OBJECT_ID NUMBER,

OBJECT_TYPE VARCHAR2(19 BYTE),

CREATED DATE,

LAST_DDL_TIME DATE,

TIMESTAMP VARCHAR2(19 BYTE),

STATUS VARCHAR2(7 BYTE),

TEMPORARY VARCHAR2(1 BYTE),

GENERATED VARCHAR2(1 BYTE),

SECONDARY VARCHAR2(1 BYTE),

NAMESPACE NUMBER,

EDITION_NAME VARCHAR2(30 BYTE)

)

-- AUDIT KAYITLARINI TUTACAK BIR TABLO OLUSTURULUR

CREATE TABLE ORHAN_AUDIT_TABLE (

OWNER VARCHAR2(30),

TABLE_NAME VARCHAR2(30),

MODIFYING_USER VARCHAR2(30),

MODIFY_TIME DATE DEFAULT SYSDATE,

COLUMN_NAME varchar2(30),

BEFORE_VALUE varchar2(30),

AFTER_VALUE varchar2(30));

CREATE OR REPLACE TRIGGER ORHAN_TRIGGER_DENEME

AFTER UPDATE ON ORHAN_DENEME

FOR EACH ROW

DECLARE

v_username varchar2(10);

BEGIN

SELECT user INTO v_username FROM dual;

INSERT INTO ORHAN_AUDIT_TABLE ( OWNER, TABLE_NAME,

MODIFYING_USER, MODIFY_TIME, COLUMN_NAME, BEFORE_VALUE, AFTER_VALUE )

VALUES ( 'AV_SRV', 'ORHAN_AUDIT_TABLE', v_username, SYSDATE,

'OBJECT_NAME', :OLD.OBJECT_NAME, :NEW.OBJECT_NAME );

END;

1 2

3

Page 20: Oracle Audit Vault & Database Vault

20

-- ORNEK OLMASI ACISINDAN BİRKAÇ KAYIT GIRILIYOR

Insert into ORHAN_DENEME

(OWNER, OBJECT_NAME, OBJECT_ID, DATA_OBJECT_ID, OBJECT_TYPE,

CREATED, LAST_DDL_TIME, TIMESTAMP, STATUS, TEMPORARY,

GENERATED, SECONDARY, NAMESPACE)

Values

('SYS', 'C_OBJ#', 2, 2, 'CLUSTER',

TO_DATE('10/21/2011 03:16:47', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('10/21/2011 03:16:47', 'MM/DD/YYYY

HH24:MI:SS'), '2011-10-21:03:16:47', 'VALID', 'N',

'N', 'N', 5);

4

Page 21: Oracle Audit Vault & Database Vault

21

FGA (Fine Grained) Audit –Detaylı Denetim

İsteğimiz tabloların isteğimiz kolonlarını seçerek veya istediğimiz kolonlar için filtreleme koyarak denetim sağlayabiliriz, denetim kayıtları sys.fga_log$ view’inde tutulur.

Örneğin orhan user’ının orhan_deneme ismindeki tablosunu FGA denetimine alalım ve raporunu Audit Vault konsolundan çekelim;

select * from orhan_deneme;

insert into orhan_deneme (id, adi, per_no) values (12,'ahmet', 76);

insert into orhan_deneme (id, adi, per_no) values (:t1,:t2, :t3);

update orhan_deneme set per_no=38 where id=22;

delete orhan_deneme where id=12;

commit;

Declare

c number;

begin

for rec in 1..100 loop

c:=rec;

insert into orhan_deneme values(c,'orhan'||c,rec+10);

end loop;

commit;

end;

create table orhan_deneme (id number, adi varchar2(20), per_no number);

BEGIN

DBMS_FGA.ADD_POLICY

(object_schema => '"ORHAN"',

object_name => '«ORHAN_DENEME"',

policy_name => '«ORHAN_DENEME_IUD"',

statement_types => 'DELETE,INSERT,UPDATE',

audit_trail => DBMS_FGA.DB,

audit_column_opts => DBMS_FGA.any_columns);

END;

select POLICY_NAME from dba_audit_policies where OBJECT_NAME=‘ORHAN_DENEME';

Page 22: Oracle Audit Vault & Database Vault

22

Örnek Rapor-1

Page 23: Oracle Audit Vault & Database Vault

23

Örnek Rapor-2

Page 24: Oracle Audit Vault & Database Vault

24

Örnek Rapor-3

Page 25: Oracle Audit Vault & Database Vault

25

Page 26: Oracle Audit Vault & Database Vault

26

Teşekkürler