S3 general purpose buckets should log object-level write events
Checks that at least one CloudTrail multi-Region trail logs S3 object-level write events for every bucket, recording who wrote or deleted each object. One trail covers the whole account; a selector limited to named buckets, operations or callers does not count.
- service
- S3
- severity
- Medium
- scope
- evaluated once per account
How to fix it
- Overwrites existing settings: The CLI and Terraform routes replace every event selector on the trail, so include the ones it already has, such as management events and any Lambda or DynamoDB data events.
- Affects another check: Log all events, as the Terraform route does, also clears S3.23 (reads); Log only write events leaves it failing.
In the console
CloudTrail → Trails → the multi-Region trail → Data events
- Resource type
- S3
- Log selector template
- Log all events, or Log only write events (either passes)
With the AWS CLI
aws cloudtrail put-event-selectors --trail-name <trail-arn> --event-selectors file://event-selectors.json --region <home-region>With Terraform
resource "aws_cloudtrail" "this" {
name = var.trail_name
s3_bucket_name = var.log_bucket
is_multi_region_trail = true
advanced_event_selector {
name = "Log all S3 object events"
field_selector {
field = "eventCategory"
equals = ["Data"]
}
field_selector {
field = "resources.type"
equals = ["AWS::S3::Object"]
}
}
}
See which of your accounts this check is failing on.
Book a live scan