SECOPS

Cloudflare WAF Spike Clustering with Candidate Rule Draft

On a schedule, pulls recently blocked Cloudflare requests, clusters them by shared attributes to find the dominant attack signature.

CategorySecOps
Enginesim
Difficultyintermediate
Triggerschedule
Steps6
Setup~15 min

How it runs

The automated pipeline, trigger to output.

  • TriggerEvery 15 minutes
  • ActionFetch blocked requests from CloudflareCloudflareCloudflare
  • LogicCluster events by shared fingerprint, rank by volume
  • ActionDraft firewall expression + rationaleOpenAI
  • OutputPost candidate rule to Slack for approvalSlack
  • ActionDeploy approved rule in log-only modeCloudflareCloudflare

What it does

It turns a noisy spike of blocked traffic into one reviewable decision. Every interval it reads Cloudflare's blocked-request log, groups events by shared fingerprint (path, user agent, ASN, JA3), and proposes a single firewall expression that would cover the dominant cluster — then waits for a human to approve.

When to use it

When your WAF logs are too high-volume to triage by hand and you want a steady drip of pre-written, evidence-backed rule candidates instead of writing every expression from scratch during an incident.

How it works

  1. 1A schedule fires every 15 minutes.
  2. 2Pull the blocked-request sample from Cloudflare for the window.
  3. 3Logic clusters events by shared attributes and ranks clusters by volume and source spread.
  4. 4If the top cluster clears a volume threshold, an LLM step drafts a Cloudflare firewall expression plus a plain-English rationale.
  5. 5Post the draft rule, match count, and false-positive risk to Slack with Approve / Discard buttons.
  6. 6On approval, deploy the rule to Cloudflare in log-only mode for safe observation.

Set it up

What you configure once, before turning it on.

  1. 1
    Connect CloudflareWorkers, Pages, R2, KV — the edge stack.
  2. 2
    Connect OpenAIModels, embeddings, files.
  3. 3
    Connect SlackChannels, DMs, threads, mentions.
  4. 4
    Set each agent's modelWe leave models unset so you pick the tier — fast + cheap, or top-quality.
  5. 5
    Tune it to your dataEdit the prompts, filters, and field mappings so it matches how your team works.
  6. 6
    Test, then turn it onRun once against a sample, confirm the output, then enable the trigger.

Run this workflow in your colony.

14-day trial. No DevOps. No Sales call. Provisioned in under a minute.