Veritabanında Denetleme (Audit)

Veritabanında standart denetleme audit_trail parametresine değer (os, db, db extended, xml, xml extended) atanması ile başlar. Eğer denetlemeyi durdurmak istersek parametre NONE yapılmalıdır. Bu parametrenin none yapılması ile beraber veritabanı kapatılıp açıldığında tüm denetleme durmuş olur.

Denetlemeler komut, yetki, obje ve network aktiviteleri bazında tanımlanır. Denetleme başlatmak için AUDIT, durdurmak için NOAUDIT komutu kullanılmalıdır.

Bir kullanıcı kendine ait tüm kullanıcılar üzerinde AUDIT başlatabilir. Başka kullanıcıların objeleri üzerinde AUDIT başlatmak için ise AUDIT ANY yetkisi olmalıdır. Sistem yetkileri üzerinde AUDIT tanımlamak için AUDIT SYSTEM yetkisi olmalıdır. NOAUDIT komutunun çalıştırılması için ise özel bir yetkiye gerek yoktur.

O7_DICTIONARY_ACCESSIBILITY parametresi FALSE ise denetim izleri yalnızca SYSDBA yekili kullanıcılar tarafında silinebilir. DELETE ANY TABLE yetkisine sahip kullanıcılar dahi silemezler.

Tüm denetim kayıtları herhangi bir transaction’ın tanımlanmasını beklemeden, denetlenecek komutun çalışma anında yazılır.

Komutların Denetlenmesi

Komut bazında denetleme yapılması, kullancıların çalıştırdığı,

  • DML(INSERT, UPDATE, DELETE, SELECT)
  • DDL(CREATE, DROP….)

gibi veritabanı komutlarının denetlenmesi işlemidir. Denetleme yaparken denetleyeceğimiz obje türünü girmemiz yeterlidir. AUDIT komutunda yazdığınız obje türüne türüne göre istenilen komutlar denetlenir. Obje türüne göre denetleyebileceğimiz komutlar aşağıdaki gibidir.

Oracle Audit System

 

 

 

 

 

 

 

Bu tür komut bazlı denetlemeyi başlatmak için AUDIT SYSTEM yetkisine sahip olunması gerekir. (dba_sys_privs viewi sorgulanarak yetki sahipleri bulunabilir) Komut bazında denetleme yeni session açıldığında aktif olur.

Örneğin tablo objesi DELETE komutunun tüm veritabanında denetlenmesi için aşağıdaki komutu çalıştırabiliriz.

audit delete table by access;

Yada sadece SYSTEM kullanıcısında çalıştırılan SELECT TABLE komutunu denetlemek istersek aşağıdaki komutu çalıştırabiliriz.

audit select table by system;

Verilen audit leri görmek için DBA_STMT_AUDIT_OPTS viewini sorgulayabiliriz.

Oracle Audit Privilege

 

 

Yukarıdaki resimdede görüldüğü gibi;

  • SYSTEM kullanıcısında çalışan tüm SELECT TABLE komutları
  • SYSTEM kullanıcısının çalıştırdığı tüm komutların
  • EXEMPT ACCESS POLICY yetkisini veren GRANT komutlarının
  • Bütün kullanıcılarda olmak üzere DELETE TABLE komutlarının denetlendiğini görmekteyiz.

(devamı..)

1,924 total views, 40 views today


Oracle Audit – Denetim İzlerinin Yönetilmesi

Denetim izleri yapılan konfigürasyona göre veritabanında tablo olarak veya işletim sisteminde dosya olarak tutulmaktadır. Bu denetim izlerini silmek veya başka ortamlara taşımak için farklı yöntemler kullanılabilir. Fakar Oracle 11g ile beraber denetim izlerinin yönetilmesi için DBMS_AUDIT_MGMT paketi kullanılmaya başlanmıştır. Böylece değişik ortamlarda tutulan denetim izleri tek bir paket ile yönetilebilir hale gelmiştir. DBMS_AUDIT_MGMT paketi denetim izleri üzerinde taşıma silme işlemi yaparken veritabanındaki sessionları bekler duruma getirmez ve kullanıcılar çalışmalarına kesintisiz devam ederler. Bu nedenle değişik yöntemler ile denetim izlerini yönetebilmemize rağmen(Örneğin tabloda ise DELETE komutu, işletim sisteminde ise rm komutu kullanabiliriz) DBMS_AUDIT_MGMTpaketini kullanmak daha doğrudur.

Veritabanında Saklanılan Denetim İzlerinin Farklı Tablespacelere Taşınması

Veritabanında tutulan standart denetim izleri SYS.AUD$ tablosunda, ayrıntılı denetim izleride(Fine Grained Auditing-log mekanizması diyebiliriz) FGA_LOG$ tablolarında tutulur. Veritabanı ilk yaratıldığında bu tablolar varsayılan olarak SYSTEM tablespace’inde tutulur. Ama tabloların büyümesi ve denetleme politikası nedeniyle SYSTEM tablespace üzerinde baskı oluşabilir. Bu nedenle sık sık silinmesi ve sürekli ekleme yapılan tabloları ayrı bir tablespace’e taşımak isteriz.

Bu işlem DBMS_AUDIT_MGMT.set_audit_trail_location veritabanı paketi ile yapılır. Bu paket 2 tane parametre alır. Bir tanesi taşımak istediğiniz tablo türünü gösteren parametre, diğeri ise tabloların taşınacağı tablespace adıdır.

Tablo türünü gösteren parametre aşağıdaki 3 değerden birini alır.

  • DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD: Standard denetim izi (AUD$).
  • DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD: Ayrıntılı enetim izi (FGA_LOG$).
  • DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD : Standart ve Ayrıntılı denetim izi için.
SELECT table_name, tablespace_name
FROM dba_tables
WHERE table_name IN ('AUD$', 'FGA_LOG$')
ORDER BY table_name;
TABLE_NAME   TABLESPACE_NAME
------------------------------ ------------------------------
AUD$            SYSTEM
FGA_LOG$        SYSTEM

CREATE TABLESPACE AUDIT_TS
DATAFILE
'/u01/app/oracle/oradata/ORCL/AUDIT_TS' SIZE 104857600 AUTOEXTEND ON NEXT 10485760 MAXSIZE UNLIMITED;


BEGIN
DBMS_AUDIT_MGMT.set_audit_trail_location(
audit_trail_type = DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
audit_trail_location_value = 'AUDIT_TS');
END;
/


SELECT table_name, tablespace_name
FROM dba_tables
WHERE table_name IN ('AUD$', 'FGA_LOG$')
ORDER BY table_name;
TABLE_NAME   TABLESPACE_NAME
------------------------------ ------------------------------
AUD$           AUDIT_TS
FGA_LOG$       SYSTEM


BEGIN
DBMS_AUDIT_MGMT.set_audit_trail_location(
audit_trail_type = DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD,
audit_trail_location_value = 'AUDIT_TS');
END;
/


SELECT table_name, tablespace_name
FROM dba_tables
WHERE table_name IN ('AUD$', 'FGA_LOG$')
ORDER BY table_name;

TABLE_NAME  TABLESPACE_NAME
------------------------------ ------------------------------
AUD$         AUDIT_TS
FGA_LOG$     AUDIT_TS

(devamı..)

1,102 total views, no views today


Oracle Audit

Denetleme en genel tanımıyla, veritabanında yapılan işlemlerin belirlenmiş kurallara göre izlenmesi ve kayıt edilmesidir.

Veritabanı denetlemesi veritabanı güvenliği açısından en önemli çalışmalardan bir tanesidir. Veritabanı denetlemesi sayesinde;

  • Veritabanında bulunan bilgilerin tutarlı olduğu,yetkisiz kişilerce değiştirilmediğini kanıtlar.
  • Veritabanında yapılan şüpheli hareketler sorgulanabilir ve kimin tarafından yapıldığı bulunur.
  • Veritabanında yetkisiz işlem yapmak isteyen kullanıcılar açısından caydırıcı önlem alınmış olur.
  • Güvenlik yönetmeliklerine uyum sağlanır.
  • Veritabanı performansı ile ilgili bilgiler toplanır.

Burada önemli noktalarda bir tanesi hangi kurallara göre izleme ve kayıt yapılacağımızın belirlenmesidir. Veritabanında kısa bir süre içerisinde milyonlarca işlem olabilir. Önemli olan kayıt altına alınmaya değer işlemlerin belirlenmesidir. Kayıt altına alınması gereken işlemlerin belirlenmesi  bizim denetleme politikamıza (Auditing Policy) bağlıdır.

Diğer önemli bir nokta ise, veritabanındaki işlemlerin nasıl kayıt altına alınacağıdır. Bu kayıtlara denetim izi denmektedir.

Bunun yanında diğer bir önemli noktada denetim izlerinin değiştirilmeden saklanmasının sağlanmasıdır.

Oracle Veritabanında Mutlaka Tutulan Denetim İzleri

Oralce veritabanında denetim tamamen kapansa bile zorunlu kayıt altına alınan 3 tane işlem vardır.Bunlar;

  • Veritabanı açılışı
  • Veritabanı kapatılışı
  • SYSDBA ve SYSOPER rolüne sahip kullanıcıların veritabanına bağlanması

Veritabanında denetim izleri iki ayrı parametre ile yönetilmektedir. Bunlar audit_trail ve audit_sys_operations parametreleridir. Bu paramrelerden audit_trail parametresine NONE, audit_sys_operations parametresine boşluk atarsak veritabanında denetlemeyi durdurmuş oluruz.

Bu durumda olan bir veritabanında, yanlızca veritabanı kapama, açma ve veritabanı yöneticisi login işlemleri, denetim izi olarak audit_file_dest dizininde bulunan *.aud dosyalarına yazılır.
(devamı..)

1,068 total views, no views today


Tablo’nun İlişkide Olduğu Tablo ve Kolonları Öğrenme (Foreign Key Constraint)

SELECT c_list.CONSTRAINT_NAME AS NAME,
SUBSTR (c_src.COLUMN_NAME, 1, 20) AS SRC_COLUMN,
c_dest.TABLE_NAME AS DEST_TABLE,
SUBSTR (c_dest.COLUMN_NAME, 1, 20) AS DEST_COLUMN
FROM ALL_CONSTRAINTS c_list,
ALL_CONS_COLUMNS c_src,
ALL_CONS_COLUMNS c_dest
WHERE c_list.CONSTRAINT_NAME = c_src.CONSTRAINT_NAME
AND c_list.OWNER = c_src.OWNER
AND c_list.R_CONSTRAINT_NAME = c_dest.CONSTRAINT_NAME
AND c_list.OWNER = c_dest.OWNER
AND c_list.CONSTRAINT_TYPE = 'R'
AND c_src.OWNER = '<your-schema-here>'
AND c_src.TABLE_NAME = '<your-table-here>'
GROUP BY c_list.CONSTRAINT_NAME,
c_src.TABLE_NAME,
c_src.COLUMN_NAME,
c_dest.TABLE_NAME,
c_dest.COLUMN_NAME;

Yararlı olması Dilegiyle…
Yazar : Mustafa Bektaş Tepe

988 total views, 4 views today

Yorum yap devamı...

PL SQL Mail Gönderme

CREATE OR REPLACE PROCEDURE MAIL_GONDER (p_to        IN VARCHAR2,
                                       p_subject   IN VARCHAR2,
                                       p_message   IN VARCHAR2)
AS
   l_mail_conn   UTL_SMTP.connection;
   p_from        VARCHAR2 (30) := 'Gonderici Bilgisi';
   p_smtp_host   VARCHAR2 (30) := 'mail server bilgisi';
   p_smtp_port   NUMBER := 25;
BEGIN
   l_mail_conn := UTL_SMTP.open_connection (p_smtp_host, p_smtp_port);
   UTL_SMTP.helo (l_mail_conn, p_smtp_host);
   UTL_SMTP.mail (l_mail_conn, p_from);
   UTL_SMTP.rcpt (l_mail_conn, p_to);

   UTL_SMTP.open_data (l_mail_conn);

   UTL_SMTP.write_data (l_mail_conn,'Date: ' || TO_CHAR (SYSDATE, 'DD-MON-YYYY HH24:MI:SS') || UTL_TCP.crlf);
   UTL_SMTP.write_data (l_mail_conn, 'To: ' || p_to || UTL_TCP.crlf);
   UTL_SMTP.write_data (l_mail_conn, 'From: ' || 'Database Report Mail' || UTL_TCP.crlf);
   UTL_SMTP.write_data (l_mail_conn,'Subject: ' || p_subject || UTL_TCP.crlf);
   UTL_SMTP.write_data (l_mail_conn,'Reply-To: ' || p_from || UTL_TCP.crlf || UTL_TCP.crlf);

   UTL_SMTP.write_data (l_mail_conn,p_message || UTL_TCP.crlf || UTL_TCP.crlf);
   
   UTL_SMTP.close_data (l_mail_conn);

   UTL_SMTP.quit (l_mail_conn);
