Настройка TDE: главный ключ, сертификат, резервная копия сертификата и ход шифрования
SQL ServerБезопасностьКоманда
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';
-- Back it up NOW: without cert + private key the backups cannot be restored anywhere
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;
-- Progress and certificate backup date:
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;
-- On the target server (before restore / AG secondary):
-- 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>');Что делает
Создаёт в master главный ключ базы данных и сертификат, делает резервную копию сертификата с закрытым ключом, создаёт ключ шифрования базы данных AES-256 и шифрует файлы данных и журнала в состоянии покоя; показывает ход фонового сканирования шифрования.
Когда использовать
Для требований шифрования данных в состоянии покоя, таких как GDPR/PCI, и против кражи файлов резервных копий и файлов MDF/LDF.
Внимание
Если утеряна резервная копия сертификата + закрытого ключа или её пароль, TDE-база и все её резервные копии НАВСЕГДА становятся нечитаемыми; храните копию в защищённом хранилище вдали от сервера. Включение TDE на любой базе шифрует также tempdb (небольшие затраты CPU на весь сервер). Сканирование шифрования интенсивно по I/O; в 2019+ его можно приостановить через ALTER DATABASE ... SET ENCRYPTION SUSPEND/RESUME. Для AG/log shipping сертификат сначала нужно установить на каждом целевом сервере. TDE не шифрует данные в памяти и в сети.
Связанные материалы
- Настройка SQL Server Audit: входы, изменения разрешений и доступ к таблицам
- Поиск потерянных пользователей и их привязка к логинам (после восстановления / AG)
- Аудит логинов и разрешений: члены sysadmin, рискованные разрешения, слабые пароли
- Создание ledger-таблицы, чтение истории изменений и проверка целостности