monitoring.organization_cis_log_alerts_central — version 1.7

Source: presets/monitoring/organization-cis-log-alerts-central.satz

Purpose

Centralized log-based alerting for CIS 2.5-2.12 in 5.0 numbering, 2.4-2.11 in 4.0.

One logging bucket + second org sink + 8 bucket-scoped metrics + 8 alert policies + email channel. Estate wiring: nothing to set when the audit logsink pack is used — the alert project defaults to ITS project. Without that pack, set cis_central_bucket_project.

Filters are verbatim CIS/Prowler strings; alert filters reference metric names (dependency edge) and pin resource.type= "logging_bucket" (bucket-scoped metrics report against it — verified live).

Use it

params {
  // the pack's own defaults — copy only the lines you change
  cis_central_bucket_project = logsink_project_id
  cis_central_bucket_id = "{customer_shortname}-organization-log-alerts"
  cis_central_bucket_location = default_region
  cis_central_bucket_retention_days = 30
  cis_central_sink_name = "cis-central-metrics-sink"
  cis_central_email = "gcp-security@{customer_domain}"
  cis_central_channel_name = "CIS Security Alerts (org)"
  cis_central_alert_window = "300s"
}

use "presets/monitoring/organization-cis-log-alerts-central.satz"

Needs from outside the pack:

Params

param default
cis_central_bucket_project logsink_project_id
cis_central_bucket_id "{customer_shortname}-organization-log-alerts"
cis_central_bucket_location default_region
cis_central_bucket_retention_days 30
cis_central_sink_name "cis-central-metrics-sink"
cis_central_email "gcp-security@{customer_domain}"
cis_central_channel_name "CIS Security Alerts (org)"
cis_central_alert_window "300s"

Questions

What to ask before this pack is configured, and what changing the answer costs.

asks about prompt reversal blast recommends
cis_central_email The address the organisation's security alerts are sent to (a group, never a person) edit high —
cis_central_bucket_project The project that hosts the alerting bucket, the metrics and the alert policies recreate low —

cis_central_email — Monitoring sends from alerting-noreply@google.com, so the mailbox must exist and accept external mail; a group whose members have no mailboxes drops every alert silently, and nothing in the estate can detect that. People leave; groups have owners.

cis_central_bucket_project — Every metric and policy is created in this project; moving them is a recreate and loses alert history. The default is the audit-logsink pack's project, by reference — one logging project for the archive and the alerting — and needs no answer beyond accepting it when that pack is used.

Contributes

resource type labels
google_logging_metric cis_central_2_5_project_ownership, cis_central_2_6_audit_config, cis_central_2_7_custom_role, cis_central_2_8_firewall_rule, cis_central_2_9_network_route, cis_central_2_10_network, cis_central_2_11_bucket_permission, cis_central_2_12_sql_instance
google_logging_organization_sink cis_central_metrics_sink
google_logging_project_bucket_config cis_central_metrics
google_monitoring_alert_policy cis_central_2_5_project_ownership, cis_central_2_6_audit_config, cis_central_2_7_custom_role, cis_central_2_8_firewall_rule, cis_central_2_9_network_route, cis_central_2_10_network, cis_central_2_11_bucket_permission, cis_central_2_12_sql_instance
google_monitoring_notification_channel cis_central_alerts
google_project_iam_member cis_central_sink_writer

Claims

