Skip to main content
compliance · gcp

GCP projects with no Data Access audit log configuration

rule IDs covered
1
severity
high
resource types
all

What does ZopNight detect here?

GCP projects whose IAM policy carries no auditConfigs block are flagged by RC-1254 as high severity: Data Access audit logs are off, so reads of user data leave no trail. Admin Activity logs stay on regardless, so the gap is data access. Detection fires only on an explicit false from the project scan.

Signal and threshold

How ZopNight evaluates GCP projects with no Data Access audit log configuration.
Field Value
Rule IDsRC-1254
Categorycompliance
Severityhigh
Metricnone — pure configuration read
Sourceaudit_log.go

Admin Activity is always logged, Data Access is not

Google keeps Admin Activity audit logs on for every project and will not let you disable them, which lulls teams into believing “audit logging is on.” What is off by default is the other half: Data Access audit logs, the records of who read what. Without them, a service-account key used to dump a storage bucket or query a database leaves no entry anywhere. An auditor asking “show me who accessed customer data in March” gets an honest answer of “we cannot know”, which is the actual finding behind this rule’s high severity.

What a forensics gap looks like

Compromises are usually investigated backwards: an alert fires, then someone reconstructs what the credential touched before detection. Admin Activity logs show resources created and IAM grants changed, but the reads, the part that constitutes the breach, only exist if Data Access logging was configured before the incident. Enabling it afterwards documents the next breach, not this one. That asymmetry is why the rule flags the gap even for projects that have never had an incident.

How the project scan proves the condition

During ZopNight’s IAM walk of each project (the same read-only pass that powers the Gmail-account and service-account findings, running under roles/iam.securityReviewer), the project’s IAM policy is fetched, and that policy carries the auditConfigs section. If any policy asset in the project has a non-empty auditConfigs, audit logging counts as configured; the result is stamped as an explicit true or false on a synthetic per-project resource. The rule fires only on the explicit false, so a partially scanned or cancelled walk abstains rather than accusing a project it never finished reading.

Read your project’s auditConfigs

Terminal window
gcloud projects get-iam-policy PROJECT_ID --format="yaml(auditConfigs)"

Empty output reproduces the finding. A configured project lists services with their enabled log types (DATA_READ, DATA_WRITE, ADMIN_READ).

Enabling Data Access logs, and the cost caveat

Turn Data Access logs on per service under IAM & Admin → Audit Logs, or set an allServices block in the policy for blanket coverage. One honest warning: on busy projects these logs are voluminous: BigQuery and Cloud Storage reads can generate significant logging volume and cost. Start with the services that hold sensitive data, add exemptions for known-noisy service accounts, and route entries to a sink with a retention policy so the trail survives longer than the default 30 days.

See it fire on your bill.

Connect an account read-only. The first findings land in minutes.

417 rule families across 353 resource types on 22 platforms. Every threshold, metric, and IAM action is documented on these pages before you grant anything.

417 rule families documented
353 resource types covered
read-only default access level
Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console· Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console·