Solución de problemas con la herramienta de diagnóstico de tejido protegido

En este artículo se describe el uso de la herramienta de diagnóstico de tejido protegido para identificar y corregir errores comunes en la implementación, configuración y funcionamiento en curso de la infraestructura de tejido protegido. Esto incluye el Servicio de protección de host (HGS), todos los hosts protegidos y servicios auxiliares como DNS y Active Directory.

Se aplica a: Windows Server 2022, Windows Server 2019, Windows Server 2016

La herramienta de diagnóstico se puede usar para realizar un primer paso en la triaging de un tejido protegido con errores, lo que proporciona a los administradores un punto de partida para resolver interrupciones e identificar recursos mal configurados. La herramienta no es un reemplazo para una comprensión sólida de funcionamiento de un tejido protegido y solo sirve para comprobar rápidamente los problemas más comunes encontrados durante las operaciones diarias.

Puede encontrar documentación completa de los cmdlets usados en este artículo en la referencia del módulo HgsDiagnostics.

Nota:

Al ejecutar la herramienta de diagnóstico de Guarded Fabric (Get-HgsTrace -RunDiagnostics), es posible que se devuelva un estado incorrecto que indique que la configuración HTTPS se interrumpe cuando, de hecho, no se interrumpe o no se usa. Este error se puede devolver independientemente del modo de atestación de HGS. Las posibles causas raíz son las siguientes:

  • HTTPS está configurado o roto de forma incorrecta
  • Está usando la atestación de confianza del administrador y la relación de confianza está rota. Esto es independientemente de si HTTPS está configurado correctamente, de forma incorrecta o no en uso. Tenga en cuenta que los diagnósticos solo devolverán este estado incorrecto al dirigirse a un host de Hyper-V. Si los diagnósticos tienen como destino el Servicio de protección de host, el estado devuelto será correcto.

Inicio rápido

Puede diagnosticar un host protegido o un nodo HGS llamando a lo siguiente desde una sesión de Windows PowerShell con privilegios de administrador local:

Get-HgsTrace -RunDiagnostics -Detailed

Esto detectará automáticamente el rol del host actual y diagnosticará los problemas pertinentes que se puedan detectar automáticamente. Todos los resultados generados durante este proceso se muestran debido a la presencia del -Detailed conmutador.

El resto de este tema proporcionará un tutorial detallado sobre el uso avanzado de Get-HgsTrace para realizar tareas como diagnosticar varios hosts a la vez y detectar configuraciones incorrectas complejas entre nodos.

Información general sobre diagnósticos

Los diagnósticos de tejido protegido están disponibles en cualquier host con herramientas y características relacionadas con máquinas virtuales blindadas instaladas, incluidos los hosts que ejecutan Server Core. Actualmente, los diagnósticos se incluyen con las siguientes características o paquetes:

  • Rol de servicio de guardián de host
  • Soporte técnico de Hyper-V del guardián del host
  • Herramientas de blindaje de máquinas virtuales para la administración de tejido
  • Herramientas de administración remota del servidor (RSAT)

Esto significa que las herramientas de diagnóstico estarán disponibles en todos los hosts protegidos, nodos HGS, determinados servidores de administración de tejido y cualquier estación de trabajo de Windows 10 con RSAT instalado. Los diagnósticos se pueden invocar desde cualquiera de las máquinas anteriores con la intención de diagnosticar cualquier host protegido o nodo HGS en un tejido protegido; mediante destinos de seguimiento remotos, los diagnósticos pueden localizar y conectarse a hosts distintos de la máquina que ejecuta diagnósticos.

Cada host dirigido por diagnósticos se conoce como "destino de seguimiento". Los destinos de seguimiento se identifican por sus nombres de host y roles. Los roles describen la función que realiza un destino de seguimiento determinado en un tejido protegido. Actualmente, el seguimiento tiene como destino la compatibilidad HostGuardianService y GuardedHost los roles. Tenga en cuenta que es posible que un host ocupe varios roles a la vez y esto también es compatible con los diagnósticos, pero esto no debe realizarse en entornos de producción. Los hosts HGS e Hyper-V deben mantenerse separados y distintos en todo momento.

