Azure Update ManagerでLinux VMのパッチを一元管理する方法|更新プログラムの評価とスケジュール適用

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Azure > Azure Update ManagerでLinux VMのパッチを一元管理する方法|更新プログラムの評価とスケジュール適用
「パッチ管理をしているつもりなのに、セキュリティ監査で毎回『未適用の更新がある』と指摘される」
複数のLinux VMを抱えるAzure環境で、こう感じているエンジニアは少なくありません。VMごとに手動でdnf updateやapt upgradeを実行していては、抜け漏れが必ず発生します。

この記事では、Azure Update Managerを使ってLinux VMのパッチ管理を一元化する方法を、az CLIコマンドと実行結果の出力例を交えて解説します。評価(Assessment)でパッチ適用状況を可視化する手順から、メンテナンス構成によるスケジュール適用、動的スコープを使った複数VM一括管理まで順を追って説明します。

動作確認環境:RHEL 9.4 / Ubuntu 24.04 LTS(Azure VMおよびAzure Arc有効化サーバー)

この記事のポイント

・azure update manager パッチはaz vm assess-patchesで評価できる
・メンテナンス構成とVMの割り当てでスケジュール自動適用が実現できる
・動的スコープで複数VMをタグ条件でまとめて管理できる
・評価後の適用除外フィルターで重要パッチだけを確実に当てられる


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

Azure Update Managerとは何か?従来のパッチ管理との違い

Azure Update Managerは、Microsoftが提供するクラウドネイティブなパッチ管理サービスです。2023年に旧来の「Azure Automation Update Management」の後継として正式リリースされ、現在はAzure標準のパッチ管理機能として位置づけられています。

旧サービスとの最大の違いは、Log AnalyticsワークスペースもAutomationアカウントも不要になった点です。以前はこれらを事前に作成してエージェントを繋ぎ込む作業が必要でしたが、Azure Update ManagerはVMのゲストエージェント(waagent)だけで動作します。

主な特徴は以下のとおりです。

評価(Assessment):VMに何のパッチが当たっていないかを可視化する
オンデマンド更新:今すぐ指定パッチを適用する
スケジュール更新(メンテナンス構成):毎週日曜2時など定期実行を自動化する
動的スコープ:タグや場所でVMをグループ化して一括管理する
Azure Arcサーバー対応:オンプレミスサーバーも同じ仕組みで管理できる

Linuxエンジニアの視点で言えば「dnf/apt をAzureが代わりに定期実行し、結果をPortalで一元確認できる」サービスです。rpmコマンドの使い方を知っていれば、パッチ分類(Security/Bugfix/Enhancement)の意味もすぐに把握できます。

評価(Assessment)で現在のパッチ状態を確認する

パッチを適用する前に、まず「どのVMにどんな未適用パッチが存在するか」を把握しましょう。Azure Update Managerの評価機能は、パッチをインストールせずに状態だけを確認します。定期的に評価を実行することで、セキュリティ監査にそのまま使える可視化レポートが得られます。

1. az vm assess-patches でオンデマンド評価を実行する

az CLIがインストール済みで、対象VMが起動している前提で進めます。

# リソースグループと VM 名を変数に設定する $ RG="rg-linux-practice" $ VM="linuxvm-rhel94" # オンデマンドでパッチ評価を実行する(インストールなし) $ az vm assess-patches \ --resource-group $RG \ --name $VM # 実行結果(抜粋) { "assessmentActivityId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "availablePatchCount": 12, "criticalAndSecurityPatchCount": 4, "errorDetails": { "code": null, "message": null }, "lastModifiedDateTime": "2026-07-22T03:12:45+00:00", "otherPatchCount": 8, "patches": [ { "activityId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "classifications": [ "Security" ], "kbId": null, "name": "openssl-3.0.7-28.el9_4.x86_64", "patchInstallationState": "NotInstalled", "version": "3.0.7-28.el9_4" }, { "activityId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "classifications": [ "Security" ], "kbId": null, "name": "kernel-5.14.0-503.26.1.el9_4.x86_64", "patchInstallationState": "NotInstalled", "version": "5.14.0-503.26.1.el9_4" } ], "rebootPending": false, "startDateTime": "2026-07-22T03:12:30+00:00", "status": "Succeeded" }

