Keep learner data where your policies say it goes
Host it with us or on infrastructure you control. Either way your security team gets identity integration, sign-in rules they can enforce, and controls they can inspect for themselves.
At a glance
- Cloud or self-hosted
- SAML 2.0 single sign-on
- SCIM 2.0 provisioning
- Passkeys and enforced 2FA
- Built-in security scanner
Security reviews for an LMS tend to stall on the same questions. Where does the data sit? Can we use our identity provider? Who can see proctoring footage, and for how long? What happens to a leaver’s records?
LMS Advisor is a PHP and MySQL application, so one possible answer to the first question is “on your own server”. It runs on an ordinary VPS or cPanel host as well as in our cloud. The rest of this page describes the controls that ship in the product, where they live, and the few things they do not cover yet. We do not hold SOC 2, ISO 27001 or HIPAA certifications and will not suggest otherwise. What we can do is show your reviewers exactly how each control behaves.
What security reviewers usually flag
Data that must stay in-region or on-premises
Some contracts and public-sector rules do not allow learner records in a vendor’s shared cloud.
One more password to manage
Separate LMS credentials mean weak passwords, reset tickets and accounts that outlive the person who left.
Sensitive data with no end date
Webcam snapshots, exam audio and AI chat logs pile up for years unless someone sets a limit.
Admin rights nobody can account for
Without a log and a ceiling on roles, it is hard to show an auditor who could change what.
Controls that ship in the product
Each control below is set from the admin area of the platform, and your own team can check most of them on a trial install.
Cloud or self-hosted
Run on your own server with an in-app migration runner, database backups, system health checks and storage cleanup, or let us host it.
SAML 2.0 single sign-on
Okta, Microsoft Entra ID, OneLogin, Ping or ADFS, with signed assertions, replay protection, just-in-time accounts and group-to-role mapping.
SCIM 2.0 provisioning
Your directory creates, updates and deactivates accounts. A deprovisioned user is deactivated, never erased, so completions and certificates remain.
Passkeys and enforced 2FA
Passwordless sign-in with Face ID, Touch ID or Windows Hello, plus authenticator-app codes you can require by role.
Built-in security scanner
Checks code files, uploads, stored content and server configuration for malware signatures, injected scripts and risky settings.
Retention and audit trail
Set how long logs, proctoring snapshots, exam audio and AI chats are kept, and review privileged actions in the audit log.
How the controls behave in practice
Sign-in and identity
You add a SAML identity provider by importing its metadata. LMS Advisor verifies the signature on every response, allows two minutes of clock skew, and records each assertion ID so a captured response cannot be replayed. A second certificate slot lets you rotate the IdP certificate without an outage. You decide whether unknown users are created at first sign-in, whether profile fields refresh on each login, and how directory groups map to roles. When a person sits in several mapped groups the most privileged role wins, but nothing mapped from a directory can go above admin. Single logout is not implemented yet.
Each SCIM connection gets its own bearer token, which you can rotate. People are matched on the directory’s externalId before email, which avoids duplicate accounts when an address changes. A delete from the directory deactivates the account.
For local sign-in, you can require authenticator-app 2FA for chosen roles (super admin and admin by default). The settings screen shows how many people in each role have already enrolled, so you know who will be sent to setup before you enforce it. Each user gets eight single-use backup codes. Repeated failed sign-ins lock the account for a set period, five attempts and 15 minutes unless you change them.
Least privilege for people and integrations
The role ladder stops anyone granting a role at or above their own, including through bulk import and the API. API tokens carry scopes (read, write, sso, admin), an optional IP allowlist and an expiry date. Only a hash of each token is stored, and the value is shown once. Stored secrets such as 2FA seeds and LRS credentials are encrypted with AES-256-GCM.
Evidence you can review
Sensitive actions go to the audit log, including refused privilege changes, token creation, bulk imports and impersonation sessions. Impersonation is limited to admins and super admins, cannot be nested, and a super admin cannot become another super admin. The scanner runs in short batches so it finishes on shared hosting. It compares code files against an integrity baseline and malware signatures, looks for executable files in upload folders, scans stored HTML for injected scripts and iframes, audits configuration (exposed .env files, debug mode, leftover dev files), and lists admin accounts created in the last 30 days for you to confirm.
Retention
Under Legal Pages you set retention in days for audit logs, session history, analytics events, sent email, read notifications, proctoring snapshots, exam audio, AI tutor chats and inactive student accounts, which are anonymized (off by default). Enrollments, attempts, grades and certificates are deliberately outside these rules, because regulated training records often have to be kept for years.
See Security & Data Ownership in a live demo
We will show it with your own scenario, answer the security questions and send a written quote after the call.
A hardening pass for a new install
Choose where it runs
Pick our cloud or your own server. A self-hosted install needs PHP, MySQL and scheduled cron jobs.
Connect identity
Import your IdP metadata for SAML, map groups to roles, and create a SCIM connection for joiners and leavers.
Tighten sign-in
Require 2FA for admin roles, turn on passkeys, and set the lockout threshold that suits your policy.
Scan and set retention
Build the integrity baseline, run a first scan, then set retention periods for proctoring media, exam audio and logs.
Review on a schedule
Check the audit log and API token list regularly, and rotate SCIM and API tokens when the people who hold them change.
Teams with strict requirements
Public sector and education
Host on approved infrastructure in your own region and sign staff in through the directory you already run.
Certification bodies running proctored exams
Keep webcam snapshots and exam audio for as long as your appeal window, then let retention delete them.
Enterprises with a joiner and leaver process
SCIM mirrors directory changes into the LMS as they are pushed, and training history survives when someone leaves.
Organizations on modest hosting
The scanner, backups and health checks are built to run within ordinary hosting limits, with no agents to install.
What your IT team can sign off on
- A clear answer to where learner data lives
- One identity per person, managed from your directory
- Admin sign-ins protected by a second factor you can enforce
- Sensitive exam media deleted on a schedule you set
- A log your auditors can actually read