Partager via


Résoudre les problèmes à l’aide de l’outil de diagnostic Guarded Fabric

Cet article décrit l’utilisation de l’outil de diagnostic guarded Fabric pour identifier et corriger les défaillances courantes dans le déploiement, la configuration et le fonctionnement continu 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 passe au tri d’une structure 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 n’est pas un remplacement pour une compréhension sonore de l’exploitation 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.

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

Notes

Lors de l’exécution de l’outil de diagnostic Guarded Fabric (Get-HgsTrace -RunDiagnostics), un état incorrect peut être retourné, affirmant que la configuration HTTPS est interrompue 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é/endommagé
  • Vous utilisez une attestation approuvée par l’administrateur et la relation d’approbation est rompue. Il s’agit de savoir si HTTPS est configuré correctement, de manière incorrecte ou non en cours d’utilisation. Notez que les diagnostics retournent uniquement cet état incorrect lors du ciblage d’un hôte Hyper-V. Si les diagnostics ciblent le service Guardian hôte, l’état retourné est correct.

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étecte automatiquement le rôle de l’hôte actuel et diagnostique 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 commutateur -Detailed.

Le reste de cette rubrique fournit une procédure pas à pas détaillée sur l’utilisation avancée de Get-HgsTrace pour effectuer des opérations telles que le diagnostic de plusieurs hôtes à la fois et la détection d’une 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, les diagnostics sont inclus avec les fonctionnalités/packages suivants :

  • Rôle Service Guardian hôte
  • Support Hyper-V pour Guardian hôte
  • Outils de protection d'ordinateur virtuel 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 sur lesquels RSAT est installé. Les diagnostics peuvent être appelés à partir de l’une des machines ci-dessus avec l’intention 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, les diagnostics peuvent localiser et se connecter à des hôtes autres que l’ordinateur exécutant des diagnostics.

Chaque hôte ciblé par les 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 infrastructure protégée. Actuellement, les cibles de trace prennent en charge les rôles HostGuardianService et GuardedHost. Notez qu’il est possible qu’un hôte occupe plusieurs rôles à la fois et qu’il soit également pris en charge par les diagnostics, mais cela ne doit pas être effectué dans les environnements de production. Les hôtes SGH et Hyper-V doivent être toujours séparés et distincts.

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 de traces et diagnostic. Ces deux ensembles constituent l’intégralité de l’outil de diagnostic de l’infrastructure protégée. Bien qu’ils ne soient pas explicitement requis, 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 collecte 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.

