SQL Server Audit Oluşturmak

2 Eyl by NURULLAH ÇAKIR

SQL Server Audit Oluşturmak

SQL Server’da yetki verdiğimiz insanlar ve dba’ler tarafından yapılan işlemleri kayıt altına almak için Audit oluşturmamız gerekir. Bu makalede detaylı bir şekilde audit oluşturma işlemini ve inceliklerini inceleyeceğiz.

İki tip audit tanımlayabiliriz.

1) Database Level Audit:

İlk olarak SSMS üzerinden Security kısmında Audits’e sağ tıklayarak new audit diyoruz.

 

AuditName kısmına istediğimiz bir isim veriyoruz. Ben database bazlı oluşturduğum için AuditDBName şeklinde oluşturduğum veritabanının adını vermeyi tercih ediyorum. Queue delay kısmına hiç dokunmadan geçiyoruz.

On Audit Log Failure kısmıda Continue kalacak. Burda da herhangi bir değişiklik yapmıyoruz.

 

Eğer shut down server seçerseniz audit üzerinde herhangi bir işlem olmadığında sql server servisini durduracaktır. Buradaki amaç audit olmadan veritabanında herhangi bir işlem yapılamaması. Güvenliğin çok üst düzey olduğu uygulamalarda bu seçenek seçilebilir.

Audit Destination , File olarak kalacak. File Path’e de Audit dosyasını yazacağımız path’i belirtiyoruz.

Burada kritik bir bilgi vermek istiyorum.  Audit’i instance’ınızı olduğu lokal sunucuya kaydedebilirsiniz fakat DBA’in kendi güvenliği ve bütün DBA’leri kontrol altından tutabilmek açısından audit’i uzak bir sunucudaki paylaşıma yazmanız gerekir.

Uzak sunucudaki paylaşımda sql server servis hesabının sadece insert ve modify yetkisi olmalı. Herhangi bir şekilde drop ve delete yetkisi olmamalı. Bu şekilde dba’ler tarafından audit file üzerinde herhangi bir bozma işleminin yapılmayacağını garanti altına almış olacaksınız.

Audit File Maximum Limit kısmında Maximum Rollover Files SQL Server’ın kaç adet audit file’a kadar yazabileceğini soruyor. Default unlimited geliyor. Bizde bu şekilde bırakıp geçiyoruz. 

 

Maximum File Size’ı ben genelde spesifik olarak set ediyorum. Eğer kaydedilen audit 1 ay içinde 100 MB’ı geçmeyecekse burada değeri 100 MB olarak set ediyorum. Eğer bir haftada 100 MB audit oluşacaksa burada 1000 MB şeklinde set ediyorum. Sizde kendinize göre bir değer set edebilirsiniz. Reserve disk space’i seçmiyoruz çünkü gereksiz bir şekilde audit’i yazmadan öncesinde disk alanını allocate ediyor. Burada tabi uygulama ihtiyaçlarına göre bu konuda da kararı siz vermelisiniz. Filter seçeneğinden de audit’inizi filtreleyebilirsiniz.Bu yaptığımız işlemleri aşağıda görebilirsiniz.

 

 

Sırada nelerin audit’ini tutacağımız kısım var.

 

Audit yapacağımız veritabanının Security tab’ından Database Audit Specification’a sağ tıklayıp New Database Audit Specification diyoruz. Name kısmından bir isim veriyoruz. Audit kısmından oluşturduğumuz audit’i seçiyoruz.

 

Daha sonra aşağıdaki resimde görüldüğü gibi Audit Action Type kısmından audit etmek istediğimiz deyim’i, object Class’tan DATABASE’i, Object Name ‘den veritabanı ismini, Principal Name’den de kullanıcıyı seçiyoruz.

 

Burada kritik bir bilgi olarak; Instance üzerinde sysadmin olanları izlemek için Principal Name kısmında dbo’yu seçmelisiniz.

 

Aşağıdaki örnekte de görüldüğü üzere Instance üzerinde sysadmin olanların AdventureWorks2012 veritabanında yaptığı select, update ve delete’ler, denemeUser’ın yaptığı update ve delete’ler audit olarak tutuluyor.

2)Server Level Audit:

 

Database Level Audit kısmında yaptığımız ilk işlemleri tekrarlayarak yeni bir audit file konfigurasyonu yapıyoruz.

 

Daha sonra Security Tab’ından Server Audit Spesification’a sağ tıklayarak new server audit specification diyoruz.

 

Name kısmından bir isim veriyoruz ve oluşturduğumuz audit’i seçiyoruz. Ve action type’ından istediğimiz action’ı seçerek ok’e tıklıyoruz. Burada server seviyesinde bir çok şeyi takip edebilirsiniz. Örneğin failed loginler, schema üzerinde yapılan değişiklikler, auditler üzerinde yapılan değişiklikler. Ben neredeyse server seviyesindeki tüm action’ları kullanıyorum. Bu şekilde veritabanı uzmanlarının server seviyesinde yaptığı tüm işleri kayıt altına almış oluyoruz.

 

Örneğin kötü niyetli bir dba select çekilmemesi gereken bir veritabanından select çekmek için o veritabanındaki select audit’ini durdurduğunda bunu loglayan başka bir audit gibi. Ya da select çekilmemesi gereken bir veritabanında kimsenin haberinin olmadığı select hakkına sahip bir login oluşturması gibi. Bu şekilde herkesin attığı her adımı ve aldığı her nefesi takip edebilirsiniz. Buna sizde dahilsiniz. Tabi bu şekilde bir sistem kurarak bir dba en başta kendi güvenliğini sağlar. Aşağıda server level audit action’larının detaylarını anlatan linki bulabilirsiniz. Eğer talep olursa her birini detaylı olarak daha sonra açıklayabilirim.

 

Audit’leri ve audit specification’ları enable etmeyi unutmayın.

 

https://msdn.microsoft.com/en-us/library/cc280663.aspx

Loading

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir