보호된 패브릭 진단 도구를 사용하여 문제 해결

이 문서에서는 보호된 패브릭 진단 도구를 사용하여 보호된 패브릭 인프라의 배포, 구성 및 진행 중인 작업의 일반적인 오류를 식별하고 수정하는 방법을 설명합니다. 여기에는 HGS(호스트 보호 서비스), 모든 보호된 호스트 및 DNS 및 Active Directory와 같은 지원 서비스가 포함됩니다.

적용 대상: Windows Server 2022, Windows Server 2019, Windows Server 2016

진단 도구를 사용하여 실패한 보호된 패브릭을 심사할 때 첫 번째 패스를 수행하여 관리자에게 중단을 해결하고 잘못 구성된 자산을 식별하기 위한 시작점을 제공할 수 있습니다. 이 도구는 보호된 패브릭 작동에 대한 사운드 이해를 대체하는 것이 아니며 일상적인 작업 중에 발생하는 가장 일반적인 문제를 신속하게 확인하는 역할을 합니다.

이 문서에 사용된 cmdlet에 대한 전체 설명서는 HgsDiagnostics 모듈 참조에서 찾을 수 있습니다.

참고

보호된 패브릭 진단 도구(Get-HgsTrace -RunDiagnostics)를 실행하는 경우 HTTPS 구성이 손상되었거나 사용되지 않을 때 손상되었다고 주장하는 잘못된 상태 반환될 수 있습니다. 이 오류는 HGS의 증명 모드에 관계없이 반환될 수 있습니다. 가능한 근본 원인은 다음과 같습니다.

  • HTTPS가 실제로 부적절하게 구성/손상됨
  • 관리자가 신뢰할 수 있는 증명을 사용하고 있고 신뢰 관계가 끊어졌습니다. 이는 HTTPS가 제대로 구성되었는지, 부적절하게 구성되었는지 또는 전혀 사용되지 않는지에 관계없이 발생합니다. 진단 Hyper-V 호스트를 대상으로 하는 경우에만 잘못된 상태 반환합니다. 진단 호스트 보호 서비스를 대상으로 하는 경우 반환된 상태 올바릅니다.

빠른 시작

로컬 관리자 권한으로 Windows PowerShell 세션에서 다음을 호출하여 보호된 호스트 또는 HGS 노드를 진단할 수 있습니다.

Get-HgsTrace -RunDiagnostics -Detailed

그러면 현재 호스트의 역할이 자동으로 검색되고 자동으로 검색될 수 있는 관련 문제가 진단됩니다. 이 프로세스 중에 생성된 모든 결과는 스위치가 있기 -Detailed 때문에 표시됩니다.

이 항목의 나머지 부분에서는 여러 호스트를 한 번에 진단하고 복잡한 노드 간 구성 오류를 감지하는 등의 작업을 수행하는 고급 사용에 Get-HgsTrace 대한 자세한 연습을 제공합니다.

진단 개요

보호된 패브릭 진단 서버 코어를 실행하는 호스트를 포함하여 보호된 가상 머신 관련 도구 및 기능이 설치된 모든 호스트에서 사용할 수 있습니다. 현재 진단 다음 기능/패키지에 포함되어 있습니다.

  • 호스트 보호 서비스 역할
  • 호스트 보호자 Hyper-V 지원
  • 패브릭 관리를 위한 VM 차폐 도구
  • RSAT(원격 서버 관리 도구)

즉, RSAT가 설치된 모든 보호된 호스트, HGS 노드, 특정 패브릭 관리 서버 및 모든 Windows 10 워크스테이션에서 진단 도구를 사용할 수 있습니다. 보호된 패브릭에서 보호된 호스트 또는 HGS 노드를 진단하기 위해 위의 컴퓨터에서 진단을 호출할 수 있습니다. 원격 추적 대상을 사용하여 진단 진단 실행하는 컴퓨터 이외의 호스트를 찾아 연결할 수 있습니다.

