Как установить и настроить автоматическое шифрование в SQL Server 2000 на кластере.

Стараясь обеспечить максимальную безопасность пользовательских данных, разработчики Microsoft ввели в SQL Server 2000 несколько новых функций. Одна из таких функций — поддержка автоматического шифрования сетевого трафика между клиентами и сервером на основе протокола Secure Sockets Layer (SSL). Из-за шифрования происходит небольшой спад производительности, поскольку оно требует дополнительных действий на обоих концах сетевого соединения. Однако для пользователей, придающих особое значение безопасности своих сетей, преимущества шифрования перевешивают некоторое ухудшение производительности. Особенно полезно шифрование в том случае, когда клиенты соединены с SQL Server через Internet.

Шифрование SSL обрело статус промышленного стандарта — этот тип шифрования используется большинством компаний для Internet-приложений и приложений электронной коммерции. Два уровня шифрования SSL, 40-разрядное и 128-разрядное, представляют различные типы защиты данных. SQL Server 2000 поддерживает оба уровня. Ввести в действие шифрование SSL можно, только получив действительный ключ (или сертификат) от доверенного центра сертификатов (Certificate Authority, CA). После того как на компьютер с SQL Server 2000 установлен сертификат, у пользователя появляется возможность настроить SQL Server на усиленное шифрование между клиентами и сервером. Windows 2000 выпускается с собственным центром сертификатов CA, который можно использовать в работе приложений внутри сети предприятия. Для Internet-приложений большинство компаний использует CA от независимых поставщиков. Дополнительную информацию о CA можно найти во врезке «CA — основные понятия».

Шифрование SSL отличается от шифрования Multiprotocol Net-Library, которое реализовано в версиях, предшествующих SQL Server 2000. Шифрование SSL поддерживает все сетевые библиотеки и протоколы, включая самые популярные типы — TCP/IP и Named Pipes (в кластерных средах доступны только эти две сетевые библиотеки). Кроме того, шифрование SSL применимо для множественных экземпляров SQL Server, тогда как шифрование Multiprotocol Net-Library, которое использует API-интерфейс RPC-механизма вызова шифрования в Windows, распознает только устанавливаемый по умолчанию экземпляр SQL Server 2000. Шифрование SSL может запрашиваться либо клиентом, либо сервером (но не тем и другим одновременно). Шифрование по запросу клиента означает, что все данные, предназначенные для отправки с этого клиента на все подключенные серверы, будут шифроваться. Шифрование по запросу сервера означает, что все данные, предназначенные для отправки на сервер, будут шифроваться, а затем расшифровываться на сервере.

Выполнить настройку шифрования на кластере значительно сложнее, чем на одиночном сервере. Узнать, как настроить шифрование SSL на отдельной машине, несложно, а вот найти информацию о настройке шифрования SSL на кластере труднее. К сожалению, в библиотеке Books Online (BOL) по SQL Server содержится мало сведений о том, как конфигурировать шифрование SSL, и лишь вскользь упоминается о требованиях к настройке для кластерной среды. За пределами BOL также придется искать информацию о том, как правильно настроить сертификаты для аутентификации. С другой стороны, при наличии четких инструкций процедура настройки шифрования SSL проста и не требует изобретательности. Ниже я подробно расскажу о том, как можно было бы настроить шифрование SSL на кластере в некой компании IDM.

Условия

Пусть, к примеру, наша вымышленная компания имеет обычную кластерную среду. Говоря в этой статье о кластере, я имею в виду два или четыре независимых компьютера, работающих как одна система. IDM — промышленное предприятие, поддерживающее связь со своими региональными отделами продаж по всей стране и использующее сервер idmsql в качестве центра данных для своих приложений. Подключение клиентов к серверу с целью получения новой информации или отправки информации на сервер idmsql осуществляется через Internet по протоколу SSL. В этой ситуации удобнее запрашивать шифрование (и управлять им) на сервере.

Чтобы создать кластер, в компании должна быть установлена служба Microsoft Cluster на каждом компьютере или узле. Все узлы должы работать или под Windows 2000 Datacenter Server, или под Windows 2000 Advanced Server, или под Windows NT 4.0 Enterprise Edition. Если требуется добиться высокого уровня доступности данных, то эффективное решение этой задачи обеспечит именно кластерная среда. При сбое кластеры в состоянии сократить время простоя системы до 1-2 мин. Информацию о конфигурации серверных кластеров можно найти в разделе «Creating a Failover Cluster» в BOL по SQL Server 2000.

Пусть в IDM имеется два хост-компьютера с базами данных SQL Server: idmdb1 и idmdb2. Оба компьютера работают под Windows 2000 AS Service Pack 2 (SP2), и у них одинаковая конфигурация аппаратного обеспечения. Они входят в состав домена tiga.tld и являются членами кластера MyCluster. Служба Cluster установлена на обеих машинах. Неименованный по умолчанию виртуальный экземпляр SQL Server 2000 Enterprise Edition устанавливается на MyCluster с названием idmsql. Виртуальный сервер — это параметр по умолчанию при установке SQL Server на кластере. Служба MSSQLServer запускается от имени учетной записи tigasqlsvc, которая входит в пользовательскую группу Administrators на каждом узле. Выделенный сервер сертификатов (CA) с именем TIGA2 установлен в домене tiga на PDC tiga-dc-01.

