Registrieren eines Dienstprinzipalnamens

Ein Dienstprinzipalname (SPN, Service Principal Name) ist der Name, über den ein Client eine Instanz eines Diensts eindeutig identifiziert. Der Kerberos-Authentifizierungsdienst kann einen SPN zum Authentifizieren eines Diensts verwenden. Wenn ein Client eine Verbindung zu einem Dienst herstellen möchte, sucht er eine Instanz des Diensts, verfasst einen SPN für diese Instanz, stellt eine Verbindung zum Dienst her und übergibt den SPN zur Authentifizierung an den Dienst.

HinweisHinweis

Die Informationen in diesem Thema gelten auch für SQL Server-Konfigurationen, die Clustering verwenden.

Die Windows-Authentifizierung ist die bevorzugte Methode für die SQL Server-Authentifizierung von Benutzern. Clients, die die Windows-Authentifizierung nutzen, werden mithilfe von NTLM oder Kerberos authentifiziert. In einer Active Directory-Umgebung wird immer zuerst versucht, die Kerberos-Authentifizierung durchzuführen. Die Kerberos-Authentifizierung ist für SQL Server 2000- und SQL Server 2005-Clients mit Named Pipes nicht verfügbar.

Berechtigungen

Wenn der Database Engine (Datenbankmodul)-Dienst gestartet wird, versucht er, den Dienstprinzipalnamen (SPN) zu registrieren. Wenn das Konto, das SQL Server startet, nicht über die Berechtigung zum Registrieren eines SPN in Active Directory-Domänendiensten verfügt, schlägt dieser Aufruf fehl, und eine Warnmeldung wird im Anwendungsereignisprotokoll und im SQL Server-Fehlerprotokoll protokolliert. Um den SPN zu registrieren, muss in Database Engine (Datenbankmodul) ein integriertes Konto, z. B. "Lokales System" (nicht empfohlen) oder NETWORK SERVICE, oder ein Konto mit Berechtigung zum Registrieren eines SPN, z. B. ein Domänenadministratorkonto, ausgeführt werden. Wird unter SQL Server kein solches Konto ausgeführt, wird der SPN beim Starten nicht registriert, sodass der Domänenadministrator den SPN manuell registrieren muss.

Der KB-Artikel Verwenden der Kerberos-Authentifizierung in SQL Server enthält Informationen zum Gewähren von Lese- und Schreibberechtigungen für einen SPN für ein Nicht-Domänenadministratorkonto.

Weitere Informationen finden Sie unter Vorgehensweise: Implementieren von eingeschränkter Kerberos-Delegierung mit SQL Server 2008.

SPN-Formate

In SQL Server 2008 wurde das SPN-Format geändert, um die Kerberos-Authentifizierung unter TCP/IP, Named Pipes und Shared Memory zu unterstützen. Die folgenden SPN-Formate für benannte und Standardinstanzen werden unterstützt.

Benannte Instanz

  • MSSQLSvc/FQDN: [Port**|**instancename], wobei:

    • MSSQLSvc der Dienst ist, der registriert wird.

    • FQDN der vollqualifizierte Domänenname des Servers ist.

    • port die TCP-Portnummer ist.

    • instancename der Name der SQL Server-Instanz ist.

Standardinstanz

  • MSSQLSvc/FQDN:port**|**MSSQLSvc/FQDN, wobei:

    • MSSQLSvc der Dienst ist, der registriert wird.

    • FQDN der vollqualifizierte Domänenname des Servers ist.

    • port die TCP-Portnummer ist.

Beim neuen SPN-Format ist keine Portnummer erforderlich. Somit können Server mit mehreren Ports oder Protokolle ohne Portnummern Kerberos verwenden.

HinweisHinweis

Bei TCP/IP-Verbindungen, bei denen der TCP-Port im SPN enthalten ist, muss SQL Server das TCP-Protokoll für einen Benutzer aktivieren, um mithilfe der Kerberos-Authentifizierung eine Verbindung herzustellen.

Automatische SPN-Registrierung

Beim Starten einer Instanz von SQL Server Database Engine (Datenbankmodul) versucht SQL Server, den SPN für den SQL Server-Dienst zu registrieren. Wird die Instanz beendet, versucht SQL Server, die Registrierung des SPN wieder aufzuheben. Bei TCP/IP-Verbindungen wird der SPN im folgenden Format registriert: MSSQLSvc/<FQDN>:<tcpport>. Sowohl benannte Instanzen als auch die Standardinstanz werden als MSSQLSvc registriert, wobei der <tcpport>-Wert zur Unterscheidung der Instanzen dient.

Bei anderen Verbindungen, die Kerberos unterstützen, wird der SPN im Format MSSQLSvc/<FQDN>:<instancename> für eine benannte Instanz registriert. Die Standardinstanz wird im folgenden Format registriert: MSSQLSvc/<FQDN>.

Die Registrierung bzw. die Aufhebung der Registrierung eines SPN muss möglicherweise manuell durchgeführt werden, wenn der Dienst nicht über die Berechtigungen für diese Aktionen verfügt.

