Policy Based Management – Database Name Control

Policy-Based Management SQL Server 2008 ile gelen bir özelliktir. Bu özellik hem Enterprise hem de Standard SQL Server Sürümlerinde kullanılabilir.  Policy Based Management (PBM), SQL Server tarafından sunulan bir yönetim çerçevesidir. Sunucu veya veritabanı yapılandırmalarını kontrol etmek için kullanılır. Bu özellik, belirli politikalar belirleyerek SQL Server ortamını izlemeyi ve yönetmeyi sağlar. PBM ile veritabanı yöneticileri, sistemdeki çeşitli bileşenlerin belirli kurallar ve koşullara uygun olup olmadığını doğrulayabilir ve gerekli durumlarda bu kuralların ihlalini önlemek için tedbirler alabilirler.

Policy Based Management Instance altında bulunan Management sekmesi altında bulunmaktadır.

Policy Based Management altında bulunan kavramların ne olduğuna değinelim.
Facet: SQL Server’ın farklı yapı taşlarını temsil eder ve her bir facet, belirli bir sunucu veya veritabanı özelliğini yönetmek için kullanılır. SQL Server’da 74’ten fazla model vardır ve her modelin bir veya daha fazla özelliği vardır. Aşağıdaki resimde listelenen facet’ler, SQL Server’da yönetilebilecek alanları göstermektedir.

Bu facet’ler, sistemdeki yapılandırmaları izlemek, belirli politikalar tanımlamak ve sunucuyu bu politikalara göre yönetmek amacıyla kullanılır. İlgili Facet üzerine çift tıklayarak ne gibi özellikleri olduğunu gözlemleyebiliriz.

Genellikle kullanılan  facet kavramların ne olduğuna değinelim.
1. Application Role: Uygulama rollerini yönetmek ve güvenlik yapılandırmalarını kontrol etmek için kullanılır.
2. Asymmetric Key: Asimetrik anahtarları yönetmek için kullanılır. Bu anahtarlar, şifreleme ve dijital imza gibi güvenlik operasyonları için kullanılır.
3.  Audit : Sunucudaki denetim günlüklerinin ayarlanması ve izlenmesi için kullanılır. SQL Server Audit, güvenlik açısından önemli olayları izler.
4.  Availability Database : AlwaysOn kullanılabilirlik gruplarındaki veritabanları için yönetim işlemlerini yapmanızı sağlar.
5.  Availability Group : AlwaysOn gruplarını yönetmek ve yapılandırmak için kullanılır.
6.  Availability Group State : AlwaysOn gruplarının durumu hakkında bilgi verir.
7.  Availability Replica : Availability Group replikalarını yönetmek için kullanılır. Bu replikalar, bir veya daha fazla veri merkezi arasında veri yedekliği sağlamak için kullanılır.
8.  Backup Device : Yedekleme cihazlarını yönetir. Yedekleme işlemleri için kullanılan fiziksel veya mantıksal cihazlardır.
9.  Data File : Veritabanı dosyalarının yönetimi için kullanılır. Veritabanının fiziksel veri dosyaları burada kontrol edilir.
10.  Database : SQL Server’daki veritabanlarını genel olarak yönetir. Veritabanı ayarları ve yapılandırmaları bu facet altında yapılır.
11  Database Audit Specification : Veritabanı denetim spesifikasyonlarını yönetir. Hangi olayların denetleneceğini belirler.
12.  Database Maintenance : Veritabanı bakım işlemleri için kullanılır. Bakım planları, yedekleme ve indeks yeniden oluşturma gibi görevleri içerir.
13.  Database Options : Veritabanının seçeneklerini ve ayarlarını yönetir. Örneğin, otomatik büyüme ve kurtarma modeli gibi seçenekler.
14.  Database Performance : Veritabanının performansıyla ilgili ayarları ve yapılandırmaları kontrol eder.
15.  Database Replica State : AlwaysOn replikalarının durumlarını ve sağlık bilgilerini yönetir ve görüntüler.
16.  Database Role : SQL Server veritabanı içindeki rollerin yönetimi için kullanılır. Rollerin güvenlik ve yetkilendirme ayarları bu facet’ten yapılır.
17.  Database Security : Veritabanı güvenliğiyle ilgili ayarları kontrol eder. Kullanıcı izinleri ve güvenlik denetimleri burada yapılır.
18.  Default : Varsayılan ayarları ve değerleri temsil eden facet’tir.
19.  Endpoint : SQL Server’daki bağlantı uç noktalarını yönetir. Endpoints, veritabanı ile istemciler veya diğer sunucular arasındaki iletişimi yönetir.
20.  Filegroup : Veritabanı dosyalarının gruplar halinde yönetimi için kullanılır. Büyük veritabanlarında performans ve yönetim açısından dosyalar gruplandırılabilir.
21.  Index : Veritabanı indekslerini yönetir. İndeksler, veritabanı sorgularının performansını iyileştirmek için kullanılır.
22.  Linked Server : Bağlantılı sunucuları yönetir. SQL Server’dan diğer veritabanı sunucularına bağlanmayı sağlar.
23.  Log File : Veritabanı log dosyalarının yönetimi için kullanılır. Transaction log dosyalarının büyüklüğünü ve performansını kontrol eder.
24.  Login : Sunucu düzeyinde giriş bilgilerini yönetir. Bu facet ile kullanıcılar SQL Server’a giriş yapabilir.
25.   Login Options  : SQL Server’a giriş yapan kullanıcılar için seçenekleri yönetir. Kullanıcıların oturum açma ayarları buradan kontrol edilebilir.
26.   Partition Function  : Veritabanı bölümleri için kullanılan bölme fonksiyonlarını yönetir. Bu fonksiyonlar, verilerin nasıl bölümleneceğini belirler.
27.   Partition Scheme  : Veritabanı bölümleri için şemaları yönetir. Bölümlenmiş tabloların ve indekslerin fiziksel depolanmasını tanımlar.
28.   Plan Guide  : SQL Server’ın sorgu yürütme planlarını yönetmek için kullanılır. Sorguların performansını optimize etmek amacıyla kullanılır.
29.   Server  : SQL Server’ın genel sunucu ayarlarını ve yapılandırmalarını yönetir.
30.   Server Audit  : Sunucu düzeyindeki denetimleri yönetir. SQL Server denetim kayıtlarını oluşturmak ve izlemek için kullanılır.
31.   Server Audit Specification  : Sunucu denetimi için spesifikasyonları yönetir. Hangi sunucu olaylarının denetleneceğini belirler.

