Back to Checks
Ensure a log metric filter and alarm exist for AWS Config configuration changes
AWS-0155
Service: cloudwatchSeverity: low
OfficialBuilt-inVerified
You can do real-time monitoring of API calls by directing CloudTrail logs to CloudWatch Logs and establishing corresponding metric filters and alarms. CIS recommends that you create a metric filter and alarm for changes to AWS Config configuration settings. Monitoring these changes helps ensure sustained visibility of configuration items in the account.
Run this check with Prowler
Run in Prowler CloudRun
prowler iac --checks AWS-0155Recommendation
Create an alarm to alert on AWS Config configuration changes
Check Code
# METADATA
# title: Ensure a log metric filter and alarm exist for AWS Config configuration changes
# description: |
# You can do real-time monitoring of API calls by directing CloudTrail logs to CloudWatch Logs and establishing corresponding metric filters and alarms.
# CIS recommends that you create a metric filter and alarm for changes to AWS Config configuration settings. Monitoring these changes helps ensure sustained visibility of configuration items in the account.
# scope: package
# schemas:
# - input: schema["cloud"]
# related_resources:
# - https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudwatch-alarms-for-cloudtrail.html
# custom:
# id: AWS-0155
# long_id: aws-cloudwatch-require-config-configuration-changes-alarm
# aliases:
# - AVD-AWS-0155
# - require-config-configuration-changes-alarm
# - aws-cloudwatch-require-config-configuration-changes-alarm
# provider: aws
# service: cloudwatch
# severity: LOW
# recommended_action: Create an alarm to alert on AWS Config configuration changes
# frameworks:
# cis-aws-1.2:
# - "3.9"
# cis-aws-1.4:
# - "4.9"
# input:
# selector:
# - type: cloud
# subtypes:
# - service: cloudwatch
# provider: aws
package builtin.aws.cloudwatch.aws0155
import rego.v1
import data.lib.aws.trails
filter_pattern := `{($.eventSource=config.amazonaws.com) && (($.eventName=StopConfigurationRecorder) || ($.eventName=DeleteDeliveryChannel) || ($.eventName=PutDeliveryChannel) || ($.eventName=PutConfigurationRecorder))}`
deny contains res if {
some trail in trails.trails_without_filter(filter_pattern)
res := result.new("Cloudtrail has no Config configuration change log filter", trail)
}
deny contains res if {
some trail in trails.trails_without_alarm_for_filter(filter_pattern)
res := result.new("Cloudtrail has no Config configuration change alarm", trail)
}