01
The challenge
Enterprise customers required SOC 2 Type II before signing. The infrastructure had grown organically: secrets committed to repositories, IAM policies far broader than needed, no network segmentation between services, and no reliable record of who changed what. The gap had to close inside one quarter.
02
Solution architecture
Layers top to bottom. Controls apply at every layer.
03
Approach
- 01Map every SOC 2 control to a concrete technical control and an evidence source before touching infrastructure.
- 02Make private the default: VPC endpoints, security groups and NACLs so nothing is reachable unless declared.
- 03Move every secret into AWS Secrets Manager with rotation, and remove them from code and CI history.
- 04Rebuild IAM around roles and least privilege, with access reviewed in pull requests.
- 05Make change itself auditable: infrastructure only through reviewed Terraform, with CloudTrail and config history retained.
04
How the delivery ran
- Week 1: control mapping and gap assessment, agreed with the compliance lead and the auditor's checklist.
- Week 2–5: network, identity and secrets controls implemented as Terraform in the client's accounts.
- Week 6–7: audit logging, evidence collection and infrastructure code-review workflow; dry-run against the control list.
- Week 8: hand-over, runbooks and evidence pack. External audit followed and closed with zero findings.
05
What was delivered
- Identity and access model with role catalogue
- Network, secrets and audit controls as Terraform
- Control-to-evidence map for SOC 2 Type II
- Security operations and incident runbooks
06
Results
| Dimension | Before | After |
|---|---|---|
| Certification | None; deals blocked | SOC 2 Type II in 8 weeks |
| Audit findings | Multiple known gaps | Zero external findings |
| Secrets | In code, rotated by hand | Managed, 100% rotation automated |
| Network exposure | Flat, broadly reachable | Private by default, segmented |
| Change history | Unrecorded | Every change reviewed and logged |
Facing a similar decision? A 30-minute architecture review is the fastest way to find out whether the same approach fits.
Book an architecture reviewMore case studies
Other engagements
Government · Tourism · Azure
A secure Azure platform for a national tourism digital ecosystem, delivered as code.
A high-traffic tourism ecosystem built on Sitecore, .NET and Optimizely needed standardised, observable and resilient infrastructure across development, UAT and production. I owned cloud architecture, security, networking, CI/CD and production application delivery as Cloud Solution Architect and DevOps Engineer.
Food & Wellness · E-commerce · Azure
The Azure platform behind a high-volume digital meal-plan experience, run as code.
PractiCal sells personalised meal plans across the UAE through a Next.js storefront, Laravel/PHP backend services and Azure serverless workloads. I owned the cloud and application platform end to end: infrastructure, edge security, CI/CD and production operations across development, staging and production.
Education · Enterprise · Azure
A secure Azure platform for a large-scale university digital experience on .NET and Umbraco.
A university digital platform serving prospective students, current students, faculty and other stakeholders: programme discovery, admissions, applications and student services on an ASP.NET and Umbraco CMS stack. I owned Azure infrastructure, application delivery, security and production operations.
B2B SaaS · AWS
Kubernetes platform that cut cloud spend by 60% and deploy time from 45 minutes to 5.
A growing SaaS platform was running on hand-built AWS infrastructure with manual deployments and costs rising 40% month on month. I replaced it with a production-grade EKS platform, GitOps delivery and infrastructure as code, migrated with zero downtime.
B2B Software · Kubernetes
Observability and SLOs that cut detection time from 90 minutes to 5 and freed a fifth of engineering time.
A six-person team ran production with no visibility: incidents took hours to detect and 40% of engineering time went to firefighting. I built the observability stack, defined SLOs and burn-rate alerting, and wrote the runbooks. Detection fell to 5 minutes and the team got 20% of its time back.