진단 대상으로 하는 모든 호스트를 "추적 대상"이라고 합니다. 추적 대상은 호스트 이름 및 역할로 식별됩니다. 역할은 지정된 추적 대상이 보호된 패브릭에서 수행하는 함수를 설명합니다. 현재 추적 대상은 및 GuardedHost 역할을 지원 HostGuardianService 합니다. 호스트가 한 번에 여러 역할을 차지할 수 있으며 진단 지원되지만 프로덕션 환경에서는 지원되지 않습니다. HGS 및 Hyper-V 호스트는 항상 별도로 유지되어야 합니다.

관리자는 를 실행 Get-HgsTrace하여 진단 작업을 시작할 수 있습니다. 이 cmdlet은 런타임에 제공된 스위치에 따라 추적 수집 및 진단이라는 두 가지 고유 함수를 수행합니다. 이 두 가지 결합은 보호된 패브릭 진단 도구 전체를 구성합니다. 명시적으로 필요하지는 않지만 가장 유용한 진단 추적 대상의 관리자 자격 증명으로만 수집할 수 있는 추적이 필요합니다. 추적 컬렉션을 실행하는 사용자가 권한이 부족한 경우 권한 상승이 필요한 추적은 실패하고 다른 모든 항목은 통과합니다. 이렇게 하면 권한이 부족한 연산자가 심사를 수행하는 경우 부분 진단을 수행할 수 있습니다.

추적 컬렉션

기본적으로 는 Get-HgsTrace 추적만 수집하고 임시 폴더에 저장합니다. 추적은 대상 호스트의 이름을 따서 명명된 폴더의 형태를 취하며, 호스트 구성 방법을 설명하는 특수 형식의 파일로 채워집니다. 추적에는 추적을 수집하기 위해 진단 호출된 방법을 설명하는 메타데이터도 포함됩니다. 이 데이터는 진단 수동 진단을 수행할 때 호스트에 대한 정보를 리하이딩하는 데 사용됩니다.

필요한 경우 추적을 수동으로 검토할 수 있습니다. 모든 형식은 사람이 읽을 수 있는(XML) 또는 표준 도구(예: X509 인증서 및 Windows Crypto Shell 확장)를 사용하여 쉽게 검사할 수 있습니다. 그러나 추적은 수동 진단을 위해 설계되지 않았으며 의 진단 기능을 Get-HgsTrace사용하여 추적을 처리하는 것이 항상 더 효과적입니다.

추적 컬렉션 실행 결과는 지정된 호스트의 상태에 대한 어떠한 표시도 하지 않습니다. 추적이 성공적으로 수집되었음을 나타내기만 하면 됩니다. 의 진단 기능을 Get-HgsTrace 사용하여 추적이 실패한 환경을 나타내는지 확인해야 합니다.

매개 변수를 -Diagnostic 사용하여 추적 컬렉션을 지정된 진단 작동하는 데 필요한 추적으로만 제한할 수 있습니다. 이렇게 하면 수집된 데이터의 양과 진단 호출하는 데 필요한 권한이 줄어듭니다.

진단

수집된 추적은 매개 변수를 통해 -Path 추적의 위치를 제공하고 Get-HgsTrace 스위치를 지정하여 진단할 -RunDiagnostics 수 있습니다. Get-HgsTrace 또한 스위치와 추적 대상 목록을 제공하여 -RunDiagnostics 단일 패스로 수집 및 진단을 수행할 수 있습니다. 추적 대상이 제공되지 않으면 현재 컴퓨터가 암시적 대상으로 사용되며, 설치된 Windows PowerShell 모듈을 검사하여 해당 역할을 유추합니다.

진단은 특정 실패를 담당하는 추적 대상, 진단 집합 및 개별 진단 보여 주는 계층 형식의 결과를 제공합니다. 실패에는 다음에 수행해야 하는 작업에 대한 결정을 내릴 수 있는 경우 수정 및 해결 권장 사항이 포함됩니다. 기본적으로 전달 및 관련 없는 결과는 숨겨집니다. 진단 의해 테스트된 모든 항목을 보려면 스위치를 지정합니다-Detailed. 이렇게 하면 상태 관계없이 모든 결과가 표시됩니다.

매개 변수를 사용하여 실행되는 진단 집합을 제한할 -Diagnostic 수 있습니다. 이렇게 하면 추적 대상에 대해 실행해야 하는 진단 클래스를 지정하고 다른 모든 항목을 표시하지 않도록 할 수 있습니다. 사용 가능한 진단 클래스의 예로는 네트워킹, 모범 사례 및 클라이언트 하드웨어가 있습니다. 사용 가능한 최신 진단 목록을 찾으려면 cmdlet 설명서를 참조하세요.

