Skip to content
ZK
ZAIN KHALIL KHAN
PORTFOLIO
All projects

Interactive build

Backup Assurance | Restore Readiness Verification

Backup verification model that tests each system's claimed recovery objectives against reality: interval versus RPO, measured restore duration versus RTO, immutability under a ransomware scenario, and how stale the last successful restore test is.

Live demo readyBackup & Recovery + Ransomware
Backup & RecoveryRansomwareRPO/RTOBusiness ContinuityImmutable StorageResilienceCase study / interactive demo

Case study

From problem to working system

Problem

Backup verification model that tests each system's claimed recovery objectives against reality: interval versus RPO, measured restore duration versus RTO, immutability under a ransomware scenario, and how stale the last successful restore test is.

My role

Full-stack software engineer

Solution

Backup verification model that tests each system's claimed recovery objectives against reality: interval versus RPO, measured restore duration versus RTO, immutability under a ransomware scenario, and how stale the last successful restore test is.

Architecture

The implementation combines the following technologies and system concerns.

Backup & RecoveryRansomwareRPO/RTOBusiness ContinuityImmutable StorageResilience

How it was built

  • Modelled a ransomware scenario separately, where mutable backups are worthless because an attacker with administrative access deletes them first.

Security decisions

  • Modelled a ransomware scenario separately, where mutable backups are worthless because an attacker with administrative access deletes them first.
  • Separated offsite and encryption posture from the recovery objectives, so a site-level event and a data-confidentiality event are assessed independently.
  • Reported readiness per system with the failing claim named, which is the format a continuity audit actually consumes.

Major challenges

  • Bounded worst-case data loss by the actual backup interval rather than the stated RPO, which is how the two diverge unnoticed.
  • Treated an untested backup as an unknown RTO rather than a met one, since a successful job proves only that a job ran.
  • Flagged restore tests older than 180 days as stale results, because infrastructure drifts away from the tested procedure.

Verified evidence

Results and measurable impact

  • Modelled a ransomware scenario separately, where mutable backups are worthless because an attacker with administrative access deletes them first.
  • Flagged restore tests older than 180 days as stale results, because infrastructure drifts away from the tested procedure.
  • Separated offsite and encryption posture from the recovery objectives, so a site-level event and a data-confidentiality event are assessed independently.
  • Reported readiness per system with the failing claim named, which is the format a continuity audit actually consumes.

No separate numeric outcome is documented, so this section shows shipped technical evidence without inventing metrics.

Screenshots and access

Product view

Interactive Demo

A scoped, fully functional recreation of this project's core feature runs below, live in your browser. Reset it, resize it, or expand it to full screen.

Backup Assurance

Product workspace

Backup AssuranceWorkspace1 updates
Backup Assurance · Restore Readinesssystems with a tested restore inside their objectives
1/5 ready

A backup job that reports success proves only that a job ran. Readiness is three separate claims: the interval bounds worst-case data loss to the RPO, a measured restore fits inside the RTO, and under a ransomware scenario the copies are immutable, because mutable backups are the first thing an attacker with administrative access deletes.

Restore-ready

1/5

no high findings

Never tested

1

RTO is unknown

Tier 1 failing

2

of the critical systems

Immutable copies

2/5

object-lock or equivalent

Restore-readyransomware
1/5ready
Where readiness breaks
Interval cannot meet the RPO1 systems
Never restore-tested1 systems
Mutable backups3 systems

Under a ransomware scenario every mutable copy counts as lost, because an attacker with administrative access deletes backups before encrypting.

System assessment
Payments databasetier 1 every 5m · RPO target 15mrestore 42m · RTO target 60mRPO metRTO met
Worst-case data loss vs RPOwithin target
Measured restore vs RTOwithin target
immutableoffsite copyencryptedtested 21d ago

Meets RPO and RTO with a tested restore. No findings.

Customer file sharetier 1 every 1d · RPO target 60mrestore 190m · RTO target 240mRPO missedRTO met
Worst-case data loss vs RPOover target
Measured restore vs RTOwithin target
mutableoffsite copyencryptedtested 210d ago

Backup interval of 1440 min cannot meet a 60 min RPO. Worst-case data loss is 1440 min.

Last successful restore test was 210 days ago. Treat the result as stale.

Backups are mutable. An attacker with administrative access deletes these before encrypting.

Identity provider configtier 1 every 60m · RPO target 60mrestore untested · RTO target 120mRPO metRTO unknown
Worst-case data loss vs RPOwithin target
Measured restore vs RTOuntested
immutableoffsite copyencrypted

Never restore-tested. The RTO for this system is unknown, not met.

Internal wikitier 2 every 1d · RPO target 1drestore 55m · RTO target 1dRPO metRTO met
Worst-case data loss vs RPOwithin target
Measured restore vs RTOwithin target
mutablesingle siteencryptedtested 95d ago

Backups are mutable. An attacker with administrative access deletes these before encrypting.

No offsite copy. A site-level event takes the primary and the backup together.

Build artefact cachetier 3 every 7d · RPO target 7drestore 30m · RTO target 3dRPO metRTO met
Worst-case data loss vs RPOwithin target
Measured restore vs RTOwithin target
mutablesingle siteunencryptedtested 400d ago

Last successful restore test was 400 days ago. Treat the result as stale.

Backups are mutable. An attacker with administrative access deletes these before encrypting.

No offsite copy. A site-level event takes the primary and the backup together.

Backup data is not encrypted at rest.

Zain Khalil Khan