Verwenden der Kerberos-Authentifizierung mit SQL Server

Die Kerberos-Authentifizierung kann mit SQL Server verwendet werden, wenn die beiden folgenden Bedingungen erfüllt sind:

  • Der Client- und der Servercomputer müssen Teil der gleichen Windows-Domäne sein oder sich in vertrauenswürdigen Domänen befinden.

  • Ein Dienstprinzipalname (Service Principal Name, SPN) muss in Active Directory registriert sein. Dieser Dienst nimmt die Rolle des Schlüsselverteilungscenters (KDC) in einer Windows-Domäne an. Der Dienstprinzipalname wird, wenn er registriert wurde, dem Windows-Konto zugeordnet, mit dem der SQL Server-Instanzendienst gestartet wurde. Wenn die Registrierung des Dienstprinzipalnamens nicht erfolgt oder dabei ein Fehler aufgetreten ist, kann die Windows-Sicherheitsschicht nicht das Konto bestimmen, das dem Dienstprinzipalname zugewiesen ist. Das bedeutet, die Kerberos-Authentifizierung wird nicht verwendet.

    HinweisHinweis

    Wenn der Server den Dienstprinzipalnamen nicht automatisch registrieren kann, muss der Dienstprinzipalname manuell registriert werden.

Durch Abfragen der dynamischen Verwaltungssicht sys.dm_exec_connections können Sie überprüfen, ob eine Verbindung Kerberos verwendet. Führen Sie die folgende Abfrage aus, und überprüfen Sie den Wert der Spalte auth_scheme, der "KERBEROS" lautet, wenn Kerberos aktiviert ist.

SELECT auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@spid ;

Die Rolle des Dienstprinzipalnamens bei der Authentifizierung

Wenn eine Anwendung eine Verbindung öffnet und dabei die Windows-Authentifizierung verwendet, übergibt SQL Server Native Client den SQL Server-Servernamen, den Instanzennamen und optional einen Dienstprinzipalnamen. Wenn die Verbindung einen Dienstprinzipalnamen übergibt, wird dieser ohne Änderungen verwendet.

Wenn die Verbindung keinen Dienstprinzipalnamen übergibt, wird ein Standard-Dienstprinzipalname basierend auf verwendetem Protokoll, Servernamen und Instanzennamen erstellt.

In beiden Szenarien wird der Dienstprinzipalname an das Schlüsselverteilungscenter gesendet, um ein Sicherheitstoken zum Authentifizieren der Verbindung abzurufen. Wenn kein Sicherheitstoken abgerufen werden kann, verwendet die Authentifizierung NTLM.