Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ibs / LB / ПР / ПР 1 безопасность в СКЛ.doc
Скачиваний:
33
Добавлен:
29.03.2016
Размер:
419.84 Кб
Скачать

Уровни безопасности выполнения кода

Выполнение .NET-кода в ядре СУБД, будучи средством расширения функциональности сервера, представляет собой потенциальную уязвимость. Поэтому при загрузке сборки оно требует указания одного из трех уровней безопасности: SAFE (доступ к внешним ресурсам не допускается), EXTERNAL_ACCESS (допускается доступ к файлам, сетевым ресурсам, реестру, переменным окружения), UNSAFE (доступ ко всем ресурсам, в том числе к неуправляемому коду). Если сборка в процессе работы выйдет за указанные при ее загрузке параметры безопасности, Common Language Runtime сгенерирует исключение, и выполнение кода сборки прекратится.

Некоторые рекомендации

Ниже мы обсудим способы обеспечения безопасности при использовании управляемого кода. В первую очередь, поддержка применения Microsoft .NET Framework в ядре СУБД должна быть включена только в тех случаях, когда использование управляемого кода в приложении действительно необходимо. Кроме того, с целью сохранения стабильности работы самой СУБД управляемому коду следует присваивать минимально необходимый уровень привилегий, а пользовательский код должен выполняться в контексте пользовательской сессии, которая его вызвала, и с привилегиями, необходимыми для данного контекста, — в противном случае из пользовательского кода возможен неавторизованный доступ к данным. Не стоит напоминать, что пользовательский код не должен обращаться к ресурсам за пределами сервера.

Шифрование трафика и данных

Встроенные средства шифрования и поддерживаемые алгоритмы

SQL Server 2005 содержит встроенные средства шифрования, цифровой подписи и верификации данных с помощью симметричных ключей (алгоритмы шифрования RC4, RC2, DES, AES) и асимметричных ключей (алгоритм RSA). Весь трафик между клиентом и сервером по умолчанию шифруется с применением протоколов IP Security (IP SEC) и Secure Sockets Layer (SSL), причем подобная функциональность доступна во всех редакциях продукта. SQL Server 2005 позволяет при необходимости определить политику безопасности, полностью запрещающую обмен незашифрованными данными между клиентом и сервером, что снижает риск утечки данных, полученных путем перехвата трафика.

Протокол SSL поддерживается с помощью интеграции со службами Internet Information Services (IIS) или с помощью сервера сертификатов, поддерживающего стандарт X. 509v3 и входящего в состав SQL Server 2005. Сгенерированные сертификаты не только используются для создания SSL-соединений — их применяет и SQL Service Broker.

Рис. 5. Иерархия методов шифрования в SQL Server

Шифрование данных на уровне колонок

SQL Server 2005 позволяет осуществить защиту данных на уровне колонок за счет шифрования хранимой в них информации. Он поддерживает также шифрование самих хранимых данных, полностью интегрированное с инфраструктурой управления ключами. Для этой цели служат встроенные функции EncryptByCert, DecryptByCert, EncryptByKey, DecryptByKey, EncryptByAssym, DecryptByAssym, позволяющие использовать шифрование с помощью сертификата, симметричного и асимметричного ключей в коде Transact-SQL. Необходимо, тем не менее, помнить о том, что шифрование данных может привести к потере производительности, поэтому при создании решений рекомендуется шифровать только конфиденциальные данные и осуществлять тестирование производительности готового решения.

Осуществляя шифрование на уровне колонок, следует также понимать, что зашифрованные данные нельзя сортировать, фильтровать и индексировать, и независимо от того, каким был тип исходных (незашифрованных) данных, их зашифрованная версия должна храниться как VARBINARY ().