SECOPS

Page on unapproved Cloudflare WAF rule deletions

Diffs the latest Cloudflare WAF snapshot against an approved-baseline file in GitLab, and if a rule was deleted or weakened without a matching merged MR.

CategorySecOps
Enginesim
Difficultyadvanced
Triggerschedule
Steps6
Setup~25 min

How it runs

The automated pipeline, trigger to output.

  • TriggerSchedule: every 15 minutes
  • ActionFetch current Cloudflare WAF rulesetsCloudflareCloudflare
  • ActionRead approved baseline + merged MRsGitLabGitLab
  • ActionDiff and classify each rule changeShell
  • LogicBranch: deletion/weakening without approval?
  • OutputRaise PagerDuty incident with detailsPagerDutyPagerDuty

What it does

This workflow distinguishes approved WAF changes from rogue ones. It compares the current ruleset to the approved baseline committed in GitLab, then checks GitLab for a recently merged MR that accounts for the change. A deletion or action-downgrade with no matching approval is treated as unauthorized and pages on-call.

When to use it

Use it on production zones where loosening the WAF is a security event in its own right. It filters out the noise of legitimate, reviewed edits and only escalates genuinely unapproved or risky changes.

How it works

  1. 1A scheduled trigger fires (e.g. every 15 minutes).
  2. 2A Cloudflare action fetches the current WAF rulesets.
  3. 3A GitLab action reads the approved baseline file and recent merged MRs.
  4. 4A shell step diffs current vs baseline and classifies each change.
  5. 5A logic branch checks for deletions or weakened actions lacking an approval.
  6. 6A PagerDuty output raises an incident with the offending rule and actor.

Set it up

What you configure once, before turning it on.

  1. 1
    Connect CloudflareWorkers, Pages, R2, KV — the edge stack.
  2. 2
    Connect GitLabRepos, MRs, pipelines, registry.
  3. 3
    Connect ShellRun sandboxed commands inside the workspace.
  4. 4
    Connect PagerDutyIncidents, on-call, escalations.
  5. 5
    Set each agent's modelWe leave models unset so you pick the tier — fast + cheap, or top-quality.
  6. 6
    Tune it to your dataEdit the prompts, filters, and field mappings so it matches how your team works.
  7. 7
    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.