Hoe wij uw bedrijfsdata beveiligen — in begrijpelijke taal voor besluitvormers en met technisch detail voor uw IT- en compliance- functionarissen.
EigenSoftware is een multi-tenant SaaS-platform voor kennismanagement en AI-ondersteunde processen. Onze klanten delen één installatie, maar elke klant heeft een volledig geïsoleerde database. We hebben in het voorjaar van 2026 een complete beveiligings-cyclus doorlopen waarin de twaalf belangrijkste maatregelen — van wachtwoordbeleid tot veld-encryptie en multi-factor authenticatie — zijn ontworpen, geïmplementeerd, gedocumenteerd en getest. Onze codebase bevat 109+ regressietests die deze maatregelen permanent borgen.
| Uw vraag | Ons antwoord |
|---|---|
| Waar staat onze data fysiek? | Op een server in een Nederlands datacenter (TransIP). Geen data verlaat Nederland of de EU, behoudens uitgaande verzoeken naar AI-providers (zie 'Wie heeft toegang tot onze AI-data?'). |
| Wie kan bij onze data? | Alleen ingelogde gebruikers van uw eigen organisatie, plus de verantwoordelijke beheerder bij EigenSoftware (één persoon). Toegang is gelogd, MFA-beveiligd en controleerbaar via de audit-log. |
| Wat als een medewerker uit dienst gaat? | U deactiveert het account in de admin-omgeving — alle sessies en refresh-tokens worden direct ingetrokken. De gebruiker kan met geen enkele bestaande inlogcombinatie meer naar binnen. |
| Wat als een medewerker zijn telefoon kwijt is? | We leveren backup-codes mee bij MFA-inschakeling. Lukt dat ook niet, dan kan een collega-beheerder MFA voor het account uitschakelen, waarna de gebruiker een wachtwoord-reset doet en MFA opnieuw inschakelt. |
| Wie heeft toegang tot onze AI-data? | Alleen u en wij. Wanneer u een AI-functie aanroept gaat de input éénmalig naar de AI-provider (OpenAI / Anthropic / Mistral) waarbij hun data-verwerkingsovereenkomsten gelden. Wij gebruiken de Enterprise/API-tier die input niet voor modeltraining gebruikt. |
| Is het systeem AVG-conform? | Ja. Wij hebben opslagbeperking, dataminimalisatie, recht op inzage / verwijdering, audit-logging, datalek-procedure en MFA voor admins geïmplementeerd. Een verwerkersovereenkomst (DPA) sluiten wij standaard met u af voor we starten. |
| Hoe weet ik dat jullie zorgvuldig blijven? | Onze codebase bevat 109+ geautomatiseerde tests die elke deploy controleren of de beveiligings-maatregelen nog werken. Dependabot scant wekelijks alle externe libraries. Onze audit-log is altijd inzichtelijk. |
| Wat doen jullie bij een datalek? | Binnen 4 uur na ontdekking informeren wij u; binnen 72 uur volgt een AVG-melding aan de Autoriteit Persoonsgegevens namens u (mits dat door u gewenst is). Zie hoofdstuk 8 voor het volledige protocol. |
Per AVG-verplichting beschrijven we welke maatregel wij hebben getroffen en hoe u dit zelf kunt verifiëren.
| AVG-onderwerp | Onze invulling |
|---|---|
| Art. 5 — Rechtmatigheid en transparantie | Verwerkingen zijn gedocumenteerd in onze verwerkersovereenkomst (DPA). Logs worden alleen gebruikt voor audit en troubleshooting. |
| Art. 5 — Doelbinding | Klant-data wordt nooit gebruikt voor andere doeleinden dan uw eigen platformgebruik. AI-providers krijgen alleen gegevens als u expliciet een AI-actie uitvoert. |
| Art. 5 — Dataminimalisatie | We slaan alleen op wat nodig is voor de functionaliteit. Logbestanden bevatten gepseudonimiseerde e-mailadressen en nooit wachtwoorden. |
| Art. 5 — Opslagbeperking | Logbestanden worden na 30 dagen automatisch verwijderd. Klant-data blijft tot u opzegt of verwijdering verzoekt. |
| Art. 5 — Integriteit en vertrouwelijkheid | TLS 1.2/1.3 in transit, AES-256-GCM op gevoelige velden in rust, isolatie per klant op database-niveau, MFA voor admins. |
| Art. 6 — Rechtmatige grondslag | Verwerking is gebaseerd op de overeenkomst met u (art. 6 lid 1 sub b). Voor optionele features (HIBP-check) geldt gerechtvaardigd belang. |
| Art. 13/14 — Informatieplicht | Onze privacyverklaring beschrijft welke gegevens we verzamelen, waarvoor en hoe lang. |
| Art. 15-22 — Rechten betrokkenen | Inzage, rectificatie, verwijdering en bezwaar honoreren wij binnen 1 maand. Stuur een verzoek naar info@eigensoftware.nl. |
| Art. 25 — Privacy by design | Beveiligingsmaatregelen zitten in elk laagje: input-validatie, tenant-isolatie, encryptie standaard aan in productie. |
| Art. 28 — Verwerkers en sub-verwerkers | Sub-verwerkers: TransIP (hosting), TransIP "Zorgeloos Mailen" (e-mail), OpenAI/Anthropic/Mistral (AI-functies). Lijst is up-to-date in de DPA. |
| Art. 30 — Verwerkingsregister | Verwerkingen zijn gedocumenteerd; we leveren een uittreksel aan u op verzoek. |
| Art. 32 — Beveiliging van de verwerking | Volledige technische maatregelen: zie hoofdstuk 5. |
| Art. 33-34 — Datalekmelding | Procedure: zie hoofdstuk 8. Tijdslijnen: 4u intern, 72u extern. |
Een vereenvoudigde weergave van onze opzet, zodat u en uw IT-team kunnen zien hoe data door het systeem stroomt.
Per maatregel: wat het is, waarom we het hebben en hoe het bijdraagt aan uw beveiligings-positie.
| Maatregel | Beschrijving |
|---|---|
| 5.1 — Geheimenbeheer | Geen secrets in code of git-repository. Productie-secrets zijn opgeslagen in een afgeschermd .env-bestand op de server. JWT-secret en admin-token zijn 64 hex-karakters (256-bit entropie) en zijn op 25 april 2026 voor het eerst geroteerd. |
| 5.2 — JWT-authenticatie en sessies | JSON Web Tokens met SHA-256 ondertekening. Access-token 1 uur geldig, refresh-token 30 dagen met rotatie en theft-detection: een gestolen refresh-token wordt gedetecteerd zodra hij dubbel wordt gebruikt, en alle sessies van die gebruiker worden direct geblokkeerd. |
| 5.3 — Toegangscontrole | Drie rollen: 'user' (eigen data), 'admin' (eigen tenant beheren) en 'superuser' (cross-tenant ondersteuning). Elke admin/superuser-actie loopt door een role-guard én staat in de audit-log. |
| 5.4 — Veld-encryptie (AES-256-GCM) | Gevoelige velden in de database (zoals AI-provider API-keys, MFA-secrets) zijn versleuteld met een per-tenant sleutel. De per-tenant sleutels zelf zijn versleuteld met een master-encryption-key. In productie weigert de applicatie te starten als de master-key ontbreekt. |
| 5.5 — Rate-limiting | Standaard 200 requests/minuut per tenant, login 10/min, wachtwoord-reset 3/uur, contact-formulier 3/uur. Ingebouwde bypass-detectie. |
| 5.6 — Wachtwoordbeleid en MFA | Minimaal 12 tekens (NIST 2024-richtlijn). Have-I-Been-Pwned-check: wachtwoorden uit bekende lekken worden geweigerd. Multi-factor authenticatie via TOTP met 10 backup-codes. |
| 5.7 — Token-hashing in DB | Wachtwoord-reset- en uitnodigingstokens worden vóór opslag gehashed met SHA-256. Een database-leak geeft daarmee geen werkende reset-links. |
| 5.8 — Cross-tenant isolatie | Twee lagen: (1) elke klant in een eigen MongoDB-database, (2) een wrapper die per query de tenantId afdwingt. Cross-tenant search is met 4 regressietests geverifieerd. |
| 5.9 — Input-validatie (Zod) | Alle API-bodies worden gevalideerd met strict-mode schemas. Onbekende velden worden geweigerd (bescherming tegen mass-assignment). |
| 5.10 — Logging en pseudonymisering | E-mailadressen, IP-adressen en user-IDs worden in logs gepseudonimiseerd (SHA-256 prefix). Logs ouder dan 30 dagen worden automatisch verwijderd. |
| 5.11 — TLS-configuratie | Mozilla Intermediate-cipher-suite (TLS 1.2 + 1.3 alleen). HSTS actief, OCSP-stapling, X-Frame-Options DENY. |
| 5.12 — Dependency-scanning | Dependabot scant elke dependency wekelijks op bekende CVE's. GitHub Actions security-audit blokkeert merges met openstaande high/critical issues. |
Omdat klanten zich vaak afvragen "kan een andere klant bij mijn data", leggen we deze laag uitgebreider uit.
Iedere klant krijgt bij aanmaak een eigen MongoDB-database
(tenant_uw-id). Deze database is fysiek gescheiden van die
van andere klanten. Een query op de database van klant A kan technisch
niet bij data van klant B — er is geen filter dat omzeild kan worden,
want het is een aparte database.
Daarnaast bestaat er een tenant_platform-database met
alleen default-templates (system-prompts, voorbeeld-workflows). Deze
bevat geen klantdata en is alleen toegankelijk voor onze beheerders.
Wanneer u een nieuwe tenant aanmaakt worden deze templates eenmalig
naar uw eigen database gekopieerd — vanaf dan staat alles bij u.
Bovenop de database-isolatie hebben we een wrapper-laag
(TenantCollection) die op elke query automatisch de
tenantId afdwingt. Zelfs in legacy single-DB modus is cross-tenant
toegang technisch onmogelijk. Dit wordt geverifieerd door 4
specifieke regressietests in de codebase.
Onze beheerders kunnen via een "inloggen-als-tenant"-mechanisme tijdelijk in een klant-omgeving werken voor support — elke keer expliciet geactiveerd, gelogd, en alleen na uw uitdrukkelijke toestemming.
Wat er in onze logs staat, hoe lang, en wie ze inziet.
| Categorie | Wat wordt gelogd |
|---|---|
| Authenticatie-gebeurtenissen | Login (gelukt/geweigerd), logout, wachtwoord-wijziging, MFA-inschakeling, sessie-revocation. |
| Gegevenstoegang | Toegang tot kennisbank-items, ontologie-zoekopdrachten, AI-aanroepen (prompt + provider + model + uitkomst-status). |
| Beheerhandelingen | Tenant-creatie/-verwijdering, gebruiker-uitnodigingen, role-wijzigingen, module-activeringen, template-resync. |
| Beveiligingsincidenten | Rate-limit-overschrijdingen, JWT-validatie-fouten, theft-detection-events, mislukte MFA-pogingen. |
Indien onverhoopt een datalek of beveiligingsincident optreedt, volgen wij dit protocol — gebaseerd op de AVG-meldplicht (artikel 33-34).
[INCIDENT]. Buiten kantoortijden bellen via
het nummer in uw verwerkersovereenkomst.
Met welke leveranciers werken wij, in welke landen staan zij, en wat betekent dat voor uw data.
| Sub-verwerker | Doel | Locatie | Voorwaarden |
|---|---|---|---|
| TransIP B.V. | Hosting (VPS) en mailrelay | Nederland | Volledige DPA op aanvraag; ISO 27001 / ISO 9001 gecertificeerd. |
| OpenAI | AI-functionaliteit (GPT-modellen) | VS / EU-route | Enterprise-tier: input wordt niet gebruikt voor model-training. |
| Anthropic | AI-functionaliteit (Claude-modellen) | VS / EU | API-tier: input wordt niet gebruikt voor model-training. |
| Mistral AI | AI-functionaliteit (Mistral-modellen) | Frankrijk | EU-leverancier; input wordt niet gebruikt voor training. |
| Have-I-Been-Pwned | Wachtwoord-breach-check (5-tekens SHA-1 prefix) | Wereldwijd | k-anonymity: wachtwoord verlaat onze server nooit. Optioneel uit te schakelen. |
/api/health voor uw eigen monitoring.Bij volledige uitval van de productieserver kunnen we binnen 24 uur een nieuwe omgeving optuigen vanuit onze GitHub-repository (codebase) en de meest recente backup (data). RTO (Recovery Time Objective): 24 uur. RPO (Recovery Point Objective): 7 dagen tot wekelijkse backup actief is, daarna 1 dag.
Goede beveiliging is samenwerking. Een paar punten waar wij op u rekenen:
Wij staan niet stil — hier ziet u welke verbeteringen er nog op de planning staan.
| Onderwerp | Status |
|---|---|
| WebAuthn / Passkeys | Phishing-resistente MFA naast TOTP. Gepland Q4 2026. |
| Hardware Security Module (HSM) | Master-encryption-key in HSM in plaats van .env. Gepland 2027 of bij klant-eis. |
| Wekelijkse offsite-backups | Automatische backup naar versleutelde storage buiten TransIP. Gepland Q3 2026. |
| ISO 27001 voorbereiding | Stappenplan richting certificering, in scope voor groei-fase. |
| Externe pen-test | Onafhankelijke security-audit door derde partij, eens per twee jaar. |
[SECURITY] of [INCIDENT][AUDIT]Wij doen ons werk met de aanname dat uw data het belangrijkste is wat u ons toevertrouwt.
EigenSoftware — informatiebeveiliging is geen feature, het is een fundament.
Wij beantwoorden uw security-vragen graag in een persoonlijk gesprek en bezorgen u de verwerkersovereenkomst voordat u een beslissing neemt.