Z1 — SaaS Startup Reference Platform
Asset: Z1 | Workstream:
[GTM][B]| Ownership:[SO→CO]| Owner: Sagar Status: drafted | Instantiates: Z0 (all 5 artifacts)The default blueprint for the core ICP — the lean, SOC 2-oriented Baseline a Series A → pre-IPO B2B SaaS company on Azure + GitHub gets. Almost entirely shipped 🟦 modules — this is the most deployable Z today.
1. Module bill-of-materials
Every line is a real
claude.md§4 asset. Status: 🟦 code-complete / 🟩 shipped / roadmap.
| Layer | Asset(s) | Role | Status |
|---|---|---|---|
| Identity (client) | B2 client-bootstrap | Federated OIDC SP — zero long-lived creds; the CI/CD identity | 🟦 |
| Subscription baseline | B3 (wraps F1) | Mgmt Group, Azure Policy initiative, Defender plans, central LAW, group RBAC, MCSB | 🟦 |
| State backend | B4 (wraps F6) | Per-env Terraform state SA, AAD-only, Blob-RBAC | 🟦 |
| Network | F2 network-hub | Hub-spoke, private DNS, NSG flow logs, optional Firewall | 🟦 |
| Key management | F5 key-vault | Premium KV, RBAC + purge protection + private endpoint | 🟦 |
| Registry | F4 acr | Premium ACR, private endpoint, AAD-only, signed-image ready | 🟦 |
| Compute | F3 aks-secure | Private AKS, Workload Identity, AAD-RBAC, Azure CNI Overlay | 🟦 |
| K8s policy | D4 kyverno bundle | 5 ClusterPolicies — no latest tag, signed images, no privileged, netpol | 🟦 |
| GitOps platform | F8 gitops bundle | ArgoCD app-of-apps + cert-manager + ESO + Kyverno + ingress | 🟦 |
| PIM (Azure roles) | B5 pim-azure-resources | JIT Owner/Contributor/UAA — tier-0 approval, tier-1 4h | 🟦 |
| IAM (directory) | H1, H2, H3 | AAD baseline, Conditional Access (MFA), PIM templates | 🟦 |
| IAM hygiene | H5, H7 | SP credential rotation, break-glass + sign-in alert | 🟦 |
| CI/CD | C1, C2, C3 | TF plan/apply + OPA gate; build/sign/scan; AKS deploy | 🟦 |
| Quality gates | D1, D2, D3, C4, R1 | pre-commit + PR-blocking + OPA bundle + branching + PR template | 🟩/🟦 |
| Evidence floor | E0 | Compliance snapshot per deploy | roadmap (M2b) |
Pinning: "current
main" until F11 (module versioning, M3); then each line pins a semver?ref=. Shipped subset: everything except E0 is 🟦 today.
2. Architecture diagram
d2form lands with V2 (M2b). Topology sketch + prose until then.
GitHub (source + Actions)
│ OIDC (B2 — no secrets)
▼
┌───────────────────────────────────────────┐
│ Client Azure Subscription │
│ Mgmt Group · Azure Policy · Defender (B3) │
│ │
│ Hub vNet (F2) ── peering ── Spoke vNet │
│ │ │ │
│ [Firewall?] ┌──────┴───────┐ │
│ │ Private AKS │ │
│ Private Endpoints ────┤ (F3) +Kyverno│ │
│ ├── ACR (F4) │ (D4) +ArgoCD │ │
│ ├── Key Vault (F5) │ (F8) +ESO │ │
│ └── State SA (B4) └──────────────┘ │
│ │
│ Identity: H1/H2/H3 (MFA/CA/PIM) · │
│ H5 (rotation) · H7 (break-glass) │
│ B5 (Azure-role PIM) │
│ Logging → central Log Analytics (B3) │
└───────────────────────────────────────────┘
│
CI/CD: C1 (plan/apply+OPA) → C2 (build/sign/scan) → C3 (AKS deploy)
Evidence: E0 snapshot per deploy (roadmap M2b)
Topology in prose: one client subscription, hardened by B3. A hub-spoke network (F2); workload spoke hosts a private AKS cluster (F3) with the Kyverno policy floor (D4) and the GitOps platform layer (F8). ACR (F4), Key Vault (F5), and the Terraform state account (B4) are reached only via private endpoints. All human + workload identity flows through MFA/Conditional Access/PIM (H1–H3), secrets rotate (H5), break-glass is alerted (H7), and Azure-resource roles are JIT via PIM (B5). CI/CD authenticates via federated OIDC (B2) — no long-lived cloud credentials anywhere.
3. Compliance mapping (SOC 2-oriented)
Primary target: SOC 2 (Security). Strong CIS Azure + ISO 27001 Annex A overlap. See the full Y7 matrix; Z1-relevant rows:
| Control area | Covered by | Framework refs |
|---|---|---|
| Logical access / MFA / least-priv | H1–H3, B2, B5 | SOC2 CC6.1/CC6.6 · ISO A.5.15/A.8.5 · CIS 1.1 |
| Network boundary | F2, F5 (PE), F4 (PE) | SOC2 CC6.6 · CIS 3.7/8.5 |
| Cryptography / KV | F5 | ISO A.8.24 · CIS 8.2 |
| Change management | C1–C4, D1–D3, R1 | SOC2 CC8.1 · ISO A.8.9/A.8.28 |
| Monitoring / Defender | B3, F1 | SOC2 CC7.2 · ISO A.8.16 · CIS 2.1 |
| Image integrity | C2, D4, F4 | SOC2 CC7.1 |
| Credential hygiene | H5, B2 | CIS 1.21 |
| Evidence | E0 (roadmap M2b) | SOC2 CC4/CC7.2 |
Process controls (governance, HR, physical) are out of platform scope — see Y7 §6. Audit-ready, not certified.
4. Cost estimate (illustrative — Azure list, single region, sandbox-scale)
⚠️ Illustrative monthly Azure cost; finalize per client region + scale. Pairs with U1 budget.
| Component | Driver | Illustrative $/mo ⚠️ |
|---|---|---|
| Private AKS (F3) | system + small user pool, 3 AZ | $[300–600] |
| Azure Firewall (F2, optional) | Standard tier (skip to cut cost) | $[~950] if enabled |
| Defender for Cloud plans (B3) | per-resource Standard | $[100–400] |
| Log Analytics ingestion (B3) | volume-dependent | $[50–300] |
| ACR Premium (F4) | fixed | $[~50] |
| Key Vault Premium (F5) | low txn | $[~5–20] |
| Private endpoints + state SA | per-PE + storage | $[30–80] |
| Indicative total (no Firewall) | $[~600–1,500]/mo |
Biggest levers: AKS node sizing, Firewall on/off, Defender plan selection, LAW retention. SnowOps tunes these to the client's CFO-approved cap (U1).
5. Deploy guide (order of operations)
Each step has a real runbook under
docs/runbooks/test/.
- B2 — provision the OIDC SP (the apply identity). →
B2.md - B3 — subscription baseline (MG, Policy, Defender, LAW, RBAC). →
B3.md - B4 — per-env state backend + Blob RBAC. →
B4.md - F2 — hub-spoke network + private DNS. →
F2.md - F5 — Key Vault (needs F2 PE subnet + DNS). →
F5.md - F4 — ACR (needs F2 PE + DNS). →
F4.md - F3 — private AKS (needs F2 spoke, F4 registry, F5 KV, D4 policy floor). →
F3.md - D4 — Kyverno policies (offline-validated; applied to the cluster). →
D4.md - F8 — GitOps app-of-apps (ArgoCD/ESO/cert-manager; reuses D4 rules). →
F8.md - H1 → H2 → H3 — AAD baseline → Conditional Access → PIM. →
H1/H2/H3.md - H7 — break-glass group + sign-in alert (produces the group H2/B3/B5 consume). →
H7.md - B5 — Azure-resource PIM (needs the H7/B3 break-glass Owner). →
B5.md - H5 — SP rotation workflow (scheduled). →
H5.md - C1 → C2 → C3 — wire the CI/CD pipelines into the client repo. →
C1/C2/C3.md - D1–D3, C4, R1 — quality gates onto the repo. →
D1/D2/D3/C4/R1.md - E0 (M2b) — evidence snapshot on deploy.
DoD (Z1)
- Every referenced asset exists in §4 and composes (BOM validates against the library). (Met — all 🟦 except E0 flagged roadmap.)
- Diagram renders. (Sketch + prose present;
d2with V2.) - SOC 2 coverage mapping (Y7) attached. (Met — §3.)
Sign-off
- Reviewer: _ | Date: _ | Result: PASS / FAIL