The 400-Row CSV Theatre: Why Access Reviews Fail
On the last Tuesday of the quarter, an engineering manager’s calendar dings with an urgent compliance notification: Q3 User Access Review Due Today.
Attached to the ticket is an export from the corporate identity directory: a spreadsheet containing 412 rows of employee names, department tags, AWS IAM roles, GitHub permissions, and database read-access flags. The manager is three hours away from a major sprint release, two engineers are out sick, and customer bug reports are piling up in Slack.
The manager opens the file, looks at row 1, scrolls furiously to row 412, and clicks the big green button: Approve All.
The compliance officer receives a cryptographically signed confirmation log. An ISO 27001 auditor examining the evidence three weeks later awards full marks for Control 5.18 (Access rights). The auditor sees a documented policy, a quarterly schedule, and a signed management sign-off.
Buried on row 287 was a freelance frontend developer whose contract ended in March. That contractor still holds production database access.
Welcome to compliance theatre.
The Nightclub Bouncer in the Pouring Rain
User access reviews exist for a sound reason: over time, employees accumulate permissions they no longer need. An engineer switches from infrastructure to product design, retaining root access to database servers. A contractor finishes a redesign, keeping access to internal GitHub repositories. Security professionals call this phenomenon privilege creep.
ISO 27001 attempts to solve privilege creep by requiring periodic human reviews.
The execution resembles a nightclub bouncer standing outside in a freezing downpour with a clipboard listing 400 VIP guests. The queue wraps around two city blocks, people are shivering, and the club owner is screaming through the doorway to hurry up and fill the dance floor.
The bouncer glances at the first three names, checks his watch, flips the page, and unhooks the velvet rope, waving the entire crowd inside without checking a single ID badge.
Physical analogies fail in one terrifying way: a bouncer can at least spot someone visibly carrying a crowbar or wearing a disguise. On an Excel spreadsheet, an inactive marketing contractor with read access to customer billing tables looks completely identical to an active senior staff engineer. The CSV provides zero context, zero usage telemetry, and zero indication of risk.
Why Manual Spreadsheets Guarantee Blind Sign-Offs
When organizations force managers to manually review massive tables of permissions, human cognitive limits guarantee failure:
- Context Collapse: A spreadsheet lists technical IAM role strings like
arn:aws:iam::123456789:role/data-sync-worker-v2. A team lead has no idea what that specific policy grants without opening AWS console and reading JSON policies for forty minutes. - Review Fatigue: Cognitive research consistently demonstrates that human error rates skyrocket after evaluating twenty consecutive items. Asking an engineering lead to evaluate four hundred rows guarantees that 95% of decisions are rubber-stamped.
- The Penalty of Saying “No”: If a manager revokes access in error, a developer’s build breaks, work halts, and angry Slack messages follow immediately. If a manager approves access unnecessarily, nothing breaks today. The incentives overwhelmingly favor rubber-stamping.
Moving from Static Spreadsheets to Continuous Hygiene
Eliminating access review theatre does not require hiring more compliance consultants. It requires replacing static, periodic audits with continuous, automated identity governance:
- Automated SCIM Deprovisioning: Eliminate manual account offboarding entirely. Connect your HR information system (like BambooHR or Rippling) directly to your identity provider via SCIM protocols. When HR marks an employee or contractor inactive, their downstream permissions across AWS, GitHub, and SaaS tools revoke programmatically within seconds.
- Enforce Just-In-Time (JIT) Elevated Access: No engineer needs permanent 24/7 administrator access to production databases. Implement temporary privilege elevation tools where developers request administrative access for specific incidents. Access automatically revokes after four hours, eliminating permanent privilege creep by design.
- Diff-Based, Anomaly-Driven Reviews: Never hand a manager a raw dump of 400 rows. Filter the review down to actionable deltas: accounts that changed roles, users whose permissions haven’t been used in sixty days, and accounts belonging to non-employee domains. A review with twelve suspicious items gets audited; a review with four hundred items gets rubber-stamped.
A signed quarterly spreadsheet proves you have paperwork, not that your company is secure. When your team last completed an access review, did anyone actually read row 287?