`criticalAndSecurityPatchCount: 4` がゼロでない場合は早急に適用を検討してください。`otherPatchCount` は Security/Critical 以外の Bugfix・Enhancement・Newpackage 分類です。

2. 評価結果をテーブル形式で確認する

結果が長い場合は `-o table` と `--query` オプションで絞り込むと見やすくなります。

# Security分類のパッチのみ名前と状態を一覧表示する $ az vm assess-patches \ --resource-group $RG \ --name $VM \ --query "patches[?contains(classifications,'Security')].{Name:name, State:patchInstallationState}" \ -o table Name State ------------------------------------------ --------------- kernel-5.14.0-503.26.1.el9_4.x86_64 NotInstalled openssl-3.0.7-28.el9_4.x86_64 NotInstalled glibc-2.34-117.el9_4.x86_64 NotInstalled systemd-252-46.el9_4.x86_64 NotInstalled

3. 評価の自動実行を有効にする

Azure Update Managerには「定期評価(Periodic Assessment)」という機能があり、有効にすると24時間ごとに自動で評価が実行されます。常に最新のパッチ状態をPortalで確認できるようになります。

# 定期評価を有効にする(AssessmentMode を AutomaticByPlatform に設定する) $ az vm update \ --resource-group $RG \ --name $VM \ --set osProfile.linuxConfiguration.patchSettings.assessmentMode=AutomaticByPlatform # 確認する $ az vm show \ --resource-group $RG \ --name $VM \ --query "osProfile.linuxConfiguration.patchSettings" \ -o json { "assessmentMode": "AutomaticByPlatform", "automaticByPlatformSettings": null, "patchMode": "AutomaticByPlatform" }

`patchMode` が `ImageDefault` のままだと、評価は手動実行のみになります。AutomaticByPlatform に変更することが Azure Update Manager を使う前提条件です。

メンテナンス構成でパッチ適用スケジュールを設定する

評価でパッチ状態を把握したら、次はいつ・どのパッチを適用するかのスケジュールを設定します。Azure Update Manager ではこの設定を「メンテナンス構成(Maintenance Configuration)」と呼びます。

4. メンテナンス構成を作成する

以下の例では「毎週日曜日 2:00 JST(= 17:00 UTC 前日)に Security・Critical パッチを最大 2 時間の作業枠で適用する」構成を作成しています。

# メンテナンス構成を作成する $ az maintenance configuration create \ --resource-group $RG \ --name "mc-linux-weekly-security" \ --maintenance-scope "InGuestPatch" \ --location "japaneast" \ --start-date-time "2026-07-26 17:00" \ --duration "02:00" \ --recur-every "Week Sunday" \ --time-zone "UTC" \ --extension-properties '{"inGuestPatchMode":"User"}' \ --install-patches-linux-parameters '{"classificationsToInclude":["Security","Critical"],"packageNameMasksToExclude":[],"packageNameMasksToInclude":[]}' # 作成結果(抜粋) { "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/rg-linux-practice/providers/Microsoft.Maintenance/maintenanceConfigurations/mc-linux-weekly-security", "location": "japaneast", "maintenanceScope": "InGuestPatch", "name": "mc-linux-weekly-security", "timeWindow": { "duration": "02:00", "recurEvery": "Week Sunday", "startDateTime": "2026-07-26 17:00", "timeZone": "UTC" } }

`--recur-every` に指定できる値は `Day`・`Week [曜日]`・`Month [日付]` などです。深夜のメンテナンスウィンドウで設定することを強く推奨します。本番障害は日中の計画外パッチ適用から起きやすいためです。

5. VMにメンテナンス構成を割り当てる

作成したメンテナンス構成を、対象の VM に割り当てます。この割り当て(Assignment)が完了して初めて、スケジュール通りにパッチが適用されるようになります。

# VM の リソース ID を取得する $ VM_ID=$(az vm show \ --resource-group $RG \ --name $VM \ --query "id" -o tsv) # メンテナンス構成の リソース ID を取得する $ MC_ID=$(az maintenance configuration show \ --resource-group $RG \ --name "mc-linux-weekly-security" \ --query "id" -o tsv) # メンテナンス構成を VM に割り当てる $ az maintenance assignment create \ --resource-group $RG \ --resource-name $VM \ --resource-type "virtualMachines" \ --provider-name "Microsoft.Compute" \ --configuration-assignment-name "assign-mc-linux-rhel94" \ --maintenance-configuration-id $MC_ID # 割り当て確認 $ az maintenance assignment list \ --resource-group $RG \ --resource-name $VM \ --resource-type "virtualMachines" \ --provider-name "Microsoft.Compute" \ -o table Name ResourceGroup MaintenanceConfigurationId ------------------------- ------------------- -------------------------------------------------- assign-mc-linux-rhel94 rg-linux-practice .../mc-linux-weekly-security

6. オンデマンドで今すぐパッチを適用して確認する

スケジュール実行を待たずに、作成した構成と同じ条件(Security・Critical のみ)で今すぐパッチを適用したい場合は `az vm install-patches` を使います。

# Security と Critical 分類のパッチを今すぐ適用する $ az vm install-patches \ --resource-group $RG \ --name $VM \ --maximum-duration "PT1H" \ --reboot-setting "IfRequired" \ --classifications-to-include-linux "Security" "Critical" # 適用結果(抜粋) { "installationActivityId": "f1e2d3c4-b5a6-7890-fedc-ba0987654321", "installedPatchCount": 4, "notSelectedPatchCount": 8, "pendingPatchCount": 0, "rebootStatus": "NotNeeded", "startDateTime": "2026-07-22T04:30:10+00:00", "status": "Succeeded" }

`rebootStatus: NotNeeded` であれば再起動不要でパッチが完了しています。`Required` が返った場合は、業務への影響を確認してから再起動を実施してください。カーネル更新を含むパッチは基本的に再起動が必要です。

パッチ適用後にログイン確認とポート確認も忘れずに実施しましょう。Linuxのポート確認コマンド(ss/lsof)をあわせて参照してください。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、20年以上の運用経験を持つ現役エンジニアが基礎から教えます。
Azure対応セミナーの詳細を見る >>

動的スコープで複数VMのパッチを一括管理する

VM が数台なら個別割り当てで済みますが、10台・20台と増えてくると管理が追いつきません。動的スコープ(Dynamic Scope)を使えば、タグや場所でVMを自動的にグループ化し、新規VMが追加されても自動でメンテナンス構成が適用されます。

7. 動的スコープを作成してサブスクリプション全体に適用する

以下の例では `Environment=Production` タグが付いたすべての Linux VM を対象にスコープを設定しています。

# サブスクリプション ID を取得する $ SUB_ID=$(az account show --query id -o tsv) # 動的スコープ(Configuration Assignment)を作成する # --filter-tags で対象VMを絞り込む(Environment=Production タグを持つ Linux VM) $ az maintenance assignment create-or-update-subscription \ --subscription $SUB_ID \ --configuration-assignment-name "dscope-mc-linux-production" \ --maintenance-configuration-id $MC_ID \ --filter-os-types "Linux" \ --filter-tags '{"Environment":["Production"]}' \ --filter-locations "japaneast" \ --filter-resource-types "Microsoft.Compute/virtualMachines" # 確認:動的スコープに含まれるVMを確認する $ az maintenance assignment list-parent \ --provider-name "Microsoft.Maintenance" \ --resource-type "configurationAssignments" \ --subscription $SUB_ID \ -o table Name ResourceGroup Location ----------------------------- ------------------- ---------- linuxvm-rhel94 rg-linux-practice japaneast linuxvm-ubuntu2404 rg-linux-practice japaneast linuxvm-rhel94-prod02 rg-production japaneast

動的スコープは新しいVMに `Environment=Production` タグを付けるだけで、次回のメンテナンスウィンドウから自動的にパッチ管理対象になります。新規VM追加時の手動割り当てを忘れるというヒューマンエラーを根本から排除できます。

トラブルシュート・よくあるエラー対処

