Condividi tramite


Configurazioni di sessione JEA

Un endpoint JEA viene registrato in un sistema creando e registrando un file di configurazione di sessione di PowerShell. Le configurazioni di sessione definiscono chi può usare l'endpoint JEA e i ruoli a cui hanno accesso. Definiscono anche le impostazioni globali applicabili a tutti gli utenti della sessione JEA.

Creare un file di configurazione della sessione

Per registrare un endpoint JEA, è necessario specificare la modalità di configurazione dell'endpoint. Sono disponibili molte opzioni da considerare. Le opzioni più importanti sono:

  • Chi può accedere all'endpoint JEA
  • Quali ruoli possono essere assegnati
  • Quale identità JEA usa sotto le quinte
  • Nome dell'endpoint JEA

Queste opzioni sono definite in un file di dati di PowerShell con un'estensione .pssc nota come file di configurazione della sessione di PowerShell. Il file di configurazione della sessione può essere modificato usando qualsiasi editor di testo.

Eseguire il comando seguente per creare un file di configurazione modello vuoto.

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

Suggerimento

Per impostazione predefinita, nel file modello sono incluse solo le opzioni di configurazione più comuni. Usare l'opzione -Full per includere tutte le impostazioni applicabili nel PSSC generato.

Il -SessionType RestrictedRemoteServer campo indica che la configurazione della sessione viene usata da JEA per la gestione sicura. Le sessioni di questo tipo funzionano in modalità NoLanguage e hanno accesso solo ai comandi predefiniti seguenti (e alias):

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

Non sono disponibili provider di PowerShell né programmi esterni (eseguibili o script).

Per altre informazioni sulle modalità del linguaggio, vedere about_Language_Modes.

Scegliere l'identità JEA

In background, JEA richiede un'identità (account) da usare quando si eseguono i comandi di un utente connesso. Definire l'identità usata da JEA nel file di configurazione della sessione.

Account virtuale locale

Gli account virtuali locali sono utili quando tutti i ruoli definiti per l'endpoint JEA vengono usati per gestire il computer locale e un account amministratore locale è sufficiente per eseguire correttamente i comandi. Gli account virtuali sono account temporanei univoci per un utente specifico e durano solo per la durata della sessione di PowerShell. In un server membro o in una workstation, gli account virtuali appartengono al gruppo Administrators del computer locale. In un controller di dominio Active Directory gli account virtuali appartengono al gruppo Domain Admins del dominio.

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

Se i ruoli definiti dalla configurazione della sessione non richiedono privilegi amministrativi completi, è possibile specificare i gruppi di sicurezza a cui appartiene l'account virtuale. In un server membro o in una workstation, i gruppi di sicurezza specificati devono essere gruppi locali, non gruppi da un dominio.

Quando vengono specificati uno o più gruppi di sicurezza, l'account virtuale non viene assegnato al gruppo administrators locale o di dominio.

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

Annotazioni

Agli account virtuali viene concesso temporaneamente il diritto di accesso come servizio nei criteri di sicurezza del server locale. Se uno dei VirtualAccountGroups specificati è già stato concesso questo diritto nei criteri, il singolo account virtuale non verrà più aggiunto e rimosso dal criterio. Ciò può essere utile in scenari come i controller di dominio in cui le revisioni dei criteri di sicurezza del controller di dominio vengono controllate attentamente. Questa opzione è disponibile solo in Windows Server 2016 con l'aggiornamento cumulativo di novembre 2018 o versione successiva e Windows Server 2019 con l'aggiornamento cumulativo di gennaio 2019 o versione successiva.

Account del servizio gestito dal gruppo

Un account del servizio gestito dal gruppo (GMSA) è l'identità appropriata da usare quando gli utenti JEA devono accedere alle risorse di rete, ad esempio condivisioni file e servizi Web. Gli GMSA forniscono un'identità di dominio usata per l'autenticazione con le risorse in qualsiasi computer all'interno del dominio. I diritti forniti da un GMSA sono determinati dalle risorse a cui si accede. Non si dispone dei diritti di amministratore per computer o servizi, a meno che il computer o l'amministratore del servizio non abbia concesso esplicitamente tali diritti all'GMSA.

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

