Ga direct naar de inhoud
Defense-in-depth · 5 lagen

Cryptografisch onweerlegbaar.
Niet alleen "goed afgesloten".

Drie cijfers die het verschil maken: HMAC-SHA256 hash-chain over élke mutatie · AES-256-GCM at-rest voor CONFIDENTIAL+ velden · bcrypt cost-factor 12 voor wachtwoorden. Daaronder een 5-laagse stack die elke fase van een aanval pakt — niet één muur die als hij valt alles meeneemt.

HMAC-SHA256
audit-chain over élke mutatie
100% EU
Hetzner DE · geen US-cloud
< 5 min
step-up reauth-window
Per laag

Wat er per laag gebeurt.

Laag 1 — Perimeter

Network

Hetzner Falkenstein + Nürnberg DE. EU-edge-only routing. Geen US-cloud-vendors in het kritieke pad.

EU-soevereinGDPR Art. 44–49

Productie-clusters draaien op Hetzner Online GmbH (DE). Geen AWS/Azure/GCP. CLOUD Act-risico vermeden in default-stack.

TLS 1.3-only

HSTS preload-list, max-age 2 jaar, subdomains. TLS 1.2 alleen voor legacy-clients met opt-in. Geen TLS 1.0/1.1.

IP-allowlist

Per workspace CIDR-ranges, fail-closed bij onbekend IP. Trusted-proxy-detectie zodat XFF-header niet blind vertrouwd wordt.

Frame-ancestors none

Dashboard + admin niet embedbaar in iframes — clickjacking-defense via CSP.

DDoS + bot-shield

Cloudflare EU-edge voor volumetric mitigation. Bypass-IP-allowlist beschikbaar voor enterprise-VPN-paden.

Login rate-limit

10 pogingen / 15 min per account én per IP. Backoff + lockout. Aanvullend session-versioning op password-reset.

Laag 2 — Identiteit

Auth

Bcrypt-12, TOTP, passkeys, magic-link, SAML 2.0, OIDC, SCIM 2.0, IP-allowlist, anomaly-detection. Step-up reauth voor alles wat geld of gegevens raakt.

bcrypt cost-factor 12

Wachtwoorden gehashed met bcrypt-12. Geen plaintext, geen MD5/SHA1. Argon2id-migratiepad opt-in beschikbaar voor enterprise-workspaces.

TOTP 2FA + recovery

RFC-6238 6-digit, 30-sec window. Authenticator-app (Authy/Aegis/1Password). 8 recovery-codes one-time-use.

Passkeys / WebAuthn

FIDO2-registratie live onder Settings → Security. Werkt platform-agnostic (iCloud Keychain, Bitwarden, Windows Hello). TOTP blijft als gelijkwaardig alternatief.

Magic-link

Password-loos pad. 15-min HMAC-SHA256 token, single-use, gebonden aan IP + user-agent fingerprint.

SAML 2.0 + OIDC

Open-source SAML/SCIM library (Apache-2.0, in-proces). JIT-provisioning via SCIM 2.0. Tested met Okta · Entra ID · Google Workspace · JumpCloud.

SCIM 2.0 provisioning

Auto-provisioning + deprovisioning. Token-rotatie 90 dagen. Bearer-token via step-up-reauth te genereren.

Step-up reauth

Gevoelige acties (SSO-config, SCIM-token-generate, 2FA-wijziging, email-change, workspace-security-policy) vereisen binnen 5 min opnieuw wachtwoord + 2FA.

Anomaly-detection

LoginAnomaly-model + opslag-infra live. Geo-IP + velocity-check signaal-pad in productie, met escalatie naar workspace-owner bij verdachte logins.

Session-versioning

Force-logout-everywhere bij password-reset of role-revoke. Idle-lock 30 min. Max-age configurabel per workspace.

Laag 3 — Inhoud

Data

AES-256-GCM at-rest voor CONFIDENTIAL+. 4-laagse classificatie cascadeert door delen, downloaden, audit. RESTRICTED vereist altijd step-up.

AES-256-GCM at-rest

PostgreSQL TDE op cluster-level. Object-storage (Hetzner) AES-256-GCM. Field-level voor CONFIDENTIAL+ payloads (IBAN, BSN, salaris).

TLS 1.3 in-transit

Mutual-TLS tussen app-tier en DB-tier binnen private VLAN. Geen plaintext-binnenpad, ook niet in DEV.

Classification cascade

PUBLIC · INTERNAL · CONFIDENTIAL · RESTRICTED. Metadata + share-restrictie + field-level redaction (IBAN/BSN/salaris) live per resource-type.

Key-management

Application-level secrets in env-vault (Hetzner Secret-Manager). HMAC-key + JWT-secret apart van DB-credentials. Rotatie zonder downtime via dual-key window.

Magic-byte sniffing

Uploads gevalideerd op magic-bytes + content-type. Path-traversal guard. Bestanden buiten public/ — geen directe URL-serving.

Signed-URL per request

Auth-gated download-route checkt workspaceId + classification + step-up vóór elke serve. Geen URL-raadbaarheid tussen workspaces.

Tenant-isolation hard

Elke Prisma-query filtert verplicht op workspaceId. Concern-queries via getAllDescendantIds(). Cross-tenant-tests in CI als gate.

No-AI-training claim

Workspace-data wordt nooit gebruikt om derde-partij-modellen te trainen. Contractueel vastgelegd in DPA art. 4 + AV art. 7.

Laag 4 — Bewijs

Audit

HMAC-SHA256 hash-chain over élke mutatie. 90+ AuditAction-types. Tamper-detect via /api/audit/verify. Pre-deploy gate weigert deploy bij gebroken keten.

HMAC-SHA256 hash-chain

Elke audit-rij bevat HMAC over (vorige hash || huidige velden). Eén verwijderde of gewijzigde rij breekt de keten — detecteerbaar.

90+ AuditAction-types

CREATE/UPDATE/DELETE/READ-bulk per resource. Auth-events (LOGIN, LOGIN_FAIL, PASSWORD_RESET, 2FA_ENABLE). Permission-changes. Step-up-events.

Verify-endpoint

GET /api/audit/verify herlooft de keten server-side. Cron-run weekly + pre-deploy gate. Server-side HMAC-key niet zichtbaar voor app-users.

Per-resource timeline

Elke resource-detailpagina toont eigen timeline: wie · wat · wanneer · vanaf welk IP. Niet stilletjes herschrijfbaar (verschil met Asana/Monday/ClickUp).

Audit-export

CSV + JSON, max 10k entries/export. Stream-mode voor enterprise-volumes. Elke export-actie zelf óók geaudit (evidence-trail).

Retention configurabel

Default 7 jaar (NL fiscaal). Per workspace instelbaar 3/5/7/10 jaar. Land-default uit workspace.country-detectie (DE/FR/IT 10j).

Compliance-PDF on-demand

Eén-klik snapshot van alle policies + 90-dagen audit-summary. Download-event zelf óók geaudit. Evidence voor ISO/SOC2-trail.

Laag 5 — Continuïteit

Recovery

30-dagen encrypted backups. 7-dagen point-in-time-recovery. Maandelijkse restore-oefeningen op staging. Self-export altijd beschikbaar.

Daily encrypted backups

24h-cycle, AES-256-GCM at-rest binnen Hetzner-EU. 30-dagen retention. Off-site replicatie naar tweede Hetzner-DC.

Point-in-time-recovery

WAL-archiving voor laatste 7 dagen. Restore tot op de seconde mogelijk binnen RPO ≤ 5 min · RTO ≤ 4 uur.

Maandelijkse restore-test

Disaster-recovery-paraatheid wordt iedere maand op staging geverifieerd. Resultaten in compliance-PDF.

