Поддержка имени участника-службы в клиентских соединениях
Начиная с SQL Server 2008, поддержка имен участника-службы была расширена, чтобы активировать взаимную проверку подлинности во всех протоколах. В предшествующих версиях SQL Server имена участника-службы поддерживались только для Kerberos over TCP, когда имя участника-службы для экземпляра SQL Server было зарегистрировано в Active Directory.
Имена участника-службы используются протоколом проверки подлинности, чтобы определить учетную запись, в которой выполняется экземпляр SQL Server. Если учетная запись экземпляра известна, можно использовать проверку подлинности Kerberos для взаимной проверки подлинности клиентом и сервером. Если учетная запись экземпляра не известна, используется только проверка подлинности NTLM, которая обеспечивает проверку подлинности клиента сервером. В настоящее время собственный клиент SQL Server выполняет преобразование проверки подлинности, извлекая имя участника-службы из имени экземпляра и свойств сетевого соединения. Экземпляры SQL Server попытаются зарегистрировать имена участника-службы при запуске, или их можно зарегистрировать вручную. Однако, регистрация завершится неудачей, если учетная запись, которая пытается зарегистрировать имена участника-службы, не имеет достаточных прав доступа.
Учетные записи домена и компьютера автоматически регистрируются в Active Directory. Их можно использовать в качестве имен участника-службы, или администраторы могут определить собственные имена участника-службы. В SQL Server 2008 безопасная проверка подлинности стала более управляемой и надежной, благодаря возможности клиента напрямую указать используемое имя участника-службы.
Примечание |
---|
Имя участника-службы, указанное клиентским приложением, используется только, когда соединение установлено с встроенной безопасностью Windows NT. |
Дополнительные сведения о Kerberos см. в следующих разделах:
Сведения об использовании
В следующей таблице описаны наиболее типичные сценарии, в которых клиентские приложения могут включить безопасную проверку подлинности.
Сценарии |
Description |
---|---|
Приложение предыдущей версии не указывает имя участника-службы. |
Этот сценарий совместимости гарантирует, что не будет изменений поведения приложений, разработанных для предыдущих версий SQL Server. Если не указано имени участника-службы, приложение использует сформированные имена участника-службы и не имеет сведений об используемом методе проверки подлинности. |
Клиентское приложение, использующее текущую версию собственного клиента SQL Server, указывает имя участника-службы в строке соединения как учетную запись пользователя домена или компьютера, как имя участника-службы, зависящее от экземпляра, или как определяемую пользователем строку. |
Ключевое слово ServerSPN может быть использовано в строке поставщика, инициализации или соединения, для следующих операций:
Ключевое слово FailoverPartnerSPN может быть использовано, чтобы указать имя участника-службы для резервного сервера. Диапазон учетной записи и значения ключа Active Directory такие же, как значения, которые можно указать для основного сервера. |
Приложение ODBC указывает имя участника-службы как атрибут соединения для основного сервера или резервного сервера. |
Ключевое слово SQL_COPT_SS_SERVER_SPN может быть использовано, чтобы указать имя участника-службы для соединения с основным сервером. Ключевое слово SQL_COPT_SS_FAILOVER_PARTNER_SPN может быть использовано, чтобы указать имя участника-службы для резервного сервера. |
Приложение OLE DB указывает имя участника-службы как свойство инициализации источника данных для основного сервера или резервного сервера. |
Свойство соединения SSPROP_INIT_SERVER_SPN в наборе свойств DBPROPSET_SQLSERVERDBINIT может быть использовано, чтобы указать имя участника-службы для соединения. Свойство соединения SSPROP_INIT_FAILOVER_PARTNER_SPN в DBPROPSET_SQLSERVERDBINIT может быть использовано, чтобы указать имя участника-службы для резервного сервера. |
Пользователь указывает имя участника-службы для сервера или резервного сервера в имени источника данных (DSN) ODBC. |
Имя участника-службы может быть указано в DSN ODBC через диалоговые окна установки DSN. |
Пользователь указывает имя участника-службы для сервера или резервного сервера в диалоговом окне Связь данных или Имя входа OLE DB. |
Имя участника-службы может быть указано в диалоговом окне Связь данных или Имя входа. Диалоговое окно Имя входа может использоваться с ODBC или OLE DB. |
Приложение ODBC определяет метод проверки подлинности, используемый, чтобы установить соединение. |
Если соединение было открыто успешно, приложение может запросить атрибут соединения SQL_COPT_SS_INTEGRATED_AUTHENTICATION_METHOD, чтобы определить, какой метод проверки подлинности будет использоваться. Эти значения включают NTLM, Kerberos и другие. |
Приложение OLE DB определяет метод проверки подлинности, используемый, чтобы установить соединение. |
Если соединение было открыто успешно, приложение может запросить свойство соединения SSPROP_AUTHENTICATION_METHOD в наборе свойств DBPROPSET_SQLSERVERDATASOURCEINFO, чтобы определить, какой метод проверки подлинности будет использоваться. Эти значения включают NTLM, Kerberos и другие. |
Переход на резервный ресурс
Имена участника-службы не хранятся в резервном кэше и поэтому не могут быть передано между соединениями. Имена участника-службы будут использоваться при всех попытках соединения с основным и резервным сервером при указании строки соединения или атрибутов соединения.
Организация пулов соединений
Приложения должны учитывать, что указание имен участника-службы в некоторых, но не всех строках соединения могут привести к фрагментации пула.
Приложения могут программно указать имена участника-службы как атрибуты соединения вместо ключевых слов строк соединения. Это помогает управлять фрагментацией пула соединений.
Приложения должны учитывать, что имена участника-службы в строках соединений могут быть отменены путем назначения соответствующих атрибутов соединения, но строки соединения, используемые при организации пула соединений, будут использовать значения строк соединения для объединения в пул.
Работа сервера низкого уровня
Поведение нового подключения реализуется клиентом; поэтому оно не специфично для версии SQL Server.
Связанные серверы и делегирование
При создании связанных серверов параметр @provstr хранимой процедуры sp_addlinkedserver может быть использован, чтобы указать имена участника-службы сервера и резервного партнера. Преимущества данного подхода такие же, как при указании имен участника-службы в строках соединения клиента: Проще и надежнее установить соединения, которые используют проверку подлинности Kerberos.
Делегирование со связанными серверами требует проверки подлинности Kerberos.
Список требований см. в разделе Настройка связанных серверов для делегирования.
Аспекты управления именами участника-службы, указанными приложениями
При выборе способа задания имен участника-службы: в приложении (через строки соединений) или программно через свойства соединений (вместо имен участника-службы по умолчанию, сформированных поставщиком), учитывайте следующие факторы:
Безопасность: Раскрывает ли указанное имя участника-службы конфиденциальные сведения?
Надежность: Чтобы обеспечить использование имен участника-службы по умолчанию, учетная запись службы, в которой выполняется экземпляр SQL Server, должна иметь достаточные полномочия для обновления Active Directory в центре распространения ключей.
Удобство и прозрачность расположения: Как повлияет на имена участника-службы приложения перемещение базы данных на другой экземпляр SQL Server? Это применимо как к основному серверу, так и его резервному партнеру, если используется зеркальное отображение базы данных. Если при изменении сервера необходимо изменить имена участника-службы, как это повлияет на приложения? Будут ли изменения управляемыми?
Задание имени участника-службы
Имя участника-службы можно указывать в диалоговых окнах и в коде. В этом разделе рассматривается, как задать имя участника-службы.
Максимальная длина для имени участника-службы — 260 символов.
В именах участника-службы в строке соединения или атрибутах соединения используется следующий синтаксис.
Синтаксис |
Description |
---|---|
MSSQLSvc/fqdn |
Сформированное поставщиком имя участника-службы для экземпляра по умолчанию, когда используется протокол, отличный от TCP. fqdn — полное имя домена. |
MSSQLSvc/fqdn:port |
Сформированное поставщиком имя участника-службы для экземпляра по умолчанию, когда используется протокол TCP. port — номер порта TCP. |
MSSQLSvc/fqdn:InstanceName |
Сформированное поставщиком имя участника-службы для именованного экземпляра, когда используется протокол, отличный от TCP. InstanceName — имя экземпляра SQL Server. |
HOST/fqdn HOST/MachineName |
Имя участника-службы, сопоставляемая встроенным учетным записям компьютера, автоматически регистрируемым Windows. |
Username@Domain |
Прямая спецификация учетной записи домена. Username — имя учетной записи пользователя Windows. Domain — имя домена Windows или полное имя домена. |
MachineName$@Domain |
Прямая спецификация учетной записи компьютера. (Если сервер, к которому выполняется подключение, работает с учетными записями LOCAL SYSTEM или NETWORK SERVICE, то для проверки подлинности Kerberos ServerSPN может быть в формате MachineName$@Domain.) |
KDCKey/MachineName |
Заданное пользователем имя участника-службы. KDCKey — алфавитно-цифровая строка, соответствующая правилам для ключа KDC. |
Синтаксис ODBC и OLE DB, поддерживающий имена участника-службы
Сведения о синтаксисе см. в следующих разделах:
Сведения об образцах приложений, которые демонстрируют эту функцию, см. в разделе Вопросы установки образцов кода и образцов баз данных SQL Server.