JEA: Rollenfunktionen definieren und einer PowerShell Session Configuration zuordnen

    Role Capabilty File im JEA Helper Tool bearbeitenMit Just Enough Administration (JEA) kön­nen Benutzer ohne admini­strative Berech­tigungen Manage­ment-Aufgaben über­nehmen. Die Grund­lage für JEA bilden Session-Konfi­gurationen, die bestim­men, wer Zugriff bekommt. Role Capabilities definieren dann die Mittel, welche in PowerShell zur Ver­fügung stehen.

    Bereits beim Anlegen oder Ändern einer Sitzungs­konfi­guration 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 Sprach­modus 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öglich­keiten in einer Session genau auf die Erfor­dernisse für bestimmte Aufgaben abzustimmen, dann sollte man die Rollen­funktionen 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 Rollen­funktionen direkt in ihrer Konfigurations­datei ändert, und danach WinRM neu starten. Externe Rollen­definitionen werden dagegen einfach zur Laufzeit eingelesen.

    Zum anderen lassen sich eigen­ständige Role Capability Files an mehrere Session Configurations zuweisen, so dass man redundante Informationen vermeiden kann. Umgekehrt ist es auch möglich, mehrere dieser Rollen­funktionen in einer einzigen Sitzungs­konfiguration zu verwenden, so dass man sie modular aufbauen kann.

    Role Capability File generieren

    Bei den Dateien zur Beschreibung von Rollen­fähigkeiten mit der Endung .psrc handelt es sich um Textdateien. Ein Skelett für eine solche lässt mit dem Befehl

    New-PSRoleCapabilityFile -Path MyRCF.psrc

    erzeugen. Sie enthält alle verfügbaren Optionen plus dazugehöriger Beschreibung in auskom­mentierter 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.

    Beispiel für eine Role Capability File und ihre Optionen

    Zu den wichtigsten Aspekten einer Rollen­definition 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 zusammen­stellen, welche die Benutzer einer bestimmten Session verwenden dürfen.

    Auswahl der für eine Session Configuration erwünschten Cmdlets

    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.

    Auswahl der zulässigen Parameter eines Cmdlets

    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 Konfigurations­datei mit der Endung .pssc und ergänzt dort die Rollen­funktionen.

    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öglich­keiten 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 Rollen­funktionen, welche in SqlManaged.psrc definiert wurden.

    Optionen zur Definition von Role Capabilities in einer Session Configuration File

    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.

    Keine Kommentare