В этой статье мы рассмотрим концепцию полной защиты диалогового уровня службы брокера в SQL Server. Эта функция обеспечивает возможность шифрования отдельных разговоров и авторизации участников, обеспечивая безопасную коммуникацию между службами.
Для реализации полной защиты диалогового уровня необходимо выполнить несколько предварительных условий. Во-первых, нам нужно сгенерировать основные ключи в базах данных, на которых размещены инициатор и целевые службы. Эти основные ключи будут использоваться для шифрования и дешифрования сообщений, обмениваемых между службами.
Затем мы создаем назначенных пользователей для каждой службы с использованием оператора AUTHORIZATION. Эти пользователи представляют службы и будут использоваться для предоставления разрешений и установления безопасной коммуникации.
После создания пользователей нам нужно связать их с асимметричными ключевыми парами. Эти ключевые пары будут идентифицировать стороны, участвующие в разговоре, и облегчать обмен симметричными ключами, используемыми для шифрования сообщений. Связь между пользователями и ключевыми парами устанавливается путем предоставления владения сертификатом при их создании.
После создания ключевых пар необходимо обменяться открытыми ключами (в виде файлов сертификатов) между партнерами по общению. Затем эти файлы сертификатов импортируются в соответствующие базы данных.
Для обеспечения контекста безопасности для импортированных сертификатов мы создаем нового пользователя в каждой базе данных с тем же именем, что и владелец соответствующего закрытого ключа. Этот пользователь станет владельцем сертификата и будет использоваться для выполнения всех задач, связанных с обменом сообщениями.
После создания пользователей и сертификатов мы можем установить безопасный диалог между службами. Это делается путем определения REMOTE SERVICE BINDING на инициаторе, который ссылается на локального владельца открытого ключа. Целевая служба должна предоставить разрешение SEND своему пользователю базы данных, связанному с открытым ключом.
По умолчанию все разговоры службы брокера работают с включенной защитой диалога. Однако мы можем явно включить или отключить шифрование для конкретного диалога, установив параметр ENCRYPTION в операторе BEGIN DIALOG CONVERSATION. Установка его значения ON приведет к шифрованию всех сообщений, отправляемых на другой экземпляр SQL Server.
Важно отметить, что определение удаленной привязки службы принудительно приведет к шифрованию диалога независимо от значения параметра ENCRYPTION.
В следующей статье мы рассмотрим концепцию и детали реализации анонимной защиты диалогового уровня в распределенной среде службы брокера с использованием SQL Server 2005 Express Edition.
Следите за новыми советами и трюками по SQL Server!