Beveiliging
Versie 1.0 · Laatst bijgewerkt op 27 april 2026
SpectIQ verwerkt gegevens van bouwkundig inspecteurs en hun
opdrachtgevers. Beveiliging is bij ons een ontwerpprincipe. Hieronder de
technische en organisatorische maatregelen die wij hebben getroffen, in
lijn met artikel 32 AVG.
Encryptie
- In transit: al het verkeer tussen browser, server en sub-verwerkers gebruikt TLS 1.2 of hoger. Cloudflare dwingt HTTPS af; HTTP-requests worden automatisch omgeleid.
- At rest: de Postgres-database (gehost op Railway in europe-west4, Nederland) gebruikt schijfencryptie. Foto's, spraakmemo's en bijlagen staan in Cloudflare R2 met server-side encryptie (AES-256). PDF-exports volgen dezelfde encryptie.
-
Geheimen: API-keys en database-credentials staan
uitsluitend in Railway's environment-variabelenstore, nooit in de
code-repository. Sessiecookies zijn
httpOnly,secure(in productie) ensameSite=lax.
Authenticatie en toegang
- Aanmelden gebeurt via een eenmalige code per e-mail (OTP); geen herbruikbare wachtwoorden waarmee credentials kunnen lekken.
- Sessies verlopen na 30 dagen inactiviteit. Verdachte sessies kunnen centraal worden ingetrokken.
- Toegang tot data is altijd workspace-gescoped — een gebruiker ziet alleen rapporten en klanten van werkruimtes waarvan hij of zij lid is. Dit wordt op database-niveau afgedwongen via een workspace-middleware in elke API-route.
-
Platform-administratierechten zijn voorbehouden aan een vooraf
geconfigureerde lijst e-mailadressen
(
PLATFORM_ADMIN_EMAILS); deze rol is auditbaar in de gebruikerstabel.
Back-ups en herstel
-
Elke nacht (03:30 UTC) draait er een Postgres back-up via
pg_dump. De dump wordt gespiegeld naar twee onafhankelijke opslagplaatsen: Cloudflare R2 (primair) en een Railway-bucket (secundair). - Beide back-uplocaties hanteren een retentie van 30 dagen. Mislukte back-ups triggeren automatisch een melding.
- Foto's en bijlagen in R2 zijn redundant opgeslagen door Cloudflare zelf (multi-region binnen de EU).
- Hersteltests worden periodiek uitgevoerd; de runbook staat in onze interne documentatie.
Software-leveringsketen
- Iedere wijziging gaat via een pull-request. CI draait automatisch typecheck, lint, formatter en unit-tests; merges worden geblokkeerd als die falen.
- Promotie naar productie verloopt via een aparte "Promote to production" PR die een second-eye review krijgt voordat deze wordt samengevoegd op de productiebranch.
- Database-migraties zijn additief, idempotent en self-healing — de migrate-runner herkent reeds toegepaste schema's en weigert nooit een deploy tenzij de schema-staat onbekend is.
- Kwetsbaarheden in dependencies worden bewaakt via Dependabot.
Logging en monitoring
- Toepassingslogs (Railway), aanmeldingsevents en audit-trails zijn beschikbaar voor incident-onderzoek.
- Voor AI-aanvragen gebruiken wij Langfuse om kwaliteit en latentie te bewaken — zie de sub-verwerkerspagina voor wat daar wordt opgeslagen.
Incidentprocedure
Bij een geconstateerd datalek volgen wij artikel 33 AVG: binnen 72 uur na ontdekking melden wij het incident bij de Autoriteit Persoonsgegevens, en informeren wij betrokken klanten zodra dat praktisch mogelijk is. Vermoedt u een lek? Stuur een mail naar security@spectiq.nl.
Verantwoordelijke openbaarmaking
Heeft u een beveiligingskwetsbaarheid ontdekt? Wij waarderen verantwoordelijke openbaarmaking. Stuur details naar security@spectiq.nl en geef ons een redelijke termijn (typisch 60 dagen) voordat u publiceert. Wij erkennen onderzoekers in onze hall of fame na bevestiging.
