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.
Vijf lagen. Eén breekt — vier blijven.
Defense-in-depth betekent: een aanvaller die laag 1 doorbreekt, valt nog niet op je data. Hieronder elke laag, met de concrete maatregelen daarbinnen.
Hetzner Falkenstein + Nürnberg DE. EU-edge-only routing. Geen US-cloud-vendors in het kritieke pad.
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.
AES-256-GCM at-rest voor CONFIDENTIAL+. 4-laagse classificatie cascadeert door delen, downloaden, audit. RESTRICTED vereist altijd step-up.
HMAC-SHA256 hash-chain over élke mutatie. 90+ AuditAction-types. Tamper-detect via /api/audit/verify. Pre-deploy gate weigert deploy bij gebroken keten.
30-dagen encrypted backups. 7-dagen point-in-time-recovery. Maandelijkse restore-oefeningen op staging. Self-export altijd beschikbaar.
Wat er per laag gebeurt.
Network
Hetzner Falkenstein + Nürnberg DE. EU-edge-only routing. Geen US-cloud-vendors in het kritieke pad.
Productie-clusters draaien op Hetzner Online GmbH (DE). Geen AWS/Azure/GCP. CLOUD Act-risico vermeden in default-stack.
HSTS preload-list, max-age 2 jaar, subdomains. TLS 1.2 alleen voor legacy-clients met opt-in. Geen TLS 1.0/1.1.
Per workspace CIDR-ranges, fail-closed bij onbekend IP. Trusted-proxy-detectie zodat XFF-header niet blind vertrouwd wordt.
Dashboard + admin niet embedbaar in iframes — clickjacking-defense via CSP.
Cloudflare EU-edge voor volumetric mitigation. Bypass-IP-allowlist beschikbaar voor enterprise-VPN-paden.
10 pogingen / 15 min per account én per IP. Backoff + lockout. Aanvullend session-versioning op password-reset.
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.
Wachtwoorden gehashed met bcrypt-12. Geen plaintext, geen MD5/SHA1. Argon2id-migratiepad opt-in beschikbaar voor enterprise-workspaces.
RFC-6238 6-digit, 30-sec window. Authenticator-app (Authy/Aegis/1Password). 8 recovery-codes one-time-use.
FIDO2-registratie live onder Settings → Security. Werkt platform-agnostic (iCloud Keychain, Bitwarden, Windows Hello). TOTP blijft als gelijkwaardig alternatief.
Password-loos pad. 15-min HMAC-SHA256 token, single-use, gebonden aan IP + user-agent fingerprint.
Open-source SAML/SCIM library (Apache-2.0, in-proces). JIT-provisioning via SCIM 2.0. Tested met Okta · Entra ID · Google Workspace · JumpCloud.
Auto-provisioning + deprovisioning. Token-rotatie 90 dagen. Bearer-token via step-up-reauth te genereren.
Gevoelige acties (SSO-config, SCIM-token-generate, 2FA-wijziging, email-change, workspace-security-policy) vereisen binnen 5 min opnieuw wachtwoord + 2FA.
LoginAnomaly-model + opslag-infra live. Geo-IP + velocity-check signaal-pad in productie, met escalatie naar workspace-owner bij verdachte logins.
Force-logout-everywhere bij password-reset of role-revoke. Idle-lock 30 min. Max-age configurabel per workspace.
Data
AES-256-GCM at-rest voor CONFIDENTIAL+. 4-laagse classificatie cascadeert door delen, downloaden, audit. RESTRICTED vereist altijd step-up.
PostgreSQL TDE op cluster-level. Object-storage (Hetzner) AES-256-GCM. Field-level voor CONFIDENTIAL+ payloads (IBAN, BSN, salaris).
Mutual-TLS tussen app-tier en DB-tier binnen private VLAN. Geen plaintext-binnenpad, ook niet in DEV.
PUBLIC · INTERNAL · CONFIDENTIAL · RESTRICTED. Metadata + share-restrictie + field-level redaction (IBAN/BSN/salaris) live per resource-type.
Application-level secrets in env-vault (Hetzner Secret-Manager). HMAC-key + JWT-secret apart van DB-credentials. Rotatie zonder downtime via dual-key window.
Uploads gevalideerd op magic-bytes + content-type. Path-traversal guard. Bestanden buiten public/ — geen directe URL-serving.
Auth-gated download-route checkt workspaceId + classification + step-up vóór elke serve. Geen URL-raadbaarheid tussen workspaces.
Elke Prisma-query filtert verplicht op workspaceId. Concern-queries via getAllDescendantIds(). Cross-tenant-tests in CI als gate.
Workspace-data wordt nooit gebruikt om derde-partij-modellen te trainen. Contractueel vastgelegd in DPA art. 4 + AV art. 7.
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.
Elke audit-rij bevat HMAC over (vorige hash || huidige velden). Eén verwijderde of gewijzigde rij breekt de keten — detecteerbaar.
CREATE/UPDATE/DELETE/READ-bulk per resource. Auth-events (LOGIN, LOGIN_FAIL, PASSWORD_RESET, 2FA_ENABLE). Permission-changes. Step-up-events.
GET /api/audit/verify herlooft de keten server-side. Cron-run weekly + pre-deploy gate. Server-side HMAC-key niet zichtbaar voor app-users.
Elke resource-detailpagina toont eigen timeline: wie · wat · wanneer · vanaf welk IP. Niet stilletjes herschrijfbaar (verschil met Asana/Monday/ClickUp).
CSV + JSON, max 10k entries/export. Stream-mode voor enterprise-volumes. Elke export-actie zelf óók geaudit (evidence-trail).
Default 7 jaar (NL fiscaal). Per workspace instelbaar 3/5/7/10 jaar. Land-default uit workspace.country-detectie (DE/FR/IT 10j).
Eén-klik snapshot van alle policies + 90-dagen audit-summary. Download-event zelf óók geaudit. Evidence voor ISO/SOC2-trail.
Recovery
30-dagen encrypted backups. 7-dagen point-in-time-recovery. Maandelijkse restore-oefeningen op staging. Self-export altijd beschikbaar.
24h-cycle, AES-256-GCM at-rest binnen Hetzner-EU. 30-dagen retention. Off-site replicatie naar tweede Hetzner-DC.
WAL-archiving voor laatste 7 dagen. Restore tot op de seconde mogelijk binnen RPO ≤ 5 min · RTO ≤ 4 uur.
Disaster-recovery-paraatheid wordt iedere maand op staging geverifieerd. Resultaten in compliance-PDF.
Account → Data exporteren · CSV + JSON. Workspace-export inclusief audit-log + classificaties + permissies-snapshot.
Wat erin gaat kan er ook uit. Multi-format (CSV/JSON/UBL/SAF-T/SAF/XAF). Migratie-pad gedocumenteerd in /help/exporteren.
Eigenaar kan workspace + alle data binnen 30 dagen onomkeerbaar laten wissen. Soft-delete voor 30d-undo, daarna hard.
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
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.
Actie wordt direct uitgevoerd. Step-up blijft 5 minuten geldig voor opeenvolgende admin-acties.
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
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.
Niet zichtbaar voor app-users. DB-lek alleen geeft geen vervalsingsmogelijkheid.
scripts/audit-chain-verify.ts draait wekelijks; pre-deploy gate weigert release bij break.
Auth, finance, CRUD, permission-changes, exports, step-up-events. Per-resource timeline in de UI.
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.
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.
| Control | GDPR | ISO 27001 | NEN-7510 | RighettiOS |
|---|---|---|---|---|
| Encryption at-rest | Art. 32(1)(a) | A.10.1.1 | 7510 §11.2 | AES-256-GCM op DB + storage; field-level voor CONFIDENTIAL+ |
| Encryption in-transit | Art. 32(1)(a) | A.13.1.1 | 7510 §13.1 | TLS 1.3-only · HSTS preload · mTLS app↔DB |
| Access control (RBAC) | Art. 32(1)(b) | A.9.1.1 | 7510 §9.1 | Default-deny · 35+ permissies · per-lid overrides · rank-check |
| Audit-logging | Art. 32(1)(b) | A.12.4.1 | 7510 §12.4 | HMAC-chain · 90+ event-types · /api/audit/verify |
| Backup & restore | Art. 32(1)(c) | A.12.3.1 | 7510 §17.1 | Daily encrypted · 30d retention · 7d PITR · monthly restore-test |
| Key management | Art. 32(1)(a) | A.10.1.2 | 7510 §10.1 | Env-vault · dual-key rotation · separate HMAC-key |
| Incident response | Art. 33 | A.16.1.1 | 7510 §16.1 | 24h klant-notify · 72h DPA-notify · runbook in /security-disclosure |
| Supplier security | Art. 28 | A.15.1.1 | 7510 §15.1 | EU-only sub-processors · 30d notify · publieke /subprocessors |
| Data subject rights | Art. 15–22 | A.18.1.4 | 7510 §18.1 | Self-service export · DPO contact · 10w-day SLA |
| Pseudonymisation/redaction | Art. 32(1)(a) | A.10.1.1 | 7510 §11.2 | Field-level redaction (IBAN/BSN/salaris) per rol |
| Tamper-evidence | Art. 32(1)(b) | A.12.4.2 | 7510 §12.4 | HMAC-chain · cron weekly verify · pre-deploy gate |
| Vulnerability mgmt | Art. 32(1)(d) | A.12.6.1 | 7510 §12.6 | Renovate · npm-audit CI-gate · responsible disclosure programma |
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.
Compliance-set in één klik.
AVG Art. 28 standaard-DPA + custom-upload + 6 jurisdicties.
Wie raakt jouw data — Hetzner · Mollie · Brevo · self-host.
AVG · NIS2 · DORA · NEN-7510 · ISO 27001 · per-land mandates.
Hoe meld je een vulnerability? Safe-harbor · 90d-window.
Inzage · rectificatie · verwijdering — Art. 15-22 GDPR.
Live uptime + incident-history.
Security-vraag, pentest-rapport of compliance-bundel?
Schrijf rechtstreeks naar onze security-mailbox. Ontvangstbevestiging binnen 2 werkdagen, triage binnen 7.