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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions