正文随着供应链攻击增多,前端项目需要在包发布与安装两个阶段建立可验证链路:发布时的来源证明与安装时的完整性校验。本文给出 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` 对比,发现不一致立即阻断。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部