Risolvere i problemi relativi al servizio Sorveglianza host

Questo articolo descrive le soluzioni ai problemi comuni riscontrati durante la distribuzione o il funzionamento di un server HGS (Host Guardian Service) in un'infrastruttura sorvegliata.

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

Se non si è certi della natura del problema, provare prima di tutto a eseguire la diagnostica dell'infrastruttura sorvegliata nei server HGS e negli host Hyper-V per limitare le possibili cause.

Certificati

HGS richiede diversi certificati per funzionare, tra cui il certificato di crittografia e firma configurato dall'amministratore, nonché un certificato di attestazione gestito dallo stesso HGS. Se questi certificati sono configurati in modo errato, HGS non è in grado di soddisfare le richieste degli host Hyper-V che desiderano attestare o sbloccare le protezioni delle chiavi per le macchine virtuali schermate. Le sezioni seguenti illustrano i problemi comuni relativi ai certificati configurati in HGS.

Autorizzazioni per i certificati

HGS deve essere in grado di accedere alle chiavi pubbliche e private dei certificati di crittografia e firma aggiunti a HGS dall'identificazione personale del certificato. In particolare, l'account del servizio gestito del gruppo (gMSA) che esegue il servizio HGS deve accedere alle chiavi. Per trovare il gMSA usato da HGS, eseguire il comando seguente in un prompt di PowerShell con privilegi elevati nel server HGS:

(Get-IISAppPool -Name KeyProtection).ProcessModel.UserName

Il modo in cui si concede all'account gMSA l'accesso per l'uso della chiave privata dipende dalla posizione in cui viene archiviata la chiave: nel computer come file di certificato locale, in un modulo di sicurezza hardware (HSM) o usando un provider di archiviazione chiavi personalizzato di terze parti.

Concedere l'accesso alle chiavi private supportate dal software

Se si usa un certificato autofirmato o un certificato emesso da un'autorità di certificazione non archiviata in un modulo di sicurezza hardware o in un provider di archiviazione delle chiavi personalizzato, è possibile modificare le autorizzazioni della chiave privata seguendo questa procedura:

  1. Aprire gestione certificati locale (certlm.msc).
  2. Espandere Certificati personali> e trovare il certificato di firma o crittografia da aggiornare.
  3. Fare clic con il pulsante destro del mouse sul certificato e scegliere Tutte le attività>Gestisci chiavi private.
  4. Selezionare Aggiungi per concedere a un nuovo utente l'accesso alla chiave privata del certificato.
  5. Nel selettore oggetti immettere il nome dell'account gMSA per HGS trovato in precedenza, quindi selezionare OK.
  6. Verificare che l'account del servizio gestito del gruppo abbia accesso in lettura al certificato.
  7. Selezionare OK per chiudere la finestra delle autorizzazioni.

Se si esegue HGS in Server Core o si gestisce il server in remoto, non sarà possibile gestire le chiavi private usando gestione certificati locale. È invece necessario scaricare il modulo PowerShell Guarded Fabric Tools, che consentirà di gestire le autorizzazioni in PowerShell.

  1. Aprire una console di PowerShell con privilegi elevati nel computer Server Core o usare La comunicazione remota di PowerShell con un account con autorizzazioni di amministratore locale in HGS.
  2. Eseguire i comandi seguenti per installare il modulo PowerShell Guarded Fabric Tools e concedere all'account gMSA l'accesso alla chiave privata.
$certificateThumbprint = '<ENTER CERTIFICATE THUMBPRINT HERE>'

# Install the Guarded Fabric Tools module, if necessary
Install-Module -Name GuardedFabricTools -Repository PSGallery

# Import the module into the current session
Import-Module -Name GuardedFabricTools

# Get the certificate object
$cert = Get-Item "Cert:\LocalMachine\My\$certificateThumbprint"

# Get the gMSA account name
$gMSA = (Get-IISAppPool -Name KeyProtection).ProcessModel.UserName

# Grant the gMSA read access to the certificate
$cert.Acl = $cert.Acl | Add-AccessRule $gMSA Read Allow

