The compliance wall problem
ISO/IEC 27001:2022 Annex A has 93 controls across 4 themes. Most organisations implement them by producing Word documents that nobody reads after the audit cycle ends. The documents exist to satisfy the auditor, not to change behaviour.
The problem shows up during incidents. An engineer faces an anomalous event at 2 AM and tries to find the incident response policy. They find a 40-page document written in passive voice. They close it and do what seems right. The policy failed the only test that matters.
What the standard actually requires
ISO 27001 requires documented policies, evidence of implementation, and evidence of review. It does not specify format, length, or reading level. The auditor checks that the control is addressed, that someone owns it, and that there's evidence it's followed. A one-page policy that gets referenced in real incidents satisfies this better than a 40-page document that doesn't.
The rewrite approach
For each of the 14 policies, I used a three-column structure:
- Control ID + what it means in plain English — one sentence. No references to the standard's own language.
- What we do — the specific tool, process, or configuration that implements this control. Named systems, not categories.
- What you do if it breaks — a numbered runbook. Who to call, what to check, where to log it.
Before and after: A.9.1.1 — Access Control Policy
"An access control policy shall be established, documented, and reviewed based on business and information security requirements. Asset owners shall take account of the access control policy when granting access rights to assets."
A.9.1.1 — Who can access what.
We use role-based access in Okta. No user gets rights not tied to their role. New accounts: raise a ticket in Jira → manager approval → IT provisions within 24h. Stale accounts: automated 90-day disable in Okta. Violation? Disable account → log in the SIEM → notify team lead.
The template that worked
Every rewritten policy follows this skeleton. The heading is the control ID plus a human-readable label. The body is never longer than one page.
14 policies: what changed
- Access control (A.9.x) — linked directly to Okta group configuration; IR steps reference specific ticket queues
- Incident response (A.16.x) — replaced generic phases with actual tooling: Wazuh alert → Jira ticket → Slack channel → post-mortem template
- Data classification (A.8.2) — reduced to a 4-tier table with examples per tier; no prose
- Change management (A.12.1.2) — mapped to existing GitLab merge request workflow, not a separate process
- Supplier relations (A.15.x) — one-page vendor risk checklist replacing a 20-page document
The auditor approved all 14 without revision requests. More importantly, three months later, the IR policy was referenced correctly during an actual incident. That's the only metric that matters.