MSP Atlas

Chapter 16

Security model

Atlas holds client documentation and credentials, so its protections, and their limits, are written down.

Every request

API keys replace the session with a hashed key limited to its scopes. The extension and Atlas for Windows sign in through the browser and get their own sessions.

Threats and protections

Threat Protection
Stolen database or backup Secrets are encrypted with AES-256-GCM under keys wrapped by a master key that is never in the database. Backups are encrypted too.
Password guessing scrypt hashes, lockout after 5 failures, rate limits, MFA for staff, and passkeys that can't be phished.
Stolen session Sessions expire after 2 hours idle or 12 hours; people can end their sessions; sensitive actions ask for the password again.
Cross-site attacks Host, Origin and Sec-Fetch-Site checks, a CSRF token, and a strict Content Security Policy.
Over-broad access inside the MSP Per-client access, restricted passwords, required reasons, and a record of every reveal, copy, change and share.
Malicious uploads Stored outside the web root under random names; only images that pass a content check display inline.
Tampering with the audit trail Events are hash-chained by the database with a signed checkpoint; Verify now detects edits and deletions.
Leaked API key Stored as a hash, limited by scope, kept away from account, settings, backup and log endpoints, and can expire.
Share links and Send Encrypted in the browser; the key is only in the link's # part, which the server never receives.
Extension or Windows app on a lost device Neither stores passwords. Both are signed out by a password change or an administrator, and every fill or copy is recorded.
An administrator reading restricted passwords Vault policies can limit restricted entries to the people listed. Emergency access is time-limited and emails the owner. Logs can stream to a SIEM.
A rotated password that didn't take The vault changes only after the device confirms. Each run uses a single-use token; failures keep the old password.

What it doesn't protect against

Operating securely

Reporting a vulnerability

Never in a public issue. Use GitHub's private vulnerability reporting (Security → Report a vulnerability) with the affected version, impact and steps to reproduce. See the security policy.