Manage your SPNs with Powershell
Für das Managen von Service Principal Names in einer Domäne bedarf diesem Skript “Service Principal Name Manager” die Rechte eines Domain-Admins oder explizit vergebene Rechte. Damit lassen sich die SPNs pro Objekt auslesen, löschen oder neue hinzufügen. Das Thema ist gerade für die Kollegen (Datenbänker) interessant.
Service Principal Name Manager
Die Nutzung des Tools ist recht einfach aber elegant, weil die letzten Eingaben nicht gelöscht werden und so nicht erneut eingegeben werden müssen. Der erste TAB hat nur Leseberechtigung und lädt dazu ein, sich einen Überblick zu verschaffen.
Auf dem zweiten TAB hast du dann die Möglichkeit einen oder mehrere SPNs auf einmal zu löschen, in dem du sie lediglich markierst und auf Löschen klickst.
Auf die gleiche und einfache Weise lassen sich die Service Principal Names auch wieder hinzufügen.
Dem Skript habe ich noch den ausführenden Benutzernamen unter dem Domain-Name hinzugefügt. Ist auf den Bildern nicht ersichtlich, war eine Ergänzung.
Das Powershell-Skript könnt ihr unter folgender Adresse herunterladen:
What is the SPN in Active Directory?
Ein Service Principal Name (SPN) ist ein eindeutiger Bezeichner für eine Dienstinstanz. SPNs werden in der Kerberos-Authentifizierung verwendet, um eine Dienstinstanz einem Dienstanmeldekonto zuzuordnen. Dies ermöglicht es einer Clientanwendung, die Authentifizierung für einen Dienst anzufordern, auch wenn der Client den Kontonamen nicht kennt.
- Definition und Format:
- Ein SPN besteht aus mehreren Komponenten, die den Dienst, den Host und optional den Port und die Dienstinstanz spezifizieren. Das Format ist in der Regel:
Dienst/Host:Port/Instanz
. - Beispiel:
HTTP/webserver.windowspapst.de:80
für einen Webdienst auf Port 80.
- Ein SPN besteht aus mehreren Komponenten, die den Dienst, den Host und optional den Port und die Dienstinstanz spezifizieren. Das Format ist in der Regel:
- Registrierung eines SPNs:
- Bevor Kerberos einen SPN zur Authentifizierung verwenden kann, muss der SPN für das Kontoobjekt registriert werden, das die Dienstinstanz zur Anmeldung verwendet. Dies geschieht in der Regel in Active Directory.
- Ein SPN kann nur für ein Konto registriert werden. Wenn sich das Anmeldekonto eines Dienstes ändert, müssen die SPNs unter dem neuen Konto erneut registriert werden1.
- Verwendung in der Kerberos-Authentifizierung:
- Wenn sich ein Benutzer an einer Domäne anmeldet, erhält er ein Ticket Granting Ticket (TGT) vom Domain Controller (DC).
- Möchte der Benutzer auf einen Dienst zugreifen, fordert er beim DC ein Session Ticket für den Dienst an, indem er den entsprechenden SPN angibt.
- Der DC sucht in seiner Liste der SPNs nach einem passenden Eintrag und stellt ein Session Ticket aus, das der Benutzer dann dem Dienst vorlegt
Beispiel für die Einrichtung eines SPNs
Angenommen, Sie haben einen SQL Server-Dienst, der unter einem bestimmten Dienstkonto (srv-sql-user) läuft. Sie können einen SPN für diesen Dienst wie folgt registrieren:
setspn -A MSSQLSvc/sqlserver.windowspapst.de:1433 srv-sql-user
Hierbei steht MSSQLSvc
für den SQL Server-Dienst, sqlserver.windowspapst.de
für den Hostnamen und 1433
für den Port.
Vorteile der Verwendung von SPNs
- Sichere Authentifizierung: SPNs ermöglichen eine sichere und vertrauenswürdige Authentifizierung ohne die Notwendigkeit, Passwörter mehrfach einzugeben.
- Delegation: SPNs sind notwendig für die Delegation, bei der ein Dienst im Namen eines Benutzers auf andere Dienste zugreifen kann.