Check ID:
Provider: AWS
Service:
Severity: LOW
Resource type:
s3_bucket_lifecycle_enabledProvider: AWS
Service:
s3Severity: LOW
Resource type:
AwsS3BucketWhat this check verifies
Amazon S3 buckets use Lifecycle configurations with at least one ruleStatus: Enabled to automate object Transitions and Expiration based on age, prefix, or tags
Risk
Without lifecycle rules, objects persist indefinitely, driving costs and retaining sensitive data beyond policy. Unchecked log/version growth strains operations and recovery. Long-lived data increases exposure if the account is compromised and can break required deletion timelines, affecting confidentiality and availability.Recommendation
Define Lifecycle policies by data classification: setExpiration to enforce retention, use Transitions to lower-cost classes, and enable AbortIncompleteMultipartUpload. For critical logs, keep versioning and, if required, Object Lock. Limit who can change lifecycle using least privilege and separation of duties.
Remediation
- CLI
- Terraform
- Native IaC
- Dashboard steps
References
- https://docs.aws.amazon.com/securityhub/latest/userguide/s3-controls.html#s3-13
- https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html
- https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html
- https://www.trendmicro.com/trendaivisiononecloudriskmanagement/knowledge-base/aws/S3/lifecycle-configuration.html
Where this check fires
This check runs on every scheduled scan against your AWS account. Findings appear at Cloud Security → Findings filterable byCheck ID = s3_bucket_lifecycle_enabled. To re-evaluate after a fix, hit Run now on the account’s schedule under Cloud Security → Schedules — the next scan re-checks this control and marks the finding fixed or keeps it persistent.
← Back to AWS checks