2011-07-29

Security Vulnerabilities of Any Database Platform


NIST(National Institute of Standards and Technology)'nin, 2002 ile Haziran 2010 döneminde veritabanı teknolojisi üzerinde toparladığı istatistikler doğrultusunda SQL Server en güvenli veri tabanı olarak ortaya çıkıyor.

Konu ile ilgili kaynak makaleler:
Kaynak: Microsoft TechNet Aylık BT E-Bülteni - Temmuz 2011 Sayısı‏





Microsoft, SQL Server 2000'den bu yana veritabanı tarafında çok büyük gelişmeler kaydetti. Bana göre SQL Server, SQL Server 2005 ile tam bir enterprise ürün haline geldi. SQL Server 2008 ve SQL Server 2008 R2 ile birlikte kullanışlı ve ihtiyaç olan yeni özellikler eklendi(SQL Server 2008 İle Birlikte Gelen Yenilikler'i ilgili yazımdan okuyabilirsiniz. Bu sene sonunda yada 2012 başında çıkması beklenen ve kod adı Denali olan yeni sürümde daha kullanışlı ve işe yarar yeni özellikler gelecek). Bu gelişmelere paralel olarak zaman içerisinde rüştünü ispat eden SQL Server KOBI'lerden tutun da büyük şirketlere kadar hatta bankalarda kullanım alanı buldu. Halihazırda bildiğim kadarıyla ülkemizdeki 4 banka ana bankacılık veritabanı sistemlerini SQL Server üzerinde koşturuyor.

2011-07-28

Stop / Start SQL Server Agent Service With T-SQL

Zaman zaman çalışan SQL Server Agent servisini durdurmak yada duran SQL Server Agent servisini ise başlatmak ihtiyacımız olur. Bu ihtiyacımızı sunucuya bağlanıp servisin durumunu değiştirmek yada Central Management Server altından ilgili sunucunun Central Management Server Actions, Service Control altından yapabiliriz. Ama tüm bu seçenekler biraz uzun ve uğraştırıcı olduğu için SSMS üzerinden T-SQL ile servislerimi nasıl yönetirim diyenler cevabını aşağıda bulabilir:

Durmuş olan SQL Server Agent servisini aşağıdaki extended stored procedure yardımıyla başlatabilirsiniz:

exec xp_servicecontrol N'start',N'SQLServerAGENT'

Çalışan SQL Server Agent servisini aşağıdaki extended stored procedure yardımıyla durdurabilirsiniz:

exec xp_servicecontrol N'stop',N'SQLServerAGENT'

xp_servicecontrol  extended stored procedure aşağıdaki parametreleri alır:
  • start
  • stop
  • pause
  • continue
  • querystate
xp_servicecontrol  extended stored procedure ile dilediğiniz servisi dilediğiniz duruma getirip, durumu hakkında bilgi alabilirsiniz.

2011-07-27

SQL Server Version, Service Pack, Edition ve Cluster Bilgilerilerini Alma

SQL Server'ınızın build number'ının kaç olduğunu, hangi service pack'ın ve hangi sürümün kurulu olduğu ile birlikte cluster olup olmadığını aşağıdaki sorgu ile öğrenebilirsiniz:

SELECT SERVERPROPERTY('productversion') As Version,
SERVERPROPERTY ('productlevel') As ServicePack,
SERVERPROPERTY ('edition') As Edition,
SERVERPROPERTY('IsClustered') As isClustered

2011-07-19

SQL Server 2008 SP1 & SP2 için CU Çıktı!

SQL Server 2008 SP1 ve  SP2 için yeni CU'ler yayınladı. SQL Server 2008 SP1 için CU15; SQL Server 2008 SP2 için CU5 yayınlandı. CU'ler ile ilgili makalelere aşağıdaki bağlantılardan ulaşabilirsiniz:

KB #2555406 : Cumulative update package 15 for SQL Server 2008 Service Pack 1

KB #2555408 : Cumulative update package 5 for SQL Server 2008 Service Pack 2

SQL Server 2008 R2 SP1 CU1 Çıktı!

SQL Server 2008 R2 SP1; RTM sürüm için çıkan CU7 ve CU8 kapsamıyordu. Geçen hafta çıkan SQL Server 2008 R2 SP1 için bugün CU1 yayınlandı. Yayınlanan CU1: RTM CU7 ve CU8 deki fixleri kapsıyor.

KB #2544793 : Cumulative update package 1 for SQL Server 2008 R2 Service Pack 1

