供应链门禁怎么开:先 SBOM,再 VEX,最后拒绝下载

简介: 出几千洞没人管、一开阻断全公司瘫——在 AngusRepo(repo.anguskit.com)按 SBOM → VEX → 观察 →「未通过时拒绝下载」灰度落地;对齐 Repo 执法与 AngusSecurity 引擎。

扫出几千个洞,报告没人看;第一天就开全局阻断,三天后被迫全员白名单——多半不是缺扫描器,而是 节奏反了。

本文专讲 SBOM → VEX → 观察 →「未通过时拒绝下载」 怎么排期。对接与策略字段细节见制品入库怎么拦住漏洞和许可证;平台职责切分见平台工程供应链。示例主机 repo.anguskit.com。

产品边界:

  • AngusRepo = 仓库内策略、漏洞台、下载执法;深度 SCA / 跨仓 Finding 以 AngusSecurity 为准。
  • 未对接 Security 时通常难形成有效漏洞门禁——不要假装「上传即扫过」。
  • 推送/上传默认不自动检查;「未通过时拒绝下载」默认关。
  • 策略只能绑 HOSTED / PROXY;GROUP、Raw 不能。手册:安全扫描。

口诀: 先看得见(SBOM),再分得清(VEX),先观察后执法;阻断用语看控制台 「未通过时拒绝下载」(下文可括注 autoBlock)。
SBOM → VEX → 观察 → 拒绝下载

1. 两种失败剧本,对应两种修法

失败 症状 修法
只有发现 报告堆着、生产照拉旧包 补索引与归档,再谈执法
执法过猛 第一天全公司 pull 403 先观察、VEX 清误报,再窄策略开闸

三件套顺序:SBOM(看得见)→ VEX(分得清)→ 拒绝下载(拦得住)。顺序乱了会重演上表。

与入库门禁文的分工:那篇讲 怎么对接 Security、怎么配策略字段;本文讲 何时开哪一步、开闸前要清什么。

2. SBOM:先让每个制品有清单

SBOM 回答:这个制品里到底有什么。

对接并跑完检查后,在 安全 → 扫描历史 可对已结束任务 导出 SBOM(CycloneDX / SPDX)。正确用法不是「生成完存档」,而是:

场景 做法
新 CVE 公开 用 CVE 反查已有 SBOM / 扫描索引,定位受影响坐标——响应从「天」压到「分钟」级
合规交付 随 release 归档 SBOM,审计时直接导出
发布门禁 晋级前确认本版本 SBOM 已留存(见版本发布)

扫描怎么触发(对齐现网)

方式 说明
策略:推送或上传时自动检查 默认关;打开后新包入 HOSTED/PROXY 会建任务
策略:定时扫描 覆盖存量;可选「每轮强制重扫」留痕
立即扫描 控制台 安全 / 仓库详情 扫描
流水线显式触发 发布后等任务完成再部署(推荐与门禁串联)

引擎未就绪或未对接时,不会有可信漏洞结果。细节与「两盏灯」见入库门禁文。

3. VEX:把「有漏洞」和「该拦」分开

扫描器宁可错杀:依赖里出现 CVE 就红,不管路径是否可达。几千条告警里埋着真威胁,一线很快学会无视红色。

在 Repo 安全 → 漏洞 可 导入 VEX(标准 OpenVEX JSON)。按 CVE + 组件更新处置(抑制误报、标记不可达等)。VEX 不替代扫描。

结论(概念) 后续
Not Affected / 不可达 从告警噪声中降权,附理由
Affected 进修复队列;达阈值则参与门禁
Under Investigation 限期给结论,设 owner

流程要求:

  1. 有 owner 与 SLA(例如「Under Investigation ≤ 5 个工作日」)。
  2. 豁免集中在仓库漏洞台,不要散落各项目 .ignore / allowlist。
  3. 开闸后注意:控制台标记 抑制 / 接受风险不会解除隔离——要放行需修复后重发,或调高阈值后重新检查(见手册门禁节)。

4. 「未通过时拒绝下载」:最后才开

打开后:未通过制品被隔离;下载 / 预览 / 镜像拉取拒绝(常见客户端 403);文件仍在仓里。检查失败或结果不完整也会拦。同仓多策略取最严。

