Risolvere i problemi usando lo strumento di diagnostica di Guarded Fabric

Questo articolo descrive l'uso dello strumento di diagnostica di Guarded Fabric per identificare e correggere gli errori comuni nella distribuzione, nella configurazione e nel funzionamento in corso dell'infrastruttura di infrastruttura sorvegliata. Sono inclusi il servizio Sorveglianza host (HGS), tutti gli host sorvegliati e i servizi di supporto, ad esempio DNS e Active Directory.

Si applica a: Windows Server 2022, Windows Server 2019, Windows Server 2016

Lo strumento di diagnostica può essere usato per eseguire un primo passaggio durante la valutazione di un'infrastruttura sorvegliata con errori, fornendo agli amministratori un punto di partenza per risolvere le interruzioni e identificare gli asset non configurati correttamente. Lo strumento non sostituisce una buona conoscenza del funzionamento di un'infrastruttura sorvegliata e serve solo a verificare rapidamente i problemi più comuni riscontrati durante le operazioni quotidiane.

La documentazione completa dei cmdlet usati in questo articolo è disponibile nella guida di riferimento al modulo HgsDiagnostics.

Nota

Quando si esegue lo strumento di diagnostica di Guarded Fabric (Get-HgsTrace -RunDiagnostics), è possibile che venga restituito uno stato non corretto sostenendo che la configurazione HTTPS è interrotta quando, di fatto, non è interrotta o non viene usata. Questo errore può essere restituito indipendentemente dalla modalità di attestazione di HGS. Le possibili cause radice sono le seguenti:

  • HTTPS è effettivamente configurato/interrotto in modo non corretto
  • Si usa l'attestazione attendibile amministratore e la relazione di trust è interrotta. Ciò è indipendentemente dal fatto che HTTPS sia configurato correttamente, in modo non corretto o non sia affatto in uso. Si noti che la diagnostica restituirà questo stato non corretto solo quando si ha come destinazione un host Hyper-V. Se la diagnostica è destinata al servizio Sorveglianza host, lo stato restituito sarà corretto.

Guida introduttiva

È possibile diagnosticare un host sorvegliato o un nodo HGS chiamando quanto segue da una sessione Windows PowerShell con privilegi di amministratore locale:

Get-HgsTrace -RunDiagnostics -Detailed

In questo modo si rileverà automaticamente il ruolo dell'host corrente e si diagnosticano eventuali problemi rilevanti che possono essere rilevati automaticamente. Tutti i risultati generati durante questo processo vengono visualizzati a causa della presenza del -Detailed commutatore.

Nella parte restante di questo argomento verrà fornita una procedura dettagliata sull'utilizzo avanzato di Get-HgsTrace per eseguire operazioni come la diagnosi di più host contemporaneamente e il rilevamento di errori di configurazione complessi tra nodi.

Panoramica della diagnostica

La diagnostica dell'infrastruttura sorvegliata è disponibile in qualsiasi host con strumenti e funzionalità correlati alle macchine virtuali schermate installati, inclusi gli host che eseguono Server Core. Attualmente, la diagnostica è inclusa nelle funzionalità/pacchetti seguenti:

  • Ruolo del servizio Sorveglianza host
  • Supporto di Hyper-V per Sorveglianza host
  • Strumenti di schermatura delle macchine virtuali per la gestione dell'infrastruttura
  • Strumenti di amministrazione remota del server

Ciò significa che gli strumenti di diagnostica saranno disponibili in tutti gli host sorvegliati, nei nodi HGS, in alcuni server di gestione dell'infrastruttura e in tutte le workstation Windows 10 con RSAT installato. La diagnostica può essere richiamata da uno qualsiasi dei computer precedenti con lo scopo di diagnosticare qualsiasi host sorvegliato o nodo HGS in un'infrastruttura sorvegliata; usando destinazioni di traccia remote, la diagnostica può individuare e connettersi a host diversi dal computer che esegue la diagnostica.

Ogni host di destinazione della diagnostica viene definito "destinazione di traccia". Le destinazioni di traccia sono identificate dai relativi nomi host e ruoli. I ruoli descrivono la funzione eseguita da una determinata destinazione di traccia in un'infrastruttura sorvegliata. Attualmente, le destinazioni di traccia supportano HostGuardianService e GuardedHost ruoli. Si noti che è possibile che un host occupi più ruoli contemporaneamente e questo è supportato anche dalla diagnostica, ma questa operazione non deve essere eseguita negli ambienti di produzione. Gli host HGS e Hyper-V devono essere sempre separati e distinti.

