Tags: PowerShell, Remote-Verwaltung, Rechteverwaltung
Mit Just Enough Administration (JEA) können Benutzer ohne administrative Berechtigungen Management-Aufgaben übernehmen. Die Grundlage für JEA bilden Session-Konfigurationen, die bestimmen, wer Zugriff bekommt. Role Capabilities definieren dann die Mittel, welche in PowerShell zur Verfügung stehen.
Bereits beim Anlegen oder Ändern einer Sitzungskonfiguration mit Register- bzw. Set-PSSessionConfiguration kann man einige Eigenschaften steuern. Deutlich mehr Optionen bietet eine Configuration File (.pssc). So lässt sich dort ein bestimmter Sprachmodus erzwingen oder der Zugriff auf spezifische Cmdlets einschränken (siehe dazu: Remote-Sitzungen in PowerShell für Standardbenutzer erlauben).
Wenn man aber ein komplexeres Regelwerk benötigt, um die Möglichkeiten in einer Session genau auf die Erfordernisse für bestimmte Aufgaben abzustimmen, dann sollte man die Rollenfunktionen in einer eigenen .psrc-Datei definieren.
Mehr Flexibilität durch Role Capability Files
Dies hat zumindest zwei Vorteile. Zum einen muss man eine Session Configuration jedes Mal aktualisieren, wenn man die Rollenfunktionen direkt in ihrer Konfigurationsdatei ändert, und danach WinRM neu starten. Externe Rollendefinitionen werden dagegen einfach zur Laufzeit eingelesen.
Zum anderen lassen sich eigenständige Role Capability Files an mehrere Session Configurations zuweisen, so dass man redundante Informationen vermeiden kann. Umgekehrt ist es auch möglich, mehrere dieser Rollenfunktionen in einer einzigen Sitzungskonfiguration zu verwenden, so dass man sie modular aufbauen kann.
Role Capability File generieren
Bei den Dateien zur Beschreibung von Rollenfähigkeiten mit der Endung .psrc handelt es sich um Textdateien. Ein Skelett für eine solche lässt sich mit dem Befehl
New-PSRoleCapabilityFile -Path MyRCF.psrc
erzeugen. Sie enthält alle verfügbaren Optionen plus dazugehöriger Beschreibung in auskommentierter Form, so dass man sie gleich in einem Editor bearbeiten kann. Beim Erstellen der Datei könnte man aber auch gleich die zahlreichen Parameter von New-PSRoleCapabilityFile nutzen, um diverse Einstellungen zu setzen.
Zu den wichtigsten Aspekten einer Rollendefinition gehört die Einschränkung von Sessions auf bestimmte Cmdlets, functions, Aliase oder Variablen. Die Nutzung von Cmdlets lässt sich dabei bis auf die Ebene der einzelnen Parameter regeln.
VisibleCmdlets über GUI zusammenstellen
Wenn man solche detaillierten Angaben manuell in die .psrc-Datei eintragen möchte, dann ist das relativ aufwändig. Diesen Job vereinfacht das JEA Helper Tool, ein PowerShell-Script mit GUI. Auf der Registerkarte Role Capabilities Design kann man interaktiv die Liste der Cmdlets zusammenstellen, welche die Benutzer einer bestimmten Session verwenden dürfen.
Wenn man aus dem Drop-down in der dritten Zeile ein Modul auswählt und danach auf Filter Cmdlets klickt, dann reduziert sich die Liste in der zweiten Zeile auf die Cmdlets des betreffenden Moduls. Nach der Auswahl eines Cmdlets öffnet sich daneben ein Drop-Down mit allen seinen Parametern. Hier kann man einzelne zulassen oder keinen Eintrag anhaken, um alle zu freizugeben.
Das Tool bietet noch weitere Features, wie etwa das Erstellen eines .psrc-Gerüsts mit New-PSRoleCapabilityFile oder einer neuen Session Configuration. Angesichts der umständlichen Bedienung wird man aber darauf in der Regel verzichten.
Role Capability File speichern
Hat man die Liste der zulässigen Cmdlets und Parameter erstellt, dann kann man sie in die .psrc-Datei übernehmen. Diese speichert man in ein Verzeichnis namens RoleCapabilities unterhalb von
$env:ProgramFiles\WindowsPowerShell\Modules
Rollenfunktionen an Session Configuration zuweisen
Im letzten Schritt verknüpft man die Role Capabilities mit der gewünschten Session Configuration. Dazu editiert man deren Konfigurationsdatei mit der Endung .pssc und ergänzt dort die Rollenfunktionen.
Nachdem man auch diese Datei zu Beginn automatisch erzeugt und danach anpasst, sollte sich dort bereits dieser (auskommentierte) Abschnitt für RoleDefinitions finden:
Nach dem gleichen Muster ergänzt man nun seinen eigenen Eintrag, wobei man wie im Beispiel ersichtlich, 3 Möglichkeiten hat. Die letzte davon definiert die zulässigen Cmdlets direkt in der Session Configuration File und scheidet daher aus, wenn man eine .psrc-Datei nutzt.
Wenn man die .psrc-File mit dem Namen SqlManaged.psrc wie oben beschrieben unterhalb des Modulpfads ablegt, dann könnte der Eintrag so aussehen:
RoleDefinitions = @{ 'contoso\SqlAdmins' = @{ RoleCapabilities = 'SqlAdministration' }};
Damit erhält die Gruppe SqlAdmins aus der Domäne contoso die Rollenfunktionen, welche in SqlManaged.psrc definiert wurden.
Hat man für die Datei einen anderen Speicherort gewählt, dann muss man so vorgehen wie der letzte Eintrag des Beispiels zeigt und den Namen der Datei inklusive Pfad über RoleCapabilityFiles angeben.
Zum Abschluss muss man die Session Configuration durch Aufruf von
Set-PSSessionConfiguration -Name MySessionConfig -Path .\MyConfig.pssc
aktualisieren.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
- JEA Session Configuration: Remote-Sitzungen in PowerShell für Standardbenutzer erlauben, Funktionen beschränken
- ThinPrint 13 unterstützt Microsofts V4-Druckertreiber und MMC
- Ordner freigeben mit PowerShell
- Exchange Impersonation: Service-Benutzer auf Postfächer berechtigen
- PowerShell 7.3: JEA über SSH, Cmdlet für Setup, erweiterte ARM-Unterstützung
Weitere Links