15
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.

Database Vault / Verinin Güvenliği

Embed Size (px)

Citation preview

Page 1: Database Vault /  Verinin Güvenliği

Anar Godjaevhttp://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.

Page 2: Database Vault /  Verinin Güvenliği

Anar Godjaevhttp://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

Page 3: Database Vault /  Verinin Güvenliği

Anar Godjaevhttp://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

Page 4: Database Vault /  Verinin Güvenliği

Anar Godjaevhttp://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.

Page 5: Database Vault /  Verinin Güvenliği

Anar Godjaevhttp://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.

Page 6: Database Vault /  Verinin Güvenliği

Anar Godjaevhttp://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.

Page 7: Database Vault /  Verinin Güvenliği

Anar Godjaevhttp://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.

Page 8: Database Vault /  Verinin Güvenliği

Anar Godjaevhttp://anargodjaev.wordpress.com/

Örnekleme:

sqlplus u3/u3SQL> select * from data_owner.t1;select * from data_owner.t1*ERROR at line 1:ORA-01031: insufficient privileges[oracle@ksoracletest1 ~]$ sqlplus u1/u1SQL*Plus: Release 11.2.0.2.0 Production on Tue Jul 10 16:24:18 2012Copyright (c) 1982, 2010, Oracle. All rights reserved.

Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit ProductionWith the Partitioning, Oracle Label Security, OLAP, Data Mining,Oracle Database Vault and Real Application Testing optionsSQL> select * from data_owner.t1;ID----------

Page 9: Database Vault /  Verinin Güvenliği

Anar Godjaevhttp://anargodjaev.wordpress.com/

11111

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 eklenir4. 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$%'

Page 10: Database Vault /  Verinin Güvenliği

Anar Godjaevhttp://anargodjaev.wordpress.com/

Page 11: Database Vault /  Verinin Güvenliği

Anar Godjaevhttp://anargodjaev.wordpress.com/

Page 12: Database Vault /  Verinin Güvenliği

Anar Godjaevhttp://anargodjaev.wordpress.com/

Örnekleme:

sqlplus dbsmaps/dbsmapsSQL> 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.TESTSQL> select DVF.F$CLIENT_IP from dual;F$CLIENT_IP--------------------------------------------------------------------------------SQL> select DVF.F$DOMAIN from dual;F$DOMAIN--------------------------------------------------------------------------------Not Secured NetworkSQL> exitoracle@ksoracletest1 ~]$ sqlplus dbsmaps/dbsmaps@ORCLSQL> truncate table test;Table truncated.SQL> select DVF.F$CLIENT_IP from dual;F$CLIENT_IP--------------------------------------------------------------------------------195.87.212.68SQL> select DVF.F$DOMAIN from dual;F$DOMAIN--------------------------------------------------------------------------------Highly Secured Internal NetworkSQL>sqlplus ANARDB/ksxxxx11@ORCLSQL> select DVF.F$CLIENT_IP from dual;

Page 13: Database Vault /  Verinin Güvenliği

Anar Godjaevhttp://anargodjaev.wordpress.com/

F$CLIENT_IP--------------------------------------------------------------------------------195.87.212.68SQL> select DVF.F$DOMAIN from dual;F$DOMAIN--------------------------------------------------------------------------------Highly Secured Internal NetworkSQL> truncate table test;truncate table test*ERROR at line 1:ORA-47400: Command Rule violation for TRUNCATE TABLE on ANARDB.TESTSQL>

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.