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 kan 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

Dricks

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

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

  • Clear-Host (cls, clear)
  • Exit-PSSession (exsn, exit)
  • Get-Command (gcm)
  • Get-FormatData
  • Get-Help
  • Measure-Object (measure)
  • Out-Default
  • Select-Object (select)

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 administrativ behö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 har angetts 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'

Kommentar

Virtuella konton beviljas tillfälligt inloggning som en tjänsträtt i den lokala serversäkerhetsprincipen. Om en av de angivna VirtualAccountGroups redan har beviljats den här rättigheten i principen läggs det enskilda virtuella kontot inte längre 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. GMSAs ger dig 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 tillbaka å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.

Kommentar

Grupphanterade tjänstkonton är endast 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 kommandona som körs av användaren. De kan vara användbara för ett granskningsteam som behöver förstå vem som gjorde 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 att granska 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 det fullständiga filsystemet eller exponera FileSystem-providern. Innehållet i användarenheten är beständiga mellan sessioner för att hantera situationer där nätverksanslutningen kan avbrytas.

MountUserDrive = $true

Med användarenheten kan du som standard lagra högst 50 MB data per användare. 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 i användarenheten ska vara beständiga kan du konfigurera en schemalagd aktivitet i systemet för att automatiskt rensa mappen varje kväll.

Kommentar

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. Varje användare eller grupp 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å rollkapacitetsfilen, 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å rollkapacitetsfilen. 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ökas 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 att vara 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 lösning för multifaktorautentisering med JEA.

Regler för villkorsstyrd åtkomst definieras i fältet RequiredGroups i en sessionskonfigurationsfil. Där kan du ange en hashtable (valfritt kapslad) som använder "And" och "Or"-nycklar för att konstruera 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' }}

Kommentar

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 verifierar en sessionskonfiguration för JEA. Rolldefinitionerna skapas och lagras i variabeln $roles för bekvämlighet och läsbarhet. det är inte ett krav för 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' }
}

$parameters = @{
    SessionType = 'RestrictedRemoteServer'
    Path = '.\JEAConfig.pssc'
    RunAsVirtualAccount = $true
    TranscriptDirectory = 'C:\ProgramData\JEAConfiguration\Transcripts'
    RoleDefinitions = $roles
    RequiredGroups = @{ Or = '2FA-logon', 'smartcard-logon' }
}
New-PSSessionConfigurationFile @parameters
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 jea-sessionskonfigurationen igen med hjälp av en uppdaterad sessionskonfigurationsfil.

Nästa steg