Manuelle SPN-Registrierung

Um den SPN manuell zu registrieren, muss der Administrator das Setspn.exe-Tool verwenden, das mit den Microsoft Windows Server 2003-Supporttools geliefert wird. Diese Tools sind in Windows Server 2003 Service Pack 1 (SP1) enthalten. Weitere Informationen finden Sie im KB-Artikel Supporttools in Windows Server 2003 Service Pack 1.

Setspn.exe ist ein Befehlszeilentool, mit dem Sie die SPN-Verzeichniseigenschaft lesen, ändern und löschen können. Mit diesem Tool können Sie auch die aktuellen SPN anzeigen, die Standard-SPN des Kontos zurücksetzen und zusätzliche SPN hinzufügen oder löschen.

Im folgenden Beispiel wird die Syntax dargestellt, mit der ein SPN für eine TCP/IP-Verbindung manuell registriert wird.

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

Hinweis   Wenn bereits ein SPN vorhanden ist, muss er gelöscht werden, bevor er erneut registriert werden kann. Verwenden Sie dafür den setspn-Befehl und den -D-Schalter. In den folgenden Beispielen wird veranschaulicht, wie Sie einen neuen instanzbasierten SPN manuell registrieren können. Verwenden Sie für die Standardinstanz Folgendes:

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

Verwenden Sie für eine benannte Instanz Folgendes:

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

Clientverbindungen

Clienttreiber unterstützen vom Benutzer angegebene SPN. Wenn jedoch kein SPN angegeben wurde, wird er auf der Grundlage des Clientverbindungstyps automatisch erstellt. Bei einer TCP-Verbindung wird ein SPN im Format MSSQLSvc/FQDN:[port] sowohl für benannte als auch für Standardinstanzen verwendet.

Bei Named-Pipes- und Shared-Memory-Verbindungen wird ein SPN im Format MSSQLSvc/FQDN:instancename für eine benannte Instanz und im Format MSSQLSvc/FQDN für die Standardinstanz verwendet.

Verwenden eines Dienstkontos als SPN

Dienstkonten können als SPN verwendet werden. Sie werden durch das Verbindungsattribut für die Kerberos-Authentifizierung angegeben und liegen in den folgenden Formaten vor:

  • benutzername@domäne oder domäne\benutzername für ein Domänenbenutzerkonto

  • computer$@domäne oder host\FQDN für ein Computerdomänenkonto, z. B. "Lokales System" oder NETWORK SERVICES.

Zur Bestimmung der Authentifizierungsmethode einer Verbindung führen Sie die folgende Abfrage aus.

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

Authentifizierungsstandardwerte

In der folgenden Tabelle werden die Authentifizierungsstandardwerte beschrieben, die auf Grundlage von SPN-Registrierungsszenarios verwendet werden.

Szenario

Authentifizierungsmethode

Der SPN wird der richtigen Domäne oder dem integrierten Konto zugeordnet. Beispiel: Lokales System oder NETWORK SERVICE.

HinweisHinweis
"Richtig" bedeutet in diesem Fall, dass es sich bei dem Konto, das dem registrierten SPN zugeordnet ist, um das Konto handelt, unter dem der SQL Server-Dienst ausgeführt wird.

Lokale Verbindungen verwenden NTLM, Remoteverbindungen verwenden Kerberos.

Der SPN ist die richtige Domäne oder das integrierte Konto.

HinweisHinweis
"Richtig" bedeutet in diesem Fall, dass es sich bei dem Konto, das dem registrierten SPN zugeordnet ist, um das Konto handelt, unter dem der SQL Server-Dienst ausgeführt wird.

Lokale Verbindungen verwenden NTLM, Remoteverbindungen verwenden Kerberos.

Der SPN wird der falschen Domäne oder dem integrierten Konto zugeordnet.

Die Authentifizierung schlägt fehl.

Die SPN-Suche schlägt fehl, der SPN wird nicht der richtigen Domäne oder dem integrierten Konto zugeordnet, oder der SPN ist nicht die richtige Domäne bzw. nicht das integrierte Konto.

Lokale und Remoteverbindungen verwenden NTLM.

Kommentare

Die dedizierte Administratorverbindung (DAC) verwendet einen auf Instanznamen basierten SPN in SQL Server 2008. Die Kerberos-Authentifizierung kann mit einer DAC verwendet werden, wenn dieser SPN erfolgreich registriert wurde. Alternativ kann ein Benutzer den Kontonamen als SPN festlegen.

Wenn die SPN-Registrierung beim Starten fehlschlägt, wird dieser Fehler im Fehlerprotokoll von SQL Server aufgezeichnet, und der Startvorgang wird fortgesetzt.

Wenn die Aufhebung der SPN-Registrierung beim Herunterfahren fehlschlägt, wird dieser Fehler im Fehlerprotokoll von SQL Server aufgezeichnet, und das Herunterfahren wird fortgesetzt.