Hub security review

Policy publication and enrolment requirements

Checked

Tenant isolation
Every query is scoped to the signed-in organisation, and the database refuses other organisations' rows in the product's transactions.
Credentials
Stored as hashes. API keys are scoped; a key that sends records reads no evidence and configures nothing.
Staff access
Read-only. Any action taken on an organisation's behalf is logged against the person who took it.
Audit log
The running service cannot edit or delete it; its database role lacks the permission.
Request limits
Size and time limits. A batch with one malformed record is refused whole.
Rate limits
Per credential. A refused request is told when to retry, and the sender keeps its records.
Sign-in and sign-up
Accounts are created only for admitted addresses and invitees; others join the waiting list. Sign-in links, verification attempts, invitations and organisation creation are limited per client address, per mailbox and per person.
Onward delivery
Reaches public addresses over HTTPS only, following no redirect. The credential a destination issued is sealed and never returned.
Policy distribution
Signed. An installed copy accepts policy only from its pinned key and requests it under its own signature.
Secrets in code
None: no keys, secrets or customer names in the code or its test data.
Retention
Enforced: twelve months by default, shortenable by the owner. Delivered records are deleted on request and purged thirty days after the organisation closes.

Scope

Deployment model
One service for many organisations behind one public address, which browsers, enrolled machines and publishers reach from the internet. The same code runs as a single-organisation service on a private network.
Policy validation
The hub validates policy against the edge’s source-policy contract before publication. Each receiving edge also checks the signature and loads the policy locally.
Applied policy
The hub’s delivered source records do not establish which policy every edge has applied. The policy in force is available on each edge through commonmeasure status.

Open

Audit log
Protected against the service's own statements, not against arbitrary commands on its database connection. Closing it is a deployment change.
Replay window
A captured signed request could be replayed within five minutes. It travels encrypted and returns only that organisation's policy.
Database isolation
Covers the product's handlers; account-management handlers rely on the application filter.
Hand-minted keys in reports
A record-sending key an owner minted by hand can deliver a session under an enrolled machine's key id, and the reports list it under that machine.
Waiting-list volume
Submissions are limited per client address, so someone holding many addresses can add many entries. There is no challenge on the form; entries create no account and send no mail.
Content security policy
Not yet set on the web interface.