Self-export always-on

Account → Data exporteren · CSV + JSON. Workspace-export inclusief audit-log + classificaties + permissies-snapshot.

Geen lock-in

Wat erin gaat kan er ook uit. Multi-format (CSV/JSON/UBL/SAF-T/SAF/XAF). Migratie-pad gedocumenteerd in /help/exporteren.

Workspace-deletion

Eigenaar kan workspace + alle data binnen 30 dagen onomkeerbaar laten wissen. Soft-delete voor 30d-undo, daarna hard.

Threat-matrix

Welke aanvallen we mitigeren.

Niet alle dreigingen zijn gelijk. Zes scenario's die in MITRE ATT&CK vaak voorkomen — en welke RighettiOS-mechanismen ze opvangen.

Account-takeover

Aanvaller probeert in te loggen met gestolen wachtwoord of phishing-pagina.

  • TOTP / passkey verplicht op admin-rollen (workspace-policy)
  • Anomaly-detection (geo-IP + velocity) flag't verdachte logins
  • Session-versioning forceert logout-everywhere bij wachtwoord-reset
  • Magic-link single-use + IP-binding voorkomt token-replay

Lateral movement

Aanvaller met één gehackte account probeert breder toegang te krijgen.

  • Default-deny permission-checks op élke API-endpoint
  • Step-up reauth voor SSO/SCIM-config + 2FA-wijziging
  • Break-glass alleen tijdelijk, ge-audit, met workspace-owner-notificatie
  • Tenant-isolation hard via verplichte workspaceId-filter

Data-exfiltration

Insider of compromised account exporteert grote hoeveelheden data.

  • Bulk-read events + export-events apart geaudit
  • RESTRICTED-classificatie vereist step-up vóór download
  • Rate-limit op export-endpoints (10k entries / call max)
  • Field-level redaction maskeert IBAN/BSN/salaris per rol

Ransomware / data-destruction

Aanvaller versleutelt of verwijdert workspace-data.

  • Daily encrypted off-site backups (30d retention) — herstel altijd mogelijk
  • PITR voor laatste 7 dagen tot op de seconde
  • Soft-delete default met 30d-undo voor accidentele wipes
  • Audit-chain detecteert tampering — herstel-bewijs onweerlegbaar

Insider-threat

Medewerker met legitieme toegang misbruikt rechten.

  • HMAC-chain audit kan niet stilletjes herschreven worden
  • Break-glass elevation tijd-gelimiteerd + workspace-owner-notify
  • Privilege-rank-check verbiedt zelf-promotie naar hogere rol
  • Permission-changes apart geaudit (separate AuditAction)

Supply-chain attack

Compromised dependency injecteert kwaadaardige code.

  • Renovate-bot + npm-audit weekly · CI-gate op HIGH/CRITICAL
  • Self-host kritieke OSS-componenten (Office · video-SFU · sign) op Hetzner DE
  • Geen runtime-fetch van externe scripts — alles bundled bij build
  • Subresource-integrity op het kleine aantal externe assets
Step-up reauth

Een gekaapte cookie is niet genoeg.

Voor alle gevoelige acties vragen we binnen 5 minuten opnieuw je wachtwoord + 2FA. Zelfs als iemand je sessie-cookie heeft, kunnen ze geen IBAN wijzigen, SCIM-token genereren of workspace overdragen zonder die her-bevestiging.

Sessie actief
cookie + JWT
Gevoelige actie
trigger gedetecteerd
Step-up vereist
< 5 min ago?
Recent her-bevestigd

Actie wordt direct uitgevoerd. Step-up blijft 5 minuten geldig voor opeenvolgende admin-acties.

Niet recent her-bevestigd

Modal: wachtwoord + 2FA-code. Bij faal: 3 pogingen, daarna lock + audit-event LOGIN_STEPUP_FAIL.