Настройка SSL

Настройку шифрования SSL по запросу сервера в кластеризованной среде мы выполним за семь шагов. Концепции процедуры настройки шифрования SSL для кластеризованного SQL Server и некластеризованного SQL Server в целом совпадают, а имеющиеся незначительные отличия станут ясны по ходу повествования.

Шаг 1: регистрация. При регистрации в системе на узле idmdb1 нужно указать пользовательское имя tigasqlsvc. Затем необходимо ввести пароль для регистрации в системе.

Шаг 2:запрос сертификата на полное имя виртуального сервера. Для того чтобы включить шифрование SSL, необходимо обеспечить сервер и клиентов цифровым сертификатом от доверенного корневого CA. В IDM имя виртуального сервера idmsql.tiga.tld. Чтобы создать запрос на получение сертификата, следует запустить Internet Explorer (IE) и ввести в поле адресов URL сайта выдачи сертификатов (CA) домена. В IDM используется адрес http://tiga-dc-01/certsrv. Certsrv.exe — это программа Windows, запускающая службу Microsoft Certificate Service. На Экране 1 показана первая страница сайта. Нужно выбрать параметр Request a certificate («Запросить сертификат») и щелкнуть Next. На следующей странице следует выбрать параметр Advanced request и снова щелкнуть Next. На странице Advanced Certificate Requests, изображенной на Экране 2, выбираем параметр по умолчанию Submit a certificate request to this CA using a form («При создании запроса на сертификат к этому CA использовать форму») и нажимаем Next. На следующей странице в текстовом поле Name следует ввести полное сетевое имя виртуального сервера SQL Server (не забывая, что это не имя кластерного узла, в котором выполнялась регистрация в системе). На Экране 3 показано имя SQL Server компании IDM — idmsql.tiga.tld. Необходимо убедиться, что в поле Intended Purpose выбран параметр Client Authentication Certificate. Если используется внутренний сервер сертификатов, то в поле Intended Purpose следует выбрать Web Server для вывода экранной формы и указания полного сетевого имени SQL Server.

Окно Advanced Certificate Requests также позволяет указать различные параметры шифрования и сертификации, такие, как провайдер шифрования и размер кода. Для компании IDM мы сохраняем все значения по умолчанию. Завершив выбор параметров, нужно щелкнуть Submit, что будет означать отправку запроса на сервер сертификатов. Затем система выдаст уведомление, что CA получил запрос на сертификат и что следует подождать, пока сетевой администратор не пришлет сертификат. Тем временем можно обратиться к администратору и попросить его заняться запросом.

Следующий шаг не обязателен для выполнения, если имеется внутренний сервер сертификатов, поскольку в этом случае запрос на сертификат обрабатывается автоматически. Windows связывает все запросы на сертификаты с выделенным CA, а IDM как раз имеет выделенный CA.

Шаг 3: обработка запроса и выдача сертификата. Некоторые администраторы баз данных обладают правами управления CA, особенно если CA установлен на основном контроллере PDC. Как правило, приходится ждать, пока сетевой администратор обрабатывает запрос. Но если у пользователя имеются полномочия сетевого администратора, он может обработать запрос на сертификат самостоятельно. Сначала нужно зарегистрироваться на том сервере, где установлен CA и открыть Start, Programs, Administrative Tools, Certification Authority. В оснастке Certification Authority консоли Microsoft Management Console (MMC) следует раскрыть узел Pending Requests («Отложенные запросы»), найти запрос, который только что был отправлен, щелкнуть правой кнопкой по запросу и выбрать All Tasks, Issue, как показано на Экране 4. Чтобы убедиться в успешности операции, нужно раскрыть узел Issued Certificates («Выданные сертификаты») и отыскать свой сертификат.

