turbot/steampipe-mod-gcp-compliance

Control: Ensure that the log metric filter and alerts exist for VPC network changes

Description

It is recommended that a metric filter and alarm be established for Virtual Private Cloud (VPC) network changes.

Usage

Run the control in your terminal:

powerpipe control run gcp_compliance.control.logging_metric_alert_network_changes

Snapshot and share results via Turbot Pipes:

powerpipe login
powerpipe control run gcp_compliance.control.logging_metric_alert_network_changes --share

SQL

This control uses a named query:

with filter_data as (
select
m.project as project,
display_name alert_name,
count(m.name) metric_name
from
gcp_monitoring_alert_policy,
jsonb_array_elements(conditions) as filter_condition
join gcp_logging_metric m on m.filter ~ '\s*resource\.type\s*=\s*gce_network\s*AND\s*\(\s*protoPayload\.methodName\s*=\s*"beta\.compute\.networks\.insert"\s*OR\s*protoPayload\.methodName\s*=\s*"beta\.compute\.networks\.patch"\s*OR\s*protoPayload\.methodName\s*=\s*"v1\.compute\.networks\.delete"\s*OR\s*protoPayload\.methodName\s*=\s*"v1\.compute\.networks\.removePeering"\s*OR\s*protoPayload\.methodName\s*=\s*"v1\.compute\.networks\.addPeering"\s*\)'
and filter_condition -> 'conditionThreshold' ->> 'filter' like '%metric.type="' || m.metric_descriptor_type || '"%'
where
enabled
group by
m.project, display_name, m.name
)
select
'https://cloudresourcemanager.googleapis.com/v1/projects/' || project_id resource,
case
when d.metric_name > 0 then 'ok'
else 'alarm'
end as status,
case
when d.metric_name > 0
then 'Log metric and alert exist for network changes.'
else 'Log metric and alert do not exist for network changes.'
end as reason
, project_id as project
from
gcp_project as p
left join filter_data as d on d.project = p.name

Tags