DBAtlas · Veritabanı operasyon atlası

TDE kur: master key, sertifika, sertifika yedeği ve şifreleme ilerlemesi

SQL ServerGüvenlik

Komut

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.

DBAtlas'ta aç →

İlgili