Geçen hafta yayınlanmış olan SQL Server 2008 R2 SP1 http://www.microsoft.com/download/en/details.aspx?id=26727 adresinden indirebilirsiniz.
 
Yayınlanan her türlü SP, CU'yu veritabanı sisteminize kurmadan önce muhakkak test etmenizi öneririm!

2011-07-07

SQL Server Kurulu Sunucularda Antivirus Kurmak

Veritabanı sunucunuza bir virüsün musallat olup sisteminizi işleyemez hale getirmesi, sizin için en kötü senaryolardan birisi olsa gerek. Veritabanı sisteminiz çalışmadığı zaman kurumda hayat durur. Çünkü kurumdaki tüm uygulamaların can damarı veritabanıdır. Can damarından vurulmuş bir kurumun iş sürekliliği yada disaster'ı yoksa toparlanması çok zor olabilir. Veritabanı sistemi ayakta olmayan bir kurum ayakta değildir! Bu yüzden veritabanı sisteminizi olası virüs saldırılarına karşı korumanız gerekir. SQL Server kurulu veritabanı sunucularına antivirüs kurmaya çoğu DBA soğuk bakar. Soğuk bakmasının temel sebepleri: antivirüs programının ne zaman ne yapacağının tam olarak kestirilememesi, veritabanı sistemine ait bir bileşenin antivirüs tarafından blocklanabilme ihtimali, veritabanı sistem performansının düşme riski vb. gibi risklerdir. Bu riskleri minimize etmek için antivirüs programlarında çeşitli ayarların yapılması gerekir. SQL Server kurulu sunuculardaki antivirüs'lerde aşağıdaki adımlar exclude edilmelidir:
  • SQL Server Veri Dosyaları
    • .mdf
    • .ldf
    • .ndf
  • SQL Server Backup Dosyaları
    • .bak
    • .trn
  • Fulltext Katalog Dosyaları
  • Eğer kurulu ise SQL Analysis veri dosyalarının barındığı dizin
  • Eğer sunucu cluster ise
    • Quorum Disk Sürücüsü
    • C:\Windows\cluster
Belirli testlerden sonra tüm standalone, cluster ve geocluster veritabanı sunucularımıza antivirüs kurduk. Tabi antivirüs kurmanın yanında veritabanı sunucularında aşağıdaki adımları da uygulayarak veritabanı sisteminizi daha güvenli hale getirebilirsiniz:
  1. Genel internet erişiminin engellenmesi,
  2. Firewall'ın açık hale getirilmesi,
  3. Diğer sunucular tarafından dosya çalıştırmaya izin vermeme, SQL'e erişim dışında bir yetki vermeme,
  4. Veritabanı sunucusunun HTTP server olarak kullanılmaması(IIS yada Apache çalıştırmama),
  5. Veritabanı sunucusunda file sharing'den kaçınmak.

2011-07-06

SQL ve Performans Üzerine

Bu gece twitter'da T-SQL Code Review da performans ile ilgili bir kaç hususu 160 karakter ile arzı endam eyledik, merak eden zevat bunları aşağıda bulabilir:

  • T-SQL de WHERE koşulları eşitsizlik üzerine kurulu geliştiriciye eşittir i aşılamak gerekir.Zira tuttuğu yolun eşiti çıkmaz.
  • Cross Joini Inner Joine dönüştüremeyen geliştiricinin tüm yolları CROSS dur, table/index SCAN dan bir türlü başını SEEK e çeviremez.
  • SELECT * ı alışkanlık haline getirmiş bir geliştirici Network u kendisine tahsis edilmiş Formula 1 pisti zanneder. Kodu trafiği alt üst eder!
  • İyi bir SQL ci az kod ile çok şey alabilendir; çok şey ile az kaynak tüketendir; veriyi disk yerine cache den okutabilendir.
  • Kodu ORDER BY a alışmış olan kişileri ORDER BY (hizaya çekmek) yapmak zordur.
  • Çok büyük kayıtlara sahip Temp Table kullanma hastalığına yakalanmış bir geliştiriciyi Physical Table Hastanesinde tedavi etmek gerekir.

2011-07-04

LOGINPROPERTY

Login policy ayarları hakkında bilgi verir.


Syntax:
LOGINPROPERTY ( 'login_name' , 'property_name' )

Parametreler:
login_name: Hakkında bilgi alınacak SQL Server login adı
propertyname: Login için bazı özellik bilgileri geri döndürür. Propertyname aşağıdaki değerlerden birini olabilir:

BadPasswordCount : Yanlış bir parola ile girişlerin ardışık denemelerinin sayısını döndürür.

