
소프트웨어 공급망 보안 메타데이터(SBOM, 증명, 취약점)를 감사, 정책 및 위험 관리를 위한 쿼리 가능한 그래프 데이터베이스로 집계합니다.
참고: GUAC는 활발히 개발 중입니다. 기여에 관심이 있으시면 기여자 가이드를 확인해 주세요. GUAC는 공급망 무결성 WG 산하의 OpenSSF 인큐베이팅 프로젝트입니다.
Graph for Understanding Artifact Composition (GUAC)은 소프트웨어 보안 메타데이터를 집계하여 고충실도 그래프 데이터베이스로 변환합니다. 엔티티 식별자를 정규화하고 이들 간의 표준 관계를 매핑합니다. 이 그래프를 쿼리하면 감사, 정책, 위험 관리, 심지어 개발자 지원과 같은 상위 수준의 조직적 결과를 도출할 수 있습니다.
개념적으로 GUAC는 소프트웨어 공급망 투명성 논리 모델의 "집계 및 합성" 계층을 차지합니다.

GUAC으로 답할 수 있는 몇 가지 질문의 예는 다음과 같습니다.

시작하기 좋은 장소는 문서입니다.
다양한 데모 사용 사례를 살펴보실 수 있습니다.
Docker Compose 빠른 시작으로 GUAC 서비스를 시작하세요.
리포지토리에는 전체 GUAC 스택(GraphQL, REST, collectsub, ingestor, NATS, deps_dev / osv / ClearlyDefined 수집기)을 게시된 GUAC 릴리스 이미지를 기반으로 Docker에서 로컬로 실행하는 .devcontainer 설정이 포함되어 있습니다. VS Code에서 Dev Containers 확장을 사용하여 리포지토리를 열고 "Reopen in Container"를 선택하면 GraphQL 플레이그라운드가 8080 포트로, REST API가 8081 포트로 포워딩됩니다. JetBrains Gateway 및 DevPod에서도 작동합니다.
GUAC에 대한 모든 문서는 docs.guac.sh에 있으며, 다음 문서 GitHub 리포지토리로 지원됩니다.
다음은 GUAC의 아키텍처 개요입니다.

GUAC 베타 구성 요소에 대한 심층적인 설명과 내용은 GUAC 작동 방식을 참조하세요.
GUAC는 소프트웨어 식별자 표준을 사용하여 메타데이터를 서로 연결하는 데 도움을 줍니다. 그러나 이러한 식별자가 항상 제공되는 것은 아니며, 이를 연결하기 위해 휴리스틱을 사용해야 합니다. 따라서 데이터 수집 시 처리되지 않은 예외 케이스나 오류가 발생할 수 있습니다. 수집 중 오류나 버그가 발생하면 데이터 품질 이슈를 생성해 주시면 감사하겠습니다.
GUAC는 소프트웨어 추상화 계층 뒤에서 여러 백엔드를 지원합니다. GraphQL API는 항상 동일하며, 클라이언트는 사용 중인 백엔드의 영향을 받지 않아야 합니다. 백엔드는 다음과 같이 분류됩니다.
지원/미지원: 지원 백엔드는 GUAC 프로젝트가 적극적으로 유지 관리하기로 약속한 백엔드입니다. 미지원 백엔드는 적극적으로 유지관리되지 않지만 커뮤니티 기여는 수용합니다.
완전/불완전: 완전 백엔드는 모든 필수 GraphQL API를 지원합니다. 불완전 백엔드는 해당 API의 하위 집합을 지원하며 기능이 완전하지 않을 수 있습니다.
최적화됨: 백엔드는 성능 향상을 위해 최적화 과정을 거쳤습니다.
지원되고, 완전하며, 최적화된 두 가지 백엔드는 다음과 같습니다.
keyvalue (지원, 완전, 최적화됨): 추가 인프라가 필요 없는 비영구적인 인메모리 백엔드입니다. API 구현을 위한 적합성 백엔드 역할도 합니다. GUAC를 처음 시작하는 경우 이 백엔드부터 시작하는 것을 권장합니다.
ent (지원, 완전, 최적화됨) + PostgreSQL: Go용 엔티티 프레임워크 기반의 영구 백엔드로, 다양한 SQL 백엔드에서 실행 가능합니다. GUAC는 ent + PostgreSQL만 지원합니다. MySQL 및 SQLite와 같은 다른 ent 백엔드는 지원되지 않습니다.
다른 백엔드는 다음과 같습니다.
arangoDB (미지원, 불완전, 최적화됨): ArangoDB 기반의 영구 백엔드
neo4j/openCypher (미지원, 불완전): neo4j 및 openCypher 기반의 영구 백엔드. 이 백엔드는 openCypher 쿼리를 지원하는 모든 데이터베이스에서 작동해야 합니다.
keyvalue: Redis (실험적, 완전): 기본 keyvalue 백엔드이지만 Redis를 스토리지로 사용합니다.
keyvalue: TiKV (실험적, 완전): 기본 keyvalue 백엔드이지만 TiKV를 스토리지로 사용합니다.
커뮤니티 참여 방법, 메일링 리스트 및 회의에 대한 자세한 내용은 커뮤니티 페이지를 참조하세요.
보안 문제 또는 행동 강령 관련 문의는 [email protected]로 이메일을 보내주시기 바랍니다.
프로젝트 헌장을 포함한 거버넌스에 대한 정보는 guacsec/governance 리포지토리에서 확인할 수 있습니다.