Solución de problemas mediante la herramienta de diagnóstico de Tejido protegido
En este artículo se describe el uso de guarded Fabric Diagnostic Tool para identificar y corregir errores comunes en la implementación, la configuración y el funcionamiento en curso de la infraestructura de tejido protegida. Esto incluye el Servicio de protección de host (HGS), todos los hosts protegidos y los 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 para evaluar un tejido protegido por error, lo que proporciona a los administradores un punto de partida para resolver interrupciones e identificar recursos mal configurados. La herramienta no es un reemplazo de un sonido de funcionamiento de un tejido protegido y solo sirve para comprobar rápidamente los problemas más comunes detectados 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 tejido protegido (Get-HgsTrace -RunDiagnostics), es posible que se devuelva un estado incorrecto indicando que la configuración HTTPS está rota cuando, en realidad, no está rota o no se está utilizando. Este error puede aparecer independientemente del modo de atestación de HGS. Las principales causas posibles son las siguientes:
- El HTTPS está configurado incorrectamente o roto
- Está usando la atestación de confianza de administrador y la relación de confianza se interrumpe. Esto es independientemente de si HTTPS está configurado correctamente, incorrectamente o no en uso. Tenga en cuenta que los diagnósticos solo devolverán este estado incorrecto cuando tengan como destino un host 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 al siguiente código 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á cualquier problema relevante que se pueda detectar automáticamente. Todos los resultados generados durante este proceso se muestran debido a la presencia del modificador -Detailed
.
En el resto de este artículo se proporciona un tutorial detallado sobre el uso avanzado de Get-HgsTrace
para hacer tareas como diagnosticar varios hosts a la vez y detectar una configuración incorrecta compleja 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 protección de host
- Compatibilidad de Hyper-V con protección de host
- Herramientas de blindaje de máquinas virtuales para la administración de tejidos
- 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 los diagnósticos.
Cada host al que se dirigen los diagnósticos se denomina "destino de seguimiento". Los destinos de seguimiento se identifican mediante sus nombres de host y roles. Los roles describen la función que realiza un destino de seguimiento determinado en un tejido protegido. Actualmente, los destinos de seguimiento admiten los roles HostGuardianService
y GuardedHost
. 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 de HGS y Hyper-V deben mantenerse separados y distintos en todo momento.
Los administradores pueden comenzar 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. Estas dos funciones combinadas constituyen la totalidad de la Herramienta de diagnóstico de tejido protegido. Aunque no se requiere 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 tiene suficientes privilegios, se producirá un error en los seguimientos que requieren elevación, mientras que todos los demás se aprobarán. Esto permite un diagnóstico parcial en caso de que un operador con privilegios inferiores esté realizando la evaluación de prioridades.
Recopilación de seguimiento
De manera predeterminada, Get-HgsTrace
solo recopila seguimientos y los guarda en una carpeta temporal. Los seguimientos adoptan la forma de una carpeta, denominada según el host de destino, llena de archivos con un formato especial que describen cómo está configurado el host. Los seguimientos también contienen metadatos que describen cómo se invocaron los diagnósticos para recopilar los seguimientos. Los diagnósticos usan estos datos para rehidratar información sobre el host cuando se realiza un diagnóstico manual.
Si es necesario, se pueden revisar manualmente los seguimientos. 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 recopilació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 -Diagnostic
, puede restringir la recopilación de seguimiento solo a los seguimientos necesarios para el funcionamiento de 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 proporcionando a Get-HgsTrace
la ubicación de los seguimientos mediante el parámetro -Path
y especificando el modificador -RunDiagnostics
. Además, Get-HgsTrace
puede realizar la recopilación y el diagnóstico en un solo paso proporcionando el modificador -RunDiagnostics
y una lista de destinos de seguimiento. Si no se proporcionan destinos 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. Los errores incluyen recomendaciones de corrección y resolución si se puede determinar qué medidas deben tomarse a continuación. De manera predeterminada, se ocultan los resultados aprobados e irrelevantes. Para ver todo lo probado por los diagnósticos, especifique el modificador -Detailed
. 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 le permite especificar qué clases de diagnóstico se deben ejecutar en los destinos de seguimiento y suprimir todas las demás. Entre los ejemplos de clases de diagnóstico disponibles se incluyen redes, procedimientos recomendados y hardware de cliente. Consulte la documentación del cmdlet para buscar una lista actualizada de diagnósticos disponibles.
Advertencia
Los diagnósticos no son un reemplazo de una canalización de supervisión sólida y respuesta a incidentes. Hay un paquete de System Center Operations Manager disponible para supervisar los tejidos protegidos, así como varios canales de registro de eventos que se pueden supervisar para detectar problemas con antelación. Después, los diagnósticos se pueden usar para evaluar rápidamente estos errores y establecer una línea de actuación.
Diagnóstico de destino
Get-HgsTrace
funciona con destinos de seguimiento. Un destino de seguimiento es un objeto que se corresponde con un nodo HGS o un host protegido dentro de un tejido protegido. Se puede considerar como una extensión para , PSSession
que incluye información necesaria solo por 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 manera predeterminada, Get-HgsTrace
tendrá como destino el localhost (es decir, 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 parámetro -Target
y no se encuentra ningún seguimiento preexistente en el -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 y HostGuardianService
.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 parámetro -Target
. Desde el punto de vista operativo, no hay ninguna diferencia entre ambos.
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 necesario es el nombre de host y un conjunto de credenciales capaces de conectarse mediante comunicación remota de Windows PowerShell.
$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 mediante el host remoto en hgs-01.secure.contoso.com
para completar la recopilación de seguimientos. Los seguimientos resultantes se descargan en el localhost y, a continuación, se diagnostican. Los resultados del diagnóstico se presentan igual que cuando se realiza un diagnóstico local. Del mismo modo, no es necesario especificar un rol, ya que se puede deducir en función de los módulos de Windows PowerShell instalados en el sistema remoto.
El diagnóstico remoto utiliza comunicación remota de Windows PowerShell para todos los accesos al host remoto. Por lo tanto, es un requisito previo que el destino de seguimiento tenga habilitada la comunicación remota de Windows PowerShell (consulte Habilitar PSRemoting) y que el host local 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 utiliza un modelo de federación más complicado o quiere 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 verificar que un destino de seguimiento está correctamente instanciado y configurado para aceptar conexiones mediante el cmdlet Test-HgsTraceTarget
:
$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
pudiera establecer una sesión de diagnóstico remoto con el destino de seguimiento. Tras un error, este cmdlet devuelve información de estado relevante para solucionar más problemas de la conexión remota de Windows PowerShell.
Credenciales implícitas
Al realizar el diagnóstico remoto desde un usuario con privilegios suficientes para conectarse de forma remota al destino de seguimiento, no es necesario proporcionar credenciales a New-HgsTraceTarget
. El cmdlet Get-HgsTrace
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 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 remoto se conectarán mediante el punto de conexión microsoft.powershell
predeterminado. 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 parámetro -PSSessionConfigurationName
, como se indica 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 Get-HgsTrace
a la 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 incorrectas 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 apuntando a varios hosts al llamar a Get-HgsTrace
(en el caso del diagnóstico remoto).
Este es un ejemplo de 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, es suficiente incluir todos los nodos que pueden estar implicados en una condición de error determinada. Suele ser un subconjunto de los hosts protegidos y algún número de nodos del clúster de HGS.
Diagnóstico manual mediante seguimientos guardados
A veces, es posible que quiera volver a ejecutar diagnósticos sin volver a recopilar seguimientos, 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 mediante el cual se puede seguir realizando una evaluación de prioridades de todo el tejido mediante Get-HgsTrace
, pero sin usar la recopilación remota de seguimientos.
Antes de realizar el diagnóstico manual, deberá asegurarse de que los administradores de cada host del tejido que se evaluarán estén listos y dispuestos a ejecutar comandos en su nombre. La salida del seguimiento de diagnóstico no expone ninguna información que generalmente se vea como confidencial, pero corresponde al 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 deben publicarse.
Los pasos para realizar un diagnóstico manual son los siguientes:
Solicite que cada administrador de host ejecute
Get-HgsTrace
especificando un-Path
conocido y la lista de diagnósticos que pretende ejecutar en los seguimientos resultantes. Por ejemplo:Get-HgsTrace -Path C:\Traces -Diagnostic Networking,BestPractices
Solicite a cada administrador de host que empaquete la carpeta de seguimientos resultante y se la envíe. 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.
Combine todos los seguimientos recibidos en una única carpeta, sin ningún otro contenido o carpeta.
Por ejemplo, supongamos que los administradores le envían 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 con el siguiente aspecto:
FabricTraces |- HGS-01 | |- TargetMetadata.xml | |- Metadata.xml | |- [any other trace files for this host] |- HGS-02 | |- [...] |- RR1N2608-12 | |- [...] |- RR1N2608-13 |- [..]
Ejecute diagnósticos proporcionando la ruta de acceso a la carpeta de seguimiento ensamblada en el parámetro
-Path
y especificando el modificador-RunDiagnostics
, así como los diagnósticos para los que solicitó a los administradores que recopilaran seguimientos. Los diagnósticos presuponen que no pueden acceder a los hosts que se encuentran dentro de la ruta de acceso y, por lo tanto, intentarán usar solo los seguimientos precolectados. Si falta algún seguimiento o está dañado, el diagnóstico producirá un error solo en las pruebas afectadas y procederá 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 precolectados que desea aumentar con seguimientos de host adicionales. Es posible combinar seguimientos precolectados 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 no encontrados en la carpeta de seguimiento recopilada previamente:
$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 precolectados y el otro host adicional que todavía debe realizar el 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 los 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 HGS de solo 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 pasado la atestación.