Skip to content

💡 [REQUEST] - Expiration configurable des robots Harbor (avec rotation antérieure à l'expiration) #2679

Description

@shikanime

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

  • La fonctionnalitĂ© est terminĂ©e
  • Les tests liĂ©s Ă  cette fonctionnalitĂ© ont Ă©tĂ© ajoutĂ©s
  • La documentation liĂ©e a Ă©tĂ© ajoutĂ©e

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions