The Ops Atlas xOps School

Security & Compliance Ambiguous / not standardised Sources verified

SecOps

SecOps is an ambiguous label. Here it means the working contract between security and IT operations: agreed hardening baselines, one owned remediation queue with deadlines, governed exceptions and joint metrics. Others use it for SOC work or a Google product.

Key takeaways

  • "SecOps" has three documented meanings: security and IT operations working to one contract, shorthand for the SOC, and Google's SIEM/SOAR product. This page teaches the first and routes readers to the others.
  • The conflict is structural, not personal. NIST calls patch management "a contentious issue for decades": faster fixes shrink the attacker's window but raise the risk of disruption. Settle that trade-off in advance, per group of assets, not ticket by ticket.
  • Security chooses and governs the baseline, operations applies it, and a named business owner accepts any residual risk. Every deviation is written down with a reason, a compensating control and a review date; containment the SOC may take at night is agreed in advance.
  • Run one inventory and one queue keyed on asset ownership (the image owner, where hosts are rebuilt rather than patched). At Equifax the alert went to an out-of-date recipient list, and IT and security kept separate, incomplete inventories.
  • Hardening changes are production changes. A conformance scan shows what fails, not what enforcement would break: test off production, use a log-only mode where the control has one, otherwise pilot rings with a cooling-off period, then enforce.
  • Measure on-time remediation by asset importance and urgency, count overdue open items, and pair every speed target with a disruption counter-metric.
  • Security tooling is operational infrastructure, with owners, health checks and staged updates: a security-agent content update crashed Windows hosts in July 2024.

SecOps, as this Atlas uses the word, is the working contract between the security team and IT operations. It answers four questions in advance: what “securely configured” means for each kind of asset (hardening baselines); how a security finding becomes owned, dated work in an operations queue; who may grant an exception, and for how long; and which shared numbers both teams answer to.

It exists because almost every security fix is an operational change; without a contract, each becomes a negotiation.

It is for IT and security managers in small and mid-sized organisations and the engineers between them, and it is the hub of the Atlas’s security-operations pages (routing table). Where to start: beginners, the glossary and Lab 1; engineers, the reference implementation and runbook; leaders, the RACI, metrics and decision framework.

Question Answer
Goal Security work done through operations on agreed terms
In scope Governing baselines and their exceptions; routing findings to owners; the timeframe each owner group has resourced; the shared register; change windows for security work; telemetry and containment authority owed to the SOC; joint metrics
Out of scope SOC triage, detection engineering, incident response, urgency classes and remediation-SLA policy, risk-acceptance policy, patch rollout
Prerequisites An asset inventory with owners, a ticketing tool, a configuration-assessment source
Outputs Baseline catalogue, exception register, timeframe matrix, routing rules, containment list, joint scorecard
Term status ambiguous; this page uses the collaboration meaning

NIST’s patch-management guide is blunt: “Enterprise patch management has been a contentious issue for decades, with personnel from the security and business/mission sides of organizations often having conflicting opinions.”[9] Fast fixes narrow the attacker’s window but risk disruption; testing first does the opposite. NIST calls the habit of treating patch outages as self-inflicted and attack outages as someone else’s doing “misleading and incomplete”: “Disruptions from patching are largely controllable, while disruptions from incidents are largely uncontrollable.”[9]

Without a contract, whoever escalates loudest settles the conflict, ticket by ticket. Symptoms: findings in a console operations never watches; separate asset lists; a baseline rolled back after its first breakage and never re-applied; exceptions by email that never expire; two sets of numbers, and nobody owning time to remediate.

  • Not the SOC (SOC Ops). This page keeps one section on what operations owes the SOC.
  • Not DevSecOps: pipeline controls are DevSecOps; SecOps starts where systems run.
  • Not vulnerability management or patch rollout. VulnerabilityOps sets urgency classes, remediation-SLA policy and the criteria for vulnerability exceptions; PatchOps turns maintenance groups into plans and rollouts; RiskOps owns risk acceptance. SecOps owns the cross-team agreement they rely on: routing, the timeframe each owner group has resourced, the shared register, and baseline exceptions.
  • Not incident response (ResponseOps) or incident command (IncidentOps).
  • Not applying baselines: SecOps chooses and governs them; SysOps, EndpointOps, KubernetesSecOps and CloudSecOps apply them.

There is no founding document. Explainers describe SecOps by analogy with DevOps[6], and a January 2016 BMC press release already described “a significant gap between the security and IT operations (SecOps) teams”[10]. The practices are older: configuration checklists (NIST SP 800-70, Rev. 5 since May 2026[11]; CIS Benchmarks[12]), configuration management (SP 800-128[13]) and patch management[9].

Term Meaning on this page
Hardening baseline The configuration an asset class must meet, usually a benchmark tailored locally
Level 1 / Level 2 CIS profiles: Level 1 is “designed to not have an extensive performance impact”; Level 2 adds defence in depth that may disrupt operations if misapplied[14]
Tailoring Adapting a benchmark locally, recording each change[11]; scanners store it in an XCCDF (Extensible Configuration Checklist Description Format) tailoring file
Conformance assessment A scan (CIS-CAT, OpenSCAP, usg audit) reporting which rules pass. It changes nothing, so cannot show what enforcement would break
Log-only mode Offered by some controls: would-be blocks are logged, not enforced, as with Defender attack surface reduction (ASR) rules in Audit mode[15] or SELinux permissive mode[16]
Pilot ring A small group enforced first, with a cooling-off period before wider rollout[11]; the safety net where no log-only mode exists
Exception (deviation) An approved departure from the baseline, with reason, compensating control, risk owner and review date
Maintenance group, plan A group is “a set of assets with similar characteristics that generally have the same software maintenance needs”; its plans set actions and timeframes per scenario (routine, emergency patching, emergency mitigation, unpatchable)[9]
CMDB, ITSM Configuration management database (assets, owners) inside the IT service management tool for tickets and changes
KEV CISA’s Known Exploited Vulnerabilities catalogue, “the authoritative source of vulnerabilities that have been exploited in the wild”[17]
SIEM Security information and event management: gathers security data from many systems and presents it “as actionable information via a single interface”[18]
SOAR Security orchestration, automation and response: playbooks that enrich alerts and run response actions
EDR, MDR Endpoint detection and response, an agent on each host; managed detection and response, a market label for a provider that monitors, triages and, within granted authority, contains (SOC Ops)

The mental model: two failure models, one ledger. Building Secure and Reliable Systems says: “When designing for reliability, you assume that some things will go wrong at some point. When designing for security, you must assume that an adversary could be trying to make things go wrong at any point.”[19] Operations guards against the first, security against the second, and each sees the other’s changes as risk. SecOps does not remove that tension; it prices it in advance: maintenance groups say which assets tolerate which disruption, timeframes how fast each finding must be fixed, the register who may say “not now” and until when, and one queue holds the work both teams read.

If your question is about… Go to What SecOps adds
Alert triage, analyst tiers, MDR SOC Ops Logs, agent health, response authority
Writing and testing detections DetectionOps The change calendar
Threat intelligence and hunting ThreatOps Routing of findings needing operational fixes
Security incidents; incident command ResponseOps, IncidentOps Pre-agreed containment authority (Annex D)
Urgency classes, SLA policy; patch plans and rollout VulnerabilityOps, PatchOps Routing, resourced timeframes per maintenance group, the shared register
Security in CI/CD DevSecOps The run-time side of the same findings
Change approval, CMDB, service desk ITOps Change routes for security work
Security telemetry pipelines and cost SecDataOps Which sources operations keeps sending
Ransomware readiness: offline, encrypted, tested backups[20] BackupOps, DisasterRecoveryOps; incidents ResponseOps Backup isolation in the baseline; restore tests on the scorecard
Privileged administration, break-glass; identities AccessOps, IdentityOps Admin access to security tooling in access reviews
Protecting business data; AI in security DataSecOps, AIOps for Security —
Audit evidence; risk-acceptance process ComplianceOps, RiskOps The register and change records
Figure 1. Where SecOps routes security-operations work
SecOps: the security and IToperations contractDetect and respondFind and fixApply baselinesProtect and recoverSOC Ops: triageDetectionOps: detectionsResponseOps: incidentsVulnerabilityOps: urgency,SLA policyPatchOps: safe rolloutITOps: change routesSysOps: serversEndpointOps: devicesCloudSecOps: cloudaccountsBackupOps: isolated copiesAccessOps: privileged accessDataSecOps: business data
Diagram source (Mermaid)
flowchart LR
  S["SecOps: the security and IT operations contract"]
  G1["Detect and respond"]
  G2["Find and fix"]
  G3["Apply baselines"]
  G4["Protect and recover"]
  S --> G1
  S --> G2
  S --> G3
  S --> G4
  G1 --> SOC["SOC Ops: triage"]
  G1 --> DET["DetectionOps: detections"]
  G1 --> RSP["ResponseOps: incidents"]
  G2 --> VUL["VulnerabilityOps: urgency, SLA policy"]
  G2 --> PAT["PatchOps: safe rollout"]
  G2 --> ITO["ITOps: change routes"]
  G3 --> SYS["SysOps: servers"]
  G3 --> EPO["EndpointOps: devices"]
  G3 --> CSO["CloudSecOps: cloud accounts"]
  G4 --> BKP["BackupOps: isolated copies"]
  G4 --> ACC["AccessOps: privileged access"]
  G4 --> DSO["DataSecOps: business data"]
  classDef core fill:#e8f3f2,stroke:#16756f,color:#122029
  classDef neutral fill:#f1f4f6,stroke:#5b7a87,color:#122029
  class S,G1,G2,G3,G4 core
  class SOC,DET,RSP,VUL,PAT,ITO,SYS,EPO,CSO,BKP,ACC,DSO neutral

