SQL Server Audit – SQL Server’da gerçekleşen işlemleri kontrol etmek..

By | March 12, 2013

Veritabanı yönetiminde önemli konulardan biri de veri ile neler yapıldığını denetleme gereksinimleridir. SQL Server 2005’te SQL Trace ile bu işlemleri kısmen gerçekleştirebiliyorduk. ama SQL Server 2008 bu konuda zengin imkanlar sunuyor.

Yukarıda kullanmış olduğum denetleme gereksinimlerinden kasıt ;

* Veritabanımdaki bir tabloyatablolara kim erişmiş?
* Kim yeni kayıt eklemiş veya silmiş veya değişiklik yapmış?
* Kim yeni bir Login oluşturmuş?

gibi sorulara ayrıntılı cevap bulmamızdır.Denetim işlemleri hem sunucu düzeyinde hem de veritabanı düzeyinde gerçekleştirilebilir.

Bir denetim işlemini başlatmadan önce bu denetim kayıtlarının nerede ,nasıl ve hangi ayarlara göre saklanması gerektiğinin ayarlanması gerekmektedir. Bu işlem için ilk önce bir “Audit” oluşturulması gerekmektedir.Eğer bu işlem bir sucunu düzeyinde yapılacak ise Server Audit Specification, veritabanı düzeyinde yapılacak ise Database Audit Specification oluşturulması gerekmektedir.

Bahsedilen Audit yapılarını T-SQL’den yada SQL Server Management Studio ile oluşturabiliriz. Makale içerisinde hem T-SQL ile hemde SQL Server Management Studio’dan nasıl yapılabildiğini göstermeye çalışacağım.SQL Server Audit özelliğini kullanabilmemiz için SQL Serverın Enterprise sürümünü kullanıyor olmamız gerekmetedir.

Şimdi Microsoft’un örnek veritabanı olan Adventureworks üzerinde Select işlemlerini loglayalım.

Sql Server Management Studio’ya bağlantı kuruyoruz.Security klasörün Audit’e Sağ tıklayıp New Audit Diyoruz.
1
Karşımıza gelen Create Audit ekranından öncelikli olarak Audit Name bölümünden Audit’e bir isim veriyoruz.Audit Destination kısımında File seçerek bir.sqlaudit uzantılı bir dosyada tutabiliriz. Alternatif seçenek olarak Event Viewdaki Security Log veya Application Log altında da tutabiliriz. File Path bölümünden ise oluşacak dosyanın lokasyon bilgisini belirtiyoruz.
3

Yukarıdaki resimdeki gibi bir SelectAudit oluşturuyoruz. FilePath bölümünden ben D:Audit klasörünü gösterdim.Siz kendinize göre farklı bir yer gösterebilirsiz. Böylece Server seviyesinde bir adet Audit oluşturdukç.Şimdi ise denetleme yapacağımız veritabanın security klasörünün altında Database Audit Specification oluşturuyoruz.

4

Aşağıdaki ekranda öncelikli olarak Name kısımından bir isim veriyoruz. Daha sonra Audit bölümünden daha önce tanımlamış olduğumuz auditi seçiyoruz.Önemli kısım ise Actions bölümünde yer alan değerlerin doldurulması..

5

* Audit Action Type: yapılacak izleme için seçilecek olan işlemi belirler. Örneğin Select,delete,backup gibi işlemler loglanabilir.

* Object Class: Bu kısımda yapılacak işlemin kapsamını seçmeliyiz. Burada üç seçenek mevcut olup bunlar Database,Object ve Schemadır. Biz örneğimizde SQL server objesi olan HumanResources.Employee tablosu üzerinde izleme yapacağımız için Object seçeneğini seçiyoruz.

* Object Name: Bu kısımda izlemeyi yapacağımız obje veya onjeleri seçeiyoruz.

* Principal : Bu kısımda ise seçmiş olacağınız kullanıcılar ve rolleri denetleyeceğinizi belirtiyorsunuz.

İşlem tamamlandı.Şimdi uygulamamızı kontrol edebiliriz yanlız Audit, Server Audit Specification ve Database Audit Specification nesneleri için geçerli olan şu kuralı da unutmamalısınız, bu nesnelerden birinde bir değişiklik yapmadan önce, o nesneyi kullanılamaz (disable) duruma getirmeniz gerekir. Aksi takdirde şu hata ile karşılaşırsınız: “Changes to an audit specification must be done while the audit specification is disabled. (Microsoft SQL Server, Error: 33229)”

veritabanımızı secerek aşağıdaki SQL kodumuzu çalıştıyoruz.

select top 10 * from HumanResources.Employee

SQL Kodumuzu çalıştırdıktan sonra Object Explorer’dan Security klasörünün altında oluşturduğumuz Audite sağ tıklayıp View Audit Logs seçiyoruz.

6

Son olarak karşımıza gelen ekran ise ;

7

Leave a Reply

Your email address will not be published. Required fields are marked *