User access review

What a user access review is, how the process works, why most reviews are rubber-stamped, and what auditors actually expect as evidence.

8 min read · Published July 9, 2026 · Last updated September 7, 2026

A user access review is a periodic check of who has access to what, where a reviewer decides per entitlement whether each grant is still appropriate and revokes what is not. It is a core control for SOC 2, ISO 27001, and similar frameworks, and the primary defense against privilege creep and orphaned access.

A user access review is the recurring check that asks, for every account and entitlement in scope, whether the person still needs it. Someone with the authority to decide looks at the access and chooses per item to keep it or remove it. The decision is recorded together with proof that the removals happened. It is one of the load-bearing controls in every major compliance framework, and it is also one of the most commonly faked.

pull every account and entitlement in scope
      |
      v
route each item to someone who can judge it (manager or app owner)
      |
      v
decide per item: keep or remove            <-- the rubber stamp happens here,
      |                                        when the reviewer has no context
      v
EXECUTE the removals in the apps           <-- the step most reviews skip
      |
      v
record who decided what, when, and proof the removals happened  -->  audit evidence
A review is only a control if the fourth step happens. Without it the review documents a decision it did not enforce.

Why does the control exist?

Access accumulates over a tenure whether or not anyone intends it to.

How the accumulation happens

People join, change roles, join projects and pick up permissions along the way. Each grant is reasonable on the day it is made, which is why none of them is ever questioned later. Four sources feed the pile, and none of them is anyone's mistake. A new role adds its bundle without anyone removing the last one, because the mover stage of the lifecycle rarely revokes. A project adds a temporary grant with no end date attached. An incident adds an elevated permission at two in the morning that nobody comes back to. And a colleague adds access directly inside an application, which the identity provider never sees. Left alone, a long-serving employee ends up with access reaching back through every role they have ever held.

Why a periodic check is the answer

The access review is the periodic correction to that accumulation. It is the moment someone is supposed to look at the accumulated access and cut what is no longer justified. Done well, it is the main thing standing between a stack and quiet privilege creep, and it is how orphaned and over-scoped accounts get caught between offboarding events. It is also the control an auditor can most easily verify, which is why frameworks lean on it:

Hacker News comment by tptacek

SOC2 does a great job of assuring that you don't have to trust us that we're terminating access when employees leave, and that we're conducting frequent access review meetings.

tptacek·Hacker News

How does a user access review work?

The mechanics are consistent across frameworks, whatever the framework calls the control.

1Scope

The systems, the population and the entitlements in the review are defined in advance. A review scoped to the applications behind SSO is a review of the part of the stack that was already easiest to govern.

2Pull

The current access is pulled: every account and entitlement across the systems in scope, from the systems themselves rather than from a list someone maintains. For the applications the identity provider does not manage, this means an API call or an export from each one.

3Route

Each item is routed to a reviewer who can judge it, usually the person's manager or the owner of the resource. A row routed to someone with no context is a signature, not a decision.

4Decide

The reviewer decides per item whether it stays or goes, and the decision is recorded with the reviewer, the timestamp and the context they saw.

5Enforce

Removals are executed in the application where the access lives, not noted for someone to do later.

6Evidence

The whole exercise is recorded: who reviewed, when, what they decided, and proof that the removals actually happened. That last step is the one that separates a real review from a documented one.

How does the review change for apps without SCIM?

Where the population comes from

For SCIM-connected applications, the identity provider already knows every account and group, so pulling the review population is a query. For applications without SCIM, the account list lives inside the application, and the review covers only what someone exports from it. The difference is not one of effort alone. A directory query returns every account that exists; an export returns every account the person doing the export knew to look for, which is a smaller and less stable set.

ApplicationWhere the population comes fromWhere the revocation runs
SCIM on the current planThe identity provider's view of the applicationThe directory, which the application honours
SSO but no SCIMAn export from the application; the identity provider only sees who logged in through itInside the application, by hand or over its API
No SSOAn export from the application, if someone remembers it is in scopeInside the application

Why the gap concentrates the findings

A review that skips the non-SCIM applications checks the accounts the identity provider already controls and misses the ones where orphaned accounts and stale contractors actually live. The concentration is structural, not a matter of which teams are careless. An application connected to the directory has its accounts created and closed by machinery, so its drift is small. An application outside the directory has its accounts created by invitation and closed by memory, so its drift is where the sample lands. Someone who has taken companies through SOC 2 described the alternative:

Lots of apps being used by enterprises don't even have support for SSO at all, even if you were willing to pay the tax. Audits can't require you to use something that does not exist. Thus, the manual syncing and comparing is a frequent ritual of audit compliance (and to be fair, is something that should be done regularly even if no auditor is asking for it).

jjav·Hacker News

