Hoþgeldiniz           
   
"SQL Server baþvuru kaynaðýnýz"
Skip Navigation Links
=========
Anasayfa
Makaleler
Hatalar \ Çözümler
Duyurular
Diðer
Ýpuçlarý
Yararlý Adresler
Mesaj TahtasýExpand Mesaj Tahtasý
HakkýmdaExpand Hakkýmda
Ýletiþim
Kullanýcý Adý:
Þifre:
 

Ne Mutlu Türküm Diyene!

SQL Server ile ilgili soru sormak için buraya týklayýn!


Yazýlarýmý nasýl buluyorunuz?






En Son SQL Server ile Ýlgili Okuduðum Kitaplar
- Inside Microsoft SQL Server 2005: Query Tuning and Optimization - MS Press (Ýngilizce)
- Accelerated SQL Server 2008 - Apress (Ýngilizce)
- Designing and Optimizing Data Access by Using SQL Server 2005 - MS Press (Ýngilizce)
- Microsoft SQL Server 2005 Database Solutions Design - Wiley Publishing (Ýngilizce)- Optimizing and Maintaining a Database Administration Solution by Using SQL Server 2005 - MS Press (Ýngilizce)- Designing a Database Server Infrastructure Using SQL Server 2005 - MS Press (Ýngilizce)- SQL Server 2005 Implementation and Maintenance - MS Press (Ýngilizce)
- SQL Server 2005 Administrators Companion - MS Press (Ýngilizce)


              
SQL Server 2008: Auditing 

Son güncelleme tarihi: 03 Ekim 2008
  


Merhaba arkadaþlar, 

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


Anasayfa


 
Bu sitenin tüm haklarý, Ekrem Önsoy' a aittir.