END;
/
begin
  dbms_network_acl_admin.create_acl (
    acl         => 'utl_mail.xml',
    description => 'Allow mail to be send',
    principal   => 'Mail Gonderecek Username',
    is_grant    => TRUE,
    privilege   => 'connect'
    );
    commit;
end;


BEGIN
  DBMS_NETWORK_ACL_ADMIN.assign_acl (
  acl => 'utl_mail.xml',
  host => 'mail server', 
  lower_port => '25',
  upper_port => '25');
  COMMIT;
END;
/
Begin
MAIL_GONDER('Gonderilen mail adresi','Konu','Deneme mesajı');
End;
/

exec MAIL_GONDER('Gonderilen mail adresi','Konu','Deneme mesajı');

1,835 total views, 10 views today


Linux Program Kurmak – Paket Yönetim Sistemleri(RPM) – YUM – Yerel Depo (Local Repository) Oluşturmak

Linux Program Kurmak

Windows’tan, Linux’a geçen kullanıcıların büyük çoğunluğu program yüklemekte sorun yaşarlar. Windows kullanırken, program yüklemek son derece basit bir iştir. Yükleyeceğiniz kurulum (Setup) dosyasına çift tıkladığınızda, bir ekran çıkar ve sadece İleri tuşuna basarak bir programı yükleyebilirsiniz.

Linux dünyasında işler ne yazık ki biraz daha karmaşıktır. Program kurmaya kalktığınızda, deb, apt, rpm, make, config, package vb. onlarca terim karşınıza çıkar. Karşılaşacağınız sorunlar bunlarla da bitmez; bağımlılık (dependency) ve eksik kütüphane dosyaları başınızı ağrıtır. Dağıtımınıza uygun kurulum paketlerinin olmayışı can sıkıcı bir konudur.

Neden bu kadar zor?

Bunu açıklamak için konunun başına dönmek gerekiyor. İnsanlar, Linux’u Windows XP veya Windows 2000 gibi bir işletim sistemi olarak düşünmekteler. Aslında Linux bir işletim sistemi değil; işletim sistemi çekirdeğidir. Firmalar veya şahıslar, bu çekirdeği alır ve bunu kullanarak bir dağıtım hazırlar. Yani SuSE, Ubuntu, Pardus veya Redhat yüklediğinizde, yüklediğiniz şey aslında Linux çekirdeği üzerine kurulmuş bir işletim sistemidir.

Bütün dağıtımlar, elbette ki, birbirlerine az çok benzerler ama bu onların farklı olduğu gerçeğini değiştirmez. Dünya genelinde, 300 üzerinde Linux dağıtımı ­bir başka değişle 300 üzerinde Linux tabanlı işletim sistemi­ bulunuyor. İşte sorunda buradan kaynaklanmakta. Yeni geliştirilmiş bir programın, her dağıtımda kolayca kurulup, çalışabilmesi oldukça zor bir konu. Var olan çeşitliliği düşününce, zaman zaman uyumsuzlukların olması ve sorunların çıkması gayet olağan bir durum. Windows XP için hazırlanmış bir kurulum dosyasını, Windows ME’de çalıştırmaya kalkarsanız, uyumsuzluk sorunları yine olabilir. Program yüklemenin sıkıntısı, çeşitliliğin bir sonucudur; hatayı Linux’ta aramamak lâzım

Program Derlemek…

Açık yazılım dünyasında geliştirilmiş çoğu programın, başka ortamlara taşınabilirliği yüksektir. Yazılımın kodu ortadadır ve sizin yapmanız gereken bu kodu derlemektir. Bu sayede, dağıtım bağımsız bir yapıda programı kurup, kullanma fırsatınız olur. Üstelik bunun için programlama bilmeniz gerekmez.

