1. Anar Godjaev
http://anargodjaev.wordpress.com/
Verinin Güvenliği / Oracle Database Vault
Kaynak : Oracle® Database Vault Administrator's Guide 11g Release 2 (11.2)
http://docs.oracle.com/cd/E11882_01/server.112/e23090/dvdisabl.htm#BAJJCDGD
Günümüzde verinin kendisi, sürekliliği, bulunduğu yer, saklanması ne kadar önemli ise, verinin güvenliği de o kadar
önemlidir. Buna paralel olarak, hepimizin duyduğu/okuduğu siber hırsızlıklar, verilere ulaşıp, veriyi değiştirme veya
kaybetme/silme gibi olaylar yaşandıkça, veritabanı güvenliği de önem kazanmaktadır.
Verinin güvenliği için alınması gereken önlemlerin, donanım, ağ, operasyonel sistem seviyelerinde olduğu gibi,
veritabanı seviyesinde de ele alınması gerekir. Genelde firmalar bir firewall ürünü alarak güvenlikle ilgili sorunlarını
çözdüklerini düşünürler. Ancak sadece firewall ürünlerinin kullanımıyla, verinin korunamadığı bilinen bir gerçektir.
Firewall ürünleri ile dışardan yapılacak saldırılara karşı önlemler alınabiliyorken, içeriden yapılan saldırılara karşı
pek önlem alınmadığı araştırmalarda ortaya çıkmıştır. Özellikle veritabanının çalıştığı sunucu üzerinde verinin
korunması ile ilgili bir çalışma yapılmamaktadır. DBA yetkisine sahip bir kullanıcının, veritabanında her türlü
yetkiye sahip olduğu ve hatta farklı bilgisayarlardan bağlanıp aynı işlemleri yapabileceği düşünüldüğünde,
oluşabilecek güvenlik açıkları düşünülmek zorundadır. Bir database admin’in veritabanında nasıl her veriye ulaşıp
görmesi sakıncalı ise, aynı şekilde farklı bilgisayarlardan bağlanıp aynı işleri yapması da sakıncalıdır ve hatta bir
güvenlik açığıdır.
Oracle Veritabanı güvenliği çözümlerinden biri olan Oracle Database Vault, yukarda bahsedilen sorunları çözmede
yardımcı olacak bir uygulama olarak önerilebilir.
Oracle Database Vault Nedir
Oracle Database Vault, verinizin erişim güvenliği konusunda dinamik ve esnek erişim kontrollerini hayata
geçirmenizi, raporlamanızı sağlayan, Oracle Enterprise sürümleriyle birlikte gelen ve veritabanı kurulumunda
opsiyonel olarak yer alan bir üründür. Veritabanı kernel seviyesinde çalışan bu özellik, PLSQL kullanılarak
uygulanan güvenlik uygulamalarından çok daha etkindir. Her bir veritabanı için ihtiyaç duyulacak güvenlik
seviyesinin farklı olabildiği durumlarda da kullanılan Database Vault, single-instance Oracle veritabanınıza
uygulanabildiği gibi, RAC mimarisindeki yapılarda da başarılı bir şekilde kullanılmaktadır.
 Yaptıkları iş gereği veritabanınıza erişmesine izin vermek durumunda olduğunuz yetkili kullancıların,
çalışanların, müşterilerin, tedarikçilerin ve iş-ortaklarının, sadece izin verdiğiniz verilere eriştiğinden emin
olmanızı sağlar. Bir veritabanı yöneticisinin dahi kritik verilerinize (kredi kartı, müşteri özel bilgileri, hesap
detayları, personel maaş bilgileri, hesaplamalar, harcamalar, görüşme detayları gibi) erişimini engelleyebilir.
 Veritabanınızın bilginiz haricinde izinsiz olarak değiştirilmesini engeller.
 Gerçek zamanlı olarak anlık kontroller eklemenizi, değiştirmenizi ve takibini yapmanızı sağlar.
 Oracle ailesinin bir ürünü olan "Database Vault" kurulumu, yapılandırması ve yönetimi oldukça basit bir ürün
olmakla birlikte sistemin performansına çok düşük etki ile kullanılabilmektedir.
 Database Vault Oracle Veritabanının içerisinde gömülü olarak gelen ve basit bir adımla kurulabilen bu ürün
