SECOPS

Hourly hunt for GitLab tokens used from flagged Cloudflare bot IPs

Every hour this joins Cloudflare bot-flagged IPs (stored in Axiom) against GitLab token authentication logs and writes a ranked correlation report back to Axiom.

CategorySecOps
Enginesim
Difficultyadvanced
Triggerschedule
Steps5
Setup~25 min

How it runs

The automated pipeline, trigger to output.

  • TriggerHourly schedule
  • ActionQuery Axiom for Cloudflare-flagged bot IPs (last hour)Axiom
  • ActionPull GitLab token auth events for the windowGitLabGitLab
  • LogicJoin bot IPs to token logins and score by scope
  • OutputWrite scored correlation dataset to AxiomAxiom

What it does

This is a scheduled threat hunt rather than a real-time alert. Once an hour it reads the rolling list of IPs that Cloudflare flagged as bots into Axiom, then checks GitLab's authentication and token-usage logs for any token that logged in from one of those addresses. Matches are scored by token scope and written back to Axiom as a dataset your SOC can dashboard and trend.

When to use it

Use this when you want continuous, low-noise coverage that complements real-time paging — catching slow-burn token abuse where an attacker drips requests below spike thresholds. It is ideal for teams already centralizing logs in Axiom who want a queryable record of bot-IP-to-token correlations over time.

How it works

  1. 1An hourly schedule kicks off the hunt.
  2. 2The flow queries Axiom for Cloudflare-flagged bot IPs seen in the last hour.
  3. 3It pulls GitLab token authentication events for the same window.
  4. 4A logic step joins the two sets and scores each hit by token scope and frequency.
  5. 5The scored correlation report is written back to Axiom as a structured dataset for dashboards and trending.

Set it up

What you configure once, before turning it on.

  1. 1
    Connect AxiomLog streams, queries, dashboards.
  2. 2
    Connect GitLabRepos, MRs, pipelines, registry.
  3. 3
    Set each agent's modelWe leave models unset so you pick the tier — fast + cheap, or top-quality.
  4. 4
    Tune it to your dataEdit the prompts, filters, and field mappings so it matches how your team works.
  5. 5
    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.