Skip to content

SOAR Playbook Template

Use this template to document SOAR automation playbooks. Per Nexus SecOps-204, all playbooks MUST be documented, peer-reviewed, tested in non-production, and have rollback procedures before deployment.


Playbook Metadata

Field Value
Playbook ID PB-[XXX]
Title [Action or scenario name]
Version 1.0
Status ☐ Draft ☐ Testing ☐ Approved ☐ Retired
Trigger [SIEM alert / manual / scheduled]
Owner [Team]
Last Tested [Date]
Approved By [Name / Role]
Rollback Procedure [Reference or description]
Nexus SecOps Control Nexus SecOps-097, Nexus SecOps-099

Purpose

One sentence: [What does this playbook do and why?]

Trigger condition: [Describe exactly what condition triggers this playbook. Be specific enough that no false triggers occur.]

Impact level: - ☐ Low — Enrichment only; no blocking or disruptive actions - ☐ Medium — Notification; creates tickets; no blocking - ☐ High — Blocks access; isolates resources; requires human gate


Pre-Conditions

This playbook requires: - [ ] [Tool/API/integration name]: Connected and authenticated - [ ] [Permissions required]: [Service account name/role] - [ ] [Data required in alert]: [List required fields that must be present for playbook to run]


Playbook Logic

Stage 1: Input Validation

IF alert.severity NOT IN ["high", "critical"]:
    STOP — severity below threshold
IF alert.host IS NULL:
    STOP — required field missing; create ticket for manual triage
IF alert.user IS NULL:
    LOG warning — user context unavailable, proceeding with host context only

Stage 2: Automated Enrichment

Action Tool/API Output Error Handling
Lookup host in CMDB [Tool] Asset criticality, owner If not found: tag as "unregistered"
Lookup user in AD [Tool] Role, manager, groups If not found: continue with partial context
Check IP reputation [TIP/VirusTotal] Malicious score, category If API unavailable: skip, flag for manual
Check file hash [TIP/VirusTotal] Known malware family If API unavailable: skip

Stage 3: Risk Scoring

# Pseudo-code for risk scoring logic
base_score = alert.severity_score  # Critical=10, High=7, Medium=4, Low=1

if asset.criticality == "critical":
    base_score += 3
if user.is_admin:
    base_score += 2
if ip_reputation.malicious:
    base_score += 4
if hash_reputation.known_malware:
    base_score += 5
if alert.correlated_alerts_24h > 2:
    base_score += 2

total_risk = min(base_score, 20)

if total_risk >= 15:
    route_to = "Tier 2 immediate"
elif total_risk >= 10:
    route_to = "Tier 2 standard"
else:
    route_to = "Tier 1 queue"

Stage 4: Human Decision Gate

Nexus SecOps-099 requires human approval for all high-impact actions. This gate CANNOT be bypassed in production.

Gate trigger: If any of the following: - Planned action is account disable, host isolation, or network block - Total risk score ≥ 15 - Asset criticality is "critical"

Gate behavior: 1. Playbook PAUSES 2. Human analyst receives notification with: enrichment summary, risk score, proposed action, approve/deny buttons 3. Timeout: 15 minutes (after which: escalate, do NOT auto-approve) 4. Analyst approves → proceed to Stage 5 5. Analyst denies → log denial, close with reason, no action taken

Gate notification format:

[PLAYBOOK APPROVAL REQUIRED]
Playbook: {PLAYBOOK_NAME} (PB-XXX)
Alert: {ALERT_NAME} on {HOST} / {USER}
Risk Score: {SCORE}/20
Proposed Action: {ACTION}
Enrichment: {BRIEF_SUMMARY}

[APPROVE] [DENY] [ESCALATE]
Decision required within 15 minutes.

Stage 5: Automated Actions (post-approval)

Document each action in sequence:

Action 1: [Action Name] - Tool/API: [Name] - API endpoint: [If applicable] - Parameters: [What values are passed] - Success condition: [How do we know it worked?] - Failure handling: [If this step fails, do X] - Audit log entry: [What is recorded]

Action 2: [Action Name] [Repeat for each action]

Stage 6: Ticket Creation / Case Update

  • [ ] Create incident ticket (if not already exists)
  • [ ] Record: trigger, enrichment results, risk score, analyst decision, actions taken, timestamps
  • [ ] Assign ticket to: [Tier / Queue]
  • [ ] Set SLA timer: [Based on severity]

Stage 7: Notification

Recipient Condition Channel Template
Tier 1 analyst All cases Case queue Auto-assignment
Tier 2 analyst Risk ≥ 10 SIEM + Slack [Template ref]
Manager Risk ≥ 15 Email + Slack [Template ref]
CISO Critical asset + high risk Phone + Email [Template ref]

Rollback Procedure

If this playbook produces an incorrect action (false positive containment), reverse with:

Action Taken Reversal Action Who Time Estimate
Account disabled Re-enable account in AD Tier 2 analyst 2 minutes
Host isolated Remove isolation via EDR Tier 2 analyst 1 minute
IP blocked at firewall Remove firewall rule Network engineer 10 minutes

Rollback trigger: Analyst can trigger rollback from the ticket by clicking [Rollback] button (available for 4 hours post-action).


Testing Requirements

Per Nexus SecOps-100, this playbook MUST be tested before deployment:

Test Case Input Expected Output Result
True positive alert [Synthetic TP event] Enrichment + Gate fires ☐ Pass ☐ Fail
False positive alert [Known FP event] Low risk score; T1 queue ☐ Pass ☐ Fail
Missing required field Alert with null host Graceful stop; manual ticket ☐ Pass ☐ Fail
API unavailable [Mock API timeout] Skip step; continue; flag ☐ Pass ☐ Fail
Gate timeout No analyst response Escalate; no auto-action ☐ Pass ☐ Fail
Gate deny Analyst denies action No action; reason logged ☐ Pass ☐ Fail

Metrics

Track these metrics for continuous improvement:

Metric Target Measurement Method
Playbook execution time ≤ 2 minutes (pre-gate) SOAR platform timing
Gate approval rate N/A (track for tuning) Gate decision log
False positive rate (unnecessary gates) < 20% Manual review of denials
API error rate < 5% SOAR error log
Rollback rate < 5% Rollback audit log

Change History

Version Date Change Author
1.0 [Date] Initial creation [Author]

Playbook template v1.0 | Nexus SecOps-097, Nexus SecOps-099 compliant | Peer review required before approval