framework control title kind witnesses interpretation
cis-gcp 4.0 2.4 Project ownership change alerts contributes google_logging_organization_sink.cis_central_metrics_sink
google_monitoring_notification_channel.cis_central_alerts
Central metrics pipeline: org-level sink into the metrics bucket plus a notification channel — the substrate all per-control alerts build on.
cis-gcp 5.0 2.5 Project ownership change alerts contributes google_logging_organization_sink.cis_central_metrics_sink
google_monitoring_notification_channel.cis_central_alerts
As for 4.0 §2.4 (5.0 §2.5): the substrate every alert stands on.
cis-gcp 4.0 2.4 Project ownership change alerts implements google_logging_metric.cis_central_2_5_project_ownership
google_monitoring_alert_policy.cis_central_2_5_project_ownership
cis-gcp 5.0 2.5 Project ownership change alerts implements google_logging_metric.cis_central_2_5_project_ownership
google_monitoring_alert_policy.cis_central_2_5_project_ownership
cis-gcp 4.0 2.5 Audit configuration change alerts implements google_logging_metric.cis_central_2_6_audit_config
google_monitoring_alert_policy.cis_central_2_6_audit_config
cis-gcp 5.0 2.6 Audit configuration change alerts implements google_logging_metric.cis_central_2_6_audit_config
google_monitoring_alert_policy.cis_central_2_6_audit_config
cis-gcp 4.0 2.6 Custom role change alerts implements google_logging_metric.cis_central_2_7_custom_role
google_monitoring_alert_policy.cis_central_2_7_custom_role
cis-gcp 5.0 2.7 Custom role change alerts implements google_logging_metric.cis_central_2_7_custom_role
google_monitoring_alert_policy.cis_central_2_7_custom_role
cis-gcp 4.0 2.7 VPC firewall rule change alerts implements google_logging_metric.cis_central_2_8_firewall_rule
google_monitoring_alert_policy.cis_central_2_8_firewall_rule
cis-gcp 5.0 2.8 VPC firewall rule change alerts implements google_logging_metric.cis_central_2_8_firewall_rule
google_monitoring_alert_policy.cis_central_2_8_firewall_rule
cis-gcp 4.0 2.8 VPC route change alerts implements google_logging_metric.cis_central_2_9_network_route
google_monitoring_alert_policy.cis_central_2_9_network_route
cis-gcp 5.0 2.9 VPC route change alerts implements google_logging_metric.cis_central_2_9_network_route
google_monitoring_alert_policy.cis_central_2_9_network_route
cis-gcp 4.0 2.9 VPC network change alerts implements google_logging_metric.cis_central_2_10_network
google_monitoring_alert_policy.cis_central_2_10_network
cis-gcp 5.0 2.10 VPC network change alerts implements google_logging_metric.cis_central_2_10_network
google_monitoring_alert_policy.cis_central_2_10_network
cis-gcp 4.0 2.10 Storage IAM change alerts implements google_logging_metric.cis_central_2_11_bucket_permission
google_monitoring_alert_policy.cis_central_2_11_bucket_permission
cis-gcp 5.0 2.11 Storage IAM change alerts implements google_logging_metric.cis_central_2_11_bucket_permission
google_monitoring_alert_policy.cis_central_2_11_bucket_permission
cis-gcp 4.0 2.11 SQL instance change alerts implements google_logging_metric.cis_central_2_12_sql_instance
google_monitoring_alert_policy.cis_central_2_12_sql_instance
cis-gcp 5.0 2.12 SQL instance change alerts implements google_logging_metric.cis_central_2_12_sql_instance
google_monitoring_alert_policy.cis_central_2_12_sql_instance

What the controls ask (this project's paraphrase from the catalog — never the framework's own text):

Not every resource this pack contributes is a witness:

History

version date change
1.7 2026-09-30 every claim states its measure without satz: gcloud (the commands that meet the control the way the claim's resources do), gcloud_check (the commands that show whether it is met) and risk (what goes wrong without it); require and report-compliance carry them in each control's measures. Nothing emitted changes
1.6 2026-09-12 follows the rename: the alert project defaults to logsink_project_id
1.5 2026-09-10 two question blocks: the alert mailbox (cis_central_email — a wrong one drops every alert silently) and the hosting project (cis_central_bucket_project, default the logsink pack's project by reference). Nothing emitted changes
1.4 2026-09-08 the alert project defaults to logsink_project_name — the audit-logsink pack's own param, BY REFERENCE — so an estate using both packs wires nothing. The old default was the literal {customer_shortname}-organization-log-alerts, a project nothing creates, so an estate that did not override it pointed eight alert policies at a project that was never there. Used without the logsink pack the name is undeclared and the pack stops with unknown param, which is the honest failure: the alert project is then genuinely undecided
1.3 2026-09-03 CIS 4.0 claim ids were off by one — the eight alert controls are 4.0 §2.4–2.11 (§2.12 is DNS logging), not §2.5–2.12; the invented "§2.4 filters exist" claim is gone and the sink + channel now CONTRIBUTE to the first alert control (4.0 §2.4 / 5.0 §2.5). Resource labels keep the 5.0 numbers. Verified against Prowler, Google's InSpec profile and Tenable
1.2 2026-08-24 the log metric + alert stack for CIS 2.5–2.12 in one central logging project
1.1 2026-08-22 notification channel param; alert policy display names carry the control id
1.0 2026-08-21 first version

The whole library's history: the changelog in presets/CHANGELOG.md.

Notes

Pairs with monitoring.organization_audit_logsink: one logging project holds both the archive and this alerting bucket, and cis_central_bucket_project defaults to that pack's project by reference. Without that pack the estate must set it — the pack stops rather than guess a project nothing creates.

The metrics are bucket-scoped, so every alert filter pins resource.type="logging_bucket". For a project outside the organisation sweep there is project_cis_log_alerts; the two cover the same controls, so an estate uses one of them per project.