Gli amministratori possono avviare qualsiasi attività di diagnostica eseguendo Get-HgsTrace. Questo cmdlet esegue due funzioni distinte in base ai commutatori forniti in fase di esecuzione: raccolta di traccia e diagnosi. Questi due elementi combinati costituiscono l'intero strumento di diagnostica dell'infrastruttura sorvegliata. Anche se non è richiesto in modo esplicito, la diagnostica più utile richiede tracce che possono essere raccolte solo con le credenziali di amministratore nella destinazione di traccia. Se l'utente che esegue la raccolta di tracce non dispone di privilegi sufficienti, le tracce che richiedono l'elevazione avranno esito negativo mentre tutte le altre verranno passate. Ciò consente la diagnosi parziale nel caso in cui un operatore con privilegi limitati esegua una valutazione.

Raccolta di tracce

Per impostazione predefinita, Get-HgsTrace raccoglierà solo le tracce e le salverà in una cartella temporanea. Le tracce hanno la forma di una cartella, denominata dopo l'host di destinazione, piena di file formattati in modo specifico che descrivono come viene configurato l'host. Le tracce contengono anche metadati che descrivono come la diagnostica è stata richiamata per raccogliere le tracce. Questi dati vengono usati dalla diagnostica per riattivare le informazioni sull'host durante l'esecuzione della diagnosi manuale.

Se necessario, le tracce possono essere riviste manualmente. Tutti i formati sono leggibili dall'uomo (XML) o possono essere controllati facilmente usando strumenti standard (ad esempio, certificati X509 e estensioni della shell di Windows Crypto). Si noti tuttavia che le tracce non sono progettate per la diagnosi manuale ed è sempre più efficace elaborare le tracce con le strutture di diagnosi di Get-HgsTrace.

I risultati dell'esecuzione della raccolta di tracce non indicano l'integrità di un determinato host. Indicano semplicemente che le tracce sono state raccolte correttamente. È necessario usare le funzionalità di diagnosi di Get-HgsTrace per determinare se le tracce indicano un ambiente con errori.

Usando il parametro , è possibile limitare la -Diagnostic raccolta di tracce solo alle tracce necessarie per gestire la diagnostica specificata. In questo modo si riduce la quantità di dati raccolti e le autorizzazioni necessarie per richiamare la diagnostica.

Diagnosi

Le tracce raccolte possono essere diagnosticate specificando Get-HgsTrace la posizione delle tracce tramite il -Path parametro e specificando l'opzione -RunDiagnostics . Inoltre, Get-HgsTrace è possibile eseguire la raccolta e la diagnosi in un singolo passaggio fornendo il -RunDiagnostics commutatore e un elenco di destinazioni di traccia. Se non vengono fornite destinazioni di traccia, il computer corrente viene usato come destinazione implicita, con il relativo ruolo dedotto controllando i moduli di Windows PowerShell installati.

La diagnosi fornirà risultati in un formato gerarchico che mostra quali destinazioni di traccia, set di diagnostica e diagnostica individuale sono responsabili di un particolare errore. Gli errori includono raccomandazioni di correzione e risoluzione se è possibile determinare l'azione da intraprendere successivamente. Per impostazione predefinita, i risultati passati e irrilevanti sono nascosti. Per visualizzare tutti gli elementi testati dalla diagnostica, specificare l'opzione -Detailed . In questo modo tutti i risultati vengono visualizzati indipendentemente dal relativo stato.

È possibile limitare il set di diagnostica eseguito usando il -Diagnostic parametro . In questo modo è possibile specificare quali classi di diagnostica devono essere eseguite sulle destinazioni di traccia ed eliminare tutte le altre. Esempi di classi di diagnostica disponibili includono rete, procedure consigliate e hardware client. Consultare la documentazione del cmdlet per trovare un elenco aggiornato della diagnostica disponibile.

Avviso

La diagnostica non sostituisce una pipeline di monitoraggio e risposta agli eventi imprevisti avanzata. È disponibile un pacchetto di System Center Operations Manager per il monitoraggio delle infrastrutture sorvegliate, nonché vari canali del registro eventi che possono essere monitorati per rilevare i problemi in anticipo. La diagnostica può quindi essere usata per valutare rapidamente questi errori e stabilire una linea d'azione.

