Il y a quelques jours, la nouvelle a éclaté que le référentiel de packages Python PyPI (Python Package Index) déjà offre la possibilité d’utiliser une nouvelle méthode sécurisée de publication de packagesce qui élimine le besoin de stocker des mots de passe matériels et des jetons d’accès à l’API dans des systèmes externes (par exemple, dans GitHub Actions).
La nouvelle méthode d’authentification porte le nom“Éditeurs de confiance” et est conçu pour résoudre le problème des mises à jour malveillantes publiées à la suite de systèmes externes compromis et de mots de passe ou de jetons prédéfinis tombant entre de mauvaises mains.
À partir d’aujourd’hui, les mainteneurs de packages PyPI peuvent adopter une nouvelle méthode de publication plus sécurisée qui ne nécessite pas de mots de passe de longue durée ou de jetons d’API à partager avec des systèmes externes.
Il est mentionné que cette nouvelle méthode d’authentification confère des avantages significatifs en termes de convivialité et de sécurité par rapport aux autres méthodes d’authentification PyPI traditionnelles :
- Convivialité : Avec la publication de confiance, les utilisateurs n’ont plus besoin de créer manuellement des jetons d’API dans PyPI et de les copier-coller dans leur fournisseur CI. La seule étape manuelle consiste à configurer l’éditeur dans PyPI.
- Sécurité: les jetons d’API PyPI réguliers ont une longue durée de vie, ce qui signifie qu’un attaquant qui compromet une version de package peut l’utiliser jusqu’à ce que son utilisateur légitime le remarque et le révoque manuellement. De même, le téléchargement avec un mot de passe signifie qu’un attaquant peut télécharger n’importe quel projet associé au compte. La publication sécurisée évite ces deux problèmes : les jetons émis expirent automatiquement et sont limités aux seuls packages qu’ils sont autorisés à télécharger.
Concernant cette nouvelle méthode d’authentification, il est mentionné que est basé sur la norme OpenID Connect (OIDC), qui utilise des jetons d’authentification à durée limitée échangés entre les services externes et l’annuaire PyPI pour valider une opération de publication de package, plutôt que d’utiliser un identifiant/mot de passe traditionnel ou une API persistante générée manuellement par des jetons d’accès.
« Publication de confiance » est notre terme pour utiliser la norme OpenID Connect (OIDC) pour échanger des jetons d’identité de courte durée entre un service tiers de confiance et PyPI. Cette méthode peut être utilisée dans des environnements automatisés et élimine le besoin d’utiliser des combinaisons nom d’utilisateur/mot de passe ou des jetons d’API générés manuellement pour s’authentifier auprès de PyPI lors de la publication.
D’autre part, il est également mentionné que les mainteneurs de paquets peuvent, du côté de PyPI, faire confiance aux identifiants fournis aux fournisseurs OpenID externes (IdP), que le service externe utilisera pour demander des jetons non actifs de PyPI.
Les jetons OpenID Connect générés confirment la relation entre le projet et le contrôleur, qui permet à PyPI d’effectuer une vérification supplémentaire des métadonnées, par exemple en vérifiant que le package publié est associé à un référentiel spécifique. Les jetons ne sont pas persistants, ils sont liés à des API spécifiques et expirent automatiquement après une courte durée de vie.
Au lieu de cela, les responsables de PyPI peuvent configurer PyPI pour approuver une identité fournie par un fournisseur d’identité (IdP) OpenID Connect donné. Cela permet à PyPI de vérifier et de déléguer la confiance à cette identité, qui est alors autorisée à demander des jetons d’API à portée limitée et de courte durée à PyPI. Ces jetons d’API n’ont jamais besoin d’être stockés ou partagés, tournent automatiquement à l’expiration rapide et fournissent un lien vérifiable entre un package publié et sa source.
Actuellement la possibilité d’utiliser le mécanisme “Éditeurs de confiance” Il est déjà implémenté et fonctionne. pour les contrôleurs démarrés sur GitHub Actions. Enfin et surtout, il est également mentionné que la compatibilité avec les éditeurs de confiance pour d’autres services externes est attendue à l’avenir.
Finalement Si vous êtes intéressé à en savoir plus à ce sujetvous pouvez vérifier les détails dans le lien suivant.