SQL Server Şifrelemesinin Açıklaması: TDE, Sütun Düzeyinde Şifreleme ve Daha Fazlası


Veri koruması, kuruluşunuzun GDPR gibi düzenleyici uyumluluk standartlarıyla uyumlu olmasını sağlamak ve müşterilerinizin ve iş ortaklarınızın beklentilerini karşılamak açısından kritik öneme sahiptir. Veri ihlalleri yalnızca büyük para cezalarına yol açmakla kalmaz, aynı zamanda itibarın zarar görmesi de aynı derecede büyük olabilir. Yardımcı olmak için Microsoft SQL Server, verileri korumak için 5 farklı şifreleme türünü destekler. Bu makalede bunların her biri ve nerede kullanılması gerektiği açıklanmaktadır.

SSL Aktarım Şifrelemesi

Tarayıcı ile sunucu arasındaki trafiği güvence altına alan web siteleri gibi, SQL Server da sunucu örneği ile istemci uygulaması arasında dolaşırken trafiği şifrelemek için Güvenli Yuva Katmanı'nı (SSL) kullanacak şekilde yapılandırılabilir. Ayrıca istemci, sunucunun sertifikasını kullanarak sunucunun kimliğini doğrulayabilir. SSL yalnızca verileri ağ üzerinde dolaşırken korur, ancak diğer SQL Server şifreleme biçimlerinin çoğundan farklı olarak SSL, SQL Server'ın desteklenen tüm sürümlerinde ve tüm sürümlerinde mevcuttur.

SSL'yi etkinleştirmeden önce SQL Server'a bir sertifika yüklemeniz gerekir. Bunu yapmanın en iyi yolu, kendi kurumsal sertifika yetkilinizden (CA) bir sertifika istemektir. Windows Server CA olarak yapılandırılabilir ve istemcileri, verdiği sertifikalara güvenecek şekilde ayarlayabilirsiniz. Alternatif olarak, kendinden imzalı sertifikalar kullanmak da mümkündür; ancak bu, test ortamları için en uygunudur.

SQL Server Şeffaf Veri Şifreleme (TDE)

SQL Server'daki Şeffaf Veri Şifreleme (TDE), diskteki veritabanı verilerini ve günlük dosyalarını şifreleyerek atıl durumdaki verileri korur. Müşterinin mevcut uygulamaları için şeffaf bir şekilde çalışır, dolayısıyla TDE etkinleştirildiğinde bunların değiştirilmesi gerekmez. TDE, sayfa düzeyinde gerçek zamanlı şifreleme kullanır. Sayfalar, verilerinizin ve günlük dosyalarınızın boyutu artırılmadan diske yazılmadan önce şifrelenir ve sayfalar belleğe okunduğunda şifresi çözülür. TDE yalnızca SQL Server'ın Enterprise sürümlerinde mevcuttur. Ayrıca Azure SQL Veritabanı, Azure SQL Veri Ambarı ve Paralel Veri Ambarı için de çalışır.

TDE şifrelemesi hiyerarşik bir yapıya sahiptir; hiyerarşinin en üstünde Windows Veri Koruma API'si (DPAPI) bulunur ve hizmet ana anahtarını (SMK) şifrelemek için kullanılır. Kimlik bilgilerini, bağlantılı sunucu parolalarını ve farklı veritabanlarında bulunan veritabanı ana anahtarlarını (DMK'ler) şifrelemek için SMK'yı kullanabilirsiniz. SQL DMK, sertifikaların özel anahtarlarını ve veritabanlarında depolanan asimetrik anahtarları koruyan simetrik bir anahtardır.

SQL Server, TDE ile kullanılmak üzere kendinden imzalı sertifikalar oluşturabilir veya bir CA'dan sertifika talep edebilirsiniz (bu daha yaygın bir yaklaşımdır). TDE'yi etkinleştirmeye karar verirseniz sertifikayı ve sertifikayla ilişkili özel anahtarı yedeklemeniz gerekir. Veritabanını farklı bir SQL Server'a geri yüklemeniz veya eklemeniz gerekecektir. TDE'yi başka bir SQL Server veritabanında etkinleştirirseniz tempdb sistem veritabanı da şifrelenir. TDE'yi devre dışı bırakırsanız, işlem günlüğünün bazı bölümleri siz tam yedekleme gerçekleştirene kadar şifrelenmiş kalabileceğinden sertifikayı ve özel anahtarı saklamanız gerekir.

TDE ayrıca, ana veritabanında depolanan bir sertifika kullanılarak korunan simetrik bir anahtar veya aşağıdaki gibi Genişletilebilir Anahtar Yönetimi (EKM) kullanan bir hizmet tarafından korunan bir asimetrik anahtar olan bir veritabanı şifreleme anahtarı (DEK) gerektirir. Microsoft Azure Anahtar Kasası. TDE'nin etkin olduğu veritabanlarının yedekleme dosyaları DEK kullanılarak şifrelenir, dolayısıyla geri yükleme işlemleri sırasında DEK'i koruyan sertifikanın mevcut olması gerekir.

