Naar inhoud

Volledige openheid — geen marketing-praat

Security & GDPR — hoe Koldwerk omgaat met je data.

We werken voor installatiebedrijven die per definitie met audit-trails werken. We weten dat onze klanten weten hoe een audit eruitziet. Daarom beschrijven we hier in detail wat we doen — met zaken die we nog niet doen ook eerlijk genoemd.

AES-256-GCM

Encryptie van PII at-rest

TLS 1.3

Encryptie in-transit

EU-only

Alle sub-processors EU-gebonden

Audit-log

Hash-chain per tenant, zelf te verifiëren

1. Architectuur

Multi-tenant isolatie

Iedere werkruimte (tenant) heeft een eigen tenantId. Alle queries naar tenant-data lopen door een tenantClient(tenantId)-wrapper die de tenant-scope op rij-niveau afdwingt. Cross-tenant data-toegang is structureel onmogelijk — niet door code-review, maar door query-design. Er is geen "admin override"-knop die deze isolatie omzeilt.

Encryptie at-rest

Persoonsgegevens worden geëncrypteerd vóór ze de database raken via AES-256-GCM met server-side key (PII_KEY env-var). De encrypted ciphertext + authentication-tag + IV worden opgeslagen, niet de plain-text. Bij key-rotation worden bestaande records re-encrypted via een batch-job.

Encryptie in-transit

TLS 1.3 enforced via HSTS-header (max-age=63072000; includeSubDomains; preload). Alle subdomeinen redirect 301 naar HTTPS. Mixed-content geblokkeerd door Content-Security-Policy.

Wachtwoord-hashing

Argon2id met memory-cost 64MB en time-cost 3 iteraties (OWASP-aanbeveling 2024). Géén MD5/SHA-1/bcrypt-only legacy. Per-user random salt. Bij een datalek zijn de hashes praktisch onbrute-forceable.

Audit-trail

Iedere kritieke handeling (werkbon-aftekening, koudemiddel-mutatie, user-rolwijziging, lekcontrole, etc.) wordt geschreven naar een AuditLog-tabel met:

  • Actor: user-id, HMAC-gehasht IP, user-agent
  • Action: type + entity-id + before/after JSON
  • Hash-chain: elke rij bevat een HMAC-SHA256 over zijn identiteitsvelden (tenant, volgnummer, actor, actie, entiteit, tijdstip) en de hash van de vorige rij — een serverside secret is nodig om de keten te vervalsen, niet alleen schrijftoegang tot de database.
  • In de praktijk append-only: de applicatielaag biedt geen UPDATE/DELETE-functie voor audit-regels aan gebruikers. Twee gedocumenteerde interne uitzonderingen: PII wordt uit historische regels geschoond bij een AVG-anonimisering (de regel blijft staan, de persoonsgegevens niet), en een mislukte cron-claim wordt ingetrokken via een status-veld (revokedAt) in plaats van verwijderd — een harde delete zou de keten breken.

OWNER kan de keten zelf laten herberekenen en verifiëren via een knop in Instellingen → Audit-log — precies de controle die een Kiwa-auditor nodig heeft. Twee eerlijke grenzen: de keten bewijst dat een event heeft plaatsgevonden, niet dat een before/after-payload nooit is gewijzigd (die kán legitiem geschoond worden, zie hierboven), en hij geldt vanaf de dag dat dit gebouwd is — historische rijen van daarvoor zijn niet met terugwerkende kracht te verifiëren.

2. Operationele security

Back-ups

Dagelijkse versleutelde back-ups via de managed Postgres-provider (point-in-time-recovery binnen 7 dagen). Wekelijkse snapshot extern opgeslagen. RPO (Recovery Point Objective): max. 24 uur. RTO (Recovery Time Objective): 4 uur voor catastrofale infrastructuur-uitval.

Incident-response

Sentry (EU-region) monitort runtime-errors. Bij security-incidenten:

  • Detectie + initial-triage binnen 1 uur tijdens kantooruren.
  • Verwerkingsverantwoordelijke (tenant-owner) informeren binnen 24 uur.
  • AP (Autoriteit Persoonsgegevens) melding binnen 72 uur indien meldingsplichtig.
  • Post-mortem schriftelijk binnen 7 werkdagen.

Rate-limiting + brute-force-bescherming

