A
B
C
Ç
D
E
F
G
Ğ
H
I
İ
J
K
L
M
N
O
P
R
S
Ş
T
U
Ü
V
Y
Z
Q
W
X
+ Ekle
SQL Serverda Veritabanı Güvenliği

SQL Serverda Veritabanı Güvenliği

Bu makalede SQL Server’da uygulama ve veritabanı güvenliği üzerine yaptığım araştırmaların sonuçlarına dair alınmış notlar yer almaktadır. Dolayısıyla uygulamalarımız ve de veritabanı güvenliğini sağlayabilmemiz açısından birince elden ilk olarak neler yapabiliriz, nasıl önlemler alabiliriz, hep birlikte inceleyeceğiz.

Makalenin sonunda yararlanılan ve tavsiye edilen kaynaklardan ayrıntılı bilgi edinebilirsiniz.

 

# Uygulamalarınızı güvenlik taramasından geçirin.

Yazdığınız kodun kusursuz olduğunu sanıyorsanız aldanırsınız. Çünkü gün geçtikçe yeni saldırı teknikleri kendini göstermektedir. Dolayısıyla uygulamanızdaki herhangi bir güvenlik açığının bir başkası tarafından keşfedilmesi oldukça rahatsız edici bir durumdur. Bu nedenle ilk tavsiyemiz uygulamalarınızı sürekli bir güvenlik taramasından geçirmek ve her türlü saldırı sistemine karşı test etmektir. Sisteminizi ücretsiz olan MBSA kullanarak açıklara karşı denetleyebilirsiniz.





# SQL Server’ınız için en güncel Service Pack’leri takip edip kurulumunu yapın ve düzenli olarak yedek almayı ihmal etmeyin.


# SQL Server’a erişen uygulamalarınızı ve kullanıcılarınızı denetleyin.


# Veritabanına erişim haklarını sınırlandırın ve SP’ler yararlanın.

İkinci en önemli husus, SP kullanımı. Uygulamalarınızda data write(yazma) & data ready(okuma) işlemleri için stored prosedürlerden yararlanın ve bunun dışında veritabanına erişmi engellediğinizden emin olun.


# SP içerisinde EXEC ifadesiyle dışarıdan parametre kullanarak alınan statik SQL ifadeleri çalıştırmaktan kaçının.

Stored Procedure’leri, T-SQL kullanarak doğrudan çalıştırmak yerine, ADO.NET’in sağladığı bir ara nesne (command nesnesi) kullanarak parametre aktarın.


# Uygulamanıza asla T-SQL kodları gömmeyin.

Ad-Hoc sorgu olarak kullanılmak üzere, uygulamaya asla T-SQL kodları gömmeyin. Bunun bir güvenlik zafiyeti olmasının yanında uygulamanın sorgu süresini kısaltma, karmaşıklaştırma gibi dezavantajları da beraberinde getirir.


# Güçlü bir sa şifresi kullanın. sa kullanıcısının boş veya kolay bir şifreye sahip olmadığından da emin olun.

sa kullanıcı adını sadece veritabanı ayarları ve nesne oluşturma işlemleri için yani SQL Server Enterprise Manager, Query Analyzer, osql vs. ile bağlanırken kullanın, asla uygulamalarınızın veritabanına erişmesi için kullanmayın.


# SQL Server üstünde mümkün olduğunca az hesap bulundurun.

Unutmayın kullanıcı arttıkça erişim denetimi de zorlaşır. Gereksiz hesaplar varsa silin. Her bir hesabın, gerekenden daha fazla haklara sahip olmadığından emin olun.


# Uygulamaya özgü bir kullanıcı oluşturun ve kullanıcıyı entegrated (bütünleşik) kullanıcı olarak yetkilendirin.

Uygulamalarınızın bir standart kullanıcı ile SQL Server’e erişmesi gerekiyorsa, uygulama bazında kullanıcı oluşturabilirsiniz. Bu kullanıcıya verilen haklarının asgari düzeyde olduğundan emin olun. Örneğin yalnızca stored prosedürlere erişim izni verin, tablolara doğrudan erişim izni vermeyin. SQL Server kullanıcısı ya da local kullanıcı olarak tanımlamak yerine domain kullanıcısı olarak tanımlayın.


# SQL Server’a bağlı gereksiz sunucu varsa kaldırın.

SQL Server yüklü makine ile uygulama sunucusu arasında IPSec tanımlaması yaparak başka makinelerden aynı hesabın SQL Server’a bağlanmasını kısıtlayabilirsiniz.


# Connection string ifadesini şifreleyin.

Uygulamanın Veritabanına erişimi için bir bağlantı ifadesi kullanıyorsanız, mutlaka şifreli olarak saklayın. Bunun için Windows Registry’i kullanabilirsiniz. DPAPI gibi arayüzler, şifreleme için tercih edilebilir güvenlik seviyesi sunmaktadır.


# Herkesi kendiniz gibi sanmayın, uygulamanızı sadece dostlarınız kullanacak değildir. Uygulamanızdan gelen ifadeleri doğrudan SQL ifadenize ekleyip SQL ifadenizi çalıştırmaktan kaçının.


# SQL Server’a kaydedilen kullanıcıdan aldığınız veriler için gereğinden fazla girdi kabul etmeyen yapılar kullanın.

Tablo tasarımlarında ve procedure, fonksiyon ve değişken tanımlamalarında alan uzunluklarını gereğinden fazla uzun tutmayın. Kullanıcıdan gelen bilgilerde kötü niyetli ifadeler olup olmadığını kontrol eden bir sistem geliştirin.


# SQL injection olaylarına karşı önlemler aldığınızdan emin olun. Uygulama geliştirirken, bu türden saldırılara maruz kalabileceğinizi aklınızdan çıkarmayın.


# Güvenlik yönünden güçlü bir uygulamanın nasıl geliştirildiği hakkında örneklerle anlatılan kod hatalarını incelemek için a rel="nofollow" href="https://www.fortify.com/vulncat/en/vulncat/index.html" target=_blank>buradaki
bağlantıdan yararlanabilirsiniz.

Ayrıca C, C++, Java dilleri için a rel="nofollow" href="https://www.securecoding.cert.org/confluence/display/seccode/cert+c+secure+coding+standard" target=_blank>CERT
tarafından yapılan güvenli kodlama standartları bölümünü inceleyebilirsiniz.


# Güncel saldırı ve korunma yöntemleri hakkında a rel="nofollow" href="http://blogs.msdn.com/b/sqlsecurity/" target=_blank>buradaki
ve a rel="nofollow" href="http://cyber-warrior.org/forum/www.sqlsecurity.com" target=_blank>buradaki
bağlantılardan ayrıntılı bilgi edinebilirsiniz.


# SQL Server’a erişim hakları hakkında ayrıntılı bilgi için a rel="nofollow" href="http://blog.verivizyon.com/ygozudeli/ms+sql+server+a+eri%c5%9fmek+hakk%c4%b1nda+her+%c5%9fey+_16.aspx" target=_blank>buradaki
makaleyi inceleyebilirsiniz.


# SQL Server’ın güvenlik ve uyumluluk anlamında neler sunduğunu ayrıntılı olarak ele alan a rel="nofollow" href="http://blog.microsoft.com.tr/sql-server-guvenlik-ve-uyumluluk-konusunda-neler-sunuyor.html" target=_blank>buradaki
yazıyıda inceleyebilirsiniz.


Yararlanmanız temennisiyle iyi çalışmalar...



  Ad Soyad
  Yorum