Database’ deki kullanıcı sayısı fazla olan şirketler de bir süre
sonra şöyle bir problem ortaya çıkıyor. İşe başlayan personele bir database
accountu açılıyor. Sonra zaman içerisinde kimi personel ayrılıyor, kimisi yeni
işe başlıyor derken ipin ucu bir noktada kaçabiliyor dolayısıyla işten ayrılmış
olan personelin accountu sistemde açık olarak kalabiliyor. Buda aslında
sisteminiz için bir güvenlik açığı oluşturuyor. Peki bunu nasıl giderebiliriz?
Birebir çözümü olmasa da (en azından ben öyle düşünüyorum) şöyle bir tespitte
bulunabiliriz. Database’ e connect olan kullanıcıları sisteme giriş yaptığı
anda tespit edip, bizim istemiş olduğumuz bazı bilgileri bir tabloya yazdırıp
sonrasında sistemdeki tüm kullanıcılar ile karşılaştırıp baktığımız zaman
aralığında sisteme hiç giriş yapmamış olan kullanıcıları bulabiliriz. Tabi bu
kullanıcıları hemen drop etmek çok akıllıca olmayabilir, burada şu yapılabilir
bu kullanıcıların accountları locklanıp en azından araştırmak için zaman
kazanılabilir. Şimdi bunun için neler yapmamız gerektiğine bakalım;
Önce v$sessionın tüm kolonlarını içeren bir tablo create edip, trigger da bunu kullanacğım. Aslında bu iş için v$session tablosundaki tüm kolonlara ihtiyacımız yok, siz isterseniz insert ve create table scriptini özelliştirip nesnelerinizi kolon bazında tanımlayıp create edebilirsiniz.
– tablomuzu create edelim ;
create table erdem.logon_user as select * from
v$session where 0=1
Table created.
Table created.
– triggerımızı create edelim ;
create or replace trigger
erdem.logon_user_control
AFTER LOGON ON DATABASE
BEGIN
insert into erdem.logon_user select * from v$session ;
END;
/
erdem.logon_user_control
AFTER LOGON ON DATABASE
BEGIN
insert into erdem.logon_user select * from v$session ;
END;
/
Trigger created.
Şimdi tablomuzu kontrol edelim, yeni gelen
sessionlara ait tüm bilgileri bizim tablomuzada insert ediyor olması gerekiyor.
select count(*) from erdem.logon_user ;
COUNT(*)
——————
1078
1 row selected
——————
1078
1 row selected
Evet tablo doluyor, problem yok.
Şimdi yaptığımız işlemleri geri alalım. Temizlik
zamanı;
drop trigger erdem.logon_user_control
;
Trigger dropped
Trigger dropped
drop table erdem.logon_user ;
Table dropped
Table dropped
Umarım işinize
yarar zaman zaman bu tarz bilgileri kimi uygulama sahipleri isteyebiliyor.
eline sağlık güzel calisma olmus...
YanıtlaSil