В данном материале мы рассмотрим работы TDE шифрования на базе MS SQL 2022.
Основная цель статьи:
Используя тест ADPEX в демо базе 1с проверить работу технологии TDE.
Дополнительная цель статьи:
-
Как выполнить подбор оборудования для использования технологии TDE.
Глава 1. Тестовый стенд.
Часть 1. Аппаратная часть.
Аппаратная часть:
Supermicro X9DRT-P.*
2 x Intel Xeon E5-2667v2 3,3 - 4.0 GHz, each 8 Core.
ОЗУ 512 ГБ DDR3.
-
Хранилище RAID 10, Intel DC S4610 1.92 Tb.
* В рамках исследования мы сознательно взяли устаревшую платформу, чтобы увидеть разницу в работе ПО, без поправки на “быстрое” железо.
Тесты дисковой подсистемы:Тест проводился с использованием crystal disk mark. Параметры “Nvme SSD” файлом 32 ГБ.
Часть 2. Программная часть.
Платформа 1с предприятие 8.3.22.2283.
-
Конфигурации:
№
Конфигурация
Редакция
Объем базы
Примечание
1.
1С:ERP Управление предприятием 2. Демо база.
2.5.8.179.
9.2 Гб.
Демо база с сайта 1с.
В рамках тестирования мы используем стандартный шаблон “полный” на 33 пользователя. Данный шаблон проходит 4 итерации, начиная с 40 пользователей на первой и 120 пользователей на последней.
Пример окна “Настройки запуска”.Часть 3. Виртуальные мощности.
Аппаратный Сервер приложений 1с и баз данных - WIndows Server 2019 Standart.
Глава 2. Общая Методика тестирования.
В рамках данной статьи мы применяем методику анализа используя абсолютные и относительные значения погрешности.
Описание методики определения погрешностей:
Определяются идеальные условия испытаний. В нашем случае это
аппаратный сервер с ролями сервера 1С и MS SQL 2022, с активным режимом TCP.-
Производим расчет абсолютной погрешности:
Проводим замер целевых значений:Проводим замер тестов АПДЕКС используя связки
1C + MsSQL 2022 на аппаратном сервере.
Конфигурация теста Апдекс - тест “полный”, число пользователей 40\80\120.Замеры проводим три раза, результаты вносим в таблицу.
Примечание:
Тест 1C: КИП (АПДЕКС).
В основе методики АПДЕКС лежит набор инструментов 1с КИП. В данном случае использовался весь функционал методологии. Используются стандартная демонстрационная база ERP с сайта 1с.Стандартная методология АПДЕКС использует прогрессивную шкалу от 0 до 1, где 1 - это замечательный результат, а 0 - неудовлетворительный. Требуется указать целевое значение параметра производительности той или иной операции, создать сценарии и запустить тест.
Глава 3. Оптимизации.
Часть 1. Оптимизации аппаратной части.
Перед работой с носителем были произведены твики биоса. В данном случае необходимо было вручную выставить или режим “Max Performance” в расширенных настройках CPU или полностью отключить энергосбережение в режиме “Custom”.
Примечание:
-
Стандартный режим производительности. Получаем турбобуст до 4.0 ГЦ при минимальных нагрузках.
3600 MHz (5 и больше ядер)
3700 MHz (4 ядра)
3800 MHz (3 ядра)
3900 MHz (2 ядра)
-
4000 MHz (1 ядро)
Или выставить настройки на скриншоте ниже:Примечание:
Данные настройки применимы только к материнским платам серии X9. В других случаях настройки индивидуальны.
При применении режима Custom по итогу мы получим фиксированную частоту в 3.3 Ггц на всех ядрах в постоянном режиме.
Часть 2. Оптимизации программной части. Сервер 1С.
Выставляем параметры электропитания Windows в положение “Высокая производительность”.
Часть 3. Оптимизации программной части. MS SQL сервер.
Используем нашу статью для установки MS SQL 2022.
Используем материалы с сайта ИТС 1С для тюнинга БД.
Данных инструкций будет достаточно для базовой настройки SQL сервера.
Часть 4. Включение “прозрачного” шифрования Transparent Data Encryption (TDE).
Описание технологии.
Функция прозрачного шифрования данных выполняет шифрование и дешифрование ввода-вывода в реальном времени для файлов данных и журналов. Шифрование использует ключ шифрования базы данных (DEK). Загрузочная запись базы данных хранит ключ для доступности во время восстановления. DEK — это симметричный ключ, защищенный сертификатом, который хранится в базе данных сервера master или асимметричным ключом, защищенным модулем EKM.
Описание технологии TDE хорошо описано в официальном блоге компании Microsoft. Мы дадим комментарий некоторым особенностям этой инструкции.
https://learn.microsoft.com/ru-ru/sql/relational-databases/security/encryption/transparent-data-encryption?view=sql-server-ver16
Шифрование файлов базы данных выполняется на уровне страницы. Страницы в зашифрованной базе данных шифруются до записи на диск и дешифруются при чтении в память.
Если провести анализ данной цитаты, то становится понятно, что, теоретически, если злоумышленник получит права администратора к активному серверу, то проведя копирование данных базы непосредственно из оперативной памяти возможно получить незашифрованные данные.
Важно!!!
То есть, данный тип шифрования подходит исключительно для задач, когда требуется предотвратить физический несанкционированный доступ к устройству, например, когда сервер изъят.
И хотя в блоге компании Microsoft прямо не упоминаются потери производительности при включении TDE, мы нашли некоторые упоминания, что потеря составляет от 3 до 5 процентов, а в некоторых исследованиях до 28%. Проверим эту теорию нагрузочными испытаниями.
Если говорить про детали теста, то в рамках нашего исследования мы не будем генерировать новые таблицы и ввод новых данных, основа исследования это операции проведения, перепроведения и чтения из БД, что удовлетворяет принципам шифрования TDE.
Включение шифрования:
шаг 1 - создание мастер ключа.
USE master
go
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'пароль'
шаг 2 - создание сертификата.
CREATE CERTIFICATE DEK_EncCert WITH SUBJECT = 'DEK Encryption Certificate'
шаг 3 - создание бэкапа сертификата и ключа.
BACKUP CERTIFICATE DEK_EncCert
TO FILE ='C:\certs\DEK_EncCert.cert'
WITH PRIVATE KEY(
FILE = 'C:\certs\DEK_EncCert.prvk',
ENCRYPTION BY PASSWORD = 'пароль'
);
BACKUP MASTER KEY TO
FILE = 'C:\certs\master_key.bak'
ENCRYPTION BY PASSWORD = 'пароль'
шаг 4 - создание в БД Database Encryption Key (DEK).
USE MySecretDB
go
CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE DEK_EncCert
шаг 5 - включение шифрования для базы.
ALTER DATABASE ERP SET ENCRYPTION ON
шаг 6 - Проверка статуса шифрования.
SELECT DB_NAME(database_id), encryption_state, percent_complete FROM sys.dm_database_encryption_keys
После выполнения последней команды мы получили таблицу вида:
Основные статусы данного меню::
0 - Database Encryption Key (DEK) не создан.
1 - Database Encryption Key (DEK) создан, но база данных не зашифрована.
2 - Выполняется первоначальное шифрование.
3 - База данных зашифрована.
4 - Идет смена ключа.
5 - Идет расшифровка.
На этом процесс активации TDE завершен.
Глава 4. Тестирование.
Часть 1. Тест Апдекс.
-
Значение апдекс на эталонном сервере.
Название
Значение апдекс на эталонном сервере
40(пользователи)
80
120
Тест определения погрешности 1
0,831
0,794
0,623
Тест определения погрешности 2
0,84
0,788
0,618
Тест определения погрешности 3
0.842
0.798
0.624
Среднее значение
0.840
0.79
0.62
Относительная погрешность
1.7%
1.5%
1.2%
Абсолютная погрешность
0.01
0.01
0.01
-
Значения Апдекс при включении шифрования.
Название
Значения Апдекс виртуальных машин
40(пользователи)
80
120
TDE включено
0,828
0,77
0,629
-
Процентное отношение производительности Апдекс к эталонным значениям аппаратного сервера с учетом погрешности (меньше лучше).
Название
Значения Апдекс виртуальных машин
40(пользователи)
80
120
Данные по отношению к эталонным значениям
2%
в пределах погрешности
в пределах погрешности
Выводы:
В рамках нашего тестирования значения при активации шифрования и деактивации практически не изменились.
Часть 2. Тест Апдекс.Дополнительные испытания.
В 1 части нашего исследования мы не заметили никаких весомых изменений в производительности нашего тестового стенда. Потому провели несколько дополнительных испытаний.
MS SQL сервер стремится загрузить всю базу в оперативную память, а принцип работы TDE подразумевает, что данные в памяти уже расшифрованы. Зная, что наш объем базы составляет 9,2 ГБ мы уменьшили ОЗУ, выделяемую под SQL сервер до 3х ГБ, пытаясь “заставить” сервер баз данных активнее работать с операциями чтения\записи.
Детальные данные отчета публиковать не будем, ввиду того, что отличий от первой части теста, кроме увеличения времени выполнения операции мы не заметили. Удивительного ничего нет, зная, что под SQL выделено 3гб ОЗУ.
Что интересно, на 40 и 80 пользователей, база MS SQL корректно выполнила тест на столь малом объеме ОЗУ.
Результаты теста ухудшились в сторону более долгого времени выполнения, но повышенную нагрузку на CPU мы не заметили. Время жизни страницы увеличилось, процент попадания в кеш уменьшился, но не до критических значений.
Глава 5. Выводы.
Основная тема статьи.
-
В рамках нашего тестирования мы наглядно увидели, что технология TDE не оказывает влияния на производительность системы в идеальных условиях. Мы думаем это связано с рядом факторов:
База данных полностью была выгружена в ОЗУ. А как мы знаем, в ОЗУ база не шифруется.
Мы имели достаточный запас мощности по CPU и дисковой подсистеме. Пики загрузки CPU были от 40 до 60%.
Много кэшированных данных, долгое время жизни страницы. В среднестатистической базе 1с , в целом, ситуация похожая. Львиная доля операций в 1с - это типовые операции, которые регулярно попадают в кеш.
В демо базе от 1С нет сверхтяжелых и долгих запросов, с которыми бы не справился наш демо стенд.
В сети есть довольно старые исследования данной технологии, в том числе и зарубежные, в которых наглядно видна довольно серьезная потеря производительности. Эта потеря достигалась за счет тяжелых запросов на операции записи и чтения, вплоть до сотен тысяч строк единовременно.
Внимательный читатель может задать вопрос - Почему вы так же не сделали?
Отвечаем - А зачем? Да, действительно, при ручном создании тяжелых запросов мы точно увидим рост нагрузки CPU и возможно увеличение время чтения\записи с дискового массива. Но приближает ли нас этот тест к реальным показателям работы? Мы думаем, что нет. Потому и выбрали в качестве испытуемого демо базу от 1с, а не полностью синтетические тесты.
Дополнительные цели статьи
-
Для того что бы компании выбрать аппаратную часть под TDE шифрование мы бы предложили несколько вариантов:
Создать тест ADPDEX под свои бизнес процессы. Это не быстрый процесс, но самый надежный.
Если база приближена к типовой и вы уверены, что проблемы с кодом если и есть, то минимальны, то вполне возможно провести активацию шифрования на продакшн системе ( с принятием рисков конечно же). Сам процесс шифрования базы 10 гб на нашем железе занял не более 3 минут. Расшифровка также около 3х минут. Главное не потерять ключ и сертификат.
-
-
Sergey-S-Kovalev
У вас странный подход к тестам. Закидали железом мелкую базу и пытаетесь что то тестировать на старой платформе. Конечно у вас будет "незначительная" разница.
Сделайте виртуальную машину с ограниченными ресурсами и зарезанными IOPS на дисках и протестируйте влияние шифрования. Такой подход позволит повторить тест автоматизированно, т.е. идентично, воспроизводимо, многократно, и найти все параметры влияющие на производительность тестируемой базы.