Безопасная связь между связанными серверами SQL - PullRequest
7 голосов
/ 17 сентября 2010

Защищены ли (зашифрованы) ли данные, передаваемые между двумя SQL-серверами по умолчанию? Если нет, есть ли способ сделать это?

У меня есть две базы данных SQL Server 2005, работающие на отдельных серверах, на разных машинах, в разных сетях. Как я могу обеспечить безопасность данных, передаваемых с одного сервера на другой? Я пытался исследовать предмет, но не могу ничего найти.

Большое спасибо, Себастьян

1 Ответ

7 голосов
/ 20 июня 2013

Шифрование через SQL Server

  1. Предоставление сертификата на обе машины.

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

  3. Сконфигурируйте сервер (ы), чтобы заставить все входящие соединения использовать SSL так, чтобы любые клиенты, которые не поддерживают это, не могли соединиться. В диспетчере конфигурации SQL Server установите для параметра ForceEncryption значение «Да» в разделе «Протоколы».

  4. ИЛИ, вместо предыдущего шага, вы можете добавить Encrypted=yes к строке провайдера / соединения для соединения / связанного сервера. Например, если вы зарегистрируете связанный сервер, используя sp_addlinkedserver, это может выглядеть примерно так:

    EXEC master.dbo.sp_addlinkedserver
       @server = N'LinkedServerName',
       @srvproduct = N'',
       @provider = N'SQLNCLI',
       @datasrc = N'Server\InstanceName',
       @provstr = N'Encrypt=yes;',
       @catalog = 'DatabaseName'
    ;
    

    Я НЕ РЕКОМЕНДУЮ использовать опцию TrustServerCertificate=True, поскольку это не позволит клиенту проверять подлинность сервера, к которому он подключен.

    Кроме того, при использовании ODBC свойство шифрования может быть указано в DSN.

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

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

Шифрование по сети

Другой вариант - настроить защищенный туннель (например, VPN) между сетями двух серверов и убедиться, что маршрутизация трафика между ними полностью осуществляется через указанный туннель. Это также на 100% безопасно, если вы уверены, что трафик идет по правильному маршруту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...