Current MFA Status
MFA is enforced at the infrastructure layer through Cloudflare Zero Trust for administrative access to Vercel, Neon, and Sentry dashboards. Application-layer MFA for end users is on the product roadmap.Compensating Controls
Until application-layer MFA ships, the following controls reduce the risk of credential compromise:Cloudflare Zero Trust
Administrative access to Vercel, Neon, and Sentry is gated behind Cloudflare Access with identity-provider MFA enforced at login.
bcrypt Password Hashing
All passwords are stored as bcrypt hashes. Even if the database were exfiltrated, passwords cannot be recovered without brute-force computation.
JWT Session Expiry
JWTs expire after a configurable period. Sessions are not indefinitely persistent.
AI Change Proposal Guardrail
All AI-suggested data mutations require explicit broker approval and attestation before execution — a second human check on every sensitive change.
Privileged Access Roles
PensionsPortal.ie defines four roles, withadmin and broker constituting privileged access:
| Role | Access Level | Notes |
|---|---|---|
SuperAdmin / admin | Full platform | No broker/employer scope restriction. Can access all tenants. |
BrokerAdmin / broker | Broker-scoped | Full access within their brokerId. Cannot cross tenant boundaries. |
BrokerUser / broker | Broker-scoped | Same as BrokerAdmin at the data layer; UI may restrict certain actions. |
Trustee / employer | Employer-scoped | Read/limited write within their employerId. |
SuperAdmin accounts must be strictly limited. There should be no more than two SuperAdmin accounts per deployment, owned by named individuals with documented justification.Privileged Access Procedures
- SuperAdmin provisioning is performed via the
tenant-provisioning-clitool by a named operator, not via the application UI. - Password resets for privileged accounts go through the
/api/auth/forgot-passwordflow, which sends a time-limited reset link to the registered email address. - Account offboarding requires immediate deletion or deactivation of the user record in the database. There is no built-in “suspend” state — the user row must be removed or the role downgraded.
MFA Roadmap
The following application-layer MFA options are planned:- TOTP (Time-based One-Time Password) — authenticator app support (Google Authenticator, Authy) for broker and admin roles
- WebAuthn / Passkeys — phishing-resistant hardware key or device biometric authentication
- Email OTP — one-time codes via Resend for lower-privilege roles
Trustees should raise MFA requirements with their PensionsPortal.ie account manager. The roadmap is subject to change based on regulatory guidance from the Pensions Authority.
Administrative Access to Infrastructure
| System | Access Control |
|---|---|
| Vercel dashboard | Cloudflare Access + IdP MFA |
| Neon PostgreSQL | Cloudflare Access + IdP MFA |
| Sentry dashboard | Cloudflare Access + IdP MFA |
| GitHub repository | GitHub organisation SSO + MFA enforced |
| Cloudflare dashboard | Cloudflare account MFA |