
Agrega metadatos de seguridad de la cadena de suministro de software (SBOMs, atestaciones, vulnerabilidades) en una base de datos de grafos consultable para auditoría, políticas y gestión de riesgos.
Nota: GUAC está en desarrollo activo: si estás interesado en contribuir, consulta la guía para colaboradores. GUAC es un proyecto en incubación de OpenSSF bajo el Grupo de Trabajo de Integridad de la Cadena de Suministro.
Gráfico para la Comprensión de la Composición de Artefactos (GUAC) agrega metadatos de seguridad de software en una base de datos de gráficos de alta fidelidad, normalizando identidades de entidades y mapeando relaciones estándar entre ellas. Consultar este gráfico puede impulsar resultados organizacionales de alto nivel como auditoría, políticas, gestión de riesgos e incluso asistencia a desarrolladores.
Conceptualmente, GUAC ocupa la capa de "agregación y síntesis" del modelo lógico de transparencia de la cadena de suministro de software:

Algunos ejemplos de preguntas que GUAC responde incluyen:

Nuestra documentación es un buen punto de partida.
Tenemos varios casos de uso de demostración que puedes consultar.
Iniciar los servicios de GUAC con nuestro inicio rápido con docker compose.
El repositorio incluye una configuración .devcontainer que levanta toda la pila de GUAC (GraphQL, REST, collectsub, ingestor, NATS y los recolectores de dep_dev / OSV / ClearlyDefined) localmente en Docker, respaldada por la imagen de publicación de GUAC. Abre el repositorio en VS Code con la extensión Dev Containers y selecciona "Reabrir en contenedor": el playground de GraphQL se redirige al puerto 8080 y la API REST al 8081. También funciona con JetBrains Gateway y DevPod.
Toda la documentación de GUAC se encuentra en docs.guac.sh, respaldada por el siguiente repositorio de documentación en GitHub.
Aquí hay una visión general de la arquitectura de GUAC:

Para una visión detallada y explicación de los componentes de GUAC Beta, consulta cómo funciona GUAC.
Ten en cuenta que GUAC utiliza estándares de identificadores de software para ayudar a vincular metadatos. Sin embargo, estos identificadores no siempre están disponibles y es necesario usar heurísticas para vincularlos. Por lo tanto, pueden ocurrir casos extremos no manejados y errores al ingerir datos. Agradecemos si puedes crear un issue de calidad de datos si encuentras algún error o bug con la ingesta.
GUAC admite múltiples backends detrás de una capa de abstracción de software. La API de GraphQL es siempre la misma y los clientes no deberían verse afectados por el backend en uso. Los backends se clasifican en:
Admitidos/No admitidos: Los backends admitidos son aquellos cuyo mantenimiento activo está comprometido por el proyecto GUAC. Los backends no admitidos no se mantienen activamente, pero aceptarán contribuciones de la comunidad.
Completos/Incompletos: Los backends completos admiten todas las APIs obligatorias de GraphQL. Los backends incompletos admiten un subconjunto de esas APIs y pueden no tener todas las funciones.
Optimizados: El backend ha pasado por un nivel de optimización para ayudar a mejorar el rendimiento.
Los dos backends que son Admitidos, Completos y Optimizados son:
keyvalue (admitido, completo, optimizado): un backend en memoria no persistente que no requiere infraestructura adicional. También actúa como backend de conformidad para implementaciones de API. Recomendamos comenzar con este si estás empezando con GUAC.
ent (admitido, completo, optimizado) con PostgreSQL: un backend persistente basado en Entity Framework para Go que puede ejecutarse en varios backends SQL. GUAC solo admite ent con PostgreSQL. Otros backends de ent como MySQL y SQLite no están admitidos.
Los otros backends son:
arangoDB (no admitido, incompleto, optimizado): un backend persistente basado en ArangoDB
neo4j/openCypher (no admitido, incompleto): un backend persistente basado en neo4j y openCypher. Este backend debería funcionar con cualquier base de datos que admita consultas openCypher.
keyvalue: Redis (experimental, completo): El backend keyvalue predeterminado, pero usando Redis como almacenamiento.
keyvalue: TiKV (experimental, completo): El backend keyvalue predeterminado, pero usando TiKV como almacenamiento.
Para obtener más información sobre cómo participar en la comunidad, listas de correo y reuniones, consulta nuestra página de comunidad
Para problemas de seguridad o inquietudes sobre el código de conducta, se debe enviar un correo electrónico a [email protected].
La información sobre la gobernanza, incluida la carta del proyecto, se puede encontrar en el repositorio guacsec/governance.