Diagnostica di destinazione

Get-HgsTrace opera su destinazioni di traccia. Una destinazione di traccia è un oggetto che corrisponde a un nodo HGS o a un host sorvegliato all'interno di un'infrastruttura sorvegliata. Può essere considerato come un'estensione di un PSSessionoggetto , che include le informazioni necessarie solo per la diagnostica, ad esempio il ruolo dell'host nell'infrastruttura. Le destinazioni possono essere generate in modo implicito (ad esempio, la diagnosi locale o manuale) o in modo esplicito con il New-HgsTraceTarget cmdlet .

Diagnosi locale

Per impostazione predefinita, Get-HgsTrace verrà eseguita la destinazione localhost (ad esempio, dove viene richiamato il cmdlet). Questa operazione viene definita destinazione locale implicita. La destinazione locale implicita viene usata solo quando non vengono fornite destinazioni nel -Target parametro e non vengono trovate tracce preesistenti in -Path.

La destinazione locale implicita usa l'inferenza del ruolo per determinare il ruolo dell'host corrente nell'infrastruttura sorvegliata. Si basa sui moduli Windows PowerShell installati, che corrispondono approssimativamente alle funzionalità installate nel sistema. La presenza del HgsServer modulo fa sì che la destinazione di traccia prenda il ruolo HostGuardianService e la presenza del HgsClient modulo fa sì che la destinazione di traccia prenda il ruolo GuardedHost. È possibile che un determinato host abbia entrambi i moduli presenti, nel qual caso verrà considerato sia come sia HostGuardianServiceGuardedHostcome .

Di conseguenza, la chiamata predefinita di diagnostica per la raccolta di tracce in locale:

Get-HgsTrace

Equivale a quanto segue:

New-HgsTraceTarget -Local | Get-HgsTrace

Consiglio

Get-HgsTrace può accettare destinazioni tramite la pipeline o direttamente tramite il -Target parametro . Non vi è alcuna differenza tra i due in modo operativo.

Diagnosi remota con destinazioni di traccia

È possibile diagnosticare in remoto un host generando destinazioni di traccia con informazioni di connessione remota. È necessario solo il nome host e un set di credenziali in grado di connettersi usando Windows PowerShell comunicazione remota.

$server = New-HgsTraceTarget -HostName "hgs-01.secure.contoso.com" -Role HostGuardianService -Credential (Enter-Credential)
Get-HgsTrace -RunDiagnostics -Target $server

In questo esempio viene generato un prompt per raccogliere le credenziali utente remote e quindi la diagnostica viene eseguita usando l'host remoto in hgs-01.secure.contoso.com per completare la raccolta di traccia. Le tracce risultanti vengono scaricate nel localhost e quindi diagnosticate. I risultati della diagnosi sono presentati come quando si esegue la diagnosi locale. Analogamente, non è necessario specificare un ruolo perché può essere dedotto in base ai moduli Windows PowerShell installati nel sistema remoto.

La diagnosi remota utilizza Windows PowerShell comunicazione remota per tutti gli accessi all'host remoto. È quindi un prerequisito che la destinazione di traccia abbia Windows PowerShell comunicazione remota abilitata (vedere Abilitare PSRemoting) e che localhost sia configurato correttamente per l'avvio delle connessioni alla destinazione.

Nota

Nella maggior parte dei casi, è necessario che localhost faccia parte della stessa foresta di Active Directory e che venga usato un nome host DNS valido. Se l'ambiente usa un modello di federazione più complesso o si desidera usare indirizzi IP diretti per la connettività, potrebbe essere necessario eseguire una configurazione aggiuntiva, ad esempio l'impostazione degli host attendibili di WinRM.

È possibile verificare che venga creata un'istanza e configurata correttamente di una destinazione di traccia per accettare le connessioni usando il Test-HgsTraceTarget cmdlet :

$server = New-HgsTraceTarget -HostName "hgs-01.secure.contoso.com" -Role HostGuardianService -Credential (Enter-Credential)
$server | Test-HgsTraceTarget

Questo cmdlet restituisce $True se e solo se Get-HgsTrace sarebbe in grado di stabilire una sessione di diagnostica remota con la destinazione di traccia. In caso di errore, questo cmdlet restituisce informazioni sullo stato pertinenti per un'ulteriore risoluzione dei problemi della connessione remota Windows PowerShell.

