Rate Limiting Your Own Analysts: Why Query Throttling Belongs in Intelligence Systems Too
T. HoltEveryone building intelligence infrastructure spends enormous energy thinking about external threats hitting their APIs. Almost nobody applies the same discipline to internal users. That's a mistake, and it's one I've watched play out at three different shops before anyone noticed the pattern.
Photo by Mikhail Nilov on Pexels.
Here's the scenario. An analyst has legitimate, authorized access to a knowledge graph containing entity relationships, source material, and case links. Nothing about their access is wrong. But over a six-week period, that analyst runs 40,000 queries against a target cluster, pulling every connected node, every historical mention, every cross-reference. No rate limit stopped them because none existed. The access was authorized, so the system assumed the behavior was fine.
Two things can go wrong here, and they're different problems wearing the same clothes.
The first is insider risk. Bulk extraction of intelligence data by an authorized user looks identical to normal heavy usage unless you're measuring volume against baseline. A departing employee pulling everything they can before their access gets revoked. A compromised credential being used by someone who isn't the analyst at all. A well-meaning analyst building a shadow database on their laptop because the official tooling is too slow. All three produce the same query signature: high volume, broad scope, sustained over time. Without throttling and alerting on that pattern, you find out about it in the exit interview, or worse, in a leak investigation.
The second is operational signature leakage, and this one's subtler. If your analysts can query a target entity without limit, the pattern of those queries, timing, frequency, which related entities get pulled next, becomes a map of your interest. Anyone with visibility into your query logs (a malicious insider, a compromised logging pipeline, a vendor with backend access) can reconstruct what your team is working on just by watching query shape. Throttling doesn't just prevent bulk exfiltration. It flattens the signal that bulk querying creates in the first place.
The fix isn't exotic. Rate limiting for analyst-facing intelligence systems needs three tiers that most API rate limiters don't bother with:
graph TD
A[Analyst Query] --> B{Within baseline volume?}
B -->|Yes| C[Process normally]
B -->|No| D{Flagged entity cluster?}
D -->|Yes| E[Soft throttle + alert]
D -->|No| F[Hard throttle + review queue]
C --> G[Log for baseline update]
First, a per-analyst baseline that adapts to role. A collection specialist querying hundreds of entities a day is normal. The same volume from someone in a reporting role is not. Static global limits miss this entirely; you need per-role baselines that get recalculated monthly, not hardcoded at deployment.
Second, entity-sensitivity-aware throttling. Pulling bulk data on a low-sensitivity public entity shouldn't trigger the same response as bulk pulls on a compartmented target. Tag your entities with sensitivity levels and tier your throttle thresholds accordingly. This means your rate limiter needs to talk to your classification metadata, which in most shops means two systems that have never spoken get introduced for the first time.
Third, soft throttling before hard throttling. Don't cut analysts off cold; that breaks workflows and trains people to find workarounds (personal scripts, local caching, screen scraping their own authorized views, all of which make the eventual audit worse). Instead, slow the response time, insert a review step for anomalous bulk requests, and let a human supervisor clear it in minutes rather than blocking it outright.
The argument I hear against this is that it slows down legitimate work and signals distrust of the analyst corps. Maybe. But the alternative is a system where the only thing standing between routine access and mass data exposure is the assumption that nobody will ever misuse what they're entitled to touch. That assumption has a bad track record. Ask anyone who's run an insider threat program what their worst incidents had in common: authorized access, used without limit, for far longer than anyone noticed.
Get Intel DevOps in your inbox
New posts delivered directly. No spam.
No spam. Unsubscribe anytime.