Her programın uyacağı belirli bir standart yok. Ancak çoğunluğun sahip olduğu, genel kurallar bulunuyor. Hemen hemen hepsinde, README ve INSTALL adında okunabilir metin (text) dosyalarını bulabilirsiniz. Bu iki dosya, programın ne olduğunu, yüklemek için nelere ihtiyacınız olduğunu içerir. Bir programı derlemek için yapacağınız ilk iş shell’de, programı açtığınız (extract) yere gelip, “./configure” yazmaktır. ./configure yazdığınızda karşınıza çıkacak ekran, gerekli programlardan hangilerinin sizde olup olmadığını yes/no ifadeleriyle gösterir.

Şayet her şey yolunda gider ve ./configure işlemi başarılı olursa, ikinci yapacağımız işlem konsolda “make” yazmaktır. Bunu yaptığınız takdirde, program yüklenmeye hazır olur. Son aşamada programı yüklemek için “make install” yazarız. Programımız yüklenir ve biz de kullanabiliriz.

tar zxvf paket-vxx.tgz
./configure
./make
./make install

NOT : Eğer programı kaldırmak isterseniz, aynı klasörde “make uninstall” yazabilirsiniz.

Programları derleyerek kurmak oldukça zahmetli bir uğraş. Açıkçası Linux’a yeni başlayanlara, bu yöntemi kesinlikle tavsiye etmem. Dosya bağımlılıkları ve derleyici sorunlarıyla boğuşmak, yorucu bir mücadele gerektiriyor. Sorunlarla boğuşmak yerine, daha önce derlenmiş ve çalıştırılmaya hazır paketleri (packages) kullanmak çok daha kolaydır.

Linux Paketler

Windows’ta program kurmak için, çoğu zaman bir şeylerin Setup.exe dosyasına tıklarsınız. Setup.exe önceden derlenmiş ve bu nedenle sizi uğraştırmayan bir yapıdır. Size sadece kurulumu yönetmek kalır.

Benzer bir imkan, Linux dağıtımlarında da bulunur. Daha önce birileri kaynak kodlardan, yazılımı derlemiş ve kullanıma hazır hâle getirmiştir. Siz programın paket dosyasını indirir ve aynı Windows’taki gibi üzerine tıklarsınız. Karşınıza bir ekran çıkar ve onay vermeniz durumunda, program kurulumu başlar. İşlem son derece basittir ve bir iki tıklamayla tamamlanır.

Şimdi yukarıda anlatınlanları kısaca özetleyecek olursak.

Linux de program kurulumu 2 şekilde gerçekleştirilebilir;

  1. Kaynak kodunu derleyerek kurmak.
  2. Önceden derlenerek oluşturulmuş pakedi bir paket yöneticisi ile kurmak.

İlk yöntem bazı avantajlarına rağmen fazla tercih edilmemektedir. Bir pakedi kaynak kodundan derlerken, derleyici parametrelerini değiştirip eldeki işlemciye özel, daha hızlı çalışabilir, ikili (binary) programlar oluşturulabilir veya özel isteklere göre  yapılandırılıp derlenebilir. Ancak derleyerek kod kurmanın dezavantajlarıda vardır;

  • Kod derlemek, yeni başlayanlar için zor bir işlem olabilir.
  • Kurulum öncesi düzenleme sıkıntıları (paket.conf, conf.h vs)
  • Kurulum sonrası dosyalar ve dokümanların dağılımı (/usr, /usr/local, /opt, /bin)
  • Kaldırma problemleri
  • Her paket için farklı ayarlamalar ve kurulum yöntemleri

Linux Paket Yönetim Sistemi

İkinci yöntem olan Paket ise programın (yazılımsal araç veya uygulamaların) derlenmiş kodu olarak tanımlanabilir.
(devamı..)

136 total views, 6 views today


  • Sertifikasyon



  • Etiketler

  • Topluluklar

                     
                     
  • Live Traffic Feed

    Feedjit Widget
  • Copyright © 1996-2010 Mustafa Bektaş Tepe. All rights reserved.
    Türkçeleştirme Blogizma | AltyapıWordPress
    Takip Et

    Her yeni yazı için posta kutunuza gönderim alın.

    Diğer takipçilere katılın: