Allow teams to build in GCP without central governance for ten years and this is what you get. A project list with names referencing products no one ships anymore. Service accounts whose keys predate the current CTO. Multiple VPCs all claiming to be "production." The outcome is predictable and well-documented at this point: without an Organization node, project-creation controls, tagging standards, and lifecycle policies from day one, the environment accretes. What looks like a security failure or an engineering failure is almost always an inventory failure first.

Governance programs typically start with policy. Write the rules first, enforce them second. In a greenfield environment, that order is fine. In a brownfield environment, policy-first governance produces two outcomes: the policy breaks things you did not know existed, or you carve so many exceptions that the policy means nothing. Neither is progress.

The right starting point is inventory. Not a spreadsheet someone maintains manually - a live, queryable record of what your organization actually owns, who owns it, and what it is doing. Without that record, every governance decision is a guess.

Flexera's 2026 State of the Cloud Report places wasted IaaS and PaaS spend at 29%. [1] Cost is the visible part of the problem. The harder part is security.

An orphaned GCP project with a service account configured for Domain-Wide Delegation is more than a cost leak; it is a path to full Workspace domain compromise. Hunters demonstrated the DeleFriend attack in 2023: a principal with project-level Editor access on a project that holds a DWD-enabled service account can mint a new private key for that account, sign a JWT, and impersonate any Workspace user, with no Super Admin involvement. [3] Google noted that large organizations commonly accumulate "thousands of unattended projects." [2] Each one is a potential attack surface.

Getting visibility required three tools, three scripts, and several hours of runtime. Cloud Asset Inventory exports a full org-wide snapshot to BigQuery. An IAM policy export loops through every project and captures who has access to what. An activity check pulls the last log entry from each project to identify which ones are dormant. Together, they answer the questions that matter: which projects lack an owner, which service account keys exceed 90 days, which projects show no activity.

The inventory work produced an uncomfortable finding: roughly 70% of the organization's GCP projects were auto-generated stubs - created as side effects of Apps Script edits, Gemini activations, and console logins - with no business purpose and no owner. About 82% of all assets lived in a single project. Drilling into that project revealed a second layer of sprawl: ~830 BigQuery datasets where over 90% were non-production (developer scratch, stale PR staging, and sandboxes), ~1,900 secrets where 69% were auto-generated by a managed data-integration platform (one secret per connector configuration), and ~3,400 KMS key versions accumulating from unmanaged rotation. The same pattern of organic accumulation without lifecycle management repeated at every level of the hierarchy.

The inventory work is not glamorous. Label every project. Identify every owner. Classify every environment tier. Then drill into the projects that remain and do it again at the resource level. But this is the map you need before you can build any road. Part 2 covers what to do with the map: the project factory, golden path governance, and how to measure compliance by adoption instead of audit.