From a11bef662200e84f8cdc2c64850e426c8ff77bb4 Mon Sep 17 00:00:00 2001 From: pedrooot Date: Wed, 18 Dec 2024 16:52:51 +0100 Subject: [PATCH] feat(check_cloudwatch_log_metric_filter): add comprobations for Nonetypes --- .../services/cloudwatch/lib/metric_filters.py | 38 ++++++++++--------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/prowler/providers/aws/services/cloudwatch/lib/metric_filters.py b/prowler/providers/aws/services/cloudwatch/lib/metric_filters.py index 027b1a4e1f..0a3defa9a4 100644 --- a/prowler/providers/aws/services/cloudwatch/lib/metric_filters.py +++ b/prowler/providers/aws/services/cloudwatch/lib/metric_filters.py @@ -19,23 +19,25 @@ def check_cloudwatch_log_metric_filter( if trail.log_group_arn: log_groups.append(trail.log_group_arn.split(":")[6]) # 2. Describe metric filters for previous log groups - for metric_filter in metric_filters: - if metric_filter.log_group.name in log_groups and re.search( - metric_filter_pattern, metric_filter.pattern, flags=re.DOTALL - ): - report.resource_id = metric_filter.log_group.name - report.resource_arn = metric_filter.log_group.arn - report.region = metric_filter.log_group.region - report.resource_tags = getattr(metric_filter.log_group, "tags", []) - report.status = "FAIL" - report.status_extended = f"CloudWatch log group {metric_filter.log_group.name} found with metric filter {metric_filter.name} but no alarms associated." - # 3. Check if there is an alarm for the metric - for alarm in metric_alarms: - if alarm.metric == metric_filter.metric: - report.status = "PASS" - report.status_extended = f"CloudWatch log group {metric_filter.log_group.name} found with metric filter {metric_filter.name} and alarms set." - break - if report.status == "PASS": - break + if metric_filters is not None: + for metric_filter in metric_filters: + if metric_filter.log_group.name in log_groups and re.search( + metric_filter_pattern, metric_filter.pattern, flags=re.DOTALL + ): + report.resource_id = metric_filter.log_group.name + report.resource_arn = metric_filter.log_group.arn + report.region = metric_filter.log_group.region + report.resource_tags = getattr(metric_filter.log_group, "tags", []) + report.status = "FAIL" + report.status_extended = f"CloudWatch log group {metric_filter.log_group.name} found with metric filter {metric_filter.name} but no alarms associated." + # 3. Check if there is an alarm for the metric + if metric_alarms is not None: + for alarm in metric_alarms: + if alarm.metric == metric_filter.metric: + report.status = "PASS" + report.status_extended = f"CloudWatch log group {metric_filter.log_group.name} found with metric filter {metric_filter.name} and alarms set." + break + if report.status == "PASS": + break return report