Text equivalent: twelve of the pages named in the routing table and under “What it is not”, in four groups. Detect and respond: SOC Ops, DetectionOps, ResponseOps. Find and fix: VulnerabilityOps, PatchOps, ITOps. Apply baselines: SysOps, EndpointOps, CloudSecOps. Protect and recover: BackupOps, AccessOps, DataSecOps.

  1. Decide the trade-off before the emergency. Assessing each new vulnerability from scratch “is simply not feasible”, so NIST says planning “needs to be done in advance”[9]. Agree maintenance groups and timeframes once; apply them per finding.
  2. Separate setting the standard, doing the work and accepting the risk. In NIST SP 800-128 the system administrator “implements agreed-upon secure baseline configurations”; the authorising official decides whether changes remain “an acceptable security risk”[13]; outside government, the accountable service or business owner (the Atlas’s mapping).
  3. One inventory, one queue, one owner per asset. An unowned finding is not fixed (Equifax).
  4. Every deviation is recorded, narrow and temporary. NIST SP 800-70 Rev. 5 asks for deviations “with documented justifications, risk acceptance, and compensating controls” and prefers exceptions for the users or devices that need them over relaxing a setting everywhere[11]; CSF 2.0 lists it as outcome ID.RA-07[21].
  5. Hardening is a change. A conformance scan cannot show what enforcement would break. Test on a non-production system first[14][11]; then use the control’s log-only mode if it has one, otherwise NIST’s pilot deployment groups “with a cooling off period to assess residual impact reports”[11], with rollback or a backup ready. Where the vendor made enforcement safe, enforce at once (playbook).
  6. Measure jointly, including the cost of security change. Speed targets without a disruption counter-metric teach operations to distrust security changes.
  7. Security tooling is production infrastructure, with owners, monitoring and change control.
  8. Prefer paved roads to tickets. For six products and 120 firewalls, Building Secure and Reliable Systems suggests security operate “an automated configuration system that accepts, validates, approves, and pushes firewall changes proposed by the six product teams”[22].

Non-goals: running the SOC, replacing change enablement, or turning security into a change approval board.

Building block Minimum viable version Usual owner
Asset inventory with owner group, maintenance group and exposure flag CMDB fields, reconciled monthly against scanner discovery IT operations
Baseline catalogue One page: asset class → benchmark → profile → tailoring file → version Security
Exception register Mandatory fields and a monthly report (Lab 1) Security keeps it; business owners sign
Timeframe matrix Maximum days per urgency class (set in VulnerabilityOps) × maintenance group, backed by capacity Joint
Shared queue Tickets in operations’ own tool, routed from the CMDB (Lab 3) IT operations hosts; security feeds
Telemetry minimum The CIS Control 8 basics below IT operations
Joint scorecard Seven measures on one page (metrics) Joint

The Atlas proposes this RACI (R responsible, A accountable, C consulted, I informed). “Security” means whoever does SecOps work.

Activity Security IT ops owner group Service or business owner Head of IT ops CISO
Select and tailor a baseline R C I C A
Apply a baseline and fix drift C R/A I I I
Route findings and set due dates R C I I A
Rule on a disputed finding R (decides on evidence) C (supplies evidence) I I A
Fix a finding by its due date I R I A I
Grant an exception (accept residual risk) R (records, advises) C (proposes controls) A C C
Decide an emergency change outside the window C R C A C (can escalate)
Pre-authorise containment actions (Annex D) R C C C A
Keep security tooling healthy A R (hosts, certificates) — C I
Publish the joint scorecard R C I C (co-signs) A

The requester of an exception never approves it, and the Head of IT ops co-signs the scorecard so neither side can disown it. The Head of IT ops decides timing within the agreed timeframe; leaving exposure open beyond it is risk acceptance, which belongs to the business owner. Many organisations add security champions, as Google describes for product teams[22]; in operations, a senior administrator who reviews security tickets weekly.

A baseline’s lifecycle mirrors NIST’s four phases of security-focused configuration management: plan, identify and implement, control changes, monitor[13].

Figure 2. Lifecycle of a hardening baseline
No, after cooling-offYesSelect benchmark and profileTailor; record deviationsTest outside productionLog-only mode, else pilot ringDenials logged or ring broke?Enforce in further ringsMonitor drift with scansReview yearly or on changeFix, or exception with expiry
Diagram source (Mermaid)
flowchart TB
  A["Select benchmark and profile"] --> B["Tailor; record deviations"]
  B --> C["Test outside production"]
  C --> D["Log-only mode, else pilot ring"]
  D --> E{"Denials logged or ring broke?"}
  E -- "No, after cooling-off" --> G["Enforce in further rings"]
  G --> H["Monitor drift with scans"]
  H --> I["Review yearly or on change"]
  E -- "Yes" --> F["Fix, or exception with expiry"]
  F --> D
  I --> B
  classDef core fill:#e8f3f2,stroke:#16756f,color:#122029
  classDef decision fill:#fdf3e3,stroke:#c9800f,color:#122029
  classDef risk fill:#fbeceb,stroke:#b4332b,color:#122029
  class A,B,C,D,G,H,I core
  class E decision
  class F risk

Text equivalent: Select a benchmark and profile, tailor it, record deviations, test outside production. Then run the control’s log-only mode, or else a small pilot ring. If denials appear or the ring breaks, fix the cause or grant a narrow, expiring exception, and repeat. If nothing breaks after a cooling-off period, enforce in further rings, monitor drift with scans, and review yearly or on significant change, feeding back into tailoring.

The yearly-or-on-change review follows CIS Safeguard 4.1[23]. Day 0 agrees the contract; Day 1 opens the shared queue and the first conformance scan; Day 2 is the routine of drift, findings, reviews and the scorecard.

Cadence Forum Decisions
Weekly, 30 minutes Queue review: security lead, one champion per owner group Re-route unowned items; unblock items due within 14 days
Monthly Remediation review: both heads, scorecard Capacity, windows, escalations; CIS Safeguard 7.2 asks for “monthly, or more frequent, reviews”[24]
Quarterly Exception review: security, business owners Renew, retire, or give long-lived exceptions their own maintenance group[9]
Yearly or on major change Baseline review New baseline version
After a security-caused outage or missed emergency Joint post-incident review Fix the contract, not only the server

Escalation ladder: owner group → weekly review → the two heads → the business owner, who gets a written choice: fix by a date at a stated cost, or accept the risk with a compensating control until a date.

Figure 3. Reference architecture: from finding to verified fix
owner cannot fix by due dateexpired or rejectedSignalsAdvisories and KEVVulnerability scansConformance scansSOC findingsSecOps triage: owner, group,exposure from CMDBException registerOwner queues in ITSMChange routeStandard changeNormal changeEmergency changeVerify by rescanJoint scorecard
Diagram source (Mermaid)
flowchart TB
  subgraph SIG["Signals"]
    direction LR
    ADV["Advisories and KEV"]
    VS["Vulnerability scans"]
    CA["Conformance scans"]
    SOCF["SOC findings"]
  end
  TR["SecOps triage: owner, group, exposure from CMDB"]
  EXR[("Exception register")]
  Q["Owner queues in ITSM"]
  CH{"Change route"}
  STD["Standard change"]
  NRM["Normal change"]
  EMG["Emergency change"]
  VER["Verify by rescan"]
  SC["Joint scorecard"]
  SIG --> TR
  TR --> Q
  Q -.->|"owner cannot fix by due date"| EXR
  EXR -.->|"expired or rejected"| Q
  Q --> CH
  CH --> STD
  CH --> NRM
  CH --> EMG
  STD --> VER
  NRM --> VER
  EMG --> VER
  VER --> SC
  EXR --> SC
  classDef core fill:#e8f3f2,stroke:#16756f,color:#122029
  classDef decision fill:#fdf3e3,stroke:#c9800f,color:#122029
  classDef risk fill:#fbeceb,stroke:#b4332b,color:#122029
  classDef neutral fill:#f1f4f6,stroke:#5b7a87,color:#122029
  class TR,Q,VER,SC core
  class CH decision
  class EXR,EMG risk
  class ADV,VS,CA,SOCF,STD,NRM neutral

Text equivalent: Advisories and KEV, vulnerability and conformance scans and SOC findings enter SecOps triage, which takes owner, group and exposure from the CMDB and routes each item to an owner queue. Items not fixable by the due date go to the exception register; expired or rejected exceptions return. Each fix takes a standard, normal or emergency change, is verified by rescan and feeds the joint scorecard, which also reports on the register.

Component Design notes
Signals and triage Each source needs an owner and a health check; rules route, people handle the unowned remainder
Owner queues Work lives where operations already works; duplicate tickets across tools cause “we never saw it”
Change routes Agree with ITOps that routine security fixes qualify as standard (pre-approved) changes
Verification and register Close on a rescan, not on “resolved”; keep the register separate so closing a ticket cannot hide a live risk
Rebuilt (image-based) assets Route to the image owner; close on a clean image and no old instances (below)

Trust boundaries. Scanners hold credentials for every host, agents run as root or SYSTEM, and SOAR tokens can disable accounts: administer them like domain administration (separate admin accounts, MFA, logged changes, a named owner). Whoever can edit routing rules or the register can make findings disappear.

Alternatives. A small organisation can use its ticketing tool, a spreadsheet register and scanner exports. ITSM security modules automate routing: ServiceNow Vulnerability Response (Yokohama release) by default assigns a vulnerable item to the support group of its CMDB configuration item, and leaves it unassigned when no rule matches and no default rule exists[25].

Estates that are rebuilt, not patched. Containers and golden-image hosts are not fixed in place. With containers, NIST notes, “these updates must be made upstream in the images themselves, which are then redeployed”; for container hosts some organisations “simply redeploy new OS instances with the necessary updates, rather than updating existing systems”, which “often requires more sophisticated operational practices”[26]. Three things change. Routing: the CMDB links each instance to its image and the image to an owner, often a platform or pipeline team; findings go there. Due date: it covers the rebuilt image and its redeployment. Verification: a clean scan of the new image, and no instance of the old one still running. Baselines, too, are applied in the image build and assessed on the image. Pipelines and rebuilds are taught on DevSecOps and ContainerOps.

Figure 4. Happy path and exception path for one finding
Risk ownerChangeOwner teamSecOps triageScannerOwner, group, due dateRecord in registeralt[Fix possible by due date][Fix not possible in time]Finding on db-01Ticket in owner queueStandard or normal changeImplemented in windowResolvedRescanClean, ticket closedPropose mitigationException requestAccept until review date
Diagram source (Mermaid)
sequenceDiagram
  participant SRC as Scanner
  participant SEC as SecOps triage
  participant OPS as Owner team
  participant CHG as Change
  participant BO as Risk owner
  SRC->>SEC: Finding on db-01
  Note over SEC: Owner, group, due date
  SEC->>OPS: Ticket in owner queue
  alt Fix possible by due date
    OPS->>CHG: Standard or normal change
    CHG-->>OPS: Implemented in window
    OPS->>SEC: Resolved
    SEC->>SRC: Rescan
    SRC-->>SEC: Clean, ticket closed
  else Fix not possible in time
    OPS->>SEC: Propose mitigation
    SEC->>BO: Exception request
    BO-->>SEC: Accept until review date
    Note over SEC: Record in register
  end

Text equivalent: The scanner reports a finding on db-01. SecOps triage sets owner, group and due date and tickets the owner team. If the fix is possible in time, the owner team changes it in the window and marks it resolved; SecOps closes the ticket only on a clean rescan. If not (no patch yet, a vendor certification, a business freeze), the owner team proposes a mitigation, SecOps asks the risk owner, and an accepted exception is recorded with a review date.

Emergency path. For an actively exploited flaw on an exposed asset, the emergency patching or mitigation plan applies: NIST suggests the routine staged approach on “a highly accelerated schedule”, canary assets first where possible[9]. If compromise is plausible, involve ResponseOps. For US federal civilian agencies, BOD 26-04 sets three days for the most severe combinations, plus forensic triage where a KEV-listed flaw gives total control on a publicly exposed asset, or on an internal one when exploitation is automatable (Table 1 rows 1, 3 and 9); other combinations get 14 or 60 days, or wait for a system upgrade[27].

Practice Trigger Owner Verification
Adopt or revise a baseline New asset class or benchmark version; yearly review Security ®, owner groups © Conformance scans before and after
Log-only or pilot, allow-list, enforce A hardening change that can break clients Owner group No denials outside the allow-list after enforcement
Emergency change Emergency urgency (Annex A) Head of IT ops (A) Rescan; compromise check if exposure was long
Security tooling health Daily Tool owner Agents reporting, scans completing, certificates valid
Security-agent update rings Any EDR, antivirus or inspection-content update Tool owner with ops Crash and performance telemetry per ring

Microsoft’s Netlogon fix for CVE-2020-1472 is the best public example of both variants:

  • Initial deployment phase (updates from 11 August 2020): secure RPC enforced for Windows devices, trust accounts and all domain controllers. Other vulnerable connections, mostly from non-Windows devices, were allowed and logged (event 5829) for owners to fix.
  • Allow-list: devices not fixed in time could join a security group named in the policy “Domain controller: Allow vulnerable Netlogon secure channel connections”; “The end goal should be to address and remove all accounts from this group policy.”
  • Enforcement phase (updates from 9 February 2021): afterwards “you will not be able to disable enforcement mode”[28].

Success measure: an empty allow-list before the vendor’s date. Pitfall: treating the August update as “done” because it installed cleanly; name who watches the vendor’s calendar. The general pattern:

  1. Enforce at once where it is safe. Microsoft says its standard-protection ASR rules can typically be enabled in Block or Warn mode “without testing”[15].
  2. Log only, for the rest. Record what would be blocked, long enough to see monthly and quarterly jobs; without a log-only mode, a pilot ring with a cooling-off period plays this role.
  3. Find and fix. Route each non-compliant client to its owner through the shared queue.
  4. Allow-list narrowly. Put clients that cannot be fixed yet into a named group, each with a register entry and review date.
  5. Enforce in stages, pilot ring first, watching denial events.
  6. Shrink the allow-list to zero, or move what remains into its own isolated maintenance group.
Source What it gives SecOps Binding?
CIS Benchmarks: consensus guides, more than 100 benchmarks across 25+ product families, free PDFs[12][14] Baseline content; Level 1, Level 2 and STIG profiles Voluntary
DISA STIGs: Security Technical Implementation Guides of the US Defense Information Systems Agency; CIS lists STIG benchmarks[12] Stricter baselines Depends on your contracts
Vendor baselines, e.g. Microsoft Security Compliance Toolkit[29] Windows and Office baselines, Group Policy comparison Voluntary
NIST SP 800-70 Rev. 5 (May 2026)[11], SP 800-128[13], SP 800-40 Rev. 4[9] Tailoring, testing and deviations; configuration-management phases and roles; maintenance groups, plans and metrics Voluntary outside US federal
CIS Controls v8.1 Safeguards 4.1 (configuration process), 7.1–7.7 (vulnerability management and remediation), 8.x (logging)[23][24][30] Voluntary
NIST CSF 2.0[21] Outcomes GV.RR-02 (roles), ID.RA-07 (exceptions), PR.PS-01 (configuration), PR.PS-04 (logs) Voluntary
ITIL 4 change enablement (ITOps) Standard, normal and emergency change routes Voluntary
CISA BOD 26-04 (June 2026)[27] Risk-based remediation timeframes US federal civilian agencies only

None is law in itself; obligations come from the contracts, regulators and directives that apply to your organisation. This page is not legal advice.

Categories first; products are examples checked against their documentation in October 2026, not recommendations.

Category Job in SecOps Examples Selection notes
Configuration assessment Measure conformance; express tailoring CIS-CAT Pro Assessor[14]; OpenSCAP with ComplianceAsCode content[31][32]; Ubuntu Security Guide[33]; Wazuh SCA, “mostly based on the CIS benchmarks”[34] Check the benchmark version implemented: ComplianceAsCode’s Ubuntu 24.04 CIS Level 1 profile follows CIS v1.0.0 (2024)[32]; CIS lists v2.0.0[12]
Vulnerability scanning Find missing patches See VulnerabilityOps Unauthenticated scans “will generally underreport vulnerabilities”[9]
ITSM with security modules Route, date and track ServiceNow Vulnerability Response (Yokohama release)[25] Routing is only as good as the CMDB
SIEM and SOAR Central search, alerting, playbooks Microsoft Sentinel[35]; Google SecOps[8]; Wazuh, “free and open source”[36] Often priced by data volume; platforms move (Sentinel leaves the Azure portal after 31 March 2027)[35]
Configuration management Apply baselines at scale Group Policy, configuration management tools, MDM Owned by SysOps and EndpointOps; SecOps supplies content

Lock-in. Tailoring files, routing rules and playbooks outlive tools; version them in portable forms (XCCDF tailoring files) with the benchmark version they target.

The SOC is taught on SOC Ops; this section covers what operations owes the SOC, because detections fail silently when operations changes things unannounced. CIS Control 8 sets the minimum[30]. IG1, “essential cyber hygiene”[37], needs a logging process, collected audit logs and enough storage (8.1–8.3); IG2 adds synchronised time (8.4), central collection, typically in a SIEM (8.9), retention “for a minimum of 90 days” (8.10) and weekly reviews (8.11).

The Atlas adds three duties: onboard new assets to logging and agents as part of the build; share the change calendar so detection engineers can tell planned from hostile change; and pre-agree which containment actions the SOC or a SOAR playbook may take without waking the owner (Annex D). Pipelines and ingest costs belong to SecDataOps.

NIST’s third patch-management principle is “Rely on automation”[9]; in SecOps it pays off in routing, due dates, rescans, review-date reminders and the scorecard. Guardrails: automatic remediation only for changes proven on a pilot ring of the same maintenance group; close tickets on evidence; and automation that changes production takes the same change route as a person.

Vendors market AI in SIEM and SOAR products; Google advertises Gemini for natural-language search and case summaries[8]. Modest SecOps uses, each checked by a person: summarising findings for owners, suggesting owners for unrouted items, drafting exception records. In the Atlas’s assessment, independent evidence on accuracy is thin (AIOps for Security).

Artefact 1: policy excerpt (the contract in plain words).

Example status: illustrative text, not executed.

SecOps operating agreement v1.0
Owners: Head of IT Operations, CISO. Approved by: COO.
1. Every asset in the CMDB has an owner group, a maintenance group and an
   exposure flag. Assets without them are found weekly and fixed within
   10 working days. Image-built assets also name their image owner.
2. Security selects and tailors hardening baselines; owner groups apply them.
   Changes are tested off production, then enforced on a pilot ring with a
   two-week cooling-off period; controls with a log-only mode run in it for
   one full monthly cycle first.
3. Security findings are tickets in the owner group's own queue, with a due
   date from the timeframe matrix (Annex A). Tickets close only on a clean
   rescan, or when security accepts the owner group's evidence that the
   finding is false or not applicable (decided within 5 working days; the
   due date stands). Closure reasons are recorded and sampled quarterly.
4. If a due date cannot be met, the owner group proposes a compensating
   control and the service owner accepts or rejects the residual risk in
   writing (Annex B form). Exceptions expire after at most 6 months and are
   reviewed quarterly.
5. Emergency findings (Annex A) use the emergency change route. The Head of
   IT Operations decides timing within the timeframe; going beyond it is an
   exception under clause 4. The CISO may escalate to the COO.
6. The CISO publishes one scorecard monthly (Annex C), co-signed by the Head
   of IT Operations, including the share of security changes that caused an
   incident.
7. The SOC and the monitoring provider may take the containment actions in
   Annex D at any hour. Any other action needs the service owner or the Head
   of IT Operations.

Artefact 2: timeframe matrix and routing (Annex A). Maximum calendar days from detection to fix or accepted mitigation. Urgency classes are designed on VulnerabilityOps; this annex records what each owner group has agreed and resourced.

Example status: YAML syntax-checked by the Atlas validator; schema is illustrative, not a product’s.

timeframe_days:          # urgency -> maintenance group -> days
  emergency:             # exploited in the wild, asset reachable by attackers
                         # (from an untrusted network or user population)
    internet-facing: 2
    datacentre: 3
    laptops: 3
    build-agents: 3
  high:
    internet-facing: 7
    datacentre: 14
    laptops: 14
    build-agents: 30
  routine:
    internet-facing: 30
    datacentre: 30
    laptops: 30
    build-agents: 60
routing:
  source_of_owner: cmdb.owner_group
  unowned_queue: secops-triage          # never drop; a person finds the owner
  verification: rescan_required
  reminders_days_before_due: [7, 2]

Artefact 3: an exception record (Annex B).

Example status: YAML syntax-checked by the Atlas validator; illustrative.

id: EX-014
asset_group: payroll-connector    # narrow scope: one group, not the estate
baseline_rule: tls-legacy-protocols-disabled
reason: Vendor client supports TLS 1.0 only; upgrade scheduled with release 9.2
impact_of_deviation: Downgrade attack possible on one internal connection
compensating_controls:
  - Firewall allows the connector from one source address only
  - Connection logs forwarded to the SIEM; alert on any other source
requested_by: payments-team
risk_acceptor: head-of-payroll          # business owner, not the requester
approved: 2026-10-01
review_by: 2027-03-31
exit_criteria: Vendor release 9.2 deployed and the rule re-enabled

Artefact 4: containment actions agreed in advance (Annex D). NIST lists among the usual elements of an incident response policy “which roles have the authority to confiscate, disconnect, or shut down technology assets”, and wants a provider’s responsibilities, including its “authority to act on behalf of the organization”, clearly defined in the contract[38]. SecOps records which actions operations accepts unasked, how the owner hears and how each is undone; SOC Ops and ResponseOps carry them out.

Example status: YAML syntax-checked by the Atlas validator; an Atlas proposal with example values, not a product’s schema.

# Asset tiers (as in SOC Ops): 1 crown jewels and admins, 2 servers, 3 devices
# Review after every use and at least yearly.
preauthorised:
  - action: isolate-device               # EDR network isolation
    who: [soc-analyst, mdr-provider, soar-playbook]
    scope: tier-3 laptops and desktops
    owner_told: service desk calls the user within 1 hour
    undo: release in the EDR console after triage
  - action: disable-account              # and revoke its sessions
    who: [soc-analyst, mdr-provider]
    scope: tier-3 user accounts; never admin, service or break-glass
    owner_told: line manager within 1 hour
    undo: re-enable after password reset and MFA re-registration
  - action: block-at-edge
    who: [soc-analyst]
    scope: external IP addresses and domains, except partner lists
    owner_told: network on-call, next business day
    undo: rule expires after 7 days unless renewed
  - action: isolate-server
    who: [ops-on-call]                   # on the SOC's request, any hour
    scope: tier-2 servers
    owner_told: page the service owner at once
    undo: rollback step in the service runbook
needs_owner_decision:                    # service owner or Head of IT Ops
  - any action on a tier-1 system or an admin account
  - shutting down a service that customers use
  - anything that destroys evidence      # ask ResponseOps first

Labs 1 and 3 were executed on 2026-10-17 (Ubuntu 20.04, Python 3.8.10); Lab 2 was not. All data is synthetic.

Lab 1 (beginner): exception register health check

Link to section “Lab 1 (beginner): exception register health check”

Objective. Find exceptions past review and records missing mandatory fields. Prerequisites. Python 3.8+. Cost and risk. None.

  1. Save the register as exceptions.csv:

Example status: executed on 2026-10-17 as input to the script below.

id,group,rule,reason,control,acceptor,approved,review_by,status
EX-001,payroll,tls-old-off,TLS 1.0 app,one IP,cfo,2026-04-01,2026-07-01,open
EX-002,lab,auditd-lock,kernel class,own VLAN,it-head,2026-08-15,2026-11-15,open
EX-003,scada,auto-updates,vendor cert,,plant-mgr,2026-02-10,2026-08-10,open
EX-004,build,usb-storage-off,,none,,2026-09-01,2026-12-01,open
EX-005,web,ssh-root-off,migration,bastion,cto,2026-01-05,2026-03-05,closed
  1. Save the script as exception_report.py:

Example status: executed on 2026-10-17 (Python 3.8.10).

#!/usr/bin/env python3
"""Exception register report: overdue reviews, incomplete records, age."""
import csv
import statistics
import sys
from datetime import date

REQUIRED = ("reason", "control", "acceptor", "review_by")


def parse(day):
    return date.fromisoformat(day) if day else None


def main(path, today):
    with open(path, newline="") as handle:
        rows = [r for r in csv.DictReader(handle) if r["status"] == "open"]
    if not rows:
        print("open exceptions: 0")
        return 0
    overdue, incomplete, ages = [], [], []
    for r in rows:
        ages.append((today - parse(r["approved"])).days)
        missing = [f for f in REQUIRED if not r[f] or r[f].lower() == "none"]
        if missing:
            incomplete.append((r["id"], missing))
        review = parse(r["review_by"])
        if review and review < today:
            overdue.append((r["id"], (today - review).days))
    print(f"open exceptions: {len(rows)}")
    share = 100 * len(overdue) / len(rows)
    print(f"past review date: {len(overdue)} ({share:.0f}%)")
    for ident, days in sorted(overdue, key=lambda x: -x[1]):
        print(f"  {ident}: review overdue by {days} days")
    print(f"incomplete records: {len(incomplete)}")
    for ident, fields in incomplete:
        print(f"  {ident}: missing {', '.join(fields)}")
    print(f"median age of open exceptions: {statistics.median(ages):.0f} days")
    return 1 if overdue or incomplete else 0


if __name__ == "__main__":
    as_of = date.today()
    if len(sys.argv) > 2:
        as_of = date.fromisoformat(sys.argv[2])
    sys.exit(main(sys.argv[1], as_of))
  1. Run it with a fixed date so the output is reproducible: python3 exception_report.py exceptions.csv 2026-10-16.

Expected output (exit code 1, because problems were found):

open exceptions: 4
past review date: 2 (50%)
  EX-001: review overdue by 107 days
  EX-003: review overdue by 67 days
incomplete records: 2
  EX-003: missing control
  EX-004: missing reason, control, acceptor
median age of open exceptions: 130 days

Validation. EX-001’s review date, 2026-07-01, is 107 days before 2026-10-16; an empty register prints 0 and exits 0. Troubleshooting. ValueError: Invalid isoformat string means a date is not YYYY-MM-DD; KeyError means a misspelt column header. Extension. Schedule it weekly and alert on exit code 1. Teardown. Delete the two files.

Lab 2 (intermediate): assess a server against CIS Level 1 and express exceptions as code

Link to section “Lab 2 (intermediate): assess a server against CIS Level 1 and express exceptions as code”

Objective. Run a conformance assessment (USG calls it an audit; it changes nothing) of an Ubuntu server against CIS Level 1 Server with Canonical’s Ubuntu Security Guide (USG), and record an approved exception as a tailoring file instead of an email. Prerequisites. A disposable Ubuntu LTS virtual machine that USG supports, an Ubuntu One account, sudo. Cost and risk. USG needs an Ubuntu Pro attachment, which registers the machine to your subscription (default: the Free Personal Token[39]; personal use is free “on up to 5 physical machines”[40]). A plain pro attach also enables ESM repositories and the Livepatch snap[39]; --no-auto-enable (per the client’s help) prevents that. Never run usg fix on a shared or production machine.

Example status: commands from Canonical’s USG documentation (checked 2026-10-16), plus the --no-auto-enable flag; not executed.

# 1. Install the Pro client, attach the machine and enable only USG
sudo apt update
sudo add-apt-repository universe     # step in Canonical's install guide
sudo apt install ubuntu-advantage-tools
sudo pro attach --no-auto-enable     # follow the link; pick your subscription
sudo pro enable usg
sudo apt install usg usg-benchmarks-1

# 2. Conformance assessment (read-only); HTML and XML reports in /var/lib/usg/
sudo usg audit cis_level1_server

# 3. Create a tailoring file, then edit it: set selected="false" on the rule
#    covered by an approved exception; add the exception id in an XML comment
sudo usg generate-tailoring cis_level1_server tailor.xml

# 4. Audit again with the tailoring file
sudo usg audit --tailoring-file tailor.xml

Sources: Canonical’s documentation[39][41][33][42]. Expected output. The first usg audit prints a compliance summary and writes the reports; in the second, the deselected rule no longer counts as a failure. Validation. The deselected rule matches a register entry; nothing else changed. Canonical notes that “Compliance with a benchmark isn’t an all-or-nothing task”[42]; a versioned tailoring file keeps register and scan in agreement. Troubleshooting. If pro enable usg fails, check attachment with pro status; if a profile name is rejected, check the profiles for your release. Teardown. sudo pro detach, then delete the virtual machine.

Lab 3 (advanced): route findings and measure the joint timeframes

Link to section “Lab 3 (advanced): route findings and measure the joint timeframes”

Objective. Route findings to owners with due dates, flag unowned assets, and compute NIST-style on-time remediation by asset importance and urgency[9]. Urgency is an input (see VulnerabilityOps). Prerequisites. Python 3.8+. Cost and risk. None.

  1. Create the inputs.

Example status: executed on 2026-10-17 as input to the script below.

owners.csv
asset,owner_group,maintenance_group,importance
web-01,web-platform,internet-facing,high
web-02,web-platform,internet-facing,high
db-01,data-platform,datacentre,high
app-07,payments-team,datacentre,moderate
lt-0042,endpoint-team,laptops,moderate
build-03,devex-team,build-agents,low

findings.csv
finding,asset,urgency,detected,closed
F-101,web-01,emergency,2026-09-01,2026-09-02
F-102,web-02,emergency,2026-09-01,2026-09-05
F-103,db-01,high,2026-08-20,2026-09-10
F-104,app-07,high,2026-08-20,2026-10-02
F-105,lt-0042,routine,2026-07-10,2026-08-01
F-106,build-03,routine,2026-07-10,
F-107,printer-9,high,2026-09-15,
F-108,db-01,routine,2026-06-01,2026-07-20

Save sla.json with the timeframe_days values from Artefact 2:

Example status: JSON syntax-checked by the Atlas validator; executed as input.

{
  "emergency": {
    "internet-facing": 2, "datacentre": 3, "laptops": 3, "build-agents": 3
  },
  "high": {
    "internet-facing": 7, "datacentre": 14, "laptops": 14, "build-agents": 30
  },
  "routine": {
    "internet-facing": 30, "datacentre": 30, "laptops": 30, "build-agents": 60
  }
}
  1. Save the script as route_and_measure.py:

Example status: executed on 2026-10-17 (Python 3.8.10).

#!/usr/bin/env python3
"""Route findings to owner queues with due dates, then measure the joint SLA."""
import csv
import json
import statistics
import sys
from collections import defaultdict
from datetime import date, timedelta


def load_csv(path):
    with open(path, newline="") as handle:
        return list(csv.DictReader(handle))


def main(findings_path, owners_path, sla_path, today):
    owners = {row["asset"]: row for row in load_csv(owners_path)}
    with open(sla_path) as handle:
        sla = json.load(handle)
    cells = defaultdict(list)  # (importance, urgency) -> [(days_taken, met)]
    print("finding  queue           due         state")
    for f in load_csv(findings_path):
        owner = owners.get(f["asset"])
        if owner is None:
            note = f"triage: find an owner for {f['asset']}"
            print(f"{f['finding']:8} {'UNOWNED':15} {'-':11} {note}")
            continue
        detected = date.fromisoformat(f["detected"])
        days_allowed = sla[f["urgency"]][owner["maintenance_group"]]
        due = detected + timedelta(days=days_allowed)
        closed = date.fromisoformat(f["closed"]) if f["closed"] else None
        state = "closed" if closed else ("OVERDUE" if today > due else "open")
        print(f"{f['finding']:8} {owner['owner_group']:15} {due}  {state}")
        key = (owner["importance"], f["urgency"])
        if closed:
            cells[key].append(((closed - detected).days, closed <= due))
        elif today > due:
            cells[key].append(((today - detected).days, False))
    print("\nimportance/urgency   n  by-deadline  mean-days  median-days")
    for (importance, urgency), items in sorted(cells.items()):
        days = [d for d, _ in items]
        share = 100 * sum(1 for _, ok in items if ok) / len(items)
        mean, median = statistics.mean(days), statistics.median(days)
        print(f"{importance:9}/{urgency:9} {len(items):2}  {share:10.0f}%"
              f"  {mean:9.1f}  {median:11.1f}")


if __name__ == "__main__":
    main(sys.argv[1], sys.argv[2], sys.argv[3], date.fromisoformat(sys.argv[4]))
  1. Run python3 route_and_measure.py findings.csv owners.csv sla.json 2026-10-16.

Expected output:

finding  queue           due         state
F-101    web-platform    2026-09-03  closed
F-102    web-platform    2026-09-03  closed
F-103    data-platform   2026-09-03  closed
F-104    payments-team   2026-09-03  closed
F-105    endpoint-team   2026-08-09  closed
F-106    devex-team      2026-09-08  OVERDUE
F-107    UNOWNED         -           triage: find an owner for printer-9
F-108    data-platform   2026-07-01  closed

importance/urgency   n  by-deadline  mean-days  median-days
high     /emergency  2          50%        2.5          2.5
high     /high       1           0%       21.0         21.0
high     /routine    1           0%       49.0         49.0
low      /routine    1           0%       98.0         98.0
moderate /high       1           0%       43.0         43.0
moderate /routine    1         100%       22.0         22.0

Validation. F-102 (due 3 September) closed on 5 September: 1 of 2 on time in high/emergency. Open, overdue F-106 counts as missed at its current age of 98 days; dropping it would flatter the backlog. F-107 never reaches a queue, the Equifax failure in miniature. Troubleshooting. KeyError: 'laptops' means the matrix lacks a maintenance group used in owners.csv. Extension. Add a 90th percentile per cell. Teardown. Delete the files.

1. Equifax, 2017: no owner, no detection (documented). According to GAO, after a March 2017 US-CERT notice about an Apache Struts flaw, Equifax “circulated the notice among their systems administrators. However, the recipient list for the notice was out-of-date”. A scan a week later “did not detect the vulnerability on the online dispute portal”; a certificate that “had expired about 10 months before the breach” blinded the traffic-inspection tool; the attack “lasted for about 76 days before it was discovered”[43]. The House majority staff report adds that the IT and security organisations “were siloed”, kept separate, incomplete inventories, and let “over 300 security certificates” expire[44]. What a contract changes: routing by CMDB owner, a weekly unowned-asset list, scanner coverage checked against the inventory, certificate expiry monitored by operations. Success measure: no finding without an owner for more than a week. Caveat: a majority staff report; GAO relies on Equifax officials’ account.

2. A security agent’s content update, July 2024 (documented). A CrowdStrike content update for the Windows sensor, live from 04:09 to 05:27 UTC on 19 July 2024, crashed Windows hosts on sensor 7.11 or later that received it. Customers chose sensor versions (N, N-1, N-2) through update policies; the Rapid Response Content involved was delivered separately. One remediation: “Provide customers additional control over the deployment of Rapid Response Content updates”[45]. Success measure: every update channel of every security agent has a named owner and rings (ReleaseOps), or a register entry if it cannot be staged.

3. A small company with outsourced monitoring (illustrative). Eighty staff, two IT administrators, an MDR provider. SecOps is one page: the escalation path, who may isolate a laptop at night (Annex D), a monthly patch window with a 72-hour emergency rule, a spreadsheet register. Success measure: provider actions stay within Annex D; its findings reach owner queues. Pitfall: assuming the provider fixes things (see the FAQ).

4. A plant with operational technology (illustrative). Control systems are patched only in shutdowns. NIST’s example group “Legacy OT assets” relies on isolation and physical security[9]: give OT its own maintenance groups and plans, agreed with plant engineering. Success measure: each unpatched OT asset has a register entry with verified isolation. Pitfall: holding control systems to IT timeframes. For OT security, start with NIST SP 800-82 Rev. 3[46] (Rev. 4 in public draft since September 2026) and IoTOps.

NIST warns that “Overly simplistic metrics”, such as an estate-wide percentage patched, “are not actionable”, and proposes on-time percentage, mean and median time per cell of asset importance × vulnerability importance[9]. The scorecard below (Annex C in Artefact 1) does that and adds measures of the contract (formulas are the Atlas’s).

KPI Formula Pitfall Cadence
On-time remediation Items closed by due date ÷ items due, per importance × urgency cell Open overdue items must count as missed Monthly
Time to remediate Median and 90th percentile, detection to verified fix; open overdue items at current age “MTTR” here means remediate, not restore (see IncidentOps) Monthly
Unowned findings Findings on assets without an owner group ÷ open findings Zero can mean the scanner misses unowned assets Weekly
Baseline conformance Passing applicable rules ÷ applicable rules, per group and baseline version Tailored-away rules are not “passing”; report exceptions separately Monthly
Exception health Exceptions past review date ÷ open exceptions; median age A falling count can mean exceptions granted outside the register Quarterly
Telemetry coverage Inventory assets with healthy agents and required logs in 24 hours ÷ inventory assets Take the denominator from the inventory, not the tool Weekly
Security-change disruption Incidents caused by security changes ÷ security changes Without it, speed targets breed distrust Monthly

Worked calculation (illustrative numbers). In September 240 findings fell due and 198 closed on time: 82.5%. The aggregate hides the problem: internet-facing/high was 38 of 40 (95%) but datacentre/high 45 of 60 (75%), because the data-platform team had no change window that month. Unowned findings: 18 of 600 (3%). Exceptions past review: 6 of 35 (17%). Telemetry coverage: 1,540 of 1,600 (96.25%); the missing 60 were a newly acquired subsidiary’s servers, which no scanner saw either. Disruption: 3 incidents from 120 security changes (2.5%), all from one baseline pushed estate-wide without a pilot ring. The review gives data-platform a standing window and onboards the subsidiary.

Targets. Measure for two or three months, then set targets per cell. Unowned findings, coverage and overdue exceptions lead; on-time remediation and incidents lag. Never reward counts of closed tickets.

  • Privileged tooling: see trust boundaries; access reviews are AccessOps.
  • Evidence: auditors ask for the register, change records and rescans; framework mapping is ComplianceOps.
  • Logs carry risk: “those logs may be a valuable target for an attacker”[19]; keep secrets and unnecessary personal data out (PrivacyOps).
  • Remediation is planned work: 300 findings a month at an hour each is close to two full-time administrators. Unreserved, that capacity loses to projects every time.
  • SIEM ingestion is often priced by data volume; Sentinel’s analytics tier bills by GB or by daily commitment tiers[47].
  • Exceptions carry costs (compensating controls, isolation, extended support); record them so the business owner sees them at renewal.

Check that the controls work: scanner and agent coverage against the inventory, weekly; tool health, including certificate expiry (the Equifax failure); closure quality, sampling ten closed tickets a quarter; register integrity, checking sampled compensating controls exist; and a yearly tabletop of the emergency path and Annex D.

Symptom Likely cause Diagnosis Remediation Prevention
Findings age untouched Unwatched queue or no owner Unowned-findings report Re-route; name champions CMDB routing; weekly review
A baseline change breaks an application Enforced estate-wide, no pilot ring or log-only phase Change calendar; denial logs Narrow allow-list or roll back (runbook below) Pilot rings; log-only mode where offered
Exceptions grow every quarter No expiry, no cost shown Register age distribution Re-approve with cost and exit criteria Maximum lifetime
Operations ignores security tickets Noise; no say in timeframes Share closed as “not applicable” Tune sources; agree timeframes Dispute route with evidence (Artefact 1; practice on VulnerabilityOps); joint scorecard
Detections fire on planned work SOC not told of changes Alerts versus change calendar Share the calendar Change records feed detections
Security tool silently stops Expired certificate or credential Heartbeat and coverage reports Restore; backfill scans Operations-owned health checks

Worked runbook: hardening enforcement blocks a legacy system

Link to section “Worked runbook: hardening enforcement blocks a legacy system”

Use this when a newly enforced hardening change breaks a business system. The example is Netlogon[28]; the steps fit legacy TLS, SMB signing or NTLM restrictions too.

Figure 5. Runbook: a hardening change blocks a system
NoYesYes, low riskNo, or rollback reopens riskSystem fails afterenforcementDeclare incident, link thechangeDenial events match thesystem?Not this change: normalincident pathCan enforcement be rolledback?Roll back the rule for onestageAdd system to the allow-listgroupRegister entry: owner, control,review dateVerify service and denial logsFix or retire the system;shrink allow-list
Diagram source (Mermaid)
flowchart TB
  A["System fails after enforcement"] --> B["Declare incident, link the change"]
  B --> C{"Denial events match the system?"}
  C -- "No" --> D["Not this change: normal incident path"]
  C -- "Yes" --> E{"Can enforcement be rolled back?"}
  E -- "Yes, low risk" --> F["Roll back the rule for one stage"]
  E -- "No, or rollback reopens risk" --> G["Add system to the allow-list group"]
  F --> H["Register entry: owner, control, review date"]
  G --> H
  H --> I["Verify service and denial logs"]
  I --> J["Fix or retire the system; shrink allow-list"]
  classDef core fill:#e8f3f2,stroke:#16756f,color:#122029
  classDef decision fill:#fdf3e3,stroke:#c9800f,color:#122029
  classDef risk fill:#fbeceb,stroke:#b4332b,color:#122029
  class A risk
  class B,F,G,H,I,J core
  class C,E decision
  class D risk

Text equivalent: Declare an incident and link the change. If denial events do not match the failing system, follow the normal incident path. If they do, roll back one stage when low-risk, else allow-list the system; then record a register entry, verify, and fix or retire the system to shrink the allow-list.

  1. Declare and link. Open an incident (IncidentOps) and link the latest security change. On-call operations leads; security joins.
  2. Confirm the cause. Look for denial events naming the failing system (for Netlogon, Microsoft documents 5827/5828 for denied and 5830/5831 for policy-allowed connections[28]):

Example status: PowerShell, not executed for this page (no Windows domain available); event IDs from Microsoft’s documentation.

# On each domain controller, last 24 hours:
# denied (5827, 5828) and policy-allowed (5830, 5831) Netlogon connections
$filter = @{
  LogName   = 'System'
  Id        = 5827, 5828, 5830, 5831
  StartTime = (Get-Date).AddDays(-1)
}
Get-WinEvent -FilterHashtable $filter |
  Select-Object TimeCreated, Id, Message | Format-List
  1. Choose the lever. Roll back only if that does not reopen the risk for the whole estate and the vendor allows it; after Netlogon’s enforcement phase it was not possible[28]. Otherwise allow-list the one system:

Example status: PowerShell, not executed; group name is a placeholder; the cmdlet pattern follows Microsoft’s article.