32.   Server Configuration  : SQL Server sunucusunun genel yapılandırma ayarlarını yönetir.
33.   Server Performance  : SQL Server sunucu performansını izlemek ve yönetmek için kullanılır.
34.   Server Role  : Sunucu düzeyindeki güvenlik rollerini yönetir. Sunucudaki kullanıcıların yetkilendirme seviyeleri bu facet üzerinden düzenlenir.

35.   Server Settings  : SQL Server’ın genel ayarlarını ve seçeneklerini yönetir. Sunucu yapılandırmalarının genel kontrolü buradan sağlanır.
32.   Statistic  : İstatistikleri yönetir. SQL Server’daki sorgu performansını iyileştirmek için veritabanı istatistiklerini kullanır.
37.   Table  : Veritabanındaki tabloları yönetir. Tablolar, verilerin saklandığı temel yapılar olarak işlev görür.

Condition:

Yukarıda tanımlanan Facet’ların alt koşullarının sağlanıp sağlanmadığını kontrol etmektedir. Yapacağımız örneklerde ilgili Facet’ı seçtikten sonra Condition bölümü karşımıza çıkmaktadır.

İlgili Facet seçildikten sonra Facet özelliğiyle uyumlu koşullar önümüze gelmektedir.

Yukarıdaki açıklamalardan sonra veritabanı üzerinde isim kontrol işlemimize geçelim. Aşağıdaki kuracağımız yapıda Database Facet kullanarak veritabanı isim kontrolünü detaylı bir şekilde yapmaya çalışacağız.

Bulunmuş olduğunuz ortamda veritabanların isim kontrolünün yapılması gerekmektedir. Her kullanıcı kendi düşünce yapısına göre veritabanı oluşturma işlemlerinde veritabanı isminden dolayı çalışan yapılarımız Fail verebilir. Manuel bir şekilde veritabanı ismi kontrol etmektense  Policy  Based Management  oluşturarak belli aralıklarla veritabanı isim kontrolü yapmamız gerekiyor.

İşlemlerimize başlayalım. İnstance altında bulunan Management > Policy Management > Policies sekmelerinden New Policy diyoruz.

Gelen ekranda oluşturacağımız Policy’e bir isim vermek gerekiyor. Daha sonra Check Condition kısmında bir Condition oluşturmamız gerekiyor. İlgili bölümde New Condition’a tıklıyoruz.

Gelen ekranda Condition’a bir isim vermek gerekiyor. Facet kısmında  databaselerin isim kontrol işlemini Database Facet ile yapmış olacağız. 