Concedere l'accesso a HSM o a chiavi private personalizzate supportate dal provider

Se le chiavi private del certificato sono supportate da un modulo di sicurezza hardware o da un provider di archiviazione chiavi personalizzato, il modello di autorizzazione dipende dal fornitore di software specifico. Per ottenere risultati ottimali, consultare la documentazione o il sito di supporto del fornitore per informazioni su come vengono gestite le autorizzazioni di chiave privata per il dispositivo o il software specifico. In tutti i casi, il gMSA usato da HGS richiede autorizzazioni di lettura per le chiavi private del certificato di crittografia, firma e comunicazione in modo che possa eseguire operazioni di firma e crittografia.

Alcuni moduli di sicurezza hardware non supportano la concessione di account utente specifici per l'accesso a una chiave privata; consentono invece all'account computer di accedere a tutte le chiavi in un set di chiavi specifico. Per tali dispositivi, in genere è sufficiente concedere al computer l'accesso alle chiavi e HGS è in grado di sfruttare tale connessione.

Suggerimenti per i moduli di protezione hardware

Di seguito sono riportate le opzioni di configurazione suggerite che consentono di usare correttamente le chiavi supportate da HSM con HGS in base alle esperienze di Microsoft e dei partner. Questi suggerimenti sono forniti per comodità e non sono garantiti per essere corretti al momento della lettura, né sono approvati dai produttori HSM. Per ulteriori domande, contattare il produttore del modulo di protezione hardware per informazioni accurate relative al dispositivo specifico.

Marchio/serie HSM Suggerimento
Gemalto SafeNet Assicurarsi che la proprietà Utilizzo chiave nel file di richiesta di certificato sia impostata su 0xa0, consentendo l'uso del certificato per la firma e la crittografia. Inoltre, è necessario concedere all'account gMSA l'accesso in lettura alla chiave privata usando lo strumento di gestione certificati locale (vedere la procedura precedente).
nCipher nShield Assicurarsi che ogni nodo HGS abbia accesso al mondo della sicurezza contenente le chiavi di firma e crittografia. Potrebbe anche essere necessario concedere all'account del servizio gestito del gruppo l'accesso in lettura alla chiave privata usando gestione certificati locale (vedere la procedura precedente).
Utimaco CryptoServers Verificare che la proprietà Utilizzo chiave nel file di richiesta del certificato sia impostata su 0x13, consentendo l'uso del certificato per la crittografia, la decrittografia e la firma.

Richieste di certificato

Se si usa un'autorità di certificazione per rilasciare i certificati in un ambiente PKI (Public Key Infrastructure), è necessario assicurarsi che la richiesta di certificato includa i requisiti minimi per l'utilizzo di tali chiavi da parte di HGS.

Firma dei certificati

CSR ( proprietà) Valore obbligatorio
Algoritmo RSA
Dimensioni chiave Almeno 2048 bit
Utilizzo chiavi Firma/Firma/Firma Digitale

Certificati di crittografia

CSR ( proprietà) Valore obbligatorio
Algoritmo RSA
Dimensioni chiave Almeno 2048 bit
Utilizzo chiavi Crittografia/Crittografia/Crittografia dati

Modelli di Servizi certificati Active Directory

Se si usano modelli di certificato ad Active Directory Certificate Services (ADCS) per creare i certificati, è consigliabile usare un modello con le impostazioni seguenti:

Proprietà modello ADCS Valore obbligatorio
Categoria provider Provider di archiviazione delle chiavi
Nome algoritmo RSA
Dimensioni minime della chiave 2048
Finalità Firma e crittografia
Estensione per l'utilizzo delle chiavi Firma digitale, crittografia delle chiavi, crittografia dei dati ("Consenti crittografia dei dati utente")

Deviazione temporale

Se il tempo del server si è allontanato significativamente da quello di altri nodi HGS o host Hyper-V nell'infrastruttura sorvegliata, è possibile che si verifichino problemi con la validità del certificato del firmatario dell'attestazione. Il certificato del firmatario dell'attestazione viene creato e rinnovato dietro le quinte in HGS e viene usato per firmare i certificati di integrità rilasciati agli host sorvegliati dal servizio di attestazione.

