Résoudre les problèmes à l’aide de l’outil de diagnostic d’infrastructure protégée

Cet article décrit l’utilisation de l’outil de diagnostic d’infrastructure protégée pour identifier et corriger les défaillances courantes dans le déploiement, la configuration et le fonctionnement en cours de l’infrastructure de structure protégée. Cela inclut le service Guardian hôte (SGH), tous les hôtes protégés et les services de prise en charge tels que DNS et Active Directory.

S’applique à : Windows Server 2022, Windows Server 2019, Windows Server 2016

L’outil de diagnostic peut être utilisé pour effectuer une première étape de triage d’une infrastructure protégée défaillante, fournissant aux administrateurs un point de départ pour résoudre les pannes et identifier les ressources mal configurées. L’outil ne remplace pas une bonne compréhension de l’utilisation d’une structure protégée et sert uniquement à vérifier rapidement les problèmes les plus courants rencontrés pendant les opérations quotidiennes.

La documentation complète des applets de commande utilisées dans cet article est disponible dans la référence du module HgsDiagnostics.

Remarque

Lors de l’exécution de l’outil Guarded Fabric diagnostics (Get-HgsTrace -RunDiagnostics), des status incorrectes peuvent être retournées, affirmant que la configuration HTTPS est rompue lorsqu’elle n’est pas endommagée ou n’est pas utilisée. Cette erreur peut être retournée quel que soit le mode d’attestation de SGH. Les causes racines possibles sont les suivantes :

  • HTTPS est en effet mal configuré/rompu
  • Vous utilisez l’attestation approuvée par l’administrateur et la relation d’approbation est rompue. Cela, que HTTPS soit configuré correctement, incorrectement ou non utilisé. Notez que le diagnostics retourne uniquement cette status incorrecte lors du ciblage d’un hôte Hyper-V. Si les diagnostics ciblent le service Guardian hôte, les status retournées sont correctes.

Démarrage rapide

Vous pouvez diagnostiquer un hôte protégé ou un nœud SGH en appelant ce qui suit à partir d’une session Windows PowerShell avec des privilèges d’administrateur local :

Get-HgsTrace -RunDiagnostics -Detailed

Cela détectera automatiquement le rôle de l’hôte actuel et diagnostiquera les problèmes pertinents qui peuvent être détectés automatiquement. Tous les résultats générés pendant ce processus sont affichés en raison de la présence du -Detailed commutateur.

Le reste de cette rubrique fournit une procédure pas à pas détaillée sur l’utilisation avancée de pour effectuer des Get-HgsTrace opérations telles que le diagnostic de plusieurs hôtes à la fois et la détection d’une mauvaise configuration complexe entre nœuds.

Vue d’ensemble des diagnostics

Les diagnostics de structure protégée sont disponibles sur n’importe quel hôte sur lequel les outils et fonctionnalités liés aux machines virtuelles dotées d’une protection maximale sont installés, y compris les hôtes exécutant Server Core. Actuellement, diagnostics sont inclus avec les fonctionnalités/packages suivants :

  • Rôle de service Guardian hôte
  • Prise en charge d’Hyper-V guardian hôte
  • Outils de protection des machines virtuelles pour la gestion d’infrastructure
  • Outils d’administration de serveur distant (RSAT)

Cela signifie que les outils de diagnostic seront disponibles sur tous les hôtes protégés, les nœuds SGH, certains serveurs d’administration d’infrastructure et toutes les stations de travail Windows 10 avec rsat installé. Les diagnostics peuvent être appelés à partir de l’une des machines ci-dessus dans le but de diagnostiquer n’importe quel hôte ou nœud SGH protégé dans une infrastructure protégée ; à l’aide de cibles de trace distantes, diagnostics pouvez localiser et se connecter à des hôtes autres que la machine exécutant diagnostics.

Chaque hôte ciblé par diagnostics est appelé « cible de trace ». Les cibles de trace sont identifiées par leurs noms d’hôte et rôles. Les rôles décrivent la fonction qu’une cible de trace donnée effectue dans une structure protégée. Actuellement, les cibles de suivi prennent en charge HostGuardianService et GuardedHost les rôles. Notez qu’il est possible pour un hôte d’occuper plusieurs rôles à la fois, ce qui est également pris en charge par diagnostics, mais cela ne doit pas être effectué dans les environnements de production. Les hôtes SGH et Hyper-V doivent être séparés et distincts à tout moment.