灰度节奏(忌第一天全局开闸)

  1. 前置 — 引擎/对接正常;关键 HOSTED 基线扫完;情报源能同步。
  2. 观察约两周 — 门禁关着,只出报告;每天看「假如开闸会拦什么」,用 VEX / 修复清干净。
  3. 从窄到宽 — 先非生产仓;阈值先严(如高危);再灰度生产。
  4. 逃生通道 — 紧急发布豁免流程(审批 + TTL)提前演练;没有逃生通道的门禁迟早被整体绕过。

开闸后存量要等 下一次检查 才按新规则隔离——立刻生效请在策略上 立即扫描。关闸且无其他开闸策略 → 隔离立即恢复下载。

反直觉: 门禁价值不在拦截量,而在威慑后的「少拦截」——上游 CI 学会发布前自检,被拦事件应趋少。

5. 与 CI 怎么串(AngusGit 优先)

发布后等门禁结论再部署。优先 AngusGit / AngusCICD(凭证为 Repo Deploy Token)。YAML 入门:AngusCICD。骨架亦可参考 Jenkins 构建测试发布。

# .anguscicd/publish-then-gate.yaml(示意)
version: "1"
name: publish-then-gate

triggers:
  - on: tag
    branches: ["v*"]

pipeline:
  publish:
    runner:
      mode: DOCKER
      image: node:20
      labels: ["linux", "docker"]
    credentials: ["NPM_TOKEN"]
    steps:
      - name: publish HOSTED
        run: |
          npm config set //repo.anguskit.com/npm/npm-hosted/:_authToken "$NPM_TOKEN"
          npm publish --access restricted
        timeout: 600

  # 等待扫描/门禁:以控制台策略与文档 API 为准
  # 失败日志应可读(CVE / 策略名),而不是裸 403

CI 预扫 不替代 Repo 侧对已发布坐标的统一执法。

6. 翻车表

现象 常见原因 处理
上传成功但「没扫」 未对接 / 未开推送自动检查 / 引擎未就绪 查安全对接与策略
一开闸全公司瘫 未观察、未清 VEX、生产仓直接开 关闸 → 观察 → 非生产试点
误拦 / 403 阈值过严、误报未导入 VEX 导入 VEX 或调阈值后重扫
开闸后旧包仍能拉 存量未再扫 策略上「立即扫描」
「暂无漏洞」当安全 任务未跑或 LOCAL_ONLY 看扫描历史与对接状态

7. 落地检查清单

  • [ ] 安全对接探活成功(深度扫描启用)
  • [ ] 关键 HOSTED/PROXY 已绑策略;GROUP/Raw 未误绑
  • [ ] 推送自动检查或定时扫描覆盖新包与存量
  • [ ] 能导出 CycloneDX/SPDX;演练过一次 CVE 反查
  • [ ] VEX 导入有 owner / SLA;豁免不散落项目文件
  • [ ] 「未通过时拒绝下载」先观察再非生产开闸
  • [ ] 豁免通道(审批 + TTL)演练 ≥ 1 次
  • [ ] 流水线在门禁通过后再部署

8. FAQ

和入库门禁文有什么区别?

入库门禁文讲 对接 + 策略字段 + 验证;本文讲 SBOM/VEX/开闸节奏。先对接,再按本文排期。

上传成功是不是已经扫过?

不是。 默认不自动检查;未对接时更难有漏洞任务。

抑制漏洞后能不能下载?

开了「未通过时拒绝下载」时:不能靠抑制/接受风险解除隔离。见手册。

GROUP 仓库能开门禁吗?

不能绑策略。把门禁挂在成员 HOSTED(或相关 PROXY)上。

9. 小结

  • 顺序:SBOM → VEX → 观察 → 未通过时拒绝下载。
  • Repo 执法、Security 跑引擎;上传成功 ≠ 已扫过。
  • 先非生产、先窄策略;逃生通道要演练。

参考文章

