Policy-Based Management(Disable Edilmiş Audit Kontrolü-Audit Facet)
Policy-Based Management SQL Server 2008 ile gelen bir özelliktir. Sistemlerimizde istediğimiz kuralları koymamıza, standartlarımızı belirlememize ve kontrollerimizi otomatik olarak yapmamıza olanak sağlar. Örneğin stored procedure’lerimizin isimlerinin rakam ile başlamaması ya da veritabanı recovery modellerinin simple olmaması için kontrol amaçlı olarak policy oluşturabiliriz.
Policy Based Management(PBM)’ı kavramak için bazı kavramları anlamanız gerekir.
Facet: PBM tarafından yönetilebilen bir özelliktir. Örneğin Audit isminde bir facet vardır. Ve bu facet’ı kullanarak tanımlamış olduğunuz audit’lerin disable halde olup olmadığını kontrol eden bir policy oluşturabilirsiniz.
Tüm facet’ların listesine aşağıdaki gibi SSMS üzerinden erişebilirsiniz. Facet detayı için üzerine çift tıklamalısınız.
Condition: ilgili facet’ların alt özelliklerinin belirlenen koşulu sağlayıp sağlamadığını kontrol eder. Örneğin Audit facet’ının Enabled alt özelliğini kontrol ederek disable edilmiş audit’leri kontrol edebilirsiniz.
Disable edilmiş audit’leri kontrol eden bir policy oluşturalım.
Aşağıdaki gibi Management > Policy Management > Policies sekmelerinden New Policy diyoruz.
Karşımıza çıkan ekranda Policy’e bir isim veriyoruz ve Check Condition kısmından bir condition oluşturmamız gerekiyor.
New Condition’a tıklıyoruz.
Karşımıza çıkan ekranda Name kısmından condition’a bir isim veriyoruz.
Facet kısmından disable edilmiş audit’leri kontrol edeceğimiz için Audit facet’ını seçiyoruz.
Expression kısmında … ‘ya tıklayarak Audit facet’ının alt özelliği olan @Enabled ‘ı seçiyoruz.
Operator kısmından =’i ve Value kısmında True’yu seçiyoruz. Böylelikle Audit disable ise policy fail edecek.
Bu Audit’i kullanacak Database Audit Specification’ın da pasif olup olmadığını kontrol etmek istiyorsanız Database Audit Specification Facet’ını başka bir policy’de kullanmalısınız. Audit’ler için “SQL Server Audit Oluşturmak” isimli makaleyi okumanızı tavsiye ederim.
Evaluation Mode kısmından On Schedule’ı seçerek policy hangi aralıklarla kontrol’ü yapacağını belirliyoruz ve daha sonra Enable kutucuğuna tıklıyoruz.
On Demand’ı seçersek, sadece policy’i çalıştırdığımızda kontrolleri yapar.
Server restriction kısmında server bazında bir koşulunuz varsa server bazında bir condition oluşturarak koşulunuzun kontrolünü yapabilirsiniz.
Belirli aralıklarla otomatik kontrol etmesini istiyorsak Schedule kısmından new diyoruz ve policy’nin kontrol’ü yapacağı sıklığı belirliyoruz. Biz aşağıda her gün 00:00:000’da bir kere çalışacak şekilde set ettik.
Policy’mizi bu şekilde oluşturduk. Manual olarak çalıştırmak için aşağıdaki gibi Evaluate diyoruz.
Ben kendi lokal’imde backup almadığım için aşağıdaki gibi bir sonuç aldım.
View’e tıkladığınızda policy’nin fail olmasına sebep olan audit’i ve nedenini görebilirsiniz.
Instance üzerinde refresh yaptığınızda Instance’ın yanında aşağıdaki gibi mektuba benzeyen bir kutucuğun üstünde kırmızı renki x işareti çıkıyor. Bunun sebebi instance üzerinde tanımlı olan ve hatalı biten bir policy’nin var olduğunun sql server’ın bize bildirmek istemesi. Bu işareti gördüğünüzde tanımlı policy’lere bakıp gerekliliklerini yerine getirmeniz gerekir.
Örneğimizle ilişkilendirecek olursak disable edilmiş audit’leri enable ederek policy’i yukarda anlattığım gibi tekrar evaluate ettiğimizde bu işaret kaybolacaktır.
Audit Facet’ı ile ilgili makalemizin dışında ekstra bir konudan bahsetmek istiyorum.
OnFailed özelliğini Continue olarak aşağıdaki gibi set eden bir condition oluşturabilirsiniz. Bazı Audit’ler oluşturulurken Continue yerine Shutdown olarak set edilmişse bu audit’lerin gözünüzden kaçmamasını sağlar.
Bu kontrolü yapmamızın sebebi audit fail ettiğinde Shutdown olarak ayarlanmışsa sql server servisi fail ediyor. Bu da genellikle istemediğimiz bir durum. Tabi bazı kritik uygulamalarda audit yazılamıyorsa sistem çalışmasın demeniz gerekebilir.
Ya da audit’in herhangi biri tarafından modifiye edilip edilmediğini kontrol etmek için aşağıdaki gibi DateLastModified özelliğini kullanabilirsiniz.
Policy Based Management ile SQL Server üzerinde yapabileceğiniz bir çok kontrol vardır. Ve profesyonel bir veritabanı yöneticisi bence SQL Server’ın bize sunduğu bu özelliği bütün detaylarıyla kullanmalı. Policy Based Management ile yapabileceğiniz diğer kontrolleri sitemizdeki menüden MSSQL’in altındaki POLICY-BASED MANAGEMENT alt menüsünden erişebileceğiniz makalelerde bulabilirsiniz.