MSSQL Server Always Encrypted

Bu makalede Always Encrypted özelliğine değişmiş olacağız. Bazen hassas olan verilerimizin görünmesini istemeyebiliriz.

Always Encrypted, SQL Server’da hassas verileri şifrelemek için geliştirilmiş bir güvenlik özelliğidir. Temel mantığı, verilerin istemci tarafında şifrelenip sunucuya gönderilmesi ve sunucu tarafında hiçbir zaman şifresinin çözülememesidir. Veri, uygulama/driver seviyesinde şifrelenir. SQL Server’a zaten şifrelenmiş halde gelir. Sunucu şifrelenmiş veriyi depolar ama çözemez.

Always Encrypted özelliğini aktif etmek için aşağıdaki adımları sırasıyla izleyerek sağlayabiliriz.

Encrypted  özelliğini kullanmamız için tablo altında bulunan security bölümünden bu özellik açılabilir.

Column Master Keys  bölümüne sağ tıklayıp New Column Master Key.. diyiyoruz.

Gelen ekranda Master key ismi verdikten sonra oluşturma işlemine geçiyoruz.

Daha sonra Column Encryption Keys bölümünden bir encryption key oluşturulur.

Gelen ekranda Name kısmında bir isim belirtilir aşağı kısımda önceden oluşturulan Column master key seçilmektedir.

Yukarıdaki işlemleri tamamladıktan sonra Herhangi bir tablo üzerinde Ecrypted işlemi yapmış olacağız.

Bu özelliği açmış olduğumuz veritabanında hangi tablo üzerinde şifreleme işlemi yapılacaksa ilgili tabloya sağ tıklayıp Encrypt Columns.. seçilir.

Gelen ekranda şifrelemek istediğimiz kolonu şeçiyoruz. Encryption Type kısmında Deterministic aynı veri her zaman aynı şifreli sonucu üretir. Daha az güvenlidir. Randomized  ise aynı veri farklı şifre sonuçları üretmektedir. Daha çok güvenlidir. İlgili seçimi yaptıktan sonra Next deyip bir sonraki aşamaya geçiyoruz.

Gelen ekranda tekrardan Next işlemi yapılmaktadır.

Gelen ekranda herhangi bir değişiklik yapmadan Next diyiyoruz.

Gelen ekranda özet bölümü gördükten sonra işlemlerimi tamamlıyorum.

Şifreleme işlemi yapıldıktan sonra tablomuza select seçelim şifreleme işlemi uyguladığımız kolonun nasıl değiştiğini gözlemlemiş olalım.

Tablomuza şifreleme uygulanmadan önceki hali aşağıdaki resimde görülmektedir.

Avantajları

  • Sunucu tarafında şifre çözülemez
  • Şifreleme/şifre çözme veritabanı dışında yapılmaktadır.

Dezavantajları ve Sınırlamalar

  • Şifreleme/şifre çözme işlem yükü getirmektedir.
  • Randomized şifrelemede LIKE, BETWEEN yok
  • Sadece belirli veri türleri şifrelenebilir.

Bağlantı sağlayacak son kullanıcının verileri şifreli bir şekilde görmesi istemiyorsa connection string’e Column Encryption Setting= Enabled ifadesi yazması gerekmektedir.

A1 kullanıcısının verileri şifresiz bir şekilde görmektedir.

Uygulama tarafında, Connection String’lere (Dotnet üzerinden) ”ConnStrBuilder.ColumnEncryptionSetting = SqlConnecitonColumnEncryptionSetting.Enabled ” crypto’lu kolonu normal okuyabilirler.

Always Encrypted, özellikle bulut ortamlarında ve yüksek güvenlik gerektiren senaryolarda kritik veri koruması sağlayan güçlü bir güvenlik katmanıdır.

Bu makalede Always Encrypted özelliğini görmüş olduk. Başka makalede görüşmek dileğiyle..

İyilik edin. Şüphesiz Allah, iyilik edenleri sever. Bakara Suresi-195

Author: Yunus YÜCEL

Bir yanıt yazın

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