使用可信发布者发布到 PyPI
“可信发布”是指我们使用OpenID Connect (OIDC)标准在可信第三方服务和 PyPI 之间交换短期身份令牌。这种方法可用于自动化环境,无需在发布时手动生成 API 令牌来向 PyPI 进行身份验证。
快速入门指南:
简要背景:使用 OpenID Connect 发布
OpenID Connect (OIDC) 发布是一种将软件包上传到 PyPI 的机制,是对 API 令牌的补充 。
您无需了解 OIDC 即可使用 PyPI 进行 OIDC 发布,但这里提供一个简要概述:
- 某些 CI 服务(如 GitHub Actions)是 OIDC身份提供商,这意味着它们可以颁发短期凭证(“OIDC 令牌”),第三方可以强验证这些凭证是否来自 CI 服务(以及实际执行的用户、存储库等);
- PyPI 上的项目可以配置为信任特定 CI 服务上的特定配置,使该配置成为该项目的 OIDC 发布者;
- 发布自动化(例如 GitHub Actions)可以将 OIDC 令牌提交给 PyPI。该令牌将与不同项目信任的配置进行匹配;如果任何项目信任该令牌的配置,则 PyPI 将为这些项目铸造一个短期 API 令牌并将其返回;
- 短暂的 API 令牌的行为与普通的项目范围 API 令牌完全相同,只是它自创建之日起只有 15 分钟的有效期(足够 CI 使用它来上传软件包)。
与 PyPI 的传统身份验证方法相比,这带来了显著的可用性和安全性优势:
- 易用性:借助可信发布功能,用户不再需要手动在 PyPI 上创建 API 令牌并将其复制粘贴到 CI 提供商中。唯一需要手动操作的步骤是在 PyPI 上配置发布者。
- 安全性:PyPI 的普通 API 令牌有效期较长,这意味着攻击者如果获取了软件包的发布令牌,就可以一直使用该令牌,直到合法用户发现并手动撤销为止。可信发布避免了这个问题,因为生成的令牌会自动过期。