Guardian, the Vulnetix SIEM

Your AWS and Cloudflare logs land in the same tables as every Vulnetix decision

Pix Sandbox egress, firewall and runtime sensor decisions are already rows in Guardian. Add your VPC flow logs, Route 53 queries, CloudTrail and Cloudflare logs beside them, and let Sigma rules read everything about every two minutes. A fired trigger starts a Software Factory investigation on a Pix Sandbox; after a person approves, the fix is written as a draft pull request when the resource is in code.

Get a Demo How Software Factory runs the fix

Every Vulnetix decision is already a row

Before you send a log line, Guardian holds the decisions the rest of Vulnetix Resolve made about your estate.

Pix Sandbox

net_events

Every sandbox's egress decisions, allowed or refused, with source pix.

Pix Sandbox

Package Firewall

product_events

Each install-time decision the firewall made on a package.

Package Firewall

AI Firewall

product_events

Each decision on a model call or a held capability.

AI Firewall

Runtime sensor

dns_events, net_events

The DNS guard's and the egress proxy's decisions on your workloads, sent with vulnetix-sensor --forward siem.

Runtime sensors

Vulnetix API

http_events

The access log of your organisation's calls to the Vulnetix API.

Vulnetix API

Internal producers (the sandboxes, the firewalls, the sensor and the Vulnetix API) are not counted against the pack.

Your AWS and Cloudflare logs land beside them

One CloudFormation stack and a set of Logpush jobs, both launched from the console. Guardian holds no AWS credentials for ingest and forgets your Cloudflare token once the jobs exist. Start Guardian under Log sources

AWS

VPC flow logs

All VPCs or the ones you list, at 60 s aggregation, through Firehose.

Route 53 Resolver query logs

Every query your VPCs resolve, with the answers.

CloudTrail management events

Management write events, through an EventBridge rule, while a trail logs them. Read-only calls do not reach EventBridge.

Within seconds

Firehose buffers 0 s and 1 MB, so a record leaves your account within seconds.

Failed batches kept 14 days

In a bucket in your account.

Cloudflare

Logpush jobs with an HTTP destination

Created from the integrations page with a token Guardian checks and then forgets, or create them yourself with the destination string the page shows.

Zone datasets

firewall_events, dns_logs and http_requests (sampled on request).

Account datasets

gateway_dns, gateway_network, dns_firewall_logs, network_analytics_logs, audit_logs_v2 and workers_trace_events.

Cloudflare's own limits

Cloudflare allows four Logpush jobs per zone, and which datasets your account can push depends on its Cloudflare plan.

Seven tables

Every row carries the tenant, the event time, the ingest time, a minted event id, the source, the host and the raw fields, and IPv4 columns carry integer companions so a CIDR match is a BETWEEN.

Search in one editor, then let rules run about every two minutes

The search language and Sigma share one editor and translate both ways, so the search you refine becomes the rule that watches for it.

dns_events
| where qname endswith ('.duckdns.org', '.no-ip.org') and src_ip in 10.0.0.0/8
| stats count() as hits, dc(src_ip) as sources by qname, host
| where hits >= 5
| sort -hits

Show SQL prints the statement Guardian runs, with your tenant's scope already in it.

The search language

Stages

table | where | stats | timechart | sort | limit, plus join ioc_indicators to keep rows on the indicator list.

Predicates

contains, startswith, in (list), and IPv4 CIDR with in 10.0.0.0/8.

Saved searches

500 per organisation, and a saved search becomes a rule, a trigger or a scheduled send.

Window and retention

A search reads at most 30 days, and retention is 31 days on every pack.

Where rules come from

Sigma rules you write

In the editor, in the search language or in Sigma.

Uploaded files

Your existing Sigma YAML, as it is.

SigmaHQ

For the mapped logsources, imported weekly.

Vulnetix Countermeasures

By reference, recompiled when the body changes and keeping your suppressions.

Indicator rules

ioc-dns and ioc-net join dns_events or net_events against ioc_indicators.

Each rule is a scheduled query over your tenant's rows, run about every two minutes and deduplicated per row and per group, so the next sweep repeats nothing. The levers are a threshold (count, window, group by), suppressions written into the rule, a quiet period, a per-run cap and the interval.

Where an alert goes

To any messaging connection, or by email: Slack, Microsoft Teams, Google Chat, Discord, Jira, GitHub Issues, Signed webhooks, Email.

A scheduled send delivers a saved search as a table and chart, a link to the search and, on email, a CSV, hourly to monthly, skipped when empty or sent as an all-clear.

A fired trigger starts a Software Factory workflow

The Guardian templates ship in Software Factory: investigate on a Pix Sandbox with read-only cloud access, ask a person, write the fix.

A trigger's levers

A trigger fires into a Software Factory workflow (a FactorySourceEvent with source siem), a messaging connection, or email.

17 templates

AWS

Cloudflare

Vulnetix and any source

