Guide
Audit readiness without the scramble: a practical access governance playbook
A practical access governance playbook to reduce audit stress and improve evidence quality.
Ask an IT or security lead what the week before an audit feels like and you tend to hear the same story: someone reconstructing evidence from ticket exports, screenshots, and chat threads, trying to prove that access controls worked over a period that ended months ago. The access itself was usually fine. The problem is proving it after the fact, under a deadline, from records that were never designed to be evidence.
For teams of 100 to 3,000 people, capturing evidence as access changes happen reduces the work of preparing for an audit.
Why audits fail without evidence
Access audits rarely fail because someone had the wrong access. They fail because you cannot prove the right thing happened. Frameworks like SOC 2 and ISO 27001 do not ask you to assert that a control works — they sample a population and ask you to demonstrate that it operated for each item in the sample. A control is only as strong as the evidence that it ran.
That distinction is where most teams get caught. The control exists: joiners get provisioned, leavers get deprovisioned, access is reviewed quarterly. But the evidence was expected to be reassembled later rather than captured at the moment of the change. So the reconstruction turns up gaps — a revocation that was decided but never executed, a timestamp typed in by hand, an approval that lives in an email nobody can find, a review where half the items were never actually decided.
These gaps come from how evidence is collected. Records produced during the work provide a stronger basis for an audit than later recollections.
Evidence map: who, what, when, why
Before an audit, map each control you claim to the record that proves it ran. The most useful test for any piece of evidence is whether it answers four questions:
- Who made the change — a named person, a specific policy, or a scheduled job. “The system did it” is not an answer unless the system records which rule, and which version of that rule, acted.
- What actually changed — the specific resource and Grant, not the vague label. “Access to the finance app” is weaker than “the approver Grant on the finance app.”
- When it happened — a timestamp captured at the moment of the change, not one reconstructed later from memory or file dates.
- Why the access exists — an approval, a birthright policy, a request, or a deliberate manual grant. Access with no recorded reason is one of the most common findings in an access-control audit.
Start with these records:
- Approval evidence, by Grant. For each Grant, who approved it, when, and under what policy. Per-Grant, not per-request, because auditors sample Grants.
- Lifecycle change logs. The joiner, mover, and leaver events for each identity, with the access that was added or removed as a result — especially the leaver events, where a missed revocation is a finding.
- Exception-handling records. Every sanctioned exception to a rule, with who approved it, why, and when it expires. Undocumented exceptions read to an auditor as broken controls.
Access reviews: cadence and completion
The periodic access review — the user access review, or access certification — is the control most audits center on, and the one teams most often present incompletely. Auditors check two things: that the review happened on its stated cadence, and that it actually completed.
Completion is a higher bar than most teams treat it as. Sending a spreadsheet to managers is not a completed review. A defensible review has a scoped population, a recorded decision on every item, the identity of the reviewer captured, separation of duties so nobody signs off on their own access, and the revocations that the review produced actually carried out and proven. A review that decides to remove ten grants but never executes them is worse than no review: it is documented evidence that a control did not work.
The common failure modes are predictable. Reviews that “ran” but left half the items undecided. Reviewers rubber-stamping because the queue gave them no context to decide with. The beneficiary reviewing their own access because the routing resolved back to them. Revocations recorded on paper but never handed to the system that removes the access. Each of these is a finding waiting to happen.
On cadence, match your framework and your risk: quarterly for privileged and sensitive access, at least annually for the rest, documented and applied consistently. The gap auditors punish is rarely a cadence that is a little slow — it is a cadence that is inconsistent, where one quarter was thorough and the next was skipped.
Retention and reporting expectations
Evidence you cannot retrieve later is the same as no evidence, so decide retention before you need it. Audit periods look backward: a SOC 2 Type II examination covers a window — commonly six to twelve months — and your evidence has to span the whole window, not just the day the request lands. Plan retention to cover the audit period plus whatever lookback your frameworks and customer contracts require, and keep records immutable enough that nobody can quietly edit one after the fact. A record that could have been altered is a record an auditor discounts.
Reporting is the other half. The deliverable an auditor actually wants is usually an export they can read independently — a population as of a date, with the decision or approval on each row. If producing that export is a manual project every time, you will do it under deadline pressure and introduce the exact errors the audit is looking for. The better test is whether a non-admin can verify the export without trusting your word for it. Deterministic exports — the same inputs producing the same file, ideally with a content hash — make evidence checkable rather than merely presentable.
Sample auditor questions, and what a good answer looks like
These examples show the records needed to answer common audit questions.
- “Show me everyone who had access to the finance system as of quarter-end, and the approval for each.” The answer is the population as it stood on that date, with the approval or reason on every row — not today’s access list, but the list as it was then.
- “For privileged access granted this quarter, show the approval trail, the policy applied, and the outcome.” The answer ties three things together: the approval chain, the rule that authorized the grant, and the fulfillment result.
- “What access was provisioned but never used?” Where the target system exposes usage signals, compare observed activity to granted access. Where it does not, “provisioned, with no confirmed activity” is still an honest, defensible answer — far better than guessing.
- “What happened in the last three access reviews?” Scope, reviewers, completion rate, decisions, and the revocations that followed — exported, not narrated from memory.
How Owlie supports audit readiness
Owlie captures evidence as access changes. Its composable building blocks let you configure governance around your systems.
- A reason on every access item. Each account and each Grant carries a recorded reason it exists — a policy binding, an access request, a direct admin grant, or observed drift. “Why does this person have this?” is answered by walking the item back to its recorded reason — the governing policy and the exact version that applied, the approving request, or the admin who granted it directly.
- An execution journal and versioned state. Every access-lifecycle operation carries a target version, and each successful apply persists the observed account state in the same transaction that advances that version. A per-step journal records what ran, what the target system returned, and which steps were retried or superseded. Access fulfilled through a manual ticket produces the same journal, versioning, and reason trail as access fulfilled through an automated connector.
- Reviews that produce evidence. A review captures an immutable snapshot of the access and the governing policy as they were at review time, so a decision can be read against what actually existed then. A reviewer cannot decide on their own access, decisions can require a written reason, each item yields a deterministic evidence packet, and a whole campaign exports as a bundle with a manifest.
- Exceptions as first-class, expiring records. A sanctioned exception is recorded against the specific access it spares, scoped, with an approver, a reason, and an expiry — and it lapses on its own when it expires.
- Offboarding and time-boxing by default. A terminated identity is denied access by an editable default policy, and grants can carry a time limit that expires without anyone remembering to remove it.
Owlie is early, and building this in the open. If you want to see it run against your own attestation cycle, sign up free and tell us what your review looks like today.