Integrated security sspi: sql server — What is the difference between Integrated Security = True and Integrated Security = SSPI?
Содержание
Microsoft SQL Server. Настройка SPN
Автор: Вячеслав
Немного теории.
MS SQL Server поддерживает сетевую проверку через следующие типы проверок:
— NTLM
— Kerberos.
NTLM довольно старый протокол, который еще появился с Windows NT 4.0, вместо него рекомендуется использовать Kerberos.
Kerberos – это сетевой протокол, позволяющий реализовать надежную проверку подлинности в клиента и сервера в сети, основанный на главном ключе (master key) и, так называемых, зашифрованных билетах(tickets).
MS SQL Server поддерживает Kerberos для следующих сетевых протоколов:
— TCP\IP
— Именованные каналы(Shared pipes)
— Shared memory.
SQL Server поддерживает протокол Kerberos через Windows Security Support Provider(SSPI) если используется Windows аутентификация на сервере.
Если протокол Kerberos не может быть использован, то используется протокол вызов-ответ(NTLM).
Более подробно можно посмотреть на MSDN-е.
ну и практика:
Итак, после установки MS SQL Server необходимо зарегистрировать наши SPN для нашего экземпляра MSSQL Server. SPN регистрируется при установке, если изначально указали доменную учетную запись.
Первым признаком, что у вас не зарегистрированы SPN для СУБД, это наличие ошибки в логах sql server-а при загрузке сервера:
The SQL Server Network Interface library could not register the Service Principal Name (SPN) [ MSSQLSvc/SRV.domen.net:1433 ] for the SQL Server service. Windows return code: 0x2098, state: 15. Failure to register a SPN might cause integrated authentication to use NTLM instead of Kerberos. This is an informational message. Further action is only required if Kerberos authentication is required by authentication policies and if the SPN has not been manually registered.
The SQL Server Network Interface library could not register the Service Principal Name (SPN) [ MSSQLSvc/ SRV.domen.net ] for the SQL Server service. Windows return code: 0x2098, state: 15. Failure to register a SPN might cause integrated authentication to use NTLM instead of Kerberos. This is an informational message. Further action is only required if Kerberos authentication is required by authentication policies and if the SPN has not been manually registered.
Так во время работы MS SQL Server периодически появляются ошибки вида:
Cannot generate SSPI context
login failed for user NT Authority Anonymous
Login failed for user ‘NT AUTHORITY\ANONYMOUS LOGON’. (Microsoft SQL Server, Error: 18456)
Login failed for user ‘(null)’
Login failed for user ”
Login failed. The login is from an untrusted domain and cannot be used with Windows authentication.
Linked server connections failing
SSPI handshake failed with error code 0x80090311 while establishing a connection with integrated security; the connection has been closed
SSPI handshake failed with error code 0x80090304 while establishing a connection with integrated security; the connection has been closed.
Итак, регистрация SPN происходит следующим образом:
Способ 1
Через команду «setspn» в командной строке
Синтаксис setspn –A <SPN> <Account>.
Пример: «setspn –A MSSQLSvc/SRV.domen.net:1433 domen\ServiceAccount»
Или «setspn –A MSSQLSvc/SRV.domen.net:inst1 domen\ServiceAccount»
Регистрировать SPN необходимо с указанием порта инстанса, так и на название инстанса. На один экземпляр MS SQL Server нужно регистрировать два SPN с указанием порта и без него.
Для кластера необходимо регистрировать для каждой ноды и общего имени, для AlwaysOn решения так же для каждого инстанса на нодах плюс прослушиватель (Lisener).
Способ 2
Через консоль ADSI
В консоли ADSI ищем нашу техническую учетную запись, открываем ее свойства, находим атрибут «ServiceProncipalName», вводим так же SPN сервера, жмем кнопку «добавить»
Способ 3
Наиболее простой и легкий, приложение Kerberos Configuration Manager
Данное по скачивается отсюда
После его установки, запускаем, указываем ваш сервер с MS SQL Server, доменную учетную запись
Приложение простое, но удобное. Если есть проблемы с SPN на сервере, то это будет отображено и предложит вам исправить это или сгенерировать cmd код:
Если все ОК, то будет так:
После этого коннектов к MS SQL Server связанные с SPN у вас не должно быть.
Хороших коннектов Вам!
Запись опубликована в рубрике В помощь администратору с метками spn. Добавьте в закладки постоянную ссылку.
sql server — В чем разница между Integrated Security = True и Integrated Security = SSPI?
спросил
Изменено
4 года, 7 месяцев назад
Просмотрено
769 тысяч раз
У меня есть два приложения, в которых используется встроенная безопасность. Один назначает Integrated Security = true
в строке подключения, а остальные задают Integrated Security = SSPI
.
В чем разница между SSPI
и true
в контексте интегрированной безопасности?
- sql-сервер
- безопасность
- строка подключения
- безопасность базы данных
8
Согласно Microsoft это одно и то же.
При
false
в соединении указываются идентификатор пользователя и пароль. Если задано значение true, для проверки подлинности используются учетные данные текущей учетной записи Windows.
Распознаваемые значения:true
,false
,yes
,no
иsspi
(настоятельно рекомендуется), что эквивалентноtrue
.
14
Интегрированная безопасность=true;
не работает во всех провайдерах SQL, он создает исключение при использовании с провайдером OleDb
.
Итак, в основном Integrated Security=SSPI;
предпочтительнее, поскольку он работает как с поставщиком SQLClient
, так и с OleDB
.
Вот полный набор синтаксисов в соответствии с MSDN — синтаксис строки подключения (ADO.NET)
2
Использование проверки подлинности Windows
Для подключения к серверу базы данных рекомендуется использовать аутентификацию Windows, широко известную как встроенная безопасность. Чтобы указать проверку подлинности Windows, вы можете использовать любую из следующих двух пар «ключ-значение» с поставщиком данных. NET Framework для SQL Server:
Integrated Security = true; Интегрированная безопасность = SSPI;
Однако только второй работает с поставщиком данных .NET Framework OleDb . Если вы установите Integrated Security = true
для ConnectionString возникает исключение.
Для указания аутентификации Windows в поставщике данных. NET Framework для ODBC следует использовать следующую пару «ключ-значение».
Trusted_Connection = да;
Источник: MSDN: Работа со строками подключения
0
Многие вопросы получают ответы, если мы используем .Net Reflector
, чтобы увидеть фактический код SqlConnection
🙂
правда
и sspi
одинаковы:
внутренний класс DbConnectionOptions ... внутреннее логическое значение ConvertValueToIntegratedSecurityInternal (строка stringValue) { if ((CompareInsensitiveInvariant(stringValue, "sspi") || CompareInsensitiveInvariant(stringValue, "true")) || CompareInsensitiveInvariant(stringValue, "yes")) { вернуть истину; } } ...
РЕДАКТИРОВАТЬ 20.02.2018
Теперь в .Net Core мы можем увидеть его открытый исходный код на github!
Найдите метод ConvertValueToIntegratedSecurityInternal:
https://github. com/dotnet/corefx/blob/fdbb160aeb0fad168b3603dbdd971d568151a0c8/src/System.Data.SqlClient/src/System/Data/Common/DbConnectionOptions.cs
1
Integrated Security = False : в соединении указаны идентификатор пользователя и пароль.
Integrated Security = true : для проверки подлинности используются учетные данные текущей учетной записи Windows.
Integrated Security = SSPI: эквивалентно true.
Мы можем исключить атрибуты имени пользователя и пароля из строки подключения и использовать встроенную безопасность
Позвольте мне начать с Интегрированная безопасность = false
false
Идентификатор пользователя и пароль указаны в строке подключения.
true
Для проверки подлинности используются учетные данные Windows.
Распознанные значения: истина
, ложь
, да
, нет
и SSPI
.
Если указаны Идентификатор пользователя
и Пароль
, а для встроенной безопасности установлено значение true
, то Идентификатор пользователя
и Пароль
будут игнорироваться и будет использоваться встроенная безопасность
Обратите внимание, что строки подключения относятся к что и как вы подключаетесь к данным. Они подключаются к одной и той же базе данных, но первый использует поставщик данных .NET Framework для SQL Server. Integrated Security=True не будет работать для OleDb.
- Источник данных =.; Исходный каталог = aspnetdb; Интегрированная безопасность = True
- Поставщик = SQLOLEDB; Источник данных =.; Интегрированная безопасность = SSPI; Исходный каталог = aspnetdb
В случае сомнений используйте соединения данных Visual Studio Server Explorer.
- Что такое sspi?
- Синтаксис строк соединения
0
Значение True допустимо только в том случае, если вы используете библиотеку . NET SqlClient. Это недопустимо при использовании OLEDB.
Если SSPI является bvaid в обоих случаях, вы используете библиотеку .net SqlClient или OLEDB.
1
С моей точки зрения,
Если вы не используете встроенную безопасность = SSPI, тогда вам нужно жестко закодировать имя пользователя и пароль в строке подключения, что означает «относительно небезопасно», потому что все сотрудники имеют доступ даже ex- сотрудник может использовать информацию злонамеренно.
2
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя электронную почту и пароль
Опубликовать как гость
Электронная почта
Обязательно, но не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
сервер sql — встроенная безопасность = False
спросил
Изменено
2 года, 9 месяцев назад
Просмотрено
48 тысяч раз
Если я использую в строке подключения
:
интегрированная безопасность = ложь; имя пользователя = aduffy; пароль = бла
Я предполагаю, что это равно
- Я не использую проверку подлинности Windows
- и это мои данные аутентификации SQL Server? (Адаффи и бла)
Примерно так?
- sql-сервер
- sql-сервер-2008
1
из msdn
Интегрированная безопасность
Integrated Security При значении false в соединении указываются идентификатор пользователя и пароль.
Если задано значение true, для проверки подлинности используются учетные данные текущей учетной записи Windows.
Распознаваемые значения: true, false, yes, no и sspi (настоятельно рекомендуется), что эквивалентно true.
Если указаны идентификатор пользователя и пароль, а для встроенной безопасности установлено значение true, идентификатор пользователя и пароль будут игнорироваться и будет использоваться встроенная безопасность.
SqlConnection.ConnectionString
документирует все допустимые ключевые слова строки подключения SQL Server и их значения.
Встроенная система безопасности :
При false в соединении указываются ID пользователя и пароль. Когда true , для проверки подлинности используются учетные данные текущей учетной записи Windows.
Распознаваемые значения: true , false , да , нет и sspi (настоятельно рекомендуется), что эквивалентно true .
Если указаны идентификатор пользователя и пароль, а для встроенной безопасности установлено значение true , идентификатор пользователя и пароль будут игнорироваться и будет использоваться встроенная безопасность.
SqlCredential
— это более безопасный способ указать учетные данные для подключения, использующего проверку подлинности SQL Server (Integrated Security= false ).
Да, вы правы, для использования проверки подлинности Windows необходимо установить Встроенная безопасность = true
. Microsoft рекомендует SSPI при использовании проверки подлинности Windows.
При значении false в соединении указываются идентификатор пользователя и пароль. Когда
true, учетные данные текущей учетной записи Windows используются для
аутентификация. Распознаваемые значения: true, false, yes, no и sspi.
(настоятельно рекомендуется), что эквивалентно true. Если идентификатор пользователя и
Если указан пароль и для встроенной безопасности установлено значение true,
Идентификатор пользователя и пароль будут проигнорированы, а встроенная безопасность будет отключена.