Skip to main content

Enterprise Server 3.15 은(는) 현재 릴리스 후보로 제공됩니다.

종속성 검토 정보

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

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

GitHub Advanced Security을(를) 사용하도록 설정된 조직 소유 리포지토리

종속성 검토 정보

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

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

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

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

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

종속성 검토를 구성하는 방법에 대한 자세한 내용은 "종속성 검토 구성"을(를) 참조하세요.

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

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

GitHub Enterprise Server에서 사용할 수 있는 공급망에 대한 자세한 내용은 "공급망 보안 정보"을(를) 참조하세요.

종속성 검토 사용

종속성 그래프를 사용하도록 설정하면 종속성 검토 기능을 사용할 수 있게 됩니다. 자세한 내용은 “엔터프라이즈에 대해 종속성 그래프 사용”을 참조하세요.

종속성 검토 적용

이 작업은 모든 리포지토리에도 사용할 수 있습니다.

조직 소유자는 조직의 리포지토리에서 종속성 검토 작업을(를) 사용하도록 적용하여 대규모로 종속성 검토를 롤아웃할 수 있습니다. 여기에는 종속성 검토 작업을(를) 필수 워크플로로 설정하는 리포지토리 규칙 집합이 포함됩니다. 즉, 워크플로가 모든 필수 검사를 통과한 후에만 끌어오기 요청을 병합할 수 있습니다. 자세한 정보는 "조직 전체에서 종속성 검토 적용"을(를) 참조하세요.

엔터프라이즈 소유자 및 리포지토리에 대한 관리자 액세스가 있는 사용자는 자기 엔터프라이즈 및 리포지토리에 각각 종속성 검토 작업을(를) 추가할 수 있습니다.

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

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

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

이 작업은 종속성 검토 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 워크플로에서 모든 종속성 제출 작업을 실행해야 합니다. 이렇게 하면 실행 순서를 제어할 수 있으며 종속성 검토가 항상 작동합니다.
  • 종속성 검토 작업을(를) 별도로 실행하도록 선택하는 경우 다음을 수행해야 합니다.
    • retry-on-snapshot-warnings을(를) true(으)로 설정합니다.
    • 가장 오래 실행되는 종속성 제출 작업의 일반적인 실행 시간(초)을 약간 초과하도록 retry-on-snapshot-warnings-timeout을(를) 설정합니다.

종속성 제출 API 및 종속성 검토 API에 대한 직접 API 액세스 사용

GitHub Actions을(를) 사용하지 않고 코드가 종속성 검토 API 및 종속성 제출 API에 직접 액세스하는 경우:

  • 먼저 종속성 제출 API을(를) 호출하는 코드를 실행한 다음에 종속성 검토 API를 호출하는 코드를 실행해야 합니다.
  • 종속성 제출 API 및 종속성 검토 API에 대한 코드를 병렬로 실행하도록 선택하는 경우 다시 시도 논리를 구현하고 다음 사항에 유의해야 합니다.
    • 비교의 양쪽에 누락된 스냅샷이 있는 경우 이에 대한 설명이 x-github-dependency-graph-snapshot-warnings 헤더에 베이스64로 인코딩된 문자열로 표시됩니다. 따라서 헤더가 비어 있지 않은 경우 다시 시도하는 것이 좋습니다.
    • 지수 백오프 다시 시도를 사용하여 다시 시도 논리 구현
    • 종속성 제출 코드의 일반적인 실행 시간을 고려하여 적절한 횟수의 다시 시도를 구현합니다.

추가 참고 자료