使用 Trusted Publishing 提升 npm 包发布安全性
版权声明
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
鲁飞
扫码关注公众号
扫码阅读
手机扫码阅读
**文章主旨:**
本文介绍了 npm 推出的 Trusted Publishing(可信发布)机制,通过 OIDC 实现从 CI/CD 工作流安全发布 npm 包,消除长期 token 泄露风险,并提供了详细的设置步骤。
**关键要点:**
1. Trusted Publishing 基于 OpenID Connect(OIDC),无需在 CI 中存储长期 npm token,每次发布使用短期、工作流特定的凭证。
2. 该机制能有效降低 token 泄露带来的供应链攻击风险,并自动附加来源证明(provenance)。
3. 设置需在 npm 包设置页面配置可信发布者(如 GitHub Actions),并在 CI 工作流中添加 `id-token: write` 权限。
4. 当前要求 npm CLI ≥ 11.5.1 和 Node ≥ 22.14.0。
5. 建议所有开源项目逐步迁移到此方案。
**内容结构:**
1. **引言**:提出传统 npm 发布方式依赖长期 token 的安全隐患,引出 npm 于 2025 年 7 月推出的 Trusted Publishing 机制。
2. **什么是 Trusted Publishing**:基于 OIDC 的可信发布功能,无长期 token、消除令牌安全风险、短期凭证自动过期、绑定 CI 身份、降低泄露风险、自动获取来源证明。
3. **传统发布方式的问题**:依赖长期 token 存储于 GitHub Secrets,token 泄露可导致恶意发布;即使 npm 限制 token 有效期至 90 天,仍需频繁轮换。
4. **Trusted Publishing 的工作原理**:GitHub Actions 在运行时向 npm 发起 OIDC 身份请求,npm 验证请求来源是否匹配已配置的可信仓库,匹配后签发短期访问令牌,CI 使用该令牌执行 `npm publish`。
5. **设置 Trusted Publishing**:
- npm 侧:进入包设置页面的 Trusted Publisher,选择 GitHub Actions,填写用户/组织、仓库、工作流文件名。
- GitHub Actions 配置:修改工作流 YAML,添加 `permissions: id-token: write`(必须),移除原有的 npm token 设置。
- 发布成功后邮件通知会包含 CI 来源信息。
6. **注意事项**:Trusted Publishing 需要 npm CLI 11.5.1+ 和 Node 22.14.0+。
7. **结论**:Trusted Publishing 是 npm 供应链安全的重要升级,建议所有开源项目逐步迁移。
**文章总结:**
本文系统性地阐述了 npm Trusted Publishing 机制的原理、优势与配置方法,强烈建议开发者采用该方案以提升 npm 发布流程的安全性。
文章来源:
鲁飞
鲁飞
扫码关注公众号
还在用多套工具管项目?
一个平台搞定产品、项目、质量与效能,告别整合之苦,实现全流程闭环。
查看方案
鲁飞的其他文章
Bitwarden Secrets Manager:简化 DevOps 的机密管理
Bitwarden Secrets Manager 为 DevOps 团队提供了一种更加安全、便捷的方式来管理和集成机密信息。
GitHub Actions 真香系列之自动同步镜像仓库
GitHub虽然在国内访问慢,但是依旧不能阻挠国内开发者的使用,我们一般也会在Gitee或者其他托管平台创建一个镜像,用来方便不能正常访问GitHub的开发者。
Think-Swoole如何设置Swoole提供的配置项
think-swoole 的文档极少,官方文档中也只是说了如何启动、热更新、连接池等配置
怎么分别给公司和个人项目设置 Git User?
从第一天使用 Git 开始,每个人都逃不过这个配置
给你的项目增加 Git WebHooks
让你的项目支持 WebHooks,并且可以自定义 WebHooks 的规则。
加入社区微信群
与行业大咖零距离交流学习
PMO实践白皮书
白皮书上线
白皮书上线