Введение в дисциплину «Безопасность систем баз данных». Теоретические основы построения реляционных баз данных. Верификация баз данных и проведение аудита в СБД. Распределенные базы данных, страница 56

Для создания сертификата используется Web-интерфейс. Следует обратиться из Internet Explorer на сервер, где работает центр сертификации. Например: http://thecompany.org/certsrv. Крайне желательно делать это с того компьютера, на котором работает ядро SQL Server, т. к. сертификат устанавливается именно на него.

На появившейся странице необходимо выбрать пункт «Запрос сертификата», на следующей странице – щелкнуть по ссылке «Расширенный запрос сертификата», затем – «Создать и выдать запрос к этому ЦС».

Страница «Расширенный запрос сертификата» - самая важная. На ней прописывается доменное имя компьютера, где будет установлен сертификат, и тип сертификата. Для сервера СУБД запрашивается сертификат проверки подлинности сервера: необходимо выбрать соответствующий элемент в выпадающем списке, отвечающем за выбор типа сертификата.

Результатом выполнения перечисленных действий является запрос, который сохраняется на стороне центра сертификации. В дальнейшем администратор центра сертификации, просматривая новые запросы, примет решение: выдавать или не выдавать сертификат. Администратору SQL Server необходимо эпизодически проверять состояние запроса. Делается это также через Web-интерфейс: первоначально загружается стартовая страница службы сертификации (в нашем примере - http://thecompany.org/certsrv), затем выполняется переход по ссылке «Просмотр состояния». Если сертификат уже выдан, его можно будет увидеть в списке на следующей Web-странице. Необходимо установить его на компьютер с помощью кнопки «Установить сертификат».

Привязывание выданного сертификата к SQL Server выполняется с помощью утилиты SQL Server Configuration Manager.

6.2.2. Шифрование информации в базах данных SQL Server 2005

Для шифрования информации внутри БД используется набор команд и криптографических функций Transact-SQL. Шифрование может производиться с помощью сертификатов, симметричных и асимметричных ключей, а также парольной фразы.

Криптографические функции Transact-SQL будем рассматривать на примере следующей задачи. Пусть в БД имеется  таблица dbo.aTable с единственным столбцом aColumn типа nvarchar(100). В это таблицу необходимо помещать некие зашифрованные строки. Рассмотрим решение задачи с применением разных способов шифрования.

Шифрование с использованием сертификатов

Сертификат, как объект БД, создается при помощи команды CREATE CERTIFICATE. В качестве параметров указываются имя сертификата, пароль (используется в дальнейшем при выполнении криптографических функций), цель выдачи сертификата и дата начала его действия в системе. Сам вызов в простейшем случае может выглядеть так:

CREATE CERTIFICATE SelfSignedCert1

            ENCRYPTION BY PASSWORD = ‘P@ssw0rd’

            WITH SUBJECT = ‘Проверка шифрования’,

            START_DATE = ‘01/01/2009’

В данном случае создается самоподписанный сертификат. Существует вариант команды CREATE CERTIFICATE для загрузки в БД сертификата, выданного внешним удостоверяющим центром. Например:

CREATE CERTIFICATE ExternalCert1

            FROM FILE =’D:\Path\MyCert.cer’

            WITH PRIVATE KEY (FILE = ’D:\Path\MyCertKey.pvk’,

                       DECRYPTION BY PASSWORD = ‘P@ssw0rd’)

Опцию DECRYPTION BY PASSWORD не следует путать с ENCRYPTION BY PASSWORD (в первом варианте): она позволяет указать пароль, который был использован ранее для защиты закрытого ключа данного сертификата.

Каждому сертификату в БД ставится в соответствие уникальный идентификатор. Для его получения используется функция Cert_ID с единственным параметром – именем сертификата, заключенным в апострофы. Именно идентификатор сертификата используется при шифровании и дешифровании данных.

Собственно за шифрование данных отвечает функция EncryptByCert:

INSERT INTO aTable VALUES(EncryptByCert(Cert_ID(‘SelfSignedCert1’),

                                                                       N’Секретные данные’))

Как видно из примера, первым параметром функции является идентификатор сертификата, вторым – шифруемый текст. Функция возвращает значение типа varbinary.