Подключение к внутреннему SQL Server 2008 R2 с веб-сервера DMZ с использованием IIS7 с использованием надежного подключения?

Я пытаюсь подключиться и получаю сообщение об ошибке:

Ошибка входа. Логин не может быть использован с аутентификацией Windows

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

Вот что я могу сказать:

  • Веб-сервер CMS: веб-приложение ASP.NET 4.0, работающее на Windows Server 2008, IIS7, в корпоративной демилитаризованной зоне
  • Сервер базы данных CMS: SQL Server 2008 R2 на сервере домена
  • По разным причинам, к которым я не буду вдаваться, шифрование учетных данных недостаточно.
  • Порт базы данных, к которому приложение должно подключиться, не является стандартным портом и настроен на прослушивание другого порта.
  • Настройка зеркалирования БД не является опцией и на самом деле не отвечает требованиям (по моему мнению)

Кроме того, к вашему сведению, если это полезно знать:

  • Ввод контента происходит на внутреннем веб-сервере, который публикует контент в той же БД, к которой обращается веб-сервер DMZ.
  • Контент-сервер настроен на то, чтобы веб-сайт запускал пул приложений в интегрированном режиме с пользователем домена Windows, который был задан в качестве учетной записи службы с помощью ключа -ga и получил все необходимые права, и все работает отлично.

  • Внешний веб-сервер, без доступа к домену, с использованием зеркальных учетных записей (те же имя пользователя и пароль, заданные на компьютере с SQL Server и на веб-компьютере).

  • Локальная учетная запись на веб-сервере, установленная в качестве учетной записи службы с использованием ключа -ga и работающая в качестве удостоверения пула приложений для моего приложения.
  • В окне SQL Server создан локальный пользователь с одинаковыми правами доступа и теми же разрешениями, что и у пользователя домена.
  • Подключение к SQL Server через MGMT studio, установленную на веб-сервере, с кредитами пользователей SQL Server работает нормально.

Теперь, если я добавлю имя пользователя в строку подключения, все будет идеально. Как только я добавляю в строку подключения trust_connection=yes, как это было сделано со строками подключения к серверу домена, я получаю ошибку доверия.

Так что, если моя строка подключения выглядит так, она работает нормально:

Server=myServerAddress;Database=myDataBase;Username=MyUser; Password=MyPassword;

Если я изменю строку подключения на любую из них, произойдет сбой:

Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;

или же

Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;

Я работаю с одним из сетевых администраторов клиента, и он не обязательно является администратором базы данных и не имеет опыта настройки веб-приложений. Так что вполне возможно, что мы что-то упустили, и любые советы или идеи помогут. Что мне не хватает?

1 ответ

Если использование учетных данных SQL недоступно, следует использовать Active Directory и создать одностороннее доверие (пусть домен сервера DMZ доверяет вашему внутреннему домену), создать учетную запись службы во внутреннем домене, которую может использовать ваше приложение DMZ, и предоставить эта учетная запись доступа к базе данных. Тогда он сможет генерировать контекст SSPI.

Другие вопросы по тегам