注意: GUAC 正在积极开发中——如果你有兴趣贡献,请查看贡献指南。GUAC 是 OpenSSF 在供应链完整性工作组下的孵化项目。
理解制品构成图 (GUAC) 将软件安全元数据聚合到一个高保真图数据库中——规范化实体身份并映射它们之间的标准关系。查询该图可以推动更高级别的组织成果,如审计、策略、风险管理,甚至开发者辅助。
从概念上讲,GUAC 占据软件供应链透明度逻辑模型中的“聚合与合成”层:

GUAC 能回答的一些问题示例包括:

我们的文档是一个很好的开始点。
我们提供了各种演示用例供你查看。
通过我们的docker compose 快速启动启动 GUAC 服务。
该仓库附带了一个 .devcontainer 配置,可以在本地 Docker 上启动完整的 GUAC 栈(GraphQL、REST、collectsub、ingestor、NATS 以及 deps_dev / osv / ClearlyDefined 收集器),由已发布的 GUAC 发布镜像支持。使用 Dev Containers 扩展 在 VS Code 中打开仓库,并选择“在容器中重新打开”——GraphQL 游乐场转发到端口 8080,REST API 转发到 8081。同样适用于 JetBrains Gateway 和 DevPod。
GUAC 的所有文档都位于 docs.guac.sh,由以下 docs GitHub 仓库 支持。
以下是 GUAC 架构的概述:

如需深入了解和解释 GUAC Beta 的组件,请参考 GUAC 工作原理。
请注意,GUAC 使用软件标识符标准来帮助关联元数据。然而,这些标识符并不总是可用,因此需要使用启发式方法进行关联。因此,可能在数据摄入时出现未处理的边缘情况和错误。如果你在摄入数据时遇到任何错误或缺陷,烦请创建一个数据质量问题的 issue。
GUAC 在软件抽象层后支持多个后端。GraphQL API 始终相同,客户端不受使用哪个后端的影响。后端分类如下:
支持/不支持:支持的后端是 GUAC 项目承诺积极维护的。不支持的后端不会积极维护,但会接受社区贡献。
完整/不完整:完整的后端支持所有强制性的 GraphQL API。不完整的后端支持这些 API 的子集,可能功能不全。
优化:该后端经过一定程度的优化以提高性能。
支持、完整且优化的两个后端是:
keyvalue (支持, 完整, 优化):一个非持久化的内存后端,不需要任何额外基础设施。同时也作为 API 实现的合规性后端。如果你是初次使用 GUAC,我们推荐从此开始。
ent (支持, 完整, 优化) 配合 PostgreSQL:一个基于 Entity Framework for Go 的持久化后端,可在多种 SQL 后端上运行。GUAC 仅支持 ent 与 PostgreSQL。其他 ent 后端如 MySQL 和 SQLite 不受支持。
其他后端有:
arangoDB (不支持, 不完整, 优化):基于 ArangoDB 的持久化后端。
neo4j/openCypher (不支持, 不完整):基于 neo4j 和 openCypher 的持久化后端。该后端应适用于任何支持 openCypher 查询的数据库。
keyvalue: Redis (实验性, 完整):默认的 keyvalue 后端,但使用 Redis 作为存储。
keyvalue: TiKV (实验性, 完整):默认的 keyvalue 后端,但使用 TiKV 作为存储。
关于如何参与社区、邮件列表和会议,请参阅我们的社区页面。
对于安全问题或行为准则问题,请发送电子邮件至 [email protected]。
关于治理的信息,包括项目章程,可以在 guacsec/governance 仓库 中找到。