Platform Engineering¶
Platform engineering is the discipline of building the shared foundation that workload teams build on — the management group hierarchy, subscription factory, identity model, and shared services that make it possible for development teams to operate quickly and safely.
Landing Zone: the tenant's foundation
Security Model: the tiering rules and delivery lanes everything else follows
- GRINNTEC: Access Tiering Model: EAM, NIST and Tier 0/1/2
- GRINNTEC: Role Tier Mapping: Entra ID and Azure RBAC
- GRINNTEC: Lane A and Lane B Delivery Methodology
- GRINNTEC: Tier 0 Pipeline Design
Azure Access Management: who and what gets access
- GRINNTEC: Conditional Access
- GRINNTEC: Break-Glass Accounts
- GRINNTEC: Privileged Access Workstations
- GRINNTEC: Guest Access
- GRINNTEC: Access Packages
- GRINNTEC: Access Reviews
- GRINNTEC: Platform Service Principal Vending
Networking: shared connectivity, addressing, DNS and egress
Governance: policy, standards, logging, evidence and exceptions
- Azure Policy (EPAC)
- Tagging Standard
- Regulatory Compliance
- Entra ID Diagnostic Settings
- Subscription Activity Logs
- Defender for Cloud Secure Score
- Governance Reporting
- Exceptions Register
- Architecture Decision Records
Security Operations: detecting, responding to and preventing threats
- Defender Plans
- Threat Detection
- Incident Response
- Vulnerability Management
- Key and Secret Management
Operations: keeping the platform running and recoverable
FinOps: budgets, cost allocation and cost control
Infrastructure as Code: how the Terraform is structured and where state lives
Platform Lifecycle: onboarding, identities, decommissioning and upgrades
- Workload Onboarding
- Workload Identity Vending
- Subscription Decommissioning
- Platform Versioning and Upgrades
External and reference
- Azure Landing Zones
- Azure Management Groups
- Microsoft CAF — Azure landing zone conceptual architecture
What the platform team owns¶
The platform team is responsible for the infrastructure that every other team depends on. This is not application code — it is the foundation layer that provides governance, security boundaries, networking, and identity to workload teams.
Root of trust & governance
- Foundational tenant bootstrap (
azure-tenant-bootstrap) establishing the central state backend and root identities - Management group hierarchy aligned to the Microsoft CAF enterprise-scale pattern
- Azure Policy assignments at management group scope to enforce organisational standards
- Subscription lifecycle — creation, naming, placement, and decommissioning
Identity & access
- Central service principal vending (
azure-service-principals) operating under Lane A for platform pipelines, tools, and vendors - Entra ID security groups for platform-level human access (engineers, FinOps, read-only)
- Tiered reader access patterns (estate-wide, archetype MGs, per-subscription, and JIT PIM)
- Per-subscription RBAC groups provisioned automatically as part of subscription vending
- Federated OIDC credentials for all Terraform pipelines — no secrets stored anywhere
Shared services (in progress)
- Hub networking — VNets, ExpressRoute, DNS, firewalls
- Central logging — Log Analytics workspace
- Budget alerts per subscription
How it is built: The Dual-Lane Operational Model¶
Everything the platform team manages is defined in code and deployed via GitLab CI/CD pipelines using Terraform. To reconcile automation velocity with the zero standing privilege mandate of Microsoft EAM and NIST SP 800-53, deployments are strictly bifurcated into a dual-lane delivery model:
- Lane A (Control Plane / Tier 0): Used for foundational repositories (
azure-tenant-bootstrap,azure-service-principals,azure-privileged-access-grants). Automated CI is strictly Plan-Only using a scoped read-only machine identity (sp-pla-tf-*-ro), and saves the plan onmain. Automated apply is permanently omitted from pipeline configurations and local plans are blocked. A PIM-elevated engineer applies the merged commit's saved plan withapply-merged— never local files. - Lane B (Management & Workload Planes / Tiers 1 & 2): Standard GitOps Automation. Merge requests run automated validation and plan; merging to
mainautomatically triggersterraform applyvia scoped Workload Identity Federation (OIDC) machine identities (sp-*-rw) bounded to specific management groups or workload subscriptions.
flowchart TD
subgraph LANE_A["Lane A: Control Plane (Tier 0 — Human Gated)"]
ROOT["azure-tenant-bootstrap<br/>(Bootstrap state & seed identities)"]
SPV["azure-service-principals<br/>(Vend platform & tool SPs)"]
PAG["azure-privileged-access-grants<br/>(Persona groups, directory roles, Tier 0 RBAC)"]
ROOT -->|Central state & seed SP| SPV
end
subgraph LANE_B["Lane B: Management & Workloads (Tiers 1 & 2 — Automated GitOps)"]
MG["azure-management-groups<br/>(Management group hierarchy)"]
ID["azure-privileged-access-packages<br/>(PIM policies & access packages)"]
PAG -->|Groups looked up by name| ID
SUB["subscription-vending-workload / -platform<br/>(Subscription factory)"]
WL["workload deployments<br/>(App services, databases, networks)"]
ROOT -->|Scoped Management Groups SP| MG
SPV -->|Platform Pipeline SPs| SUB
SUB --> WL
end
LANE_A -.->|Vends bounded identities & state backends| LANE_B
Each deployment project has its own service principal with scoped permissions — the platform team's Terraform pipelines can only touch what they need to touch. See the comprehensive Lane A and Lane B Delivery Methodology for full architecture, decision matrices, preflight safeguards, and threat modeling.
IaC Architecture & 3-Tier Module Taxonomy¶
All Terraform code managed by the platform team and consumed by workload teams is structured according to a strict 3-Tier Module Taxonomy:
- Tier 1 — Resource Modules (
terraform-azure-modules/): Stateless, single-resource wrappers that enforce opinionated security baselines (TLS 1.2+, private endpoints, CAF naming conventions, and ADR-0001 provenance tagging). - Tier 2 — Solutions (
terraform-solutions/): Pre-assembled "Golden Paths" that compose multiple Tier 1 modules into business services (e.g.,solution-manage-azure-subscription,solution-manage-resource-group). Solutions enforce organizational policy by default (such as non-negotiable delete locks and Defender for Cloud plans) while dramatically reducing cognitive load for developers. - Tier 3 — Deployments (
deployments/): Environment- and subscription-specific leaf configurations that map code to dedicated remote state storage. Deployments are operationalized via Lane A (Tier 0 control plane, human PIM gated) or Lane B (automated GitOps via Workload Identity Federation).
See the comprehensive 3-Tier Terraform Module Taxonomy: Architecture & Governance guide for design rules, the "Rule of Two" bypass governance, and declarative refactoring with moved {} blocks.
Design principles¶
Everything in code. No resource exists without a Terraform source. If it cannot be version-controlled, it should not be created.
Least privilege. Every service principal has the minimum permissions needed. Roles are scoped as narrowly as possible — container-level for state, subscription-level for workload deployment, management-group-level for platform governance.
Separation of concerns. Management group hierarchy, subscription vending, and identity management are three separate deployments with three separate service principals. A credential compromise in one cannot affect the others.
Predictable structure. Every subscription gets the same RBAC group structure, the same state storage pattern, and the same pipeline scaffold. Workload teams know what to expect before they write a single line of code.
CAF alignment. The hierarchy, naming conventions, and governance model follow the Microsoft Cloud Adoption Framework enterprise-scale architecture — proven patterns rather than bespoke designs.