Gli GMSA devono essere usati solo quando necessario:

  • È difficile tracciare le azioni di un utente quando si usa un GMSA. Ogni utente condivide la stessa identità run-as. È necessario esaminare le trascrizioni e i log delle sessioni di PowerShell per correlare singoli utenti con le relative azioni.

  • Il gmsa può avere accesso a molte risorse di rete a cui l'utente che si connette non deve accedere. Provare sempre a limitare le autorizzazioni valide in una sessione JEA per seguire il principio dei privilegi minimi.

Annotazioni

Gli account di servizio gestiti di gruppo sono disponibili solo nei computer aggiunti a un dominio che utilizzano PowerShell 5.1 o versione successiva.

Per altre informazioni sulla protezione di una sessione JEA, vedere l'articolo considerazioni sulla sicurezza .

Trascrizioni di sessione

È consigliabile configurare un endpoint JEA per registrare automaticamente le trascrizioni delle sessioni degli utenti. Le trascrizioni di sessione di PowerShell contengono informazioni sull'utente connesso, sull'identità con cui vengono eseguite le sessioni e sui comandi eseguiti dall'utente. Possono essere utili per un team di controllo che deve comprendere chi ha apportato una modifica specifica a un sistema.

Per configurare la trascrizione automatica nel file di configurazione della sessione, specificare un percorso a una cartella in cui archiviare le trascrizioni.

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

Le trascrizioni vengono scritte nella cartella dall'account Sistema Locale, che richiede l'accesso in lettura e scrittura alla directory. Gli utenti standard non devono avere accesso alla cartella. Limitare il numero di amministratori della sicurezza che hanno accesso per controllare le trascrizioni.

Unità utente

Se gli utenti che si connettono hanno bisogno di copiare file verso o dall'endpoint JEA, è possibile abilitare l'unità utente nel file di configurazione della sessione. L'unità utente è un PSDrive associato a una cartella univoca per ciascun utente che si connette. Questa cartella consente agli utenti di copiare file da o verso il sistema senza concedere loro l'accesso al file system completo o esporre il provider FileSystem. Il contenuto dell'unità utente è persistente tra le sessioni per gestire situazioni in cui la connettività di rete può essere interrotta.

MountUserDrive = $true

Per impostazione predefinita, l'unità utente consente di archiviare un massimo di 50 MB di dati per utente. È possibile limitare la quantità di dati che un utente può utilizzare con il campo UserDriveMaximumSize .

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

Se non si desidera che i dati nell'unità utente siano persistenti, è possibile configurare un'attività pianificata nel sistema per pulire automaticamente la cartella ogni notte.

Annotazioni

L'unità utente è disponibile solo in PowerShell 5.1 o versione successiva.

Per ulteriori informazioni su PSDrives, vedere Gestione delle unità PowerShell.

Definizioni dei ruoli

Le definizioni dei ruoli in un file di configurazione della sessione definiscono il mapping degli utenti ai ruoli. A ogni utente o gruppo incluso in questo campo viene concessa l'autorizzazione all'endpoint JEA al momento della registrazione. Ogni utente o gruppo può essere incluso come chiave nella tabella hash una sola volta, ma può essere assegnato più ruoli. Il nome della funzionalità del ruolo deve essere il nome del file di funzionalità del ruolo, senza l'estensione .psrc .

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

Se un utente appartiene a più gruppi nella definizione del ruolo, ottiene l'accesso ai ruoli di ogni gruppo. Quando due ruoli concedono l'accesso agli stessi cmdlet, all'utente viene concesso il set di parametri più permissivo.

Quando si specificano utenti o gruppi locali nel campo definizioni di ruolo, assicurarsi di usare il nome del computer, non localhost o caratteri jolly. È possibile controllare il nome del computer controllando la $Env:COMPUTERNAME variabile.

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

