Passer au contenu

Controls

The EDFlow controls matrix: authentication and MFA, server-side authorization and projections, token hashing, encryption, rate limits, audit, log redaction, security headers and CSP, supply chain, vulnerability management and penetration testing.

Cette page n'est pas encore offerte en français; elle est affichée en anglais.

Controls matrix

AreaControl
Staff authenticationInvite-only; passwords of 12+ characters with a strength check and a breached-password list; MFA (TOTP) required in production; optional Microsoft Entra ID (OIDC with PKCE, guest accounts refused); lockout after 5 failures in 15 minutes from unknown devices; idle lock after 15 minutes; 12-hour sessions; fresh sign-in for sensitive actions
Patient and family access128-bit random card and link tokens in the URL fragment only; a second device needs the date of birth or the first device's approval; staff-assisted sign-in by reverse pairing, so staff never hold a usable credential; at most 5 patient devices per visit and 3 per family link; access ends automatically after departure
AuthorizationServer-side only: identity is derived on the server, never from client-supplied ids, roles or sites. Each staff function checks a permission at the active site. Cross-site ids return "not found". Every read goes through an allow-listed projection per audience, with tests that forbidden fields are absent
Audit before readA staff member must open a visit (recorded) before reading or acting on it. Board views recorded every 15 minutes
Token storageTokens, visit codes and API secrets stored only as keyed HMAC hashes; a copy of the database opens nothing
EncryptionTLS 1.2+ (1.3 preferred) with HSTS preload; AES-256 at rest with KMS customer-managed keys; phone numbers and MFA secrets encrypted with AES-256-GCM; per-organization KMS keys for integration secrets, with a hospital-held key option
Rate limitsPer network, per visit, per account, per app, per endpoint; never a global lockout that would let an attacker lock staff out
AuditAppend-only log with a daily hash chain; per-patient access report; monitoring rules; SIEM export
Log redactionThe backend logger accepts only allow-listed keys; console is banned by lint; HTTP handlers never log bodies, headers or token paths; parser errors carry positions, not values
NotificationsGeneric templates only; payload lint in CI
Web securityNonce-based CSP, frame-ancestors 'none', X-Content-Type-Options: nosniff, strict referrer policy, no-store and no-referrer on token routes, no third-party scripts on patient and family pages, self-hosted fonts
API securityOWASP API Top 10 controls: site-scoped queries, short-lived tokens, network binding, allow-listed projections, rate limits, SSRF policy for webhooks, strict schemas, no CORS
IntegrationHMAC or OAuth; replay window; idempotency; prohibited-field tripwire; IP allowlists; per-source keys with rotation overlap
Supply chainLockfile integrity, dependency audit, secret scanning (including the service's credential prefixes), SBOM, pinned CI actions, signed build artefacts with provenance, two-person production deployments
Vulnerability managementCritical vulnerabilities fixed within 72 hours; forced app updates for security fixes
Penetration testingExternal test of the API, edge, portal and patient web before live; annually and after major changes; summary letter shared
Privileged accessNo standing vendor access to production data; just-in-time break glass with approval and session recording. See Privileged access
ResilienceSee Availability and incidents

Security headers

HeaderValue
Strict-Transport-Security2 years, includeSubDomains, preload
Content-Security-PolicyNonce-based scripts, connect-src limited to the backend, frame-ancestors 'none' (the display only for configured origins)
Referrer-Policystrict-origin-when-cross-origin; no-referrer on token routes
Permissions-PolicyCamera only on sign-in and staff scan routes
Cache-Controlno-store on token routes and API responses

Verification

Every public backend function has tests for the happy path, an authorization denial and a validation failure, and an authorization matrix is generated from the permission catalogue. Projection tests assert forbidden fields are absent. Storage and log scans run over end-to-end test runs.

Dernière mise à jour le

Cette page vous a-t-elle été utile?

Sur cette page