Identiteit & toegang

  • Email-adres wijzigen
  • 2FA-methode aan/uitzetten
  • Passkey toevoegen of verwijderen
  • Recovery-codes regenereren
  • SSO-configuratie wijzigen (SAML metadata, OIDC client-secret)
  • SCIM-token genereren of intrekken
  • Workspace-owner overdracht

Finance & geld

  • IBAN-rekening toevoegen of wijzigen
  • Mollie-payout-bestemming wijzigen
  • Autoscale spending-cap aanpassen of activeren
  • Plan-downgrade met data-deletion-impact
  • Gefactureerde bedragen herstellen of crediteren

Data & classificatie

  • RESTRICTED-bestand downloaden
  • Audit-log exporteren
  • Workspace-data export aanvragen
  • Sub-processor-objection indienen
  • Workspace permanent verwijderen

Beleid & compliance

  • IP-allowlist wijzigen
  • Workspace security-policy aanpassen (idle-lock, session-max-age)
  • Retention-period wijzigen
  • Custom-DPA uploaden
  • Break-glass elevation aanvragen
Audit-chain

HMAC-SHA256 keten — niet stilletjes herschrijfbaar.

Elke audit-rij rekent zijn eigen HMAC over (vorige rij-hash || huidige velden). Eén verwijderde of gewijzigde rij breekt de keten. /api/audit/verify herloopt server-side en rapporteert waar de keten breekt.

row n−2
INVOICE_SEND
priya@bureau.nl
08:42:11
h=7a3f9c
prev_hash
row n−1
PAYMENT_RECEIVED
mollie-webhook
08:42:14
h=4b1e8d
prev_hash
row n
JOURNAL_POSTED
system
08:42:14
h=2c9a55
prev_hash
row n+1
CLIENT_NOTIFY
brevo-webhook
08:42:16
h=f0d3a7
HMAC-key in env-vault

Niet zichtbaar voor app-users. DB-lek alleen geeft geen vervalsingsmogelijkheid.

Cron weekly verify

scripts/audit-chain-verify.ts draait wekelijks; pre-deploy gate weigert release bij break.

90+ AuditAction-types

Auth, finance, CRUD, permission-changes, exports, step-up-events. Per-resource timeline in de UI.

Shared responsibility

Wie dekt wat — eerlijke scope-grens.

RighettiOS wordt gehost op Europese Hetzner-infrastructuur (Falkenstein DE en Helsinki FI), waar datacenter- en operationele controls onder Hetzner's ISO/IEC 27001:2022-gecertificeerde ISMS vallen. Onze applicatielaag voegt daarboven eigen controls toe voor tenant-isolatie, audit logging, encryptie, toegangscontrole en retention. We claimen géén eigen ISO-certificering — die hebben we (nog) niet — maar leveren control-mapping voor jouw eigen audit-track.

Hetzner dekt (infrastructuur)

  • Fysieke datacenter-beveiliging
  • Stroom · koeling · netwerk-redundantie
  • Datacenter-operatie + 24/7 monitoring
  • ISMS-processen (ISO/IEC 27001:2022, ISO 27017, ISO 27018, TÜV, BSI C5)
  • Hardware-firmware-updates + lifecycle
  • Network-edge (anti-DDoS, BGP, edge-firewall)
  • TOMs uit Hetzner DPA (subverwerker)

