Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Istnieją scenariusze, w których chcesz hostować sesję programu PowerShell, która ze względów bezpieczeństwa została ograniczona do podzbioru poleceń programu PowerShell.
Z definicji sesja ograniczona to taka, w której nie można używać Import-Module. Mogą istnieć inne ograniczenia, ale jest to podstawowe wymaganie. Jeśli użytkownik może zaimportować moduł, może uruchomić dowolny moduł.
Przykłady sesji z ograniczeniami obejmują:
- Just-Enough-Administration (JEA)
- Niestandardowe ograniczone implementacje zdalnej komunikacji, takie jak moduły Exchange i Teams
W przypadku większości administratorów systemu narzędzie JEA zapewnia najlepsze środowisko tworzenia sesji z ograniczeniami i powinno być twoim pierwszym wyborem. Aby uzyskać więcej informacji na temat JEA, zobacz Omówienie JEA.
Zalecenia dotyczące niestandardowych implementacji sesji
Jeśli twój scenariusz wymaga implementacji niestandardowej, należy postępować zgodnie z tymi zaleceniami.
Ograniczanie użycia i możliwości dostawców programu PowerShell
Zapoznaj się ze sposobem użycia dozwolonych dostawców, aby upewnić się, że nie tworzysz luk w zabezpieczeniach w implementacji sesji z ograniczeniami.
Ostrzeżenie
Nie zezwalaj na dostawcę systemu plików. Jeśli użytkownicy mogą zapisywać dane w dowolnej części systemu plików, można całkowicie pominąć zabezpieczenia.
Nie zezwalaj na dostawcę certyfikatów . Po włączeniu dostawcy użytkownik może uzyskać dostęp do przechowywanych kluczy prywatnych.
Nie zezwalaj na polecenia, które mogą tworzyć nowe przestrzenie uruchomieniowe
Ostrzeżenie
Polecenia *-Job cmdlet mogą tworzyć nowe środowiska uruchomieniowe bez żadnych ograniczeń.
Nie zezwalaj na korzystanie z polecenia Trace-Command cmdlet.
Ostrzeżenie
Użycie Trace-Command powoduje przeniesienie wszystkich śledzonych poleceń do sesji.
Nie twórz własnych implementacji serwera proxy dla poleceń z ograniczeniami
Program PowerShell ma zestaw poleceń serwera proxy dla scenariuszy poleceń z ograniczeniami. Te polecenia serwera proxy zapewniają, że parametry wejściowe nie mogą naruszyć bezpieczeństwa sesji. Następujące polecenia są ograniczone przez serwery proxy.
Exit-PSSessionGet-CommandGet-FormatDataGet-HelpMeasure-ObjectOut-DefaultSelect-Object
Jeśli tworzysz własną implementację tych poleceń, możesz przypadkowo zezwolić użytkownikom na uruchamianie kodu zabronionego przez polecenia serwera proxy JEA.
Aby uzyskać listę poleceń z ograniczeniami, możesz uruchomić następujące polecenie:
$commands = [System.Management.Automation.CommandMetadata]::GetRestrictedCommands(
[System.Management.Automation.SessionCapabilities]::RemoteServer
)
Polecenia ograniczonego serwera proxy można sprawdzić za pomocą następującego polecenia:
$commands = [System.Management.Automation.CommandMetadata]::GetRestrictedCommands(
[System.Management.Automation.SessionCapabilities]::RemoteServer
)
$getHelpProxyBlock = [System.Management.Automation.ProxyCommand]::Create($commands['Get-Help'])
Konfigurowanie sesji do korzystania z trybu NoLanguage
Tryb programu PowerShell NoLanguage wyłącza całkowicie język skryptów programu PowerShell. Nie można uruchamiać skryptów ani używać zmiennych. Można uruchamiać tylko natywne polecenia i polecenia cmdlet.
Aby uzyskać więcej informacji na temat trybów języka, zobacz about_Language_Modes.
Nie zezwalaj na używanie debugera w sesji
Domyślnie debuger programu PowerShell uruchamia kod w FullLanguage trybie. Ustaw właściwość UseFullLanguageModeInDebugger w obszarze SessionState na wartość false.
Aby uzyskać więcej informacji, zobacz UseFullLanguageModeInDebugger.