JEA-sessionskonfigurationer

En JEA-slutpunkt registreras i ett system genom att skapa och registrera en PowerShell-sessionskonfigurationsfil. Sessionskonfigurationer definierar vem som kan använda JEA-slutpunkten och vilka roller de har åtkomst till. De definierar också globala inställningar som gäller för alla användare av JEA-sessionen.

Skapa en sessionskonfigurationsfil

Om du vill registrera en JEA-slutpunkt måste du ange hur slutpunkten ska konfigureras. Det finns många alternativ att tänka på. De viktigaste alternativen är:

  • Vem har åtkomst till JEA-slutpunkten
  • Vilka roller de tilldelas
  • Vilken identitet JEA använder under täcket
  • Namnet på JEA-slutpunkten

De här alternativen definieras i en PowerShell-datafil med ett .pssc tillägg som kallas en PowerShell-sessionskonfigurationsfil. Sessionskonfigurationsfilen kan redigeras med valfri textredigerare.

Kör följande kommando för att skapa en tom mallkonfigurationsfil.

New-PSSessionConfigurationFile -SessionType RestrictedRemoteServer -Path .\MyJEAEndpoint.pssc

Tips

Endast de vanligaste konfigurationsalternativen ingår i mallfilen som standard. Använd växeln -Full för att inkludera alla tillämpliga inställningar i den genererade PSSC.

Fältet -SessionType RestrictedRemoteServer anger att sessionskonfigurationen används av JEA för säker hantering. Sessioner av den här typen körs i NoLanguage-läge och har bara åtkomst till följande standardkommandon (och alias):

  • Clear-Host (cls, klar)
  • Exit-PSSession (exsn, exit)
  • Get-Command (gcm)
  • Get-FormatData
  • Get-Help
  • Measure-Object (mått)
  • Out-Default
  • Select-Object (välj)

Inga PowerShell-leverantörer är tillgängliga och inga externa program (körbara filer eller skript).

Mer information om språklägen finns i about_Language_modes.

Välj JEA-identiteten

I bakgrunden behöver JEA en identitet (konto) som ska användas när du kör en ansluten användares kommandon. Du definierar vilken identitet JEA använder i sessionskonfigurationsfilen.

Lokalt virtuellt konto

Lokala virtuella konton är användbara när alla roller som definierats för JEA-slutpunkten används för att hantera den lokala datorn och ett lokalt administratörskonto räcker för att köra kommandona. Virtuella konton är tillfälliga konton som är unika för en viss användare och endast varar under hela PowerShell-sessionen. På en medlemsserver eller arbetsstation tillhör virtuella konton den lokala datorns administratörsgrupp . På en Active Directory-domän-kontrollant tillhör virtuella konton domänens domänadministratörsgrupp.

# Setting the session to use a virtual account
RunAsVirtualAccount = $true

Om de roller som definieras av sessionskonfigurationen inte kräver fullständig administratörsbehörighet kan du ange de säkerhetsgrupper som det virtuella kontot ska tillhöra. På en medlemsserver eller arbetsstation måste de angivna säkerhetsgrupperna vara lokala grupper, inte grupper från en domän.

När en eller flera säkerhetsgrupper anges tilldelas inte det virtuella kontot till gruppen lokala administratörer eller domänadministratörer.

# Setting the session to use a virtual account that only belongs to the NetworkOperator and NetworkAuditor local groups
RunAsVirtualAccount = $true
RunAsVirtualAccountGroups = 'NetworkOperator', 'NetworkAuditor'

Anteckning

Virtuella konton beviljas tillfälligt inloggningen som en tjänst i den lokala serversäkerhetsprincipen. Om en av de angivna VirtualAccountGroups redan har beviljats den här rättigheten i principen kommer det enskilda virtuella kontot inte längre att läggas till och tas bort från principen. Detta kan vara användbart i scenarier som domänkontrollanter där revisioner av domänkontrollantens säkerhetsprincip granskas noggrant. Detta är endast tillgängligt i Windows Server 2016 med sammanslagningen november 2018 eller senare och Windows Server 2019 med sammanslagningen januari 2019 eller senare.

Grupphanterat tjänstkonto

Ett grupphanterat tjänstkonto (GMSA) är lämplig identitet att använda när JEA-användare behöver komma åt nätverksresurser som filresurser och webbtjänster. MED GMSAs får du en domänidentitet som används för att autentisera med resurser på alla datorer i domänen. De rättigheter som en GMSA tillhandahåller bestäms av de resurser som du har åtkomst till. Du har inte administratörsbehörighet på några datorer eller tjänster om inte datorn eller tjänstadministratören uttryckligen har beviljat dessa rättigheter till GMSA.

# Configure JEA sessions to use the GMSA in the local computer's domain
# with the sAMAccountName of 'MyJEAGMSA'
GroupManagedServiceAccount = 'Domain\MyJEAGMSA'

