S3 bucket used for CloudTrail logs is publicly accessible
- Severity
- Critical
- Service
- CloudTrail
- Check ID
- CLOUDTRAIL_BUCKET_PUBLIC
What this check finds
The S3 bucket storing CloudTrail logs grants public read or write access via its ACL. Anyone on the internet can read or tamper with your audit trail, completely undermining log integrity and exposing sensitive API call history. CIS v1.4 §3.3.
Passing looks like: CloudTrail log bucket is private.
How to fix it
Remove all public grants from the CloudTrail bucket ACL.
AWS CLI
aws s3api put-bucket-acl --bucket CLOUDTRAIL_BUCKET --acl privateThen enable S3 Block Public Access at the account and bucket level to prevent future misconfiguration.
Names in capitals are placeholders for your own resource. Review a command before you run it.
AWS console
S3 → select the bucket → Permissions → Block public access → enable all four settings.
Compliance controls it is evidence for
A failing result counts against these controls in KloudLytics; a passing one is evidence towards them. How compliance mapping works
| Framework | Controls |
|---|---|
| NIST SP 800-53 Rev5 (Moderate) |
|
| NIST Cybersecurity Framework 2.0 |
|
| ISO/IEC 27001:2022 Annex A |
|
Checked on every scan
KloudLytics runs this check each time it scans a connected AWS account, through a read-only role, and lists every affected resource with its region. On Pro and Business a fix is written for the specific resource rather than the general case above. The exact access it needs
More CloudTrail checks
- HighCloudTrail trail does not log all management events (Read + Write)
- MediumCloudTrail is not logging S3 data events
- MediumCloudTrail logs are not encrypted with KMS
- MediumCloudTrail logs are not integrated with CloudWatch Logs
- LowCloudTrail Insights is not enabled on the trail
- LowCloudTrail is not enabled
- LowCloudTrail log file validation is not enabled
- LowCloudTrail S3 bucket does not have server-access logging enabled