Подключение к внутреннему 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.