Skip to main content
provisioning · gcp

Project Service Enablement

category
Platform

What does zop.dev create for Project Service Enablement?

zop.dev manages Google Cloud API enablement through the project_service resource type, complementing the bootstrap module's fixed list of 11 core APIs. Enabling a service is free. The risk runs the other way: disabling one can break every resource that depends on it, immediately.

Module backing Project Service Enablement.
Field Value
Cloudgcp

GCP features are gated behind per-project API enablement. zop.dev manages service enablement as a resource so a project’s API surface is declarative and auditable.

API enablement as the project_service type

Enablement of Google Cloud project services/APIs (resource type project_service).

One service name per resource

Terminal window
Service name to enable; the bootstrap module enables 11 core APIs by default.

A complement to the bootstrap module’s fixed list

Available through the cloud-resource-provisioner API, complementing the bootstrap module’s fixed API list.

Eleven APIs before anything runs

A fresh GCP project can do almost nothing, because every capability sits behind a per-project API gate. The bootstrap module opens the 11 the platform needs (resource management, compute, container, Cloud SQL, Secret Manager, Redis, DNS, service networking, certificates, and friends), which is why provisioning works on a new project without a checklist of console toggles. The project_service resource type covers everything past that fixed list: a team adopting BigQuery, Vertex, or any other service enables it declaratively, and the project’s API surface stays a fact in configuration rather than an accumulation of one-time clicks.

Disabling is the dangerous direction

Enablement is free and additive; disablement is where the sharp edge lives. Turning a service off does not politely refuse new usage. It can immediately break every resource that depends on the API, and dependencies are not always obvious (service networking, for one, quietly underpins private database connectivity). An enabled-but-unused API costs nothing and threatens nothing by itself; the reflex to “clean up” enabled services has a worse risk-reward than almost any other cleanup. Treat disablement as a change-managed operation with a dependency check, not hygiene.

The API surface becomes auditable

The declarative shape earns its keep at review time. Which projects can spin up compute? Which ever enabled a data-exfiltration-adjacent service? With enablement as managed configuration, those are queries; with console-clicked enablement, they are archaeology. The same property gives drift detection something to hold onto: an API enabled out-of-band is a visible divergence from declared state, which is occasionally the first sign of someone doing something a project was never meant for.

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·