Modifica nel comportamento del GPClient durante l’esecuzione delle policy in Windows 8.1/2012 R2

Termini utilizzati

  • Policy (GPO) = criteri di gruppo         

  • Policy Template = modello con la lista di settaggi disponibili durante la modifica della policy (GPMC)

  • CSE o Client Side Extensions = estensioni dei criteri di gruppo lato client (.dll)

  • GPClient = servizio Group Policy Client

 

Per prima cosa vorrei ricordare i componenti delle policy in Windows: Tramite la GPMC (group policy management console) è possibile visualizzare tutte le policy presenti nel dominio. Questa è l’interfaccia dove si possono aggiungere, cancellare, editare, salvare, ripristinare etc etc. (ricordate che il backup delle GPO va effettuato da questa console).

Una volta aperta la policy si è in modalità modifica “editing” ed è possibile visualizzare tutte le possibili configurazioni dei singoli componenti cosiddetti “modelli” o Administrative Template, che utilizzano dei file (.adm o .admx) che a seconda del sistema oprativo possono essere caricati dai seguenti percorsi:  

  • C:\Windows\Inf (2003)

  • C:\Windows\PolicyDefinitions (2008 in poi)

  • CentralStore creato dall’amministratore nella SYSVOL (C:\Windows\Sysvol\domain\)

 Questi modelli sono semplicemente l’interfaccia utilizzata dall’amministratore per impostare le varie configurazioni, non vi è nessuna elaborazione dopo la chiusura della policy: non è questo il componente che esegue il lavoro. Sarà il servizio GPClient, in esecuzione sui client/server, che eseguirà l’elaborazione delle estensioni dei criteri di gruppo (client side extensions), richiamate dalle varie parti che compongono il modello GPO, che effettueranno la vera configurazione sulle chiavi di registro.

Alla creazione della GPO vengono impostati degli attributi che identificano i CSE Macchina o/e CSE Utente che dovranno essere eseguiti dal GPClient a destinazione (client/server dove verrà applicata la policy) in modo che non vengano processati tutti i CSE presenti nel sistema oprativo ma solamente quelli necessari.

Quindi, ad esempio, se nella mia policy vado a configurare:

                User Configuration\Administrative Templates\Start Menu and Taskbar\Lock the Taskbar = ENABLED

 Andando a verificare tramite “ADSIEdit.msc” le proprietà della policy (Default naming context\dominio\System\Policies), vedrò valorizzato l’attributo gPCUserExtensionNames con i seguenti GUID

35378EAC-683F-11D2-A89A-00C04FBBCFA2 Registry Settings

D02B1F73-3407-48AE-BA88-E8213C6761F1 Tool Extension GUID (User Policy Settings)

Questo vuol dire che il GPClient quando eseguirà la GPO processerà solamente quei due componenti, tralasciando tutti gli altri. In tal modo non è necessario eseguire tutti i CSE per ogni policy che viene eseguita.

Al seguente link c’è la lista di CSE e relativo GUID: http://blogs.technet.com/b/mempson/archive/2011/08/04/3372396.aspx  

 

L’esecuzione delle GPO avviene in due modi a seconda del tipo di estensione (CSE) che deve essere eseguita.

I termini utilizzati sono i seguenti: 

  • In primo piano (Foreground)

    • Solamente durante l’accesso utente o avvio del computer

    • Permette alle Group Policy di aggiornare i settaggi che sono mandatori per il caricamento della sessione utente

    • Tutti i CSE vengono eseguiti durante l’elaborazione in Foreground

  • In Secondo Piano (Background)
    • Le Group Policies vengono aggiornate dopoche il computer è avviato e l’utente è acceduto

    • Eseguite ogni 90 minuti +/- 30 minuti di default per machine del dominio e ogni 5 minuti sui domain controlles

    • Alcuni CSE non sono eseguiti durante l’elaborazione di Background

    • Possono essere aggiornati manualmente tramite GPUpdate               

  • Aggiornamento Sincrono
    • Metodo di aggiornamento dell policy che avviene solamente durante la fare di Foreground

    • Durante la fase Sincrona la schermata iniziale di accesso o il desktop utente non verranno caricati finchè il processo non terminerà 

  • Aggiornamento Asincrono
    • Metodo di aggiornamento utilizzato durante l’elaborazione di Background

    • Durante la fase Asincrona I processi utente non verranno interrotti (l’utente accede al proprio desktop)

Differenze fra 8.1 e sistemi precedenti

  • Durante la fase Sincrona la schermata di accesso non appare finchè non termina l’elaborazione delle Computer policy, ed il desktop non viene visualizzato finchè non termina l’elaborazione delle User policy

    • L’utente non può disconnettersi finchè l’elaborazione delle policy non è terminata
  • La modalità Asincrona non ha queste limitazioni

Nelle versioni precedenti a 8.1, la modalità Sincrona è eseguita durante l’avvio e all’accesso al computer

  • Durante l’aggiornamento in Background, i CSE che richiedono la modalità Sincrona non vengono eseguiti.

  • Quando la modalità Sincrona è abilitata (prima di 8.1), tutti i CSE vengono eseguiti in tal modo

