Skip to main content

종속성 그래프에서 종속성을 인식하는 방법

종속성 그래프는 매니페스트 파일을 자동으로 분석합니다. 자동으로 검색할 수 없는 종속성에 대한 데이터를 제출할 수 있습니다.

누가 이 기능을 사용할 수 있나요?

종속성 그래프를 다음 리포지토리 유형에 사용할 수 있습니다.

  • 퍼블릭 리포지토리(기본적으로 설정)
  • 프라이빗 리포지토리
  • 포크

종속성 그래프는 다음 메서드를 사용하여 프로젝트의 종속성을 식별할 수 있습니다.

메서드작동 방식
정적 분석리포지토리에서 매니페스트와 잠금 파일을 구문 분석합니다.
**
          Dependabot 그래프 작업** | 워크플로를 DependabotGitHub Actions 사용하여 종속성 스냅샷 생성 |

| | | | | 자동 제출 | 기본 제공 GitHub Actions 워크플로를 실행하여 빌드 시간 종속성 해결 | | | 종속성 제출 API | 프로그래밍 방식으로 제출하는 종속성 데이터를 허용합니다. |

그래프에 종속성이 있으면 알려진 취약성에 대해 Dependabot alerts 및 Dependabot security updates을 받을 수 있습니다.

정적 분석

종속성 그래프 GitHub 를 사용하도록 설정하면 리포지토리에서 지원되는 매니페스트 파일을 검색하고 각 패키지의 이름과 버전을 구문 분석합니다. 기본 분기에서 지원되는 매니페스트 또는 잠금 파일을 변경하거나 자체 리포지토리에서 종속성이 변경되면 그래프가 업데이트됩니다.

정적 분석은 다음을 식별할 수 있습니다.

  • 매니페스트 또는 잠금 파일에 명시적으로 정의된 직접 종속성
  • 간접 종속성—이러한 직접 종속성의 종속성으로, "전이적 종속성"이라고도 합니다. 단, 매니페스트나 잠금 파일에 정의된 경우에만 해당하며, 빌드 시점에 해결되는 경우는 포함되지 않습니다.

가장 신뢰할 수 있는 그래프의 경우 현재 사용하는 직접 및 간접 종속성의 버전을 정확히 정의하므로 잠금 파일(또는 해당 파일)을 사용해야 합니다. 또한 잠금 파일은 리포지토리의 모든 참가자가 동일한 버전을 사용하므로 코드를 더 쉽게 테스트하고 디버그할 수 있습니다. 또한 잠금 파일이 아닌 매니페스트 파일에서 유추된 간접 종속성은 취약성 검사에서 제외됩니다.

자동 종속성을 제출

일부 에코시스템은 빌드 시 간접 종속성을 확인하므로 정적 분석에서 전체 종속성 트리를 볼 수 없습니다. 리포지토리 GitHub에서 자동 종속성 제출을 활성화하면, 지원되는 에코시스템에 대한 리포지토리의 전이적 종속성을 자동으로 식별합니다. 종속성 그래프에서 지원되는 패키지 에코시스템을(를) 참조하세요.

백그라운드에서 자동으로 종속성을 제출하는 과정에서는 전체 트리를 GitHub Actions 생성하고, 이를 종속성 제출 API을 사용하여 업로드하는 워크플로를 실행합니다. 자동 종속성 제출은 기본적으로 -에서 호스팅되는 실행기에서 실행되며 귀하의 분에 포함됩니다. 필요에 따라 자체 호스팅 실행기에서 실행하거나 대형 러너 중 하나를 선택할 수 있습니다.

자동 종속성 제출을 사용하도록 설정하려면 리포지토리에 대한 자동 종속성 제출을 구성을 참조하세요.

          Dependabot 그래프 작업

          Dependabot 그래프 작업은 특수한 유형의 Dependabot 작업을 사용하여 종속성 스냅샷을 빌드하고 종속성 제출 API에 업로드합니다. 
          Dependabot 그래프 작업은 현재 **Go** 및 **Python** 종속성에 대해 지원됩니다.