Credenziali implicite

Quando si esegue la diagnosi remota da un utente con privilegi sufficienti per connettersi in remoto alla destinazione di traccia, non è necessario fornire le credenziali a New-HgsTraceTarget. Il Get-HgsTrace cmdlet riutilizzerà automaticamente le credenziali dell'utente che ha richiamato il cmdlet all'apertura di una connessione.

Avviso

Alcune restrizioni si applicano al riutilizzo delle credenziali, in particolare quando si esegue quello che è noto come "secondo hop". Ciò si verifica quando si tenta di riutilizzare le credenziali dall'interno di una sessione remota a un altro computer. È necessario configurare CredSSP per supportare questo scenario, ma questo non rientra nell'ambito della gestione e della risoluzione dei problemi dell'infrastruttura sorvegliata.

Uso di Windows PowerShell l'amministrazione Just Enough (JEA) e la diagnostica

La diagnosi remota supporta l'uso di endpoint Windows PowerShell vincolati a JEA. Per impostazione predefinita, le destinazioni di traccia remota si connetteranno usando l'endpoint predefinito microsoft.powershell . Se la destinazione di traccia ha il HostGuardianService ruolo, tenterà anche di usare l'endpoint microsoft.windows.hgs , configurato quando HGS è installato.

Se si vuole usare un endpoint personalizzato, è necessario specificare il nome di configurazione della sessione durante la costruzione della destinazione di traccia usando il -PSSessionConfigurationName parametro , ad esempio di seguito:

New-HgsTraceTarget -HostName "hgs-01.secure.contoso.com" -Role HostGuardianService -Credential (Enter-Credential) -PSSessionConfigurationName "microsoft.windows.hgs"

Diagnosi di più host

È possibile passare più destinazioni di traccia a Get-HgsTrace contemporaneamente. Questo include una combinazione di destinazioni locali e remote. Ogni destinazione viene tracciata a sua volta e quindi le tracce di ogni destinazione verranno diagnosticate contemporaneamente. Lo strumento di diagnostica può usare una maggiore conoscenza della distribuzione per identificare configurazioni errate tra nodi complesse che altrimenti non sarebbero rilevabili. L'uso di questa funzionalità richiede solo la fornitura di tracce da più host contemporaneamente (nel caso di diagnosi manuale) o la destinazione di più host durante la chiamata Get-HgsTrace (nel caso della diagnosi remota).

Di seguito è riportato un esempio di utilizzo della diagnosi remota per valutare un'infrastruttura composta da due nodi HGS e due host sorvegliati, in cui viene usato uno degli host sorvegliati per avviare Get-HgsTrace.

$hgs01 = New-HgsTraceTarget -HostName "hgs-01.secure.contoso.com" -Credential (Enter-Credential)
$hgs02 = New-HgsTraceTarget -HostName "hgs-02.secure.contoso.com" -Credential (Enter-Credential)
$gh01 = New-HgsTraceTarget -Local
$gh02 = New-HgsTraceTarget -HostName "guardedhost-02.contoso.com"
Get-HgsTrace -Target $hgs01,$hgs02,$gh01,$gh02 -RunDiagnostics

Nota

Non è necessario diagnosticare l'intera infrastruttura sorvegliata durante la diagnosi di più nodi. In molti casi è sufficiente includere tutti i nodi che possono essere coinvolti in una determinata condizione di errore. Si tratta in genere di un subset degli host sorvegliati e di un certo numero di nodi del cluster HGS.

Diagnosi manuale con tracce salvate

In alcuni casi è possibile eseguire di nuovo la diagnostica senza raccogliere di nuovo le tracce oppure non si dispone delle credenziali necessarie per diagnosticare in remoto tutti gli host nell'infrastruttura contemporaneamente. La diagnosi manuale è un meccanismo tramite il quale è comunque possibile eseguire una valutazione dell'intera infrastruttura usando Get-HgsTrace, ma senza usare la raccolta di tracce remota.

Prima di eseguire la diagnosi manuale, è necessario assicurarsi che gli amministratori di ogni host nell'infrastruttura che verranno triaged siano pronti e disposti a eseguire comandi per conto dell'utente. L'output della traccia di diagnostica non espone informazioni generalmente considerate sensibili, tuttavia è compito dell'utente determinare se è sicuro esporre queste informazioni ad altri utenti.

