Aller au contenu

Rotation des jetons

Deux types de secrets par agent peuvent être faites pivoter :

SecretSi il est compromisQuand faire pivoter
agent_tokenL’attaquant ne peut pas falsifier (la signature te sauve) mais obtient bien les droits de registrationLors d’un événement réseau suspect, après le départ de l’administrateur
clé de signatureL’attaquant peut falsifier s’il a également le jeton bearerAprès une compromission de serveur, périodiquement (annuellement)

Paramètres → Agents → Trouvez l’agent → Cliquez sur ↻ token → Confirmez.

Le nouveau jeton apparaît une fois dans une boîte d’informations verte. Copiez-le, placez-le dans /etc/monsys/agent.toml sur le serveur, redémarrez l’agent.

Fenêtre de terminal
NEW=$(curl -s -X POST -b /tmp/c.txt \
https://api.monsys.ai/api/v1/agents/<id_agent>/rotate-token \
| jq -r .token)
# Sur le serveur :
sudo sed -i "s|^agent_token =.*|agent_token = \"$NEW\"|" /etc/monsys/agent.toml
sudo systemctl restart monsys-agent

Le jeton ancien est directement invalidé — il n’y a pas de fenêtre d’overlap. Si l’agent ne se connecte pas avec le nouveau jeton dans les ~30 secondes, il apparaît en ligne rouge dans le dashboard.

Chaque rotation écrit une ligne dans 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;

La clé publique pinée sur le hub est en lecture seule pour l’agent — il ne peut pas simplement “mettre à jour” vers un nouveau keypair. Un administrateur doit d’abord supprimer la pin :

Paramètres → Agents → Cliquez sur ↻ key → Confirmez.

Puis sur le serveur :

Fenêtre de terminal
sudo rm /var/lib/monsys/agent-signing.key
sudo systemctl restart monsys-agent

L’agent génère un nouveau keypair et enregistre la nouvelle clé publique. Le hub la pinne à nouveau (TOFU). Pendant ce temps, les payloads déjà insérés avec la clé de signature ancienne sont refusés (signature_invalid anomalie).

Fenêtre de terminal
curl -s -X POST -b /tmp/c.txt \
https://api.monsys.ai/api/v1/agents/<id_agent>/rotate-signing-key

Traçage audit dans audit_log: event_type='agent_signing_key_cleared'.

DéclencheurTokenClé de signature
Périodiqueannuellementannuellement
Administrateur partdirect-
Compromission de serveurdirectdirect
Migration d’agent vers un autre serveur-direct
Image disque volé / sauvegarde compromisuedirectdirect

Les deux endpoints sont limités à 10 rotations par heure par utilisateur. Les bulk-rotations (la flotte entière après un événement de sécurité) durent donc sur plusieurs heures — utilisez un script avec sleep 60 ou planifiez dans une fenêtre de maintenance.

Actuellement, il n’y a pas de rotation automatisée programmée. Une demande de fonctionnalité pour les futures versions. Jusqu’à présent : placez un ticket Linear / Jira dans votre runbook d’opérations avec la cadence souhaitée.