PyPI 是 Python 编程语言第三方应用程序的官方软件存储库。
前几天有消息爆出 Python PyPI 包存储库 (Python 包索引)已经 提供使用新的安全方法发布包的能力,这样就无需在外部系统(例如 GitHub Actions)中存储硬密码和 API 访问令牌。
新的身份验证方法具有名称“值得信赖的出版商” 旨在解决因外部系统受损和预定义密码或令牌落入坏人之手而发布恶意更新的问题。
从今天开始,PyPI 包维护者可以采用一种新的、更安全的发布方法,不需要长期密码或 API 令牌即可与外部系统共享。
有人提到,与其他传统的 PyPI 身份验证方法相比,这种新的身份验证方法具有显着的可用性和安全性优势:
- 可用性: 通过可信发布,用户不再需要在 PyPI 中手动创建 API 令牌并将它们复制并粘贴到他们的 CI 提供程序中。 唯一的手动步骤是在 PyPI 中配置编辑器。
- 安全性: 常规的 PyPI API 令牌是长期存在的,这意味着破坏包发布的攻击者可以使用它,直到其合法用户注意到并手动撤销它。 同样,使用密码上传意味着攻击者可以上传与该帐户关联的任何项目。 Trusted Publishing 避免了这两个问题:颁发的令牌自动过期并且仅限于它们被授权上传到的包。
关于这种新的身份验证方法,提到 基于 OpenID Connect 标准(OIDC),其中 使用限时交换的身份验证令牌 在外部服务和 PyPI 目录之间验证包发布操作,而不是使用传统的登录/密码或由访问令牌手动生成的持久 API。
“可信发布”是我们使用 OpenID Connect (OIDC) 标准在可信第三方服务和 PyPI 之间交换短期身份令牌的术语。 此方法可用于自动化环境,无需使用用户名/密码组合或手动生成的 API 令牌在发布时通过 PyPI 进行身份验证。
另一方面,还提到包维护者可以在 PyPI 端信任提供给外部 OpenID 提供商 (IdP) 的标识符,外部服务将使用这些标识符来请求 PyPI 的非实时令牌。
生成的 OpenID Connect 令牌确认项目和控制器之间的关系, 这允许 PyPI 执行额外的元数据验证,例如验证已发布的包是否与特定存储库相关联。 令牌不是永久性的,它们与特定的 API 相关联,并且会在短暂的生命周期后自动过期。
相反,PyPI 维护者可以将 PyPI 配置为信任给定 OpenID Connect 身份提供者 (IdP) 提供的身份。 这允许 PyPI 验证身份并将信任委托给该身份,然后该身份被授权从 PyPI 请求有限范围、短期的 API 令牌。 这些 API 令牌永远不需要存储或共享,在快速到期时自动轮换,并在已发布的包及其来源之间提供可验证的链接。
现在 使用该机制的能力 “值得信赖的出版商” 它已经实施并运行。 对于在 GitHub Actions 上启动的控制器。 最后但并非最不重要的一点是,还提到未来有望与 Trusted Publishers 兼容其他外部服务。
最后 如果您有兴趣了解更多有关它的信息,您可以查看详细信息 在下面的链接中。