종속성 그래프는 다음 메서드를 사용하여 프로젝트의 종속성을 식별할 수 있습니다.
| 메서드 | 작동 방식 |
|---|---|
| 정적 분석 | 리포지토리에서 매니페스트와 잠금 파일을 구문 분석합니다. |
| 자동 제출 | 기본 제공 GitHub Actions 워크플로를 실행하여 빌드 시 종속성을 해결합니다. |
| 종속성 제출 API | 프로그래밍 방식으로 제출하는 종속성 데이터를 허용합니다. |
그래프에 종속성이 있으면 알려진 취약성에 대해 Dependabot alerts 및 Dependabot security updates를 받을 수 있습니다.
정적 분석
종속성 그래프를 사용하도록 설정하면 GitHub는 리포지토리에서 지원되는 매니페스트 파일을 검색하고 각 패키지의 이름과 버전을 구문 분석합니다. 기본 분기.
정적 분석은 다음을 식별할 수 있습니다.
- 매니페스트 또는 잠금 파일에 명시적으로 정의된 직접 종속성
- 간접 종속성—"전이적 종속성"이라고도 하는 직접 종속성의 종속성으로, 매니페스트 또는 잠금 파일에 정의된 경우에만 포함되며, 빌드 시 해결되는 경우는 제외됩니다.
가장 신뢰할 수 있는 그래프의 경우 현재 사용하는 직접 및 간접 종속성의 버전을 정확히 정의하므로 잠금 파일(또는 해당 파일)을 사용해야 합니다. 또한 잠금 파일은 리포지토리의 모든 참가자가 동일한 버전을 사용하므로 코드를 더 쉽게 테스트하고 디버그할 수 있습니다.
자동 종속성을 제출
일부 에코시스템은 빌드 시 간접 종속성을 확인하므로 정적 분석에서 전체 종속성 트리를 볼 수 없습니다. 리포지토리에 대해 자동 종속성 제출을 사용하도록 설정하면 GitHub는 지원되는 에코시스템에 대한 리포지토리의 전이적 종속성을 자동으로 식별합니다. AUTOTITLE을(를) 참조하세요.
백그라운드에서 자동 종속성 제출은 전체 트리를 생성하고 종속성 제출 API를 사용하여 업로드하는 GitHub Actions 워크플로를 실행합니다.
자동 종속성 제출을 사용하도록 설정하려면 AUTOTITLE을 참조하세요.
종속성 제출 API
사용자 고유의 스크립트 또는 워크플로에서 종속성 제출 API를 호출할 수 있습니다. 이 기능은 다음과 같은 경우에 유용합니다.
- 잠금 파일에서 검색할 수 없는 전이적 종속성을 제출해야 합니다.
- 사용자 지정 논리를 만들어야 하거나 외부 CI/CD 시스템을 사용하고 있습니다.
종속성은 종속성 제출 API에 스냅샷 형식으로 제출됩니다. 리포지토리의 현재 상태를 반영하는 커밋 SHA 및 기타 메타데이터와 연결된 종속성 목록입니다.
GitHub Actions 워크플로에서 API를 호출하는 경우 자동으로 종속성을 수집하고 API에 제출하는 미리 만들어진 에코시스템 작업을 사용할 수 있습니다. 그렇지 않으면 사용자 고유의 작업을 작성하거나 외부 시스템에서 API를 호출할 수 있습니다.
제출된 종속성은 종속성 검토에 표시되지만, 조직의 종속성 인사이트에서는 사용할 수 없습니다.
참고 항목
종속성 제출 API 및 종속성 검토 API는 함께 작동합니다. 즉, 종속성 검토 API에는 종속성 제출 API을(를) 통해 제출된 종속성이 포함됩니다.
자세한 내용은 AUTOTITLE을(를) 참조하세요.
우선 순위 지정
리포지토리는 종속성 제출에 여러 메서드를 사용할 수 있으며, 이로 인해 동일한 패키지 매니페스트가 여러 번 검색될 수 있으며, 각 검사의 출력이 다를 수 있습니다. 종속성 그래프는 중복 제거 논리를 사용하여 출력을 구문 분석하여 각 매니페스트 파일에 대해 가장 정확한 정보의 우선 순위를 지정합니다.
종속성 그래프는 다음 우선 순위 규칙을 사용하여 각 매니페스트 파일의 인스턴스를 하나만 표시합니다.
- 사용자 제출은 일반적으로 아티팩트 빌드 중에 생성되며, 가장 완전한 정보를 포함하고 있기 때문에 가장 높은 우선 순위를 갖습니다.
- 서로 다른 감지기의 수동 스냅샷이 여러 개 있는 경우, 관련자 및 사용된 첫 번째 스냅샷을 기준으로 사전순으로 정렬됩니다.
- 동일한 감지기를 사용하는 두 개의 관련자가 있는 경우, 해결된 종속성이 병합됩니다. 관련자 및 감지기에 대한 자세한 내용은 AUTOTITLE을(를) 참조하세요.
- 자동 제출은 아티팩트 빌드 중에 생성되지만 사용자가 제출하지는 않기 때문에 두 번째로 높은 우선 순위를 갖습니다.
- 정적 분석 결과는 다른 데이터를 사용할 수 없는 경우에 사용됩니다.