Encryption(şifreleme)- Kolon bazlı mı dosya bazlı mı?
İki yaklaşım aslında birbirinden bir hayli farklı.
Eğer bir uygulama içinde, belirli hassas bilgilerin bellekte bile şifreli olarak bulunmasını ve sadece kullanılacağı zaman belirli bir şifre, anahtar ya da sertifikayla açılarak kullanılmasını istiyorsanız kolon bazlı encryption'ı tercih etmeniz gerekir.
Bu durumda dikkat etmeniz gereken birkaç unsur var:
- Mevcut bir kodda bu düzenlemeyi yapmak istiyorsanız, kodlarda değişiklik yapmanızı gerektirir. Dolayısıyla yeni yapılan projeler için daha uygunken, mevcut bir projede encryption'ı devreye almayı düşünüyorsanız, işgücü ve zaman gereksinimi belirgin şekilde olacaktır.
- Kolonda verinin içeriğinin şifrelenmesi sözkonusu olduğu için satırlardaki bilgiler değişmiş olacaktır. Bu da ilgili kolondaki indeksleri işe yaramaz hale getirir. Performansa bu yönden olumsuz etkisi olabilir.
- Bilginin ne zaman ve ne şartlarda deşifre edilmesi gerektiğine bağlı olarak karmaşık bir sertifika yapısı kurmanız, dış sertifikalarla konuşmanız vb gerekebilir.
Öte yandan belirli bir veriyi saklamak değil de veri dosyalarının genel güvenliğini, bir bakıma fiziksel güvenliğini sağlamak gibi bir ihtiyacınız da olabilir.
Mesela şöyle bir durum düşünün: SQL Server'ın yüklü olduğu makinenin local admin'inin veritabanı içeriğine erişimi olmasını istemiyorsunuz. Kolay gibi geliyor. İlgili kullanıcıya login ve user tanımlamazsınız, hatta belki tanımlayıp login'i deny edersiniz, olur biter sanki... Ama öyle değil!
Local admin olan bir kişi herhangi bir servisi durdurma hakkına da sahip olacaktır. Dolayısıyla bu kişi servisi durdurup veritabanı dosyalarının kopyasını alabilir. Daha sonra kendisinin admin olduğu kurulum olarak mevcut yapıyla versiyon olarak uyumlu bir SQL Server kurulumunda bu dosyaları attach ederek ilgili veritabanına ve tüm içeriğine erişim sağlayabilir. Bu tur güvenlik kaygılarında SQL Server 2008'den itibaren gelen Transparent Data Encryption (TDE) kullanılabilir.
- TDE mevcut kod yapısında değişiklik gerektirmez. Developerların hiçbir müdahalesi olmadan DBA tarafından kısa sürede uygulanabilir.
- Tüm sayfalar diskten okunurken deşifre edilecek, diske yazılırken de şifrelenecektir. Diskte yazılı dosyalar şifreli olur. Ama bunların şifresiyle ilgili sertifika veri dosyası içinde tutulmadığından yedek ya da veri dosyası kopyasının istenmeyen bir yere kopyalanması durumunda verinin şifreli kalması sağlanmış olacaktır.
- İlgili sertifikanın geçerlilik süresi gibi konulara dikkat etmek gerekir. Mesela sistem tarihinde yapılacak bir oynama sertifikanın geçersiz durumda kalmasına sebep olup veriye erişmekte sorun yaşatabilir.
- IO optimizasyonu iyi bir sistemde bu uygulama önemli bir ekstra yük oluşturmayacaktır. Ama IO sorunları yaşayan bir yerde performansa olumsuz etkisi hissedilebilir.
Hangisinin nerede kullanılmasının uygun olduğunu anlattığım bu iki yaklaşımın uygulama detaylarına Books Online'dan erişebilirsiniz.