Поделиться через


Поддержка имени участника-службы в клиентских соединениях

Начиная с 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 может быть использовано в строке поставщика, инициализации или соединения, для следующих операций:

  • Укажите учетную запись, используемую экземпляром SQL Server для подключения. Это упрощает доступ к проверке подлинности Kerberos. Если имеется центр распространения ключей Kerberos (KDC) и указана правильная учетная запись, проверка подлинности Kerberos предпочтительнее NTLM. Центр KDC обычно размещается на том же компьютере, что и контроллер домена.

  • Укажите имя участника-службы для поиска учетной записи службы для экземпляра SQL Server. Для каждого экземпляра SQL Server формируются два имени участника-службы по умолчанию, которые можно использовать для этой цели. Но эти ключи не обязательно присутствуют в Active Directory, поэтому в этой ситуации проверка подлинности Kerberos не гарантирована.

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

Ключевое слово 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.