Ordine di ricerca delle funzionalità dei ruoli

Come illustrato nell'esempio precedente, le funzionalità del ruolo fanno riferimento al nome di base del file di funzionalità del ruolo. Il nome di base di un file è il nome file senza l'estensione. Se nel sistema sono disponibili più funzionalità del ruolo con lo stesso nome, PowerShell usa l'ordine di ricerca implicito per selezionare il file di funzionalità del ruolo effettivo. JEA non concede l'accesso a tutti i file di funzionalità del ruolo con lo stesso nome.

JEA utilizza la variabile di ambiente $Env:PSModulePath per determinare i percorsi in cui analizzare i file di funzionalità del ruolo. All'interno di ognuno di questi percorsi, JEA cerca moduli di PowerShell validi che contengono una sottocartella "RoleCapabilities". Come per l'importazione di moduli, JEA preferisce le funzionalità del ruolo fornite con Windows per le funzionalità di ruolo personalizzate con lo stesso nome.

Per tutti gli altri conflitti di denominazione, la precedenza è determinata dall'ordine in cui Windows enumera i file nella directory. Non è garantito che l'ordine sia alfabetico. Il primo file di funzionalità del ruolo trovato che corrisponde al nome specificato viene usato per l'utente che si connette. Poiché l'ordine di ricerca delle funzionalità del ruolo non è deterministico, è consigliabile che le funzionalità del ruolo abbiano nomi di file univoci.

Regole di accesso condizionale

A tutti gli utenti e i gruppi inclusi nel campo RoleDefinitions viene concesso automaticamente l'accesso agli endpoint JEA. Le regole di accesso condizionale consentono di perfezionare questo accesso e richiedere agli utenti di appartenere a gruppi di sicurezza aggiuntivi che non influiscono sui ruoli a cui sono assegnati. Ciò è utile quando si vuole integrare una soluzione di gestione degli accessi con privilegi JIT, l'autenticazione tramite smart card o un'altra soluzione di autenticazione a più fattori con JEA.

Le regole di accesso condizionale vengono definite nel campo RequiredGroups in un file di configurazione della sessione. È possibile specificare una tabella hash (facoltativamente annidata) che usa le chiavi "And" e "Or" per costruire le regole. Ecco alcuni esempi di come usare questo campo:

# 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' }}

Annotazioni

Le regole di accesso condizionale sono disponibili solo in PowerShell 5.1 o versione successiva.

Altre proprietà

I file di configurazione della sessione possono svolgere tutte le operazioni che un file delle capacità di ruolo può eseguire. Tuttavia, non possono concedere agli utenti che si connettono l'accesso a comandi diversi. Se si vuole consentire a tutti gli utenti di accedere a cmdlet, funzioni o provider specifici, è possibile farlo direttamente nel file di configurazione della sessione. Per un elenco completo delle proprietà supportate nel file di configurazione della sessione, eseguire Get-Help New-PSSessionConfigurationFile -Full.

Test di un file di configurazione di sessione

È possibile testare una configurazione di sessione usando il cmdlet Test-PSSessionConfigurationFile . È consigliabile testare il file di configurazione della sessione se il .pssc file è stato modificato manualmente. Il test garantisce che la sintassi sia corretta. Se un file di configurazione della sessione fallisce questo test, non può essere registrato nel sistema.

File di configurazione della sessione di esempio

Nell'esempio seguente viene illustrato come creare e convalidare una configurazione di sessione per JEA. Le definizioni dei ruoli vengono create e archiviate nella $roles variabile per praticità e leggibilità. non è un requisito per farlo.

$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

Aggiornamento dei file di configurazione della sessione

Per modificare le proprietà di una configurazione di sessione JEA, incluso il mapping degli utenti ai ruoli, è necessario annullare la registrazione. Registrare quindi nuovamente la configurazione della sessione JEA usando un file di configurazione sessione aggiornato.

Passaggi successivi