当前位置:首页 > 文章列表 > 科技周边 > 业界新闻 > OpenSSF GUAC 怎样串联软件供应链关系

OpenSSF GUAC 怎样串联软件供应链关系

来源:17golang原创 2026-11-14 21:21:37 0浏览 收藏

很多团队已经能生成 SBOM,却仍然回答不了“这个镜像来自哪个构建”“某个包被哪些服务使用”“一条漏洞公告会影响哪些制品”。OpenSSF GUAC 的定位正是把分散的软件安全元数据聚合成可查询的关系图,而不是再生成一份孤立清单。

官方地址:https://guac.sh/

它的接入思路可以概括为:先收集 SBOM、SLSA、in-toto、VEX、OSV 等材料,再统一软件实体的身份,最后让包、二进制、镜像、漏洞和证明之间形成可查询关系。下面按这个链路拆开说明。

先把基线从“文件数量”换成“可回答的问题”

判断供应链数据是否真正有用,不能只统计导入了多少份 SBOM。更实际的基线是列出三类问题,并记录每类问题能否得到完整路径:

  • 来源问题:一个生产镜像能否追溯到包、源码仓库或构建证明?
  • 影响问题:某个依赖或漏洞出现时,能否找出受影响的应用、镜像和部署对象?
  • 合规问题:目标制品是否有 SBOM、来源证明或组织要求的其他材料?

这三个问题对应“输入覆盖率、关系完整度、查询可用性”三个可持续观察的指标。若只导入 SBOM 而没有稳定的制品标识,文件数量会上升,关系完整度却不会同步上升。

GUAC 将 SBOM、构建证明和漏洞资料聚合为软件制品关系图的说明图
图1:结构说明图,展示输入材料、实体标准化、关系图与组织问题之间的静态对应关系。

GUAC 如何把分散材料串成关系

第一层是收集。官方仓库列出的输入包括 SPDX、CycloneDX、SLSA、in-toto、OSV、OpenVEX、CSAF/VEX、OpenSSF Scorecard 以及 deps.dev 等。它们提供的不是同一种信息:SBOM 更像“由哪些组件组成”,SLSA 或 in-toto 更偏向“怎样产生”,OSV 和 VEX 则帮助描述风险与影响状态。

第二层是身份对齐。GUAC 会把材料中的软件包、文件、镜像和构建对象抽取成实体,再根据软件标识标准建立关系。这里的关键不是把所有文本字段拼接起来,而是让同一个对象在不同材料中尽量拥有稳定的身份,这样“包属于镜像”和“镜像来自构建”才能落在同一张图上。

第三层是丰富。项目资料说明,GUAC 可以继续接入可信服务,为已有关系补充依赖、许可证、漏洞、生命周期或 Scorecard 等信息。查询层面对外提供统一的 GraphQL 接口,后端替换时客户端不必跟着改变。

按四个环节设计一次可落地接入

  1. 盘点对象:先列出组织真正关心的应用、包、二进制和容器镜像,并为每类对象确定主标识。
  2. 接入材料:优先导入已有的 SPDX 或 CycloneDX SBOM,再补充构建证明、VEX 和漏洞来源;不要把缺少来源的空字段当成已完成的证明。
  3. 检查关系:围绕“包—二进制—镜像—应用”画出最小关系链,确认不同来源的数据是否落到了同一个实体上。
  4. 设计查询:把补丁影响面、缺少 SBOM 的制品、无来源证明的生产对象等问题写成固定查询,并记录返回路径是否完整。

如果只是试用,可以从项目文档提供的 quickstart 开始;如果要长期保存关系,则要同时考虑后端类型和数据保留策略。官方仓库将 keyvalue 说明为非持久的内存后端,将 ent 与 PostgreSQL 说明为受支持的持久化组合。选型时应先匹配数据生命周期,再讨论查询规模。

GUAC 从软件包追踪到镜像影响面的查询关系说明图
图2:关系说明图,展示从软件包、构建证明到镜像和影响面查询的静态路径。

边界:它能关联什么,不能替你保证什么

GUAC 的价值是把元数据组织成可追踪的上下文,因此它不能替代上游材料的生成,也不能自动证明材料本身真实无误。仓库特别提醒:软件标识并不总是完整,导入时可能需要启发式关联,因此会存在未处理的边界情况和数据质量问题。

还要把“有关系”与“有结论”分开。图中出现某个漏洞与镜像的关联,只代表当前材料支持这条关系;是否实际可利用、是否已经被 VEX 排除、应采取哪种修复动作,仍要结合原始证明和组织流程判断。GUAC 可以帮助缩短排查路径,但不会替团队完成风险决策。

常见问题

GUAC 是不是 SBOM 生成器?

不是。它更接近 SBOM、构建证明、漏洞和许可证等元数据的聚合与查询层,输入材料仍需要由构建、发布或扫描流程产生。

只有一份 SBOM 能不能建立完整关系?

通常只能建立部分组成关系。若要回答来源、影响面或合规问题,还需要稳定标识、构建证明以及相应的漏洞或 VEX 数据。

GUAC 能否直接替代安全审查?

不能。它提供关系和查询能力,帮助团队发现缺口、定位影响范围和组织证据;最终的风险判断、审批和修复仍由团队负责。

总结来看,GUAC 串联软件供应链关系的关键不是“把资料集中存起来”,而是让不同来源的材料围绕同一组软件实体形成可追踪路径。先定义要回答的问题,再补齐输入和标识,最后用固定查询观察关系完整度,接入才会从文件归档变成可行动的供应链视图。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
Kubernetes Gateway API BackendTLSPolicy 怎样表达后端 TLSKubernetes Gateway API BackendTLSPolicy 怎样表达后端 TLS
上一篇
Kubernetes Gateway API BackendTLSPolicy 怎样表达后端 TLS
SPDX 许可证表达式怎样表示组合授权
下一篇
SPDX 许可证表达式怎样表示组合授权
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    1029次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    1030次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    1173次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    1133次使用
  • MMBench详解:多模态大模型基准测试、功能特点与使用指南
    MMBench
    MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
    973次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议 和 隐私政策
返回登录
  • 重置密码