- Notifications
You must be signed in to change notification settings - Fork186
GUAC aggregates software security metadata into a high fidelity graph database.
License
guacsec/guac
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Note: GUAC is under active development - if you are interested incontributing, please look atcontributor guide. GUAC is anOpenSSF incubating project under theSupply Chain Integrity WG.
Graph for Understanding Artifact Composition (GUAC)aggregates software security metadata into a high fidelity graphdatabase—normalizing entity identities and mapping standard relationshipsbetween them. Querying this graph can drive higher-level organizational outcomessuch as audit, policy, risk management, and even developer assistance.
Conceptually, GUAC occupies the “aggregation and synthesis” layer of thesoftware supply chain transparency logical model:
A few examples of questions answered by GUAC include:
Ourdocumentation is a good place to get started.
We have variousdemos use cases that youcan take a look.
Starting the GUAC services with ourdocker compose quickstart.
All documentation for GUAC lives ondocs.guac.sh, backedby the followingdocs github repository.
Here is an overview of the architecture of GUAC:
For an in-depth view and explanation of components of the GUAC Beta, pleaserefer tohow GUAC works.
- CycloneDX
- Dead Simple Signing Envelope
- Deps.dev API
- In-toto ITE6
- OpenSSF Scorecard
- OSV
- SLSA
- SPDX
- CSAF/CSAF VEX
- OpenVEX
Note that GUAC uses software identifiers standards to help link metadatatogether. However, these identifiers are not always available and heuristicsneed to be used to link them. Therefore, there may be unhandled edge cases anderrors occurring when ingesting data. We appreciate it if you could create adata quality issueif you encounter any errors or bugs with ingestion.
GUAC supports multiplebackends behind a softwareabstraction layer. The GraphQL API is always the same and clients should beunaffected by which backend is in use. The backends are categorized into:
Supported/Unsupported: Supported backends are those which the GUAC projectis committed to actively maintain. Unsupported backends are not activelymaintained but will accept community contributions.
Complete/Incomplete: Complete backends support all mandatory GraphQLAPIs. Incomplete backends support a subset of those APIs and may not befeature complete.
Optimized: The backend has gone through a level of optimization to helpimprove performance.
The two backend that are Supported, Complete, and Optimized are:
keyvalue (supported, complete,optimized):a non-persistent in-memory backend that doesn't require any additionalinfrastructure. Also acts as a conformance backend for APIimplementations. We recommend starting with this if you're just starting withGUAC!
ent (supported, completeoptimized)withPostgreSQL: a persistent backend based onEntity Framework for Go that can run on various SQLbackends. GUAC only supports ent with PostgreSQL. Other ent backends such asMySQL andSQLite are unsupported.
The other backends are:
arangoDB (unsupported, incomplete,optimized):a persistent backend based onArangoDB
neo4j/openCypher (unsupported,incomplete):a persistent backend based onneo4j andopenCypher. This backend should work with anydatabase that supported openCypher queries.
keyvalue: Redis (experimental, complete): Thedefault keyvalue backend, but using Redis as storage.
keyvalue: TiKV (experimental, complete): Thedefault keyvalue backend, but usingTiKV as storage.
- GUAC use cases
- GUAC presentation at OSS NA 2023
- GUAC 2023 Q1 Maintainer Summit Notes
- GUAC presentation at KubeCon NA 2022
- GUAC Intro Slides
- GUAC Design Doc
For more information on how to get involved in the community, mailing lists andmeetings, please refer to ourcommunity page
For security issues or code of conduct concerns, an e-mail should be sent toGUAC-Maintainers@lists.openssf.org.
Information about governance can be foundhere.
About
GUAC aggregates software security metadata into a high fidelity graph database.