Per aggiornare il certificato del firmatario dell'attestazione, eseguire il comando seguente in un prompt di PowerShell con privilegi elevati.

Start-ScheduledTask -TaskPath \Microsoft\Windows\HGSServer -TaskName
AttestationSignerCertRenewalTask

In alternativa, è possibile eseguire manualmente l'attività pianificata aprendo l'utilità di pianificazione (taskschd.msc), passando a Libreria> utilità di pianificazioneMicrosoft>Windows>HGSServer ed eseguendo l'attività denominata AttestazioneSignerCertRenewalTask.

Cambio di modalità di attestazione

Se si passa dalla modalità TPM alla modalità TPM o viceversa usando il cmdlet Set-HgsServer , potrebbero essere necessari fino a 10 minuti prima che ogni nodo del cluster HGS inizi a applicare la nuova modalità di attestazione.

Si tratta di un comportamento normale.

Si consiglia di non rimuovere i criteri che consentono agli host di accedere alla modalità di attestazione precedente fino a quando non si è verificato che tutti gli host stanno eseguendo correttamente l'attestazione usando la nuova modalità di attestazione.

Problema noto durante il passaggio dalla modalità TPM alla modalità AD

Se il cluster HGS è stato inizializzato in modalità TPM e successivamente è stato attivata la modalità Active Directory, esiste un problema noto che impedisce ad altri nodi del cluster HGS di passare alla nuova modalità di attestazione. Per assicurarsi che tutti i server HGS applicano la modalità di attestazione corretta, eseguire Set-HgsServer -TrustActiveDirectory in ogni nodo del cluster HGS.

Questo problema non si applica se si passa dalla modalità TPM alla modalità AD e il cluster è stato originariamente configurato in modalità AD.

È possibile verificare la modalità di attestazione del server HGS eseguendo Get-HgsServer.

Criteri di crittografia del dump della memoria

Se si sta tentando di configurare i criteri di crittografia del dump della memoria e non vengono visualizzati i criteri di dump HGS predefiniti (Hgs_NoDumps, Hgs_DumpEncryption e Hgs_DumpEncryptionKey) o il cmdlet dei criteri di dump (Add-HgsAttestationDumpPolicy), è probabile che non sia installato l'aggiornamento cumulativo più recente.

Per risolvere questo problema, aggiornare il server HGS all'ultimo aggiornamento cumulativo di Windows e attivare i nuovi criteri di attestazione.

Assicurarsi di aggiornare gli host Hyper-V allo stesso aggiornamento cumulativo prima di attivare i nuovi criteri di attestazione, perché gli host che non dispongono delle nuove funzionalità di crittografia dei dump installati probabilmente non riusciranno a eseguire l'attestazione dopo l'attivazione dei criteri HGS.

Messaggi di errore relativi al certificato della chiave di verifica dell'autenticità

Quando si registra un host usando il cmdlet Add-HgsAttestationTpmHost , due identificatori TPM vengono estratti dal file di identificatore della piattaforma fornito: il certificato della chiave di verifica dell'autenticità (EKcert) e la chiave di approvazione pubblica (EKpub). EKcert identifica il produttore del TPM, fornendo garanzie che il TPM sia autentico e prodotto attraverso la normale supply chain. EKpub identifica in modo univoco tale TPM specifico ed è una delle misure usate da HGS per concedere a un host l'accesso per eseguire macchine virtuali schermate.

Si riceverà un errore quando si registra un host TPM se una delle due condizioni è vera:

  • Il file dell'identificatore della piattaforma non contiene un certificato della chiave di verifica dell'autenticità.
  • Il file dell'identificatore della piattaforma contiene un certificato della chiave di verifica dell'autenticità, ma tale certificato non è attendibile nel sistema.

Alcuni produttori di TPM non includono EKcert nei loro TPM.

