使用可信发布者发布到 PyPI
“可信发布”是我们使用 OpenID Connect (OIDC) 标准在可信第三方服务和 PyPI 之间交换短期身份令牌的术语。这种方法可以在自动化环境中使用,并消除了在发布时使用手动生成的 API 令牌进行 PyPI 身份验证的需要。
有关快速入门,请参见
快速背景:使用 OpenID Connect 发布
OpenID Connect (OIDC) 发布是一种将软件包上传到 PyPI 的机制,它补充了 API 令牌。
您不需要理解 OIDC 就可以使用 OIDC 发布到 PyPI,但以下是简而言之的解释
- 某些 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 令牌是长期有效的,这意味着攻击者如果破坏了软件包的发布令牌,就可以使用它,直到其合法用户注意到并手动撤销它。可信发布避免了这个问题,因为生成的令牌会自动过期。