Säkerhet · Arkitektur · Infrastruktur och DevOps · 2025–
Multitenant SaaS med två isoleringsnivåer, designad för HIPAA och SOC 2
Produkten gör guidade intervjuer till officiella PDF-blanketter. Det svåra ligger under ytan: isolering mellan kunder, kryptering och åtkomstkontroll, designad för HIPAA och SOC 2.
Standardnivå
- Kund A
- Kund B
- Kund C
- Databasen själv håller isär kunderna.
- Krypteringsnycklar per kund.
Enterprisenivå
- Kund D
- Byggt: varje anrop går till kundens egen databas.
- Designat, näst på tur: ett köat jobb som tål avbrott skapar spoke-nätverk och databas för varje ny kund.
- har en kundpolicy, som kontrolleras av ett test och en granskning av den skarpa databasen
- Varje tabell
- Azure-resurser i Terraform, bakom en brandvägg för webbapplikationer
- ~50
- av utveckling, från arkitektur till driftsättning
- 14 månader
Utgångsläge
Företag knappar för hand in känsliga kunduppgifter i långa officiella PDF-blanketter. Uppgifterna behöver kryptering och spårbarhet från första dagen, flera organisationer delar samma system, och större kunder förväntar sig egen infrastruktur.
Min roll
Allt tekniskt arbete under 14 månader, inklusive driftsättningen på Azure med Terraform.
Vad jag byggde
- Arkitektur: Två isoleringsnivåer: standardkunder delar en PostgreSQL-databas bakom row-level security; enterprisekunder får en egen databas, och varje anrop går till rätt databas.
- Säkerhet: Krypteringsnycklar per kund, MFA med TOTP och WebAuthn, rollstyrd åtkomst, granskningsloggar, utloggning efter 15 minuters inaktivitet och nonce-baserad CSP. Designad för efterlevnad av HIPAA och SOC 2.
- Infrastruktur och DevOps: Runt 50 Azure-resurser i Terraform: ett hub-and-spoke-nätverk, privata endpoints, en brandvägg för webbapplikationer och automatiska certifikat; nyckellös inloggning i CI/CD.
- Frontend: En guidad intervju via engångslänk och en rollstyrd vy för varje organisations team.
- Backend och AI: Celery-workers fyller i varje blankett i minnet; två modeller mappar nya blanketter utifrån offentligt material, med en deterministisk kontroll.
- Test: Över 12 900 tester i backend, frontend och end-to-end, plus mutationstestning.
Svåra problem och beslut
- Delad databas eller en per kund? Båda. Row-level security gör standardkunder billiga att köra i en och samma databas; enterprisekunder får ett eget spoke-nätverk, kopplat till den gemensamma hubben, och en egen databasserver. Kundraderna bär ett kund-id i stället för en koppling till en central tabell, så att de kan flyttas senare.
- En saknad policy läcker i det tysta. Row-level security slås på tabell för tabell, så en enda tabell utan policy skulle visa alla kunders rader. Ett test, en granskning av den skarpa databasen och en förteckning över alla tabeller fångar det.
- Efterlevnad från första commit. Kontrollerna för HIPAA och SOC 2 – nycklar, MFA, roller, granskningslogg och sessionsgränser – byggdes in innan det fanns någon kunddata och följs upp mot en checklista, i stället för att läggas till inför en revision.
Resultat
Modellen för isolering, kryptering och åtkomst är på plats och testas: databasen håller isär standardkunderna, styrningen till enterprisekundernas databaser är byggd, och den automatiska uppsättningen av dem är designad och näst på tur.
Teknik
Python, Django, Celery, PostgreSQL, Next.js, TypeScript, Terraform, Azure, GitHub Actions, Claude, GPT
Områden
Arkitektur, Frontend, Backend, Data, AI, Säkerhet, Infrastruktur och DevOps, Test
Period
september 2025 – pågår (14 månader)