지원되는 에코시스템의 Dependabot 경우 그래프 작업은 다음을 제공합니다.

  • 전체 전이적 종속성 커버리지로, Dependabot를 통해 정적 분석이 놓칠 수 있는 간접 종속성의 취약성을 경고할 수 있습니다.
  • 조직 또는 리포지토리 수준에서 구성된 비밀을 통해 Dependabot 프라이빗 레지스트리에 액세스합니다. 자세한 내용은 Dependabot에 대한 개인 레지스트리 액세스 구성을(를) 참조하세요.
  • 구성된 Dependabot 비밀을 통해 액세스할 수 없는 프라이빗 패키지는 실패를 일으키지 않고 종속성 그래프에서 정상적으로 생략됩니다.

이 방법은 자동 종속성 제출과 유사하지만 몇 분 동안 GitHub Actions 요금이 부과되지는 않습니다. 또한 설정한 프라이빗 레지스트리에 대한 조직 전체 구성에 Dependabot액세스할 수도 있습니다.

참고

Dependabot 그래프 작업은 자동 종속성 제출보다 우선합니다. 예를 들어 Python 리포지토리에서 이전에 자동 종속성 제출을 사용한 경우 그래프 작업이 활성화되면 Dependabot 해당 작업이 더 이상 실행되지 않습니다. 유일한 요구 사항은 리포지토리에 종속성 그래프를 사용하도록 설정하는 것입니다.

          종속성 제출 API입니다.

사용자 고유의 종속성 제출 API 스크립트 또는 워크플로에서 호출할 수 있습니다. 이 기능은 다음과 같은 경우에 유용합니다.

  • 잠금 파일에서 검색할 수 없는 전이적 종속성을 제출해야 합니다.
  • 사용자 지정 논리를 만들어야 하거나 외부 CI/CD 시스템을 사용하고 있습니다.

종속성은 스냅샷 형식으로 종속성 제출 API에 제출됩니다. 리포지토리의 현재 상태를 반영하는 커밋 SHA 및 기타 메타데이터와 연결된 종속성 목록입니다.

워크플로에서 API를 GitHub Actions 호출하는 경우 자동으로 종속성을 수집하고 API에 제출하는 미리 만들어진 에코시스템 작업을 사용할 수 있습니다. 그렇지 않으면 사용자 고유의 작업을 작성하거나 외부 시스템에서 API를 호출할 수 있습니다.

제출된 종속성은 종속성 검토에 표시되지만, 조직의 종속성 인사이트에서는 사용할 수 없습니다.

참고

종속성 제출 API 및 종속성 검토 API는 함께 작동합니다. 즉, 종속성 검토 API에는 종속성 제출 API을(를) 통해 제출된 종속성이 포함됩니다.

자세한 내용은 종속성 제출 API 사용을(를) 참조하세요.

우선 순위 지정

리포지토리는 종속성 제출에 여러 메서드를 사용할 수 있으며, 이로 인해 동일한 패키지 매니페스트가 여러 번 검색될 수 있으며, 각 검사의 출력이 다를 수 있습니다. 종속성 그래프는 중복 제거 논리를 사용하여 출력을 구문 분석하여 각 매니페스트 파일에 대해 가장 정확한 정보의 우선 순위를 지정합니다.

종속성 그래프는 다음 우선 순위 규칙을 사용하여 각 매니페스트 파일의 인스턴스를 하나만 표시합니다.

  1.        **사용자 제출**은 일반적으로 아티팩트 빌드 중에 생성되며, 가장 완전한 정보를 포함하고 있기 때문에 가장 높은 우선 순위를 갖습니다.
    
    • 서로 다른 감지기의 수동 스냅샷이 여러 개 있는 경우, 관련자 및 사용된 첫 번째 스냅샷을 기준으로 사전순으로 정렬됩니다.
    • 동일한 감지기를 사용하는 두 개의 관련자가 있는 경우, 해결된 종속성이 병합됩니다. 상관 관계 및 탐지기에 대한 자세한 내용은 종속성 제출에 대한 REST API 엔드포인트을 참조하세요.
  2.        **
           Dependabot 그래프 작업의** 우선 순위는 두 번째로 높습니다. 그래프 작업을 사용할 수 있는 Dependabot 에코시스템(현재 Go 및 Python)의 경우 자동 종속성 제출보다 우선합니다.
    
  3.        **자동 제출** 은 아티팩트 빌드 중에 생성되지만 사용자가 제출하지 않기 때문에 다음 우선 순위를 갖습니다.
    
  4.        **정적 분석 결과**는 다른 데이터를 사용할 수 없는 경우에 사용됩니다.