Why are most access reviews theater?

Two failures account for it, and the first is structural rather than lazy.

The rubber stamp

A reviewer is sent a spreadsheet with hundreds of rows, each one a cryptic entitlement string. Nothing on the sheet says what the access does, whether it is used or why it was granted. Investigating each row would take hours, approving the whole sheet takes one click, and so the sheet gets approved, the audit is satisfied, and not a single grant changes. The review exists as evidence rather than as a control. That gap between the paperwork and the reality is what practitioners mean by governance theater, and the cost of the manual version is what pushes large organizations toward automation:

Hacker News comment by xyzzy123

Big orgs will pay more for SCIM to avoid having to do user access reviews in the UIs of individual products they have bought. It directly translates to person-hours of busywork and admin burden of executing / tracking that work.

xyzzy123·Hacker News

The unenforced decision

The second failure is quieter and harder for an auditor to spot. The decision is made but never enforced. A reviewer marks access for removal, the note is saved, and the revocation never runs. The evidence now says the access was removed while the system says it is still there, and an auditor who checks both finds the discrepancy.

What makes an access review real?

Three things fix it, and none of them is a longer spreadsheet.

Context at the point of decision

The reviewer sees what the entitlement grants, when the account was last used, how the person came to have it, and whether the person is still employed and in the same role. The decision is then informed, not a guess made under a deadline.

Enforcement wired to the decision

A rejection triggers the actual revocation in the application where the access lives. The review changes the state of the system rather than documenting an intention. The test is mechanical: after the campaign closes, a fresh pull from the application should no longer contain the entitlement that was rejected, and nobody should have to run that pull by hand to find out.

A scope that includes the applications outside SSO

The population under review has to be every account that exists, not every assignment the identity provider made. That means reading each application's own list, including the ones reachable only through an admin console, and reconciling the two views before the review is routed. A review whose scope is defined by what was easy to pull is answering a different question from the one the framework asks.

A review that is theaterA review that is a control
A spreadsheet of entitlement stringsEach row shows what the access grants and when it was last used
Routed to whoever is availableRouted to the manager or the resource owner
One approval covers the sheetOne decision per entitlement, recorded with a timestamp
Rejections noted for laterRejections executed in the application
Evidence is the spreadsheetEvidence is the record of decisions plus proof of removal
Quarterly, all at onceContinuous for changes, with a smaller scheduled run for the rest

An access review in Iden pulls the account list from each application directly, so the population includes the applications the identity provider cannot see. Each row shows the reviewer the person's employment status, department, role and groups beside the entitlement, approve and revoke sit on every row, and a revoke is executed in the application rather than noted for later. The feature behind it is Access reviews with a decision on every row.

An Iden access review for Retool under a SOC 2 campaign, 57 pending and 43 done, listing each user with employment status, department, role and groups, with approve and revoke on every row.

A SOC 2 review of one app. Two rows are flagged because the employee is Inactive in HR and still holds access, and three of the rows are not people.

The test is whether, after a review closes, the organization can show that everything marked for removal is actually gone without anyone checking by hand. If it cannot, the review recorded a decision it did not enforce.

What an auditor checks

FrameworkControlWhat the test looks for
SOC 2CC6.2, CC6.3Access is reviewed on a defined schedule by an appropriate reviewer, decisions are recorded per item, and removals are evidenced in the system.
ISO 27001:2022A.5.18Access rights are reviewed at regular intervals and after changes; the review is recorded and acted on.
PCI DSS v4.07.2.4User accounts and access privileges are reviewed at least once every six months, and inappropriate access is addressed.
HIPAA45 CFR 164.308(a)(4)Information access is authorized by policy and periodically reviewed.

Asked in the field

In practice they are used for the same thing. Access certification is the more formal term, common in compliance and legacy IGA. User access review is the more common working term. Both mean: review who has access, decide per item whether it stays, and record the decision. This page uses them interchangeably.

Because the reviewer is handed a spreadsheet of hundreds of entitlements they do not recognize, with no context on why each was granted or whether it is used. Approving everything is faster than investigating, so that is what happens. The review passes the audit and changes nothing, which is why it is called governance theater.

Quarterly is the common cadence for SOC 2 and ISO 27001, with higher-sensitivity systems reviewed more often. The trend is toward continuous review, where changes are evaluated as they happen rather than batched into a quarterly scramble.

Who reviewed what, when, what they decided per entitlement, and proof that rejected access was actually removed. The last part is where manual reviews fail: the decision gets recorded but the revocation never happens, so the evidence and the reality diverge.

Context and enforcement. Reviewers need to see what the access is, whether it is used, and why it was granted, so the decision is informed. And a rejection has to trigger an actual revocation automatically, so the review changes the state of the system rather than just documenting it.