Bu özellik, kýsmen de olsa SQL Server 2005' te SQL Trace gerçekleþtirilebiliyordu.
Kýsmen diyorum, çünkü "hangi veritabanýna kimler eriþmiþ?" gibi denetimleri SQL Trace
ile yapamýyorduk. Bu tür denetimleri gerçekleþtirmek için üçüncü parti programlar
kullanýlýyor
veya alternatif yöntemlerle gerçekleþtirilmeye çalýþýlýyordu. Fakat
artýk, bu tür denetimler de SQL Server 2008 ile gerek veritabaný, gerekse
sunucu düzeylerinde yapabiliyor.
Denetim derken...?
Denetimden kasýt, "Veritabanýmdaki bir tabloya\tablolara 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ý olarak cevap bulmanýzdýr. Sunucu veya veritabaný
düzeyinde, çeþitli denetimleri SQL Server 2008' in bu özelliði ile takip edebilirsiniz. Ýleriki bölümlerde ayrýntýlý örneklerini
de göstereceðim.
Nasýl yapýlýr?
Önceki paragraflarda da belirttiðim gibi, denetim iþlemi 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ðini ayarlamanýz gerekiyor. Bunun için, ilk
önce sunucu düzeyinde bir Audit oluþturmalýsýnýz. Ardýndan, eðer denetimi
sunucu düzeyinde yapmak istiyorsanýz bir Server Audit Specification, eðer
denetimi veritabaný düzeyinde oluþturmak istiyorsanýz o zaman da bir Database Audit
Specification oluþturmalýsýnýz.
Bu elemanlarý ister T-SQL kullanarak, isterseniz de SQL Server 2008
ile birlikte gelen SQL Server Management Studio ile oluþturabilirsiniz. Örneklerimizde
ben iki yöntemi de kullanacaðým. Böylece iki yöntem hakkýnda da fikriniz olacak.
Þimdi, aþaðýda da listelediðim bu üç denetim elemanýný nasýl oluþturacaðýnýzý, bunlarýn
ne olduðunu ve bu denetim sonucu oluþan raporu nasýl okuyacaðýnýzý adým adým kendi
baþlýklarý altýnda inceleyelim.
- Audit : Denetim verilerinin saklanacaðý konum ayarlarý.
- Server Audit Specification: Sunucu düzeyinde belirlenecek denetim
kurallarý.
- Database Audit Specification: Veritabaný düzeyinde belirlenecek denetim
kurallarý.
- Log Viewer - Audit: Audit nesnesinde tanýmladýðýmýz raporun okunmasý.
Yapacaðýmýz örneklerde bir senaryo üzerinden gidersek, konunun ve bu denetim mekanizmasýna
aþina olmayanlarýn konuyu anlamasýna yardýmcý olacaðýný düþünüyorum. Senaryomuz
þöyle: Þirketimizde, biliþim iþleriyle ilgili taþeron bir firma var. Bu firmadan
çalýþanlar zaman zaman þirketimize geliyorlar ve SQL Server sunucumuzda bazý
çalýþmalar yapýyorlar. Ayrýca, bu arkadaþlarýn SQL Server Instance' ýmýza
da eriþim haklarý var. SQL Server Instance' ýmýzdaki veriler bizim için çok
kritik ve önemli. Taþeron firmadan gelen arkadaþlarýn yetkileri yüksek, bu nedenle
görmelerini istemediðimiz verilere eriþme þanslarý var. Yaptýðýmýz yazýlý anlaþmalar
neticesinde, böyle bir þeyin olmayacaðýný garanti ediyorlar. Ama herkesin malûmu,
sonuçta ortada bir insan faktörü var ve biz veritabaný yöneticileri, güvenliði sýký
tutmalýyýz. Aksi takdirde hesap sorulacaklarýn en üst sýralarýnda bizim de isimlerimizin
olduðunu çok iyi biliyoruz.
Özetle, þirketimize gelen taþeron firma çalýþanlarýnýn, "Muhasebe" isimli veritabanýndaki
tablolarýmýza eriþim eriþmediklerini sýký bir þekilde kontrol edeceðiz.
Audit
Audit' in nasýl oluþturulduðuna geçmeden önce, Audit' in üç farklý
yere kaydedilebileceðini belirtmek istiyorum. Bunlar:
- Windows Event Log: Application Log' a
- Windows Event Log: Security Log' a
- Dosya sisteminde bir dosyaya.
Not: Security Log' a kayýt iþlemi Windows XP' de gerçekleþtirilemiyor.
Ayrýca, Security Log' a kayýt yaptýrmak için ekstra ayarlar yapmanýz gerekiyor.
Bu ekstra ayarlar konusunda daha fazla bilgi için
buraya týklayýn.
Biz örneðimizde, denetim verilerimizi bir dosyaya kaydedeceðiz.
T-SQL Yöntemiyle Audit Oluþturmak:
CREATE SERVER AUDIT [AuditTaseron] TO FILE
(FILEPATH = N'C:\Test\' ,
MAXSIZE = 500 MB ,
MAX_ROLLOVER_FILES = 5,
RESERVE_DISK_SPACE = OFF )
WITH
(QUEUE_DELAY = 1000 ,
ON_FAILURE = SHUTDOWN )
GO
Bir Audit nesnesi oluþturulduðunda, varsayýlan olarak kullanýlamaz (disabled)
þekilde oluþturulur. (bkz. Resim - 3)
Dikkatinizi çektiyse, FILEPATH ile bir dosya adý deðil, klasör yolu belirttim.
Çünkü dosya adýný, SQL Server kendi atayacak. MAXSIZE
ise, denetim dosyasýnýn ulaþabileceði en büyük dosya boyutu olacak. Bu ayarý yapmakta
fayda var, çünkü zaten sunucunuzda bir çok kayýt dosyasý sürekli doluyor ve büyüyor.
Bu tür büyümeleri kontrol altýnda tutarsanýz, bir gün "Diskinizde boþ yer kalmadý!"
gibi bir sürpriz ile karþýlaþma olasýlýðýnýz azalýr. MAX_ROLLOVER_FILES,
kaç tane dosyanýn kaydedileceði bilgisidir. 0 deðeri sýnýrsýz anlamýna gelir.
RESERVE_DISK_SPACE, MAXSIZE' da belirttiðiniz kadar alaný baþtan
ayýrmak için kullanýlýr; eðer deðeri ON ise, o zaman bu alan baþtan ayrýlýr,
eðer OFF ise, alan ihtiyaca göre ayrýlýr.
Audit iþlemi, Service Broker temel alýnarak yapýlan bir iþlemdir.
Ýþlemler istenirse eþzamanlý (synchronous), istenirse de
eþzamansýz (asynchronous) olarak gerçekleþtirilebilir. Ýþte bu ayar da QUEUE_DELAY
ile belirtilir. Eðer bu ayarýn deðeri 0 ise, denetim sýrasýnda toplanan veriler,
kayýt yerine (Event Log' lara veya dosyaya) eþzamanlý olarak kaydedilir.
Eðer bu deðer 1000 ise (ki bu deðerler milisaniye bazýndadýr ve asgari deðer 1000'
dir) o zaman biriktirilen denetim verileri, kayýt deposuna her bir saniyede bir
yazýlýr. Burada dikkate alýnmasý gereken þey ise, eþzamanlý veya çok kýsa aralýklý
yapýlacak kayýt iþlemlerinin belli bir oranda yük getirmesi olacaktýr. Sisteminizin
durumuna göre bu kayýt aralýðýný hesaplamalýsýnýz. Ayrýca þunu da unutmamalýsýnýz
ki, eðer bu kayýt aralýðýný fazla uzun tutarsanýz, kayýt deposuna kaydedilmemiþ
denetim verilerini bir elektrik kesintisi veya bir donaným arýzasý yüzünden kaybetme
olasýlýðýnýz vardýr.
ON_FAILURE ise iki deðer alabilir, SHUTDOWN veya CONTINUE.
Eðer kayýt dosyasýnda yer kalmadýysa veya diskinizde yer kalmadýysa yani özetle
eðer denetim verileriniz kayýt deposuna kaydedilemiyorsa ve bu ayarýn deðeri de
SHUTDOWN ise, o zaman SQL Server Instance' ýnýz böyle bir durumda
kapanacaktýr.
SQL Server Management Studio (SSMS) Kullanarak Audit Oluþturmak:
Denetimler, güvenlikle ilgili ve sunucu düzeyinde çalýþan nesnelerdir. Bu nedenle
yeni bir Audit oluþturmak istediðinizde, SSMS' teki Object Explorer
penceresinden, Security->Audits bölümüne gidersiniz.
(bkz Resim 1)

Resim - 1
Resim-1 de de görüldüðü gibi, Audits düðümünün üzerinde fare ile sað
tuþa týkladýðýnýzda "New Audit..." öðesini göreceksiniz.
Bu öðeye týklayýn, "Create Audit" penceresi açýlacaktýr.

Resim - 2
Yine bu baþlýk altýnda, T-SQL kullanarak oluþturduðumuz Audit in aynýsý,
fakat bu sefer bu Audit' i SSMS kullanarak oluþturuyoruz. Resim - 2'
de gördüðünüz tüm ayarlarý zaten yukarýda açýklamýþtým, bu nedenle tekrar açýklamaya
gerek yok. Biraz gözatarsanýz zaten her þeyin ayný olduðunu göreceksiniz.
Daha önceden size yeni bir Audit nesnesi oluþturduðunuzda, bu nesnenin varsayýlan
olarak kullanýlamaz þekilde oluþturulduðunu söylemiþtim. Þimdi bunu tekrar belirtmemin
nedeni ise, SSMS' te bu kullanýlamazlýðýn görsel olarak
da belirtilmesidir. Bunun için Resim -3' e bakýn. Daha belirgin olmasý için
kýrmýzý bir halka içine aldým.

Resim - 3
Bu nesneyi kullanýlabilir hale getirmek için, üzerinde farenin sað tuþuna týklamanýz
ve "Enable Audit" öðesini seçmeniz gerekiyor. Bu noktada þunu da belirtmek
istiyorum ki, daha sonraki baþlýklarda oluþturacaðýmýz Server Audit Specification
ve Database Audit Specification nesneleri de varsayýlan olarak kullanýlamaz
þekilde oluþturulur ve bu nesneler kullanýlamaz durumdayken bu durum, Object Explorer'
da aynen Resim - 3' teki gibi aþaðý kýrmýzý bir ok ile görsel olarak belirtilir
ve bu nesneleri kullanýlabilir duruma getirmek için yine ayný þekilde bu nesnelerin
üzerinde fare ile sað týklayýp "Enable ..." öðesini seçmeniz gerekir.
Bu noktada, artýk Audit oluþturma konusunda bir sýkýntý kalmadýðýný varsayýyorum.
Hadi, þimdi de Server Audit Specification nasýl oluþturulur onu inceleyelim!
Server Audit Specification
Bir Server Audit Specification nesnesi oluþturmadan önce, bu nesneyi oluþtururken
kullanmak üzere bir Audit nesnesinin önceki baþlýkta da anlatýldýðý gibi
oluþturulmasý gerekiyor.
Bir Server Audit Specification nesnesi oluþturulduðunda, varsayýlan olarak
kullanýlamaz (disabled) þekilde oluþturulur.
T-SQL Yöntemiyle Server Audit Specification Nesnesi Oluþturma
Bu örneðimizdeki Server Audit Specification nesnesine , 4 tane Action Type
ekleyeceðim.
CREATE SERVER AUDIT SPECIFICATION [sasTaseron]
FOR SERVER AUDIT [AuditTaseron]
ADD (LOGIN_CHANGE_PASSWORD_GROUP),
ADD (SERVER_ROLE_MEMBER_CHANGE_GROUP),
ADD (SERVER_PRINCIPAL_CHANGE_GROUP),
ADD (DATABASE_CHANGE_GROUP)
GO
Bir Server Audit Specification nesnesini oluþturmak için öncelikle bir Audit
nesnesine ihtiyacýmýz olduðunu önceden de söylemiþtim. Ýþte bu örneðimizde de önceki
Audit altbaþlýðýnda oluþturmuþ olduðumuz "AuditTaseron"
nesnesini kullanýyoruz. Daha sonra da, aþaðýda listelediðim Action Type'
larý ekliyoruz:
- LOGIN_CHANGE_PASSWORD_GROUP: Bu olay, sp_password veya
ALTER LOGIN komutlarýyla bir Login' in þifresi deðiþtirildiðinde
tetiklenir.
- SERVER_ROLE_MEMBER_CHANGE_GROUP: Bu olay, bir Login, bir Server Fixed
Role' e eklenip veya çýkarýldýðýnda tetiklenir.
- SERVER_PRINCIPAL_CHANGE_GROUP: Bu olay, örneðin bir Login'
in silinmesi veya yeni bir Login' in eklenmesi veya bir Login
üzerinde bir takým deðiþiklikler (örneðin Login' in varsayýlan dilini
deðiþtirdiðinizde) yaptýðýnýzda tetiklenir.
- DATABASE_CHANGE_GROUP: Bu olay, bir veritabaný silindiðinde, yeni bir
veritabaný oluþturulduðunda veya varolan bir veritabanýnda deðiþiklik yapýldýðýnda
tetiklenir.
Biz örneðimizde sadece 4 tane Action Type kullandýk, fakat bu Action Type'
lardan baþka daha bir çok Action Type vardýr. Diðer Action Type' lar
hakkýnda daha fazla bilgi almak için Books Online' a bakabilirsiniz:
http://msdn.microsoft.com/en-us/library/cc280663.aspx
SQL Server Management Studio (SSMS) Kullanarak Server Audit Specification
Oluþturmak:
Server Audit Specification nesnesi de Audit nesnesi gibi güvenlikle
alâkalý bir nesne olduðu için, SSMS' teki Object Explorer'
ýn, Security düðümünün altýnda bulunur. (bkz Resim - 4)

Resim - 4
"New Server Audit Specification..." öðesine týkladýðýnýzda "Create Server
Audit Specification" penceresi açýlacaktýr. (bkz Resim - 5)

Resim - 5
Bu pencerede temel olarak yapacaðýnýz iþlem, bu Server Audit Specification
nesnesine bir isim vermek, önceden oluþturduðunuz Audit nesnesini, Audit
aþaðý açýlýr kutusundan belirlemek ve Audit Action Type listesindeki aþaðý
açýlýr kutulardan, ihtiyacýnýza göre Action Type' lar eklemektir.
Ayný örneði yukarýda T-SQL ile yaparken size bir çok Action Type olduðunu
söylemiþtim. Bu Action Type' larýn listesini de bu þekilde görmüþ oldunuz.
Bunlarýn açýklamalarý için yine yukarýda verdiðim Books Online adresinden
yararlanabilirsiniz. Books Online' nýn maalesef bir Türkçe versiyonunun olmadýðýný
da bilmeyenler ve merak edenler için belirteyim.
Audit ve Server Audit Specifications açýklamalý ve adým adým uygulamýþ olduðumuz
örneklerden sonra sýra þimdi de Database Audit Specifications
konusunda!
Database Audit Specifications
Yine belirtmem gerekiyor ki, bir Database Audit Specification nesnesi oluþturmadan
önce, bu nesneyi oluþtururken kullanmak üzere bir Audit nesnesinin
Audit baþlýðýnda da anlatýldýðý gibi oluþturulmasý gerekiyor.
Ve yine belirtmekte fayda var ki, bir Database Audit Specification nesnesi
oluþturulduðunda, varsayýlan olarak kullanýlamaz (disabled) þekilde
oluþturulur.
Bu örnekte, öncelikle hayali taþeron firma için bir Login,
"Test" isimli veritabanýmýzda, oluþturacaðýmýz "TestLogin" isimli Login
için "TestUser" isimli bir de User oluþturacaðýz. Daha
sonra, hayali "Alacaklar" isimli tablomuzda, bu "TestUser" kullanýcýsý tarafýndan
bir SELECT, UPDATE, INSERT veya
DELETE komutunun çalýþtýrýlmasýðýný
kontrol etmek için bir Database Audit Specification nesnesi oluþturacaðýz.
Diðer örneklerimizde olduðu gibi, bu örneði de hem T-SQL ile,
hem de SSMS kullanarak yapacaðýz.
T-SQL Yöntemiyle Database Audit Specification Nesnesi Oluþturma
Aþaðýdaki T-SQL kodlarýný çalýþtýrmadan önce, önceden oluþturmuþ olduðumuz
"AuditTaseron" isimli Audit nesnesini ve "sasTaseron" isimli Server Audit
Specification nesnesini kullanýlýr (Enable) duruma getirdiðinizden
emin olun. Nedenini daha sonra söyleyeceðim.
-- "TestLogin" isimli Login' in oluþturulmasý
USE [master]
GO
CREATE LOGIN TestLogin WITH PASSWORD = 'Pa$$w0rd'
GO
-- Test için kullanýlacak, "Test" isimli veritabanýnýn oluþturulmasý
USE [master]
GO
CREATE DATABASE [Test]
GO
-- Test için kullanýlacak "Alacaklar" isimli veritabanýnýn oluþturulmasý
USE [Test]
GO
CREATE TABLE [Alacaklar]
(id int)
GO
/* "Test" isimli veritabanýnda iþlem yapabilmesi için, taþeron firma çalýþaný tarafýndan
kullanýlacak "TestUser isimli kullanýcýnýn oluþturulmasý */
USE [Test]
GO
CREATE USER [TestUser] FOR LOGIN [TestLogin]
WITH DEFAULT_SCHEMA=[dbo]
GO
-- "TestUser" isimli kullanýcýnýn "db_owner" veritabaný rolüne eklenmesi
USE [test]
GO
EXEC sp_addrolemember N'db_owner', N'TestUser'
GO
/* "TestUser" isimli taþeron firma çalýþanýnýn "Alacaklar" tabloasuna karþý yapacaðý
eriþimleri takip etmek için kullanýlacak "dasAuditTaseron" isimli Database Audit
Specification nesnesinin oluþturulmasý */
USE [Test]
GO
CREATE DATABASE AUDIT SPECIFICATION [dasAuditTaseron]
FOR SERVER AUDIT [AuditTaseron]
ADD (SELECT ON OBJECT::[dbo].[Alacaklar] BY [TestUser]),
ADD (DELETE ON OBJECT::[dbo].[Alacaklar] BY [TestUser]),
ADD (INSERT ON OBJECT::[dbo].[Alacaklar] BY [TestUser]),
ADD (UPDATE ON OBJECT::[dbo].[Alacaklar] BY [TestUser])
GO
Hemen bir önceki paragrafta örneðimizi anlattýðým gibi, yukarýdaki T-SQL
diliyle de bu örneði SQL Server' a anlatmýþ oldum.
Server Audit Specification' da olduðu gibi, Database Audit Specification'
da da, bir çok Action Type bulunmaktadýr. Bu Action Type' larýn listesini
bir sonraki SSMS örneðimizdeki "Create
Database Audit Specification" isimli penceredeki Action Type aþaðý açýlýr
kutularýnda zaten göreceksiniz. Bu Action Type' larýn açýklamalarý
için yine Books Online' dan yararlanabilirsiniz:
http://msdn.microsoft.com/en-us/library/cc280663.aspx
SQL Server Management Studio (SSMS) Kullanarak Database Audit Specification
Oluþturmak:
Evet! Tahmin edeceðiniz üzere yine ayný þeyi söyleyeceðim! Database Audit Specification
nesnesi de elbette güvenlikle alâka bir nesne. Bu nedenle bu nesneler, SSMS'
teki Object Explorer' ýn Databases isimli düðümünün
altýndaki veritabanýnýzýn içinde bulunan Security düðümündeki Database Audit
Specifications içinde depolanýyor.
Kabul ediyorum, bu terimlere aþina olmayanlara biraz arapsaçý gibi görünmüþ
olabilir. Ama beni önceden takip edenler bilir, hem de buraya kadar sabredip okumuþsanýz
siz de görebilirsiniz ki, hiç üþenmeden resimlerle de örnek vermeyi çok severim
ben. Hemen aþaðýdaki resimde (Resim - 6) Database Audit Specification düðümünü görebilirsiniz.

Resim - 6
"New Database Audit Specification..." öðesine týkladýðýnýzda
"Create Database Audit Specification" penceresi açýlacaktýr. (bkz Resim -
7)

Resim - 7
Eðer dikkatli bakarsanýz, bu arayüzün de, "Create Server Audit Specification" penceresinin
arayüzüyle ayný olduðunu görürsünüz ve eðer o penceredeki Object Class,
Object, Object Name, Principal
alanlarýndaki kutucuklarý kurcaladýysanýz, herhangi bir deðiþiklik
yapamadýðýnýzý görmüþsünüzdür. Tek arayüzde iki iþ yaptýrmaya çalýþýnca, böyle sonuçlar
çýkabiliyor elbette. Neyse ki, bu alanlarý "Create Database Audit Specification"
penceresinde kullanabiliyoruz.
Bildiðiniz üzere Audit Action Type alanýnda, ihtiyacýnýza uygun
Action Type' ý seçiyorsunuz. Object Class alanýnda, seçebileceðiniz
üç tane seçenek var. Bunlar: Database, Object ve
Schema. (Bu kavramlarýn anlamlarý ise baþka bir konu olduðu ve konumuzun
kapsamýnda olmadýðý için bunlara deðinmiyorum.) Üzerinde denetim yapmak istediðiniz
nesneye göre, Object Class' ýný seçersiniz. Meselâ biz örneðimizde "Alacaklar"
isimli tabloyu denetlemek istediðimiz için, Object Class olarak "Object"
i seçtik. Eðer "Test" isimli veritabanýmýzdaki tüm tablolarý denetlemek isteseydik,
o zaman Object Class' ý "Database" olarak seçerdik, Object Name olarak da "Test" i seçerdik. Eðer belli bir kullanýcý veya
rolü deðil de, tüm kullanýcý ve rolleri denetlemek isteseydik, o zaman
Principal alanýnda bir þey seçmezdik.
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)".
Log Viewer - Audit
Önceki konu baþlýklarýnda bir Audit' in nasýl oluþturulacaðýný, bu Audit'
in oluþturulmasýnýn sebebi olan bir Server Audit Specification veya Database
Audit Specification nesnesinin nasýl ve ne gibi amaçlar için oluþturulabileceðini
anlattým. Þimdi sýra, yaptýðýmýz bu otomatik denetim mekanizmasýnýn ürettiði raporlarýn
nasýl okunabileceðine geldi.
Bir Audit dosyasýnýn ürettiði kayýt dosyasýný okuyabilmek için kullanabileceðiniz
en pratik ve kýsa yol, SSMS' teki Log Viewer' ý kullanmaktýr.
Bunun için, SSMS' i açtýktan sonra Resim - 1' de gösterilen Audits
düðümü altýnda oluþturduðunuz Audit nesnesinin üzerinde farenin sað tuþuna
týklayýp "View Audit Logs" öðesine týklayýn. Bu sayede, Log Viewer
açýlýr ve ilgili Audit nesnenizin ürettiði kayýtlarý görebilirsiniz.
Yukarýda yaptýðýmýz örneklerde hatýrlarsanýz "TestLogin" adýnda bir Login
oluþturmadan önce size "AuditTaseron" isimli Audit nesnesini
ve "sasTaseron" isimli Server Audit Specification nesnesini kullanýlabilir
duruma getirin demiþtim, bunun nedenini de daha sonra söyleyeceðim demiþtim. Ýþte
þimdi söylüyorum; bunun nedeni, CREATE LOGIN komutuyla birlikte sunucu düzeyinde
bir iþlem yapmamýzdý. "Eee?" mi diyorsunuz? O zaman þunu da hatýrlatayým, "sasTaseron"
ismiyle oluþturduðumuz Server Audit Specification nesnesinin içine bir de
SERVER_PRINCIPAL_CHANGE_GROUP Action Type' ý eklemiþtik. Bu Action
Type' ýn takip ettiði olaylardan biri de neydi? Login
oluþturulmasý! Yani eðer CREATE LOGIN komutuyla "TestLogin" Login'
ini oluþturmadan önce "AuditTaseron" ve "sasTaseron" isimli nesneleri kullanýlabilir
duruma getirdiyseniz, "TestLogin" ismindeki Login' i oluþturduðunuz denetim
kayýtlarýna geçmiþ demektir. Sizi bilmiyorum, ama ben nizami þekilde kendi dediklerimi
uyguladým ve sonucunu görmek için Resim - 8' e bakabilirsiniz.

Resim - 8
Aslýnda kaydýrma çubuðundan da anlaþýlabileceði üzere, oldukça çok alan var ve bu
kadar alaný bu kadar küçük bir resme sýðdýrmak imkânsýz. Sýðdýrsam bile herhalde
mikroskopla incelemeniz gerekirdi. Ama yine de bu resimde, elimden geldiðince çok
veriyi size göstermeye çalýþtým. Alanlardan anlatmaya baþlarsak, örneðin, bu komutun
çalýþtýrýldýðý tarih ve saati görebilirsiniz. Hangi SQL Server Instance'
ýnda gerçekleþtiði (EKREM-PC), hangi komutun çalýþtýrýldýðý (CREATE) ve bu komut
ile hangi sýnýf iþlem yapýldýðý (SQL LOGIN) ve daha bir çok bilgiyi görebilirsiniz.
Aþaðýdaki ayrýntýlý bilgi alanýna bakarsak, ilk göze çarpacak bilgilerden birisi,
"CREATE LOGIN TestLogin WITH PASSWORD '*****'" tür sanýrým. Hangi nesnenin hangi
komutla oluþturulduðu bilgisi oldukça deðerli olabilir. Ayrýca bu nesneyi hangi
Login' in oluþturduðunu da görebilirsiniz (EKREM-PC\ekrem).
Bununla birlikte, yine Resim - 8' deki "File Name" bilgisi dikkatinizi çekti
mi? Hatýrlarsanýz, "AuditTaseron" isimli Audit nesnesini oluþtururken dosya
adý deðil, sadece dosya yolu belirtilir demiþtim. Dosya adýný ise, SQL Server,
Audit nesnesinin adý olarak belirlediðiniz bir ad ile birlikte bir
GUID (Globally Unique Identifier)' i birleþtirerek ve uzantýsýný da ".sqlaudit"
yaparak verir. Bu resimde, bir çok bilgiyle birlikte bu dosya adýný da görebiliyorsunuz.
Ayrýca, test etmek için þimdi gidip, "dasTaseron" ismiyle oluþturduðumuz Database
Audit Specification nesnesini de kullanýlýlabilir duruma
getirebilirsiniz. Bu nesneye ait kayýtlara da, "sasTaseron" isimli Server Audit Specification
nesnesinde olduðu gibi, o nesnenin baðlý olduðu
Audit nesnesinin üzerinde farenin sað tuþuna týklayarak
ve "View Audit Logs" öðesini seçerek ulaþabilirsiniz. "TestUser" isimli kullanýcýnýn
"Alacaklar" isimli tabloya yapacaðý SELECT, UPDATE,
DELETE ve INSERT (DML - Data Manipulation Language) iþlemleri
yine bu kayýt dosyasýnda, aynen CREATE LOGIN iþlemindeki gibi kaydedilecektir.
Fakat "dasTaseron" nesnesini test etmek için sunucuya "TestLogin" ile giriþ yapmalý
ve bu Login' in "Test" isimli tablodaki baðlý olduðu kullanýcý olan "TestUser"
kullanýcýsýyla "Alacaklar" tablosuna karþý bir DML iþlemi yapmanýz gerekiyor. Çünkü
hatýrlarsanýz, Database Audit Specification nesnemizi bu kriterlere göre
oluþturmuþtuk. Eðer dediðim gibi "TestLogin" kullanýcýsýyla baðlanýp "Alacaklar"
tablosuna bir sorgu çekerseniz, göreceksiniz ki "AuditTaseron" isimli Audit
kayýt dosyasýnaki CREATE LOGIN komutunun üzerine bu yaptýðýnýz iþlemle
ilgili baþka bir kayýt daha eklenecektir.
Özet
Çok beklenen ve SQL Server 2008 ile birlikte gelen bir çok özellikten biri
olan Auditing konusunu size anlatmaya çalýþtým. Bu makaleye baþlarken de
dediðim gibi, bu gereksinim gerek bazý üçüncü parti yazýlýmlarla, gerekse SQL Trace
ile giderilmeye çalýþýlýyordu. Fakat artýk SQL Server 2008 ile birlikte,
arayüz desteðiyle de (SQL Trace özelliði için arayüz desteði yoktu) bu iþ
oldukça kolaylaþtýrýldý.
Biz veritabaný yöneticilerinin ana sorumluluklarýnýn baþýnda güvenlik geliyor. "Kim,
hangi bilgiye ne zaman eriþmiþ?" veya "Bu tablodaki deðiþikliði kim yapmýþ?" gibi
sorulara her an yanýt verebilmeliyiz. Bu yeni Auditing özelliði sayesinde, bu konudaki
iþimiz daha kolaylaþacak. Umarým bir gün sizin de iþinize yarar.
Ekrem Önsoy