Les administrateurs peuvent commencer toutes les tâches de diagnostic en exécutant Get-HgsTrace. Cette applet de commande exécute deux fonctions distinctes basées sur les commutateurs fournis au moment de l’exécution : collecte et diagnostic des traces. Ces deux combinaisons constituent l’intégralité de l’outil de diagnostic de l’infrastructure protégée. Bien qu’elles ne soient pas explicitement requises, les diagnostics les plus utiles nécessitent des traces qui ne peuvent être collectées qu’avec des informations d’identification d’administrateur sur la cible de trace. Si des privilèges insuffisants sont détenus par l’utilisateur qui exécute la collection de traces, les traces nécessitant une élévation échouent, tandis que toutes les autres passent. Cela permet un diagnostic partiel dans le cas où un opérateur sous-privilégié effectue un triage.

Collection de traces

Par défaut, Get-HgsTrace collecte uniquement les traces et les enregistre dans un dossier temporaire. Les traces prennent la forme d’un dossier, nommé d’après l’hôte ciblé, rempli de fichiers spécialement mis en forme qui décrivent la configuration de l’hôte. Les traces contiennent également des métadonnées qui décrivent comment les diagnostics ont été appelées pour collecter les traces. Ces données sont utilisées par diagnostics pour réhydrater les informations sur l’hôte lors de l’exécution d’un diagnostic manuel.

Si nécessaire, les traces peuvent être examinées manuellement. Tous les formats sont accessibles en lecture humaine (XML) ou peuvent être facilement inspectés à l’aide d’outils standard (par exemple, les certificats X509 et les extensions Windows Crypto Shell). Notez toutefois que les traces ne sont pas conçues pour le diagnostic manuel et qu’il est toujours plus efficace de traiter les traces avec les installations de diagnostic de Get-HgsTrace.

Les résultats de l’exécution de la collection de traces n’indiquent pas l’intégrité d’un hôte donné. Ils indiquent simplement que les traces ont été collectées avec succès. Il est nécessaire d’utiliser les installations de diagnostic de Get-HgsTrace pour déterminer si les traces indiquent un environnement défaillant.

À l’aide du -Diagnostic paramètre , vous pouvez restreindre la collecte de traces uniquement aux traces requises pour faire fonctionner la diagnostics spécifiée. Cela réduit la quantité de données collectées ainsi que les autorisations requises pour appeler diagnostics.

Diagnostic

Les traces collectées peuvent être diagnostiquées en fournissant Get-HgsTrace l’emplacement des traces via le -Path paramètre et en spécifiant le -RunDiagnostics commutateur. En outre, Get-HgsTrace peut effectuer la collecte et le diagnostic en une seule passe en fournissant le -RunDiagnostics commutateur et une liste de cibles de trace. Si aucune cible de trace n’est fournie, l’ordinateur actuel est utilisé comme cible implicite, son rôle étant déduit en inspectant les modules Windows PowerShell installés.

Le diagnostic fournit des résultats dans un format hiérarchique indiquant les cibles de trace, les jeux de diagnostics et les diagnostics individuels responsables d’une défaillance particulière. Les échecs incluent des recommandations de correction et de résolution si une détermination peut être faite quant à l’action à entreprendre ensuite. Par défaut, la transmission et les résultats non pertinents sont masqués. Pour voir tout ce qui a été testé par diagnostics, spécifiez le -Detailed commutateur. Cela entraîne l’affichage de tous les résultats, quelle que soit leur status.

Il est possible de restreindre l’ensemble des diagnostics exécutées à l’aide du -Diagnostic paramètre . Cela vous permet de spécifier les classes de diagnostic à exécuter sur les cibles de trace et de supprimer toutes les autres. Parmi les exemples de classes de diagnostic disponibles, citons la mise en réseau, les meilleures pratiques et le matériel client. Consultez la documentation de l’applet de commande pour trouver une liste à jour des diagnostics disponibles.

Avertissement

Les diagnostics ne remplacent pas un pipeline fort de surveillance et de réponse aux incidents. Un package System Center Operations Manager est disponible pour la surveillance des structures surveillées, ainsi que divers canaux du journal des événements qui peuvent être surveillés pour détecter les problèmes en amont. Les diagnostics peuvent ensuite être utilisés pour trier rapidement ces défaillances et établir une ligne de conduite.

Ciblage des diagnostics

Get-HgsTrace fonctionne sur des cibles de trace. Une cible de trace est un objet qui correspond à un nœud SGH ou à un hôte protégé à l’intérieur d’une structure protégée. Il peut être considéré comme une extension d’un PSSession, qui inclut des informations requises uniquement par diagnostics telles que le rôle de l’hôte dans l’infrastructure. Les cibles peuvent être générées implicitement (par exemple, un diagnostic local ou manuel) ou explicitement avec l’applet de New-HgsTraceTarget commande .

Diagnostic local

Par défaut, Get-HgsTrace cible le localhost (c’est-à-dire, où l’applet de commande est appelée). Il s’agit de la cible locale implicite. La cible locale implicite n’est utilisée que lorsqu’aucune cible n’est fournie dans le -Target paramètre et qu’aucune trace préexistante n’est trouvée dans le -Path.

La cible locale implicite utilise l’inférence de rôle pour déterminer le rôle que l’hôte actuel joue dans l’infrastructure protégée. Cela est basé sur les modules Windows PowerShell installés, qui correspondent à peu près aux fonctionnalités installées sur le système. La présence du HgsServer module entraîne l’attribution du rôle HostGuardianService par la cible de trace et la présence du HgsClient module entraîne l’attribution du rôle GuardedHostpar la cible de trace. Il est possible pour un hôte donné d’avoir les deux modules présents, auquel cas il sera traité à la fois comme un HostGuardianService et un GuardedHost.

Par conséquent, l’appel par défaut de diagnostics pour collecter les traces localement :

Get-HgsTrace

Cela équivaut à ce qui suit :

New-HgsTraceTarget -Local | Get-HgsTrace

Conseil

Get-HgsTrace peut accepter des cibles via le pipeline ou directement via le -Target paramètre . Il n’y a aucune différence entre les deux sur le plan opérationnel.

Diagnostic à distance à l’aide de cibles de trace

Il est possible de diagnostiquer à distance un hôte en générant des cibles de trace avec des informations de connexion à distance. Tout ce qui est requis, c’est le nom d’hôte et un ensemble d’informations d’identification capables de se connecter à l’aide de Windows PowerShell communication à distance.

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

Cet exemple génère une invite pour collecter les informations d’identification de l’utilisateur distant, puis diagnostics exécuter à l’aide de l’hôte distant sur hgs-01.secure.contoso.com pour terminer la collecte des traces. Les traces résultantes sont téléchargées sur localhost, puis diagnostiquées. Les résultats du diagnostic sont présentés de la même façon que lors de l’exécution d’un diagnostic local. De même, il n’est pas nécessaire de spécifier un rôle, car il peut être déduit en fonction des modules Windows PowerShell installés sur le système distant.

Le diagnostic à distance utilise Windows PowerShell communication à distance pour tous les accès à l’hôte distant. Par conséquent, il est nécessaire que la cible de trace ait Windows PowerShell communication à distance activée (voir Activer PSRemoting) et que l’hôte localhost soit correctement configuré pour lancer des connexions à la cible.

Remarque

Dans la plupart des cas, il est uniquement nécessaire que localhost fait partie de la même forêt Active Directory et qu’un nom d’hôte DNS valide soit utilisé. Si votre environnement utilise un modèle de fédération plus complexe ou si vous souhaitez utiliser des adresses IP directes pour la connectivité, vous devrez peut-être effectuer une configuration supplémentaire, telle que la définition des hôtes approuvés WinRM.

Vous pouvez vérifier qu’une cible de trace est correctement instanciée et configurée pour accepter des connexions à l’aide de l’applet de Test-HgsTraceTarget commande :

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

