微软宣布NuGet现已支持通过GitHub Actions进行可信发布(Trusted Publishing)来发布软件包。
可信发布是一种利用OpenID Connect(OIDC)标准的认证方法。与发布软件包时使用长期有效的API令牌不同,OIDC身份令牌可以交换为短期有效的API令牌。
该功能已被多种其他包管理器采用,包括PyPI,以及最近在一系列供应链攻击之后,npm也加入了这一行列。
据微软介绍,使用可信发布功能时,当CI/CD系统(此处为GitHub Actions)运行工作流时,会生成一个短期令牌并发送到nuget.org。NuGet验证该令牌后,返回一个有效期一小时的临时API密钥,工作流可以使用该密钥发布包。
“这通过降低凭证泄露风险使您的发布过程更安全。同时,由于无需轮换或存储密钥,自动化也变得更容易。这种方法是行业向安全、无密钥发布广泛转变的一部分,”微软在一篇博客文章中写道。
要从长期API密钥迁移到可信发布,开发人员需要在nuget.org上创建可信发布策略,从代码库或CI密钥中移除所有存储的NuGet API密钥,并在工作流中添加NuGet/login@v1,然后使用dotnet nuget push
命令使用输出的密钥。