# 종속성 검토

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

## 종속성 검토 정보

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

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

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

> \[!NOTE]
> "종속성 검토 작업"는 컨텍스트 내에서 GitHub Actions 끌어오기 요청의 차이점을 보고하고 워크플로에 적용 메커니즘을 추가할 수 있는 GitHub Actions 특정 작업을 나타냅니다. 자세한 내용은 이 문서 뒷부분의 [The 종속성 검토 작업](#about-the-dependency-review-action)을 참조하세요.

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

끌어오기 요청에서 종속성 검토를 확인하고 취약한 것으로 플래그가 지정된 종속성을 변경하면 취약성이 프로젝트에 추가되는 것을 방지할 수 있습니다. 종속성 검토의 작동 방식에 대한 자세한 내용은 [끌어오기 요청에서 종속성 변경 검토](/ko/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request)을 참조하세요.

Dependabot alerts 에서는 종속성에 이미 있는 취약성을 찾을 수 있지만 나중에 문제를 해결하는 것보다 잠재적인 문제가 발생하지 않도록 하는 것이 훨씬 낫습니다.
Dependabot alerts에 대한 자세한 내용은 [Dependabot 경고](/ko/code-security/concepts/supply-chain-security/dependabot-alerts#dependabot-alerts-for-vulnerable-dependencies)을(를) 참조하세요.

종속성 검토는 종속성 그래프와 동일한 언어 및 패키지 관리 에코시스템을 지원합니다. 자세한 내용은 [종속성 그래프에서 지원되는 패키지 에코시스템](/ko/code-security/reference/supply-chain-security/dependency-graph-supported-package-ecosystems#supported-package-ecosystems)을(를) 참조하세요.

사용 가능한 공급망 기능에 대한 자세한 내용은 GitHub을 [](/ko/code-security/concepts/supply-chain-security/supply-chain-security)참조하세요.

## 종속성 검토 사용

종속성 그래프를 사용하도록 설정하면 종속성 검토 기능을 사용할 수 있게 됩니다. 자세한 내용은 [종속성 그래프 사용 설정](/ko/code-security/how-tos/secure-your-supply-chain/secure-your-dependencies/enable-dependency-graph#enabling-the-dependency-graph-for-a-repository)을(를) 참조하세요.

## 종속성 검토 작업에 대한 정보

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

![종속성 검토 작업을 사용하는 workflow 실행의 스크린샷.](/assets/images/help/graphs/dependency-review-action.png)

기본적으로 종속성 검토 작업 검사는 취약한 패키지를 검색하는 경우 실패합니다. 리포지토리 소유자가 종속성 검토 검사를 통과해야 하는 경우 실패한 검사는 끌어오기 요청이 병합되지 않도록 차단합니다. 자세한 내용은 [보호된 분기 정보](/ko/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-status-checks-before-merging)을(를) 참조하세요.

이 작업은 모든 공개 리포지토리와 이 활성화된 비공개 GitHub Code Security or GitHub Advanced Security리포지토리에서 사용할 수 있습니다.

조직 소유자는 조직 내 리포지토리 전반에 걸쳐 종속성 검토 작업 사용을 강제하여 종속성 검토를 대규모로 확대 적용할 수 있습니다. 여기에는 필요한 워크플로로 설정할 종속성 검토 작업 리포지토리 규칙 집합의 사용이 포함됩니다. 즉, 워크플로가 모든 필수 검사를 통과한 후에만 끌어오기 요청을 병합할 수 있습니다. 자세한 내용은 [조직 전반에서 종속성 검토를 강제하기](/ko/code-security/how-tos/secure-at-scale/configure-organization-security/configure-specific-tools/enforce-dependency-review)을(를) 참조하세요.

이 작업은 기본 커밋과 헤드 커밋 간 종속성 변경 사항의 차이를 종속성 검토 REST API를 사용하여 가져옵니다. 리포지토리에서 어떤 두 커밋 간에도 종속성 검토 API를 사용하면 취약성 데이터를 포함한 종속성 변경 사항의 차이를 가져올 수 있습니다. 자세한 내용은 [종속성 검토에 대한 REST API 엔드포인트](/ko/rest/dependency-graph/dependency-review)을(를) 참조하세요. 이 작업은 또한 종속성 제출 API를 통해 제출된 종속성도 고려합니다.
종속성 제출 API에 대한 자세한 내용은 [종속성 제출 API 사용](/ko/code-security/how-tos/secure-your-supply-chain/secure-your-dependencies/use-dependency-submission-api)을(를) 참조하세요.

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

종속성 검토 작업을(를) 필요에 더 잘 맞도록 구성할 수 있습니다. 예를 들어 작업이 실패할 심각도 수준을 지정하거나 검사할 라이선스에 대한 허용 또는 거부 목록을 설정할 수 있습니다. 자세한 내용은 [종속성 검토 작업 구성](/ko/code-security/how-tos/secure-your-supply-chain/manage-your-dependency-security/configure-dependency-review-action)을(를) 참조하세요.

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

## 추가 읽기

* [종속성 검토 작업 구성 사용자 지정](/ko/code-security/tutorials/secure-your-dependencies/customize-dependency-review-action)