PyPI ya permite publicar paquetes sin estar vinculado a contraseñas y tokens
Hace pocos días se dio a conocer la noticia de que el repositorio de paquetes Python PyPI (Python Package Index) ya brinda la capacidad de usar un nuevo método seguro para publicar paquetes, lo que elimina la necesidad de almacenar contraseñas fijas y tokens de acceso a la API en sistemas externos (por ejemplo, en GitHub Actions).
El nuevo método de autenticación tiene como nombre‘ Editores de confianza ‘ y está diseñado para resolver el problema de la publicación de actualizaciones maliciosas como resultado de sistemas externos comprometidos y contraseñas o tokens predefinidos que caen en manos equivocadas.
A partir de hoy, los mantenedores de paquetes de PyPI pueden adoptar un método de publicación nuevo y más seguro que no requiere contraseñas de larga duración ni tokens de API para compartir con sistemas externos.
Se menciona que este nuevo método de autenticación confiere importantes ventajas de usabilidad y seguridad en comparación con los otros métodos de autenticación tradicionales de PyPI:
- Usabilidad: con la publicación confiable, los usuarios ya no necesitan crear manualmente tokens de API en PyPI y copiarlos y pegarlos en su proveedor de CI. El único paso manual es configurar el editor en PyPI.
- Seguridad: los tokens API normales de PyPI son de larga duración, lo que significa que un atacante que comprometa el lanzamiento de un paquete puede usarlo hasta que su usuario legítimo se dé cuenta y lo revoque manualmente. Del mismo modo, cargar con una contraseña significa que un atacante puede cargar cualquier proyecto asociado con la cuenta. La publicación confiable evita estos dos problemas: los tokens emitidos caducan automáticamente y se limitan solo a los paquetes en los que están autorizados a cargar.
Sobre este nuevo método de autenticación, se menciona que se basa en el estándar OpenID Connect (OIDC), que utiliza tokens de autenticación de tiempo limitado intercambiados entre servicios externos y el directorio PyPI para validar una operación de publicación de paquetes, en lugar de usar un inicio de sesión/contraseña tradicional o una API persistente generada manualmente por tokens de acceso.
«Publicación de confianza» es nuestro término para usar el estándar OpenID Connect (OIDC) para intercambiar tokens de identidad de corta duración entre un servicio de terceros de confianza y PyPI. Este método se puede usar en entornos automatizados y elimina la necesidad de usar combinaciones de nombre de usuario/contraseña o tokens API generados manualmente para autenticarse con PyPI al publicar.
Por otra parte, tambien se menciona que los mantenedores de paquetes pueden, en el lado de PyPI, confiar en los identificadores proporcionados a los proveedores de OpenID externos (IdP, OpenID Connect Identity Provider), que el servicio externo usará para solicitar tokens no vivos de PyPI.
Los tokens de OpenID Connect generados confirman la relación entre el proyecto y el controlador, lo que permite a PyPI realizar una verificación de metadatos adicional, como verificar que el paquete publicado esté asociado con un repositorio específico. Los tokens no son persistentes, están vinculados a API específicas y caducan automáticamente después de un breve período de vida.
En su lugar, los mantenedores de PyPI pueden configurar PyPI para confiar en una identidad proporcionada por un proveedor de identidad (IdP) de OpenID Connect dado. Esto permite que PyPI verifique y delegue la confianza en esa identidad, que luego está autorizada para solicitar tokens de API de alcance limitado y de corta duración de PyPI. Estos tokens de API nunca necesitan almacenarse ni compartirse, rotan automáticamente al expirar rápidamente y proporcionan un vínculo verificable entre un paquete publicado y su fuente.
Actualmente la capacidad de usar el mecanismo «Editores de confianza» ya se encuentra implementada y en funcionamiento para los controladores iniciados en GitHub Actions. Por último y no menos importante, también se hace mención de que se espera en el futuro la compatibilidad con Trusted Publishers para otros servicios externos.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.