Guarded Fabric 診断ツールを使用したトラブルシューティング

この記事では、保護されたファブリック診断ツールを使用して、保護されたファブリック インフラストラクチャのデプロイ、構成、および進行中の操作における一般的なエラーを特定して修復する方法について説明します。 これには、ホスト ガーディアン サービス (HGS)、すべての保護されたホスト、DNS や Active Directory などのサポート サービスが含まれます。

適用対象: Windows Server 2022、Windows Server 2019、Windows Server 2016

この診断ツールを使用すると、障害が発生している保護されたファブリックのトリアージで、最初の合格が実行されます。これは、管理者にとっては、停止の解決や正しく構成されていなかった資産の識別に向けての出発点となるものです。 このツールは、保護されたファブリックの操作を健全に把握するための代わりではなく、日常的な操作中に発生する最も一般的な問題を迅速に検証するためだけに役立ちます。

この記事で使用されているすべてのコマンドレットについては、HgsDiagnostics モジュール リファレンスに関する記事を参照してください。

注意

保護されたファブリックの診断ツール (Get-HgsTrace -RunDiagnostics) を実行しているときに、HTTPS 構成が損傷しているという、正しくないステータスが返されることがあります。この場合、実際には HTTPS 構成は損傷していないか、使用されていないことがあります。 このエラーは、HGS の構成証明モードに関係なく、発生することがあります。 考えられる原因は次のとおりです。

  • HTTPS が実際に正しく構成されていないか、損傷している
  • 管理者が信頼できる構成証明を使用していて、信頼関係が壊れています。 これは、HTTPS が適切に構成されているか、不適切に構成されているか、まったく使用されていないかに関係ありません。 診断ツールは、Hyper-V ホストをターゲットとしている場合のみ、この正しくないステータスを返すことに注意してください。 診断ツールがホスト ガーディアン サービスをターゲットとしている場合には、ステータスは正しい結果を返します。

クイック スタート

ローカル管理者特権で Windows PowerShell セッションから次を呼び出すと、保護されたホストまたは HGS ノードを診断することができます。

Get-HgsTrace -RunDiagnostics -Detailed

これにより、現在のホストのロールが自動的に検出され、自動的に検出可能な関連する問題の診断が行われます。 -Detailed スイッチが存在するため、このプロセス中に生成された結果はすべて表示されます。

このトピックの残りの部分では、複数のホストを一度に診断したり、ノード間の複雑な構成の誤りを検出したりなど、Get-HgsTrace の高度な使用方法について、詳細なチュートリアルを行います。

診断の概要

保護されたファブリックの診断は、Server Core が実行されているホストを含め、シールドされた仮想マシンに関連するツールと機能がインストールされている任意のホストで行うことができます。 現在、診断は、次の機能またはパッケージに含まれています。

  • ホスト ガーディアン サービス ロール
  • Host Guardian Hyper-V サポート
  • Fabric Management 用の VM シールド ツール
  • リモート サーバー管理ツール (RSAT)

つまり、診断ツールを使用することができるのは、すべての保護されたホスト、HGS ノード、特定のファブリック管理サーバー、および RSAT がインストールされている任意の Windows 10 ワークステーションです。 保護されたファブリック内にあるすべての保護されたホストまたは HGS ノードの診断を目的に、上記のすべてのマシンから診断を呼び出すことができます。リモート トレース ターゲットを使用すると、診断が実行されているマシン以外のホストを見つけ、接続することができます。

診断の対象となるホストはすべて、"トレース ターゲット" と呼ばれます。トレース ターゲットは、ホスト名とロールによって識別されます。 ロールは、保護されたファブリックで特定のトレース ターゲットによって実行される関数を表します。 現在、トレース ターゲットは、HostGuardianService ロールと GuardedHost ロールをサポートしています。 ホストが一度に複数のロールを占有する可能性があり、これは診断でもサポートされますが、運用環境ではこれを行わないでください。 HGS ホストと Hyper-V ホストは、別のものとして、常に個別に保持する必要があります。

