Регистрация имени участника-службы

Основное имя участника-службы (service primary name, SPN) — это имя, по которому клиент единственным образом распознает экземпляр службы. Служба проверки подлинности Kerberos может использовать основное имя для проверки подлинности служб. Когда клиент хочет подключиться к службе, он определяет местонахождение экземпляра службы, составляет для него основное имя, подключается к службе и представляет ей это имя для проверки подлинности.

ПримечаниеПримечание

Сведения, приводимые в этом разделе, применимы также в конфигурациях SQL Server, использующих кластеризацию.

Проверка подлинности Windows является предпочтительным методом проверки подлинности для пользователей SQL Server. Клиенты проверки подлинности Windows проверяются с использованием протоколов NTLM или Kerberos. В среде Active Directory в первую очередь всегда производится проверка подлинности протокола Kerberos. Проверка подлинности по протоколу Kerberos недоступна для клиентов SQL Server 2000 и SQL Server 2005, использующих именованные каналы.

Разрешения

При запуске службы компонента Database Engine он пытается зарегистрировать имя участника-службы (SPN). Если учетная запись SQL Server не имеет разрешения на регистрацию SPN в доменных службах Active Directory, то произойдет сбой и в журнале событий приложений и журнале ошибок SQL Server будет зарегистрировано предупреждающее сообщение. Для регистрации имени участника-службы компонент Database Engine должен выполняться от имени встроенной учетной записи, например «Local System» (не рекомендуется) или «NETWORK SERVICE», либо от имени учетной записи, обладающей разрешением на регистрацию имен участников-служб, например учетной записи администратора домена. Если SQL Server выполняется под другой учетной записью, то имя участника-службы не регистрируется при запуске и администратору домена необходимо произвести его регистрацию вручную.

В статье базы знаний Использование проверки подлинности протокола Kerberos в SQL Server содержатся сведения о том, как предоставить разрешения на чтение или запись имен участников-служб учетным записям, не являющимся администраторами домена.

Дополнительные сведения доступны в разделе Как реализовать ограниченное делегирование протокола Kerberos в SQL Server 2008.

Форматы имени участника-службы

Начиная с версии SQL Server 2008, формат имени участника-службы был изменен для обеспечения поддержки проверки подлинности протокола Kerberos для TCP/IP, именованных каналов и общей памяти. Для именованных экземпляров и экземпляров по умолчанию поддерживаются следующие форматы имени участника-службы.

Именованный экземпляр

  • MSSQLSvc/FQDN:[port**|**instancename], где:

    • MSSQLSvc — регистрируемая служба;

    • FQDN — полное доменное имя сервера;

    • port — номер порта TCP;

    • instancename — имя экземпляра SQL Server.

Экземпляр по умолчанию

  • MSSQLSvc/FQDN:[port**|**MSSQLSvc/FQDN], где:

    • MSSQLSvc — регистрируемая служба;

    • FQDN — полное доменное имя сервера;

    • port — номер порта TCP.

Новый формат имени участника-службы не требует наличия номера порта. В результате этого серверы с несколькими портами и протоколы, не использующие номера портов, смогут использовать протокол Kerberos.

ПримечаниеПримечание

В случае соединения по TCP/IP, когда TCP-порт является частью имени SPN, SQL Server должен включить протокол TCP, чтобы пользователь мог подключиться с проверкой подлинности протокола Kerberos.

Автоматическая регистрация имени участника-службы

При запуске экземпляра компонента SQL Server Database Engine SQL Server пытается зарегистрировать имя участника-службы (SPN) для службы SQL Server. Когда экземпляр остановлен, SQL Server пытается отменить регистрацию имени участника-службы (SPN). Для соединений TCP/IP имя участника-службы регистрируется в формате MSSQLSvc/<FQDN>:<tcpport>. Оба именованных экземпляра и экземпляр по умолчанию регистрируются как служба MSSQLSvc, используя значение <tcpport>, чтобы различить экземпляры.

Для других соединений, поддерживающих протокол Kerberos, имя участника-службы для именованного экземпляра регистрируется в формате MSSQLSvc/<FQDN>:<instancename>. Форматом регистрации экземпляра по умолчанию является MSSQLSvc/<FQDN>.

Если учетная запись службы не обладает разрешениями на регистрацию и отмену регистрации имени участника-службы, возможно, эти действия придется выполнить вручную.

Регистрация имени участника-службы вручную

Для регистрации имени участника-службы вручную администратор должен запустить средство Setspn.exe, поставляемое со средствами поддержки Microsoft Windows Server 2003. Эти средства включены в пакет обновления 1 (SP1) Windows Server 2003. Дополнительные сведения см. в статье базы знаний Средства поддержки Windows Server 2003 с пакетом обновления 1 (SP1).

Setspn.exe — это средство командной строки, позволяющее считывать, изменять и удалять свойство каталога имен участников-служб (SPN). Это средство также позволяет просматривать текущие имена участников-служб, устанавливать значения по умолчанию для имен участников-служб учетных записей и добавлять или удалять дополнительные имена участников-служб.

В следующем примере показывается синтаксис, используемый для регистрации вручную имени участника-службы для соединения TCP/IP.

setspn -A MSSQLSvc/myhost.redmond.microsoft.com:1433 accountname

Примечание.   Если имя участника-службы уже существует, то перед повторной регистрацией его необходимо удалить. Это можно сделать, используя команду setspn с параметром -D. В следующих примерах демонстрируется регистрация вручную нового имени участника-службы, основанного на экземпляре. Для экземпляра по умолчанию следует использовать:

setspn –A MSSQLSvc/myhost.redmond.microsoft.com accountname

Для именованного экземпляра следует использовать:

setspn –A MSSQLSvc/myhost.redmond.microsoft.com:instancename accountname

Клиентские соединения

Указанные пользователями имена участников-служб поддерживаются клиентскими драйверами. Однако имя участника-службы не предоставляется, оно будет автоматически сформировано, основываясь на типе клиентского соединения. Для соединений TCP, для именованных экземпляров и экземпляров по умолчанию используется имя участника-службы в формате MSSQLSvc/FQDN:[port].

Для именованных каналов и соединений общей памяти используются имена участников-служб в формате MSSQLSvc/FQDN:instancename для именованных экземпляров и в формате MSSQLSvc/FQDN для экземпляров по умолчанию.

Использование учетной записи службы в качестве имени участника-службы

Учетные записи служб могут быть использованы в качестве имен участников-служб. Они указываются с помощью атрибута соединения для проверки подлинности протокола Kerberos и имеют следующие форматы:

  • username@domain или domain\username для учетной записи пользователя домена;

  • machine$@domain или host\FQDN для учетной записи домена, такой как «Local System» или «NETWORK SERVICES».

Чтобы определить метод проверки подлинности соединения, выполните следующий запрос.

SELECT net_transport, auth_scheme 
FROM sys.dm_exec_connections 
WHERE session_id = @@SPID;

Значения по умолчанию для проверки подлинности

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

Измерение сценариев

Метод проверки подлинности

Имя участника-службы сопоставляется с правильной встроенной учетной записью или учетной записью домена. Например, «Local System» или «NETWORK SERVICE».

ПримечаниеПримечание
Правильным будет сопоставление, при котором зарегистрированное имя участника-службы сопоставляется с учетной записью, от которой запущена служба SQL Server.

Локальные соединения используют протокол NTLM, удаленные — протокол Kerberos.

Имя участника-службы является правильной встроенной учетной записью или учетной записью домена.

ПримечаниеПримечание
Правильным будет сопоставление, при котором зарегистрированное имя участника-службы сопоставляется с учетной записью, от которой запущена служба SQL Server.

Локальные соединения используют протокол NTLM, удаленные — протокол Kerberos.

Имя участника-службы сопоставляется с неверной встроенной учетной записью или учетной записью домена.

Проверка подлинности не пройдена.

Поиск имени участника-службы завершается неудачно; имя участника-службы не сопоставлено с правильной встроенной учетной записью, либо оно не является правильной учетной записью домена или встроенной учетной записью.

Протокол NTLM используется в локальных и удаленных соединениях.

Комментарии

В выделенном административном соединении (DAC) используется имя экземпляра, созданное на основе имени участника-службы в SQL Server 2008. Проверка подлинности протокола Kerberos может быть использована для выделенных административных соединений, если имя участника-службы было успешно зарегистрировано. В качестве альтернативы пользователь может указать в качестве имени участника-службы имя учетной записи.

Если во время запуска происходит ошибка регистрации имени участника-службы, она заносится в журнал ошибок SQL Server, после чего установка продолжается.

Если во время выключения происходит ошибка отмены регистрации имени участника-службы, она заносится в журнал ошибок SQL Server, после чего выключение продолжается.

См. также

Справочник

Основные понятия

Другие ресурсы