Solamente alcuni CSE richiedono la modalità sincrona di default (prima di 8.1):

  • Drive mapping

  • software installation

  • disk quotas

  • folder redirection

  • Tutti gli altri CSE possono funzionare in modalità Asincrona anche se alcuni (come scripts) possono forzare la modalità Sincrona se impostato dall’amministratore

Da Windows 7 si è cercato di migliorare notevolmente le prestazioni in ambito Enterprise relativamente al tempo di avvio ed accesso al PC.

Considerando di avere tutte le ultime Hotfix del caso già installate, si è visto che la maggior parte delle problematiche relative al tempo di avvio/accesso al PC sono dovute a cause imputabili alla disponibilità/qualità della rete.   

Nella seguente figura è possibile vedere come sia cambiata l’elaborazione delle policy in 8.1/2012 R2:

 

  

Full policy caching

  • Durante l’elaborazione Sincrona le policy vengono lette solamente dalla “cache” del client ed il servizio non tenta di scaricare nessuna policy

  • Il servizio GPClient non tenterà di scaricare le policy disabilitate o vuote

  • Durante l’elaborazione di Background la “cache” viene aggiornata

     

Elaborazione Sincrona parziale

  • L’elaborazione Sincrona è utilizzata finchè ci sono CSE che la richiedono, dopodichè il processo passa automaticamente alla modalità Asincrona.

  • Il CSE relative al “Drive mapping” convertito per essere eseguito in modalità Asincrona.

  • Durante la modalità Sincrona viene fatto un semplice test di verifica della connettività (slow link detection) tramite ICMP, mentre in modalità Asincrona viene utilizzato NLS (network location service).

  • Se vengono rilevati errori sul test di connettività viene impostato in automatico lo “Slow Link”

  • E’ stato introdotto il supporto per i fitri IPv6 per le opzioni delle stampanti e la rete (solo client 8.1).

 

In 8.1, la modalità Asincrona è utilizzata finchè ci sono CSE che la richiedono.

  • L’elaborazione delle estensioni (CSE) avviene in uno specifico ordine basato sul GUID dei CSE.

  • Si rimane in modalità Sincrona fino a quando non ci sono più CSE Sincroni che la richiedono, dopodichè si passa alla modalità Asincrona.

Durante la fase Sincrona, i criteri di gruppo sono letti dalla “cache” del PC invece che dalla rete (domain controller).

L’unica eccezione è quando la “cache” è vuota, cosa che può accadere nel caso di primo avvio dopo l’aggiunta al dominio oppure se è stata svuotata manualmente dall’amministratore.

Durante la fase Sincrona, viene controllata la connettività verso il domain controller eseguendo un calcolo basilare di “Slow Link” tramite ICMP.

  • Se viene riscontrato un errore si passa automaticamente a “Slow Link”

Le conseguenze sono:

    • La Folder Redirection non viene eseguita in modalità “Slow Link”

    • La Software Installation non viene eseguita in modalità “Slow Link”

    • CSEs di terze parti che si registrano per lo slow link mode non verranno eseguiti in tale modalità

Una volta che tutti i CSEs che richiedono la modalità “slow link” sono stati eseguiti si passa alla modalità Asincrona.

I requisiti per l’elaborazione dei CSE sono:           

I CSEs vengono processati in ordine alfanumerico tenendo conto del GUID presente nella sotto chiave HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\GPExtensions

Ogni CSE ha un numero di chiavi di registroche determinano come/quando viene processato

  • NoMachinePolicy, NoUserPolicy: non eseguire durante l’elaborazione Computer/Utente

  • NoSlowLink: non eseguire se viene rilevato uno Slow Link

  • NoBackgroundPolicy: non processare durante il background refresh

  • NoGPOListChanges: non elaborare se non vengono trovate modifiche

  • EnableAsynchronousProcessing: permetti a questa estensione di eseguire in modalità Asincrona

Altre informazioni si possono trovare sul seguente articolo: KB216358                         

RISCHI

  • Le nuove impostazioni potrebbero non essere lette dai CSE fino al secondo avvio/accesso (logon) per il fatto che non sono presenti nella “cache” quindi devono essere scaricate ed inserite in questa area

  • Il meccanismo di rivelazione della connettività (basic ICMP) è vulnerabile alle problematiche basilari della rete come la frammentazione ICMP/UDP, restrizioni sulla MTU "black hole" dei routers, configurazioni perosnalizzate dei firewall.

BENEFICI

  • Le condizioni relative alla rete che prevengono o allungano i tempi di scaricamento delle policy non saranno più un problema e non bloccheranno le fasi di accesso e caricamento del desktop

  • Ritardando lo scaricamento delle policy dal server molte problematiche relative alla negoziazione client/server che rallentano la rete possono essere mitigate

  • Elaborando più CSE in modalità Asincrona, l’accesso disco è ridotto durante le fasi di avvio/logon