Backup plans should have minimum frequency and minimum retention configured
Recovery points that expire too quickly leave you exposed during investigations, legal holds, or prolonged incident response. A 35-day floor gives teams enough runway to detect delayed-onset issues (ransomware with a long dwell time, for example) and restore to a known-good state before the oldest usable snapshot disappears.
Short retention also creates compliance gaps that auditors flag fast. Frameworks covering backup and recovery typically require evidence that backups survive at least 30 to 35 days, and missing the threshold by even a single day can result in a finding.
Retrofit consideration
Increasing retention on existing backup plans will generate additional storage costs for EBS snapshots, RDS snapshots, and other protected resources. Estimate the cost delta before rolling this change across all plans.
Implementation
Choose the approach that matches how you manage Terraform.
Use AWS provider resources directly. See docs for the resources involved: aws_backup_plan.
resource "aws_backup_plan" "this" {
name = "pofix-abc123"
rule {
lifecycle {
delete_after = 35
}
rule_name = "pofix-rule-abc123"
schedule = "cron(0 12 * * ? *)"
target_vault_name = "example-backup-vault"
}
}
What this control checks
The policy checks each aws_backup_plan resource. Every rule block must include a lifecycle block with delete_after set to 35 or greater. If delete_after is omitted entirely (recovery points never expire), the retention check passes. If it is below 35, the plan fails.
The schedule argument must also be a cron or rate expression that fires at least as often as the required minimum frequency. A rule failing either condition fails the control. When multiple rules exist in a single plan, at least one must satisfy both requirements.
Common pitfalls
delete_after omitted versus set to zero
Omitting
lifecycleentirely from aruleblock inaws_backup_planretains recovery points indefinitely and passes the retention check. Explicitly settingdelete_after = 0is invalid and causes an API error. These are not equivalent states, and conflating them is a common source of confusion.Multiple rules with mixed retention
If one rule has
delete_after = 7for operational restores and another hasdelete_after = 90for compliance, the Config rule may still flag the plan depending on whether it evaluates individual rules or the plan as a whole. Don't assume the compliant rule covers for the short one. Set every rule to at least 35 days.Cold storage transition miscounted as retention
cold_storage_aftermoves recovery points to cold storage but does not extend or replacedelete_after. A rule withcold_storage_after = 30anddelete_after = 30still deletes the point after 30 days total. The transition and the deletion are independent clocks.Schedule frequency not validated by retention alone
Setting
delete_after = 90satisfies the retention half of this control, but ifscheduleuses a cron expression that only fires monthly, the frequency check still fails. Both conditions must pass in the same rule.
Audit evidence
Config rule evaluation results for BACKUP_PLAN_MIN_FREQUENCY_AND_MIN_RETENTION_CHECK with requiredRetentionDays set to 35 should show all backup plans as COMPLIANT. Back this up with the Backup console showing each plan's schedule expression and lifecycle retention settings, plus CloudTrail CreateBackupPlan and UpdateBackupPlan events confirming retention hasn't been reduced below the threshold.
For CLI-based evidence, export the plan JSON via aws backup get-backup-plan and check the DeleteAfterDays value in each rule's lifecycle section. Pair this with a recovery point report from aws backup list-recovery-points-by-backup-vault to show that points span at least 35 days back.
Framework-specific interpretation
SOC 2: Availability criteria expect organizations to demonstrate recoverability consistent with their documented commitments and service level objectives. Thirty-five days is typically what auditors ask to see when reviewing backup controls, though the exact requirement depends on what your service commitments actually state.
PCI DSS v4.0: PCI DSS v4.0 ties retention duration to business, legal, and regulatory context rather than prescribing a specific number of days. A 35-day floor is one way to satisfy those objectives for in-scope systems, but the right value depends on your documented data retention policy and any applicable legal holds.
HIPAA Omnibus Rule 2013: 45 CFR 164.308(a)(7)(ii)(A) requires covered entities to create and maintain retrievable exact copies of ePHI. Thirty-five days covers the typical window for breach investigation, audit, and disaster recovery, which is what Security Rule reviewers check when evaluating backup adequacy.
NIST Cybersecurity Framework v2.0: Retention at or above 35 days feeds into PR and RC function outcomes for data protection and recovery planning. Keeping recovery points for at least that long supports timely restoration after a disruption, satisfies part of the RC.RP category, and gives measurable evidence for Protect-side data management outcomes.
FedRAMP Moderate Baseline Rev 4: CP-9 and CP-10 expect backup copies retained long enough to support the recovery time and recovery point objectives defined in the system contingency plan. At the Moderate baseline, a 35-day floor is the evidence auditors ask for during contingency plan reviews.
Related controls
Tool mappings
Use these identifiers to cross-reference this control across tools, reports, and evidence.
Compliance.tf Control:
backup_plan_min_retention_35_daysAWS Config Managed Rules:
BACKUP_PLAN_MIN_FREQUENCY_AND_MIN_RETENTION_CHECK,BACKUP_RECOVERY_POINT_MINIMUM_RETENTION_CHECKPowerpipe Control:
aws_compliance.control.backup_plan_min_retention_35_days
Last reviewed: 2026-03-09