The request hit my desk at 3:07 p.m. A contractor needed elevated access to production. They said it was urgent. The ticket looked normal. The Slack message looked normal. The approval took ten seconds. The breach took less than an hour.
Just-in-time access approval was supposed to be the fix. No standing privileges. No permanent keys to the kingdom. The theory is solid: give users only the access they need, only when they need it, and revoke it the moment the work is done. Done correctly, it reduces both the attack surface and the blast radius. Done poorly, it hands an attacker the perfect moment to exploit.
Social engineering attacks thrive on human urgency. They exploit trust, familiarity, and our need to keep projects moving. Just-in-time models limit exposure windows, but when combined with a smooth-talking request in the right context, they can still fail. Approvers are humans. Humans make quick decisions under pressure. The attacker knows this. They prepare for it.
Security teams love automation, but too often the approval workflow still relies on reading a request, weighing risk, and clicking Accept. That single human step becomes the choke point — and the target. An attacker doesn't need long-term credentials. They just need you to approve one request, once.
Guarding just-in-time flows means layering defenses on the approval process itself. Automatic policy checks. Context-aware prompts. Verified intent. Explicit time bounds. Every approval should be logged, auditable, and visible to the team. Anything less is theater.