相关文章
|
2天前
|
JSON 运维 安全
AngusSecurity 安全扫描报告怎么出:严重度和门禁结论冻成快照
AngusSecurity 报告是生成时刻的快照,不会随下一次扫描改写。按受众选模板,任务须已完成,导出 HTML/JSON/CSV/PDF,问题明细可另下 SARIF。
|
4天前
|
安全 开发工具 git
代码合并前怎么拦住不合规的开源许可证
仓库的许可合规页有一条开放的 GPL-3.0-only(强互惠),概览写着「许可证门禁未通过,拒绝合并」。许可证门禁按依赖用了哪种开源许可证决定能不能合并,怎么配、结果在哪看,都按这个仓库说明。
代码合并前怎么拦住不合规的开源许可证
|
4天前
|
安全 开发工具 git
推送代码之后:怎么自动跑代码安全扫描
每次推送后自动做安全扫描,需要两步:系统管理员在「管理 → 安全设置」接入 AngusSecurity,仓库管理员再打开「本仓自动安全扫描」。配好之后,分支上只要有新提交就会把扫描任务发给 AngusSecurity;哪些操作会触发扫描、结果在哪看、配了却没扫时怎么排查,都可以按仓库对照。
推送代码之后:怎么自动跑代码安全扫描
|
4天前
|
JSON 缓存 C++
怎么给仓库做代码查重:从建任务到看出重复函数
要知道一个仓库里有多少代码和其他项目重复,可以在 AngusGit 的代码溯源里建一个溯源任务:选好目标仓库和被溯源仓库,设置相似度阈值并运行,再从重复率、相似度分档一路看到具体重复的文件和函数。报告可以导出,跑不出结果时也能对照排查。
怎么给仓库做代码查重:从建任务到看出重复函数
|
4天前
|
安全
合并请求里怎么看代码安全扫描结果
想知道拉取请求能不能放心合并,先看状态检查里的 AngusSecurity 这一行:徽章给出结论,说明文字给出原因,点「打开仓安全详情」才能看到具体是哪个文件或依赖有问题。每种提示对应什么结论,以及看不到这一行时怎么查,都写在文中。
合并请求里怎么看代码安全扫描结果
|
4天前
|
算法 安全 Java
代码溯源是什么:在仓库里查相似代码,不是需求从哪来
AngusGit 的「代码溯源」就是代码相似度查重:把一个仓库、文件或一段代码,和同一实例里的其他仓库逐段比对,找出完全相同和高度相似的代码分别在哪里。它和需求追踪、许可证合规不是一回事,适合交付验收查重、重构前找重复,但不会去互联网上找,也不会自动运行。
代码溯源是什么:在仓库里查相似代码,不是需求从哪来
|
5天前
|
Java Linux 调度
AngusGit 运行器不接任务:标签、在线和并发对不上
流水线触发了,任务却一直停在「等待中」。AngusGit 会在任务旁写出等待原因:没有在线的 Runner、执行模式不匹配、标签不匹配、资源不够,或者并发已满。按这五种原因对照页面原文,就能看出是标签、在线状态还是并发对不上,以及该改任务还是改运行器。
AngusGit 运行器不接任务:标签、在线和并发对不上
|
5天前
|
Java Linux Shell
流水线运行器怎么接到构建机:在那台机器上执行接入命令
流水线要靠运行器(Runner)在构建机上真正执行任务。在控制台新增 Runner、生成注册令牌、按 Docker 或 Zip 方式复制接入命令,到构建机上执行后等它上线;接入失败时,也可以按页面提示和运行器日志对照排查。
流水线运行器怎么接到构建机:在那台机器上执行接入命令
|
5天前
|
安全 开发工具 git
合并请求怎么合入:在保留提交、压缩和变基里选一种
AngusGit 合并拉取请求时有三种方式:创建合并提交、压缩合并、变基合并。每种方式合进去之后 main 的历史不一样,可以在仓库设置里开关;合并后本地分支的收尾命令也不同。
合并请求怎么合入:在保留提交、压缩和变基里选一种
|
5天前
|
网络安全 开发工具 数据安全/隐私保护
从 GitLab 搬仓库到 AngusGit:公开项目直接导入,私有和内部项目推送
内网 GitLab 上的公开项目可以用「导入仓库」搬进 AngusGit,但只会带上默认分支当时的文件,已经导入的 xlliu/hello-world-import 就是这样,只有 main;内部和私有项目则要先 clone --bare,再推到按子组路径规则建好的空仓库。
从 GitLab 搬仓库到 AngusGit:公开项目直接导入,私有和内部项目推送