div.main {margin-left: 20pt; margin-right: 20pt}
SQLBase SafeGarde - СУБД с полной защитой данных
С. А. Большаков
Обеспечение защиты данных выполняется в SQLBase SafeGarde на
административном уровне и не требует перепрограммирования
бизнес-приложений.
Разновидности защиты в SQLBase Safegarde
Для реализации защиты информации в SQLBase Safegarde предложены механизмы:
Использование привилегий пользователей для доступа к таблицам и view БД, и
ограничения возможности делегирования привилегий. Все входящее в стандартный
набор SQL языка и развитых SQL серверов доступно в SQLBase.
Регламентация подключения к консоли сервера и контроль за действиями
пользователей. Для этого вводятся специальные пароли доступа к серверу.
Парольная защита административных действий с сервером. Для этого вводится
специальный пароль доступа к консоли сервера.
Кодирование данных в БД (64 и 128 битное DES) при минимальных потерях
производительности. Задается специальными командами.
Контроль несанкционированного доступа к файлам с помощью защиты страниц БД
специальными кодами. Задается специальными командами.
Привилегии доступа к серверным процедурам (Stored procedure) и функциям.
Задержанный контроль пароля для противодействия взлому и подбору пароля.
Реализация защиты в СУБД по отдельным позициям
Данные механизмы реализованы в SQLBase SafeGarde следующим образом:
Авторизация прав доступа и привилегии доступа к объектам БД и
процедурам:
Введены четыре категории пользователей, права которых различны:
SYSADM - разрешается все
DBA - все, но без паролей, пользователей и уровней
RESOURCE - управление объектами БД и права пользователей для объектов
CONNECT - работа с объектами с заданным доступом
Используются специальные SQL и SQLTalk команды для назначения привилегий и
режимов защиты:
GRANT - команда SQL для назначения привилегий
REVOKE CONNECT FROM <auth-id> - управление доступом
Пароли для сервера и защиты:
Введены специальные команды для установки режимов защиты данных и сервера:
ALTER DBSECURITY - для управления защитой и шифрованием
ALTER PASSWORD <old password> TO <new password>-задание
системного пароля
ALTER EXPORTKEY TO<new password> - для задания пароля копирования
Предусмотрены два раздельных, но взаимосвязанных пароля для защиты:
Server connection passwords - пароль подключения к серверу.
Server security passwords - пароль для управления защитой.
Server connection passwords:
Server connection passwords - устанавливается в SQL.INI (секция сервера) и
служит для выполнения административных операций и получения информации о сервере
БД. Его можно использовать даже для БД, которые не шифруются. Его можно опускать
('*') и желательно не использовать в зашифрованных БД. Роль Server connection
passwords в этом случае будет играть Server security passwords.
Server connection passwords позволяет:
Восстанавливать, сохранять БД и их журналы
Создавать и удалять БД
Инсталлировать и деинсталлировать БД
Контролировать выполнение операций с SQL/API
Подключение к серверу для выполнения административных функций и с паролем для
доступа (пример): SET SERVER SERVER1/SECRET;
Server security passwords
Server security passwords - в дополнение к функциям Server connection
passwords этот пароль позволяет вам шифровать БД и контролировать
несанкционированные изменения страниц БД. Пока не задан Server security
passwords, невозможна шифровка БД и нельзя получить доступ к зашифрованным БД.
Для доступа к зашифрованной БД или установки режима защиты нужно указать ключ
шифрования (database encryption key).
ALTER DBSECURITY - команда установки ключа (команда SQLTalk). Установка - при
работе в WINDOWS выберете <Security - Set Security Password в SQLBase консоли
сервера>. При работе в NetWare нажмите F4. Только после установки Server
security passwords (16 символов максимально) вы получаете возможность
использования и ввода кода для шифрования БД (ключ шифрования - 18 символов
максимально).
В команде в SQLTalk ALTER DBSECURITY задаются: ключ, режимы шифрования
данных, а также режимы защиты страниц. Это делается следующими параметрами:
SET KEY TO 'newkey' - для установки ключа для шифрования (макс. 18 символов)
SET SECURITY TO NONE/LOW/MEDIUM/HIGH - для установки уровня шифрования
данных
SET CHECK TO NONE/CRC/SHA - для установки режима контроль
несанкционированного доступа к страницам БД
Код шифрования будет сформирован на основе двух параметров: ключа шифрования
(database encryption key) и пароля шифрования сервера (Server security
passwords).
Режимы шифрования БД и Уровни защиты данных
С помощью параметра SET SECURITY TO могут быть установлены четыре режима
шифрования данных в БД, которые определяют степень защиты информации. Это
следующие режимы:
ь NONE - нет шифрования в БД, режим шифрования отключен.
LOW - низкий уровень защиты (каждый символ по сложному алгоритму заменяется
другим). В этом режиме обеспечивается самая высокая производительность, но
уровень защиты данных самый низкий.
MEDIUM - обеспечивается более высокая защита (64 битный ключ) и наблюдается
незначительное влияние на производительность СУБД.
HIGH - самый высокий уровень защиты и обеспечивается не очень сильное
влияние на производительность СУБД (128 битный ключ).
В процессе эксплуатации БД предусмотрена возможность миграции от одного
уровня шифрования к другому, вплоть до полного отключения этого режима (NONE).
Эти операции выполняются в административном режиме. Если включена защита, то
выполняется шифрование и журналов транзакций по методу MEDIUM.
Назначение режимов защиты страниц от доступа
БД разделена на страницы размером 1кб. На каждую станицу создается ключ/код,
что позволяет контролировать доступ: невозможно прочитать и при изменении
вручную не записывается в БД. СУБД контролирует несанкционированное изменение
страниц БД. В случае нарушения доступа сервер автоматически закрывается.
Предусмотрены следующие режимы, задаваемые параметром SET CHECK TO команды ALTER
DBSECURITY:
ь NONE - нет защиты, но при защите в БД страницу все равно нельзя изменить!
CRC - 16-bit CRC (Cyclic Redundancy Check) - выполняется защита циклической
контрольной суммой. Сервер снимает БД и закрывается при нарушении доступа.
SHA SHA (Secure Hash Algorithm) выполняется защита специальной сигнатурой,
задаваемой нетривиальной функцией и формируемой для каждой страницы. Сервер
снимает БД и закрывается при нарушении доступа. Более высокая защита от
изменения страниц, чем CRC.
Защита при передаче данных
Для защиты по передаче данных в SQL.INI в клиентской и серверной части
устанавливаются параметр secureapi = {0/1/2} (Определяет режимы: None, Medium,
High). При этом специально не нужно программировать защитные функции. Для работы
с защитой передачи данных нужно всего подключить три DLL: SQLWNTM, SQLNGCI и
любая comdll (например, для TCP/IP - sqlws32).
Задержка при проверке пароля
Для усложнения процесса подборки пароля, защиты от "хакерских атак" и
предотвращения ошибок доступа предусматривается отложенная проверка вводимых
паролей. В тех случаях, когда распознается неправильный пароль или пользователь,
то выполняется задержка ответа на вызов (задержка времени ответа увеличивается в
геометрической прогрессии). Правильное подключение никогда не задерживается.
SQLBase увеличивает время ответа при каждой неправильной (несанкционированной)
попытке доступа, поэтому циклические процедуры подбора паролей пользователя
становятся практически невозможны.
Защита от выполнения функций SQL/API для защиты файлов от доступа
С помощью специальной директивы (fileaccess=0) можно исключить выполнение
функций доступа к файлам БД на уровне "С" API для SQLBase. Этих функций нижнего
уровня несколько: sqlfgt, sqlfpt, sqlmop и sqlmdl. Весь остальной контроль и
защиту данных выполнит сервер SQLBase Safegarde при доступе посредством SQL
команд.
Оценка снижения производительности при защите данных
СУБД SQLBase 7.5 по сравнению с предыдущей версией (7.0) является более
производительным приблизительно в три раза, это достигается за счет
оптимизирующих алгоритмов доступа к данным. При введении уровней защиты для ОС
Windows NT производительность снижается до 99% (MEDIUM и LOW) и до 94% (HIGH)
соответственно. При использовании NetWare снижение более заметно: 93% (MEDIUM и
LOW) и до 91% (HIGH) соответственно. Данные измерения проводились третьей
фирмой. Таким образом, максимальное снижение производительности находится в
пределах 10%, что является очень хорошим показателем для СУБД с защитой
информации, обычно эта величина составляет несколько десятков процентов.
Заключение
В заключение отметим, что мощный и современный SQL сервер с защитой
информации в БД - Centura SQLBase Safecarde несомненно привлечет большое число
пользователей и разработчиков, как это было сделано в Германии при автоматизации
Berliner Deutsche Bank.
|