Control: 3.9 Ensure that Object-level logging for read events is enabled for S3 buckets
Description
S3 object-level API operations such as GetObject, DeleteObject, and PutObject are called data events. By default, CloudTrail trails don't log data events and so it is recommended to enable Object-level logging for S3 buckets.
Enabling object-level logging will help you meet data compliance requirements within your organization, perform comprehensive security analysis, monitor specific patterns of user behavior in your AWS account or take immediate actions on any object-level API activity using Amazon CloudWatch Events.
Remediation
From Console:
- Login to the AWS Management Console and navigate to S3 dashboard at https://console.aws.amazon.com/s3/.
- In the left navigation panel, click
buckets
and then click the name of the S3 bucket that you want to examine. - Click the
Properties
tab to see the bucket configuration in detail. - In the
AWS Cloud Trail data events
section, select the trail name for recording activity. You can choose an existing trail or create a new one by clicking theConfigure in CloudTrail
button or navigating to the CloudTrail console. - Once the trail is selected, select the
Data Events
check box. - Select
S3
from theData event type
drop-down. - Select
Log all events
from theLog selector template
drop-down. - Repeat steps 2-7 to enable object-level logging of read events for other S3 buckets.
From Command Line:
- To enable
object-level
data events logging for S3 buckets within your AWS account, run theput-event-selectors
command using the name of the trail that you want to reconfigure as identifier:
aws cloudtrail put-event-selectors --region <region-name> --trail-name <trail-name> --event-selectors '[{ "ReadWriteType": "ReadOnly", "IncludeManagementEvents":true, "DataResources": [{ "Type": "AWS::S3::Object", "Values": ["arn:aws:s3:::<s3-bucket-name>/"] }] }]'
- The command output will be
object-level
event trail configuration. - If you want to enable it for all buckets at once, change the Values parameter to
["arn:aws:s3"]
in the previous command. - Repeat step 1 for each s3 bucket to update object-level logging of read events.
- Change the AWS region by updating the
--region
command parameter, and perform the process for the other regions.
Usage
Run the control in your terminal:
powerpipe control run aws_compliance.control.cis_v400_3_9
Snapshot and share results via Turbot Pipes:
powerpipe loginpowerpipe control run aws_compliance.control.cis_v400_3_9 --share
SQL
This control uses a named query:
cloudtrail_s3_object_read_events_audit_enabled