# Add only the failing machine account to the allow-list group in the policy
Add-ADGroupMember -Identity 'Netlogon-Allow-Vulnerable-Exception' `
  -Members 'PAYROLL-APP01$'
  1. Record a register entry the same day: system, reason, compensating control (for example, network access to the domain controllers only), risk owner, review date. Allowed accounts stay at risk[28].
  2. Verify. The service works; denials stop for that system; allowed events appear for it and nothing else.
  3. Close the loop. Ticket the owner to update or retire the system; ask why the log-only phase or pilot ring missed it (usually a monthly or quarterly job).
  • Reports over the wall: 4,000 findings in a spreadsheet, nothing owned, dated or verified. Route tickets with due dates instead.
  • Patching what will be replaced. A fix made inside a running container or image-built host vanishes at the next redeploy.
  • “The SOC will catch it.” Detection depends on telemetry that operations keeps healthy.
  • Security tools outside change control (the July 2024 case).
  • Myth: a “SecOps” platform delivers SecOps. A SIEM or SOAR supports the SOC; it defines no owners, timeframes or exceptions.

Use a formal contract when security and IT operations are separate teams; findings miss their dates; outages are blamed on security changes; auditors ask for a configuration standard and remediation evidence; or a vendor enforcement date looms.

Keep it light, or do something else first, when:

  • One small team does both jobs. A one-page list of baselines, a monthly patch window and a register are enough.
  • There is no usable asset inventory. Routing and metrics will be fiction; build ownership first with ITOps.
  • The estate is almost all SaaS. Most of the work is identity and SaaS configuration; see IdentityOps and CloudSecOps.
  • The real problem is detection. If incidents go unnoticed, start with SOC Ops and DetectionOps.

Hidden cost: maintaining routing rules, chasing review dates and publishing the scorecard; the Atlas estimates a part-time role.

Figure 6. Choosing a SecOps operating model
NoYesNoYesNoYesYesNoSeparate security and opsteams?One team: light checklist andregisterInventory with owners?Build ownership first (ITOps)Over about 500 assets orseveral owner groups?Central SecOps lead plus oneshared queueOps teams own theirplatforms end to end?Embedded champions pluspaved roadsCentral posture team plusrouting rules
Diagram source (Mermaid)
flowchart TB
  A{"Separate security and ops teams?"} -- "No" --> B["One team: light checklist and register"]
  A -- "Yes" --> C{"Inventory with owners?"}
  C -- "No" --> D["Build ownership first (ITOps)"]
  C -- "Yes" --> E{"Over about 500 assets or several owner groups?"}
  E -- "No" --> F["Central SecOps lead plus one shared queue"]
  E -- "Yes" --> G{"Ops teams own their platforms end to end?"}
  G -- "Yes" --> H["Embedded champions plus paved roads"]
  G -- "No" --> I["Central posture team plus routing rules"]
  classDef core fill:#e8f3f2,stroke:#16756f,color:#122029
  classDef decision fill:#fdf3e3,stroke:#c9800f,color:#122029
  classDef neutral fill:#f1f4f6,stroke:#5b7a87,color:#122029
  class A,C,E,G decision
  class B,D neutral
  class F,H,I core

Text equivalent: One combined team: a light checklist and register. Separate teams without an owned inventory: build ownership first (ITOps). Under about 500 assets and few owner groups: a central SecOps lead and one shared queue. Larger estates: embedded champions and paved roads where operations teams own their platforms end to end, else a central posture team with routing rules.

The 500-asset threshold is the Atlas’s rule of thumb, not a standard. Weighted comparison of the models (scores 1–3, higher is better for the criterion; weights are assumptions to change):

Criterion (weight) Central lead + shared queue Central posture team Embedded champions + paved roads Merged team
Cost to start (3) 3 2 2 1
Scales to many owner groups (3) 1 2 3 2
Independence of security judgement (2) 3 3 2 1
Speed of routine fixes (2) 2 2 3 3
Weighted total 22 22 25 17

The central models tie; estate size breaks it. The merged team scores low on independence: when one manager owns uptime and exposure, the business stops seeing the trade-off (a judgement, not a measurement).

This is the Atlas’s model; no official SecOps maturity model exists.

Level Observable behaviour Exit criteria
0 Ad hoc Findings by email or spreadsheet; verbal exceptions A named SecOps lead; owner fields in the inventory
1 Defined Written agreement, chosen baselines, a register 90% of findings routed to an owner automatically
2 Managed Shared queue, timeframes per group, weekly review Scorecard published three months running
3 Measured Per-cell metrics and the disruption rate drive decisions Under 10% of exceptions past review; every enforcement went through a pilot ring or log-only phase
4 Adaptive Paved roads replace tickets; vendor dates tracked; drills run Sustained; reviewed yearly
Window Actions Owners Milestone and metric
Days 1–30 Sign the agreement; add owner and maintenance-group fields to the CMDB; pick baselines; start the register Both heads; CMDB owner Quick wins: unowned-asset list; baseline catalogue v1
Days 31–60 Route scanner findings to owner queues; agree timeframes; first conformance scan, then a pilot ring on one group; weekly reviews SecOps lead; champions 80% of new findings auto-routed
Days 61–90 First scorecard and exception review; enforce the first baseline in stages; sign Annex D; tabletop the emergency path Both heads; business owners Scorecard v1; one baseline enforced without incident
  • A signed one-page agreement: who sets baselines, applies them, accepts risk and may contain
  • A named baseline, profile and version per asset class
  • Owner, maintenance-group and exposure fields in the CMDB; a weekly unowned-asset report
  • Findings arrive as owner-queue tickets with due dates
  • Register entries have mandatory fields and review dates
  • Tested outside production on the same image
  • Log-only mode (if the control has one) or a pilot ring ran through a business cycle, including month-end jobs
  • Every client that would be blocked is fixed, retired or allow-listed with a register entry
  • Change raised; rollback, backup or allow-list lever rehearsed
  • SOC and service desk told the date
  • Unowned findings routed
  • Items due in 14 days have a change booked
  • Overdue items have either a new plan or an exception request
  • Security tooling coverage and heartbeat checked
  • Quarterly: expired exceptions decided; compensating controls spot-checked

One-page agreement: Artefact 1, plus signatures and annexes.

Exception request form.

Example status: template, not executed.

Exception request                                    Id: EX-____
Asset or group (narrowest scope):
Baseline rule or finding:
Why the fix cannot be done by the due date:
Impact of the deviation (what an attacker could do):
Compensating controls (each verifiable):
Cost of the exception per year (controls, support, isolation):
Requested by (team):               Risk accepted by (business owner):
Review date (max 6 months):        Exit criteria:
Security advice:  [ ] support  [ ] support with conditions  [ ] advise against

Architecture decision record: choosing a baseline.

Example status: template, not executed.

ADR-007    Baseline for Ubuntu servers
Status:    accepted, 2026-10-16
Context:   400 servers, mixed workloads; auditors ask for a configuration
           standard.
Options:   (a) CIS Level 1 Server  (b) CIS Level 2 Server
           (c) vendor defaults plus our own list
Decision:  (a), tailored; Level 2 only for the payment zone after a 60-day
           pilot ring.
Because:   Level 1 is designed for limited performance impact;
           Level 2 may affect operations.
Deviations: listed in tailor.xml, each tagged with an exception id.
Review:    yearly, or when CIS publishes a new major version.
SecOps (this page) VulnerabilityOps SOC Ops ITOps
Central question Who fixes what, by when, and who may say not now? What must be fixed first? Is something bad happening now? Is this change safe to make?
Main artefacts Baselines, register, timeframe matrix, containment list, scorecard Urgency classes, SLA policy Alerts, cases, playbooks Change records, CMDB
Fails when Nobody owns the queue or the exceptions Arrivals outrun fixes Telemetry is missing or noisy Change control blocks urgent fixes

Do we need to merge security and operations? No. Some vendors define SecOps that way[6], but a written contract gets the outcome without a reorganisation, provided a business owner, not either team alone, accepts risk.

How strict should our baseline be? Start with CIS Level 1 or a vendor baseline, tailored and tested, and apply stricter profiles where the risk justifies the operational cost[14].

Our timeframes are always missed. Shorten them? Not without capacity. Check the per-cell data: usually one group lacks a change window or people.

What if a vendor forces an enforcement date? Make it an operations-owned milestone, collect the vendor’s would-be-denial events at once, and use the allow-list only as a short bridge[28].

Is an MDR provider enough? It covers monitoring, triage and, within the authority you grant (Annex D), containment; remediation, hardening and risk acceptance remain yours.

  • Risk-based remediation clocks. BOD 26-04 derives federal timeframes from exposure, KEV status, exploit automation and technical impact[27]; elsewhere it is a model to borrow, not an obligation.
  • Continuous configuration monitoring. SP 800-70 Rev. 5 wants checklists “incorporated into continuous monitoring”[11], so drift between scheduled scans is routed like any other finding.
  • Exposure management is, in the Atlas’s assessment, an analyst and vendor category, not a standard. Microsoft says its exposure graph aligns with “Gartner’s Continuous Threat Exposure Management (CTEM) approach”; its product merges asset discovery across endpoints, cloud and the external attack surface, marks critical assets and draws attack paths[48]. Use such tools to reconcile the CMDB and to give VulnerabilityOps attack-path context; judge them by what reaches owner queues.
Stage Do this
Prerequisites ITOps basics; VulnerabilityOps basics
1-day primer CIS Benchmarks FAQ, NIST SP 800-40 Rev. 4 section 3, the RACI; Lab 1
1-week practice Lab 2 on a throwaway VM; a tailoring file for two real exceptions; a draft timeframe matrix
30 days Route one scanner into owner queues; four weekly reviews; a first scorecard
Specialisation SysOps, EndpointOps, CloudSecOps, SOC Ops
Portfolio An agreement, a versioned tailoring file and a three-month scorecard for a lab estate
Area Remember
Decide Who sets baselines (security), applies them (operations), accepts risk (business owner), may contain at night (Annex D)
Practise One queue keyed on owners (image owners for rebuilt assets); log-only or pilot ring, allow-list, then enforce
Measure On-time remediation per cell, unowned findings, exception health, coverage, disruption
Watch out Exceptions forever, big-bang hardening, one estate-wide number
Next Sign the agreement, publish the unowned-asset list, date every exception

A judgement call: patch the exploited gateway tonight?

Link to section “A judgement call: patch the exploited gateway tonight?”

You should now be able to explain the three meanings of SecOps, design a RACI and timeframe matrix, operate a register and the log-or-pilot-then-enforce pattern, and evaluate remediation with per-cell metrics.

1. A colleague says “SecOps owns our SIEM”. Which meaning is that, and where does the Atlas teach it?

The SOC meaning (meaning 2), taught on SOC Ops; this page covers only what operations owes the SOC.

2. Who should accept the risk of keeping TLS 1.0 on a payroll connector, and why not security?

The payroll business owner, who bears the consequence. Security advises and records; operations proposes the compensating control.

3. 92% of findings were closed on time last quarter. What two questions do you ask?

Which cells (asset importance × urgency) make up the 8%, and were open overdue items counted? NIST notes that estate-wide percentages are not actionable.

4. Name two Equifax failures that a SecOps contract addresses directly.

Notices sent to an out-of-date recipient list instead of routed by asset owner; separate, incomplete inventories in IT and security.

5. A CIS audit of production shows 40 failing rules. Has it shown that enforcing them is safe?

No. A conformance assessment changes nothing, so it cannot show what enforcement would break. Test off production, then use a log-only mode if the control has one, otherwise a pilot ring with a cooling-off period, rollback ready.

6. Web servers are rebuilt weekly from a golden image. A scan flags a vulnerable library on 40 of them. Who gets the ticket, and when does it close?

The image owner, not the operators of the 40 instances. It closes when the rebuilt image scans clean and no instance of the old image still runs.

“SecOps” names three things: a way of working, a team and a product. The first meaning addresses a real, well-documented problem: security and operations guard against different failures, and the fixes for one are changes that risk the other.

The answer is neither a new team nor a new tool but a contract written before the emergency: governed baselines, one queue keyed on owners, resourced timeframes, signed exceptions that expire, pre-agreed containment and shared numbers. Equifax shows the cost of its absence; Netlogon shows a staged version working. The test: when the next exploited flaw lands on a Friday afternoon, does everyone already know who decides?

Changelog

  • 2026-10-16 — r0: first version; ambiguous, three documented meanings; Labs 1 and 3 executed, Lab 2 and runbook not executed.
  • 2026-10-17 — r1 (reviews/secops-r1-response.md): conformance scans, log-only modes and pilot rings separated; VulnerabilityOps, PatchOps and RiskOps split; Netlogon, BOD 26-04, CrowdStrike and CIS facts corrected; routing widened.
  • 2026-10-17 — r2 (reviews/secops-r2-response.md): containment authority (Annex D, RACI row); rebuilt, image-based estates; BOD 26-04 triage rows; exposure management; code rewrapped for the desktop column; Labs 1 and 3 re-run.
  • 2026-10-17, post-score polish: dispute route, Annex C, use-case success measures, reading routes, two source caveats, Figures 1–2 (reviews/secops-polish.md).

  1. Glossary search for “SecOps” — NIST CSRC, no results. Checked 2026-10-16. ↩︎

  2. What is SecOps? — PagerDuty, 2024-07-29 (updated 2025-03-27). Checked 2026-10-16. ↩︎

  3. What is SecOps? — Elastic, undated. Checked 2026-10-16. ↩︎

  4. Security teams, roles, and functions — Microsoft Cloud Adoption Framework, updated 2025-12-04. Checked 2026-10-16. ↩︎ ↩︎

  5. What is SecOps? Everything you need to know — Sandra Gittlen, TechTarget, 2020-12-22. Checked 2026-10-16. ↩︎

  6. What is SecOps? — Bart Lenaerts-Bergmans, CrowdStrike, 2024-05-23. Checked 2026-10-16. ↩︎ ↩︎ ↩︎

  7. Chronicle Security Operations has been rebranded to Google Security Operations — Google Cloud Community (Google staff post), 2024-04-25. Checked 2026-10-16. ↩︎

  8. Google Security Operations — Google Cloud, product page. Checked 2026-10-16. ↩︎ ↩︎ ↩︎

  9. SP 800-40 Rev. 4, Guide to Enterprise Patch Management Planning — Souppaya and Scarfone, NIST, April 2022. Checked 2026-10-16. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  10. BMC and Forbes Insights survey press release — BMC, 2016-01-12. Checked 2026-10-16. ↩︎

  11. SP 800-70 Rev. 5, National Checklist Program for IT Products — Quinn and Heiserman, NIST, May 2026. Checked 2026-10-16. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  12. CIS Benchmarks List — CIS, live page. Checked 2026-10-16. ↩︎ ↩︎ ↩︎ ↩︎

  13. SP 800-128, Guide for Security-Focused Configuration Management — Johnson et al., NIST, 2011, updated 2019. Checked 2026-10-16. ↩︎ ↩︎ ↩︎ ↩︎

  14. CIS Benchmarks FAQ — CIS. Checked 2026-10-16. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  15. Test your ASR rules deployment — Microsoft Learn, updated 2026-07-02. Checked 2026-10-17. ↩︎ ↩︎

  16. Getting started with SELinux, RHEL 9 — Red Hat Documentation. Checked 2026-10-17. ↩︎

  17. Known Exploited Vulnerabilities Catalog — CISA, live catalogue. Checked 2026-10-17. ↩︎

  18. SIEM tool — NIST CSRC Glossary, from SP 800-128. Checked 2026-10-16. ↩︎

  19. Building Secure and Reliable Systems, chapter 1 — Adkins et al., Google and O’Reilly, 2020. Checked 2026-10-16. ↩︎ ↩︎

  20. #StopRansomware Guide — CISA, MS-ISAC, NSA and FBI, September 2023. Checked 2026-10-17. ↩︎

  21. The NIST Cybersecurity Framework 2.0 — NIST CSWP 29, 2024-02-26. Checked 2026-10-16. ↩︎ ↩︎

  22. Building Secure and Reliable Systems, chapter 20 — Adkins et al., 2020. Checked 2026-10-16. ↩︎ ↩︎

  23. Control 4: Secure Configuration — CIS Controls Assessment Specification v8.1. Checked 2026-10-16. ↩︎ ↩︎

  24. Control 7: Continuous Vulnerability Management — CIS Controls Assessment Specification v8.1. Checked 2026-10-16. ↩︎ ↩︎

  25. Vulnerability Response assignment rules overview — ServiceNow Docs, Yokohama release, updated 2026-04-07. Checked 2026-10-17. ↩︎ ↩︎

  26. SP 800-190, Application Container Security Guide — Souppaya, Morello and Scarfone, NIST, September 2017. Checked 2026-10-17. ↩︎

  27. BOD 26-04: Prioritizing Security Updates Based on Risk — CISA, 2026-06-10. Checked 2026-10-16. ↩︎ ↩︎ ↩︎

  28. Managing Netlogon secure channel changes for CVE-2020-1472 — Microsoft Support, 2020. Checked 2026-10-17. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  29. Microsoft Security Compliance Toolkit — Microsoft Learn, updated 2025-08-18. Checked 2026-10-16. ↩︎

  30. Control 8: Audit Log Management — CIS Controls Assessment Specification v8.1. Checked 2026-10-16. ↩︎ ↩︎

  31. OpenSCAP User Manual — OpenSCAP project. Checked 2026-10-16. ↩︎

  32. ComplianceAsCode Ubuntu 24.04 CIS Level 1 Server profile — ComplianceAsCode project. Checked 2026-10-16. ↩︎ ↩︎

  33. Auditing an Ubuntu system for CIS Benchmarks compliance — Canonical. Checked 2026-10-16. ↩︎ ↩︎

  34. Security Configuration Assessment — Wazuh. Checked 2026-10-16. ↩︎

  35. What is Microsoft Sentinel SIEM? — Microsoft Learn, updated 2026-01-28. Checked 2026-10-16. ↩︎ ↩︎

  36. Getting started with Wazuh — Wazuh. Checked 2026-10-16. ↩︎

  37. CIS Critical Security Controls Implementation Groups — CIS. Checked 2026-10-17. ↩︎

  38. SP 800-61 Rev. 3, Incident Response Recommendations and Considerations for Cybersecurity Risk Management — Nelson et al., NIST, April 2025. Checked 2026-10-17. ↩︎

  39. Install Ubuntu Security Guide — Canonical. Checked 2026-10-16. ↩︎ ↩︎ ↩︎

  40. Ubuntu Pro — Canonical, live product page. Checked 2026-10-17. ↩︎

  41. CIS Benchmarks and profiles — Canonical, updated 2026-01-22. Checked 2026-10-16. ↩︎

  42. Customizing CIS Benchmarks profiles — Canonical, updated 2026-01-22. Checked 2026-10-16. ↩︎ ↩︎

  43. GAO-18-559, Actions Taken by Equifax and Federal Agencies in Response to the 2017 Breach — U.S. GAO, 2018-08-30. Checked 2026-10-16. ↩︎

  44. The Equifax Data Breach, majority staff report — U.S. House Committee on Oversight and Government Reform, December 2018. Checked 2026-10-16. ↩︎

  45. Falcon Content Update Remediation and Guidance Hub — CrowdStrike, updated 2024-08-06. Checked 2026-10-16. ↩︎

  46. SP 800-82 Rev. 3, Guide to Operational Technology Security — NIST, September 2023. Checked 2026-10-17. ↩︎

  47. Microsoft Sentinel pricing and billing — Microsoft Learn, updated 2026-04-01. Checked 2026-10-16. ↩︎

  48. What is Microsoft Security Exposure Management? — Microsoft Learn, updated 2025-07-30. Checked 2026-10-17. ↩︎

Related Ops

SOC Ops

SOC Ops is running a security operations centre as a dependable service: turning alerts into timely, recorded decisions through tiers, playbooks, SIEM and SOAR, shift handover, metrics and sourcing choices that people can sustain around the clock.

VulnerabilityOps

VulnerabilityOps (usually "VulnOps") runs vulnerability management as a continuous flow: decide what must be fixed by when from exploitation evidence and asset exposure, hand dated work to owners, verify every fix, and keep remediation capacity ahead of arrivals.

PatchOps

PatchOps is an informal name for patch management run as an operation: getting vendor fixes onto every asset through rings, maintenance windows, reboots and rollback, then proving they took effect. The established practice is enterprise patch management.

ITOps

ITOps (IT operations) is the function that keeps an organisation's IT services running: it handles requests and incidents, removes the causes of repeat failures, controls changes and keeps an accurate map of the estate, often through ITIL-style ITSM practices.

DetectionOps

DetectionOps is a rare label for detection engineering run like software delivery: detections are written as code from threat-informed requirements, tested, peer-reviewed, deployed through a pipeline, measured in production, tuned and retired.

ResponseOps

In this Atlas, ResponseOps is security incident response run as an operational capability: contain an active adversary, preserve evidence, evict and recover cleanly, and meet notification duties. The label itself is not a standard term.

DevSecOps

DevSecOps is the practice of building security into the software delivery pipeline and into the teams that run it, so that every change is checked, traceable and safe to ship without a separate security phase that stalls delivery.

AIOps for Security

AIOps for Security is the use of statistics, machine learning and language models inside the detect-triage-respond loop of a security operation, evaluated and governed against an adversary: base rates, missed detections, prompt injection and limits on autonomy.

Practise and get certified

From xOps School

Practise SecOps and get certified

The free SecOps track on xOps School has study notes, a 25-question practice quiz with explanations, and a verifiable certificate when you score 70% or more. Sign in with Google to start.

For teams

Instructor-led training

Live batches for your team, with completion certificates and reports for L&D/HR.

Source: master.md (the editorial source of this page) · built 2026-10-17 · diagrams rendered with @mermaid-js/mermaid-cli 11.17.0 (mermaid 11.17.2)