ISO 27001 · SOC 2 · PCI DSS ← Back to services Get in touch →

Worked example · one control, end to end

Nobody should have standing access to production. Including you.

Permanent administrative access is the most common finding in this kind of work, and the first thing an enterprise customer asks about in a security questionnaire. What follows is a working version that does not slow your engineers down, how it gets tested, and the five places it tends to break. Free to read, no signup.

ISO/IEC 27001 A.5.15 · A.5.18 · A.8.2 · SOC 2 CC6.1 · CC6.3 · PCI DSS 7 & 8 · NIST 800-53 AC-2 · AC-6

ASituation

Why almost everybody fails this one

Standing privilege is not a security failure so much as an operational habit. It gets granted because somebody needed it at 2am, and then nothing happens to take it back.

  • The founders and the first engineers have full rights because there was nobody else to grant them to. The company has forty people now and the access has never been revisited.
  • Elevated rights were granted "temporarily" during an incident, a migration or a launch. Temporary has no expiry unless somebody builds one.
  • Production access is how support gets done. Engineers query the live database to answer customer questions, so removing access would break the support process rather than improve security.
  • Nobody can produce a list of who has admin. Not because it is secret, but because it lives across a cloud console, an identity provider, a database, a CI system and two SaaS tools that never talk to each other.
  • Shared credentials in a password manager. The account is administrative, several people know it, and the logs show only that "admin" did something.

The support case is the one worth being honest about. Telling an engineer they can no longer read production data does not work unless something replaces it. A control that removes capability without replacing it gets reversed within a month, and then the exception is worse than before.

BThe control

What a working version looks like

The aim is not to take privilege away. It is to make privilege temporary, requested, logged and reviewed — so that having it is an event rather than a property of a person.

Separate the identity from the privilege

Day to day accounts hold no administrative rights at all. Elevation happens through a separate role or account that a person assumes when they need it, so ordinary work never runs with privilege attached to it.

Make elevation time bound by default

Access is granted for a window, not indefinitely, and it expires on its own without anybody remembering to remove it. This is the single change that closes most of the findings: expiry does the work that periodic reviews are supposed to do and usually do not.

Require a reason, and put it where it can be read later

Every elevation carries a justification — a ticket, an incident number, a change record. The reason is what turns a log line into evidence, and it is the difference between "somebody had admin on Tuesday" and "this was authorised for this purpose".

Approve out of band for the highest rights

Routine elevation can be self-service with logging. Rights that could destroy data or disable logging need a second person, and that person cannot be the requester. Set the boundary deliberately rather than treating all privilege as one tier.

Replace the support use case, do not just block it

If engineers read production data to answer customer questions, give them a supported path: a read-only view with the sensitive fields masked, or a tool that answers the common questions without direct access. Then the removal holds.

Keep one list, generated rather than maintained

Who holds privileged rights, in which system, granted when and expiring when. Produced from the systems themselves, not typed into a spreadsheet — a maintained list is the first thing an auditor stops trusting.

CTiers

Not all privilege is the same

Treating every elevated right identically is what makes these controls painful. Sorting them into tiers is what makes the control survive contact with an engineering team.

TierExamplesStanding accessHow it is granted
Routine elevated Restart a service, read non-sensitive logs, re-run a job No Self-service, time bound, logged with a reason
Data access Query production data, export records, read customer content No Approved request, masked where possible, short window
Destructive or control-affecting Delete data, change access rights, alter logging or the pipeline No Second-person approval, narrow window, reviewed after use
Break glass Full administrative access during a live incident No Defined trigger, alerts on use, reviewed within days
Automation Deployment and integration accounts Yes, scoped Least privilege, credentials rotated, no interactive login

Automation is the only row where standing access is normally acceptable, and it is also the row most often abused: a deployment account with unrestricted rights is standing privilege that any engineer able to edit the pipeline can borrow. Scope it as tightly as a human account, and make sure nobody can log into it directly.

DThe test

How it gets tested

Four moves. The first one is where most companies come apart, and it happens before anybody looks at the control itself.

Produce the population of privileged accounts

Every system in scope, every account with elevated rights, human and non-human, exported from the systems themselves. Non-human accounts are part of the population and are the ones companies forget to include.

Pass — the list is generated, complete and reconciles across systems.   Exception — the list is maintained by hand, or a system in scope cannot produce one.

Check whether privilege is standing or granted

For each account, does the right exist permanently, or is it assumed for a window? Where standing rights remain, is the reason documented and is the account still needed by somebody still employed?

Pass — elevation is time bound and expires without intervention.   Exception — permanent administrative rights held by individuals, including founders.

Sample elevations and follow them end to end

Take individual grants from the period and trace each one: who requested it, on what stated basis, who approved it, when it expired, and what was done with it. This is where a control that exists on paper separates from one that operates.

Pass — each sampled grant has a reason, an approver where required, and an expiry that took effect.   Exception — grants with no recorded reason, or that outlived their stated window.

Test the joiners, movers and leavers path

Leavers from the period checked against every privileged system, not only the identity provider. Movers matter as much: people who changed role and accumulated the rights of both.

Pass — privileged rights removed promptly and provably on departure or change of role.   Exception — a leaver retaining access in any system in scope.

A leaver with live privileged access is the finding least likely to be argued down. It is binary, it is easy to evidence, and it is the one an enterprise customer will ask about directly rather than through the auditor.

EEvidence

What makes evidence hold up

Evidence gathered in good faith is often accurate and still unusable. Four questions decide whether it stands.

  • 01Timestamped. Capture date and time in UTC, with the on-screen clock in the image where possible.
  • 02Source-attributable. Which system, which account, which export or query produced it.
  • 03Complete for the period. A snapshot of who has admin today says nothing about who had it in March.
  • 04Unaltered. Raw export retained, any redaction noted, every item referenced to the step it supports.

Privileged access is harder to evidence than most controls because the population lives in five places and the history is easy to lose. Log retention is worth checking early: if your elevation records only go back thirty days, a twelve month audit period cannot be evidenced at all, and that is a problem no amount of remediation fixes retrospectively.

FBreaks

Where it usually goes wrong

  • The founder exception. Everybody else moved to time bound elevation and one or two people kept permanent rights because it was easier. Auditors look for exactly this.
  • Elevation with no reason recorded. The mechanism works, the logs exist, and every entry says only that access was granted. Without a justification the log proves activity, not authorisation.
  • A deployment account nobody scoped. Standing rights, broad permissions, credentials reachable by several engineers, and no interactive login controls.
  • Break glass used and never reviewed. Invoked during three incidents last year with no record of what was done under it and no review afterwards.
  • Leavers still present in a secondary system. Offboarding covers the identity provider; the database, the monitoring tool and the cloud console keep their own local accounts.

Three of these five are configuration and process changes that can be made in days. The founder exception is the one that needs a decision rather than a setting, and it is usually the person commissioning the work who has to make it.

GNext step

One control. A certification is around a hundred.

The depth above is the depth a whole programme gets. On a turnkey engagement I design the controls around how your company already works, put them in place, gather the evidence, and handle the auditor.

Making controls work, then certifying them

Tell me the situation in a couple of lines: the environment, the deadline, and who is asking for the certificate. Thirty minutes, no charge. If it is not something I should be doing, I will say so.