Странные настройки при связывании с Postgresql с использованием аутентификации Windows или SQL - PullRequest
0 голосов
/ 17 февраля 2019

Я хотел прочитать AWS Postgresql из SQL Server, поэтому

Я создал системное соединение ODBC с Postgresql на компьютере с SQL Server, протестировал его, хорошо.

Затем я создалСвязанный сервер для подключения к postgresql.На вкладке «Безопасность» (для имени входа, не определенного в приведенном выше списке, подключения будут) я выбрал «Выполнять с использованием текущего контекста безопасности входа в систему».

При использовании этого связанного сервера при подключении к SQL Server через Windowsпроверка подлинности работает нормально.

Если я подключаюсь к SQL Server с использованием учетной записи, прошедшей проверку подлинности SQL Server, при попытке доступа к данным postgresql через тот же связанный сервер не удается выполнить проверку подлинности.

Я исправил это, переключив мойНастройка безопасности: «Быть ​​сделано с использованием этого контекста безопасности» и предоставление логина / пароля POSTGRESQL (то же, что я дал на уровне ODBC).

Вопрос:

Без повторения подробностей postgresql наСтадия связанного сервера, почему он работает с учетной записью аутентификации Windows, а не с учетными записями с проверкой подлинности SQL Server?

Они не имеют отношения к Postgresql? ...

Я заставил его работать, но все еще смущен ...

1 Ответ

0 голосов
/ 17 февраля 2019

Мне придется немного угадать, чтобы помочь вам, но я надеюсь дать вам достаточно контекста, чтобы понять, что происходит, чтобы вы могли продолжить отладку.

Когда вы подключаетесь к SQL Server с помощью встроенной аутентификации,Контроллер домена выдает токен для общения с SQL, и он используется для аутентификации вашего соединения клиента с процессом SQL Server.Под прикрытием Windows может использовать либо NTLM, либо Kerberos для этого рукопожатия.Вы можете прочитать больше об этом здесь в этой записи блога: NTLM vs. Kerberos Blog .Этот выбор протокола имеет значение при попытке использовать связанные серверы, поскольку он должен затем аутентифицироваться для чего-то другого по сети.

На данный момент имеет значение, какие учетные данные используются для запуска SQL Server (обычно для просмотра в качестве службы в окне служб).Если вы используете SQL как локальную систему или сетевую службу или что-то еще, определенное окнами (а не как определенный пользователь в сети), он может иметь или не иметь разрешения для общения с вашим целевым удаленным сервером (будь то postgres иличто-то другое).Когда вы используете Kerberos и включаете делегирование (что необходимо сделать администратору домена), у вас может быть «поток» исходных интегрированных учетных данных аутентификации через ссылку на связанный сервер к следующему соединению.NTLM не делает этого.Поэтому обычным сценарием является создание в локальном SQL Server карты с указанием учетных данных, которые следует использовать при обращении к удаленному связанному серверу.

Если вы разговариваете с драйвером ODBC, то, скорее всего, вы используетеmsdasql (OLEDB к мосту ODBC), а затем также должен пройти через свой стек аутентификации.Насколько я помню, я слишком долго думал, поддерживает ли он вообще интегрированную аутентификацию, а тем более делегирует в Kerberos.Тем не менее, вы можете продолжить отладку этой проблемы, если вы:

  • рассмотрите, какая учетная запись выполняет SQL
  • рассмотрите, какой механизм используется для выполнения интегрированной аутентификации в sql и будет ли этоРабота с делегированием
  • определяет, какие учетные данные используются для установления исходящего соединения с вашей целью ODBC.Вы должны быть в состоянии отладить большую часть этого с помощью механизма профилировщика, поскольку существует набор событий IIRC распределенного запроса / связанного сервера.

Я не могу конкретно поговорить с вашим поставщиком postgres, но это должнодать вам еще несколько инструментов для отладки.Надеюсь, что это поможет вам сделать еще один шаг.

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