Simetrik anahtarlar verileri şifrelemek ve şifresini çözmek için aynı parolayı kullanır. Asimetrik anahtarlar, verileri şifrelemek için bir parola (genel anahtar) ve verilerin şifresini çözmek için farklı bir parola (özel anahtar) kullanır. Sertifika oluşturmak için CREATE CERTIFICATE komutunu, veritabanı şifreleme anahtarları oluşturmak için CREATE SYMMETRIC KEY ve CREATE ASYMMETRIC KEY Transact-SQL komutlarını kullanabilirsiniz.

Yedekleme Şifreleme

Yedekleme Şifreleme, TDE gibi çalışır ancak etkin veriler ve günlük dosyaları yerine SQL yedeklemelerini şifreler. Yedekleme Şifreleme, SQL Server 2014 ve sonrasında mevcuttur. AES 128, AES 192, AES 256 veya Üçlü DES şifrelemesini belirtebilir ve EKM'de saklanan bir sertifikayı veya asimetrik anahtarı kullanabilirsiniz. Ayrıca, farklı sertifikalar veya anahtarlar kullanmanız gerekse de, TDE ve Yedek Şifrelemeyi aynı anda etkinleştirmek mümkündür.

TDE'de olduğu gibi, Yedek Şifrelemeyi etkinleştirirseniz sertifikayı veya anahtarı da yedeklemeniz gerekir. Anahtar veya sertifika olmadan yedekleme dosyası verileri geri yüklemek için kullanılamaz. Yedeklemeler, Microsoft Azure'a SQL Server Yönetilen Yedekleme kullanıldığında da şifrelenebilir.

Yedeklemeleri şifrelemek için bir sertifika kullanıyorsanız, verileri geri yüklerken orijinal sertifikaya sahip olmanız gerektiğini belirtmekte fayda var. Bu, sertifikanın, yedeklemenin oluşturulduğu zamanki parmak izinin aynısına sahip olması gerektiği anlamına gelir. Sertifikaların yenilenmesi veya herhangi bir şekilde değiştirilmesi parmak izinin değişmesine neden olabilir.

Sütun/Hücre Düzeyinde Şifreleme

SQL Server'ın tüm sürümlerinde mevcut olan hücre düzeyinde şifreleme, hassas veriler içeren sütunlarda etkinleştirilebilir. Veriler diskte şifrelenir ve şifresini çözmek için DECRYPTBYKEY işlevi kullanılıncaya kadar bellekte şifrelenmiş olarak kalır. Bu nedenle, SQL verileri şifrelenmiş olsa da, şifresini çözmek için kullanıcı bağlamındaki bir işlevi kullanmanın ötesinde güvenli değildir. Ayrıca, verilerin şifresini çözmek için bir işleve ihtiyaç duyulduğundan, istemci uygulamalarının hücre düzeyinde şifrelemeyle çalışacak şekilde değiştirilmesi gerekir.

Şifreleme Anahtarı Yönetimi

TDE'de olduğu gibi, hücre düzeyinde şifrelemeyi kullanmadan önce bir ana anahtar (DMK) oluşturmanız gerekir. Hücre düzeyinde şifrelemeyi kullanarak bilgileri şifrelemek için dört seçenek vardır:

  • Verileri şifrelemek ve şifresini çözmek için bir parola kullanabilirsiniz ancak saklı yordamları ve işlevleri şifrelemelisiniz; aksi takdirde parolaya meta verilerden erişilebilir.
  • Asimetrik anahtarlar güçlü güvenlik sağlar ancak performansı etkileyebilir.
  • Simetrik anahtarlar genellikle yeterince güçlüdür ve güvenlik ile performans arasında iyi bir denge sağlar.
  • Sertifikalar ayrıca güvenlik ve performans arasında iyi bir denge sağlar ve bir veritabanı kullanıcısıyla ilişkilendirilebilir.

Daima Şifreli

Always Encrypted, istemci uygulamalarındaki hassas verileri, şifreleme anahtarlarını veritabanı motoruna açıklamadan şifreler ve veri sahipleri ile veri yöneticileri arasında ayrım sağlar. Örneğin, Always Encrypted etkinleştirildiğinde veritabanı yöneticilerinizin hassas verileri okuyamayacağından emin olabilirsiniz. Adından da anlaşılacağı gibi veriler, kullanımda değilken ve Azure gibi üçüncü taraf bir sistemde kullanılıyorsa şifrelenir.

Always Encrypted, ayrı ayrı veritabanı sütunları için yapılandırılabilir. İki tür anahtar kullanılır: sütun şifreleme anahtarları ve sütun ana anahtarları. Sütun şifreleme anahtarları, bir sütundaki verileri korur ve sütun ana anahtarları, bir veya daha fazla sütun şifreleme anahtarını şifreleyen 'anahtar koruma anahtarlarıdır'. Sütun ana anahtarları, Azure Key Vault gibi harici güvenilir anahtar depolarında depolanır.

Şifreleme işlemi istemci uygulamaları için şeffaftır ancak istemci bilgisayarlarda özel bir sürücü gerektirir. Always Encrypted, SQL Server 2016 ve sonrasında mevcuttur, ancak yalnızca Enterprise sürümlerinde mevcuttur. Ekstra istemci tarafı gereksinimleri nedeniyle Always Encrypted, veri sahipleri ile yöneticilerin ayrılmasının birincil gereksinim olduğu durumlar için en uygun çözümdür.

İlgili makaleler