2011-11-26

SQL Server 2012 Audit Yenilikleri

Bu yazımda SQL Server 2012 ile birlikte Audit tarafındaki yeniliklere değineceğim.

SQL Server 2008 ile birlikte gelen güzel özelliklerden birisi de Audit idi. Audit, veritabanı tarafında güvenlik ile ilgili yönetimsel işleri kolaylaştırdığı gibi özellikle denetimden geçen firmaların denetimlerinin daha rahat geçmesine vesile oldu.

SQL Server 2012 ile birlikte audit tarafında gelen yenilikler:

• Server Audit tüm SQL Server 2012 sürümlerinde olacak şekilde genişletildi. Database Audit sadece enterprise, developer ve evaluation sürümleri ile sınırlı olacak.

• Audit, log dosyasına yazma hatalarına karşı güçlendirildi. Örneğin ağda paylaşımdaki bir dizinde tutulan audit loglar network gidip geldiğinde Audit kaldığı yerden devam edebilecek. SQL Server 2008 de network gittiğinde Audit i tekrar başlatmak gerekiyordu.

• Bir Audit için maximum log dosya sayısını belirtebileceğimiz MAX_FILES parametresi geliyor.

• SQL Server Audit specification’ları user-defined audit group destekleyecek. Böylece kendi audit gruplarınımızı ekleyebileceğiz.

• sys.server_file_audits, sys.server_audits, ve sys.fn_get_audit_file DMV lerine yeni kolonlar eklendi.

• Yeni audit gruplar contained database kullanıcılarının izlenmesini destekliyor.

• SSMS daki Audit diyalog ekranlarına yeni audit optiyonları eklendi.

• SQL Server 2008’deki Audit’te filtre özelliği yoktu ve bu ihtiyaç duyulan büyük bir eksiklikti. Audit için filtre özelliği SQL Server 2012 ile birlikte geliyor.


Tüm bu yeniliklerden audit filtre özelliğine değinmek istiyorum. Bunun için veritabanı sunucumuzda [test] veritabanımızdaki personel tablosuna erişen SA dışındaki tüm kullanıcıların SELECT hareketlerini dinleyip izlemek isteyelim. Tüm geliştirmelerimi 17 Kasımda 2011’de yayınlanan SQL Server 2012 RC0 sürümü üzerinde yapacağım.

Önce audit oluşturmamız gerekir. Audit’i SSMS(SQL Server Management Studio) üzerinden grafik arayüz ile oluşturabildiğiniz gibi T-SQL kod ile de oluşturabilirsiniz.


1. Grafik Arayüz ile Filtreli Audit Oluşturma:

Security altındaki Audits üzerinde iken mouse’ın sağ tuşunu tıklıyoruz:





Create Audit form ekranından ilgili alanları aşağıdaki görüntüde olduğu gibi dolduruyoruz.



Aynı ekranın Filter tabından filtremizi gireceğiz. Bunun için önce SA kullanıcımızın server_principal_id değerini bulalalım:


select principal_id
from sys.server_principals
where name='sa'




Filter tabını server_principal_id 1 eşit olamaycak şekilde aşağıdaki gibi dolduruyoruz:




2. T-SQL kod ile filtreli Audit oluşturma:


USE [master]
GO
CREATE SERVER AUDIT [AuditTableSelect]
TO FILE
( FILEPATH = N'C:\Audit\'
,MAXSIZE = 0 MB
,MAX_ROLLOVER_FILES = 2147483647
,RESERVE_DISK_SPACE = OFF)
WITH( QUEUE_DELAY = 1000
,ON_FAILURE = CONTINUE)
WHERE (server_principal_id!=1)
GO

Yukarıdaki T-SQL kodu dilerseniz grafik arayüzden de oluşturabilirsiniz.



Oluşturduğumuz Audit’i aşağıdaki gibi GUI arayüz üzerinden Enable edebildiğimiz T-SQL ile de Enable edebiliriz.



USE [master]
GO
ALTER SERVER AUDIT [AuditTableSelect] WITH (STATE = ON)
GO


Şimdi sıra Audit edeceğimiz veritabanında Database Audit Specification oluşturmaya geldi. Database Audit Specification’ı da hem grafik arayüzden hem de T-SQL kod ile oluşturabiliriz.



Personel tablosundaki SELECT leri Audit edeceğiz.


Aynı Database Audit Specification’ı aşağıdaki T-SQL ile de oluşturabilirsiniz:

USE [test]
GO
CREATE DATABASE AUDIT SPECIFICATION [AuditSpecTableSelect]
FOR SERVER AUDIT [AuditTableSelect]
ADD (SELECT ON OBJECT::[dbo].[personel] BY [public])
WITH (STATE = ON)
GO


Audit’imizi oluşturdukdan sonra aşağıdaki T-SQL ile Personel tablosuna select atalım:

use test

go
select top 10 *
from dbo.personel






Personel tablosuna çekilen select işlemine View Audit Log’dan bakalım:

Audit Action ile yapılan işlemin bir SELECT işlemi olduğunu görüyoruz.


Audit logda bir çok bilgiyi bulabilirsiniz. Veritabanı, object, schema, dosya adını ve daha bir çok bilgiye logdan ulaşabilirsiniz. Çalıştırdığımız sorgunun kodunu Statement kolonunda bulabilirsiniz:



Bu yazımda SQL Server 2012 ile gelecek olan Audit’teki yeniliklere özellikle Audit’in filtre özelliğine değindim. Her ne kadar bu özellik çok güzel ve yerinde olsa da yeterli olduğunu düşünmüyorum. SQL Server 2012 RC0 sürümünde Audit ile ilgili çalışmalarımda filtrenin belirli alanları ve belirli operatorleri kapsadığını gördüm. Bu alanlar server_principal_id,object_name vb. gibi; operatorler ise =, <>, OR vb. gibi(WHERE koşulunda IN, LIKE gibi operatorlar kullanamıyoruz. Bunun yanında WHERE koşulunda alt sorgu yada function kullanamıyoruz.).

Hiç yorum yok:

.::YASAL UYARI::.

©2004-2016 Mehmet GÜZEL, http://www.mehmetguzel.net/ & http://www.mehmetguzel.com/

Site içeriği kaynak gösterilmek koşuluyla yayınlanabilir. Yazılan yazı ve yorumlar sadece yazı ve yorum sahiplerini bağlar.