경고

진단은 강력한 모니터링 및 인시던트 대응 파이프라인을 대체하는 것이 아닙니다. 보호된 패브릭을 모니터링하는 데 사용할 수 있는 System Center Operations Manager 패키지와 문제를 조기에 감지하기 위해 모니터링할 수 있는 다양한 이벤트 로그 채널이 있습니다. 그런 다음 진단을 사용하여 이러한 오류를 신속하게 심사하고 작업 과정을 설정할 수 있습니다.

대상 지정 진단

Get-HgsTrace 는 추적 대상에 대해 작동합니다. 추적 대상은 보호된 패브릭 내의 HGS 노드 또는 보호된 호스트에 해당하는 개체입니다. 이는 패브릭에서 호스트의 역할과 같은 진단 필요한 정보를 포함하는 에 대한 확장PSSession으로 간주될 수 있습니다. 대상은 암시적으로(예: 로컬 또는 수동 진단) 또는 cmdlet을 사용하여 New-HgsTraceTarget 명시적으로 생성할 수 있습니다.

로컬 진단

기본적으로 는 Get-HgsTrace localhost(즉, cmdlet이 호출되는 위치)를 대상으로 합니다. 이를 암시적 로컬 대상이라고합니다. 암시적 로컬 대상은 매개 변수에 -Target 대상이 제공되지 않고 에서 기존 추적을 찾을 -Path수 없는 경우에만 사용됩니다.

암시적 로컬 대상은 역할 유추를 사용하여 현재 호스트가 보호된 패브릭에서 수행하는 역할을 결정합니다. 이는 설치된 Windows PowerShell 모듈을 기반으로 하며, 이는 시스템에 설치된 기능과 거의 일치합니다. 모듈이 HgsServer 있으면 추적 대상이 역할을 HostGuardianService 수행하고 모듈이 HgsClient 있으면 추적 대상이 역할을 GuardedHost수행하게 됩니다. 지정된 호스트에 두 모듈이 모두 존재할 수 있습니다. 이 경우 는 및 GuardedHostHostGuardianService 처리됩니다.

따라서 추적을 로컬로 수집하기 위한 진단 기본 호출은 다음과 같습니다.

Get-HgsTrace

이는 다음과 같습니다.

New-HgsTraceTarget -Local | Get-HgsTrace

Get-HgsTrace 는 파이프라인을 통해 또는 매개 변수를 통해 직접 대상을 수락할 -Target 수 있습니다. 둘 사이에는 운영적으로 차이가 없습니다.

추적 대상을 사용한 원격 진단

원격 연결 정보를 사용하여 추적 대상을 생성하여 호스트를 원격으로 진단할 수 있습니다. 필요한 것은 호스트 이름 및 Windows PowerShell 원격을 사용하여 연결할 수 있는 자격 증명 집합입니다.

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

이 예제에서는 원격 사용자 자격 증명을 수집하라는 프롬프트를 생성한 다음 에서 원격 호스트 hgs-01.secure.contoso.com 를 사용하여 를 실행하여 추적 수집을 완료할 진단 있습니다. 결과 추적은 localhost에 다운로드된 다음 진단됩니다. 진단의 결과는 현지 진단을 수행할 때와 동일하게 제출됩니다. 마찬가지로 원격 시스템에 설치된 Windows PowerShell 모듈을 기반으로 유추할 수 있으므로 역할을 지정할 필요는 없습니다.

원격 진단은 원격 호스트에 대한 모든 액세스에 Windows PowerShell 원격을 활용합니다. 따라서 추적 대상이 원격을 사용하도록 Windows PowerShell 필수 구성 요소이며(PSRemoting 사용 참조) localhost가 대상에 대한 연결을 시작하도록 올바르게 구성되어 있어야 합니다.

참고

대부분의 경우 localhost가 동일한 Active Directory 포리스트의 일부이고 유효한 DNS 호스트 이름이 사용되는 경우에만 필요합니다. 환경이 더 복잡한 페더레이션 모델을 활용하거나 연결에 직접 IP 주소를 사용하려는 경우 WinRM 신뢰할 수 있는 호스트 설정과 같은 추가 구성을 수행해야 할 수 있습니다.

