[Azure]Windows Updateの選択適用の管理方法

概要

Azureで運用しているWindows Server VMに対して、Windows Updateを選択的に適用する手法をいくつかざっくりまとめます。

昔のWindowsではWindows UpdateのGUIで適用パッチを選択することができましたが、いまはできなくなったんですよね…。

手法一覧

  1. Azure Update Management
  2. Windows Admin Center
  3. Microsoft Defender for Endpoint
  4. Powershell から Windows Update Agent API を叩く

Azure Update Management

Azure環境であれば、Azure Update Management が第1の候補。

Azure Automation + Log Analytics + Azure VMで構成されていますが、専用のメニューが用意されているのでAzure Portalからの簡単な設定だけで使用開始できます。

単純に使うだけなら、やることはVMへのエージェントインストール(チェックボックスOnするだけ)、Log AnalyticsワークスペースとAutomationアカウントの作成とAutomationアカウントでの「更新プログラムの管理」でのスケジュール設定ぐらいです。

適用対象VMの選択 / KB単位での除外設定などができるので、ほとんどの場合では必要十分なのではないでしょうか。

参考資料

Windows Admin Center

管理台数が少なく、適用対象を手動で選択しつつ対処したいのであれば、Admin Centerがいいかもしれません。

2022/05/24時点ではプレビューではありますが、Windows Admin Center が Azure VM に提供されていて、Admin Centerの「更新プログラム」メニューから、昔のWindowsのように適用するパッチをチェックボックスで選択して適用することができます。

セットアップも利用もVM管理メニューの「Windows Admin Center(プレビュー)」から行えますので、手軽に利用できます。

参考資料

Microsoft Defender for Endpoint

これはちょっと番外編です。

Defender for Endpointでは管理対象マシンの脆弱性のチェックと更新を行うサービスです。デバイスグループを用意して選択的にサーバーへのパッチ適用状況を確認することもできます。

ただ、Defender for Endpointはパッチ適用が主目的ではなく、管理対象マシン群の包括的な脆弱性対策状況を管理するもののため、特定マシンに特定パッチを適用するにはやや使いづらいところがあります。

管理対象マシン全体の脆弱性対策を一定水準にしたいという目的であれば利用を検討する価値があります。

Powershell から Windows Update Agent API を叩く

Windows Update の情報は Windows Update Agent API を通して提供されているため、それをPowershell(など)から叩くことで、要望をかなえる事ができます。

とりあえず下記のコードで適用済みのWindows Updateを一覧することができます。

$updateSession = New-Object -com Microsoft.Update.Session
$Searcher = $updateSession.CreateUpdateSearcher()
$Searcher.QueryHistory(0, $Searcher.GetTotalHistoryCount()) | ?{$_.ResultCode -eq 2}  | Format-Table date,title

参考資料を見る限りKBを選択して適用というのもできそうです。(試していないのでこれ以上詳細はわかりません)

参考資料

補足

どの方法も Windows設定画面のWindows Updateの履歴とは一致しないことがあったりするので、管理する方法はどれか1つに統一した方が良さそうです。

コメントを残す