Security & Compliance

Access controls

Every user has one of five fixed roles, and every request is checked on the server against that role, the user's organisation and the products it holds. Organisations are separated by the database itself, not only by application code.

Written for: Security reviewers · Administrators · Compliance officers

Roles

Field or controlWhat it means
AdminEverything a supervisor can do, plus user creation and editing, organisation settings, refunds, claim submission, payment management, workflow and queue configuration, imports, portal administration and single sign-on settings. Must use multi-factor authentication.
SupervisorEverything an agent can do, plus the supervisor dashboard, all notes, payment-plan changes, queue assignment, reports, team performance, data export and viewing users.
AgentWorks accounts: views the dashboard, accounts, collections, payments, queues and workflows; makes calls and sends email and SMS; adds notes; takes payments and sets up payment plans; sends portal links.
Client AdminFor an agency's own client organisation: read-only views of that client's accounts and reports, plus managing the client's users and branding and exporting the client's data.
Client ViewerRead-only views of the client's accounts and reports.

The full permission map is visible to administrators at Administration → Permission Matrix. No role can delete accounts or users through the application; Remove User deactivates. Workflow rules can be deleted on Workflow Admin by an administrator or supervisor.

Where permissions are enforced

Field or controlWhat it means
Every signed-in product page and API routeChecks that the user is signed in, active, belongs to an organisation that holds the product, and has a role the product admits. Status, role and organisation are re-read from the database on each request, so a deactivation or role change applies immediately.
Every action that changes dataChecks the caller's role before touching the database. An automated test in the release test suite fails if a new action that writes data does not.
MenusThe Administration menu is shown to administrators only. Hiding a menu is a convenience, not the control: the Administration area itself refuses every role but Admin on the server, whether it is reached from the menu or by typing its address.

Isolation between organisations

Each organisation's records carry its organisation id, and PostgreSQL row-level security admits only rows belonging to the organisation of the current request. The application connects with a database role that cannot bypass those rules, so a query that forgets to filter by organisation returns nothing rather than another organisation's data. The organisation is always taken from the signed-in session, never from the request.

At the last count, 315 of the 316 tables that hold organisation data carry a row-level security policy. The exception is a table of product-preview grants that only ArkCloud platform operators write.

Shared reference data (code sets, payer and regulatory catalogues, shared clinical content) is deliberately visible to every organisation.

Access by ArkCloud staff

The cross-organisation back office requires the Admin role and an explicit entry in a server-side allowlist that is empty unless ArkCloud sets it. ArkCloud does not have a standing account in your organisation. Administrators of the production host can read the database directly; that access is outside the application's controls and is governed by ArkCloud's security policies, which are still in draft.

Access elevations

Administration → Access Elevations

An administrator can record a request for a temporary higher role and approve, reject or revoke it; each step is recorded in the security audit log. The screen is part of the Administration area, which only the Admin role can open, so other users cannot reach it to request an elevation themselves.

The security overview screen

The organisation security posture screen, summarising the access and authentication controls in force

The organisation security screen, as it appears to an administrator in ArkCloud Rehab.

/rehab/admin/security

Related documentation