cmdlet을 사용하여 Test-HgsTraceTarget 연결 허용을 위해 추적 대상이 올바르게 인스턴스화되고 구성되어 있는지 확인할 수 있습니다.

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

이 cmdlet은 추적 대상을 사용하여 원격 진단 세션을 설정할 수 있는 경우에만 Get-HgsTrace 를 반환 $True 합니다. 실패 시 이 cmdlet은 Windows PowerShell 원격 연결의 추가 문제 해결을 위해 관련 상태 정보를 반환합니다.

암시적 자격 증명

추적 대상에 원격으로 연결할 수 있는 충분한 권한이 있는 사용자로부터 원격 진단을 수행하는 경우 에 자격 증명 New-HgsTraceTarget을 제공할 필요가 없습니다. cmdlet은 Get-HgsTrace 연결을 열 때 cmdlet을 호출한 사용자의 자격 증명을 자동으로 다시 사용합니다.

경고

자격 증명 다시 사용, 특히 "두 번째 홉"이라고 하는 작업을 수행하는 경우 몇 가지 제한 사항이 적용됩니다. 이 문제는 원격 세션 내에서 다른 컴퓨터로 자격 증명을 다시 사용하려고 할 때 발생합니다. 이 시나리오를 지원하려면 CredSSP를 설정해야 하지만 보호된 패브릭 관리 및 문제 해결의 scope 벗어났습니다.

Windows PowerShell JEA(Just Enough Administration) 및 진단 사용

원격 진단은 JEA 제한 Windows PowerShell 엔드포인트 사용을 지원합니다. 기본적으로 원격 추적 대상은 기본 microsoft.powershell 엔드포인트를 사용하여 연결됩니다. 추적 대상에 역할이 있는 HostGuardianService 경우 HGS가 microsoft.windows.hgs 설치될 때 구성된 엔드포인트도 사용하려고 시도합니다.

사용자 지정 엔드포인트를 사용하려면 아래와 같이 매개 변수를 사용하여 -PSSessionConfigurationName 추적 대상을 생성하는 동안 세션 구성 이름을 지정해야 합니다.

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

여러 호스트 진단

여러 추적 대상을 한 번에 에 Get-HgsTrace 전달할 수 있습니다. 여기에는 로컬 대상과 원격 대상이 혼합되어 있습니다. 각 대상은 차례로 추적된 다음 모든 대상의 추적이 동시에 진단됩니다. 진단 도구는 배포에 대한 향상된 지식을 사용하여 검색할 수 없는 복잡한 노드 간 구성 오류를 식별할 수 있습니다. 이 기능을 사용하려면 여러 호스트에서 동시에(수동 진단의 경우) 추적을 제공하거나(원격 진단의 경우) 호출 Get-HgsTrace 할 때 여러 호스트를 대상으로 지정해야 합니다.

다음은 원격 진단을 사용하여 2개의 HGS 노드와 2개의 보호된 호스트로 구성된 패브릭을 심사하는 예제입니다. 여기서 보호된 호스트 중 하나가 를 시작하는 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

참고

여러 노드를 진단할 때 전체 보호된 패브릭을 진단할 필요가 없습니다. 대부분의 경우 지정된 실패 조건에 포함될 수 있는 모든 노드를 포함하기에 충분합니다. 일반적으로 보호된 호스트의 하위 집합이며 HGS 클러스터의 일부 노드 수입니다.

저장된 추적을 사용한 수동 진단

추적을 다시 수집하지 않고 진단 다시 실행하거나 패브릭의 모든 호스트를 동시에 원격으로 진단하는 데 필요한 자격 증명이 없는 경우가 있습니다. 수동 진단은 원격 추적 컬렉션을 사용하지 않고 를 사용하여 Get-HgsTrace전체 패브릭 심사를 계속 수행할 수 있는 메커니즘입니다.

수동 진단을 수행하기 전에 심사될 패브릭의 각 호스트 관리자가 사용자를 대신하여 명령을 실행할 준비가 되어 있는지 확인해야 합니다. 진단 추적 출력은 일반적으로 중요한 것으로 표시되는 정보를 노출하지 않지만, 다른 사용자에게 이 정보를 노출하는 것이 안전한지 확인하는 것은 사용자에게 달려 있습니다.

