包的所有者在注册表上登记一个可信发布者(例如仓库 org/name、工作流 release.yml,以及可选的环境);发布时,CI 作业出示自己的 OIDC 令牌,注册表检查其中的声明,并返回一个有效期只有几分钟的凭证。CI 日志或开发者的笔记本电脑中不存在任何可能泄露的长期凭证,这堵住了包被劫持最常见的途径。
注册表把它与来源证明结合使用:在可信发布下,npm 会自动发布来源证明(npm CLI 11.5.1 或更高版本),PyPI 官方的 GitHub Action 默认生成 PEP 740 证明。还要保护工作流本身:为发布环境设置必需的审查者、固定 Action 版本并启用分支保护,因为谁控制了工作流,谁就能发布。