Windows Powershell Remote Domain Controller
Guten Tag,
eine Gruppe soll via Powershell das Active Directory Modul zur Laufzeit des Programmes vom Domänen Controller laden.
Hierzu wird eine PSSession (Enter-Pssession) benutzt.
Nun ist die Sachlage so dass Nicht Administratoren keine PSSession aufbauen dürfen und somit das Modul auch nicht geladen werden kann.
Gibt es eine Möglichkeit eine Gruppe zu berechtigen dass diese somit das AD Modul vom DC laden kann? Ich möchte keine RSAT Tool auf den Terminal Server installieren da es dann sicherheitstechnisch wieder Probleme gibt.
Mit freundlichen Grüßen
Fabian
eine Gruppe soll via Powershell das Active Directory Modul zur Laufzeit des Programmes vom Domänen Controller laden.
Hierzu wird eine PSSession (Enter-Pssession) benutzt.
Nun ist die Sachlage so dass Nicht Administratoren keine PSSession aufbauen dürfen und somit das Modul auch nicht geladen werden kann.
Gibt es eine Möglichkeit eine Gruppe zu berechtigen dass diese somit das AD Modul vom DC laden kann? Ich möchte keine RSAT Tool auf den Terminal Server installieren da es dann sicherheitstechnisch wieder Probleme gibt.
Mit freundlichen Grüßen
Fabian
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 302471
Url: https://administrator.de/contentid/302471
Ausgedruckt am: 21.11.2024 um 22:11 Uhr
4 Kommentare
Neuester Kommentar
Moin,
das geht mit Powershell Session Configuration Files. Damit kannst du detailliert festlegen was und wer ein User in einer Session machen darf und was nicht.
Gruß jodel32
das geht mit Powershell Session Configuration Files. Damit kannst du detailliert festlegen was und wer ein User in einer Session machen darf und was nicht.
Gruß jodel32
Hallo Fabian,
@114757 hat dir schon den richtigen Ansatz geliefert. Mit einem benutzerdefinierten Configurationfile das man sich mit New-PSSessionConfiguration erstellen und dann mit Register-PSSessionConfiguration registrieren kann, kann man eine ganz klar abgegrenzte Umgebung schaffen was die User machen dürfen und was nicht (z.B. nur bestimmte CMDLets ausführen, Module laden etc.).
Dies ist der erste Schritt. Der zweite besteht darin dieser Config Rechte zuzuweisen.
Die bestehenden Configuration-Files kannst du dir mit Get-PSSessionConfiguration anzeigen lassen. Die Default-Session die die Powershell benutzt wenn man sich per Remote auf einen Server schaltet ist Microsoft.Powershell. Diese wird immer dann benutzt wenn man keine Config per Parameter -ConfigurationName mit übergibt.
Hier die Beispielausgabe:
Um der Default-Config nun andere User/Gruppen den Zufgriff zu erlauben kann man die ACLs der Default-Config anpassen wenn man möchte. Hiermit ruft man den Security-Dialog für die Config auf:
Um einem User/Gruppe nun den Zugriff für Enter-PSSession zu gewähren muss dieser mindestens Ausführen(Invoke) Rechte bekommen.
Besser ist es allerdings auf Produktiv-Servern wie oben geschrieben eine separate Config zu erstellen und den Usern den Zugriff so weit wie möglich einzuschränken.
Wichtiger Hinweis: Hinzu kommt das der Gruppe für das Ausführen von bestimmten Funktionen natürlich auch das Recht dazu erteilt werden muss. Nur allein der Zugriff per Enter-PSSession gibt einem ja nicht gleichzeitig das Recht z.B. DNS-Server-Einstellungen etc. zu ändern.
Was für dich auch interessant sein könnte ist Powershell Web Access, mit dem man Benutzern die Powershell-Umgebung im Browser verfügbar machen kann. Hier lässt sich ebenso der Zugriff mit den oben beschriebenen Configurations so einschränken wie man es benötigt.
Noch mehr Infos dazu kannst du hier nachlesen:
http://powershell.com/cs/media/p/7257.aspx#interactive-remoting
Grüße Uwe
@114757 hat dir schon den richtigen Ansatz geliefert. Mit einem benutzerdefinierten Configurationfile das man sich mit New-PSSessionConfiguration erstellen und dann mit Register-PSSessionConfiguration registrieren kann, kann man eine ganz klar abgegrenzte Umgebung schaffen was die User machen dürfen und was nicht (z.B. nur bestimmte CMDLets ausführen, Module laden etc.).
Dies ist der erste Schritt. Der zweite besteht darin dieser Config Rechte zuzuweisen.
Die bestehenden Configuration-Files kannst du dir mit Get-PSSessionConfiguration anzeigen lassen. Die Default-Session die die Powershell benutzt wenn man sich per Remote auf einen Server schaltet ist Microsoft.Powershell. Diese wird immer dann benutzt wenn man keine Config per Parameter -ConfigurationName mit übergibt.
Hier die Beispielausgabe:
Name : microsoft.powershell
PSVersion : 4.0
StartupScript :
RunAsUser :
Permission :
Name : microsoft.powershell.workflow
PSVersion : 4.0
StartupScript :
RunAsUser :
Permission : VORDEFINIERT\Administrators AccessAllowed, VORDEFINIERT\Remote Management Users AccessAllowed
Name : microsoft.powershell32
PSVersion : 4.0
StartupScript :
RunAsUser :
Permission : VORDEFINIERT\Administrators AccessAllowed, VORDEFINIERT\Remote Management Users AccessAllowed
Name : microsoft.windows.servermanagerworkflows
PSVersion : 3.0
StartupScript :
RunAsUser :
Permission : NT-AUTORITÄT\INTERAKTIV AccessAllowed, VORDEFINIERT\Administrators AccessAllowed
Set-PSSessionConfiguration Microsoft.Powershell -ShowSecurityDescriptorUI -Force
Besser ist es allerdings auf Produktiv-Servern wie oben geschrieben eine separate Config zu erstellen und den Usern den Zugriff so weit wie möglich einzuschränken.
Wichtiger Hinweis: Hinzu kommt das der Gruppe für das Ausführen von bestimmten Funktionen natürlich auch das Recht dazu erteilt werden muss. Nur allein der Zugriff per Enter-PSSession gibt einem ja nicht gleichzeitig das Recht z.B. DNS-Server-Einstellungen etc. zu ändern.
Was für dich auch interessant sein könnte ist Powershell Web Access, mit dem man Benutzern die Powershell-Umgebung im Browser verfügbar machen kann. Hier lässt sich ebenso der Zugriff mit den oben beschriebenen Configurations so einschränken wie man es benötigt.
Noch mehr Infos dazu kannst du hier nachlesen:
http://powershell.com/cs/media/p/7257.aspx#interactive-remoting
Grüße Uwe
Die zwei nötigen CMDLets habe ich dir oben genannt und der erste Link gibt dir die Grundlagen dazu.
Es geht z.B. auch
Weitere Varianten stehen in meinem oben geposteten letzten Link den du dir unbedingt mal komplett durchlesen solltest!
Grüße Uwe
Für mich hört sich das so an als müsste ich das Configfile auf dem Zielcomputer hinterlegen beziehungsweise erstellen.
Auf dem Server auf dessen Powershell Session du zugreifen willst.Wie ich nun nur das Modul/CMDlet "ActiveDirectory" für einen Sideload freigebe verstehe ich schlicht weg noch nicht.
Steht im Link von jodel, und wenn du mal in das generierte File rein schaust, sollten die kommentierten Abschnitte selbsterklärend sein. Etwa lesen musst du schon wenn du es komplett verstehen willst.Des Weiteren wie wird dann die Session vom Client aus aufgebaut?
Enter-PSSession -Computername DC -ConfigurationName AD.pss?
Das ist eine von vielen möglichen Varianten.Enter-PSSession -Computername DC -ConfigurationName AD.pss?
Es geht z.B. auch
$s = New-PSSession -Computername DC -ConfigurationName MyPSC
Invoke-Command -Session $s {get-aduser maxmuster}
Wenn ich einmal so eine Configfile erstellt habe ist das dann Global oder bleibt die default bestehen und die neue liegt neben dran?
Die ist immer optional, es wird nichts überschrieben und die Default bleibt natürlich erhalten. Die zusätzlichen Configs kann man nutzen, muss man aber nicht. Also alles optional und ohne Gefahr durchführbarDer Benutzer bekommt natürlich per GPO die Rechte zum Ausführen von Powershell Befehlen.
Gut.Danke schon jetzt für deine Antwort
Bitte.Grüße Uwe