TDE kur: master key, sertifika, sertifika yedeği ve şifreleme ilerlemesi
SQL ServerGüvenlikKomut
USE master;
IF NOT EXISTS (SELECT 1 FROM sys.symmetric_keys WHERE name = N'##MS_DatabaseMasterKey##')
CREATE MASTER KEY ENCRYPTION BY PASSWORD = N'<GucluParola_1>';
CREATE CERTIFICATE [TDE_Cert_2026]
WITH SUBJECT = N'TDE certificate', EXPIRY_DATE = '20361231';
-- HEMEN yedekle: sertifika + private key olmadan yedekler hicbir yerde acilmaz
BACKUP CERTIFICATE [TDE_Cert_2026]
TO FILE = N'D:\Keys\TDE_Cert_2026.cer'
WITH PRIVATE KEY (FILE = N'D:\Keys\TDE_Cert_2026.pvk',
ENCRYPTION BY PASSWORD = N'<GucluParola_2>');
USE [Musteri];
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE [TDE_Cert_2026];
ALTER DATABASE [Musteri] SET ENCRYPTION ON;
-- Ilerleme ve sertifika yedek tarihi:
SELECT DB_NAME(dek.database_id) AS db, dek.encryption_state_desc, dek.percent_complete,
dek.encryption_scan_state_desc, c.name AS cert_name, c.expiry_date, c.pvt_key_last_backup_date
FROM sys.dm_database_encryption_keys dek
LEFT JOIN master.sys.certificates c ON c.thumbprint = dek.encryptor_thumbprint;
-- Hedef sunucuda (restore / AG secondary oncesi):
-- CREATE CERTIFICATE [TDE_Cert_2026] FROM FILE = N'D:\Keys\TDE_Cert_2026.cer'
-- WITH PRIVATE KEY (FILE = N'D:\Keys\TDE_Cert_2026.pvk', DECRYPTION BY PASSWORD = N'<GucluParola_2>');Ne yapar?
master'da database master key ve sertifika oluşturur, sertifikayı private key ile dosyaya yedekler, veritabanında AES-256 database encryption key oluşturup data ve log dosyalarını diskte şifreler; arka plan şifreleme taramasının ilerlemesini gösterir.
Ne zaman kullanılır?
KVKK/GDPR/PCI gibi "data at rest" şifreleme gereksiniminde, yedek dosyalarının ve MDF/LDF'lerin çalınma riskine karşı.
Dikkat
Sertifika + private key yedeği ve parolası kaybolursa TDE'li veritabanı ve tüm yedekleri KALICI olarak açılamaz; yedeği sunucudan ayrı, güvenli bir kasada sakla. Bir veritabanında TDE açılınca tempdb de şifrelenir (sunucu genelinde küçük CPU maliyeti). Şifreleme taraması I/O yoğundur; yoğun saatlerde ALTER DATABASE ... SET ENCRYPTION SUSPEND/RESUME (2019+) ile durdurulabilir. AG/log shipping'de sertifika önce tüm hedef sunuculara kurulmalı. TDE bellek/ağ trafiğini şifrelemez.