Cette applet de commande retourne $True si et uniquement si Get-HgsTrace est en mesure d’établir une session de diagnostic à distance avec la cible de trace. En cas d’échec, cette applet de commande retourne des informations status pertinentes pour résoudre les problèmes de connexion à distance Windows PowerShell.

Informations d’identification implicites

Lors de l’exécution d’un diagnostic à distance à partir d’un utilisateur disposant de privilèges suffisants pour se connecter à distance à la cible de trace, il n’est pas nécessaire de fournir des informations d’identification à New-HgsTraceTarget. L’applet Get-HgsTrace de commande réutilise automatiquement les informations d’identification de l’utilisateur qui a appelé l’applet de commande lors de l’ouverture d’une connexion.

Avertissement

Certaines restrictions s’appliquent à la réutilisation des informations d’identification, en particulier lors de l’exécution de ce que l’on appelle un « deuxième tronçon ». Cela se produit lors de la tentative de réutilisation des informations d’identification à partir d’une session à distance sur un autre ordinateur. Il est nécessaire de configurer CredSSP pour prendre en charge ce scénario, mais cela est en dehors du cadre de la gestion et de la résolution des problèmes de structure protégée.

Utilisation Windows PowerShell Just Enough Administration (JEA) et diagnostics

Le diagnostic à distance prend en charge l’utilisation de points de terminaison Windows PowerShell limités par JEA. Par défaut, les cibles de trace distante se connectent à l’aide du point de terminaison par défaut microsoft.powershell . Si la cible de trace a le HostGuardianService rôle, elle tente également d’utiliser le microsoft.windows.hgs point de terminaison, qui est configuré lors de l’installation de SGH.

Si vous souhaitez utiliser un point de terminaison personnalisé, vous devez spécifier le nom de configuration de session lors de la construction de la cible de trace à l’aide du -PSSessionConfigurationName paramètre , comme ci-dessous :

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

Diagnostic de plusieurs hôtes

Vous pouvez passer plusieurs cibles de trace à Get-HgsTrace la fois. Cela inclut une combinaison de cibles locales et distantes. Chaque cible est tracée à son tour, puis les traces de chaque cible sont diagnostiquées simultanément. L’outil de diagnostic peut utiliser les connaissances accrues de votre déploiement pour identifier les erreurs de configuration entre nœuds complexes qui ne seraient pas détectables autrement. L’utilisation de cette fonctionnalité nécessite uniquement de fournir des traces à partir de plusieurs hôtes simultanément (dans le cas d’un diagnostic manuel) ou en ciblant plusieurs hôtes lors de l’appel Get-HgsTrace (dans le cas d’un diagnostic à distance).

Voici un exemple d’utilisation du diagnostic à distance pour trier une structure composée de deux nœuds SGH et de deux hôtes protégés, où l’un des hôtes protégés est utilisé pour lancer 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

Remarque

Vous n’avez pas besoin de diagnostiquer l’ensemble de votre infrastructure protégée lors du diagnostic de plusieurs nœuds. Dans de nombreux cas, il suffit d’inclure tous les nœuds qui peuvent être impliqués dans une condition de défaillance donnée. Il s’agit généralement d’un sous-ensemble des hôtes protégés et d’un certain nombre de nœuds du cluster SGH.

Diagnostic manuel à l’aide de traces enregistrées

Parfois, vous pouvez souhaiter réexécuter diagnostics sans collecter à nouveau les traces, ou vous n’avez peut-être pas les informations d’identification nécessaires pour diagnostiquer à distance tous les hôtes dans votre infrastructure simultanément. Le diagnostic manuel est un mécanisme par lequel vous pouvez toujours effectuer un triage de structure entière à l’aide Get-HgsTracede , mais sans utiliser la collecte de traces distantes.

Avant d’effectuer un diagnostic manuel, vous devez vous assurer que les administrateurs de chaque hôte de l’infrastructure qui sera triée sont prêts à exécuter des commandes en votre nom. La sortie de trace de diagnostic n’expose aucune information généralement perçue comme sensible, mais il incombe à l’utilisateur de déterminer s’il est sûr d’exposer ces informations à d’autres personnes.