Azure Update Manager を使い始めてよく遭遇するエラーと対処法をまとめます。

「VMAgent not ready」エラーが出た場合

評価や更新が `Failed` になり、エラー詳細に「The VM agent is not in ready state」と表示された場合は、VMのゲストエージェント(waagent)が停止しています。

# VM に SSH 接続してゲストエージェントの状態を確認する $ systemctl status walinuxagent # Ubuntu の場合 $ systemctl status waagent # RHEL/CentOS の場合 # 停止していた場合は起動する $ sudo systemctl start walinuxagent # Ubuntu $ sudo systemctl start waagent # RHEL # 自動起動を有効にする $ sudo systemctl enable walinuxagent # Ubuntu $ sudo systemctl enable waagent # RHEL

「patchMode が AutomaticByOS になっている」場合

`patchMode` が `AutomaticByOS`(RHEL系のデフォルト)のままだと、AzureのUpdate Managerではなく OS の自動更新(dnf-automaticや unattended-upgrades)がパッチを管理してしまいます。Azure Update Manager に一元化したいなら `AutomaticByPlatform` に変更してください。

# 現在の patchMode を確認する $ az vm show \ --resource-group $RG \ --name $VM \ --query "osProfile.linuxConfiguration.patchSettings.patchMode" \ -o tsv AutomaticByOS # ← Azure Update Manager が制御できない状態 # AutomaticByPlatform に変更する $ az vm update \ --resource-group $RG \ --name $VM \ --set osProfile.linuxConfiguration.patchSettings.patchMode=AutomaticByPlatform # 再確認する $ az vm show \ --resource-group $RG \ --name $VM \ --query "osProfile.linuxConfiguration.patchSettings.patchMode" \ -o tsv AutomaticByPlatform # ← 正常

評価が 24 時間たっても更新されない場合

定期評価を有効にしていても更新されない場合、VM が停止(Deallocated)状態になっていないか確認してください。評価エージェントはVM起動中のみ動作します。また、`microsoft.maintenance` リソースプロバイダーがサブスクリプションに登録されていない場合もあります。

# リソースプロバイダーの登録状態を確認する $ az provider show \ --namespace "Microsoft.Maintenance" \ --query "registrationState" \ -o tsv NotRegistered # ← 未登録の場合 # 登録する(数分かかる) $ az provider register --namespace "Microsoft.Maintenance" # 登録完了まで待機して確認する $ az provider show \ --namespace "Microsoft.Maintenance" \ --query "registrationState" \ -o tsv Registered # ← 登録完了

本記事のまとめ

Azure Update Manager を使った Linux VM のパッチ管理の要点を表にまとめます。

やりたいこと コマンド
パッチ状態をオンデマンドで評価する az vm assess-patches --resource-group RG --name VM
定期評価を有効にする az vm update --set osProfile.linuxConfiguration.patchSettings.assessmentMode=AutomaticByPlatform
メンテナンス構成を作成する az maintenance configuration create --maintenance-scope InGuestPatch
VMにメンテナンス構成を割り当てる az maintenance assignment create --configuration-assignment-name NAME
Security/Criticalパッチを今すぐ適用する az vm install-patches --classifications-to-include-linux Security Critical
動的スコープでサブスクリプション全体に適用する az maintenance assignment create-or-update-subscription --filter-tags

azure update manager パッチの仕組みは「評価で可視化 → メンテナンス構成でスケジュール化 → 動的スコープで自動化」という3段階で完結します。最初は1台の VMで評価と手動適用を試し、運用フローを掴んでからメンテナンス構成・動的スコープへ段階的に移行するのが現場でのセオリーです。

パッチ管理は「やった気」と「実際に当たっている」が乖離しやすい領域です。Azure Update Manager の評価ダッシュボードを週次でレビューする習慣をつけることで、セキュリティ監査の指摘を大幅に減らせます。

次に読む記事
rpmコマンドの使い方|パッケージ確認・インストール・削除の基本
・AzureのLog AnalyticsでLinuxサーバーのログを収集・分析する方法
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、20年以上の運用経験を持つ現役エンジニアが基礎から教えます。
Azure対応セミナーの詳細を見る >>

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。