Architecture GCP

GCP Landing Zone: Security & Guardrails — Org Policy Constraints, VPC Service Controls, Security Command Center, CMEK & Assured Workloads

Where this fits

Parts 1–3 built the resource hierarchy, the identity plane, and the network of the Google Cloud landing zone. Security & Guardrails is the layer that makes all three enforceable: it turns “we agreed not to do that” into “the platform will not let you do that.” On Google Cloud the guardrail model is preventive first — Organization Policy stops disallowed configurations before they exist, VPC Service Controls draw a data-exfiltration perimeter around your APIs, CMEK puts you in control of the encryption keys under your data, and Assured Workloads pins whole folders to a sovereignty or compliance regime — and detective second, with Security Command Center continuously scoring posture and surfacing threats across the org. This article goes deep on those five sub-components and, critically, on how they compose: an Org Policy that blocks public IPs, a VPC-SC perimeter that blocks the exfiltration path, a CMEK boundary that blocks decryption outside your key ring, an Assured Workloads folder that pins residency, and SCC watching the whole thing — that is defence in depth expressed as landing-zone configuration, not slideware.

Google Cloud Landing Zone Design — animated overview

Organization Policy constraints — preventive guardrails on the hierarchy

What it is. The Organization Policy Service lets you set constraints on the resource hierarchy (Organization, folder, or project) that restrict what configurations are even allowed, regardless of a principal’s IAM permissions. This is the key distinction from IAM: IAM governs who can act; Org Policy governs what may exist. A user with roles/owner on a project still cannot create a VM with an external IP if an Org Policy forbids it. Constraints come in two flavours: list constraints (allow/deny specific values, e.g. which regions, which external IPs, which sharing domains) and boolean constraints (on/off, e.g. disable SA key creation, require OS Login). A constraint set on a node becomes the effective policy for everything beneath it, with child nodes able to inherit, merge, or override depending on how the policy is written.

Why it matters. Org Policy is the preventive backbone of the entire guardrail strategy. Detective controls tell you the barn door is open; preventive controls nail it shut. Because constraints are evaluated at resource-creation and modification time by the API itself, a misconfiguration is rejected, not merely flagged hours later by a scanner. That is the difference between “we found a public bucket in last night’s scan” and “the public bucket could never be created.” For regulated landing zones this is non-negotiable — auditors want to see that residency and exposure controls are enforced, not aspirational.

How to do it well.

Constraint (selected baseline) Type What it prevents
gcp.resourceLocations List Resources created outside approved regions (residency)
compute.vmExternalIpAccess List VMs getting public IPs (default-deny, allow-list exceptions)
compute.requireOsLogin Boolean SSH outside centrally-managed OS Login identities
compute.requireShieldedVm Boolean VMs without Secure/Measured Boot + vTPM
iam.disableServiceAccountKeyCreation Boolean Exportable, long-lived SA JSON keys
iam.allowedPolicyMemberDomains List IAM grants to identities outside your Cloud Identity domain(s)
iam.automaticIamGrantsForDefaultServiceAccounts Boolean Default SAs silently receiving roles/editor
storage.publicAccessPrevention Boolean Buckets/objects becoming publicly readable
storage.uniformBucketLevelAccess Boolean Legacy per-object ACLs that bypass IAM
sql.restrictPublicIp Boolean Cloud SQL instances exposed on a public IP
gcp.restrictNonCmekServices List Services creating resources without CMEK

Key artifacts: an Org Policy baseline document mapping each constraint to a control objective; the Terraform module that applies it at Org/folder scope; a dry-run rollout plan for any constraint added to a live estate; and a register of approved exceptions (which folder, which constraint, why, expiry).

VPC Service Controls — a data-exfiltration perimeter around your APIs

What it is. VPC Service Controls (VPC-SC) create a service perimeter — a virtual boundary around a set of projects within which Google-managed APIs (Cloud Storage, BigQuery, Cloud KMS, Pub/Sub, and dozens more) can be called, and across which data cannot move unless an explicit rule allows it. The crucial insight is that VPC-SC does not control identity (that’s IAM) — it controls context and data movement. Even a principal holding valid, correct IAM permissions on a BigQuery dataset is blocked from reading it if the request originates outside the perimeter, or from copying it to a project outside the perimeter. VPC-SC closes the gap that IAM alone cannot: a leaked credential or a malicious insider with legitimate access still cannot exfiltrate data out of the boundary.

