Security
Security, as built
Every statement on this page describes a mechanism that exists in the software today.
Sign-in
One identity provider per tenant on OpenID Connect (authorization code with PKCE). Roles are granted per facility and checked against a fine-grained permission set on every request. Platform operators use a time-based second factor.
Tenant isolation
A request for the wrong host is refused before any code runs; a token of another tenant is refused; a cell refuses to open another tenant's database. An automated isolation suite verifies this at every release.
Least privilege in the database
Each module connects with its own database role and has rights on its own schemas only, so a module cannot write into another module's tables by accident. Connection limits per role bound what any one module can take.
Encryption
TLS 1.2 and 1.3 everywhere, with publicly trusted certificates renewed automatically. Signing and encryption keys of the identity provider are protected at rest. The backup repository is encrypted.
Reports and files
Report links are signed and short-lived, so a report cannot be opened outside the application. Files are written under new keys and never overwritten in place.
This website
No cookies, no analytics, no third-party scripts or fonts. The demo-request form is rate-limited and size-capped, and a request creates nothing by itself: an operator reviews it first.
Reporting a vulnerability
Please write to shadi.alnamroti@phoenixhealth.sa. Our security.txt is at /.well-known/security.txt.