Шаг 4: установка сертификата. После подтверждения о выдаче сертификата от сетевого администратора или самостоятельного получения сертификата, нужно вернуться на Web-страницу CA (http://tiga-dc-01/certsrv). В окне приветствия, изображенном на Экране 1, следует выбрать параметр Check on a pending certificate и щелкнуть Next. На следующей странице необходимо выбрать в списке свой сертификат и нажать Next. В окне Certificate Issued (которое появится почти сразу после выполнения шага 2, если имеется внутренний CA) нужно щелкнуть параметр Install this certificate. Следующая страница будет содержать подтверждение, что сертификат успешно установлен.

Шаг 5: проверка сертификата. Для проверки корректной установки сертификата на компьютере требуется щелкнуть правой кнопкой по значку IE на настольном компьютере и выбрать Properties. Затем следует перейти на вкладку Content и щелкнуть Certificates. Если сертификат, который только что был установлен, есть в списке, можно включить шифрование SSL. Необходимо убедиться, что в поле Issued To указан полный сетевой адрес SQL Server (idmsql.tiga.tld — в этом случае). Нужно выбрать свой сертификат и щелкнуть View. В нижней части окна должно быть сказано, что статус этого сертификата «OK» (см. Экран 5).

Экран 5. Проверка полного имени и статуса сертификата.

Если используется некластеризованный SQL Server, то при выдаче сертификата серверу указывается его полное доменное имя. В этом примере, в компании IDM, полное имя компьютера было бы idmdb1.tiga.tld. Остальная часть процедуры та же. Работая с SQL Server на кластере, следует повторить для каждого узла шаги с 1-го по 5-й.

Шаг 6: запрос на шифрование SSL для сервера. После успешной установки сертификатов на все узлы необходимо перейти на тот узел, который в данный момент владеет службой SQL Server, и выбрать Start, Programs, Microsoft SQL Server, Server Network Utility. Выбрав параметр Force protocol encryption, как показано на Экране 6, нужно щелкнуть OK. Эта функция включает шифрование всех входящих данных.

Шаг 7: перезапуск службы SQL Server для ввода шифрования в действие. Чтобы остановить службу SQL Server на кластере, следует перейти на любой узел и открыть Start, Programs, Administrative Tools, Cluster Administration. Затем требуется щелкнуть правой кнопкой по SQL Server в секции Active Resources и выбрать пункт Take Offline, как показано на Экране 7. Дождитесь завершения работы SQL Server и всех зависимых ресурсов (например, SQL Server Agent, Microsoft Search). Затем нужно снова щелкнуть правой кнопкой по SQL Server и Bring Online. Наконец, необходимо проверить, что служба SQL Server запущена, подключившись к ней через Query Analyzer. Далее следует просмотреть журнал ошибок и убедиться, что сервер не сделал никаких записей об ошибках во время запуска.

Шифрование SSL — последние приготовления

Чтобы определить, действительно ли шифрование SSL установлено, нужно проследить за взаимодействием между клиентом и SQL Server с помощью Network Monitor. Об установке Network Monitor можно прочитать в статье Microsoft «HOW TO: Install Network Monitor in Windows 2000» (Q243270, http://support.microsoft.com).

Кроме того, должны быть установлены последние пакеты исправлений. В Microsoft знают, что на кластере под Windows 2000 виртуальный SQL Server после настройки шифрования SSL может не запускаться. Ошибка исправлена в SQL Server 2000 SP2. Если поверх SQL Server не установлен пакет SP2, то для успешного перезапуска службы после настройки протокола шифрования следует обеспечить наличие учетной записи службы SQL Server в составе группы Administrators (как в приведенном примере).

Процедуру, подобную описанной в этой статье, можно использовать для включения шифрования на отдельном клиенте, но тогда придется задействовать Client Network Utility вместо Server Network Utility. Дополнительную информацию о применении шифрования SSL на клиенте можно найти в статье Microsoft «HOW TO: Enable SSL encryption for SQL Server 2000 with Certificate Server» (Q276553, http://support.microsoft.com).

Использование кластеров для поддержки Internet-приложений и приложений электронной коммерции увеличивает производительность и сокращает время вынужденных простоев, но передача данных может иметь прорехи в системе безопасности. Использование шифрования SSL позволяет исправить неполадки. Надеюсь, что шаги, описанные в этой статье, помогут упростить настройку шифрования SSL на компьютере.


CA — основные понятия
Главное условие для включения шифрования SSL заключается в том, что сервер и клиенты должны иметь цифровой сертификат, полученный от доверенного корневого центра сертификатов Certificate Authority (CA). Сертификаты сервера и клиента должны быть выданы одним и тем же CA. Большинство систем Windows имеет службу Microsoft Certificate Services, установленную на PDC, но ничто не мешает воспользоваться подобной службой от независимого поставщика, например VeriSign. В примере статьи используется служба Microsoft Certificate Services, через нее выдаются сертификаты всем клиентам внутри компании.

Существует два главных типа CA: внутренний корневой CA и выделенный корневой CA. Выделенный CA не нуждается в службах Active Directory (AD), что делает его более популярным, поскольку многие небольшие и средние компании не используют AD. По умолчанию выделенный CA временно откладывает запросы на сертификаты, а затем обрабатывает их. Администратор CA должен ответить на каждый запрос на сертификат либо подтверждением о выдаче, либо отказом. Внутренний CA обрабатывает каждый запрос незамедлительно.

Для того чтобы послать запрос на сертификат, SQL Server должен быть запущен от имени доменной учетной записи, но не учетной записи LocalSystem по умолчанию. Чтобы убедиться, что используется правильная учетная запись, нужно щелкнуть правой кнопкой мыши по имени экземпляра SQL Server в Enterprise Manager, выбрать Properties и перейти на вкладку Security. Необходимо проверить, выбран ли параметр This account и верно ли указано имя доменной учетной записи.

Гарри Зайка — старший консультант Нью-Йоркского отделения Microsoft Consulting Services, работает с SQL Server более восьми лет. Имеет квалификацию MCDBA и MCSD. С ним можно связаться по адресу: garyzaik@microsoft.com.