Beheerdershandleiding¶
Deze handleiding beschrijft hoe u Safe Exam Support (SES) configureert en beheert als beheerder.
Overzicht¶
SES verbindt uw Exam Management Systeem (EMS) met Safe Exam Browser (SEB) en biedt een beveiligde examenomgeving voor studenten. Als beheerder configureert u de brug tussen uw EMS en het SES-platform.
Architectuuroverzicht¶
Figuur 1: SES-architectuur — EMS → SES Proxy → SEB-client
Belangrijkste Componenten¶
| Component | Doel |
|---|---|
| Beheerderspaneel | Webinterface voor het beheren van examens, sessies en instellingen |
| Smart Proxy | Routeert SEB-verkeer naar de juiste EMS met validatie |
| Load Balancer | Verdeelt verkeer over meerdere proxy- en serverinstanties |
| pgBouncer | Verbindingspooler voor PostgreSQL |
| Redis | Sessie-caching en rate limiting |
Toegang tot het Beheerderspaneel¶
URL¶
Het beheerderspaneel is beschikbaar op:
https://admin.example.com
Inloggen¶
- Ga naar de beheerders-URL
- Log in met uw beheerdersreferenties (Azure AD/Entra SSO of lokaal account)
- Voltooi eventuele TOTP-tweefactorauthenticatie indien gevraagd
Figuur 2: Beheerderspaneel-inlog met TOTP
Instituten Beheren¶
Een Instituut Aanmaken¶
Een instituut vertegenwoordigt een school of organisatie die SES gebruikt.
- Ga naar Instituten in de zijbalk van het beheerderspaneel
- Klik op Instituut toevoegen
- Vul de verplichte velden in:
| Veld | Beschrijving | Voorbeeld |
|---|---|---|
| Naam | Naam van het instituut | "Universiteit van Amsterdam" |
| Instituut-ID | Unieke identificatie | "uva" |
| Proxy-URL | Openbare URL voor SEB-clients | https://ems1.example.com |
Figuur 3: Een nieuw instituut toevoegen
Instituutsinstellingen¶
Elk instituut heeft configureerbare instellingen:
- Rate limits: Maximum verzoeken per seconde (globaal en per instituut)
- Sessietoken TTL: Hoe lang examentokens geldig blijven
- Opschoonvertraging: Minuten na exameneinde voordat sessies sluiten
EMS-Omgevingen Beheren¶
Wat is een EMS-Omgeving?¶
Een EMS (Exam Management Systeem) omgeving is het backendsysteem dat uw examens host (bijv. Moodle, Canvas, TestVision). Elke EMS-omgeving verbindt met een uniek subdomein op SES.
Een EMS-Omgeving Toevoegen¶
- Ga naar EMS-omgevingen in de zijbalk van het beheerderspaneel
- Klik op EMS-omgeving toevoegen
- Configureer het volgende:
| Veld | Beschrijving | Voorbeeld |
|---|---|---|
| Naam | Weergavenaam | "Productie Moodle" |
| EMS-basis-URL | Backend-URL van uw EMS | https://moodle.biqforge.com |
| Openbare Proxy-URL | Subdomein dat studenten gebruiken | https://ems1.example.com |
| Instituut | Gekoppeld instituut | Selecteer uit vervolgkeuzelijst |
Figuur 4: Een nieuwe EMS-omgeving toevoegen
EMS-basis-URL
De EMS-basis-URL moet HTTPS gebruiken met een geldig SSL-certificaat. SES valideert de certificaatketen (verificatiediepte 2).
Subdomeintoewijzing¶
Elke EMS-omgeving krijgt een uniek subdomein:
ems1.example.com → moodle.biqforge.com (backend)
ems2.example.com → moodle2.example.com (backend)
Studenten benaderen hun examens via het subdomein en SES stuurt het verzoek door naar de juiste EMS-backend.
Examens Beheren¶
Een Examen Aanmaken¶
- Ga naar Examens in de zijbalk van het beheerderspaneel
- Klik op Examen toevoegen
- Vul de examengegevens in:
| Veld | Beschrijving | Voorbeeld |
|---|---|---|
| Titel | Examennaam | "Wiskunde Eindtoets 2026" |
| EMS-omgeving | Welke EMS dit examen host | Selecteer uit vervolgkeuzelijst |
| Startdatum | Wanneer studenten kunnen beginnen | 2026-07-01 09:00 |
| Einddatum | Wanneer het examen sluit | 2026-07-01 12:00 |
| Status | Examenstatus | active |
| Opschoonvertraging (min) | Respijtperiode na einde | 30 |
Figuur 5: Een nieuw examen aanmaken
Examenstatussen¶
| Status | Beschrijving |
|---|---|
draft |
Nog niet gepubliceerd, geen sessies kunnen worden aangemaakt |
active |
Live — studenten kunnen sessies starten |
ended |
Voorbij einddatum — geen nieuwe sessies, bestaande sessies sluiten na opschoonvertraging |
Sessie Pre-warming¶
Pre-warming wijst streaming seats toe voordat het examen begint, zodat studenten direct kunnen starten.
| Instelling | Beschrijving | Standaard |
|---|---|---|
| Vereiste Seats | Totale benodigde seats voor het examen | 0 |
| Warmup-percentage | Percentage seats om voor te verwarmen | 80% |
| Pre-warm Status | not_started, in_progress, completed |
— |
Pre-warming werkt in twee lagen:
- Pre-warm laag (80%): Toegewezen voor examensterkte
- On-demand laag (20%): Toegewezen als studenten aankomen
Capaciteitsplanning
Stel Vereiste Seats in op het verwachte aantal gelijktijdige studenten. Het warmup-percentage zorgt dat de meeste seats klaar zijn, terwijl on-demand overflow afhandelt.
Sessies Beheren¶
Sessies Bekijken¶
- Ga naar Examen Sessies in de zijbalk van het beheerderspaneel
- Filter op examen, status of instituut
- Elke sessie toont:
| Veld | Beschrijving |
|---|---|
| Sessie-ID | Unieke 64-tekens hex-identificatie |
| Status | pending, active of closed |
| Examen | Gekoppeld examen |
| Toegewezen Seat | Streaming seat toegewezen |
| Aangemaakt op | Wanneer de sessie is aangemaakt |
| Laatst benaderd op | Laatste keep-alive timestamp |
| Gesloten op | Wanneer de sessie is gesloten |
Figuur 6: Examen sessies lijstweergave
Sessielevenscyclus¶
pending → active → closed
│ │
└──(activeren)──┘ └──(opschonen na end_date + vertraging)
| Overgang | Trigger |
|---|---|
pending → active |
Student laadt landingspagina via SEB |
active → closed |
Examen einddatum + opschoonvertraging verstreken |
Sessies Handmatig Sluiten¶
Om een specifieke sessie te sluiten:
- Zoek de sessie in de Examensessies-lijst
- Selecteer de sessie
- Kies Geselecteerde sessies sluiten uit het actievervolgkeuzemenu
- Bevestig de actie
Handmatig Sluiten
Het handmatig sluiten van een sessie verbreekt onmiddellijk de verbinding met de student. Gebruik dit alleen voor probleemoplossing of beveiligingsincidenten.
Webbronnen¶
Webbronnen definiëren welke URL's studenten tijdens een examen via SEB kunnen benaderen.
Toegestane Bronnen Toevoegen¶
- Ga naar Webbronnen in de zijbalk van het beheerderspaneel
- Klik op Webbron toevoegen
- Configureer:
| Veld | Beschrijving | Voorbeeld |
|---|---|---|
| Titel | Bronnaam | "Formule site" |
| URL | Toegestane URL | https://formulas.example.com |
| Service-ID | SEB-service-identificatie | Externe URL |
Figuur 7: Een toegestane webbron toevoegen
SEB-configuratie¶
SEB-config Generatie¶
SES genereert .seb-configuratiebestanden voor elk examen. Deze bestanden vertellen SEB:
- Welke URL te openen (de start-URL van het examen)
- Welke bronnen toegestaan zijn
- Browserbeveiligingsinstellingen (geen screenshots, geen andere apps)
Nooit .seb-bestanden aan studenten distribueren
Studenten downloaden de SEB-configuratie automatisch wanneer ze de start-URL van het examen in SEB openen. Distribueer .seb-bestanden niet via e-mail, LMS of USB — dit omzeilt het beveiligde start-URL-mechanisme.
- Ga naar SEB-configuraties in de zijbalk van het beheerderspaneel
- Selecteer de SEB-configuratie van het examen
- Controleer of de instellingen juist zijn (start-URL, toegestane bronnen, browseregels)
Figuur 8: SEB-configuratie controleren
Automatische Regeneratie
SEB-configuraties worden automatisch geregenereerd wanneer gerelateerde instellingen veranderen (examendata, bronnen, browseregels).
Monitoring¶
Gezondheidscontroles¶
| Endpoint | URL | Doel |
|---|---|---|
| Gezondheid | /health |
Retourneert {"status":"healthy"} als alle services actief zijn |
| Sessiestatus | /api/session-status/ |
Valideert een sessie (vereist X-Session-ID header) |
Systeemlogs¶
Ga naar Systeemlogs in de zijbalk van het beheerderspaneel om audit-gebeurtenissen te bekijken:
- Sessiecreatie, activering en sluiting
- Configuratiewijzigingen
- Inlogpogingen (succesvol en mislukt)
Figuur 9: Systeem audit-logs
Rate Limiting¶
SES past configureerbare rate limits toe om misbruik te voorkomen:
| Instelling | Beschrijving | Standaard |
|---|---|---|
RATE_LIMIT_GLOBAL |
Max verzoeken/seconde over alle instituten | 500000 |
RATE_LIMIT_INSTITUTE |
Max verzoeken/seconde per instituut | 500000 |
Om rate limits te wijzigen:
- Werk de omgevingsvariabele bij op de server
- Herstart de services:
make prod-deploy
Beveiliging¶
TLS-configuratie¶
Al het verkeer tussen SEB-clients en SES gebruikt HTTPS. De proxy valideert het certificaat van de EMS-backend:
SEB-client ←→ [HTTPS] ←→ SES Proxy ←→ [HTTPS geverifieerd] ←→ EMS-backend
Tokenbeveiliging¶
- Sessietokens gebruiken HMAC-SHA256-ondertekening
- Tokens hebben een configureerbare TTL (standaard: 8 uur)
- Tokens worden stateless gevalideerd (geen database-lookup vereist)
Audittrail¶
Alle beheerderacties worden gelogd in de AuditLogEntry-tabel met:
- Wie de wijziging heeft doorgevoerd
- Wat is gewijzigd (veldniveau diffs)
- Wanneer het is gewijzigd
- Welk instituut is beïnvloed
Audit-logs worden standaard 30 dagen bewaard (AUDIT_RETENTION_DAYS).