Şunu belirlememiz lazım veritabanımızda hangi harflerin ve bazı noktalama işaretlerin bulunmamamı gerekiyor.

Öncelikli olarak veritabanı içerisinde Rakamlı bir ifadenin olmaması gerekli, Noktalama işaretlerinin olmaması gerekmektedir, Alt tire(_) işaretinin bulunmaması gerekmekte,  isimler arasında boşluk ifadesinin olmaması ve son olarak veritabanı isminin Türkçe karakter(ş,ö,İ vs..) oluşturmaması gerekmektedir. Aşağıdaki Value kısmında tanımlanmış olan değer büyük ve küçük harf İngilizce karakter dışında karakter olmayacağını belirtmektedir. ^ sembolüyle  belirtmiş olduğumuz harfler dışında her şeyi reddetmiş oluyoruz.

‘%[^A-Za-z]%’

 Yukarıdaki tanımlamaları yaptıktan sonra OK butonuna tıklıyoruz. 

Evaluation Mode kısmından On Schedule’ı seçerek policy’in hangi zaman diliminde  çalışacağını belirliyoruz. On Demand’ı seçersek,  Manuel bir şekilde policy’i çalıştırmak gerekir.

On Schedule seçimini yapıp yeni bir Schedule oluşturuyoruz. Ya da Pick kısmında önceden oluşturulmuş bir Schedule’ı seçebiliriz.

Aşağıdaki ekran resmin Evaluation Mode kısmından On Schedule’ı seçerek policy hangi zaman diliminde kontrol’ü yapacağını belirliyoruz ve daha sonra New butonuna tıklıyoruz. Ya da Pick ksımında önceden oluşturulmuş bir Schedule’ı seçebiliriz.

Yeni bir Schedule oluşturuyoruz. 

Pick kısmına tıkladığımızda önceki oluşturulmuş olan zamanları görebiliriz.

Server restriction kısmında server bazında bir koşulunuz varsa server bazında bir condition oluşturarak koşulunuzun kontrolünü yapabilirsiniz.  Bunun için Server restriction  kısmında  yeni bir condition oluşturabiliriz.

Yukarıdaki tüm işlemleri tamamladıktan sonra  OK butonuna basıp işlemleri sonlandırıyorum.

Policies’i oluşturduktan sonra Sağ tıklayıp manuel bir şekilde çalıştırmak için Evaluate kısmına tıklanır.

Policy’i çalıştırdıktan sonra aşağıdaki ekranda göründüğü gibi bazı veritabalarının belirlemiş oluşturduğumuz kurallara göre oluşturduğunu bazılarının ise hata verdiğini görmüş oluyoruz.

Details kısmında hata mesajlarının neden kaynaklandığını görelim.

Yukarıdaki resimde alttire(_) olduğu için hata mesajı almış olduk.

Yukarıdaki resimde rakamlı ifade olduğu için hata mesajı almış olduk.

Yukarıdaki resimde noktalı virgül olduğu için hata mesajı almış olduk.

Yukarıdaki resimde boşluk olduğu için hata mesajı almış olduk.

İsim kontrolü haricinde veritanının uzunluğunuda refarans almasını istiyorsanız aşağıdaki ifadenin eklenmesi gerekmektedir. And ifadesiyle birbirine bağlıyoruz.

Policy’den hata aldığımız için instance’ın yanında mektuba benzeyen bir kutucuğun üstünde kırmızı renkli 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.

Şimdi Policy’de hata veren veritabanı isim ve uzunluğu düzelttikten sonra x işaretin kaybolduğunu gözlemleyeceğiz.

Not: Veritabanında herhangi bir isim kontrolü yapılması isteniyorsa Database Facet seçilmesi gerekmektedir. Örneğin login isim kontrolünde login facet, stored procedure isim kontrolü için facet olarak stored procedure facet’ın seçilmesi gerekmektedir. Procedure oluştururken system procedurelerin işleme katılmaması için IsSystemObject field’ın eklenmesi gerekmektedir.

Kısacası bu makalede Database facet işlemini ele almış olduk. Bu yapı ile yukarıdaki örneklerharicinde Collation,Maxdop,Name,Owner,PageVerify,ParameterSniffing,ReadOnly,Size,Status,TrustWorthy,UserName,Version vb.. birden fazla işlem için kontrol işlemi yaparız. Bir sonraki Policy Based Managemet makalesinde görüşmek dileğiyle.

“Şüphesiz Rabbimiz Allah’tır” deyip sonra da dosdoğru olanlara hiçbir korku yoktur, onlar üzülmeyecekler de. Ahkâf-13

Author: Yunus YÜCEL

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir