Backup restore testing evidence for ISO 27001, SOC 2 and NIS2
Every major security framework expects you to test your backups, not just take them. The wording is short and leaves a lot open, so teams often find out what "tested" means during the audit itself. This guide covers what the requirements say, what evidence usually satisfies them, and the mistakes that turn a restore test into an audit finding.
This is practical guidance, not legal or audit advice. Your auditor and your own policies have the final word.
What the frameworks say
| Framework | Requirement | What it means for restores |
|---|---|---|
| ISO/IEC 27001:2022, Annex A 8.13 (Information backup) | Backup copies of information, software and systems are maintained and regularly tested in line with an agreed backup policy. | You need a backup policy that defines what "regularly tested" means for you, and records showing you follow it. |
| SOC 2, Trust Services Criteria A1.3 (Availability) | Recovery plan procedures supporting system recovery are tested. | Auditors look for periodic restore tests across the audit period (Type II), not a single test. |
| SOC 2, A1.2 | Backup processes and recovery infrastructure are in place to meet availability objectives. | Your backups have to support the recovery times you claim. |
| NIS2 Directive, Article 21(2)(c) | Business continuity, such as backup management and disaster recovery, and crisis management. | National implementations and supervisors decide the detail; demonstrable, tested recovery is the safe interpretation. |
What auditors usually ask for
- A policy that says what is backed up, how often, how long it's kept, and how often restores are tested (for example: "production databases: automated restore test daily; full disaster recovery exercise yearly").
- Evidence that tests happened as the policy says, spread across the whole audit period. For SOC 2 Type II, the auditor typically samples dates and asks for the matching records.
- Evidence that the test proved something: what was restored, from which backup, whether it succeeded, how long it took and how you checked the result.
- What happened when a test failed: the ticket, the fix and the date of the next successful test. A failed test that was handled well is good evidence; a failure nobody noticed is a finding.
- Recovery objectives backed by measurements: if your continuity plan promises a 4-hour recovery time, your measured restore times should support it.
A restore test record template
Whatever tool or script you use, each test should leave a record with these fields. A spreadsheet works; a generated log or report is better because it can't be filled in after the fact.
| Field | Example |
|---|---|
| Date and time (UTC) | 2026-11-03 04:00 |
| System / database | prod-db (PostgreSQL 16) |
| Backup tested | s3://acme-backups/pg/2026-11-03.dump, created 02:00, 2.84 GB |
| Restore target | Isolated test environment, destroyed after the test |
| Result | Pass / Fail |
| Measured restore time | 11 min 42 s |
| Verification performed | Restore completed with 0 errors; all tables read; indexes checked; row counts within expected range; newest order 2 h before backup |
| Deviations and follow-up | None / ticket OPS-412, fixed 2026-11-04, re-tested pass |
| Performed by | Automated job (owner: platform team) |
Common mistakes that become findings
- "Restore succeeded" as the only check. A restore can finish without errors and still contain last week's data or an empty table. Record how you verified the content.
- One test the week before the audit. Type II periods cover months. Tests should be spread across the period as your policy states.
- Testing a different backup than production uses. Test the actual backups your recovery plan relies on, from the actual storage location.
- No record of failures. If tests can fail silently, nobody can show that failures were handled.
- Policy and practice disagree. If the policy says "monthly" and you tested twice a year, that's a finding even if both tests passed. Write a policy you can keep.
- Restored data left lying around. Test restores contain production data. Restore into an isolated environment and delete it afterwards, and say so in your records.
How often should you test?
The frameworks don't prescribe a frequency; your policy does. A common pattern:
- Automated restore test of each production database: daily or weekly. Cheap once automated, and it catches silent backup failures within a day.
- Full disaster recovery exercise (restoring a whole environment, with people following the runbook): once or twice a year.
Automation makes the frequent tests nearly free and gives you a continuous evidence trail, which is exactly what a Type II audit samples from. If you want to build it yourself, our guide How to test PostgreSQL backup restores automatically includes a working script.