olup realm, command rule, factor,rule setlerle ve raporlama kısımları ile hizmet vermektedir.
 Oracle Database Vault, uygulamaları ve verileri korumak için çok güçlü güvenli bir ortam sağlar.
 Oracle Database ile yetkili kullanıcılar kısıtlanabilir(SELECT ANY TABLE). En yetkili role sahip DBA
kullanıcıların hakları bile kısıtlanabilir.
 Veritabanındaki objeler üzerinde(alter,drop,truncate v.b.) veya veri içeriğinde yapılacak
değişiklikler(insert,delete,update v.b), nasıl , ne zaman, ne ile yapılacakları belirlenip kısıtlanabilir.
2. Anar Godjaev
http://anargodjaev.wordpress.com/
 Oracle Database Vault mevcut veritabanı ortamını korur. İstenilmeyen programların bağlanması
engellenebilir. Veritabanını istenilmeyen ataklardan korur.
 Veritabanı Görev ayrılığı prensibi getirir.
DB Vault Kurulumu İçin Ön Uyarılar
Uyarı 1 : /var/opt/oracle/oratab altındaki ilgili satır düzgün $ORACLE_HOME olmalıdır. Aksi takdirde dbca
çalıştırıldığında Configure Option butonu pasif çıkacaktır.
Uyarı 2 : Default profile deki PASSWORD_VERIFY_FUNCTION NULL olmalıdır. Aksi takdirde ORA-29504
hatası alınır. Çözüm Doc ID 1509963.1
Uyarı 3 : DBCA ile konfigurasyonun %85 civarlarında ORA-29504 hatası alınabilir. Bu hata 11g de ignore
edilebilir. 12c de düzeltilmiştir. Çözüm için Doc ID 1509963.1)
Db Vault Option ın Oracle Binary için Kontrol Edilmesi
Kontrol etmek için sqlplus a sysdba ile gireriz.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
Yukarıda Vault la ilgili bir yazı gelmediğini görürüz. Eğer kurulu olsaydı ek olarak With the Oracle Label Security,
Oracle Database Vault options yazısı görülecekti.
Ek olarak Kontrol için aşağıdaki view dan yararlanırız.
SELECT * FROM V$OPTION WHERE PARAMETER = 'Oracle Database Vault';
Oracle Database Vault -----ïƒ FALSE ( yani disabled )
Örnek
Db Vault Option ın Oracle Binary için Enable Edilmesi
ADIM 1-İlgili Database kapanır
SQL> SHUTDOWN IMMEDIATE
3. Anar Godjaev
http://anargodjaev.wordpress.com/
ADIM 2-Dbconsole (Enterprise Manager) var ise kapanır
$ emctl stop dbconsole
ADIM 3- İlgili Listener kapanır
lsnrctl stop listener
ADIM 4- DB Vault Option Oracle Binary için enable edilir
cd $ORACLE_HOME/rdbms/lib
make -f ins_rdbms.mk dv_on lbac_on ioracle
GENEL NOT : Oracle binary de option enable ederken Make –f yerine chopt komutu da kullanılabilir. Kullanımı
aşağıdaki Linktedir.
http://docs.oracle.com/cd/E11882_01/install.112/e25666/postinst.htm#BABJIAJB
Örnek :
chopt enable lbac
Writing to /u01/app/oracle/product/11.2.0/dbhome_2/install/enable_lbac.log...
/usr/bin/make -f /u01/app/oracle/product/11.2.0/dbhome_2/rdbms/lib/ins_rdbms.mk lbac_on
ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_2
/usr/bin/make -f /u01/app/oracle/product/11.2.0/dbhome_2/rdbms/lib/ins_rdbms.mk ioracle
ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_2
chopt enable dv
Writing to /u01/app/oracle/product/11.2.0/dbhome_2/install/enable_dv.log...
/usr/bin/make -f /u01/app/oracle/product/11.2.0/dbhome_2/rdbms/lib/ins_rdbms.mk dv_on
ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_2
/usr/bin/make -f /u01/app/oracle/product/11.2.0/dbhome_2/rdbms/lib/ins_rdbms.mk ioracle
ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_2
ADIM 5-Database ve Listener açılarak DB Vault un enable olup olmadığı kontrol edilir.
Sqlplus> startup;
SELECT * FROM V$OPTION WHERE PARAMETER = 'Oracle Database Vault'; Oracle Database
Vault --ïƒ TRUE ( yani enabled )
Ek olarak sqlplus a girildiğinde With the Oracle Label Security, Oracle Database Vault options geldiği görülür
Örnek
4. Anar Godjaev
http://anargodjaev.wordpress.com/
Oracle Database Vault veritabanı kurulumunda seçimli olarak gelmektedir. Database vault, Oracle kurulurken
seçilebileceği gibi, Oracle instance kurulduktan sonra da aktif hale getirilebilir. Oracle instance kurulduktan sonra
aktif hale getirilmesi için dbca komutu ile Database Configuration Assistant çalıştırılması gerekir.
Configuration Database Option seçeneği işaretlenip next butonuna basılır.
Sunucu üzerinde birden fazla Oracle instance varsa, Database Vault aktif edilecek Oracle Instance seçilir.
5. Anar Godjaev
http://anargodjaev.wordpress.com/
Database Vault, Oracle Label Security seçildikten sonra aktif hale gelecektir.
Database Vault Owner ve opsiyonel olarak Account Manager(Girilmesi önerilir) için kullanıcı / parola tanımı
yapılır.
6. Anar Godjaev
http://anargodjaev.wordpress.com/
Kurulum bittikten sonra, https://hostname(veya host ip):port number/dva herhangi bir browser’a yazarak Oracle
Database Vault ekranına girilir.
Datatabase Vault Görev Ayrılığı
Oracle Database Vault görev ayrımları özelliği, veritabanı üzerinde güvenlik yönetimi, hesap yönetimi ve veritabanı
yönetimi olarak üç farklı sorumluluk ortaya çıkarır.
Güvenlik yöneticisi(Security Administration), Güvenlikten sorumlu kişi aynı zamanda Oracle Database Vault'un da
sahibidir. Veritabanındaki bütün güvenlik operasyonundan sorumludur. Realms, komut kuralları ve faktörleri
yönetebilir ve Database Vault raporlarını çalıştırabilir fakat uygulama verilerine erişme hakkı yoktur.
Hesap yöneticisi(Account Management), kullanıcı hesaplarını oluşturma, silme ve değiştirme yetkilerine sahiptir.
Veritabanı yöneticisi(Database Administration) ise, yedekleme/iyileştirme, yama uygulama ve performans yönetimi
gibi dba görevlerini yürütür.
7. Anar Godjaev
http://anargodjaev.wordpress.com/
Database Vault Ana bileÅŸenleri
Realms, veritabanında bir çeşit firewall gibi çalışır ve dba gibi yüksek erişim hakkına sahip kullanıcıların uygulama
verilerine erişimlerini kontrol altına alır. Realm’ler kullanılarak tüm bir uygulama ya da uygulama içerisinde belirli
tablo grupları koruma altına alınabilir. Örneğin; uygulama içerisinde bir şemanın bir realm ile koruma altına
alınması durumunda, DBA dahil herhangi bir kullanıcı kendisine özel yetki verilmeden bu şemadaki herhangi bir
tabloyu sorgulayamaz. Bu sayede DBA'ler bile uygulama verisindeki hassas verilere eriÅŸememiÅŸ olurlar.
Örnek, DATA_OWNER scheması reals ile koruma altına alınacak. Sadece bu schema’a SYS,SYSTEM ve U1
kullanıcıları özel yetkiye sahiptir.
8. Anar Godjaev
http://anargodjaev.wordpress.com/
Örnekleme:
sqlplus u3/u3
SQL> select * from data_owner.t1;
select * from data_owner.t1
*
ERROR at line 1:
ORA-01031: insufficient privileges
[oracle@ksoracletest1 ~]$ sqlplus u1/u1
SQL*Plus: Release 11.2.0.2.0 Production on Tue Jul 10 16:24:18 2012
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options
SQL> select * from data_owner.t1;
ID
----------
9. Anar Godjaev
http://anargodjaev.wordpress.com/
1
1
1
1
1
Rule Sets, Rule setler, realms,factors,command rules ve security application roller tarafından kullanılır. Rule setlere
birden fazla rule eklenebildiği gibi var olan rule’ler de eklenebilir.
Bir rule set yaratılırken, rule set’in adı, içeriği, statusu(enable,disable) ve evaluation option kısımları girilmelidir.
Rule setler’deki evaluation option kısmında All true ve Any true seçenekleri bulunur. All true opsiyonu seçildiğinde,
kullanıcının veriye erişebilmesi için, bu rule set’teki tüm kuralların true değerini sağlamış olması gereklidir. Any
true opsiyonu seçildiğinde ise var olan rulelar’dan en az birinin true olması yeterlidir.
Factors, Çevresel parametrelerin (IP adresi, kimlik doğrulama metodu, makine ismi, bağlantı adı vb.)
tanımlanmasını sağlar. Bu sayede güvenli erişim yolundan, kimlerin, ne zaman, nasıl ve nereden geçtiğinin
algılanması sağlanır.
Command Rules, veritabanı komutlarının çalıştırılmasını kontrol eden güvenlik kurallarıdır.
Örnek, Rule sets, Factors ve Command Rules beraber kullanılarak yapılan bir örnek çalışma.
195.87.212.68 ip no’lu ‘Highly Secured Internal Network’ domain’den bağlanan DBSMAPS kullanıcısı hafta içi
hegün saat 09:00 – 19:00 arasından DBSMAPS schemasından table truncate yapabilsin. Bu kural dışındaki
kullanıcılar truncate yapamasın.
Yapılacaklar;
1. Kullanıcı için bir factor tanımlanır. Factor tanımlamalarında bağlanılacak session’in ip no ve domain adı belirtilir.
2. Bir rule set tanımlanır. Evaluation Option all true seçeneği işaretlenir.
3. Hafta içi günleri, kullanıcı adı ve hafta içi çalışma saatleri için rule yaratılıp , rule set’e eklenir
4. Command Rule ile truncate table komutu, bu örnek için yaratılan rule set ile ilişkilendirilir.
Not:SELECT OBJECT_NAME, OBJECT_TYPE FROM DBA_OBJECTS WHERE OWNER='DVF' AND
OBJECT_NAME LIKE 'F$%'
12. Anar Godjaev
http://anargodjaev.wordpress.com/
Örnekleme:
sqlplus dbsmaps/dbsmaps
SQL> create table test (aaa char(1));
Table created.
SQL> truncate table test;
truncate table test
*
ERROR at line 1:
ORA-47400: Command Rule violation for TRUNCATE TABLE on DBSMAPS.TEST
SQL> select DVF.F$CLIENT_IP from dual;
F$CLIENT_IP
--------------------------------------------------------------------------------
SQL> select DVF.F$DOMAIN from dual;
F$DOMAIN
--------------------------------------------------------------------------------
Not Secured Network
SQL> exit
oracle@ksoracletest1 ~]$ sqlplus dbsmaps/dbsmaps@ORCL
SQL> truncate table test;
Table truncated.
SQL> select DVF.F$CLIENT_IP from dual;
F$CLIENT_IP
--------------------------------------------------------------------------------
195.87.212.68
SQL> select DVF.F$DOMAIN from dual;
F$DOMAIN
--------------------------------------------------------------------------------
Highly Secured Internal Network
SQL>
sqlplus ANARDB/ksxxxx11@ORCL
SQL> select DVF.F$CLIENT_IP from dual;
13. Anar Godjaev
http://anargodjaev.wordpress.com/
F$CLIENT_IP
--------------------------------------------------------------------------------
195.87.212.68
SQL> select DVF.F$DOMAIN from dual;
F$DOMAIN
--------------------------------------------------------------------------------
Highly Secured Internal Network
SQL> truncate table test;
truncate table test
*
ERROR at line 1:
ORA-47400: Command Rule violation for TRUNCATE TABLE on ANARDB.TEST
SQL>
Oracle Database Vault Raporlar
Oracle Database Vault ile birlikte kurulu olarak gelen birçok rapor bulunmaktadır. Bu raporlar Realm'lere olan
yetkisiz erişim denemelerini içermektedir. Örneğin bir DBA'in yetkisi olduğu halde erişmemesi gereken bir yere
erişmeye çalışması (maaş bilgisi gibi). Aynı şekilde Command Rules, factors, rule sets’ler tarafından engellenen
kullanıcılar ve yaptıkları işlemler raporlarda görülebilir.