Confidentialité
Données collectées par Forgewatch, pseudonymisation, durées de conservation et droits des joueurs.
Forgewatch traite, pour le compte des administrateurs de serveurs (responsables de traitement), des données de joueurs Hytale. Principes appliqués : minimisation, pseudonymisation par défaut, durées de conservation bornées, droits d'accès et d'effacement outillés.
Données collectées par le plugin
| Donnée | Collectée | Détail |
|---|---|---|
| Identifiant du joueur | Toujours, pseudonymisé | HMAC-SHA256(sel propre au compte, UUID) calculé sur le serveur de jeu. L'UUID ne quitte jamais le serveur ; le sel, différent pour chaque compte, empêche de rapprocher un joueur d'un compte Forgewatch à l'autre. |
| Pseudo (nom affiché) | Par défaut, désactivable | Utile à la modération. Désactivable dans Paramètres → Données personnelles (côté API) et dans privacy.send_display_names (côté plugin). |
| Connexions, déconnexions, durée de session | Oui | Statistiques et rétention |
| Commandes | Oui | Logs de modération. Le code de /fw link est masqué. |
| Expulsions, bans (motif, auteur) | Oui | Logs de modération et ban réseau |
| Chat | Non par défaut | Seulement si l'administrateur l'active. Le refus est appliqué deux fois : par le plugin, qui ne capture pas, et par l'API, qui ignore les messages. La durée de conservation est affichée et réglable (1 à 90 jours, 30 par défaut). |
| Santé du serveur (TPS, mémoire, nombre de joueurs) | Oui | Aucune donnée personnelle |
| Adresse IP des joueurs | Jamais |
Durées de conservation
| Donnée | Durée |
|---|---|
| Événements (plan Gratuit) | 7 jours |
| Événements (plans payants) | 90 jours (politique TimescaleDB + purge du worker) |
| Chat | Durée choisie par le compte (1–90 j), dans la limite du plan |
| Compte expiré | Lecture seule 30 jours, puis purge des événements, agrégats, joueurs, bans et règles |
| Suppression du compte | Immédiate et définitive (DELETE /api/accounts/:id, bouton dans Paramètres → Zone dangereuse) |
Droits des joueurs
L'administrateur (rôle Propriétaire) répond aux demandes depuis Paramètres → Export / effacement des données d'un joueur :
Accès et portabilité :
GET /api/accounts/:accountId/players/:playerId/exportrenvoie un fichier JSON avec la fiche joueur (identifiant pseudonymisé, pseudo, première et dernière apparition), les bans et la totalité des événements.Effacement :
DELETE /api/accounts/:accountId/players/:playerIdsupprime les événements, la présence journalière, les bans et la fiche joueur. La réponse indique le nombre d'événements supprimés.
Pour retrouver un joueur : recherche par pseudo, ou par le début de son identifiant pseudonymisé. Le plugin peut recalculer cet identifiant à partir de l'UUID et du sel du compte.
Sécurité
Clés serveur : hachées en argon2id, vérifiées à temps constant ; la rotation invalide l'ancienne clé immédiatement.
Webhooks Discord : chiffrés au repos en AES-256-GCM (
ENCRYPTION_KEY) et masqués dans l'interface.Sessions : cookie httpOnly et SameSite=Lax ; seul le SHA-256 du jeton est stocké. Liens magiques à usage unique valables 15 minutes.
Contrôle d'accès : vérifié par rôle sur chaque route, et testé (matrice rôle × route).
Aucun secret dans le code : tout passe par
.env(voir.env.example).