GMSA bör endast användas vid behov:

  • Det är svårt att spåra åtgärder till en användare när du använder en GMSA. Varje användare delar samma kör-som-identitet. Du måste granska PowerShell-sessionsavskrifter och loggar för att korrelera enskilda användare med deras åtgärder.

  • GMSA kan ha åtkomst till många nätverksresurser som den anslutande användaren inte behöver åtkomst till. Försök alltid att begränsa gällande behörigheter i en JEA-session för att följa principen om lägsta behörighet.

Anteckning

Grupphanterade tjänstkonton är bara tillgängliga på domänanslutna datorer med PowerShell 5.1 eller senare.

Mer information om hur du skyddar en JEA-session finns i artikeln om säkerhetsöverväganden .

Sessionsavskrifter

Vi rekommenderar att du konfigurerar en JEA-slutpunkt för att automatiskt registrera avskrifter av användarnas sessioner. PowerShell-sessionsavskrifter innehåller information om den anslutande användaren, körningen som identitet som tilldelats dem och de kommandon som körs av användaren. De kan vara användbara för ett granskningsteam som behöver förstå vem som har gjort en specifik ändring i ett system.

Om du vill konfigurera automatisk transkription i sessionskonfigurationsfilen anger du en sökväg till en mapp där avskrifterna ska lagras.

TranscriptDirectory = 'C:\ProgramData\JEAConfiguration\Transcripts'

Avskrifter skrivs till mappen av det lokala systemkontot , vilket kräver läs- och skrivåtkomst till katalogen. Standardanvändare bör inte ha åtkomst till mappen. Begränsa antalet säkerhetsadministratörer som har åtkomst till granskning av avskrifterna.

Användarenhet

Om dina anslutna användare behöver kopiera filer till eller från JEA-slutpunkten kan du aktivera användarenheten i sessionskonfigurationsfilen. Användarenheten är en PSDrive som mappas till en unik mapp för varje anslutande användare. Med den här mappen kan användare kopiera filer till eller från systemet utan att ge dem åtkomst till hela filsystemet eller exponera FileSystem-providern. Innehållet i användarenheten är beständigt mellan sessioner för att hantera situationer där nätverksanslutningen kan avbrytas.

MountUserDrive = $true

Som standard kan du lagra högst 50 MB data per användare på användarenheten. Du kan begränsa mängden data som en användare kan använda med fältet UserDriveMaximumSize .

# Enables the user drive with a per-user limit of 500MB (524288000 bytes)
MountUserDrive = $true
UserDriveMaximumSize = 524288000

Om du inte vill att data på användarenheten ska vara beständiga kan du konfigurera en schemalagd uppgift i systemet för att automatiskt rensa mappen varje natt.

Anteckning

Användarenheten är endast tillgänglig i PowerShell 5.1 eller senare.

Mer information om PSDrives finns i Hantera PowerShell-enheter.

Rolldefinitioner

Rolldefinitioner i en sessionskonfigurationsfil definierar mappningen av användare till roller. Alla användare eller grupper som ingår i det här fältet beviljas behörighet till JEA-slutpunkten när den är registrerad. Varje användare eller grupp kan bara inkluderas som en nyckel i hash-tabellen en gång, men kan tilldelas flera roller. Namnet på rollfunktionen ska vara namnet på rollfunktionsfilen, utan .psrc tillägget.

RoleDefinitions = @{
    'CONTOSO\JEA_DNS_ADMINS'    = @{ RoleCapabilities = 'DnsAdmin', 'DnsOperator', 'DnsAuditor' }
    'CONTOSO\JEA_DNS_OPERATORS' = @{ RoleCapabilities = 'DnsOperator', 'DnsAuditor' }
    'CONTOSO\JEA_DNS_AUDITORS'  = @{ RoleCapabilities = 'DnsAuditor' }
}

Om en användare tillhör mer än en grupp i rolldefinitionen får de åtkomst till rollerna för var och en. När två roller ger åtkomst till samma cmdletar beviljas användaren den mest tillåtande parameteruppsättningen.

När du anger lokala användare eller grupper i fältet rolldefinitioner måste du använda datornamnet, inte localhost eller jokertecken. Du kan kontrollera datornamnet genom att granska variabeln $env:COMPUTERNAME .

RoleDefinitions = @{
    'MyComputerName\MyLocalGroup' = @{ RoleCapabilities = 'DnsAuditor' }
}

Sökordning för rollfunktioner

Som du ser i exemplet ovan refereras rollfunktionerna till av basnamnet på rollfunktionsfilen. Basnamnet för en fil är filnamnet utan tillägget. Om flera rollfunktioner är tillgängliga i systemet med samma namn använder PowerShell sin implicita sökordning för att välja den effektiva rollfunktionsfilen. JEA ger inte åtkomst till alla rollfunktionsfiler med samma namn.