참고

추적은 익명화되지 않으며 네트워크 구성, PKI 설정 및 개인 정보로 간주되는 기타 구성을 표시합니다. 따라서 추적은 organization 내의 신뢰할 수 있는 엔터티로만 전송되고 공개적으로 게시되지 않아야 합니다.

수동 진단을 수행하는 단계는 다음과 같습니다.

  1. 각 호스트 관리자가 결과 추적에 대해 실행하려는 알려진 -Path 진단 목록을 지정하여 실행 Get-HgsTrace 하도록 요청합니다. 예를 들면

    Get-HgsTrace -Path C:\Traces -Diagnostic Networking,BestPractices
    
  2. 각 호스트 관리자가 결과 추적 폴더를 패키지하고 사용자에게 보내도록 요청합니다. 이 프로세스는 전자 메일, 파일 공유 또는 organization 설정한 운영 정책 및 절차에 따라 다른 메커니즘을 통해 구동할 수 있습니다.

  3. 받은 모든 추적을 다른 내용이나 폴더 없이 단일 폴더에 병합합니다.

    예를 들어 관리자가 HGS-01, HGS-02, RR1N2608-12 및 RR1N2608-13이라는 네 대의 컴퓨터에서 수집된 추적을 전송했다고 가정합니다. 각 관리자는 동일한 이름으로 폴더를 보냈을 것입니다. 다음과 같이 표시되는 디렉터리 구조를 어셈블합니다.

    FabricTraces
    |- HGS-01
    |  |- TargetMetadata.xml
    |  |- Metadata.xml
    |  |- [any other trace files for this host]
    |- HGS-02
    |  |- [...]
    |- RR1N2608-12
    |  |- [...]
    |- RR1N2608-13
       |- [..]
    
  4. 진단 실행하여 매개 변수에 어셈블된 추적 폴더의 -Path 경로를 제공하고 스위치와 관리자에게 추적 수집을 요청한 진단 지정 -RunDiagnostics 합니다. 진단에서는 경로 내에 있는 호스트에 액세스할 수 없다고 가정하므로 미리 수집된 추적만 사용하려고 합니다. 추적이 누락되거나 손상된 경우 진단 영향을 받는 테스트만 실패하고 정상적으로 진행됩니다. 예를 들면

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

저장된 추적을 추가 대상과 혼합

경우에 따라 추가 호스트 추적을 사용하여 보강하려는 미리 수집된 추적 집합이 있을 수 있습니다. 진단 단일 호출에서 추적 및 진단될 추가 대상과 미리 수집된 추적을 혼합할 수 있습니다.

위에 지정된 추적 폴더를 수집하고 어셈블하는 지침에 따라 미리 수집된 추적 폴더에서 찾을 수 없는 추가 추적 대상을 사용하여 를 호출 Get-HgsTrace 합니다.

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

진단 cmdlet은 미리 수집된 모든 호스트와 추적해야 하는 하나의 추가 호스트를 식별하며 필요한 추적을 수행합니다. 그러면 미리 수집된 모든 추적과 새로 수집된 추적의 합계가 진단됩니다. 결과 추적 폴더에는 이전 추적과 새 추적이 모두 포함됩니다.

알려진 문제

보호된 패브릭 진단 모듈은 Windows Server 2019 또는 Windows 10, 버전 1809 및 최신 OS 버전에서 실행할 때 알려진 제한 사항이 있습니다. 다음 기능을 사용하면 잘못된 결과가 발생할 수 있습니다.

  • 호스트 키 증명
  • 증명 전용 HGS 구성(SQL Server Always Encrypted 시나리오의 경우)
  • 증명 정책 기본값이 v2인 HGS 서버에서 v1 정책 아티팩트 사용

이러한 기능을 사용할 때 오류가 Get-HgsTrace 발생해도 HGS 서버 또는 보호된 호스트가 잘못 구성되었음을 나타내는 것은 아닙니다. 보호된 호스트와 같은 Get-HgsClientConfiguration 다른 진단 도구를 사용하여 호스트가 증명을 통과했는지 테스트합니다.