Ga naar inhoud

Token rotation

Twee soorten secrets per agent kunnen geroteerd worden:

SecretWat als het lektWanneer roteren
agent_tokenAanvaller kan niet vervalsen (signing redt je) maar krijgt wel registratierechtenBij verdacht netwerk-event, na admin-vertrek
signing keypairAanvaller kan vervalsen mits hij ook de bearer token heeftNa host-compromise, periodiek (jaarlijks)

Bearer token roteren

Via dashboard

Settings → Agents → vind de agent → klik ↻ token → bevestig.

De nieuwe token verschijnt één keer in een groene infobox. Kopieer hem, zet hem in /etc/monsys/agent.toml op de host, herstart de agent.

Via API

Terminal window
NEW=$(curl -s -X POST -b /tmp/c.txt \
https://api.monsys.ai/api/v1/agents/<agent-id>/rotate-token \
| jq -r .token)
# Op de host:
sudo sed -i "s|^agent_token =.*|agent_token = \"$NEW\"|" /etc/monsys/agent.toml
sudo systemctl restart monsys-agent

De oude token is direct ongeldig — er is geen overlap-window. Als de agent niet binnen ~30 sec met de nieuwe token komt verschijnt hij offline in het dashboard.

Auditbewijs

Iedere rotatie schrijft een rij naar audit_log:

SELECT user_id, agent_id, event_type, created_at
FROM audit_log
WHERE event_type = 'agent_token_rotated'
ORDER BY created_at DESC;

Signing keypair roteren

De pinned pubkey op de hub is read-only voor de agent — hij kan niet zomaar “upgraden” naar een nieuw keypair. Een admin moet eerst de pin opheffen:

Via dashboard

Settings → Agents → klik ↻ key → bevestig.

Daarna op de host:

Terminal window
sudo rm /var/lib/monsys/agent-signing.key
sudo systemctl restart monsys-agent

De agent genereert een nieuw keypair en registreert de nieuwe pubkey. De hub pint hem opnieuw (TOFU). In de tussentijd worden ingest-payloads met de oude signature geweigerd (signature_invalid anomaly).

Via API

Terminal window
curl -s -X POST -b /tmp/c.txt \
https://api.monsys.ai/api/v1/agents/<agent-id>/rotate-signing-key

Audit trail in audit_log: event_type='agent_signing_key_cleared'.

Aanbevolen rotatie-cadens

TriggerTokenSigning key
Periodiekjaarlijksjaarlijks
Sysadmin vertrektdirect-
Host-compromise vermoedendirectdirect
Agent migratie naar andere host-direct
Disk image gestolen / backup gelektdirectdirect

Rate limits

Beide endpoints zijn beperkt tot 10 rotaties per uur per gebruiker. Bulk- rotaties (volledige fleet na een security event) draaien dus over meerdere uren — gebruik een script met sleep 60 of plan in een onderhoudsvenster.

Wat NIET roteert automatisch

Op dit moment is er geen scheduled auto-rotation. Een feature-vraag voor toekomstige versies. Tot die tijd: zet een Linear / Jira ticket in je operations-runbook met de gewenste cadens.