JEA använder $env:PSModulePath miljövariabeln för att avgöra vilka sökvägar som ska söka efter rollfunktionsfiler. Inom var och en av dessa sökvägar letar JEA efter giltiga PowerShell-moduler som innehåller undermappen "RoleCapabilities". Precis som vid import av moduler föredrar JEA rollfunktioner som levereras med Windows till anpassade rollfunktioner med samma namn.

För alla andra namngivningskonflikter bestäms prioriteten av den ordning i vilken Windows räknar upp filerna i katalogen. Ordningen är inte garanterad alfabetisk. Den första rollfunktionsfilen som matchar det angivna namnet används för den anslutande användaren. Eftersom sökordningen för rollfunktioner inte är deterministisk rekommenderar vi starkt att rollfunktionerna har unika filnamn.

Regler för villkorsstyrd åtkomst

Alla användare och grupper som ingår i fältet RoleDefinitions beviljas automatiskt åtkomst till JEA-slutpunkter. Med regler för villkorsstyrd åtkomst kan du förfina den här åtkomsten och kräva att användarna tillhör ytterligare säkerhetsgrupper som inte påverkar de roller som de har tilldelats. Detta är användbart när du vill integrera en just-in-time-lösning för privilegierad åtkomsthantering, smartkortautentisering eller annan multifaktorautentiseringslösning med JEA.

Regler för villkorsstyrd åtkomst definieras i fältet RequiredGroups i en sessionskonfigurationsfil. Där kan du ange en hash-tabell (valfritt kapslad) som använder nycklarna And och Or för att skapa dina regler. Här följer några exempel på hur du använder det här fältet:

# Example 1: Connecting users must belong to a security group called "elevated-jea"
RequiredGroups = @{ And = 'elevated-jea' }

# Example 2: Connecting users must have signed on with 2 factor authentication or a smart card
# The 2 factor authentication group name is "2FA-logon" and the smart card group name is "smartcard-logon"
RequiredGroups = @{ Or = '2FA-logon', 'smartcard-logon' }

# Example 3: Connecting users must elevate into "elevated-jea" with their JIT system and have logged on with 2FA or a smart card
RequiredGroups = @{ And = 'elevated-jea', @{ Or = '2FA-logon', 'smartcard-logon' }}

Anteckning

Regler för villkorlig åtkomst är endast tillgängliga i PowerShell 5.1 eller senare.

Andra egenskaper

Sessionskonfigurationsfiler kan också göra allt som en rollfunktionsfil kan göra, bara utan möjlighet att ge anslutande användare åtkomst till olika kommandon. Om du vill ge alla användare åtkomst till specifika cmdletar, funktioner eller leverantörer kan du göra det direkt i sessionskonfigurationsfilen. Om du vill ha en fullständig lista över egenskaper som stöds i sessionskonfigurationsfilen kör du Get-Help New-PSSessionConfigurationFile -Full.

Testa en sessionskonfigurationsfil

Du kan testa en sessionskonfiguration med hjälp av cmdleten Test-PSSessionConfigurationFile . Vi rekommenderar att du testar sessionskonfigurationsfilen om du har redigerat .pssc filen manuellt. Testning säkerställer att syntaxen är korrekt. Om en sessionskonfigurationsfil misslyckas med det här testet kan den inte registreras i systemet.

Exempel på sessionskonfigurationsfil

I följande exempel visas hur du skapar och validerar en sessionskonfiguration för JEA. Rolldefinitionerna skapas och lagras i variabeln $roles för enkelhetens skull och läsbarhet. Det är inte ett krav att göra det.

$roles = @{
    'CONTOSO\JEA_DNS_ADMINS'    = @{ RoleCapabilities = 'DnsAdmin', 'DnsOperator', 'DnsAuditor' }
    'CONTOSO\JEA_DNS_OPERATORS' = @{ RoleCapabilities = 'DnsOperator', 'DnsAuditor' }
    'CONTOSO\JEA_DNS_AUDITORS'  = @{ RoleCapabilities = 'DnsAuditor' }
}

New-PSSessionConfigurationFile -SessionType RestrictedRemoteServer -Path .\JEAConfig.pssc -RunAsVirtualAccount -TranscriptDirectory 'C:\ProgramData\JEAConfiguration\Transcripts' -RoleDefinitions $roles -RequiredGroups @{ Or = '2FA-logon', 'smartcard-logon' }
Test-PSSessionConfigurationFile -Path .\JEAConfig.pssc # should yield True

Uppdatera sessionskonfigurationsfiler

Om du vill ändra egenskaperna för en JEA-sessionskonfiguration, inklusive mappningen av användare till roller, måste du avregistrera. Registrera sedan om JEA-sessionskonfigurationen med hjälp av en uppdaterad sessionskonfigurationsfil.

Nästa steg