
Agrège les métadonnées de sécurité de la chaîne d'approvisionnement logicielle (SBOMs, attestations, vulnérabilités) dans une base de données graphe interrogable pour l'audit, la politique et la gestion des risques.
Remarque : GUAC est en cours de développement actif – si vous souhaitez contribuer, veuillez consulter le guide du contributeur. GUAC est un projet en incubation de l'OpenSSF sous l'égide du Supply Chain Integrity WG.
Graph for Understanding Artifact Composition (GUAC) agrège les métadonnées de sécurité logicielle dans une base de données graphe haute fidélité—normalisant les identités des entités et cartographiant les relations standards entre elles. L'interrogation de ce graphe peut conduire à des résultats organisationnels de plus haut niveau tels que l'audit, la politique, la gestion des risques, et même l'assistance aux développeurs.
Conceptuellement, GUAC occupe la couche « agrégation et synthèse » du modèle logique de transparence de la chaîne d'approvisionnement logicielle :

Quelques exemples de questions auxquelles GUAC répond :

Notre documentation est un bon point de départ.
Nous avons divers cas d'utilisation de démonstration que vous pouvez consulter.
Démarrage des services GUAC avec notre guide de démarrage rapide docker compose.
Le dépôt fournit une configuration .devcontainer
qui met en place la pile GUAC complète (GraphQL, REST, collectsub,
ingestor, NATS et les collecteurs deps_dev / osv / ClearlyDefined)
localement sur Docker, adossée à l'image de version GUAC publiée. Ouvrez
le dépôt dans VS Code avec l'extension Dev Containers
et sélectionnez « Reopen in Container » — le terrain de jeu GraphQL est redirigé
vers le port 8080 et l'API REST vers 8081. Fonctionne également avec JetBrains
Gateway et DevPod.
Toute la documentation de GUAC se trouve sur docs.guac.sh, reposant sur le dépôt github docs suivant.
Voici un aperçu de l'architecture de GUAC :

Pour une vue détaillée et une explication des composants de la bêta de GUAC, veuillez consulter comment GUAC fonctionne.
Notez que GUAC utilise des normes d'identifiants logiciels pour aider à lier les métadonnées ensemble. Cependant, ces identifiants ne sont pas toujours disponibles et des heuristiques doivent être utilisées pour les lier. Par conséquent, des cas limites non traités et des erreurs peuvent survenir lors de l'ingestion des données. Nous vous serions reconnaissants de créer un problème de qualité des données si vous rencontrez des erreurs ou des bugs lors de l'ingestion.
GUAC prend en charge plusieurs backends derrière une couche d'abstraction logicielle. L'API GraphQL est toujours la même et les clients ne devraient pas être affectés par le backend utilisé. Les backends sont catégorisés en :
Supporté/Non supporté : Les backends supportés sont ceux pour lesquels le projet GUAC s'engage à effectuer une maintenance active. Les backends non supportés ne sont pas activement maintenus mais accepteront les contributions de la communauté.
Complet/Incomplet : Les backends complets prennent en charge toutes les API GraphQL obligatoires. Les backends incomplets prennent en charge un sous-ensemble de ces API et peuvent ne pas être complets en termes de fonctionnalités.
Optimisé : Le backend a subi un niveau d'optimisation pour aider à améliorer les performances.
Les deux backends qui sont Supportés, Complets et Optimisés sont :
keyvalue (supporté, complet, optimisé) : un backend en mémoire non persistant qui ne nécessite aucune infrastructure supplémentaire. Il sert également de backend de conformité pour les implémentations d'API. Nous recommandons de commencer par celui-ci si vous débutez avec GUAC !
ent (supporté, complet, optimisé) avec PostgreSQL : un backend persistant basé sur Entity Framework for Go qui peut fonctionner sur divers backends SQL. GUAC ne prend en charge que ent avec PostgreSQL. Les autres backends ent tels que MySQL et SQLite ne sont pas supportés.
Les autres backends sont :
arangoDB (non supporté, incomplet, optimisé) : un backend persistant basé sur ArangoDB
neo4j/openCypher (non supporté, incomplet) : un backend persistant basé sur neo4j et openCypher. Ce backend devrait fonctionner avec toute base de données prenant en charge les requêtes openCypher.
keyvalue : Redis (expérimental, complet) : le backend keyvalue par défaut, mais utilisant Redis comme stockage.
keyvalue : TiKV (expérimental, complet) : le backend keyvalue par défaut, mais utilisant TiKV comme stockage.
Pour plus d'informations sur la façon de s'impliquer dans la communauté, les listes de diffusion et les réunions, veuillez consulter notre page communautaire
Pour les problèmes de sécurité ou les préoccupations liées au code de conduite, un courriel doit être envoyé à [email protected].
Les informations sur la gouvernance, y compris la charte du projet, se trouvent dans le dépôt guacsec/governance.