ja-JP/about_Logging_Windows.help.txt
|
TOPIC about_Logging_Windows 簡単な説明 PowerShell は、エンジン、プロバイダー、コマンドレットの内部操作を Windows イベントログに記録します。 詳細な説明 PowerShell は、エンジンやプロバイダーの開始と停止、PowerShell コマンド の実行など、PowerShell の操作に関する詳細を記録します。 Windows PowerShell 5.1 でのログ記録については、about_Logging を参照して ください。 PowerShell は、2 つのカテゴリのログ記録の構成をサポートしています。 - モジュールログ記録 - 指定したモジュールのメンバーについて、パイプライ ンの実行イベントを記録します。モジュールログ記録は、セッションと特定 のモジュールの両方で有効にする必要があります。このログ記録の構成につ いて詳しくは、about_PowerShell_Config を参照してください。 構成によってモジュールログ記録が有効になっている場合は、モジュールの LogPipelineExecutionDetails プロパティの値を設定することで、セッション 内の特定のモジュールについてログ記録を有効または無効にできます。 たとえば、PSReadLine モジュールのモジュールログ記録を有効にするには次 のようにします。 $psrl = Get-Module PSReadLine $psrl.LogPipelineExecutionDetails = $true Get-Module PSReadLine | Select-Object Name, LogPipelineExecutionDetails Name LogPipelineExecutionDetails ---- --------------------------- PSReadLine True - スクリプトブロックログ記録 - 対話的に呼び出されたか、自動化を通じて呼 び出されたかにかかわらず、コマンド、スクリプトブロック、関数、スクリプ トの処理を記録します。 スクリプトブロックログ記録を有効にすると、PowerShell は処理するすべて のスクリプトブロックの内容を記録します。有効にすると、新しい PowerShell セッションがこの情報を記録します。詳しくは、後述の「スクリプトブロック ログ記録を有効にする」を参照してください。 Windows で PowerShell イベントプロバイダーを登録する Linux や macOS とは異なり、Windows ではイベントをイベントログに書き込む 前に、イベントプロバイダーを登録する必要があります。PowerShell イベント プロバイダーを有効にするには、管理者特権の PowerShell プロンプトから次の コマンドを実行します。 $PSHOME\RegisterManifest.ps1 Windows で PowerShell イベントログのエントリを表示する PowerShell ログは、Windows イベントビューアーを使って表示できます。イベ ントログは「アプリケーションとサービス ログ」グループにあり、 PowerShellCore という名前です。関連付けられている ETW プロバイダーの GUID は {f90714a8-5509-434a-bf6d-b1624c8a19a2} です。 スクリプトブロックログ記録が有効になっている場合、PowerShell は次のイベ ントを PowerShellCore/Operational ログに記録します。 フィールド 値 ---------- ---------------- EventId 4104 / 0x1008 Channel Operational Level Verbose Opcode Create Task CommandStart Keyword Runspace Windows で PowerShell イベントプロバイダーの登録を解除する イベントプロバイダーを登録すると、イベントのデコードに使われるバイナリ ライブラリにロックが設定されます。このライブラリを更新するには、ロックを 解放するためにプロバイダーの登録を解除する必要があります。 PowerShell プロバイダーの登録を解除するには、管理者特権の PowerShell プ ロンプトから次のコマンドを実行します。 $PSHOME\RegisterManifest.ps1 -Unregister PowerShell を更新した後、$PSHOME\RegisterManifest.ps1 を実行して、更新さ れたイベントプロバイダーを登録します。 スクリプトブロックログ記録を有効にする スクリプトブロックログ記録を有効にすると、PowerShell は処理するすべての スクリプトブロックの内容を記録します。有効にすると、新しい PowerShell セ ッションがこの情報を記録します。 メモ: 診断目的以外でスクリプトブロックログ記録を使う場合は、後述の保護さ れたイベントログ記録を有効にすることをお勧めします。 スクリプトブロックログ記録は、グループポリシーまたはレジストリの設定によ って有効にできます。 グループポリシーを使う 自動文字起こしを有効にするには、グループポリシーの [管理用テンプレート] -> [PowerShell Core] で [Turn on PowerShell Script Block Logging] 機能を 有効にします。 レジストリを使う 次の関数を実行します。 function Enable-PSScriptBlockLogging { $basePath = @( 'HKLM:\Software\Policies\Microsoft' 'PowerShellCore\ScriptBlockLogging' ) -join '\' if (-not (Test-Path $basePath)) { $null = New-Item $basePath -Force } Set-ItemProperty $basePath ` -Name EnableScriptBlockLogging -Value "1" } PowerShell 構成ファイルを使う PowerShell の動作を制御する powershell.config.json ファイルで ScriptBlockLogging オプションを設定できます。詳しくは、 about_PowerShell_Config を参照してください。 保護されたイベントログ記録 システムでのログ記録のレベルを上げると、記録された内容に機密データが含ま れる可能性が高くなります。たとえば、スクリプトログ記録を有効にすると、ス クリプトが使う資格情報やその他の機密データがイベントログに書き込まれるこ とがあります。機密データを記録したマシンが侵害された場合、ログによって攻 撃者は影響範囲を拡大するために必要な情報を得られます。 この情報を保護するために、Windows 10 では保護されたイベントログ記録が導 入されました。保護されたイベントログ記録では、対応するアプリケーションが イベントログに書き込む機密データを暗号化できます。後で、よりセキュリティ が高く一元化されたログコレクターで、これらのログを復号して処理できます。 イベントログの内容は、IETF の Cryptographic Message Syntax (CMS) 標準を 使って保護されます。CMS は公開キー暗号方式を使います。内容を暗号化するキ ーと復号するキーは別々に保持されます。 公開キーは広く共有でき、機密データではありません。この公開キーで暗号化さ れた内容は、秘密キーでのみ復号できます。 保護されたイベントログ記録ポリシーを有効にするには、保護対象のイベントロ グデータを持つすべてのマシンに公開キーを配置します。対応する秘密キーは、 一元化されたイベントログコレクターや SIEM アグリゲーターなど、よりセキュ リティが高い場所でイベントログを後処理するために使います。 グループポリシーで保護されたイベントログ記録を有効にする 保護されたイベントログ記録を有効にするには、グループポリシーの [管理用テ ンプレート] -> [Windows コンポーネント] -> [イベント ログ記録] で [Enable Protected Event Logging] 機能を有効にします。この設定には暗号化証明書が必 要です。証明書は次のいずれかの形式で指定できます。 - base-64 でエンコードされた X.509 証明書の内容 (たとえば、証明書マネージ ャーの [エクスポート] オプションで提供されるもの)。 - ローカルマシンの証明書ストアにある証明書のサムプリント (PKI インフラス トラクチャーで展開可能)。 - 証明書へのフルパス (ローカルまたはリモート共有上)。 - 証明書を含むディレクトリへのパス (ローカルまたはリモート共有上)。 - ローカルマシンの証明書ストアにある証明書のサブジェクト名 (PKI インフラ ストラクチャーで展開可能)。 結果として得られる証明書は、拡張キー使用法として [ドキュメントの暗号化] (1.3.6.1.4.1.311.80.1) を持ち、かつ [データの暗号化] または [キーの暗号 化] のいずれかのキー使用法が有効になっている必要があります。 警告: 秘密キーは、イベントを記録するマシンに配置しないでください。メッセ ージを復号する安全な場所に保管する必要があります。 保護されたイベントログ記録のメッセージを復号する 次のスクリプトは、秘密キーがあることを前提として、イベントを取得して復号 します。 Get-WinEvent Microsoft-Windows-PowerShell/Operational | Where-Object Id -EQ 4104 | Unprotect-CmsMessage 関連項目 about_Logging_Non-Windows about_PowerShell_Config Unprotect-CmsMessage Get-WinEvent ---- 原文: PowerShell-Docs (CC BY 4.0) の翻訳 / PSHelpJaJP |