Appearance
Patch Management Procedure
Overview
Patch management covers OS security updates, application updates, and firewall content updates across all managed systems. HIPAA §164.308(a)(5)(ii)(B) requires a patch management process. This document defines what gets patched, when, and how to verify it.
Owner: Rory (coordinates with Kevin and Greg for domain-joined servers)
Scope
| System Type | Patch Method | Cadence |
|---|---|---|
| Windows endpoints (staff laptops/desktops) | Intune Update Rings | Monthly (Patch Tuesday +7 days) |
| Windows servers (domain-joined, Azure VMs) | Azure Update Manager + GPO WSUS | Monthly (Patch Tuesday +14 days) |
| Linux VMs (Azure and AWS) | unattended-upgrades + manual schedule | Weekly auto security, monthly full |
| Palo Alto firewalls | Panorama content updates | Weekly (App-ID/threat content); quarterly (PAN-OS) |
| Container images (bedrock-soc agents) | Dockerfile base image rebuild | Monthly or on critical CVE |
| Azure platform services | Microsoft-managed | Automatic — no action needed |
Windows Endpoints (Intune)
Update Ring Configuration
Three update rings are configured in Intune to stagger deployment and catch bad patches before they hit all machines:
| Ring | Machines | Quality Update Deferral | Feature Update Deferral |
|---|---|---|---|
| Preview | Rory's machine | 0 days | 0 days |
| Pilot | Selected early adopters | 3 days | 30 days |
| Broad | All remaining staff | 7 days | 90 days |
Quality updates (security patches) are mandatory — no opt-out. Feature updates (Windows version upgrades) are deferred longer to allow compatibility validation.
Checking Patch Status
Intune Admin Center → Devices → Monitor → Windows 10 update rings
Shows per-ring compliance: how many devices are current, pending, or failed.
Intune Admin Center → Reports → Windows updates → Windows feature update report Shows which devices haven't updated and why.
Forcing an Immediate Update
For a critical out-of-band patch (zero-day, actively exploited):
- Intune Admin Center → Devices → All devices → [device] → Sync — forces the device to check in and pick up policy immediately
- Or via PowerShell (Remotely via Intune Live Shell):powershell
# Force Windows Update check (New-Object -ComObject Microsoft.Update.AutoUpdate).DetectNow()
For emergency patches, you can temporarily reduce the Broad ring deferral to 0 days, then restore it after patching is complete.
Failed Patch Investigation
Intune → Devices → [device] → Device compliance → Updates
Common failure reasons:
- Device was offline during the update window — will patch on next check-in
- Pending restart — user hasn't rebooted after a previous patch
- Insufficient disk space — clean up
C:\Windows\Tempor system drive - Driver conflict — check Windows Update error code in Event Viewer → System log
Windows Servers (Domain-Joined Azure VMs)
Patching Schedule
Servers are patched on the second Tuesday + 14 days (approximately the 4th week of the month) — two weeks after Patch Tuesday gives time for the broader IT community to surface regressions.
Kevin and Greg coordinate server patching for domain controllers.
Azure Update Manager
For Azure-hosted Windows VMs, use Azure Update Manager for visibility and scheduling:
Azure Portal → Update Manager → Machines → filter to subscription → view update status
Each VM shows: last assessment time, pending updates by severity (Critical, Security, Other).
Schedule updates: Update Manager → Schedule updates → New maintenance configuration
- Set to run in the 4th week of the month
- Set maximum maintenance duration: 2 hours
- Reboot setting: Reboot if required
Domain Controllers — Special Care
Patch DCs one at a time. Never patch all DCs simultaneously — a bad patch that causes a boot failure would take down authentication for the entire domain.
Order of operations:
- Check AD replication health before patching:
repadmin /replsummary - Patch the RODC first (least impact if it fails)
- Verify RODC is healthy after reboot
- Patch the DR DC (CGIRDPAZP01 in AWS)
- Verify replication from primary to DR DC
- Patch the Primary DC last
- Verify all FSMO roles are back on the Primary DC after reboot:
netdom query fsmo
Allow 30 minutes between each DC patch to confirm replication is healthy.
Verification After Server Patching
powershell
# List recently installed updates on a server
Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 10
# Check Windows Update event log for failures
Get-WinEvent -LogName System | Where-Object { $_.Id -in 19, 20, 21 } | Select-Object -First 5
# Event 19 = update downloaded, 20 = installed, 21 = failedLinux VMs
Automatic Security Updates (unattended-upgrades)
All Linux VMs in Azure and AWS run unattended-upgrades configured for security-only automatic updates. Configuration: /etc/apt/apt.conf.d/50unattended-upgrades
Security packages from ubuntu-focal-security (or equivalent) are installed automatically within 24 hours of release.
Verify the service is running on a VM:
bash
systemctl status unattended-upgradesCheck the log:
bash
cat /var/log/unattended-upgrades/unattended-upgrades.log | tail -50Monthly Full Update
On the last Sunday of each month, apply all pending updates (not just security):
bash
sudo apt update && sudo apt upgrade -y && sudo apt autoremove -yReboot if the kernel was updated:
bash
if [ -f /var/run/reboot-required ]; then echo "Reboot required"; fiFor the secops Container Apps jobs (Linux-based), the container images are rebuilt monthly — rebuilding picks up OS updates in the base image.
Palo Alto Firewalls
Content Updates (Weekly)
Palo Alto content updates include threat intelligence, App-ID signatures, and URL category updates. These are low-risk and should be applied weekly.
Panorama → Device → Dynamic Updates
Set to check and install automatically:
- Applications and Threats: every 24 hours
- Antivirus: every 24 hours
- WildFire: every 1 minute (real-time)
- URL Filtering: daily
Or trigger manually: Panorama → Device → Dynamic Updates → Check Now → install the latest
PAN-OS Updates (Quarterly)
PAN-OS (the firewall OS) updates are higher risk and require a maintenance window.
Frequency: Quarterly, or when a critical CVE is published for PAN-OS.
Procedure:
- Read the PAN-OS release notes — check for known issues and migration steps
- Open a maintenance window in SecOps (suppress alerts during patching window)
- Upgrade RODC firewall first — if it fails, primary is unaffected
- After RODC firewall validates for 24 hours, upgrade Primary DC firewall
- Verify Panorama can still reach all managed firewalls after each upgrade
- Check threat logs and traffic logs are flowing correctly post-upgrade
Panorama itself must also be upgraded — always upgrade Panorama before the firewalls. Panorama must be on the same or higher version than the managed devices.
For the full upgrade procedure see Panorama Operations.
Container Images (bedrock-soc)
Container images are rebuilt monthly to pick up OS security patches in the base image. A code change that touches Dockerfile, app/, or alembic/ triggers an automatic rebuild via CI/CD. For months with no code changes, trigger a manual rebuild:
- GitHub → bedrock-soc → Actions → Deploy → Run workflow → branch: main
The Dockerfile should use a pinned but periodically updated base image:
dockerfile
FROM python:3.12-slim # Update the minor version monthlyWhen a critical CVE affects the base image (e.g., glibc or openssl vulnerability), rebuild immediately regardless of schedule.
Emergency Patching (Critical CVEs)
For actively exploited vulnerabilities or critical CVEs with CVSS 9.0+:
- Assess scope — which systems are affected?
- Patch within 24 hours for internet-facing or critical systems
- Patch within 72 hours for internal systems
- For Windows endpoints: reduce Intune ring deferral to 0 and force sync
- For servers: schedule emergency maintenance window, patch outside normal cycle
- Create a CM ticket in SecOps before patching to suppress false-positive alerts
- After patching, restore normal ring deferral settings
- Document in the monthly security review
Patch Compliance Reporting
The monthly security review includes a patch compliance summary. Pull it from:
- Intune: Devices → Monitor → Windows 10 update rings → compliance %
- Azure Update Manager: Update Manager → Overview → pending updates count
- Palo Alto content: Panorama → Device → Dynamic Updates → last installed date
A machine more than 30 days behind on security patches is non-compliant. Open a finding in SecOps and track remediation.
Related Documents
- Intune Daily Management — Intune portal and device management
- Active Directory Operations — DC-specific maintenance
- Panorama Operations — PAN-OS upgrade procedure
- SecOps Platform Deployment — container image rebuild
- Monthly Security Review — patch compliance reporting
Document History
| Date | Change | Author |
|---|---|---|
| May 2026 | Initial draft — Windows endpoints (Intune rings), Windows servers (Azure Update Manager + DC patching order), Linux (unattended-upgrades), Palo Alto (content + PAN-OS), containers, emergency patching. | Rory |