Informatiebeveiligingsbeleid (NEN 7510)
Versie 1.0.0 - maart 2026
Dit beleid beschrijft de technische en organisatorische maatregelen binnen Remedice om de vertrouwelijkheid, integriteit en beschikbaarheid (BIV) van gegevens te waarborgen, conform NEN 7510 (informatiebeveiliging in de zorg).
1. Scope en doelstelling
Dit beleid is van toepassing op alle informatiesystemen, gegevens en processen die onderdeel zijn van de Remedice-dienstverlening. Het doel is het beschermen van patient- en gebruikersgegevens tegen ongeautoriseerde toegang, verlies, wijziging of onbeschikbaarheid.
2. BIV-classificatie
| Aspect | Classificatie | Toelichting |
|---|---|---|
| Vertrouwelijkheid | Hoog | Gezondheidsgegevens en persoonsgegevens |
| Integriteit | Hoog | Klinische analyses moeten correct zijn |
| Beschikbaarheid | Middel-Hoog | Niet spoedeisend, maar wel noodzakelijk voor dagelijkse zorgprocessen |
3. Technische maatregelen
3.1 Toegangsbeheer (NEN 7510 - A.9)
| Maatregel | Implementatie |
|---|---|
| Authenticatie | JWT-tokens (access: 30 min, refresh: 12 uur glijdend met absolute maximumduur van 7 dagen); web via HttpOnly cookies, native via expo-secure-store |
| Token-opslag (web) | HttpOnly cookies -- tokens worden nooit in localStorage of sessionStorage opgeslagen (XSS-bescherming) |
| Token-opslag (native) | expo-secure-store (iOS Keychain / Android Keystore, OS-versleuteld) |
| Tweefactorauthenticatie | Verplichte TOTP via authenticator-app voor alle gebruikers |
| Biometrische login | Optioneel, na initieel TOTP-setup, via trusted device-registratie |
| RBAC | Fijnmazig permissiemodel via HasPermissionCode, rollen per tenant |
| Least privilege | Gebruikers zien alleen gegevens waartoe zij geautoriseerd zijn |
| Rate limiting | Login: 10/min, TOTP: 5/min, wachtwoord wijzigen: 10/min, device registratie: 5/min |
| Brute-force-lockout | Account vergrendeld na 5 mislukte loginpogingen, gedurende 15 minuten |
| Sessie-expiratie | Automatisch na verlopen JWT; geen persistent sessions |
3.2 Versleuteling (NEN 7510 - A.10)
| Type | Methode | Toelichting |
|---|---|---|
| Data in transit | TLS 1.2+ | Alle communicatie via HTTPS |
| Patientgegevens at rest | Fernet (AES-128-CBC + HMAC-SHA256) | Veldversleuteling op patient- en medewerkergegevens (naam, geboortedatum, telefoonnummer, medicatie, allergieeen) |
| Archieven | AWS KMS (AES-256-GCM) | Chat compliance-archief en backups |
| Wachtwoorden | PBKDF2 met SHA256 | Django standaard hasher, salt per wachtwoord |
| TOTP-secrets | Opgeslagen via django-otp | Beveiligd door database-versleuteling |
3.3 Tenant-isolatie (NEN 7510 - A.13)
- Elke apotheek heeft een eigen PostgreSQL-schema via django-tenants
- Cross-tenant queries zijn technisch niet mogelijk via de ORM
- Subverwerkerdata is per tenant gescheiden (CloudWatch logstreams, S3-paden)
3.4 Netwerk en infrastructuur (NEN 7510 - A.13)
| Maatregel | Implementatie |
|---|---|
| Hosting | AWS eu-central-1 (Frankfurt), EU-regio |
| CORS | Productie: alleen expliciete origins toegestaan |
| CSRF | Django CsrfViewMiddleware actief |
| Admin-toegang | Niet-raadbaar admin-pad (ADMIN_URL) gecombineerd met verplichte TOTP; geen IP-allowlist |
| Container-isolatie | Docker met gescheiden services (web, worker, database, cache) |
3.5 Audit logging (NEN 7513)
- 60+ beveiligingsgebeurtenissen worden gelogd naar AWS CloudWatch
- Per-tenant logstreams met datum-partitionering
- Opslag via CloudWatch Logs met IAM-restrictie (write-only voor applicatie); aanvullende S3-archivering met KMS-versleuteling
- Severity-classificatie: LOW, MEDIUM, HIGH
- Zie logbeleid NEN 7513 voor details
3.6 Backup en herstel
| Maatregel | Details |
|---|---|
| Database-backups | Dagelijks, geautomatiseerd via AWS |
| Backup-locatie | AWS eu-central-1, versleuteld (KMS) |
| Chat-archivering | 3-tier: DB (30d) -> warm S3 (60d) -> compliance S3 (10j, Object Lock) |
| Recovery-test | Periodiek hersteltest op back-ups |
4. Organisatorische maatregelen
4.1 Incidentmanagement (NEN 7510 - A.16)
- Procedure voor beveiligingsincidenten en datalekken conform het datalekkenprotocol
- Meldplicht aan verwerkingsverantwoordelijke binnen 24 uur
- Intern register van alle incidenten
4.2 Wachtwoordbeleid (NEN 7510 - A.9)
- Minimaal 10 tekens
- Minimaal 1 cijfer en 1 speciaal teken
- Niet in de lijst van veelgebruikte wachtwoorden (Django CommonPasswordValidator)
- Niet geheel numeriek
- Niet gelijkend aan gebruikersgegevens (email, naam)
- Gecontroleerd tegen bekende datalekken (Have I Been Pwned, k-anonimiteit; fail-open bij storing)
- Gehashte opslag (PBKDF2-SHA256)
4.2a Scope veldversleuteling
Fernet-veldversleuteling is toegepast op:
- Patientgegevens: naam, geboortedatum, medicatiegegevens, allergieeen, contra-indicaties, labwaarden, notities, analyseresultaten
- Medewerkergegevens: telefoonnummer, geboortedatum
De velden email, voornaam en achternaam van medewerkers worden niet versleuteld. Dit is een bewuste keuze: deze velden zijn noodzakelijk voor login-lookup (email) en zoekfunctionaliteit (naam). Compenserende maatregelen: tenant-isolatie (gescheiden PostgreSQL-schema's), RBAC, verplichte 2FA, TLS in transit, en audit logging van alle toegang.
4.3 Personeel
- Geheimhoudingsverklaring voor alle medewerkers
- Beveiligingsbewustzijn: periodieke training
- Toegang tot productiedata op need-to-know basis
4.4 Leveranciersbeheer
- Subverwerkers geselecteerd op ISO 27001-certificering of gelijkwaardig
- Verwerkersovereenkomsten met alle subverwerkers
- Periodieke beoordeling van subverwerker-compliance
4.5 Wijzigingsbeheer
- Alle code-wijzigingen via Git met versiebeheer
- Code review voor productie-deployments
- Gescheiden ontwikkel-, test- en productieomgevingen (Docker)
4.6 Penetratietesten
- Schema: minimaal jaarlijks
- Scope: webapplicatie, API, authenticatie, tenant-isolatie
- Uitvoering: door onafhankelijke derde partij
- Resultaten: vastgelegd en opgenomen in de risicoanalyse
5. Business continuity (NEN 7510 - A.17)
- Dagelijkse backups met off-site opslag
- Chat-archivering met 10-jaars compliance-opslag
- Geen single point of failure: gescheiden database, cache, applicatie
- Recovery Time Objective (RTO): < 24 uur
- Recovery Point Objective (RPO): < 24 uur
6. Verantwoordelijkheden
| Rol | Verantwoordelijkheid |
|---|---|
| Remedice (Aanbieder) | Technische en organisatorische maatregelen, incidentrespons, subverwerker-management |
| Apotheek (Klant) | Interne autorisatie, gebruikersbeheer, naleving beroepsgeheim, melden incidenten |
| Medewerkers | Veilig omgaan met inloggegevens, melden onregelmatigheden |
7. Review
Dit beleid wordt jaarlijks herzien of bij wezenlijke wijzigingen in de technische architectuur of het dreigingslandschap.