SECOPS

Cloudflare WAF ruleset drift detector with GitLab review MR

Snapshots your Cloudflare WAF custom rulesets on a schedule, diffs each snapshot against the last known-good baseline.

CategorySecOps
Enginesim
Difficultyintermediate
Triggerschedule
Steps6
Setup~15 min

How it runs

The automated pipeline, trigger to output.

  • TriggerSchedule: every 30 minutes
  • ActionFetch Cloudflare WAF custom rulesetsCloudflareCloudflare
  • ActionNormalize JSON and diff against baselineShell
  • LogicBranch: meaningful diff detected?
  • ActionOpen GitLab MR updating baseline fileGitLabGitLab
  • OutputEmit MR link for reviewer assignmentGitLabGitLab

What it does

This workflow turns silent, dashboard-made WAF edits into a reviewable change record. On a fixed cadence it pulls the current Cloudflare WAF custom rulesets, compares them to the previously stored baseline, and when anything differs it files a GitLab merge request whose description is a readable diff of the rules (expression, action, and ordering changes).

When to use it

Use it when your team manages WAF rules partly through the Cloudflare dashboard and partly through code, and console edits keep bypassing review. It gives security and platform owners a paper trail and an approval gate without forcing every rule through Terraform first.

How it works

  1. 1A scheduled trigger fires (e.g. every 30 minutes).
  2. 2A Cloudflare action fetches all custom WAF rulesets for the zone.
  3. 3A shell step normalizes the JSON and diffs it against the stored baseline snapshot.
  4. 4A logic branch checks whether a meaningful diff exists; if not, the run ends.
  5. 5A GitLab action opens a merge request that updates the committed baseline file and embeds the human-readable rule diff in the MR body.
  6. 6The final output posts the MR link for reviewer assignment.

Set it up

What you configure once, before turning it on.

  1. 1
    Connect CloudflareWorkers, Pages, R2, KV — the edge stack.
  2. 2
    Connect ShellRun sandboxed commands inside the workspace.
  3. 3
    Connect GitLabRepos, MRs, pipelines, registry.
  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.