GCP Landing Zone — US Federal Agency · FedRAMP + NIST 800-53 + SOC 2 + SOX
This is a reference configuration for a US federal agency GCP landing zone,
generated by Merlin Studio — a GCP Landing Zone
Design Studio built on Cloud Foundation Fabric (FAST) .
Generate your own at site.merlin-studio.cloud .
🆓 Merlin is now open — no signup, no email. Guest mode lets you
start designing your own landing zone instantly.
Open Merlin →
Attribute
Value
Profile
Advanced
Architecture
Hub and Spoke
Primary Region
us-central1 · DR Region us-east1
Compliance Frameworks
FedRAMP · NIST 800-53 · SOC 2 · SOX
Organization Policies
15 enforced
Log Retention
2555 days (7 years)
FAST Stages
5
1. Organization Structure
Organization
│
├── 📁 Production — production workloads
├── 📁 Staging — pre-production testing
├── 📁 Development — development
├── 📁 Shared Services — common infrastructure
├── 📁 Security — security tooling
├── 📁 Networking — hub networks and connectivity
├── 📁 Data Platform — analytics and data services
└── 📁 Sandbox — experimentation
Project
Folder
Purpose
Key APIs
prj-new-service
Shared Services
CI/CD · KMS · Logging
Cloud Build, KMS, Secret Manager, Logging, Monitoring, Compute, DNS, Artifact Registry
Development · Staging · Production · Sandbox
2. Identity & Access Management
Group
Purpose
Roles
gcp-organization-admins@
Org administration
roles/resourcemanager.organizationAdmin
gcp-billing-admins@
Billing control
roles/billing.admin
gcp-network-admins@
Network management
roles/compute.networkAdmin · roles/compute.securityAdmin
gcp-security-admins@
Security oversight
roles/iam.securityAdmin · roles/accesscontextmanager.policyAdmin
gcp-audit-viewers@
Audit access
roles/iam.securityReviewer · roles/logging.viewer
gcp-support-admins@
Support operations
roles/cloudsupport.techSupportEditor
Name
Project
Purpose
Key Roles
terraform-org-sa
prj-seed-terraform
Org-level Terraform
roles/resourcemanager.organizationAdmin
terraform-network-sa
prj-seed-terraform
Network Terraform
roles/compute.networkAdmin · roles/dns.admin
terraform-security-sa
prj-seed-terraform
Security Terraform
roles/resourcemanager.organizationAdmin
cicd-deploy-sa
prj-seed-cicd
CI/CD deployments
roles/clouddeploy.operator · roles/builds.editor
security-scanner-sa
prj-seed-security
Security scanning
roles/iam.securityReviewer · roles/securitycenter.sourcesViewer
Attribute
Value
Architecture
Hub and Spoke
Hybrid Connectivity
Dedicated Interconnect + HA VPN
Routing
Dynamic (BGP)
Inbound DNS Forwarding
Enabled
VPC
Project
Routing
Purpose
vpc-hub
prj-network-hub
GLOBAL
Hub — central connectivity
vpc-prod
prj-network-prod
GLOBAL
Production spoke
vpc-dev
prj-network-dev
GLOBAL
Non-production spoke
Subnet
VPC
Region
CIDR
Private Google Access
sb-hub-us-central1
vpc-hub
us-central1
10.0.0.0/20
Yes
sb-prod-us-central1
vpc-prod
us-central1
10.1.0.0/20
Yes
sb-dev-us-central1
vpc-dev
us-central1
10.2.0.0/20
Yes
sb-hub-us-west2
vpc-hub
us-west2
10.128.0.0/20
Yes
sb-prod-us-west2
vpc-prod
us-west2
10.129.0.0/20
Yes
sb-dev-us-west2
vpc-dev
us-west2
10.130.0.0/20
Yes
Network
CIDR
on-prem-network
192.20.0.0/20
Constraint
Enforcement
Scope
compute.skipDefaultNetworkCreation
enforce
organization
compute.requireOsLogin
enforce
organization
compute.requireShieldedVm
enforce
organization
compute.disableSerialPortAccess
enforce
organization
compute.vmExternalIpAccess
deny_all
organization
compute.disableNestedVirtualization
enforce
organization
storage.uniformBucketLevelAccess
enforce
organization
storage.publicAccessPrevention
enforce
organization
sql.restrictPublicIp
enforce
organization
sql.restrictAuthorizedNetworks
enforce
organization
iam.disableServiceAccountKeyCreation
enforce
organization
iam.disableServiceAccountKeyUpload
enforce
organization
gcp.detailedAuditLoggingMode
enforce
organization
gcp.resourceLocations
allow_list
organization
iam.allowedPolicyMemberDomains
allow_list
organization
Setting
Value
Default Retention
2555 days
Logging Project
prj-seed-logging
Aggregated Sinks
3
Bucket
Retention
Locked
audit-logs
730 days
Yes
security-logs
365 days
Yes
6. Backup & Disaster Recovery
Setting
Value
DR Strategy
Backup & Restore
Failover Automation
Enabled
RPO
1h
RTO
15m
Primary Region
us-central1
DR Region
us-east1
Policy
Resource
Frequency
Retention
Cross-Region
hourly-compute-snapshots
Compute Disk
Hourly
7 days
Yes
daily-compute-snapshots
Compute Disk
Daily
90 days
Yes
continuous-sql-backup
Cloud SQL
Continuous
30 days
Yes
daily-gcs-versioning
Cloud Storage
Continuous
90 days
Yes
daily-bigquery-snapshots
BigQuery
Daily
30 days
No
Setting
Value
Frequency
Quarterly
Test Type
Partial
Budget
Amount
Scope
Organization Budget
USD 100,000
billing_account
FAST factory YAML data files — structured configuration that plugs directly into
Google Cloud's FAST Fabric .
Stage
Directory
Description
0
org-setup/
Folders, IAM bindings, org policies, tags, billing
1
networking/
VPC networks, subnets, firewall rules, DNS, VPNs
2
security/
KMS keyrings, security projects, SCC
3
project-factory/
Workload projects
4
vpcsc/
Service perimeters, access levels, ingress/egress policies
The YAML files use FAST's factory data format with $-interpolation tokens
resolved at terraform plan time:
$iam_principals:... — IAM identity references
$project_ids:... — Project IDs from the FAST registry
$folder_ids:... — Folder ID references
Cross-stage dependencies are resolved automatically by FAST.
Cloud Foundation Fabric cloned locally
GCP Organization with a seed project already created
Terraform >= 1.7 and gcloud CLI installed
Service account with Organization Admin at org level
Create the Terraform state bucket before deploying:
gcloud storage buckets create gs://YOUR_STATE_BUCKET \
--project=YOUR_SEED_PROJECT \
--location=us-central1 \
--uniform-bucket-level-access
1. Clone FAST Fabric
git clone https://github.com/GoogleCloudPlatform/cloud-foundation-fabric.git
2. Copy generated files into FAST stage directories
cp -r org-setup/* cloud-foundation-fabric/fast/stages/0-org-setup/data/
cp -r networking/* cloud-foundation-fabric/fast/stages/1-networking/data/
cp -r security/* cloud-foundation-fabric/fast/stages/2-security/data/
cp -r project-factory/* cloud-foundation-fabric/fast/stages/3-project-factory/data/
cp -r vpcsc/* cloud-foundation-fabric/fast/stages/4-vpcsc/data/
3. Deploy stages in order
# Stage 0 — Organization Setup
cd cloud-foundation-fabric/fast/stages/0-org-setup
terraform init -backend-config=" bucket=YOUR_STATE_BUCKET" \
-backend-config=" prefix=stages/0-org-setup"
terraform plan -out=tfplan
terraform apply tfplan
# Stage 1 — Networking
cd ../1-networking
terraform init -backend-config=" bucket=YOUR_STATE_BUCKET" \
-backend-config=" prefix=stages/1-networking"
terraform plan -out=tfplan
terraform apply tfplan
# Stage 2 — Security
cd ../2-security
terraform init -backend-config=" bucket=YOUR_STATE_BUCKET" \
-backend-config=" prefix=stages/2-security"
terraform plan -out=tfplan
terraform apply tfplan
# Stage 3 — Project Factory
cd ../3-project-factory
terraform init -backend-config=" bucket=YOUR_STATE_BUCKET" \
-backend-config=" prefix=stages/3-project-factory"
terraform plan -out=tfplan
terraform apply tfplan
# Stage 4 — VPC Service Controls
cd ../4-vpcsc
terraform init -backend-config=" bucket=YOUR_STATE_BUCKET" \
-backend-config=" prefix=stages/4-vpcsc"
terraform plan -out=tfplan
terraform apply tfplan
Post-Deployment Verification
# Verify organization folder structure
gcloud resource-manager folders list --organization=YOUR_ORG_ID
# Verify IAM bindings at org level
gcloud organizations get-iam-policy YOUR_ORG_ID
# Verify projects were created
gcloud projects list --filter=" parent.type=folder"
# Verify VPC networks
gcloud compute networks list --project=YOUR_NETWORK_PROJECT
FAST README
Each stage directory contains its own README with stage-specific details
Generated by Merlin Studio