Nota

Le tracce non vengono rese anonime e rivelano la configurazione di rete, le impostazioni PKI e altre configurazioni a volte considerate informazioni private. Pertanto, le tracce devono essere trasmesse solo a entità attendibili all'interno di un'organizzazione e mai pubblicate pubblicamente.

I passaggi per eseguire una diagnosi manuale sono i seguenti:

  1. Richiedere che ogni amministratore host venga eseguito Get-HgsTrace specificando un oggetto noto -Path e l'elenco di diagnostica che si intende eseguire sulle tracce risultanti. Ad esempio:

    Get-HgsTrace -Path C:\Traces -Diagnostic Networking,BestPractices
    
  2. Richiedere a ogni amministratore host di creare il pacchetto della cartella tracce risultante e inviarla all'utente. Questo processo può essere guidato tramite posta elettronica, tramite condivisioni file o qualsiasi altro meccanismo basato sui criteri operativi e sulle procedure stabilite dall'organizzazione.

  3. Unire tutte le tracce ricevute in una singola cartella, senza altri contenuti o cartelle.

    Si supponga, ad esempio, che gli amministratori inviino tracce raccolte da quattro computer denominati HGS-01, HGS-02, RR1N2608-12 e RR1N2608-13. Ogni amministratore avrebbe inviato una cartella con lo stesso nome. È necessario assemblare una struttura di directory che viene visualizzata come segue:

    FabricTraces
    |- HGS-01
    |  |- TargetMetadata.xml
    |  |- Metadata.xml
    |  |- [any other trace files for this host]
    |- HGS-02
    |  |- [...]
    |- RR1N2608-12
    |  |- [...]
    |- RR1N2608-13
       |- [..]
    
  4. Eseguire la diagnostica, specificando il percorso della cartella di traccia assemblata nel -Path parametro e specificando l'opzione -RunDiagnostics e la diagnostica per cui gli amministratori hanno chiesto di raccogliere le tracce. La diagnostica presuppone che non sia in grado di accedere agli host trovati all'interno del percorso e tenterà quindi di usare solo le tracce precompilate. Se le tracce sono mancanti o danneggiate, la diagnostica non riuscirà solo i test interessati e procederà normalmente. Ad esempio:

    Get-HgsTrace -RunDiagnostics -Diagnostic Networking,BestPractices -Path ".\FabricTraces"
    

Combinazione di tracce salvate con destinazioni aggiuntive

In alcuni casi, è possibile che si disponga di un set di tracce precompilate che si desidera aumentare con tracce host aggiuntive. È possibile combinare tracce precollete con destinazioni aggiuntive che verranno tracciate e diagnosticate in una singola chiamata di diagnostica.

Seguendo le istruzioni per raccogliere e assemblare una cartella di traccia specificata in precedenza, chiamare Get-HgsTrace con destinazioni di traccia aggiuntive non trovate nella cartella di traccia precollected:

$hgs03 = New-HgsTraceTarget -HostName "hgs-03.secure.contoso.com" -Credential (Enter-Credential)
Get-HgsTrace -RunDiagnostics -Target $hgs03 -Path .\FabricTraces

Il cmdlet di diagnostica identificherà tutti gli host precollezzati e l'unico host aggiuntivo che deve ancora essere tracciato e eseguirà la traccia necessaria. Verrà quindi diagnosticata la somma di tutte le tracce raccolte e raccolte di recente. La cartella di traccia risultante conterrà sia le tracce precedenti che le nuove tracce.

Problemi noti

Il modulo di diagnostica dell'infrastruttura sorvegliata presenta limitazioni note quando viene eseguito in Windows Server 2019 o Windows 10, versione 1809 e versioni del sistema operativo più recenti. L'uso delle funzionalità seguenti può causare risultati errati:

  • Attestazione della chiave host
  • Configurazione HGS solo attestazione (per scenari di SQL Server Always Encrypted)
  • Uso degli artefatti dei criteri v1 in un server HGS in cui il valore predefinito dei criteri di attestazione è v2

Un errore in Get-HgsTrace quando si usano queste funzionalità non indica necessariamente che il server HGS o l'host sorvegliato non è configurato correttamente. Usare altri strumenti di diagnostica, ad esempio Get-HgsClientConfiguration in un host sorvegliato, per verificare se un host ha superato l'attestazione.