Skip to main content

종속성 검토 정보

종속성 검토를 사용하면 환경에 도입하기 전에 안전하지 않은 종속성을 파악할 수 있으며 라이선스, 종속 항목 및 종속성 연령에 대한 정보를 제공합니다.

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

다음 리포지토리 유형에 대한 종속성 검토가 가능합니다.

  • GitHub.com에 대한 퍼블릭 리포지토리
  • GitHub Code Security를 사용하도록 설정된 GitHub Team의 조직 소유 리포지토리

종속성 검토 정보

종속성 검토는 모든 끌어오기 요청에서 종속성 변경 내용과 이러한 변경 내용의 보안 영향을 이해하는 데 도움이 됩니다. 끌어오기 요청의 “변경된 파일” 탭에서 서식 있는 Diff로 종속성 변경 내용을 쉽게 이해할 수 있습니다. 종속성 검토는 다음을 알려줍니다.

  • 릴리스 날짜와 함께 추가, 제거 또는 업데이트된 종속성
  • 이러한 구성 요소를 사용하는 프로젝트 수
  • 이러한 종속성에 대한 취약성 데이터

패키지 매니페스트 또는 잠금 파일에 변경 사항이 포함된 풀 요청의 경우, 종속성 검토를 표시하여 변경된 내용을 확인할 수 있습니다. 종속성 검토에는 잠금 파일의 간접 종속성에 대한 변경 내용 세부 정보가 포함되며, 추가되거나 업데이트된 종속성 중 알려진 취약성이 포함되어 있는지 여부를 알려줍니다.

참고

"종속성 검토 작업"은(는) GitHub Actions 컨텍스트에서 풀 요청 내 차이점을 보고할 수 있는 특정 작업을 의미하며, GitHub Actions workflow에 적용 메커니즘을 추가할 수 있습니다. 자세한 내용은 본 문서 뒷부분의 종속성 검토 작업을 참조하세요.

경우에 따라 매니페스트에서 하나의 종속성 버전을 업데이트하고 끌어오기 요청을 생성하려고 할 수 있습니다. 그러나 업데이트된 이 직접 종속성 버전에도 업데이트된 종속성이 있는 경우 끌어오기 요청에 예상보다 많은 변경 내용이 있을 수 있습니다. 각 매니페스트 및 잠금 파일에 대한 종속성 검토는 변경된 내용과 새 종속성 버전에 알려진 취약성이 포함되어 있는지 여부를 쉽게 확인할 수 있는 방법을 제공합니다.

끌어오기 요청에서 종속성 검토를 확인하고 취약한 것으로 플래그가 지정된 종속성을 변경하면 취약성이 프로젝트에 추가되는 것을 방지할 수 있습니다. 종속성 검토의 작동 방식에 대한 자세한 내용은 끌어오기 요청에서 종속성 변경 검토을 참조하세요.

Dependabot alerts는 종속성에 이미 있는 취약성을 발견하지만, 나중에 문제를 해결하는 것보다 잠재적인 문제가 발생하지 않도록 하는 것이 훨씬 낫습니다. Dependabot alerts에 대한 자세한 내용은 Dependabot 경고 정보을 참조하세요.

종속성 검토는 종속성 그래프와 동일한 언어 및 패키지 관리 에코시스템을 지원합니다. 자세한 내용은 종속성 그래프에서 지원되는 패키지 에코시스템을(를) 참조하세요.

GitHub에서 사용할 수 있는 공급망 기능에 대한 자세한 내용은 공급망 보안 정보을 참조하세요.

종속성 검토 사용

종속성 그래프를 사용하도록 설정하면 종속성 검토 기능을 사용할 수 있게 됩니다. 자세한 내용은 를 참조하세요.

종속성 검토 작업 정보

"종속성 검토 작업"은 GitHub Actions 컨텍스트 내에서 끌어오기 요청의 차이점을 보고할 수 있는 특정 작업을 나타냅니다. dependency-review-action을 참조하세요. 리포지토리에서 을(를) 사용하여 끌어오기 요청에 대한 종속성 검토를 적용할 수 있습니다. 이 작업은 끌어오기 요청의 패키지 버전 변경에 의해 도입된 취약한 종속성 버전을 검사하고 관련 보안 취약성에 대해 경고합니다. 이를 통해 끌어오기 요청의 변경 내용을 보다 잘 파악할 수 있으며 취약성이 리포지토리에 추가되지 않도록 방지할 수 있습니다.

종속성 검토 작업을 사용하는 workflow 실행의 스크린샷.

기본적으로 종속성 검토 작업 검사는 취약한 패키지를 검색하는 경우 실패합니다. 리포지토리 소유자가 종속성 검토 검사를 통과해야 하는 경우 실패한 검사는 끌어오기 요청이 병합되지 않도록 차단합니다. 자세한 내용은 보호된 분기 정보을(를) 참조하세요.

