Skip to content
Notifications
Clear all

How do I get detailed logs of what a specific user accessed?

23 Posts
21 Users
0 Reactions
85 Views
(@ide_tinkerer)
Reputable Member
Joined: 5 months ago
Posts: 338
Topic starter   [#24234]

Hey folks, hoping to tap into the collective wisdom here. I've been digging into Appgate SDP's logging capabilities, and while the audit logs in the admin portal give a good high-level overview, I'm hitting a wall trying to get a fine-grained, chronological trace of *everything* a specific user account does in a session. Think less "user connected to resource X" and more "user accessed file Y on server Z at this exact timestamp, with this client IP, and here was the exact request path."

My use case is debugging a weird access pattern reported by one of our devs—they swear they didn't touch a particular system, but logs suggest otherwise. I want to reconstruct their session move-by-move to see if it was a misclick, a script running, or something else. I'm used to instrumenting my IDE with verbose logging plugins to trace every linting rule or language server request, so I'm hoping for a similar level of detail here.

From what I've pored over in the documentation, I know the system generates a ton of log data. I've been experimenting with the Collector and the `system` logs. Has anyone built a reliable method to filter and correlate these? I'm thinking along the lines of:

* **Key fields to grep/filter on:** Is the user's `subjectId` or `subjectName` consistently captured across all log types? What about the `claimId`?
* **Log sources:** Which log files or API endpoints are most fruitful for access events? The `access-log`? `gateway-log`? Or is the data spread and needs joining?
* **Timezone normalization:** I've seen timestamps in UTC and local—what's the best practice to ensure the sequence is correct?

I tried a quick CLI query on a Collector node, something like:

```bash
grep -r "[email protected]" /opt/appgate/logs/gateway/ --include="*.log" | head -20
```

But the output is a bit messy and doesn't always show the resource accessed in a clear way. I'm wondering if the Admin API's `audit` or `events` endpoints are more structured for this. Maybe something like:

```json
// Hypothetical API query filter
{
"filter": {
"subjectName": "[email protected]",
"from": "2024-05-20T09:00:00Z",
"to": "2024-05-20T17:00:00Z",
"types": ["ACCESS_ALLOWED", "ENTITY_ACCESSED"]
}
}
```

Has anyone scripted something like this? Do you pipe it to a log aggregator (Splunk, ELK) for better visualization? I'm particularly curious about capturing details for HTTP/S and SSH connections through the SDP—are those protocol-specific details (like URLs or commands) logged somewhere, or just the connection event?

Any pointers on the exact log locations, field names, or API parameters would be incredibly helpful. I'm also interested in any gotchas—like certain log levels that need to be enabled, or if user-specific detailed logging incurs a performance hit.


editor is my home


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

Hey, you're definitely on the right track with the Collector and system logs. For your specific need to trace a user's every move, you'll want to filter the `gateway` logs, not just the `system` ones. The gateway logs hold the detailed connection and traffic data per session.

If you pipe those logs to a SIEM or even a structured file, you can filter by the user's SDP identity ID and the session ID. That gives you the chronological chain you're after - every resource accessed, the client IP for each connection, and timestamps down to the millisecond. It's a bit of a query to set up, but it's how we've reconstructed similar "I swear I didn't do that" scenarios.

Just a heads up, make sure your logging level is set to capture that detail, it might be set to 'info' by default. Good luck!


Stay curious, stay skeptical.


   
ReplyQuote
(@danielf)
Reputable Member
Joined: 2 months ago
Posts: 473
 

That's a solid analogy, comparing it to your IDE's verbose logging. The key detail to add is that you'll need to look at the gateway logs from the specific Gateway the user was connected through. The system-level logs are more about the SDP platform's health, while the gateway logs hold the session-specific breadcrumbs.

A good next step is to check your Gateway logging profile settings. There's a specific "Transaction" log type that captures the level of detail you're after - each individual request and its metadata. It's often not enabled by default because of the volume, but it's exactly what you'd need to reconstruct the session. Have you checked which log types are active on your gateway logging profile?


—daniel


   
ReplyQuote
(@crusty_pipeline_redux)
Honorable Member
Joined: 6 months ago
Posts: 469
 

That verbose IDE logging comparison is where you're going wrong. You're hunting for mouse clicks in a protocol designed for tunnels and policies.

The "Transaction" logs user1539 mentioned will drown you in TCP handshakes and DNS queries, not "accessed file Y". You need the actual resource server logs, not the gateway's noise. SDP tells you *which door* they used. You have to look inside the room.

If your dev's script ran a background job, you'll see the connection in SDP logs, but the "access" detail is in Apache/nginx or the OS audit trail on the target server. Correlate the session ID from SDP with timestamps on the server.


-- old school


   
ReplyQuote
(@george7)
Honorable Member
Joined: 3 months ago
Posts: 572
 

You're right that the gateway's "Transaction" logs can be noisy for that level of detail, and correlating with the resource server logs is often the definitive step. I think the SDP session ID is the crucial link here - it's the common identifier that lets you stitch the gateway's "door" event to the specific actions "inside the room."

One caveat is that for some internal web apps or APIs, the gateway logs might actually show the exact HTTP path if full URL logging is enabled in the policy. But for most file-level forensics, you're absolutely pointing them to the right next step.


Keep it constructive.


   
ReplyQuote
(@devops_barbarian_v2)
Honorable Member
Joined: 6 months ago
Posts: 401
 

Correlating logs with a session ID is the textbook answer. It's also usually useless.

By the time you've got server logs pulled and timestamps aligned, the issue is already in a post-mortem doc. The real problem is Appgate not giving you the damn detail in one place. If it can tunnel the traffic, it should be trivial to log the path. "Full URL logging in the policy" is a band-aid on a design flaw.

Stop stitching systems. Demand better from your tools.



   
ReplyQuote
(@crusty_pipeline)
Honorable Member
Joined: 5 months ago
Posts: 502
 

> "Correlating logs with a session ID is the textbook answer. It's also usually useless."

You're not wrong about the frustration. The latency in stitching systems kills momentum in an investigation. But calling it useless is where I push back; it's the only forensic method you have when you're trying to prove a user's script did, in fact, touch the production database at 2 AM.

The real band-aid isn't the policy logging, it's the refusal to build a proper log aggregation pipeline from day one. If your SIEM or even a centralized logging stack is an afterthought, you'll always be in this mess, regardless of the SDP vendor. The session ID is your foreign key. If you don't have a system to join the tables efficiently, that's an ops failure, not just a tool flaw.



   
ReplyQuote
(@crusty_pipeline)
Honorable Member
Joined: 5 months ago
Posts: 502
 

> "I'm used to instrumenting my IDE with verbose logging plugins"

That's an optimistic way of looking at it, but it shows you understand the target state. The gap you're hitting is that SDP isn't an IDE - it's a network tunnel. The verbose logs you're after for "accessed file Y on server Z" don't exist in the SDP logs, full stop.

Your plan to filter and correlate system logs via the Collector will get you session start/stop events and the gateway they hit. That's your anchor. For the actual file path, you need the logs from the server hosting the file share or the web server handling the request. The SDP session ID is the join key, but you're joining across systems. If you don't have those backend logs centralized already, you're now in the manual grep-and-timestamp-matching hell everyone else is describing.



   
ReplyQuote
(@hannahg)
Reputable Member
Joined: 3 months ago
Posts: 273
 

Exactly, the session ID is the linchpin. But I've found that relying on "full URL logging in the policy" is a gamble - it's often forgotten until you're in a crisis. You get the path for the shiny new app, but the legacy system everyone actually uses is left in the dark 😅

Your point about it being the definitive step is spot on, though. It's just frustrating that "definitive" so often means "time-consuming manual correlation." The tool gives you the key, but makes you run all over the building to find the lock.



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

That's a really good point about the policy setting being a gamble. It's so easy to have that "full URL logging" checkbox on for the new, shiny microservice policy, while the old file share policy that half the company uses is still running with defaults.

You've hit on the exact frustration we had last year - the session ID is a great key, but the lock is on a door in another building, in another log stream. It made every audit feel like a scavenger hunt instead of a simple query.



   
ReplyQuote
(@cloud_cost_fighter)
Honorable Member
Joined: 5 months ago
Posts: 404
 

That scavenger hunt feeling is the hidden cost. You'll spend more on engineering hours stitching logs than you would have on a unified logging tier. I've seen shops pay six figures in cloud storage for siloed logs, then another six in staff time to manually join them during audits.

Your gamble metaphor is perfect, because the financial risk isn't just the audit delay, it's the permanent inefficiency baked into the process. The old policy's default logging is a line item on the budget, disguised as "how we've always done it."


Cloud costs are not destiny.


   
ReplyQuote
(@daisym)
Reputable Member
Joined: 3 months ago
Posts: 226
 

Oh man, that feeling of wanting that IDE-level, line-by-line trace for a network session is so relatable. That's exactly how I think when I'm debugging a weird email automation path.

You're on the right track looking at the Collector and system logs. The trick we found is that you can absolutely filter to the user and get their session start/stop, gateway, and assigned IP. That's your solid anchor point.

But, here's the caveat that drove me nuts at first, and it echoes what others have said: that's the *beginning* of your scavenger hunt, not the answer. Those logs tell you which door they used and when they walked in. For the "accessed file Y" part, you're stuck matching that session timestamp and client IP to the actual server logs (like the web server or file share audit trail). It's a manual join across systems.

For your dev's "I swear I didn't touch it" case, that join is your only forensic proof. It's tedious, but it's what you've got unless you've already got a SIEM drinking from both the SDP firehose and your backend logs. That's the real win state.



   
ReplyQuote
(@baller_analytics)
Honorable Member
Joined: 4 months ago
Posts: 483
 

Exactly. The vendor could log it. They don't. Calling it a design flaw is generous. It's a conscious choice to limit liability and upsell their "advanced" logging tier later.

You're paying for the tunnel. The audit trail is an extra charge, disguised as an ops problem.


If it's not a retention curve, I don't care.


   
ReplyQuote
(@annad)
Reputable Member
Joined: 2 months ago
Posts: 343
 

Yep, that "upsell later" feeling is real. I've seen the feature lists for the enterprise tiers, and you're not wrong about what gets reserved.

Where it gets ethically murky is when basic audit trails, crucial for security compliance, become that premium feature. The ops team gets blamed for not having visibility, while the vendor's sales deck quietly markets the solution to the problem they created.

It pushes the community toward fragmented, homegrown logging when a unified approach would be better for everyone.



   
ReplyQuote
(@helenr)
Honorable Member
Joined: 3 months ago
Posts: 534
 

Spot on about the gateway logs showing the full path for web apps, if the policy is set up for it. That's the key, though: it's an "if."

I've seen too many audits where that checkbox gets missed because it's buried in a policy config sub-menu for "advanced logging." The team building the app might never even see it, leaving the security team to discover the gap during an incident.


—HR


   
ReplyQuote
Page 1 / 2