Guarded Fabric 診断ツールの使用に関するトラブルシューティング

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

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

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

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

注:

Guarded Fabric 診断 ツール (Get-HgsTrace -RunDiagnostics) を実行すると、HTTPS 構成が壊れていないか、使用されていない場合に、HTTPS 構成が破損していると主張する正しくない状態が返される可能性があります。 このエラーは、HGS の構成証明モードに関係なく返すことができます。 考えられる根本原因は次のとおりです。

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

クイック スタート

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

Get-HgsTrace -RunDiagnostics -Detailed

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

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

診断の概要

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

  • ホスト ガーディアン サービス ロール
  • ホスト ガーディアン Hyper-V サポート
  • ファブリック管理用 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 1 回のパスで収集と診断を実行できます。 トレース ターゲットが指定されていない場合、現在のマシンは暗黙的なターゲットとして使用され、インストールされている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。 特定のホストに両方のモジュールが存在する場合は、 と GuardedHostと の両方HostGuardianServiceとして扱われる可能性があります。

そのため、トレースをローカルで収集するための診断の既定の呼び出し:

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 (「PSRemoting を有効にする」を参照)、localhost がターゲットへの接続を起動するように適切に構成されていることが前提条件です。

注:

ほとんどの場合、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

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

暗黙的な資格情報

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

警告

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

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

リモート診断では、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

注:

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

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

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

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

注:

トレースは匿名化されず、ネットワーク構成、PKI 設定、および個人情報と見なされるその他の構成が明らかになります。 そのため、トレースは、organization内の信頼されたエンティティにのみ送信し、パブリックに投稿しないでください。

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

  1. 各ホスト管理者が、既知-Pathのトレースに対して実行Get-HgsTraceする予定の診断の一覧を指定して実行するように要求します。 例:

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

  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 Version 1809 以降の OS バージョンで実行する場合の既知の制限事項があります。 次の機能を使用すると、誤った結果が発生する可能性があります。

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

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