Login: 5 pogingen / 15 min per IP+email-combinatie. Wachtwoord-reset: 3 / uur. Magic-link: 3 / 15 min. Diensten-aanvragen: 5 / uur. Contact-form: 3 / uur. Bot-detectie via honeypot-velden + User-Agent-fingerprinting.

Security headers

Strict-Transport-Security, Content-Security-Policy (met nonce per response), X-Content-Type-Options, Referrer-Policy: strict-origin-when-cross-origin, Permissions-Policy beperkt tot strikt minimum. Cross-Origin-Opener-Policy en Cross-Origin-Embedder-Policy actief.

security.txt

Responsible-disclosure via /.well-known/security.txt. Reactie binnen 48 uur. Géén bug-bounty-budget op dit moment — wel erkenning + hall-of-fame na publicatie.

3. AVG-compliance

Rolverdeling

Verwerker: Koldwerk. Verwerkingsverantwoordelijke: jouw bedrijf. Volledige verwerkersovereenkomst onder /verwerkersovereenkomst — conform AVG art. 28, sub-processors expliciet benoemd.

Data-locatie

Niet elke sub-processor is EU-gebonden — zie de regio-kolom in /verwerkersovereenkomst sectie 12. Voor in de VS gevestigde providers geldt een waarborg conform AVG hoofdstuk V (Data Privacy Framework of Standard Contractual Clauses), nooit doorgifte zonder zo'n waarborg. Wijzigt een sub-processor van regio, dan krijgt elke verwerkingsverantwoordelijke 30 dagen vooraf bericht.

Betrokkenenrechten

Inzage, correctie, verwijdering, dataportabiliteit — alles binnen 30 dagen. OWNER kan via /instellingen zelf user-data en klant-data verwijderen of corrigeren. Voor formele verzoeken: privacy@koldwerk.nl.

Bewaartermijnen

  • Actieve werkruimte-data: zolang abonnement loopt.
  • Na opzegging: 30 dagen grace-period voor export, daarna anonimisering.
  • Audit-records (zonder identificeerbare PII): 7 jaar conform BRL-100 / Wet milieubeheer.

4. Sub-processors

Volledige actuele lijst met doel + regio + DPA-status onder /verwerkersovereenkomst sectie 12. Wijzigingen worden 30 dagen vooraf gemeld; verwerkings- verantwoordelijke kan bezwaar maken.

Een deel van de sub-processors is EU-gebonden, een deel VS met een Data Privacy Framework-waarborg — zie de tabel hierboven voor de regio per leverancier. Alle sub-processors zijn gescreend op AVG-conformiteit; de DPA-status per leverancier staat in dezelfde tabel.

5. Roadmap — wat we nog niet doen

Koldwerk is een nieuw product. Sommige zaken die enterprise-buyers verwachten, doen we nog niet. We benoemen ze hier expliciet zodat je geen verrassingen krijgt na een offerte.

SOC-2 Type II

Nog niet behaald. Planning: extern audit-traject na de eerste 10 betalende klanten (Q4 2026 / Q1 2027). Wel: alle onderliggende controls (audit-log, encryption, MFA, incident- response) staan al — alleen het externe audit-papier ontbreekt.

ISO 27001

Nog niet behaald. Roadmap loopt parallel aan SOC-2. Voor enterprise-prospects die ISO 27001 nu al vereisen: onze sub-processors (Vercel, Postgres-provider) zijn beide ISO 27001 — we kunnen die certificaten meeleveren.

Externe pentest

Nog niet uitgevoerd. Plan: na eerste 5 klanten (Q3 2026) een externe pentest door een NL-geregistreerd security-bureau. Wel: continue dependency-scan via Dependabot, CSP-monitoring, en interne security-reviews.

Bug-bounty

Geen betaald bug-bounty-programma op dit moment. Wel: responsible-disclosure via /.well-known/security.txt met reactie binnen 48 uur.

Live uptime + incidenten

Onze statuspagina toont real-time componenten-status en incident-historie aan klanten na inloggen. Voor enterprise-klanten beschikbaar: dedicated status-feed + SLA-rapportages per maand.

Specifieke security-vragen of een IT-questionnaire die je wilt laten invullen?

Mail privacy@koldwerk.nl
Behaal je certificeringBeheer je administratieBehoud je compliance