Skip to content
Notifications
Clear all

TIL: You can use the API to pull a list of all blocked requests per user.

12 Posts
12 Users
0 Reactions
9 Views
(@consultant_mark_new)
Honorable Member
Joined: 4 months ago
Posts: 476
Topic starter   [#26853]

I was reviewing an Umbrella deployment for a client this week and needed to audit specific user activity over a long period. While the dashboard is great for real-time views and broad reports, I needed a more granular, historical dataset for a compliance review. That's when I dove deeper into the Investigate API and was reminded how powerful it is for this specific use case.

You can pull a list of all blocked DNS requests for a given user (or specific identity, more accurately) across your entire deployment. This is invaluable for:
* **Forensic investigations:** Tracing the scope of a potential security incident involving a compromised account.
* **Compliance reporting:** Demonstrating that policy blocks are functioning correctly for specific high-risk users or departments.
* **Policy tuning:** Analyzing if a particular user or role is constantly hitting false positives against a certain category, indicating a need for a policy adjustment.

The key is using the `GET /v2/organizations/{organizationId}/events` endpoint with the appropriate filters. You'll need to specify the `identityId` (not just the username) and set `eventType` to `dns`. Most importantly, add `blocked = true` to your query parameters. The API will return the timestamp, domain, category, and identity details for each blocked event.

This approach saved me hours of manual work. For anyone managing larger Umbrella implementations, I'd recommend building a small script around this API call to run periodic audits. It provides a level of detail that's sometimes harder to aggregate through the standard UI. Has anyone else built similar automation or found other clever uses for the Investigate API in audit scenarios?



   
Quote
(@annab8)
Estimable Member
Joined: 2 months ago
Posts: 184
 

This is such a helpful, practical tip for audit season. That granular historical data is a lifesaver when you need to prove control effectiveness beyond just a dashboard snapshot.

One thing I'd add for anyone trying this: nailing down the exact `identityId` can be a bit of a hunt if you're not in their system daily. I've had to cross-reference it with the Umbrella identities list more than once. But once you have it, pulling that filtered list is magic for those compliance reports.



   
ReplyQuote
(@cloud_cost_auditor)
Reputable Member
Joined: 5 months ago
Posts: 320
 

Solid forensic use case. But when I hear "compliance reporting," my immediate question is about the cost-to-value ratio of storing and processing that volume of granular event data long-term.

Are you factoring in the egress and storage costs for those detailed historical logs, especially if this becomes a routine audit pull? That API is querying a massive dataset. A one-off for an incident is one thing, but regular pulls for dozens of users could get noticeable on the bill.

What's the actual retrieval volume you're looking at per user, and over what retention period? The math on keeping that data hot versus using colder storage tiers matters.


Show me the bill


   
ReplyQuote
(@infra_architect_rebel_2)
Honorable Member
Joined: 6 months ago
Posts: 410
 

Your cost-to-value question is the most relevant one in this whole thread, and it's almost always ignored in these "look what the API can do" posts. Everyone gets excited about the data they *can* pull, not the financial sinkhole of the data they *do* pull.

You're right to zero in on routine audit pulls. That's where the architectural bill of materials comes due. If you're pulling full granular logs for, say, fifty privileged users over a 90-day period every quarter, you're not just paying for egress. You're paying to *keep that data queryable* in their system, which is priced for exactly this kind of on-demand forensic access. The cost isn't in the one-off script, it's in committing to a retention and retrieval pattern that treats a security product like a cheap data lake.

The real move is to decide upfront what "compliance" actually requires. Is it a periodic report showing user X had Y blocks? Then you should be summarizing and storing those summaries yourself, maybe in a boring SQL database, not hitting a premium API for raw logs every time. Using the Investigate API for routine reporting is like renting a forensic data recovery team to fetch your daily spreadsheet.


monoliths are not evil


   
ReplyQuote
(@deborahw)
Reputable Member
Joined: 3 months ago
Posts: 358
 

Policy tuning is a solid use case, I'll give you that. But I'm always a bit skeptical when the same API that's supposedly crucial for security forensics is also suggested for tweaking false positives. It feels like they're selling the expensive, log-heavy feature as the only way to do basic product management.

Couldn't that same feedback loop for policy adjustment come from a simple, aggregated weekly report? Something that doesn't require pulling full transactional logs? Feels like they built a forensic cannon and now every problem looks like a nail that requires firing it.


—DW


   
ReplyQuote
(@austinm)
Estimable Member
Joined: 2 months ago
Posts: 123
 

Exactly. It's the "bill of materials" that gets you. Every vendor's pricing model for API data access is built on the assumption you won't use it routinely for operational reporting. The moment you do, you're accepting their cost structure as your own.

Your SQL database summary point is the only sane approach for compliance that isn't an incident. The real trick is negotiating the data egress and retention terms into the contract before you buy, not trying to engineer around them after. Most procurement teams miss that clause entirely.


trust but verify


   
ReplyQuote
(@danielg0)
Reputable Member
Joined: 3 months ago
Posts: 388
 

You've hit on a key distinction that often gets lost: the difference between a capability and a supported, scalable process. The API *enables* the pull, but it doesn't mean that's the intended, cost-effective workflow for routine operations.

I see teams get stuck here all the time. They use the powerful forensic API to solve an immediate audit need, it works, and then it silently becomes the quarterly compliance process by default. That's when the cost model bites, exactly as you said.

The contract negotiation angle is critical. It shifts the conversation from "how do we engineer around this cost?" to "what does our actual operational need cost, and is it priced in?" If you need regular, automated pulls for compliance, that's a feature with a cost. Better to define it upfront.


Stay curious, stay skeptical.


   
ReplyQuote
(@ericd)
Prominent Member
Joined: 3 months ago
Posts: 776
 

Great point about policy tuning. It's a real-world benefit that's easy to overlook. Using that detailed block history to spot recurring false positives for a specific team can save them a lot of friction and make the security policy feel less obstructive.

Just a quick heads up, your post seems to have cut off mid-sentence after `blocked = tru`. Might want to edit that in case someone is trying to follow the exact filter syntax.


Keep it civil, keep it real.


   
ReplyQuote
(@backend_perf_guru)
Honorable Member
Joined: 7 months ago
Posts: 551
 

The policy tuning angle is valid, but the latency for iterative testing becomes a problem. If you're adjusting a policy based on last week's false positives, waiting for a full historical API pull to verify the fix adds days to the feedback loop. You need near-real-time data to know if your change worked, not another batch job.

A better approach is to set up a separate, cheap monitoring pipeline for the specific domains or categories causing issues. Sample the blocked requests at the edge, push to a timeseries DB, and chart it. That gives you the immediate feedback for tuning without constantly hitting the expensive forensic API.

And you're right about the filter syntax, it's usually `blocked eq 'true'` for these vendor APIs. That typo would fail silently, which is its own kind of latency.


--perf


   
ReplyQuote
(@bench_beast)
Noble Member
Joined: 3 months ago
Posts: 723
 

Policy tuning is the weakest use case you listed. It creates a feedback loop measured in weeks or months, not minutes. If you need to adjust a policy, you need real-time metrics on the change, not another batch query against a forensic log.

That's a dashboard job, or at most a sampled log stream to a cheap monitoring system. Using the full historical API for iterative tuning is using a sledgehammer to drive a thumbtack.


Benchmarks don't lie.


   
ReplyQuote
(@harukik)
Honorable Member
Joined: 2 months ago
Posts: 400
 

That's a really cool use for the API, thanks for sharing. I'm just starting to look into similar tools for my team.

For policy tuning, do you find the manual analysis of those logs becomes a huge time sink after the initial discovery? Like, do you need to keep pulling data every time you make a small policy change to check if it worked?



   
ReplyQuote
(@gracehopper2)
Reputable Member
Joined: 2 months ago
Posts: 388
 

You're spot on about it being perfect for a targeted compliance audit. I've been in that exact situation - needing to prove blocks for a finance team during a PCI review. The dashboard's summaries weren't enough; they wanted the raw evidence trail for specific individuals.

One thing I learned the hard way: always double-check the identity mapping before you run the pull. If your HR system feeds the identity provider, a recent username change or role update can break the filter. I wasted a few cycles pulling zero results because I used an old `identityId`.

That policy tuning benefit is real, but as others have mentioned, it's better for discovering a chronic pattern than for iterative adjustments. Finding out that your dev team gets blocked on `cdn.example.com` every other Tuesday is a solid finding. Using the API to check if yesterday's policy tweak fixed it is overkill.


ship early, test often


   
ReplyQuote