BadPasswordTime : Yanlış bir parola ile giriş yapmak için son girişim zamanını döndürür.

DaysUntilExpiration : Parolanın süresi kadar gün sayısını döndürür.

DefaultDatabase : Kullanıcının giriş için default veritabanını döndürür.

DefaultLanguage : Kullanıcının giriş için varsayılan dilini döndürür.

HistoryLength : Şifre politikası uygulama mekanizmasını kullanarak, giriş için izlenen parola sayısını döndürür. 0: Password Policy uygulanmıyorsa. 1: Password Policy uygulanıyorsa.

IsExpired : Oturum açma süresinin dolup dolmadığı hakkında bilgi verir.

IsLocked : Loginin kilitli olup olmadığı hakkında bilgi verir.

IsMustChange : Bir sonraki girişte şifrenin değiştirilmesinin gerekip gerekmediğini hakkında bilgi verir.

LockoutTime : Lock tarihini geri döndürür.

PasswordHash : Şifrenin hash halini geri döndürür.

PasswordLastSetTime : Geçerli parolanın set edildiği tarihi döndürür.

Not: Login üzerinde VIEW yetkisini gerektirir. Password Hash için CONTROL SERVER yetkisini gerektirir.

Örnek-1: Mehmet kullanıcısının bir sonraki oturumda şifresinin değiştirilmesinin zorunlu olup olmadığını kontrol edelim

SELECT LOGINPROPERTY('mehmet', 'IsMustChange');

Örnek-2: Mehmet kullanıcısının lock olup olmadığını kontrol edelim

SELECT LOGINPROPERTY('mehmet', 'IsLocked');

Örnek-3: Lock olan tüm kullanıcıların listesini aşağıdaki T-SQL ile alabilirsiniz:

select name
from sys.server_principals
where loginproperty(name, 'IsLocked') =1

2011-07-02

SQL Server'da Görevler Ayrılığı (Separation of Duties)

Güvenlik giderek kurumlar için daha da çok önem kazanmaktadır. Bu doğrultuda kurumlar önemli verilerini korumak amacıyla kullanıcı ve yöneticilerin yetkilerini minimum seviyeye çekmek istemektedirler.

En basit ifadesiyle görevler ayrılığı ilkesi kurum için tehditleri ve güvenlik açıklarını önlemek üzere kullanıcıların yetkilerini düzenlemektir. Görevler ayrılığı ilkesini benimseyen kurumlar, tüm yetkilere sahip SQL Server DBA kullanıcılarının yetkilerini de düzenlemeye ihtiyaç duymaktadırlar.

SQL Server 2008 R2 yasal uyumluluk ve güvenlik uygulamalarını gerçekleştirmek üzere gerekli olan tüm araçları bünyesinde sunmaktadır. Görevler Ayrılığı ilkesinin gereksinimlerini uygulayarak verilerin korunmasını sağlarken, DBA kullanıcılarının da verimli çalışmaya devam edebilmeleri için neler yapılması gerektiğine dair sunduğumuz makale için: SQL Server Seperation of Duties

Kaynak: Microsoft TechNet

2011-06-23

SQL Server Agent Job, Schedule'ı Bittiği Halde Çalışıyor!

Bir SQL Server Agent job tanımladınız. Job frekansını recuring olarak set ettiniz. Job schedule'ını daily olarak ayarladınız. Job'ın çalışması için başlangıç ve bitiş tarihleri verdiniz. Job'ınızın bitiş tarihi bittikten sonra SQL Server Agent servisini restart ettiniz.  İşte tam bu noktada film kopuyor! O da ne, job'ınızın en son çalışma tarihi geçildiği halde job'ınız hala çalışmaya devam ediyor. Job Activity Monitor'de baktığınızda job'ınızın Next Run ı olmayacak ama Last Run ı sürekli olacak. Bu durum SQL Server Agent servisinin bir bug'ı ve bu bug Microsoft tarafından teyid edilmiş durumda. Sorun SQL Server Agent Job servisinin schedule algoritmasının hata üretmesinden kaynaklanıyor.

Çözüm: Aşağıdaki sürümler için ilgili Cumulative Update'leri yüklemek:
  1. SQL Server 2008 SP1 için CU 11 yüklemek
  2. SQL Server 2008 SP2 için CU 2 yüklemek
  3. SQL Server 2008 R2 için CU 6 yüklemek

.::YASAL UYARI::.

©2004-2023 Mehmet GÜZEL, www.mehmetguzel.net

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