Los administradores pueden iniciar cualquier tarea de diagnóstico ejecutando Get-HgsTrace. Este cmdlet realiza dos funciones distintas en función de los modificadores proporcionados en tiempo de ejecución: recopilación de seguimiento y diagnóstico. Estos dos combinados conforman la totalidad de la herramienta de diagnóstico de tejido protegido. Aunque no es necesario explícitamente, los diagnósticos más útiles requieren seguimientos que solo se pueden recopilar con credenciales de administrador en el destino de seguimiento. Si el usuario que ejecuta la recopilación de seguimiento no dispone de privilegios suficientes, se producirá un error en los seguimientos que requieren elevación mientras que todos los demás pasarán. Esto permite un diagnóstico parcial en caso de que un operador con privilegios inferiores esté realizando la evaluación de prioridades.

Colección de seguimiento

De forma predeterminada, Get-HgsTrace solo recopilará seguimientos y los guardará en una carpeta temporal. Los seguimientos toman la forma de una carpeta, denominada así por el host de destino, rellenada con archivos con formato especial que describen cómo se configura el host. Los seguimientos también contienen metadatos que describen cómo se invocó el diagnóstico para recopilar los seguimientos. Estos datos los usan los diagnósticos para rehidratar la información sobre el host al realizar un diagnóstico manual.

Si es necesario, los seguimientos se pueden revisar manualmente. Todos los formatos son legibles por el usuario (XML) o se pueden inspeccionar fácilmente mediante herramientas estándar (por ejemplo, certificados X509 y extensiones de Windows Crypto Shell). Sin embargo, tenga en cuenta que los seguimientos no están diseñados para el diagnóstico manual y siempre es más eficaz procesar los seguimientos con las instalaciones de diagnóstico de Get-HgsTrace.

Los resultados de la ejecución de la colección de seguimiento no indican el estado de un host determinado. Simplemente indican que los seguimientos se recopilaron correctamente. Es necesario usar las instalaciones de diagnóstico de Get-HgsTrace para determinar si los seguimientos indican un entorno con errores.

Con el parámetro , puede restringir la -Diagnostic recopilación de seguimiento a solo los seguimientos necesarios para operar los diagnósticos especificados. Esto reduce la cantidad de datos recopilados, así como los permisos necesarios para invocar diagnósticos.

Diagnóstico

Los seguimientos recopilados se pueden diagnosticar si se proporciona Get-HgsTrace la ubicación de los seguimientos a través del -Path parámetro y se especifica el -RunDiagnostics modificador. Además, Get-HgsTrace puede realizar la recopilación y el diagnóstico en un solo paso proporcionando el -RunDiagnostics modificador y una lista de destinos de seguimiento. Si no se proporciona ningún destino de seguimiento, la máquina actual se usa como destino implícito, con su rol inferido mediante la inspección de los módulos de Windows PowerShell instalados.

El diagnóstico proporcionará resultados en un formato jerárquico que muestra qué destinos de seguimiento, conjuntos de diagnóstico y diagnósticos individuales son responsables de un error determinado. Entre los errores se incluyen recomendaciones de corrección y resolución si se puede determinar qué acción se debe realizar a continuación. De forma predeterminada, se ocultan los resultados pasados e irrelevantes. Para ver todo lo que prueban los diagnósticos, especifique el -Detailed modificador. Esto hace que todos los resultados aparezcan independientemente de su estado.

Es posible restringir el conjunto de diagnósticos que se ejecutan mediante el -Diagnostic parámetro . Esto permite especificar qué clases de diagnóstico se deben ejecutar en los destinos de seguimiento y suprimir todas las demás. Algunos ejemplos de clases de diagnóstico disponibles son redes, procedimientos recomendados y hardware de cliente. Consulte la documentación del cmdlet para encontrar una lista actualizada de diagnósticos disponibles.