The investigator writes what happened, the evidence and a verdict of benign, needs_change or incident. A person approves before belai:guardian-remediator writes anything; a benign fire still notifies and files the card.

Agents only read, and a person approves every change

The parts of Guardian that touch your accounts only read, and the part that writes waits for you.

Reads only

Investigators read through an AWS read-only role you deploy as a second, optional stack, or a Cloudflare API token you chose to keep in the vault.

Nothing applied by an agent

An agent proposes the change; a person approves it before anything reaches a cloud account.

Every claim cites its source

The documentation page the agent fetched or the command it ran, and anything unverified is written as "not verified".

Your tenant from the token

The tenant comes from the verified identity or the ingest token, never from input.

A scope the query cannot reach

Every query is wrapped in a per-tenant CTE the query text cannot reach.

Checked every hour

An hourly self-test asks for one tenant's row as a different tenant, on production data, and mails a platform alert on any cross-tenant row.

No credentials for ingest

Guardian holds no AWS credentials for ingest and forgets your Cloudflare token once the jobs exist (you choose whether the vault keeps it for investigations).

People approve in Software Factory, where the run trace and the evidence are the record.

Three ingest packs, bought where the logs are connected

Guardian is an add-on to the Business or Enterprise plan, sold as a monthly ingest pack. Rows from Vulnetix's own producers do not count against it.

Guardian 5

$599 a month, 5 GB a day

50 GiB query budget a day, 50 rules, 25 triggers, 25 scheduled sends

Guardian 25

$2,490 a month, 25 GB a day

250 GiB query budget a day, 200 rules, 100 triggers, 100 scheduled sends

Guardian 100

$8,900 a month, 100 GB a day

1 TiB query budget a day, 500 rules, 250 triggers, 250 scheduled sends

Enterprise is by quote. You are told at 80% and 100% of the day's cap, and past 150% ingest is refused with a 429 so the sender keeps the batch.

Against vendor list prices in October 2026, Sumo Logic Cloud SIEM charges 40 Flex credits per GB ingested (about $6 per GB at $0.15 a credit) and Datadog Cloud SIEM $5 per GB analyzed plus $0.10 per GB of log ingest. Guardian 5 works out to about $4.00 per GB and Guardian 100 to about $2.97, over a 30-day month at the full cap.

Questions teams ask before they connect a log

Do I need to send logs before Guardian shows anything?

No. For an organisation with Guardian, Pix Sandbox egress, Package Firewall and AI Firewall decisions, the runtime sensor's DNS guard and egress proxy, and the Vulnetix API access log are already rows, and they are not counted against the ingest pack.

How long does a record take to become an alert?

Firehose buffers 0 s and 1 MB, so a record leaves your account within seconds. Rules run about every two minutes and read up to two minutes behind now, so a record is read a few minutes after it lands, and a row alerts once.

What does Guardian need in my AWS or Cloudflare account?

For AWS, one CloudFormation stack from the launch link: Firehose streams with your ingest token as the access key, flow logs, Resolver query logging and an EventBridge rule for CloudTrail management write events. Guardian holds no AWS credentials. For Cloudflare, Logpush jobs the integrations page creates with a token it checks and then forgets, or jobs you create with the destination string the page shows. The read-only investigation role is a second, optional stack.

Which Cloudflare datasets can I send?

Per zone: firewall_events, dns_logs and http_requests (sampled on request). Per account: gateway_dns, gateway_network, dns_firewall_logs, network_analytics_logs, audit_logs_v2 and workers_trace_events. Cloudflare allows four jobs per zone, and which datasets an account can push depends on its Cloudflare plan, and the integrations page names each dataset Cloudflare refused for your account.

Can I keep using my own Sigma rules?

Yes. Upload your files, pick from the SigmaHQ import for the mapped logsources, refreshed weekly, or enable a Vulnetix Countermeasure by reference. The editor shows the same detection in the search language and in Sigma, and a suppression is written into the rule, so a Countermeasure keeps your suppressions when its body changes.

Can an agent change my cloud account?

No. The investigators read through an AWS read-only role you deploy or a Cloudflare API token you chose to keep in the vault, and nothing is applied to a cloud account by an agent. After a person approves, the remediator writes the change as a draft pull request when the resource is managed in a connected repository; otherwise the exact commands, with their blast radius, go in the ticket.

What happens when I send more than my pack allows?

You are told at 80% and at 100% of the day's cap. Past 150%, ingest is refused with a 429 until the day ends, so the sender keeps the batch: Firehose parks it in the error bucket in your account for 14 days, and Logpush retries and then marks the job failing in your Cloudflare dashboard. Nothing is dropped without you knowing.

Start with the rows Vulnetix already holds for you

A demo opens Guardian on the sandbox egress and firewall rows your organisation already has, connects one AWS region or one Cloudflare zone, and runs a trigger's dry run over the last 24 hours. Nothing is applied to your account by an agent.

Get a Demo Pricing