У меня есть среда функционального уровня домена / леса Windows 2008 R2 с сервером доступа OpenVPN (v1.8.4.400), который интегрирован с Active Directory и работает без сбоев. Я работал с нашим администратором баз данных над оптимизацией процесса разрешений, и мы решили, что хотим реализовать доступ к различным базам данных MS SQL через учетную запись пользователя AD и / или группу AD.
Мы создали тестового пользователя: dbtest@domain.local и назначили его учетной записи через SQL Management Studio соответствующей роли с помощью DOMAIN \ dbtest.
Затем мы подключились к ящику OpenVPN, успешно прошли аутентификацию, но когда мы пытаемся подключиться к базе данных SQL, мы получаем следующую ошибку:
ОБНОВЛЕНО (прямо из журналов ошибок)
12/13/2013 08:00:02,Logon,Unknown,Login failed. The login is from an untrusted domain and cannot be used with Windows authentication. [CLIENT: 10.0.160.201]
12/13/2013 08:00:02,Logon,Unknown,Error: 18452<c/> Severity: 14<c/> State: 1.
12/13/2013 08:00:02,Logon,Unknown,SSPI handshake failed with error code 0x8009030c<c/> state 14 while establishing a connection with integrated security; the connection has been cclosed. Reason: AcceptSecurityContext failed. The Windows error code indicates the cause of failure. The logon attempt failed [CLIENT: 10.0.160.201]
12/13/2013 08:00:02,Logon,Unknown,Error: 17806<c/> Severity: 20<c/> State: 14.
Есть ли способ заставить эту работу работать, зная, что удаленные машины, подключающиеся через VPN, не присоединены к домену? Учетные записи, с которыми они подключаются, являются учетными записями домена.
Заранее спасибо!
Мы успешно использовали сервер OpenVPN-AS с SQL Server с использованием аутентификации AD в течение нескольких лет. Я подозреваю, что это может быть больше связано с клиентской системой на другом конце соединения OpenVPN - подключен ли компьютер к тому же домену, в котором находится VPN-сервер? Если нет, то присоединен ли он к другому домену и существуют ли между ними отношения доверия? Если он не присоединен к какому-либо домену, вам все равно нужно будет добавить информацию о домене при подключении к SSMS или любому другому клиенту или программе, через которые вы пытаетесь подключиться, даже если вы создали такое же имя пользователя на клиенте, поскольку оно будет пытается передать COMPUTERNAME \ dbtest, а не DOMAIN \ dbtest по умолчанию.
Обновление re: комментарии
Сервер OpenVPN-AS не должен изменять способ передачи информации о домене - я предлагаю выполнить быстрый захват Wireshark с любого конца, а затем изучить поток с попыткой аутентификации SQL. Если приложение использует SSL, это может быть сложнее, но вы все равно сможете видеть передаваемые данные пользователя. Кроме того, если у вас есть источник приложения, убедитесь, что он настроен на использование Integrated Security=SSPI
вместо идентификатора пользователя и пароля в строке подключения. В зависимости от версии SQL Server существует также Trusted_Connection=True
команду, которую вы можете использовать в строке подключения. Этот сайт отличный ресурс для их создания.
Наконец, если приложение подключается через ODBC, а не через собственный соединитель .NET, вы можете создать журнал трассировки через Data Sources (ODBC)
в Панели управления> Администрирование.
Обновление 2
Возможно, вам потребуется настроить SQL Server на смешанный режим проверки подлинности. Но я бы все равно запустил захват Wireshark как можно скорее, чтобы более внимательно посмотреть, что происходит.