Service Principal Name Manager Powershell

Service Principal Name Manager

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.

Service Principal Name Manager

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.

Powershell delete service principal name

Auf die gleiche und einfache Weise lassen sich die Service Principal Names auch wieder hinzufügen.

ADD SPN per Powershell Tool

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:

SPN Manager

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.

  1. 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.
  2. 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.
  3. 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.