Remarque

Les traces ne sont pas rendues anonymes et révèlent la configuration réseau, les paramètres PKI et d’autres configurations qui sont parfois considérées comme des informations privées. Par conséquent, les traces doivent être transmises uniquement aux entités approuvées au sein d’un organization et ne doivent jamais être publiées publiquement.

Les étapes d’exécution d’un diagnostic manuel sont les suivantes :

  1. Demandez à chaque administrateur hôte d’exécuter Get-HgsTrace en spécifiant un connu -Path et la liste des diagnostics que vous envisagez d’exécuter sur les traces résultantes. Par exemple :

    Get-HgsTrace -Path C:\Traces -Diagnostic Networking,BestPractices
    
  2. Demandez à chaque administrateur hôte de empaqueter le dossier traces obtenu et de vous l’envoyer. Ce processus peut être piloté par e-mail, via des partages de fichiers ou tout autre mécanisme basé sur les stratégies et procédures de fonctionnement établies par votre organization.

  3. Fusionnez toutes les traces reçues dans un seul dossier, sans autre contenu ou dossier.

    Par exemple, supposons que vos administrateurs vous envoient des traces collectées à partir de quatre machines nommées SGH-01, SGH-02, RR1N2608-12 et RR1N2608-13. Chaque administrateur vous aurait envoyé un dossier du même nom. Vous devez assembler une structure de répertoires qui apparaît comme suit :

    FabricTraces
    |- HGS-01
    |  |- TargetMetadata.xml
    |  |- Metadata.xml
    |  |- [any other trace files for this host]
    |- HGS-02
    |  |- [...]
    |- RR1N2608-12
    |  |- [...]
    |- RR1N2608-13
       |- [..]
    
  4. Exécutez diagnostics, en fournissant le chemin d’accès au dossier de trace assemblé sur le -Path paramètre et en spécifiant le -RunDiagnostics commutateur ainsi que les diagnostics pour lesquels vous avez demandé à vos administrateurs de collecter des traces. Les diagnostics supposent qu’il ne peut pas accéder aux hôtes trouvés à l’intérieur du chemin d’accès et tente donc d’utiliser uniquement les traces précollectées. Si des traces sont manquantes ou endommagées, diagnostics échoue uniquement aux tests affectés et se déroule normalement. Par exemple :

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

Combinaison de traces enregistrées avec des cibles supplémentaires

Dans certains cas, vous pouvez avoir un ensemble de traces précollectées que vous souhaitez compléter avec des traces d’hôte supplémentaires. Il est possible de combiner des traces précollectées avec des cibles supplémentaires qui seront tracées et diagnostiquées dans un seul appel de diagnostics.

En suivant les instructions pour collecter et assembler un dossier de trace spécifié ci-dessus, appelez Get-HgsTrace avec des cibles de trace supplémentaires introuvables dans le dossier de trace précollé :

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

L’applet de commande de diagnostic identifie tous les hôtes précollectés, ainsi que l’hôte supplémentaire qui doit encore être suivi et effectue le suivi nécessaire. La somme de toutes les traces précollectées et fraîchement collectées sera ensuite diagnostiquée. Le dossier de trace obtenu contient les anciennes et nouvelles traces.

Problèmes connus

Le module de diagnostics d’infrastructure protégée présente des limitations connues lorsqu’il est exécuté sur Windows Server 2019 ou Windows 10, version 1809 et versions plus récentes du système d’exploitation. L’utilisation des fonctionnalités suivantes peut entraîner des résultats erronés :

  • Attestation de clé d’hôte
  • Configuration SGH d’attestation uniquement (pour les scénarios SQL Server Always Encrypted)
  • Utilisation d’artefacts de stratégie v1 sur un serveur SGH où la stratégie d’attestation par défaut est v2

Une défaillance dans Get-HgsTrace lors de l’utilisation de ces fonctionnalités n’indique pas nécessairement que le serveur SGH ou l’hôte protégé est mal configuré. Utilisez d’autres outils de diagnostic comme Get-HgsClientConfiguration sur un hôte protégé pour tester si un hôte a réussi l’attestation.