Share via


npm 감사를 사용하여 패키지 취약성 감지 및 수정

Azure DevOps Services

npm 감사 명령은 프로젝트의 철저한 검사를 수행하여 잠재적인 보안 취약성을 식별하고 발견된 문제를 강조 표시하는 자세한 보고서를 생성합니다. 보안 감사를 수행하는 것은 프로젝트의 종속성 내에서 취약성을 인식하고 해결하는 데 중요한 단계입니다. npm 감사 수정 명령은 검색된 취약성을 자동으로 해결하여 안전하지 않은 패키지 버전을 최신 보안 릴리스로 업데이트합니다. 이러한 취약성을 해결하는 것은 데이터 손실, 서비스 중단 및 중요한 정보에 대한 무단 액세스와 같은 잠재적인 문제를 방지하는 데 중요합니다.

Warning

npm 감사를 실행하면 package.json 지정된 모든 패키지의 이름이 공용 레지스트리로 전송됩니다.

로컬로 npm 감사 실행

npm audit 는 피드를 사용하여 인증할 필요 없이 로컬로 실행할 수 있습니다. 이렇게 하면 프로젝트에서 취약성을 검사하고 검색된 보안 문제 및 해당 심각도에 대한 자세한 보고서를 받을 수 있습니다.

검색된 취약성을 해결하려면 실행할 npm audit fix수 있지만 그렇게 하려면 피드로 인증해야 합니다. 이 명령은 안전하지 않은 패키지 버전을 사용 가능한 최신 보안 릴리스로 업데이트합니다.

npm 감사 수정을 실행하면 로컬 프로젝트의 package.json 업데이트하고 package-lock.json 뿐만 아니라 이러한 변경 내용을 연결된 Azure Artifacts 피드와 동기화합니다. 새로 보호된 패키지 버전은 피드에서 자동으로 사용할 수 있습니다.

이 동기화를 통해 동일한 피드를 공유하는 다른 프로젝트도 이러한 업데이트의 이점을 얻을 수 있습니다. 기본 모든 프로젝트에서 일관되고 안전한 패키지 버전 집합을 확보하는 데 도움이 됩니다.

  1. 프로젝트 디렉터리에서 다음 명령을 실행하여 npm 감사를 수행합니다.

    npm audit
    
  2. 취약하지 않은 패키지 버전으로 업그레이드하려면 먼저 피드에 연결되어 있는지 확인한 다음 프로젝트 디렉터리에서 다음 명령을 실행합니다.

    npm audit fix
    

npm 감사 수정을 실행한 후 애플리케이션에 대한 철저한 테스트를 수행하여 업데이트에서 호환성이 손상되는 변경이 발생하지 않았는지 확인합니다. 수정에 주 버전 업데이트가 필요한 경우 패키지의 릴리스 정보를 검토하여 잠재적인 주요 변경 내용을 검토하는 것이 좋습니다. 공용 취약한 종속성이 있는 프라이빗 패키지는 취약성 경고를 수신하지만 npm 감사 수정을 통해 수정을 받지 않습니다.

참고 항목

npm 감사는 npm 설치각 실행과 함께 자동으로 실행되지만 퍼블릭 패키지에 대해서만 작동합니다.

파이프라인에서 npm 감사 실행

Azure Pipelines는 현재 npm 감사를 지원하지 않습니다. 파이프라인에서 일반 npm 감사 명령을 사용하려고 하면 실패합니다. 대신 --registry 인수를 사용하여 npm 감사를 실행하고 피드의 원본 URL을 제공합니다.

  1. Azure DevOps 조직에 로그인한 다음 프로젝트로 이동합니다.

  2. 파이프라인을 선택하고 파이프라인을 선택한 다음 편집을 선택하여 수정합니다.

  3. 파이프라인 정의에서 기호를 + 선택하여 새 작업을 추가합니다.

  4. npm 작업을 검색한 다음 추가를 선택하여 파이프라인에 추가합니다.

  5. 작업의 표시 이름을 입력하고 명령 드롭다운 메뉴에서 사용자 지정선택합니다.

  6. 사용자 지정 명령을 명령 및 인수 텍스트 상자에 붙여넣습니다.

    1. 다음 명령을 사용하여 npm 감사를 수행하고 패키지 취약성을 검색합니다. 자리 표시자를 피드의 원본 URL로 바꿉다.

      audit --registry=<FEED_SOURCE_URL>
      
    2. 취약하지 않은 패키지 버전으로 업그레이드하려면 다음 명령을 사용합니다. 자리 표시자를 피드의 원본 URL로 바꿉다.

    audit fix --registry=<FEED_SOURCE_URL>
    

    A screenshot showing the npm audit task in a classic pipeline.