Description
Les robots Harbor (ro-robot, rw-robot, project-robot) sont actuellement créés avec duration: -1, c'est-à -dire sans expiration.
Le secret correspondant est stocké dans Vault et n'est régénéré que si l'hôte Harbor change ou si l'âge du secret dépasse HARBOR_ROBOT_ROTATION_THRESHOLD_DAYS (rotation préventive).
Il n'existe pourtant aucun paramètre permettant de donner une expiration réelle aux robots côté Harbor : la rotation préventive s'applique à des robots immortels, ce qui rend la sauvegarde de sécurité incohérente (si la rotation échoue silencieusement, le robot reste valide indéfiniment).
Il faut un paramètre de configuration global HARBOR_ROBOT_EXPIRATION_DAYS (entier positif, en jours) appliqué comme duration à la création de chaque robot projet.
La rotation (HARBOR_ROBOT_ROTATION_THRESHOLD_DAYS) doit rester strictement inférieure à l'expiration pour qu'un robot soit toujours remplacé avant qu'il ne expire : cette contrainte doit être validée par le schéma de configuration (rejet au démarrage si rotation >= expiration).
PRs liées
Issues liées
Exemples simples
HARBOR_ROBOT_EXPIRATION_DAYS=180, HARBOR_ROBOT_ROTATION_THRESHOLD_DAYS=90 : les robots expirent au bout de 180 jours et sont régénérés vers 90 jours.
HARBOR_ROBOT_EXPIRATION_DAYS=90, HARBOR_ROBOT_ROTATION_THRESHOLD_DAYS=90 : la configuration est rejetée au démarrage.
Spécifications techniques
apps/server-nestjs/src/config/harbor.config.ts : nouveau champ optionnel HARBOR_ROBOT_EXPIRATION_DAYS (z.coerce.number().int().positive(), défaut à définir), transformé en robotExpirationDays ; superRefine rejetant robotRotationThresholdDays >= robotExpirationDays.
apps/server-nestjs/src/modules/registry/registry-client.service.ts : HarborRobotCreateRequest.duration conserve -1 comme valeur « jamais » ; le service transmet la durée configurée.
apps/server-nestjs/src/modules/registry/registry.service.ts : generateRobotPermissions utilise la durée issue de la configuration au lieu de -1.
- Le plugin historique
plugins/harbor n'est pas modifié (cible backend : apps/server-nestjs).
Définition du fini
Description
Les robots Harbor (ro-robot, rw-robot, project-robot) sont actuellement créés avec
duration: -1, c'est-à -dire sans expiration.Le secret correspondant est stocké dans Vault et n'est régénéré que si l'hôte Harbor change ou si l'âge du secret dépasse
HARBOR_ROBOT_ROTATION_THRESHOLD_DAYS(rotation préventive).Il n'existe pourtant aucun paramètre permettant de donner une expiration réelle aux robots côté Harbor : la rotation préventive s'applique à des robots immortels, ce qui rend la sauvegarde de sécurité incohérente (si la rotation échoue silencieusement, le robot reste valide indéfiniment).
Il faut un paramètre de configuration global
HARBOR_ROBOT_EXPIRATION_DAYS(entier positif, en jours) appliqué commedurationà la création de chaque robot projet.La rotation (
HARBOR_ROBOT_ROTATION_THRESHOLD_DAYS) doit rester strictement inférieure à l'expiration pour qu'un robot soit toujours remplacé avant qu'il ne expire : cette contrainte doit être validée par le schéma de configuration (rejet au démarrage sirotation >= expiration).PRs liées
Issues liées
Exemples simples
HARBOR_ROBOT_EXPIRATION_DAYS=180,HARBOR_ROBOT_ROTATION_THRESHOLD_DAYS=90: les robots expirent au bout de 180 jours et sont régénérés vers 90 jours.HARBOR_ROBOT_EXPIRATION_DAYS=90,HARBOR_ROBOT_ROTATION_THRESHOLD_DAYS=90: la configuration est rejetée au démarrage.Spécifications techniques
apps/server-nestjs/src/config/harbor.config.ts: nouveau champ optionnelHARBOR_ROBOT_EXPIRATION_DAYS(z.coerce.number().int().positive(), défaut à définir), transformé enrobotExpirationDays; superRefine rejetantrobotRotationThresholdDays >= robotExpirationDays.apps/server-nestjs/src/modules/registry/registry-client.service.ts:HarborRobotCreateRequest.durationconserve -1 comme valeur « jamais » ; le service transmet la durée configurée.apps/server-nestjs/src/modules/registry/registry.service.ts:generateRobotPermissionsutilise la durée issue de la configuration au lieu de -1.plugins/harborn'est pas modifié (cible backend :apps/server-nestjs).Définition du fini