Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

MSSQL_BACKUP_ENCRYPTION 1С:Предприятие и СУБД

Шифрование резервных копий (Backup Encryption) в SQL Server

Обновлено: 26.08.2026 · Официальная документация ↗

Необходимость соблюдения требований информационной безопасности (ИБ) и защита от утечек данных:

  • Риск кражи файлов бэкапов (.bak) при передаче по открытым каналам связи или краже съемных носителей;
  • Требование стандартов PCI-DSS / 152-ФЗ по обязательному криптографическому шифрованию резервных копий баз персональных данных;
  • Ошибка Cannot find the certificate used for encrypting the backup (Error 33111) при восстановлении на другом сервере.

1. Создание главного ключа базы данных (Master Key) и сертификата

Все операции выполняются в системной базе master:

USE [master];
GO

-- 1. Создание Master Key экземпляра (если он еще не создан)
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'StrongMasterKeyPassword!123';
GO

-- 2. Создание сертификата шифрования резервных копий
CREATE CERTIFICATE [MSSQL_Backup_Cert]
WITH SUBJECT = 'Certificate for Production Database Backup Encryption',
EXPIRY_DATE = '2099-12-31';
GO

2. Обязательный экспорт сертификата и приватного ключа в безопасное место

Без экспортированного сертификата и ключа восстановить зашифрованный бэкап в случае гибели сервера будет невозможно:

BACKUP CERTIFICATE [MSSQL_Backup_Cert]
TO FILE = 'E:\SecureKeys\MSSQL_Backup_Cert.cer'
WITH PRIVATE KEY (
    FILE = 'E:\SecureKeys\MSSQL_Backup_Cert.pvk',
    ENCRYPTION BY PASSWORD = 'StrongPrivateKeyPassword!456'
);
GO

3. Создание зашифрованного бэкапа

Используйте стойкий алгоритм шифрования AES_256:

BACKUP DATABASE [ERP_1C]
TO DISK = N'E:\Backup\ERP_1C_Encrypted.bak'
WITH ENCRYPTION (
    ALGORITHM = AES_256, 
    SERVER CERTIFICATE = [MSSQL_Backup_Cert]
),
COMPRESSION, CHECKSUM, STATS = 10;
GO

4. Импорт сертификата на целевой сервер для восстановления

USE [master];
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'NewServerMasterKeyPassword!123';
GO

CREATE CERTIFICATE [MSSQL_Backup_Cert]
FROM FILE = 'E:\SecureKeys\MSSQL_Backup_Cert.cer'
WITH PRIVATE KEY (
    FILE = 'E:\SecureKeys\MSSQL_Backup_Cert.pvk',
    DECRYPTION BY PASSWORD = 'StrongPrivateKeyPassword!456'
);
GO
💡 Практика специалистов: Храните экспортированные файлы .cer и .pvk в корпоративном менеджере паролей или системе управления секретами (Vault). Потеря приватного ключа делает все созданные зашифрованные архивы абсолютно нечитаемыми.

Частые вопросы (FAQ)

Можно ли зашифровать бэкап в редакции SQL Server Standard?

Да, начиная с SQL Server 2014, шифрование резервных копий (Backup Encryption) поддерживается как в Enterprise, так и в Standard редакции.

Что произойдет, если истечет срок действия сертификата (EXPIRY_DATE)?

Истечение срока действия сертификата не блокирует восстановление уже существующих бэкапов. Однако создание новых бэкапов с просроченным сертификатом будет запрещено.

Влияет ли шифрование бэкапа на возможность его сжатия (Compression)?

При использовании директив WITH ENCRYPTION и WITH COMPRESSION сначала выполняется сжатие данных, а затем шифрование. Это обеспечивает отличный коэффициент сжатия без потери безопасности.

Как проверить, зашифрован ли файл бэкапа без его восстановления?

Выполните команду RESTORE HEADERONLY FROM DISK = N'path\file.bak'. Столбец key_algorithm покажет используемый алгоритм (например, AES_256), а encryptor_thumbprint — отпечаток сертификата.

Полезные материалы
Рекомендуем