正文随着供应链攻击增多,前端项目需要在包发布与安装两个阶段建立可验证链路:发布时的来源证明与安装时的完整性校验。本文给出 npm provenance 的发布实践与基于锁文件 integrity 的严格安装策略。
一、在 GitHub Actions 以 provenance 发布name: publish
on:
push:
tags:
- 'v*'
permissions:
id-token: write
contents: read
jobs:
npm-publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '22'
registry-url: 'https://registry.npmjs.org'
- run: npm ci
- run: npm test --if-present
- run: npm publish --provenance --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
二、验证发布来源与完整性npm view your-package dist.integrity
npm view your-package dist.attestations
三、严格安装流程与锁文件校验npm ci
npm audit --omit=dev
四、基于 integrity 的校验示例import { createHash } from 'crypto'
import { readFileSync } from 'fs'
function sriSha512(buf: Buffer) {
const h = createHash('sha512').update(buf).digest('base64')
return 'sha512-' + h
}
const tarball = readFileSync('dist/app.tgz')
const integrity = sriSha512(tarball)
console.log(integrity)
五、治理要点发布管道使用 OIDC 以 `--provenance` 生成来源证明,与账号令牌分离。安装使用 `npm ci`,严格遵循锁文件,禁止漂移;审计仅针对生产依赖。对关键产物计算 `sha512` 并与锁文件或发布元数据的 `integrity` 对比,发现不一致立即阻断。

发表评论 取消回复