Регистрация имени участника-службы
Основное имя участника-службы (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, после чего выключение продолжается.
См. также