Collecte 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 comment l’hôte est configuré. Les traces contiennent également des métadonnées qui décrivent comment les diagnostics ont été appelés pour collecter les traces. Ces données sont utilisées par les diagnostics pour réalimenter des 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 lisibles par l’homme (XML) ou peuvent être facilement inspectés à l’aide d’outils standard (par exemple, des certificats X509 et des 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 ne font aucune indication quant à 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 déterminer si les traces indiquent un environnement défaillant.

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

Diagnostic

Les traces collectées peuvent être diagnostiquées en fournissant Get-HgsTrace l’emplacement des traces via le paramètre -Path et en spécifiant le commutateur -RunDiagnostics. En outre, Get-HgsTrace peut effectuer la collecte et le diagnostic en une seule passe en fournissant le commutateur -RunDiagnostics 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 montrant les cibles de trace, les jeux de diagnostics et les diagnostics individuels qui sont responsables d’un échec particulier. Les échecs incluent des recommandations de correction et de résolution si une décision peut être prise quant à la prochaine action à entreprendre. Par défaut, les résultats transmis et non pertinents sont masqués. Pour voir tout ce qui est testé par les diagnostics, spécifiez le commutateur -Detailed. Cela entraîne l’affichage de tous les résultats indépendamment de leur état.

Il est possible de restreindre l’ensemble des diagnostics exécutés à 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 sur les applets de commande pour trouver une liste à jour des diagnostics disponibles.

Avertissement

Les diagnostics ne sont pas un remplacement d’un pipeline de surveillance et de réponse aux incidents fort. Il existe un package System Center Operations Manager disponible pour la surveillance des structures protégées, ainsi que différents canaux du journal des événements qui peuvent être surveillés pour détecter les problèmes plus tôt. Les diagnostics peuvent ensuite être utilisés pour trier rapidement ces échecs 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 infrastructure protégée. Il peut être considéré comme une extension à un PSSession, qui inclut des informations requises uniquement par les diagnostics tels que le rôle de l’hôte dans l’infrastructure. Les cibles peuvent être générées implicitement (par exemple, diagnostic local ou manuel) ou explicitement avec l’applet de New-HgsTraceTarget commande.

Diagnostic local

Par défaut, Get-HgsTrace cible l’hôte local (c’est-à-dire où l’applet de commande est appelée). C’est ce qu’on appelle la cible locale implicite. La cible locale implicite est utilisée uniquement quand aucune cible n’est fournie dans le paramètre -Target 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 joue l’hôte actuel dans l’infrastructure protégée. Cela est basé sur les modules Windows PowerShell installés, qui correspondent approximativement aux fonctionnalités installées sur le système. La présence du HgsServer module entraîne le rôle HostGuardianService de la cible de trace et la présence du HgsClient module entraîne le rôle GuardedHostde la cible de trace. Il est possible qu’un hôte donné ait les deux modules présents dans le cas où il sera traité comme un HostGuardianService et un GuardedHost.

Par conséquent, l’appel par défaut des diagnostics pour collecter des 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 paramètre -Target. 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 nécessaire, 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 les diagnostics s’exécutent à l’aide de l’hôte distant pour hgs-01.secure.contoso.com terminer la collecte de traces. Les traces résultantes sont téléchargées sur l’hôte local, 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 requis que la cible de trace ait activé la communication à distance Windows PowerShell (voir Activer PSRemoting) et que l’hôte local est correctement configuré pour lancer des connexions à la cible.

Note

Dans la plupart des cas, il est nécessaire que le localhost soit une partie de la même forêt Active Directory et qu’un nom d’hôte DNS valide est 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 les connexions à l’aide de l’applet de commande Test-HgsTraceTarget :

$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 elle Get-HgsTrace serait 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 d’état pertinentes pour la résolution des problèmes supplémentaires de la connexion à distance Windows PowerShell.

Informations d’identification implicites

Lors de l’exécution d’un diagnostic distant à 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 d’un « deuxième tronçon ». Cela se produit lors de la tentative de réutilisation des informations d’identification à partir d’une session à distance vers un autre ordinateur. Il est nécessaire de configurer CredSSP pour prendre en charge ce scénario, mais cela n’est pas dans l’étendue de la gestion et de la résolution des problèmes de la structure protégée.

Utilisation de Windows PowerShell Just Enough Administration (JEA) et de 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 distantes 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 du 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 paramètre -PSSessionConfigurationName, 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 seront diagnostiqués simultanément. L’outil de diagnostic peut utiliser la connaissance accrue de votre déploiement pour identifier des configurations complexes entre nœuds qui ne seraient pas détectables. 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

Note

Vous n’avez pas besoin de diagnostiquer l’ensemble de votre structure protégée lors du diagnostic de plusieurs nœuds. Dans de nombreux cas, il est suffisant d’inclure tous les nœuds susceptibles d’être impliqués dans une condition d’échec 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 souhaiterez peut-être réexécuter les diagnostics sans collecter de traces, ou vous n’avez peut-être pas les informations d’identification nécessaires pour diagnostiquer à distance tous les hôtes de 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 de Get-HgsTrace, mais sans utiliser la collecte de traces à distance.

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

Note

Les traces ne sont pas anonymisées 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 ne doivent être transmises qu’aux entités approuvées au sein d’une organisation 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 diagnostic 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 d’empaqueter le dossier de traces résultant et de vous l’envoyer. Ce processus peut être piloté par courrier électronique, via des partages de fichiers ou tout autre mécanisme basé sur les stratégies et procédures d’exploitation établies par votre organisation.

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

    Par exemple, supposons que vos administrateurs vous envoient des traces collectées à partir de quatre machines nommées HGS-01, HGS-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 des diagnostics, en fournissant le chemin d’accès au dossier de traces assemblés sur le paramètre -Path et en spécifiant le commutateur -RunDiagnostics 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 et tente donc d’utiliser uniquement les traces précollectées. Si des traces sont manquantes ou endommagées, les diagnostics échouent uniquement aux tests affectés et se poursuivent normalement. Par exemple :

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

Mélange des traces enregistrées avec des cibles supplémentaires

Dans certains cas, vous pouvez avoir un ensemble de traces précollectées que vous souhaitez augmenter 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és 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écollecté :

$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 et l’hôte supplémentaire qui doit toujours ê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é. Le dossier de traces résultant contient à la fois les anciennes et les 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 les 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 de 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 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.