Advertencia

Los diagnósticos no reemplazan una canalización de supervisión segura y respuesta a incidentes. Hay un paquete de System Center Operations Manager disponible para supervisar tejidos protegidos, así como varios canales de registro de eventos que se pueden supervisar para detectar problemas de forma temprana. A continuación, se pueden usar diagnósticos para evaluar rápidamente estos errores y establecer un curso de acción.

Diagnóstico de destino

Get-HgsTrace funciona con destinos de seguimiento. Un destino de seguimiento es un objeto que corresponde a un nodo HGS o a un host protegido dentro de un tejido protegido. Se puede considerar como una extensión de , PSSessionque incluye información necesaria solo para diagnósticos, como el rol del host en el tejido. Los destinos se pueden generar implícitamente (por ejemplo, diagnóstico local o manual) o explícitamente con el New-HgsTraceTarget cmdlet .

Diagnóstico local

De forma predeterminada, tendrá como destino localhost (es decir, Get-HgsTrace donde se invoca el cmdlet). Esto se conoce como destino local implícito. El destino local implícito solo se usa cuando no se proporciona ningún destino en el -Target parámetro y no se encuentra ningún seguimiento preexistente en .-Path

El destino local implícito usa la inferencia de roles para determinar qué rol desempeña el host actual en el tejido protegido. Esto se basa en los módulos de Windows PowerShell instalados, que se corresponden aproximadamente con las características que se han instalado en el sistema. La presencia del HgsServer módulo hace que el destino de seguimiento tome el rol HostGuardianService y la presencia del HgsClient módulo hace que el destino de seguimiento tome el rol GuardedHost. Es posible que un host determinado tenga ambos módulos presentes, en cuyo caso se tratará como un HostGuardianService y un GuardedHost.

Por lo tanto, la invocación predeterminada de diagnósticos para recopilar seguimientos localmente:

Get-HgsTrace

Esto equivale a lo siguiente:

New-HgsTraceTarget -Local | Get-HgsTrace

Sugerencia

Get-HgsTrace puede aceptar destinos a través de la canalización o directamente a través del -Target parámetro . No hay ninguna diferencia entre los dos de forma operativa.

Diagnóstico remoto mediante destinos de seguimiento

Es posible diagnosticar de forma remota un host mediante la generación de destinos de seguimiento con información de conexión remota. Todo lo que se requiere es el nombre de host y un conjunto de credenciales capaces de conectarse mediante Windows PowerShell comunicación remota.

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

En este ejemplo se genera un mensaje para recopilar las credenciales de usuario remoto y, a continuación, los diagnósticos se ejecutan con el host remoto en hgs-01.secure.contoso.com para completar la recopilación de seguimiento. Los seguimientos resultantes se descargan en localhost y, a continuación, se diagnostican. Los resultados del diagnóstico se presentan igual que cuando se realiza el diagnóstico local. Del mismo modo, no es necesario especificar un rol, ya que se puede deducir en función de los módulos Windows PowerShell instalados en el sistema remoto.

El diagnóstico remoto utiliza Windows PowerShell comunicación remota para todos los accesos al host remoto. Por lo tanto, es un requisito previo que el destino de seguimiento tenga habilitada Windows PowerShell comunicación remota (consulte Habilitar PSRemoting) y que localhost esté configurado correctamente para iniciar conexiones al destino.

Nota:

En la mayoría de los casos, solo es necesario que localhost forme parte del mismo bosque de Active Directory y que se use un nombre de host DNS válido. Si el entorno usa un modelo de federación más complicado o desea usar direcciones IP directas para la conectividad, es posible que tenga que realizar una configuración adicional, como establecer los hosts de confianza de WinRM.

Puede comprobar que se crea una instancia de un destino de seguimiento correctamente y se ha configurado para aceptar conexiones mediante el Test-HgsTraceTarget cmdlet :

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

Este cmdlet devuelve $True si y solo si Get-HgsTrace sería capaz de establecer una sesión de diagnóstico remota con el destino de seguimiento. Tras un error, este cmdlet devuelve información de estado pertinente para solucionar problemas adicionales de la conexión remota Windows PowerShell.

Credenciales implícitas

Al realizar un diagnóstico remoto de un usuario con privilegios suficientes para conectarse de forma remota al destino de seguimiento, no es necesario proporcionar credenciales a New-HgsTraceTarget. El Get-HgsTrace cmdlet reutilizará automáticamente las credenciales del usuario que invocó el cmdlet al abrir una conexión.

Advertencia

Algunas restricciones se aplican a la reutilización de credenciales, especialmente al realizar lo que se conoce como "segundo salto". Esto ocurre al intentar reutilizar las credenciales desde dentro de una sesión remota a otra máquina. Es necesario configurar CredSSP para admitir este escenario, pero esto está fuera del ámbito de la administración de tejido protegido y la solución de problemas.

Uso de Windows PowerShell Just Enough Administration (JEA) y diagnósticos

El diagnóstico remoto admite el uso de puntos de conexión de Windows PowerShell restringidos por JEA. De forma predeterminada, los destinos de seguimiento remotos se conectarán mediante el punto de conexión predeterminado microsoft.powershell . Si el destino de seguimiento tiene el HostGuardianService rol , también intentará usar el microsoft.windows.hgs punto de conexión, que se configura cuando se instala HGS.

Si desea usar un punto de conexión personalizado, debe especificar el nombre de configuración de sesión al construir el destino de seguimiento mediante el -PSSessionConfigurationName parámetro , como se muestra a continuación:

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

Diagnóstico de varios hosts

Puede pasar varios destinos de seguimiento a la Get-HgsTrace vez. Esto incluye una combinación de destinos locales y remotos. Cada destino se realiza un seguimiento a su vez y, a continuación, los seguimientos de cada destino se diagnosticarán simultáneamente. La herramienta de diagnóstico puede usar el mayor conocimiento de la implementación para identificar configuraciones erróneas complejas entre nodos que, de lo contrario, no serían detectables. El uso de esta característica solo requiere proporcionar seguimientos de varios hosts simultáneamente (en el caso del diagnóstico manual) o mediante el destino de varios hosts al llamar Get-HgsTrace a (en el caso del diagnóstico remoto).

Este es un ejemplo del uso del diagnóstico remoto para evaluar un tejido compuesto por dos nodos HGS y dos hosts protegidos, donde se usa uno de los hosts protegidos para iniciar 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:

No es necesario diagnosticar todo el tejido protegido al diagnosticar varios nodos. En muchos casos, basta con incluir todos los nodos que pueden estar implicados en una condición de error determinada. Suele ser un subconjunto de los hosts protegidos y un número determinado de nodos del clúster de HGS.

Diagnóstico manual mediante seguimientos guardados

En ocasiones, es posible que quiera volver a ejecutar los diagnósticos sin recopilar seguimientos de nuevo, o es posible que no tenga las credenciales necesarias para diagnosticar de forma remota todos los hosts del tejido simultáneamente. El diagnóstico manual es un mecanismo por el que todavía puede realizar una evaluación de valor de todo el tejido mediante Get-HgsTrace, pero sin usar la recopilación de seguimiento remota.

Antes de realizar el diagnóstico manual, deberá asegurarse de que los administradores de cada host del tejido que se va a evaluar estén listos y dispuestos a ejecutar comandos en su nombre. La salida de seguimiento de diagnóstico no expone ninguna información que generalmente se considere confidencial, pero es responsabilidad del usuario determinar si es seguro exponer esta información a otros usuarios.

Nota:

Los seguimientos no se anonimizan y revelan la configuración de red, la configuración de PKI y otra configuración que a veces se considera información privada. Por lo tanto, los seguimientos solo deben transmitirse a entidades de confianza dentro de una organización y nunca publicarse públicamente.

Los pasos para realizar un diagnóstico manual son los siguientes:

  1. Solicite que cada administrador de host ejecute Get-HgsTrace especificando un conocido -Path y la lista de diagnósticos que piensa ejecutar con los seguimientos resultantes. Por ejemplo:

    Get-HgsTrace -Path C:\Traces -Diagnostic Networking,BestPractices
    
  2. Solicite que cada administrador de host empaquete la carpeta de seguimientos resultante y envíela a usted. Este proceso se puede controlar por correo electrónico, a través de recursos compartidos de archivos o cualquier otro mecanismo basado en las directivas y procedimientos operativos establecidos por su organización.

  3. Combine todos los seguimientos recibidos en una sola carpeta, sin ningún otro contenido ni carpetas.

    Por ejemplo, supongamos que los administradores le enviaron seguimientos recopilados de cuatro máquinas denominadas HGS-01, HGS-02, RR1N2608-12 y RR1N2608-13. Cada administrador le habría enviado una carpeta con el mismo nombre. Ensamblaría una estructura de directorios que aparece como sigue:

    FabricTraces
    |- HGS-01
    |  |- TargetMetadata.xml
    |  |- Metadata.xml
    |  |- [any other trace files for this host]
    |- HGS-02
    |  |- [...]
    |- RR1N2608-12
    |  |- [...]
    |- RR1N2608-13
       |- [..]
    
  4. Ejecute diagnósticos, proporcionando la ruta de acceso a la carpeta de seguimiento ensamblada en el -Path parámetro y especificando el -RunDiagnostics modificador, así como los diagnósticos para los que pidió a los administradores que recopilaran seguimientos. Los diagnósticos suponen que no puede acceder a los hosts que se encuentran dentro de la ruta de acceso y, por lo tanto, intentará usar solo los seguimientos recopilados previamente. Si faltan seguimientos o están dañados, los diagnósticos solo producirán errores en las pruebas afectadas y continuarán con normalidad. Por ejemplo:

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

Combinación de seguimientos guardados con destinos adicionales

En algunos casos, es posible que tenga un conjunto de seguimientos recopilados previamente que desee aumentar con seguimientos de host adicionales. Es posible combinar seguimientos recopilados previamente con destinos adicionales que se rastrearán y diagnosticarán en una sola llamada de diagnóstico.

Siguiendo las instrucciones para recopilar y ensamblar una carpeta de seguimiento especificada anteriormente, llame a Get-HgsTrace con destinos de seguimiento adicionales que no se encuentran en la carpeta de seguimiento precollectada:

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

El cmdlet de diagnóstico identificará todos los hosts precollectados y el único host adicional que todavía debe realizarse un seguimiento y realizará el seguimiento necesario. A continuación, se diagnosticará la suma de todos los seguimientos recopilados previamente y recién recopilados. La carpeta de seguimiento resultante contendrá los seguimientos antiguos y nuevos.

Problemas conocidos

El módulo de diagnóstico de tejido protegido tiene limitaciones conocidas cuando se ejecuta en Windows Server 2019 o Windows 10, versión 1809 y versiones más recientes del sistema operativo. El uso de las siguientes características puede provocar resultados erróneos:

  • Atestación de clave de host
  • Configuración de HGS solo de atestación (para escenarios de SQL Server Always Encrypted)
  • Uso de artefactos de directiva v1 en un servidor HGS donde el valor predeterminado de la directiva de atestación es v2

Un error al Get-HgsTrace usar estas características no indica necesariamente que el servidor HGS o el host protegido están mal configurados. Use otras herramientas de diagnóstico, como Get-HgsClientConfiguration en un host protegido, para probar si un host ha superado la atestación.