guac

module
v0.12.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 10, 2024 License: Apache-2.0

README

GUAC: Graph for Understanding Artifact Composition

build PkgGoDev Go Report Card OpenSSF Scorecard

Note: GUAC is under active development - if you are interested in contributing, please look at contributor guide. GUAC is an OpenSSF incubating project under the Supply Chain Integrity WG.

Graph for Understanding Artifact Composition (GUAC) aggregates software security metadata into a high fidelity graph database—normalizing entity identities and mapping standard relationships between them. Querying this graph can drive higher-level organizational outcomes such as audit, policy, risk management, and even developer assistance.

Conceptually, GUAC occupies the “aggregation and synthesis” layer of the software supply chain transparency logical model:

image

A few examples of questions answered by GUAC include:

image

Quickstart

Our documentation is a good place to get started.

We have various demos use cases that you can take a look.

Starting the GUAC services with our docker compose quickstart.

Docs

All documentation for GUAC lives on docs.guac.sh, backed by the following docs github repository.

Architecture

Here is an overview of the architecture of GUAC:

guac_api

For an in-depth view and explanation of components of the GUAC Beta, please refer to how GUAC works.

Supported input documents

Note that GUAC uses software identifiers standards to help link metadata together. However, these identifiers are not always available and heuristics need to be used to link them. Therefore, there may be unhandled edge cases and errors occurring when ingesting data. We appreciate it if you could create a data quality issue if you encounter any errors or bugs with ingestion.

GraphQL backends

GUAC supports multiple backends behind a software abstraction layer. The GraphQL API is always the same and clients should be unaffected by which backend is in use. The backends are categorized into:

  1. Supported/Unsupported: Supported backends are those which the GUAC project is committed to actively maintain. Unsupported backends are not actively maintained but will accept community contributions.

  2. Complete/Incomplete: Complete backends support all mandatory GraphQL APIs. Incomplete backends support a subset of those APIs and may not be feature complete.

  3. Optimized: The backend has gone through a level of optimization to help improve performance.

The two backend that are Supported, Complete, and Optimized are:

The other backends are:

Additional References

Communication

For more information on how to get involved in the community, mailing lists and meetings, please refer to our community page

For security issues or code of conduct concerns, an e-mail should be sent to GUAC-Maintainers@lists.openssf.org.

Governance

Information about governance can be found here.

Directories

Path Synopsis
cmd
internal
testing/graphqlClients
package clients helps set up the graphql backend for testing graphql clients
package clients helps set up the graphql backend for testing graphql clients
testing/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
testing/ptrfrom
Package ptrfrom helps getting pointers when declaring literals in tests.
Package ptrfrom helps getting pointers when declaring literals in tests.
pkg
assembler/kv
Package kv is an interface that the keyvalue backend uses to store data
Package kv is an interface that the keyvalue backend uses to store data
cli
collectsub/collectsub/input
input defines collectsub structs that can be used for human/application inputs that do not necessarily find it convenient to use protobuf (e.g.
input defines collectsub structs that can be used for human/application inputs that do not necessarily find it convenient to use protobuf (e.g.
guacrest/client
Package client provides primitives to interact with the openapi HTTP API.
Package client provides primitives to interact with the openapi HTTP API.
guacrest/generated
Package generated provides primitives to interact with the openapi HTTP API.
Package generated provides primitives to interact with the openapi HTTP API.
guacrest/pagination
package pagination implements a cursor-based pagination for the REST API, where the cursors are opaque strings that encode an index in a result set.
package pagination implements a cursor-based pagination for the REST API, where the cursors are opaque strings that encode an index in a result set.
ingestor/parser/ingest_predicates
ingest_predicates is a parser that is generally unsafe due to the fact that it does not validate the facts that it is emiting without a backing attestations.
ingest_predicates is a parser that is generally unsafe due to the fact that it does not validate the facts that it is emiting without a backing attestations.
ingestor/parser/vuln
Package vuln attestation parser parses the attestation defined by by the certifier using the predicate type "https://in-toto.io/attestation/vulns/v0.1" Three different types of ingest predicates are created.
Package vuln attestation parser parses the attestation defined by by the certifier using the predicate type "https://in-toto.io/attestation/vulns/v0.1" Three different types of ingest predicates are created.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL