Skip to content

Guardian (nozomi-networks) — Vendor Schema

Source: schemas/vendors/nozomi-networks/nozomi-guardian-alerts.yaml

Identity

Field Value
vendor nozomi-networks
product Guardian
data_source nozomi_networks_generic_alert_raw
category Network

Raw Schema

Fields available in the raw ingest dataset.

Field Type Array Status JSON Subfields
id string declared
type_id string declared
type_name string declared
name string declared
description string declared
threat_name string declared
risk string declared
severity float declared
status string declared
ack boolean declared
is_security boolean declared
is_incident boolean declared
trigger_id string declared
trigger_type string declared
ti_source string declared
appliance_host string declared
capture_device string declared
bpf_filter string declared
time float declared
created_time float declared
closed_time float declared
record_created_at float declared
record_updated_at float declared
ip_src string declared
ip_dst string declared
mac_src string declared
mac_dst string declared
port_src float declared
port_dst float declared
protocol string declared
transport_protocol string declared
id_src string declared
id_dst string declared
label_src string declared
label_dst string declared
zone_src string declared
zone_dst string declared
src_roles string declared
dst_roles string declared
properties json declared
parents json declared

Modeling Rule — SOC Nozomi Guardian Modeling Rule

Field Value
modeling_rule_id SOC_NozomiGuardian_ModelingRule
modeling_rule_name SOC Nozomi Guardian Modeling Rule
directory_name SOCNozomiGuardianModelingRules
fromversion 6.10.0

Field Mappings

What each XDM field is, where it sources from, what issue field it surfaces on, and why the mapping is shaped the way it is.

XDM Path Expression Sources Issue Field Description
xdm.event.id to_string(id) id originalalertid
xdm.event.type type_name type_name
xdm.alert.original_alert_id to_string(id) id
xdm.alert.name name name originalalertname
xdm.alert.description description description alert_description
xdm.alert.severity to_string(risk) risk severity Raw Nozomi risk (0-10). The correlation rule maps it to the XSIAM ladder.
xdm.alert.category type_name type_name
xdm.alert.subcategory threat_name threat_name
xdm.source.ipv4 ip_src ip_src action_remote_ip
xdm.target.ipv4 ip_dst ip_dst action_local_ip
xdm.target.port to_integer(port_dst) port_dst action_remote_port

Contributes (Artifacts.*)

Fields populated for downstream lifecycle Artifacts schemas:

  • Network.RemoteIP
  • Network.LocalIP
  • Network.RemotePort

Correlation Rules

SOC Nozomi Guardian - Security Alerts

Field Value
global_rule_id SOC Nozomi Guardian - Security Alerts
subtype passthrough
fromversion 6.10.0

Reshapes Nozomi Networks Guardian security alerts (nozomi_networks_generic_alert_raw) into properly-formed XSIAM alerts for the SOC Framework Network category. Maps the OT 5-tuple to the canonical network pivots, the Nozomi risk score to XSIAM severity, MITRE Enterprise (ICS as fallback) from the properties payload, and injects DS:Nozomi Networks/Guardian and DOM:Security so Foundation Product Classification routes the alert.

Tags: SOCFramework, Passthrough, Network, OT, NozomiNetworks

Schema Constants

Field Value
rule_id 0
alert_category User Defined
alert_domain DOMAIN_SECURITY
action ALERTS
execution_mode SCHEDULED
mapping_strategy CUSTOM
user_defined_category nz_category
user_defined_severity severity
is_enabled ✓
drilldown_query_timeframe ALERT
severity User Defined

Suppression

Field Value
enabled ✓
duration 1 hours
fields originalalertid

originalalertid sources from Nozomi's per-alert id. Hourly suppression absorbs re-polls of an alert still open before it is acknowledged.

Alert Fields

Issue-field assignments emitted by the correlation rule. The Description column captures intent — when present, this is what downstream playbooks rely on the field meaning.

Issue Field Source Bucket Description
vendor vendor computed
product product computed
originalalertid originalalertid computed
originalalertname originalalertname computed
originalalertsource originalalertsource computed
externallink externallink computed
alert_description alert_description computed
severity severity computed
mitretacticid mitretacticid mitre
mitretacticname mitretacticname mitre
mitretechniqueid mitretechniqueid mitre
mitretechniquename mitretechniquename mitre
action_local_ip action_local_ip computed
action_remote_ip action_remote_ip computed
action_remote_port action_remote_port computed
action_local_port action_local_port computed
dns_query_name dns_query_name computed
localip action_local_ip computed
remoteip action_remote_ip computed
nozomi_type_id nozomi_type_id computed
nozomi_type_name nozomi_type_name computed
nozomi_threat_name nozomi_threat_name computed
nozomi_risk nozomi_risk computed
nozomi_is_incident nozomi_is_incident computed
nozomi_trigger_type nozomi_trigger_type computed
nozomi_ti_source nozomi_ti_source computed
nozomi_src_label nozomi_src_label computed
nozomi_dst_label nozomi_dst_label computed
nozomi_src_mac nozomi_src_mac computed
nozomi_dst_mac nozomi_dst_mac computed
nozomi_src_zone nozomi_src_zone computed
nozomi_dst_zone nozomi_dst_zone computed
nozomi_protocol nozomi_protocol computed
nozomi_appliance nozomi_appliance computed
nozomi_indicator nozomi_indicator computed
nozomi_malicious_ip nozomi_malicious_ip computed
nozomi_solution nozomi_solution computed
nozomi_rule_name nozomi_rule_name computed
nozomi_ics_technique_id nozomi_ics_technique_id computed
tags alert_tags computed
alert_name alert_name computed

Pre-Alter XQL

// Vendor / product (required for SOCProductCategoryMap routing)
| alter vendor_name = "Nozomi Networks", product_name = "Guardian"

// Scope: security alerts only (operational / asset-change alerts are
// is_security = false on Guardian and belong to OT ops, not the SOC).
| filter is_security = true

// Numeric helpers
| alter
        nz_risk      = to_float(risk),
        nz_port_src  = to_integer(port_src),
        nz_port_dst  = to_integer(port_dst)

// Risk (0-10) → XSIAM severity ladder
| alter severity = if(
        nz_risk >= 9, "Critical",
        nz_risk >= 7, "High",
        nz_risk >= 4, "Medium",
        "Low"
    )

// Category from Nozomi's alert type
| alter nz_category = coalesce(type_name, "Network")

// ---- properties payload (JSON string) ----
| alter
        mitre_ent_id     = json_extract_scalar(properties, "$.mitre_attack_enterprise.techniques[0].id"),
        mitre_ent_name   = json_extract_scalar(properties, "$.mitre_attack_enterprise.techniques[0].name"),
        mitre_ent_tactic = json_extract_scalar(properties, "$.mitre_attack_enterprise.techniques[0].tactic"),
        mitre_ics_id     = json_extract_scalar(properties, "$.mitre_attack_for_ics.techniques[0].id"),
        mitre_ics_name   = json_extract_scalar(properties, "$.mitre_attack_for_ics.techniques[0].name"),
        mitre_ics_tactic = json_extract_scalar(properties, "$.mitre_attack_for_ics.techniques[0].tactic"),
        nz_indicator     = json_extract_scalar(properties, "$.malicious_indicator"),
        nz_mal_domain    = json_extract_scalar(properties, "$.details_malicious_domain.value"),
        nz_mal_ip        = json_extract_scalar(properties, "$.details_malicious_ip.value"),
        nz_cause         = json_extract_scalar(properties, "$.cause"),
        nz_solution      = json_extract_scalar(properties, "$.solution"),
        nz_rule_name     = json_extract_scalar(properties, "$.rule_name")

// MITRE: Enterprise first, ICS as fallback. Tactic name → TA id via the
// same normalised if-chain the Defender contracts use (+ ICS tactics).
| alter
        mitre_technique_id   = coalesce(mitre_ent_id, mitre_ics_id),
        mitre_technique_name = coalesce(mitre_ent_name, mitre_ics_name),
        mitre_tactic_name    = coalesce(mitre_ent_tactic, mitre_ics_tactic)
| alter tac_norm = replace(replace(replace(replace(lowercase(coalesce(mitre_tactic_name, "")), " ", ""), "-", ""), "_", ""), ".", "")
| alter mitre_tactic_id = if(
        tac_norm contains "reconnaissance",       "TA0043",
        tac_norm contains "resourcedevelopment",  "TA0042",
        tac_norm contains "initialaccess",        "TA0001",
        tac_norm contains "execution",            "TA0002",
        tac_norm contains "persistence",          "TA0003",
        tac_norm contains "privilegeescalation",  "TA0004",
        tac_norm contains "defenseevasion",       "TA0005",
        tac_norm contains "credentialaccess",     "TA0006",
        tac_norm contains "discovery",            "TA0007",
        tac_norm contains "lateralmovement",      "TA0008",
        tac_norm contains "collection",           "TA0009",
        tac_norm contains "commandandcontrol",    "TA0011",
        tac_norm contains "exfiltration",         "TA0010",
        tac_norm contains "impact",               "TA0040",
        tac_norm contains "inhibitresponse",      "TA0107",
        tac_norm contains "impairprocesscontrol", "TA0106",
        tac_norm contains "evasion",              "TA0103",
        null)

// Domain pivot: malicious domain indicator when the alert carries one
| alter dns_name = coalesce(nz_mal_domain, if(nz_indicator ~= "^[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$", nz_indicator, null))

// Title: [Network] {src} → {dst} - {type}: {threat|name}
| alter alert_name = concat(
        "[Network] ",
        coalesce(ip_src, label_src, "Unknown"),
        " → ",
        coalesce(ip_dst, label_dst, "Unknown"),
        " - ",
        coalesce(type_name, "Security Alert"),
        ": ",
        coalesce(threat_name, name, "Anomaly")
    )

| alter alert_description = concat(
        coalesce(description, name, "Nozomi Guardian security alert"),
        " | Source: ",      coalesce(ip_src, "Unknown"), " (", coalesce(label_src, zone_src, "-"), ")",
        " | Destination: ", coalesce(ip_dst, "Unknown"), " (", coalesce(label_dst, zone_dst, "-"), ")",
        " | Port: ",        coalesce(to_string(nz_port_dst), "-"),
        " | Protocol: ",    coalesce(protocol, transport_protocol, "-"),
        " | Risk: ",        coalesce(risk, "-"),
        " | Trigger: ",     coalesce(trigger_type, "-"),
        " | TI: ",          coalesce(ti_source, "-"),
        " | Cause: ",       coalesce(nz_cause, "")
    )

// ============================================================
// CANONICAL CORE NORMALIZATION
// Endpoint-shaped columns stay null for network alerts.
// Direction convention matches Check Point NDR: the source node
// (Nozomi's attacker side) → action_remote_ip, destination → local.
// ============================================================
| alter
        vendor              = vendor_name,
        product             = product_name,
        originalalertid     = id,
        originalalertname   = coalesce(name, type_name),
        originalalertsource = "Nozomi Networks - Guardian",
        externallink        = null,
        severity            = severity,
        mitretacticid       = mitre_tactic_id,
        mitretacticname     = mitre_tactic_name,
        mitretechniqueid    = mitre_technique_id,
        mitretechniquename  = mitre_technique_name,
        action_local_ip     = ip_dst,
        action_remote_ip    = ip_src,
        action_remote_port  = nz_port_dst,
        action_local_port   = nz_port_src,
        dns_query_name      = dns_name

// Nozomi-specific extensions
| alter
        nozomi_type_id          = type_id,
        nozomi_type_name        = type_name,
        nozomi_threat_name      = threat_name,
        nozomi_risk             = risk,
        nozomi_is_incident      = is_incident,
        nozomi_trigger_type     = trigger_type,
        nozomi_ti_source        = ti_source,
        nozomi_src_label        = label_src,
        nozomi_dst_label        = label_dst,
        nozomi_src_mac          = mac_src,
        nozomi_dst_mac          = mac_dst,
        nozomi_src_zone         = zone_src,
        nozomi_dst_zone         = zone_dst,
        nozomi_protocol         = coalesce(protocol, transport_protocol),
        nozomi_appliance        = appliance_host,
        nozomi_indicator        = nz_indicator,
        nozomi_malicious_ip     = nz_mal_ip,
        nozomi_solution         = nz_solution,
        nozomi_rule_name        = nz_rule_name,
        nozomi_ics_technique_id = mitre_ics_id

// Tag injection — load-bearing for routing (DS:Nozomi Networks/Guardian →
// ds_nozomi_networks_guardian in SOCProductCategoryMap_V3 → Network).
| alter alert_tags = arraycreate("DS:Nozomi Networks/Guardian", "DOM:Security")