Just-in-time access for customer accounts: applying JIT to support

Just-in-time access gives support temporary, approved access to one customer account. Apply JIT to support, compare it with PAM and check your maturity.

Just-in-time access (JIT access) means a person gets a permission only when a task needs it, for a limited time, and loses it automatically afterwards. Microsoft’s identity documentation (opens in a new tab) describes it as a model in which users “receive temporary permissions to perform privileged tasks”, with access granted only when they need it.

Most guides to just-in-time access are about infrastructure: admin roles, servers and databases. This one applies the same idea to support access to customer accounts, the moment a support engineer opens a customer’s account inside your SaaS product. The parts are the same: a request with a reason, an approval, a time box, a narrow scope, automatic revocation and a record.

What is just-in-time access?

JIT access is the opposite of standing access, a permission someone holds all the time whether or not they’re using it. With JIT, nobody holds the privilege by default. It’s granted for one task and removed by the system when the window closes.

CISA’s Zero Trust Maturity Model (opens in a new tab) shows the progression well. At its lowest stage, an organization grants permanent access and reviews it periodically. At the next, access expires. At the advanced stage, access is need-based and session-based. At the optimal stage, automation authorizes “just-in-time and just-enough access” tailored to individual actions and resources.

Two related terms come up often:

  • Just-enough access limits what someone can do during the grant, not just when they have it.
  • Zero standing access is the end state where nobody holds privileged access by default. Microsoft uses the term for its own service personnel (opens in a new tab), who have no standing privileged access to Microsoft 365 production or to customer data.

Why apply JIT to support access to customer accounts?

Support access to a customer account is privileged access, even if nobody calls it that. The person can see the customer’s data and act with their permissions. A “log in as any user” button available to every support agent is standing access to every customer’s data.

Microsoft applies JIT to exactly this case (opens in a new tab). An engineer who needs customer content requests it through a system called Lockbox. A second person, who can’t be the requester, approves it. Lockbox revokes access when the elevation period ends. Microsoft says the most common reason (opens in a new tab) engineers need that access is a customer support request that requires troubleshooting. Before approving, Lockbox also checks (opens in a new tab) that the requested time is within a maximum, that there’s a business justification and that the resource is within the engineer’s work scope.

You don’t need Microsoft’s scale to copy that shape.

The six parts of JIT access to a customer account

PartQuestion it answersWeak versionStrong version
RequestWho wants which account, and why?A Slack messageA named customer, a scope, a duration and a ticket reference
ApprovalWho agreed?Implied by job titleA recorded decision, ideally by someone other than the requester
Time boxFor how long?Until someone remembersThe shortest useful window, plus an idle timeout
ScopeWhat may they do?Everything the customer can doRead-only by default, enforced by the backend
RevocationHow does it end?Manual logoutAutomatic and server-side, even with no tab open
RecordWhat can you show later?Nothing, or chat historyRequest, decision, session timing and how it ended

A few notes on getting each one right:

  • Make the reason useful. “Ticket 4821: export button missing for this user” helps an approver and a later reviewer. “Debugging” doesn’t. Treat the reason as required in your team policy, even if a tool lets you leave it blank.
  • Approval by the requester isn’t independent review. It can be acceptable for a small team, but record it as what it is.
  • Read-only must be enforced on the server. A hidden edit button doesn’t stop an API call. The read-only impersonation guide covers the operation inventory.
  • Records come in two kinds. The access record explains why the session existed. Your application’s audit events explain what happened inside it. The impersonation audit log guide shows how to link them.

How is JIT for customer accounts different from PAM?

Privileged access management (PAM) tools such as Microsoft Entra Privileged Identity Management (opens in a new tab) grant elevated roles on directory and cloud resources. They offer time-bound assignments, approval to activate a role, justification, notifications and access reviews. They answer questions like “may this engineer hold the database admin role for an hour?”

Customer-account JIT answers a different question: may this agent see this customer’s account, as that customer, inside our product?

Infrastructure PAMJIT for customer accounts
What’s grantedA role on servers, databases, cloud or directory resourcesA session inside your app as one customer user
Whose identity appliesThe engineer’s own, elevatedTwo identities: the staff actor and the customer subject
Who enforces limitsThe cloud or directory’s access controlsYour application backend and its tenant checks
What “read-only” meansRead-only IAM actionsAPI endpoints that don’t change state or trigger side effects
Who revokes the credentialThe PAM tool or the cloud providerYour application, which issued the session

Choose a PAM tool when engineers need elevated rights on infrastructure, for example production database access or a cloud admin role.

Choose customer-account JIT when support needs to see a product exactly as a specific customer sees it. Many teams need both, for different jobs.

Where does your team sit? A maturity table

Levels 1 to 4 adapt CISA’s four stages (opens in a new tab), from permanent to just-in-time access, to support access. Level 0 is added for shared credentials.

LevelWhat support access looks likeMain risk
0. Shared credentialsA shared admin login, or the customer’s passwordNo way to tell who did what
1. Standing accessEvery agent can open any account, reviewed occasionallyEvery account is exposed all the time
2. Expiring accessAccess granted on request, but broad and long-livedWide scope and windows nobody checks
3. Session-based JITOne customer, one reason, approved, time-boxed, scoped, ended automatically and recordedApproval quality depends on people
4. Automated JITPolicy decides routine cases, people review the exceptionsPolicy rules need ongoing review

Most teams with an in-house “log in as user” feature sit at level 1. Moving to level 3 is mostly process plus a few backend changes. Level 4 is worth considering only once level 3 runs smoothly. The build vs buy guide helps decide who should own that work.

How Devora applies JIT to customer accounts

Devora is JIT access for customer accounts. It isn’t a PAM product, and it doesn’t manage servers, databases or cloud roles. Here’s how its workflow maps to the six parts:

Your application still owns authentication, issuing and revoking its own credential, tenant authorization and business audit events. Devora has no staff-to-customer assignment feature. If agents should only open assigned customers, that check belongs in your app, as the assigned-customer guide explains.

Start with the smallest change that removes standing access

You don’t have to reach level 4 to get most of the benefit. Removing the always-on “log in as” button, and replacing it with a short, recorded, read-only session per ticket, closes the largest gap. If a staging fixture or a denial log can answer the ticket, use that instead.

If you want the request, approval, time box and record handled for you, create a Devora account and try one staging session against the six parts above.

Sources

Quick answers

Common questions, answered clearly.

Direct answers to the questions teams usually ask when evaluating this approach.

What is just-in-time access?

Just-in-time (JIT) access is an access model where a person receives a permission only when a task needs it, for a limited time, and loses it automatically when the time runs out. Nobody holds the privilege permanently, so a stolen or forgotten account has nothing standing to misuse.

What is the difference between JIT access and standing access?

Standing access is a permission someone holds all the time, whether or not they are using it, and it is usually checked only in periodic reviews. JIT access exists only for an approved task and window, and is removed by the system rather than by someone remembering to remove it.

Is a PAM tool enough for support access to customer accounts?

Usually not on its own. Privileged access management tools grant elevated roles on infrastructure such as cloud resources, servers and directories. Support access to a customer account happens inside your application, as the customer, under the customer's tenant permissions, with a credential your application issues and has to revoke.

Does just-in-time access slow support down?

It adds a request and an approval, so the first minutes of an investigation take a little longer. Most teams reduce that with read-only defaults, short pre-set durations and approvers who can act quickly. The trade is a smaller, clearer set of people who can see each customer's data at any moment.

Can an admin approve their own just-in-time request in Devora?

Yes, by default. Devora records it as self-approved, separately from approval by another administrator. You can turn self-approval off in settings if your policy needs a second person.

Put it into practice

Give your team context.Keep control of access.

Bring approvals, scoped sessions, and access history into your support workflow.