使用 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 发布流程的安全性。
文章来源:
鲁飞
鲁飞
扫码关注公众号
还在用多套工具管项目?
一个平台搞定产品、项目、质量与效能,告别整合之苦,实现全流程闭环。
查看方案
鲁飞的其他文章
simps/mqtt v1.1.1 版本发布,支持 MQTT5 中的大部分 Property
在 MQTT 5.0 协议中增加了很多属性。不同的报文类型之间,属性也会不同,一共有 27 种属性。
为 Docsify 自动生成 RSS 订阅
为Docsify等静态站点自动生成RSS订阅
怎么使用默认的 PHP 执行 phar 包?
最近在开发一个安装程序的时候,打包为了 phar 包,遇到了一个问题就是打包后的 phar 包不能省略 php 去运行。
Nginx目录浏览并进行美化
Nginx 作为一个高性能的 HTTP 和反向代理 web 服务器,默认不允许列出站点的整个目录,如果需要开启,可以通过配置打开此功能。
PHPMQTT v1.4.1 版本发布,新增协议调试工具
PHPMQTT v1.4.1 版本发布,在此版本中主要是新增了一个协议调试工具。
加入社区微信群
与行业大咖零距离交流学习
PMO实践白皮书
白皮书上线
白皮书上线