管理者は、Get-HgsTrace を実行することで、任意の診断タスクを開始できます。 このコマンドレットは、実行時に提供されるスイッチに基づいて、トレース収集と診断という 2 つの異なる関数を実行します。 これら 2 つを組み合わせると、保護されたファブリックの診断ツールの全体が構成されます。 明示的に必要とされるわけではありませんが、トレース ターゲットの管理者資格情報のみを使用して収集可能なトレースが必要とされる場合、診断は非常に有用なものとなります。 トレースの収集を実行しているユーザーが十分な特権を保持していない場合、昇格を必要とするトレースは失敗し、それ以外のトレースはすべて合格します。 特権が不足しているオペレーターがトリアージを実行している場合は、これにより、診断が部分的に可能となります。

トレースの収集

既定では、Get-HgsTrace によって、トレースのみが収集され、一時フォルダーに保存されます。 トレースは、ターゲット ホストにちなんだ名前が付けられたフォルダーの形式を取り、ホストの構成方法が記述された特殊な形式のファイルが格納されます。 また、トレースには、トレースを収集するためにどのように診断が呼び出されたかが記述されたメタデータが含まれます。 このデータは、手動診断を実行する場合にホストについての情報をリハイドレートするために、診断で使用されます。

トレースは、必要に応じて、手動で確認することができます。 すべての形式は人間が判読できる (XML) か、標準ツール (X509 証明書や Windows Crypto Shell 拡張機能など) を使用して簡単に検査できます。 ただし、トレースは手動診断用に設計されておらず、 Get-HgsTraceの診断機能を使用してトレースを処理する方が常に効果的であることに注意してください。

トレース コレクションを実行した結果は、特定のホストの正常性を示すことはありません。 トレースが正常に収集されたことを示すのみです。 トレースが障害のある環境を示しているかどうかを判断するには、 Get-HgsTrace の診断機能を使用する必要があります。

-Diagnostic パラメーターを使用すると、トレースの収集の対象を、指定した診断の操作に必要なトレースのみに制限することができます。 これにより、診断の呼び出しに必要なアクセス許可に加え、収集されるデータの量が減少します。

診断

収集されたトレースは、-Path パラメーターを使用して、トレースの場所、Get-HgsTrace を指定し、-RunDiagnostics スイッチを指定することで、診断することができます。 さらに、-RunDiagnostics スイッチ、およびトレース ターゲットの一覧を指定することで、単一パス内で Get-HgsTrace による収集と診断を実行することができます。 トレース ターゲットが指定されていない場合、現在のマシンは暗黙的なターゲットとして使用され、インストールされている Windows PowerShell モジュールを調査することで、そのロールが推論されます。

診断によって、特定の障害を担当するトレース ターゲット、診断セット、個々の診断を示す階層の形式で、結果が提供されます。 次に実行する必要があるアクションを決定できる場合、障害には、修復と解決に関する推奨事項が含まれます。 既定では、合格の結果および無関係の結果は非表示です。 診断によってテストされたすべてのものを表示するには、-Detailed スイッチを指定します。 これにより、状態に関係なくすべての結果が表示されます。

-Diagnostic パラメーターを使用して実行される診断のセットを制限できます。 これにより、トレース ターゲットに対して実行する必要がある診断のクラスを指定して、他のすべてのクラスを抑制することができます。 使用可能な診断クラスの例としては、ネットワーク、ベスト プラクティス、クライアント ハードウェアなどがあります。 コマンドレットのドキュメントで、使用可能な診断の最新の一覧を確認してください。

警告

診断は、強力な監視とインシデント対応パイプラインの代わりではありません。 保護されたファブリックの監視には、System Center Operations Manager パッケージを使用することができます。問題の早期検出に向けた監視には、さまざまなイベント ログ チャンネルを使用することもできます。 その後、診断を使用して、これらの障害を迅速にトリアージし、一連のアクションを確立することができます。

診断のターゲット設定

Get-HgsTrace は、トレース ターゲットに対して動作します。 トレース ターゲットは、HGS ノードまたは保護されたファブリック内の保護されたホストに対応するオブジェクトです。 これは、ファブリック内のホストの役割などの診断でのみ必要な情報を含む、 PSSessionの拡張機能と考えることができます。 ターゲットは、暗黙的に (ローカル診断や手動診断など)、または New-HgsTraceTarget コマンドレットを使用して明示的に生成できます。

ローカル診断

既定では、Get-HgsTrace の対象は localhost (すなわち、コマンドレットが呼び出されている場所) です。 これは、暗黙的なローカル ターゲットと呼ばれます。 暗黙的なローカル ターゲットは、-Target パラメーターにターゲットが指定されておらず、-Path に既存のトレースが存在しない場合にのみ使用されます。

暗黙的なローカル ターゲットを使用する場合、保護されたファブリックで現在のホストが果たすロールを決定するには、ロール推論を使用します。 これは、インストールされている Windows PowerShell モジュールに基づいています。これは、システムにインストールされている機能に大まかに対応しています。 HgsServer モジュールが存在すると、トレース ターゲットがロール HostGuardianServiceを受け取り、HgsClient モジュールが存在すると、トレース ターゲットはロール GuardedHostを受け取ります。 特定のホストに両方のモジュールが存在する可能性があります。その場合、 HostGuardianServiceGuardedHostの両方として扱われます。

そのため、ローカルでトレースを収集する場合は、診断が既定で呼び出されます。

Get-HgsTrace

これは、次と同じです。

New-HgsTraceTarget -Local | Get-HgsTrace

ヒント

Get-HgsTrace は、パイプラインを介して、または -Target パラメーターを使用して直接的に、ターゲットを受け入れることができます。 これら 2 つの方法に、操作上の違いはありません。

トレース ターゲットを使用したリモート診断

リモート接続情報を使用してトレース ターゲットを生成することで、ホストをリモートで診断できます。 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 リモート処理が有効になっており ( Enable PSRemoting を参照)、localhost がターゲットへの接続を起動するように適切に構成されていることが前提条件です。

Note

ほとんどの場合、localhost が同じ Active Directory フォレストの一部であり、有効な DNS ホスト名が使用されている必要があります。 環境でより複雑なフェデレーション モデルが利用されている場合、またはユーザーが接続に直接 IP アドレスを使用する場合は、WinRM の信頼されたホストの設定など、追加の構成の実行が必要となることがあります。

Test-HgsTraceTarget コマンドレットを使用することで、トレース ターゲットが適切にインスタンス化され、接続を受け入れるように構成されていることを確認することができます。

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

このコマンドレットは、Get-HgsTraceがトレース ターゲットとのリモート診断セッションを確立できる場合にのみ、$Trueを返します。 エラーが発生した場合、このコマンドレットは、Windows PowerShell リモート処理接続のトラブルシューティングのために関連する状態情報を返します。

暗黙的な資格情報

トレース ターゲットにリモート接続するための十分な特権を持つユーザーからリモート診断を実行する場合、 New-HgsTraceTargetに資格情報を指定する必要はありません。 Get-HgsTrace コマンドレットを使用すると、接続を開くときにコマンドレットを呼び出すユーザーの視覚情報が自動的に再利用されます。

警告

特に "2 番目のホップ" と呼ばれるものを実行する場合、資格情報の再利用には、いくつかの制限が適用されます。これは、リモート セッション内から別のマシンに資格情報を再利用しようとした場合に起こります。 このシナリオをサポートするには、CredSSPする必要がありますが、保護されたファブリックの管理とトラブルシューティングの範囲外です。

Windows PowerShell Just Enough Administration (JEA) と診断の使用

リモート診断は、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 つの保護されたホストから構成されるファブリックをトリアージする場合の例を次に示します。保護されたホストの 1 つは、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