Why it matters. This is GCP’s principal defence against data exfiltration via the API surface. The classic attack — stolen service-account credential, then gsutil cp the data to an attacker-controlled bucket in their own project — is exactly what a perimeter stops, because the destination project is outside the perimeter and the egress rule denies it. VPC-SC is also how you ensure that data which must stay inside the company cannot be reached from the public internet even with valid keys, and how you stop the subtler “service-to-service” exfiltration where data hops between Google services. For any landing zone handling regulated or high-value data, VPC-SC is the control that makes “valid credentials are not enough” literally true.

How to do it well.

Design element Tool / mechanism Decision in the landing zone
The boundary Service Perimeter One prod perimeter to start; bridges only on demand
Trusted context Access Levels (Access Context Manager) Corporate CIDRs, region, device trust, identities
Who may enter Ingress policies Admins from corp net + named CI principals
What may leave Egress policies Named partner/export projects only
Private API path restricted.googleapis.com + PGA/PSC + DNS All API traffic stays off the public internet
Safe rollout Dry-run perimeter + audit logs Weeks of dry-run before enforce

Key artifacts: a perimeter topology diagram; the Access Context Manager access-level definitions; the ingress/egress rule catalogue with justification per rule; the dry-run violation report and remediation log; and the DNS/PGA configuration that routes APIs to the restricted VIP.

Security Command Center — the detective and posture plane

What it is. Security Command Center (SCC) is Google Cloud’s centralized security and risk-management platform — the single pane that aggregates misconfiguration findings, vulnerabilities, and threats across the whole organization. It runs three broad classes of capability: posture/CSPM (built-in detectors like Security Health Analytics flag misconfigurations such as public buckets, open firewall rules, disabled audit logs, or non-CMEK resources against benchmarks like CIS GCP); threat detection (Event Threat Detection mines Cloud Audit and other logs for IOC patterns and anomalous IAM grants; Container Threat Detection and VM Threat Detection watch runtime behaviour); and attack-path and exposure analysis (the Attack Path Simulation and Toxic Combination features in the premium/Enterprise tiers show how an internet-exposed resource could chain to a high-value asset). Everything lands as a normalized Finding in the SCC inventory, scored by severity.

Why it matters. Org Policy and VPC-SC are preventive, but no preventive control is complete — new services ship, exceptions get granted, drift happens. SCC is the detective net that catches what slips through, plus the inventory (Cloud Asset Inventory under the hood) that answers “what do we even have and how exposed is it?” Critically, SCC is org-scoped: it sees every project, so it is the right place to measure whether the landing-zone guardrails are actually holding. It is also the integration point that pushes findings to your SIEM/SOAR so security operations runs from one normalized feed rather than per-product consoles.

How to do it well.

SCC capability Detector / feature What it catches
Misconfiguration (CSPM) Security Health Analytics Public buckets, open firewalls, disabled logging, non-CMEK
App vulns Web Security Scanner XSS, mixed content, outdated libs on public apps
Threats from logs Event Threat Detection Anomalous IAM grants, malware IOCs, data-exfil signals
Runtime threats Container / VM Threat Detection Suspicious binaries, crypto-mining, reverse shells
Exposure Attack Path Simulation / Toxic Combinations Internet → high-value-asset attack chains
Inventory Cloud Asset Inventory “What do we have, where, how exposed”

Key artifacts: the SCC tier decision and org-level activation; the Pub/Sub→SIEM export configuration; the mute-rule catalogue with justifications; a finding-triage runbook with severity-based SLAs; and the compliance-dashboard mapping used as audit evidence.

Customer-managed encryption keys (CMEK) — owning the keys under your data

What it is. Every byte at rest in Google Cloud is encrypted by default with Google-managed keys — that is automatic and free. CMEK changes who controls the key-encryption key: instead of Google managing it opaquely, you create and own a CryptoKey in Cloud KMS (or Cloud HSM, or Cloud External Key Manager / EKM) and point your services — Cloud Storage, BigQuery, Persistent Disk, Cloud SQL, Pub/Sub, Spanner, and many more — at that key via a CMEK setting. The service then calls KMS to wrap/unwrap data-encryption keys using your key. Because you govern the key’s IAM, rotation, and lifecycle, you gain a powerful lever: disabling or destroying the key cryptographically renders the data inaccessible — a hard, provable control that Google-managed keys cannot give you.

Why it matters. CMEK matters for three concrete reasons. First, separation of duties / cryptographic shredding: the ability to revoke access to data by disabling a key — independent of the data service’s own IAM — is exactly what many regulators and risk teams require. Second, key residency and HSM/external control: Cloud HSM keeps keys in FIPS 140-2 Level 3 hardware in a chosen region; Cloud EKM keeps the key material outside Google entirely, in a partner key manager (Thales, Fortanix, etc.) or your own, so Google never holds the key — the basis for “hold your own key” sovereignty stories. Third, auditability: every key use is logged, so you can prove what decrypted what, when. The landing-zone decision is which data classes get CMEK, in which protection level, in which region — and how you stop resources being created without CMEK.

How to do it well.

Decision Options Landing-zone guidance
Protection level SOFTWARE / HSM / EXTERNAL (EKM) By data class; HSM for regulated, EKM for sovereignty
Key location Per region per env Key rings in a dedicated key-mgmt project
Rotation Manual vs scheduled Scheduled rotation_period (e.g. 90 days)
Who can encrypt/decrypt Service agents vs humans Per-service agent on the specific key only
Enforcement Optional vs mandatory restrictNonCmekServices + restrictCmekCryptoKeyProjects
Shredding N/A vs key-disable runbook Documented disable/destroy procedure

Key artifacts: a data-classification-to-protection-level matrix; the KMS key-ring / key-management-project Terraform; the per-service-agent IAM bindings; the rotation and destruction runbooks; and the CMEK-enforcement Org Policies.

Assured Workloads — pinning a folder to a compliance and sovereignty regime

What it is. Assured Workloads lets you create a folder (the Assured Workloads workload) that is bound to a specific compliance or sovereignty regime — for example FedRAMP Moderate/High, IL4/IL5, CJIS, HIPAA, ITAR, EU Regions & Support / EU Sovereign Controls, Canada Regions & Support, and others. Once a workload is created under a regime, Google automatically applies and continuously enforces the controls that regime requires: data residency (resources can only be created in approved regions), personnel access controls (support and operations restricted to vetted personnel in approved geographies — the sovereign / support-access dimension), encryption requirements (often CMEK mandatory, sometimes EKM), and product restrictions (only services that meet the regime are permitted in the folder). It is, in effect, a pre-packaged, Google-enforced bundle of Org Policies, residency rules, personnel controls, and key requirements wrapped around a folder — plus continuous monitoring that flags drift from the regime.

Why it matters. Assembling FedRAMP-High or EU-sovereignty controls by hand — every region constraint, every CMEK rule, every support-access restriction, every product allow-list — is enormous, error-prone, and hard to prove. Assured Workloads collapses that to a regime selection and delivers continuous, auditable enforcement plus the personnel/operational controls (data residency and who-can-touch-the-data) that you fundamentally cannot build yourself with Org Policy alone, because they govern Google’s own support staff. For organizations under government, defence, healthcare, or data-sovereignty mandates, this is the difference between a multi-quarter compliance project and a configured folder. It is the landing zone’s answer to “this entire workload domain must provably stay within these legal and operational boundaries.”

How to do it well.

Regime family Example use case Core controls it enforces
US Government (FedRAMP Mod/High, IL4/IL5) Federal / defence workloads US-region residency, US-personnel support access, CMEK
Criminal Justice (CJIS) Law-enforcement data Residency + vetted-personnel access
Healthcare (HIPAA) PHI workloads Restricted products + encryption posture
EU Sovereignty (EU Regions & Support, EU Sovereign Controls) EU data-residency / sovereignty EU residency, EU-personnel access, CMEK/EKM
Regional (Canada, others) In-country residency mandates In-region residency + support access

Key artifacts: the regulated-folder design and the Assured Workloads workload definition (regime + region); the documented region/product allow-list for that regime; the CMEK/EKM keys mandated by the regime; and the continuous-monitoring view wired into the security operating model.

Real-world enterprise scenario

Helvetia HealthGrid (fictional) is a Swiss-headquartered digital-health platform, 2,400 employees, processing patient data across the EU and a growing US federal-research line of business. It is subject to GDPR, Swiss data-protection law, HIPAA for the US research data, and a contractual EU data-sovereignty requirement from several hospital customers. Its landing zone, built in Parts 1–3, has a folder hierarchy with a Platform folder, an EU clinical domain (dev/staging/prod), and a new US federal-research domain.

