Token rotation
Twee soorten secrets per agent kunnen geroteerd worden:
| Secret | Wat als het lekt | Wanneer roteren |
|---|---|---|
agent_token | Aanvaller kan niet vervalsen (signing redt je) maar krijgt wel registratierechten | Bij verdacht netwerk-event, na admin-vertrek |
| signing keypair | Aanvaller kan vervalsen mits hij ook de bearer token heeft | Na 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
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.tomlsudo systemctl restart monsys-agentDe 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_atFROM audit_logWHERE 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:
sudo rm /var/lib/monsys/agent-signing.keysudo systemctl restart monsys-agentDe 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
curl -s -X POST -b /tmp/c.txt \ https://api.monsys.ai/api/v1/agents/<agent-id>/rotate-signing-keyAudit trail in audit_log: event_type='agent_signing_key_cleared'.
Aanbevolen rotatie-cadens
| Trigger | Token | Signing key |
|---|---|---|
| Periodiek | jaarlijks | jaarlijks |
| Sysadmin vertrekt | direct | - |
| Host-compromise vermoeden | direct | direct |
| Agent migratie naar andere host | - | direct |
| Disk image gestolen / backup gelekt | direct | direct |
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.