Kann jemand bitte Windows Service Principle Names (SPNs) erläutern, ohne dies zu vereinfachen?

28

Ich habe jetzt ein paar Mal mit Namen von Dienstprinzipien gerungen und die Microsoft-Erklärung ist einfach nicht ausreichend. Ich konfiguriere eine IIS-Anwendung für die Arbeit in unserer Domäne und es sieht so aus, als ob einige meiner Probleme mit meiner Notwendigkeit zusammenhängen, http-spezifische SPNs auf dem Windows-Dienstkonto zu konfigurieren, auf dem der Anwendungspool ausgeführt wird, der meine Site hostet .

All dies hat mich zu der Erkenntnis gebracht, dass ich die Beziehung zwischen Diensttypen (MSSQL, http, Host, Termsrv, Wsman usw.), Kerberos-Authentifizierung, Active Directory-Computerkonten (PCName $), Windows-Dienstkonten und SPNs nicht vollständig verstehe und das Benutzerkonto, mit dem ich versuche, auf einen Dienst zuzugreifen.

Kann jemand bitte Windows Service Principle Names (SPNs) erklären, ohne die Erklärung zu vereinfachen?

Bonuspunkte für eine kreative Analogie, die bei einem mäßig erfahrenen Systemadministrator / Entwickler Anklang findet.

Chris Magnuson
quelle
4
Bitte prüfen Sie, ob Bill Bryant, "Entwerfen eines Authentifizierungssystems: Ein Dialog in vier Szenen", Ihrem Wunsch nach kreativer Analogie nachkommt.
17.

Antworten:

33

Ein Dienstprinzipalname ist ein Konzept von Kerberos. Dies ist eine Kennung für einen bestimmten Dienst, der von einem bestimmten Host innerhalb einer Authentifizierungsdomäne angeboten wird. Die gebräuchliche Form für SPNs ist service class/ fqdn@ REALM(zB IMAP/[email protected]). Es gibt auch Benutzerprinzipalnamen, die Benutzer in Form von user@ REALM(oder user1/ user2@ REALM, die eine für eine Beziehung sprechende Beziehung angeben) identifizieren . Das service classkann locker als das Protokoll für den Dienst angesehen werden. Die Liste der in Windows integrierten Dienstklassen finden Sie in diesem Artikel von Microsoft .

Jeder SPN muss im registriert werden REALM‚s Key Distribution Center ein (KDC) und ausgegebenen Dienstschlüssel . Das setspn.exeDienstprogramm, das im \Support\ToolsOrdner auf dem Windows-Installationsmedium oder als Resource Kit-Download verfügbar ist, bearbeitet die Zuweisung von SPNs an Computer oder andere Konten im AD.

Wenn ein Benutzer auf einen Dienst zugreift, der Kerberos zur Authentifizierung verwendet (ein "Kerberized" -Dienst), wird ein verschlüsseltes Ticket angezeigt, das von KDC (in einer Windows-Umgebung ein Active Directory-Domänencontroller) bezogen wurde. Das Ticket wird mit dem Serviceschlüssel verschlüsselt . Durch die Entschlüsselung des Tickets bestätigt der Dienst, dass er den Schlüssel für den angegebenen SPN besitzt. Dienste, die auf Windows-Hosts ausgeführt werden, verwenden den mit dem AD-Computerkonto verknüpften Schlüssel. Um jedoch den Kerberos-Protokoll-SPNs zu entsprechen, müssen Sie dem Active Directory für jeden kerberisierten Dienst, der auf dem Host ausgeführt wird, hinzufügen - mit Ausnahme der oben genannten integrierten SPNs. Im Active Directory werden die SPNs im servicePrincipalNameAttribut des Computerobjekts des Hosts gespeichert .

Weitere Informationen finden Sie in: Microsoft TechNet-Artikel zu SPN , Ken Hornsteins Kerberos-FAQ

yrk
quelle
4
+1 - Du hast mich geschlagen, dies zu schreiben, und hast einen tollen Job bei dir gemacht. Deshalb habe ich beschlossen, deine Antwort zu bearbeiten, um ein paar Details hinzuzufügen, anstatt meine eigene zu schreiben.
Evan Anderson
@yarek die letzten beiden Links sind am 29. Januar 2019 unterbrochen
Andrew Watson
10

Die Antwort von yarek war großartig und ich habe sie positiv bewertet, aber ich wollte Ihnen auch ein bisschen mehr Windows-spezifische Informationen zum Thema geben, oder eher aus der Perspektive von jemandem, der mit AD besser vertraut ist als nur Kerberos im Allgemeinen denn das ist ein thema, das mich sehr interessiert.

Ich hatte das Gefühl, dass dieser Typ eine hervorragende Erklärungsarbeit geleistet hat, und ich empfehle Ihnen, seinen Artikel zu lesen, aber hier ist ein besonders prägnanter Absatz zu Ihrer Frage:

"Dienstprinzipalnamen definieren, welche Dienste im Kontosicherheitskontext ausgeführt werden. Einige der Dienste, die ein Computer möglicherweise hat, sind Dateiserver / CIFS (Common Internet File System). Wenn es sich um einen Domänencontroller handelt, verfügt er über LDAP SPN und Active Directory-Replikations-SPN sowie FRS-SPN. Dienstprinzipalnamen können für Benutzerkonten definiert werden, wenn ein Dienst oder eine Anwendung im Sicherheitskontext dieses Benutzers ausgeführt wird. In der Regel werden diese Benutzerkontentypen als "Dienstkonten" bezeichnet Sehr wichtig ist, dass Sie verstehen, dass Dienstprinzipalnamen in der gesamten Active Directory-Gesamtstruktur eindeutig sein MÜSSEN. "

Der gesamte Artikel ist hier zu finden: http://blogs.technet.com/b/askds/archive/2008/03/06/kerberos-for-the-busy-admin.aspx

Ryan Ries
quelle