Se si sospetta che questo sia il caso del TPM, verificare con l'OEM che i TPM non devono avere un EKcert e usare il -Force flag per registrare manualmente l'host con HGS. Se il TPM deve avere un EKcert ma non è stato trovato nel file dell'identificatore della piattaforma, assicurarsi di usare una console di PowerShell amministratore (con privilegi elevati) durante l'esecuzione di Get-PlatformIdentifier nell'host.

Se è stato visualizzato l'errore che indica che il certificato EKcert non è attendibile, assicurarsi di aver installato il pacchetto di certificati radice TPM attendibili in ogni server HGS e che il certificato radice per il fornitore TPM sia presente nell'archivio "TrustedTPM_RootCA" del computer locale. Tutti i certificati intermedi applicabili devono essere installati anche nell'archivio "TrustedTPM_IntermediateCA" nel computer locale. Dopo aver installato i certificati radice e intermedi, sarà possibile eseguirlo Add-HgsAttestationTpmHost correttamente.

Privilegi dell'account del servizio gestito del gruppo (gMSA)

All'account del servizio HGS (gMSA usato per il pool di applicazioni del servizio di protezione delle chiavi in IIS) deve essere concesso il privilegio Genera controlli di sicurezza , noto anche come SeAuditPrivilege. Se questo privilegio è mancante, la configurazione iniziale di HGS ha esito positivo e IIS viene avviato, ma il servizio Protezione chiavi non è funzionale e restituisce l'errore HTTP 500 ("Errore del server in /KeyProtection Application"). È anche possibile osservare i messaggi di avviso seguenti nel registro eventi dell'applicazione.

System.ComponentModel.Win32Exception (0x80004005): A required privilege is not held by the client
at Microsoft.Windows.KpsServer.Common.Diagnostics.Auditing.NativeUtility.RegisterAuditSource(String pszSourceName, SafeAuditProviderHandle& phAuditProvider)
at Microsoft.Windows.KpsServer.Common.Diagnostics.Auditing.SecurityLog.RegisterAuditSource(String sourceName)

oppure

Failed to register the security event source.
   at System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app)
   at System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers)
   at System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context)
   at System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context)
   at System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)

Failed to register the security event source.
   at Microsoft.Windows.KpsServer.Common.Diagnostics.Auditing.SecurityLog.RegisterAuditSource(String sourceName)
   at Microsoft.Windows.KpsServer.Common.Diagnostics.Auditing.SecurityLog.ReportAudit(EventLogEntryType eventType, UInt32 eventId, Object[] os)
   at Microsoft.Windows.KpsServer.KpsServerHttpApplication.Application_Start()

A required privilege is not held by the client
   at Microsoft.Windows.KpsServer.Common.Diagnostics.Auditing.NativeUtility.RegisterAuditSource(String pszSourceName, SafeAuditProviderHandle& phAuditProvider)
   at Microsoft.Windows.KpsServer.Common.Diagnostics.Auditing.SecurityLog.RegisterAuditSource(String sourceName)

Inoltre, è possibile notare che nessuno dei cmdlet del servizio di protezione delle chiavi (ad esempio Get-HgsKeyProtectionCertificate) funziona e restituisce invece errori.

Per risolvere questo problema, è necessario concedere a gMSA il comando "Genera controlli di sicurezza" (SeAuditPrivilege). A tale scopo, è possibile usare i criteri di sicurezza locali SecPol.msc in ogni nodo del cluster HGS o Criteri di gruppo. In alternativa, è possibile usare SecEdit.exe strumento per esportare i criteri di sicurezza correnti, apportare le modifiche necessarie nel file di configurazione (che è un testo normale) e quindi importarlo di nuovo.

Nota

Quando si configura questa impostazione, l'elenco dei principi di sicurezza definiti per un privilegio sostituisce completamente le impostazioni predefinite (non concatena). Di conseguenza, quando si definisce questa impostazione di criterio, assicurarsi di includere sia i titolari predefiniti di questo privilegio (servizio di rete e servizio locale) oltre all'account del servizio gestito di gruppo che si sta aggiungendo.