이 작업은 모든 퍼블릭 리포지토리와 프라이빗 리포지토리 중 GitHub Code Security or GitHub Advanced Security가 활성화된 리포지토리에서 사용할 수 있습니다.

데이터 재사용 가능성.의존성-검토.조직-레벨-강제 %}

이 작업은 기본 커밋과 헤드 커밋 간 종속성 변경 사항의 차이를 종속성 검토 REST API를 사용하여 가져옵니다. 리포지토리에서 어떤 두 커밋 간에도 종속성 검토 API를 사용하면 취약성 데이터를 포함한 종속성 변경 사항의 차이를 가져올 수 있습니다. 자세한 내용은 종속성 검토에 대한 REST API 엔드포인트을(를) 참조하세요. 이 작업은 종속성 제출 API을 통해 제출된 종속성도 고려합니다. 종속성 제출 API에 대한 자세한 내용은 종속성 제출 API 사용을(를) 참조하세요.

참고

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

사용자는 요구 사항에 맞게 종속성 검토 작업을 구성할 수 있습니다. 예를 들어 작업이 실패할 심각도 수준을 지정하거나 라이선스가 검사할 허용 또는 거부 목록을 설정할 수 있습니다. 자세한 내용은 종속성 검토 작업 구성을(를) 참조하세요.

종속성 검토 API와 종속성 제출 API를 함께 사용하는 모범 사례

종속성 검토 API와 종속성 검토 작업은(는) 풀 요청에서의 종속성 변경 사항을 대상 분기의 헤드 커밋에 있는 종속성 상태와 비교하는 방식으로 작동합니다.

GitHub에서 지원하는 에코시스템 중 하나에서 정적으로 정의된 종속성에만 리포지토리가 의존하는 경우, 종속성 검토 API와 종속성 검토 작업은(는) 일관되게 작동합니다.

그러나 빌드 중에 종속성을 스캔한 다음 해당 결과를 종속성 제출 API에 업로드하려는 경우도 있을 수 있습니다. 이 경우, 종속성 검토 API와 종속성 제출 API의 프로세스를 실행할 때 경쟁 상태가 발생하지 않도록 하기 위해 따라야 할 몇 가지 모범 사례가 있습니다. 경쟁 상태는 데이터 누락으로 이어질 수 있습니다.

적용해야 할 모범 사례는 GitHub Actions를 사용하여 종속성 제출 API 및 종속성 검토 API에 액세스하는지 여부, 또는 API에 직접 액세스하는지 여부에 따라 달라집니다.

GitHub Actions를 사용하여 종속성 제출 API 및 종속성 검토 API에 액세스하는 경우.

GitHub Actions를 사용하여 종속성 제출 API 또는 종속성 검토 API에 액세스하는 경우 다음을 수행하세요.

  • 모든 종속성 제출 작업을 종속성 검토 작업과 동일한 GitHub Actions workflow에서 실행하세요. 이렇게 하면 실행 순서를 제어할 수 있으며, 종속성 검토가 항상 정상적으로 작동하도록 보장할 수 있습니다.
  • 별도로 종속성 검토 작업을(를) 실행하도록 선택하는 경우 다음을 수행해야 합니다. * retry-on-snapshot-warningstrue로 설정합니다.
    • retry-on-snapshot-warnings-timeout을 가장 오래 실행되는 종속성 제출 작업의 일반적인 실행 시간(초)보다 약간 길게 설정하세요.

종속성 제출 API 및 종속성 검토 API에 직접 API 액세스를 사용하는 경우.

GitHub Actions를 사용하지 않고, 코드가 종속성 제출 API 및 종속성 검토 API에 대한 직접 액세스에 의존하는 경우 다음을 수행하세요.

  • 먼저 종속성 제출 API을(를) 호출하는 코드를 실행한 다음, 이후에 종속성 검토 API를 호출하는 코드를 실행하세요.
  • 종속성 제출 API과(와) 종속성 검토 API를 호출하는 코드를 병렬로 실행하도록 선택하는 경우, 재시도 로직을 구현하고 다음 사항을 유의하세요.
    • 비교의 어느 한쪽이라도 스냅샷이 누락된 경우, base64로 인코딩된 문자열 형태로 x-github-dependency-graph-snapshot-warnings 헤더에 그에 대한 설명이 표시됩니다. 따라서 해당 헤더가 비어 있지 않은 경우 재시도를 고려해야 합니다.
    • 지수 백오프를 사용하는 재시도 로직을 구현하세요.
    • 종속성 제출 코드가 일반적으로 실행되는 시간을 고려하여 합리적인 재시도 횟수를 구현하세요.

추가 읽기

  •         [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/customizing-your-dependency-review-action-configuration)