Organization Policy. The Platform team applies a baseline at the Org node: gcp.resourceLocations restricted to europe-* for the clinical domain (overridden to us-* only in the federal folder), compute.vmExternalIpAccess default-deny, storage.publicAccessPrevention and uniformBucketLevelAccess enforced, iam.disableServiceAccountKeyCreation on, iam.automaticIamGrantsForDefaultServiceAccounts disabled, and sql.restrictPublicIp enforced. Two Custom Org Policies (CEL) require Shielded GKE nodes and forbid Cloud SQL public IP estate-wide. Every constraint was rolled out via dry_run_spec for three weeks first; the dry-run logs surfaced 11 legacy public-IP VMs and 4 non-uniform buckets, all remediated before enforcement. All policy is Terraform (google_org_policy_policy, google_org_policy_custom_constraint).

VPC Service Controls. A single production service perimeter wraps the EU clinical prod projects plus the KMS key-management project. Access Context Manager access levels permit the corporate CIDRs and the SecOps device-trust posture; ingress rules admit the named GitHub Actions deployer principals and on-call admins; egress rules allow exactly one approved analytics-export project. API traffic is forced through restricted.googleapis.com via Private Google Access and a DNS override. The perimeter ran in dry-run for six weeks — the violation logs caught a nightly BigQuery export to an out-of-perimeter project, which was rebuilt as an egress rule before enforcement.

Security Command Center. SCC is activated at the Organization level at the Enterprise tier for Event Threat Detection, Container Threat Detection, and Attack Path Simulation. Findings stream via Pub/Sub into Google SecOps (Chronicle) and to Jira; Continuous Exports land in BigQuery for audit evidence. Mute rules suppress accepted sandbox findings. The team prioritizes off Attack Path Simulation, which flagged a medium-severity over-permissive firewall on a path to the clinical database as the top item that quarter.

CMEK. Data classified restricted (patient records) uses Cloud HSM keys; the EU-sovereignty hospital contracts mandate Cloud EKM with a Swiss-hosted Fortanix key manager so key material never resides in Google. Key rings live per region per env in a dedicated hhg-keymgmt project; per-service agents hold cryptoKeyEncrypterDecrypter on the specific keys; rotation is set to 90 days. gcp.restrictNonCmekServices mandates CMEK for Storage, BigQuery, and Cloud SQL, and gcp.restrictCmekCryptoKeyProjects locks CMEK keys to hhg-keymgmt. A documented key-disable runbook provides cryptographic shredding for offboarding a hospital tenant.

Assured Workloads. The US federal-research domain is created as an Assured Workloads workload under FedRAMP Moderate (with a path to HIPAA controls for the PHI subset). This auto-enforces US-region residency, US-personnel support access, and mandatory CMEK, and continuously monitors for drift. The EU clinical prod folder is additionally pinned with EU Regions & Support / EU Sovereign Controls so EU residency and EU-personnel access are Google-enforced, satisfying the hospital sovereignty clauses without the Platform team hand-building those personnel controls.

Measurable outcome (first two quarters). Preventive guardrails meant zero public buckets and zero public-IP Cloud SQL instances could be created (down from 9 such resources in the legacy estate). The VPC-SC perimeter blocked 3 real exfiltration attempts in dry-run analysis (misrouted exports + one stolen-credential test by the red team) before enforcement. SCC MTTR for high-severity findings fell to under 24 hours, and the CIS GCP compliance score rose from 71% to 96%. CMEK with EKM let them sign the two largest hospital sovereignty contracts, and the Assured Workloads FedRAMP folder turned an estimated two-quarter compliance build into a configured folder, passing the customer’s federal audit on first submission.

Deliverables & checklist

Common pitfalls

What’s next

With preventive guardrails, the data-exfiltration perimeter, posture detection, customer-controlled keys, and sovereignty regimes in place, Part 5 — Logging, Monitoring & Operations designs the org-wide log sinks, the security/audit log architecture, monitoring, and the operational runbooks that keep the landing zone observable and accountable.

GCPLanding ZoneSecurity & GuardrailsEnterprise
Need this built for real?

Vinod is a Senior Cloud Architect (22+ yrs) — available for Azure / AWS / GCP architecture, landing zones, and migrations.

Work with me

Comments

// part 4 of 5 · Google Cloud Landing Zone Design

Keep Reading