RighettiOS dekt (applicatie + data)

  • Tenant-isolatie (workspace-scoped queries op elke route)
  • IAM · 2FA · WebAuthn · step-up reauth · SCIM
  • Tamper-evident audit-log (HMAC-SHA256 chain)
  • Encryptie at-rest (AES-256-GCM, onze keys, niet Hetzner's)
  • Application-security · dependency-management · OS-patching
  • Backup- en retention-beleid per workspace (off-site DR-replicatie naar 2e Hetzner-DC bij productie-deploy)
  • Database security · query-iso · row-level access
  • Incident response · DPA naar klanten · sub-processor-registry

Bron Hetzner ISO-scope: certificaten gepubliceerd voor Hetzner Online GmbH (DE) en Hetzner Finland Oy (FI), datacenterparken Nürnberg · Falkenstein · Helsinki. Klanten mogen het certificaat onveranderd citeren. Operationele controls die productie-deploy vereisen (off-site DR-replicatie, multi-region failover, eerste pentest-rapport) zijn live bij prod-launch — pre-launch klanten krijgen een control-status-snapshot bij onboarding.

Compliance-mapping

Eén tabel voor je auditor.

GDPR Art-32 controls × ISO 27001 Annex A × NEN-7510 (zorg) — naast de concrete RighettiOS-implementatie. Compliance-PDF downloadbaar via Settings → Enterprise.

ControlGDPRISO 27001NEN-7510RighettiOS
Encryption at-restArt. 32(1)(a)A.10.1.17510 §11.2AES-256-GCM op DB + storage; field-level voor CONFIDENTIAL+
Encryption in-transitArt. 32(1)(a)A.13.1.17510 §13.1TLS 1.3-only · HSTS preload · mTLS app↔DB
Access control (RBAC)Art. 32(1)(b)A.9.1.17510 §9.1Default-deny · 35+ permissies · per-lid overrides · rank-check
Audit-loggingArt. 32(1)(b)A.12.4.17510 §12.4HMAC-chain · 90+ event-types · /api/audit/verify
Backup & restoreArt. 32(1)(c)A.12.3.17510 §17.1Daily encrypted · 30d retention · 7d PITR · monthly restore-test
Key managementArt. 32(1)(a)A.10.1.27510 §10.1Env-vault · dual-key rotation · separate HMAC-key
Incident responseArt. 33A.16.1.17510 §16.124h klant-notify · 72h DPA-notify · runbook in /security-disclosure
Supplier securityArt. 28A.15.1.17510 §15.1EU-only sub-processors · 30d notify · publieke /subprocessors
Data subject rightsArt. 15–22A.18.1.47510 §18.1Self-service export · DPO contact · 10w-day SLA
Pseudonymisation/redactionArt. 32(1)(a)A.10.1.17510 §11.2Field-level redaction (IBAN/BSN/salaris) per rol
Tamper-evidenceArt. 32(1)(b)A.12.4.27510 §12.4HMAC-chain · cron weekly verify · pre-deploy gate
Vulnerability mgmtArt. 32(1)(d)A.12.6.17510 §12.6Renovate · npm-audit CI-gate · responsible disclosure programma
FAQ

Vragen die auditors stellen.

Welke encryptie-algoritmes gebruiken jullie precies, en op welk niveau?

AES-256-GCM at-rest op database + object-storage. TLS 1.3 (en TLS 1.2 fallback) in-transit met HSTS preload. Wachtwoorden bcrypt cost-factor 12. HMAC-SHA256 voor audit-chain en password-reset-tokens. Geen DES, geen RC4, geen MD5 voor security-doeleinden. Argon2id opt-in beschikbaar voor enterprise-workspaces.

Hoe garanderen jullie dat een DB-lek niet automatisch alle gevoelige data lekt?

Drie lagen: (1) wachtwoorden zijn bcrypt-12 — niet bruteforceable in redelijke tijd. (2) Audit-chain HMAC-key zit in env-vault, niet in de DB — een DB-lek geeft geen vervalsingsmogelijkheid. (3) CONFIDENTIAL+ velden zoals IBAN/BSN/salaris worden field-level versleuteld met een aparte key per workspace. Een DB-lek alleen geeft een aanvaller geen leesbare gegevens van die velden.

Kunnen jullie aantonen dat jullie audit-log niet stilletjes is herschreven?

Ja. Elke audit-rij bevat een HMAC-SHA256 over (vorige rij-hash || huidige velden). Eén verwijderde of gewijzigde rij breekt de keten. /api/audit/verify herloopt server-side de keten en rapporteert de eerste afwijking. Cron-run wekelijks; pre-deploy gate weigert release als verify faalt. Belangrijk verschil met Asana/Monday/ClickUp: bij ons kan een super-admin de log niet ongezien herschrijven.

Wat gebeurt er als jullie hosting-provider (Hetzner) zelf gehackt wordt?

Defense-in-depth: encryptie at-rest met onze keys (niet Hetzner's), audit-chain die tampering detecteert, plus off-site DR-replicatie naar een tweede Hetzner-DC bij productie-deploy (+ optioneel derde DC voor enterprise). Hetzner heeft fysieke beveiliging + ISO/IEC 27001:2022 + ISO 27017 + ISO 27018 + TÜV. Bij compromise op infra-niveau valt pre-image-attack op encrypted data nog steeds buiten redelijke aanvaller-mogelijkheden zonder onze keys.

Hoe gaan jullie om met overheidsverzoeken om data (Wet Politiegegevens, CLOUD Act)?

Hetzner is een Duitse GmbH onder EU-recht — geen US-jurisdictie, geen CLOUD Act-blootstelling in de default-stack. Voor NL-jurisdictie geldt: alleen rechtmatige opvragingen via NL-rechter worden behandeld; we melden het de klant tenzij dat wettelijk verboden is (gag-order-discipline). Sovereign-deployment beschikbaar voor overheid/zorg/defensie met extra waarborgen.

Wie heeft toegang tot mijn data binnen RighettiOS-personeel?

Productie-toegang is opt-in per workspace (break-glass). Default kunnen onze engineers geen workspace-data zien. Bij een break-glass-elevation: tijd-gelimiteerd (max 4 uur), reden + ticket-nummer verplicht, audit-logged, en notificatie naar workspace-owner binnen 60 sec. Sub-processors (Hetzner/Mollie/Brevo) hebben alleen toegang tot hun eigen scope-deel.

Hoe lang houden jullie data na account-verwijdering?

30 dagen soft-delete (undo-window), daarna hard-delete uit primaire DB binnen 7 dagen. Audit-log van het verwijder-event blijft bewaard voor de wettelijke retention-periode (NL 7j fiscaal). Backups roteren binnen 30 dagen — na 30+30=60 dagen is alle data inclusief in oude backups vernietigd. Wettelijke uitzonderingen (lopend onderzoek, openstaande facturen) worden expliciet gecommuniceerd.

Welke certificeringen hebben jullie?

Operationeel: AVG/GDPR-conform, NEN-7510 mapping (zelf-attestatie), DPA + sub-processor-registry publiek beschikbaar. Hetzner als infrastructuur-leverancier heeft ISO 27001/27017/27018 + TÜV. Externe pentest-rapporten en compliance-mappings beschikbaar voor enterprise-klanten via Settings → Enterprise.

Kunnen we een eigen DPA uploaden in plaats van jullie standaard?

Ja. Workspace-eigenaar kan een eigen verwerkersovereenkomst uploaden via Settings → Compliance → DPA. Die wordt juridisch dominant boven onze standaard-tekst. Versionering + acceptance-flow + immutable audit. Zie /dpa voor details.

Hoe worden security-vulnerabilities gerapporteerd en afgehandeld?

Responsible disclosure via security@righettios.com. Triage binnen 7 werkdagen. Kritieke fixes binnen 30 dagen. Publieke disclosure typisch 90 dagen na fix-deploy. Safe-harbor-toezegging voor researchers die zich aan de policy houden. Recognition na geverifieerde disclosure. Zie /security-disclosure.

Security-vraag, pentest-rapport of compliance-bundel?

Schrijf rechtstreeks naar onze security-mailbox. Ontvangstbevestiging binnen 2 werkdagen, triage binnen 7.