Skip to content

CMDB Guide — Cirius Group SecOps Platform

The SecOps CMDB (Configuration Management Database) is the authoritative asset registry for all managed infrastructure. It drives phi_adjacent incident escalation, EDR coverage audits, asset risk scoring, and quarterly accuracy audits. This guide defines naming standards, classification criteria, and operational procedures.


Asset Naming Standard

Rule: Asset names in the CMDB must match the bare hostname exactly — uppercase, no FQDN, no domain suffix.

CloudCorrectWrong
Azure VM BIZWRKAZP01BIZWRKAZP01bizwrkazp01.ciriusgroup.com
AWS EC2 ACTDIRAWP01ACTDIRAWP01actdirawp01 / ip-10-10-0-5
DDE VM BC-HOST-01-VMBC-HOST-01-VMbc-host-01-vm.ciriusdde.com

Terraform alignment: The system field should match the Terraform resource's name_prefix or computer_name. This is what the Cortex coverage audit and CMDB accuracy audit use for normalization (_normalize() in all agent code: uppercase, strip FQDN suffix, strip long hex suffixes).


phi_adjacent Classification

phi_adjacent = true means the asset processes, stores, or transmits Protected Health Information (PHI), or has direct authenticated access to systems that do.

PHI exposure visibility on incidents is driven by this flag. Incorrect classification causes missed PHI exposure alerts on incidents.

Always True

CategoryExamplesWhy
PROD billing and clinical serversBIZWRKAZP01–11, BIZARCAZP01, BIZSQLAZT01, BIZFTPAZP01Process or store Medicare/billing PHI directly
PROD AD domain controllersACTDIRAZP01, ACTDIRAZP02, CGIADSAZP01Authenticate all PROD users including PHI system users
PROD RDGW and VPN concentratorsCGIRDPAZP01, CGIRDPAZT01Entry point to PROD PHI systems
PROD FIM and monitoring VMsNNTFIMAZP01Monitor PHI system filesystems
DDE AVD session hostsBC-HOST-01-VM through BC-HOST-07-VMMedicare billing users work here — PHI in session
DDE AD domain controllersACTDIRAZC01, ACTDIRAZC02Authenticate DDE users who access PHI
DDE Entra ConnectENTRACAZC01Syncs credentials for PHI system auth
AWS DR replicas of PROD PHI serversACTDIRAWP01, ACTDIRAWP02, CGIRDPAWP01, BIZFTPAWP01DR copies of phi_adjacent=True PROD machines

Always False

CategoryExamplesWhy
Syslog VMsSYSLOGAZP, SYSLOGDDE, SYSLOGAWP, SYSLOG-VMLog forwarding only — no PHI data
Arctic Wolf VLC appliancesARCTICWOLFVLC, ARCTICWOLFVLCDDEAppliance-class MDR sensors — no PHI storage
Network IP objects (PIP, EIP, NAT)PIP-NAT-AGENTS-PROD, CIRIUSSVCSPUBLICIPIP address records, not servers
Dashboard environmentAll DASHBOARD assetsCustomer dashboard infra — no Cirius PHI
HOME (user workstations)All HOME assetsEnd-user devices — PHI access is transient/not stored
AWS network infraCIRIUS-AWS-FW, CIRIUS-AWS-PANFirewall/Panorama infra — not DR replicas
Cloud PC / dev toolsCLOUDPC-UBUNTU-VSCODE, KOBE-CLOUD-PCNo PHI access

Case-by-Case

CategoryCriteria
PROD firewalls (CIRIUS-SVCS-FW)True — routes traffic to/from PHI systems
PROD Panorama (CIRIUS-SVCS-PANORAMA)True — manages firewalls that route PHI traffic
DDE firewalls (CIRIUS-DDE-FW)False — routes DDE traffic but no stored PHI
DECOMM assetsLeave unchanged at decommission time — they were phi_adjacent when live
New PROD VMsTrue by default unless purely infrastructure (network/monitoring tools)

system_type Enum

ValueWhen to useExamples
SERVERGeneral-purpose Windows or Linux VMBIZWRKAZP01, ACTDIRAZP01, BC-HOST-01-VM
FIREWALLPalo Alto or network firewall VMCIRIUS-SVCS-FW, CIRIUS-DDE-FW, CIRIUS-AWS-FW
DATABASEDedicated database serverBIZSQLAZT01
SAASSaaS service registered as an asset(future use)
NETWORKPure network object: load balancer IP, NAT IP, EIPPIP-NAT-AGENTS-PROD, PANORAMA-EIP
STORAGEStorage appliance or volume(future use)
NoneUnknown or not yet classifiedSet system_type on any asset showing None

criticality Assignment

LevelCriteriaExamples
CRITICALOutage = PHI breach or infrastructure down for all users. Loss = irreversible data loss.ACTDIRAZP01, BIZSQLAZT01, CGIRDPAZP01
HIGHOutage = significant PHI exposure risk or major degraded capability. Affects many users.BIZWRKAZP01–11, BC-HOST-01–07, VEEAMAZP01
MEDIUMOutage = degraded capability for subset of users. PHI not directly accessible.NNTFIMAZP01, SYSLOGAZP, CIRIUS-SVCS-FW
LOWOutage = minimal business impact. No PHI adjacency.Dashboard VMs, dev tools, DR non-critical

Heuristic: If an asset going offline would trigger a P1 incident, it is CRITICAL. If it would trigger a P2, HIGH. P3 = MEDIUM. Lower = LOW.


Upsert Script Inventory

These scripts write to the CMDB. Each uses POST /api/assets (upsert semantics — creates if new, updates all fields if existing).

ScriptFields WrittenFrequencyAuth
agents/inventory/cmdb_agent.pysystem, environment, system_type, phi_adjacent (partial)Every orchestrator run (4hr)INGEST_API_KEY
findings/cmdb_audit_agent.pyReads only — posts findings, does not write assetsQuarterly (Jan/Apr/Jul/Oct)INGEST_API_KEY
findings/cortex_coverage_agent.pyReads only — posts findings, does not write assetsDailyINGEST_API_KEY
findings/cmdb_analyst_agent.pyReads only — posts findings/incidents for stale assetsDailyINGEST_API_KEY
Manual CMDB edit (UI)Any fieldOn-demandAzure AD SSO
New VM provisioning (deploy.yml)Full record at provision timePer-deployINGEST_API_KEY

Field precedence: UI edits (/assets/{id}/update) always win — they set values explicitly. The upsert endpoint overwrites environment/type/criticality, so the provisioning step should set correct values from day one.


Asset Risk Score

Risk score (0–100) is calculated nightly by findings_orchestrator.py via POST /api/assets/recalculate-all.

Formula:

start = 100
for each open finding linked to this asset:
    CRITICAL finding: -20
    HIGH finding:     -10
    MEDIUM finding:    -5
    LOW finding:       -2

for each open incident linked to this asset:
    CRITICAL incident: -25
    HIGH incident:     -15
    MEDIUM incident:    -8

score = max(0, start - deductions)

Staleness: If risk_score_updated is more than 7 days old, the CMDB detail page shows an amber "stale" badge. This means the findings pipeline has not run successfully in over a week — investigate job-findings-agents-prod.

Interpretation:

  • 90–100: Clean asset, no significant open findings
  • 70–89: Minor findings open
  • 50–69: Multiple HIGH findings or one CRITICAL
  • <50: Critical security posture issue — escalate

Quarterly CMDB Accuracy Audit

cmdb_audit_agent.py runs in January, April, July, and October.

What it checks:

  1. Cloud VMs not in CMDB → HIGH finding (CMDB_AUDIT source). Any VM in Azure Resource Graph or AWS EC2 that has no CMDB record is a security blind spot.
  2. CMDB assets not in cloud → MEDIUM finding. Any non-DECOMM CMDB asset with no matching cloud VM is a ghost record — update to DECOMM or investigate.

Acceptance criteria: Discrepancy rate < 5% (near-perfect coverage). After each quarterly audit, action all HIGH findings within 7 days.

When a new VM is provisioned: Add the CMDB record in the same PR as the Terraform resource. See the VM Provisioning Process section in CLAUDE.md.


Adding a New Asset Manually

Use the CMDB tab in the SecOps platform (secops.bedrockcybersecurity.org/assets/) → Add Asset button, or via API:

bash
curl -s -X POST https://soc.bedrockcybersecurity.org/api/assets \
  -H "X-API-Key: $INGEST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "system":       "NEWVMAZP01",
    "environment":  "PROD",
    "system_type":  "SERVER",
    "criticality":  "HIGH",
    "phi_adjacent": true,
    "owner":        "roryg@ciriusgroup.com",
    "notes":        "New billing workstation — added 2026-04-08"
  }'

Required fields: system. All others are optional but should be set at provision time.

Internal use only — Cirius Group