複数のノードを診断するときに、保護されたファブリック全体を診断する必要はありません。 多くの場合、特定の障害状態に関係する可能性のあるすべてのノードを含めるので十分です。 これは通常、保護されたホストのサブセットであり、HGS クラスターからの複数のノードです。

保存されたトレースを使用した手動診断

トレースを再度収集せずに診断を再実行したい場合や、ファブリック内のすべてのホストをリモートで同時に診断するために必要な資格情報がない場合があります。 手動診断とは、Get-HgsTrace を使用するものの、リモート トレースの収集は使用せずに、ファブリック全体のトリアージを実行することができるメカニズムです。

手動診断を実行する前に、トリアージされるファブリック内の各ホストの管理者が、ユーザーに代わってコマンドを実行する準備ができていることを確認する必要があります。 診断トレースの出力では、一般的に機密と見なされる情報は公開されませんが、この情報を他のユーザーに公開しても安全かどうかを判断することはユーザーに求められます。

Note

トレースは匿名化されず、ネットワーク構成、PKI 設定、および個人情報と見なされることがあるその他の構成が明らかになります。 そのため、トレースは、組織内の信頼されたエンティティにのみ送信され、公開投稿されることはありません。

手動診断を実行する手順は、次のとおりです。

  1. 既知の -Path、および結果として生成されるトレースに対して実行する診断の一覧を指定して、Get-HgsTrace を実行するように、各ホスト管理者に要求します。 例:

    Get-HgsTrace -Path C:\Traces -Diagnostic Networking,BestPractices
    
  2. 結果として生成されるトレース フォルダーをパッケージ化して、ユーザーに送信するように、各ホスト管理者に要求します。 このプロセスは、電子メール、ファイル共有、または組織によって確立された運用のポリシーと手順に基づくその他のメカニズムを使用して促進することができます。

  3. 受信したすべてのトレースを 1 つのフォルダーにマージします。他のコンテンツやフォルダーはマージしません。

    たとえば、HGS-01、HGS-02、RR1N2608-12、RR1N2608-13 という名前の 4 台のマシンから収集されたトレースを、各管理者からユーザーに送信してもらったとします。 各管理者は、同じ名前のフォルダーをユーザーに送信します。 次のように表示されるディレクトリ構造をアセンブルします。

    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"
    

保存されたトレースと追加のターゲットの混在

場合によっては、追加のホスト トレースで拡張する一連の事前収集トレースがある場合があります。 事前収集されたトレースと、1 回の診断呼び出しでトレースおよび診断される追加のターゲットを混在させることができます。

上記で指定したトレース フォルダーを収集してアセンブルする手順に従って、事前収集されたトレース フォルダーに追加のトレース ターゲットが見つからない Get-HgsTrace を呼び出します。

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

診断コマンドレットは、事前に収集されたすべてのホストと、まだトレースする必要があり、必要なトレースを実行する 1 つの追加ホストを識別します。 その後、事前収集されたすべてのトレースと収集されたトレースの合計が診断されます。 結果として生成されるトレース フォルダーには、新旧のトレースがどちらも含まれます。

既知の問題

保護されたファブリックの診断モジュールは、Windows Server 2019 または Windows 10、バージョン 1809 以降の OS バージョンで実行される場合、既知の制限事項があります。 次の機能を使用すると、誤った結果がもたらされる場合があります。

  • ホスト キー構成証明
  • 構成証明のみの HGS 構成 (SQL Server Always Encrypted シナリオ向け)
  • 構成証明ポリシーの既定値が v2 である HGS サーバーでの v1 ポリシー成果物の使用

これらの機能を使用する際の Get-HgsTrace エラーは、HGS サーバーまたは保護されたホストが正しく構成されていないことを必ずしも示すわけではありません。 Get-HgsClientConfiguration などの診断ツールを保護されたホストで使用して、ホストが資格証明に合格したかどうかをテストします。