CLI를 사용하여 Snyk Code로 소스 코드 스캔

Snyk CLI를 사용하여 리포지토리 소스 코드를 테스트할 때 다음을 수행할 수 있습니다.

폴더를 테스트하면 모든 하위 폴더와 파일도 테스트됩니다. 단일 파일을 테스트하려면 현재 디렉토리에 있는 파일의 파일 이름을 지정하거나 다른 디렉토리에 있는 파일의 절대 경로를 지정하십시오.

bash에서는 경로 앞에 $PWD를 붙여 상대 경로로 파일을 테스트할 수도 있습니다. 예를 들어 snyk code test $PWD/*path/to/file*입니다.

Snyk Code CLI 테스트에서 특정 디렉토리 또는 파일을 제외하려면 다음 수단을 사용할 수 있습니다.

루트 폴더에서 리포지토리 테스트

리포지토리 폴더를 테스트하려면 터미널에 다음을 입력합니다.

snyk code test

루트 폴더에서 리포지토리를 테스트하기 위해 snyk code test 명령을 사용하는 데 추가 옵션은 필요하지 않습니다.

Snyk Code는 폴더를 테스트하고 터미널에 테스트 결과를 표시합니다.

예를 들어 루트 폴더에서 snyk-goof 리포지토리를 테스트하려면 먼저 디렉토리를 리포지토리의 루트 폴더로 변경합니다. 그런 다음 다음을 입력합니다.

snyk code test

Snyk Code는 snyk-goof 리포지토리를 테스트하고 발견된 취약점 문제를 표시합니다.

Snyk Code CLI 테스트 결과 예시
Snyk Code CLI 테스트 결과 예시

다른 위치에서 리포지토리 테스트

다른 폴더에서 리포지토리를 테스트하려면 터미널에 다음을 입력합니다.

path/to/folder는 CLI를 사용하여 Snyk Code로 테스트하려는 리포지토리의 전체 경로입니다.

예를 들어 다른 디렉토리에서 snyk-goof 리포지토리를 테스트하려면 다음을 입력합니다.

Snyk Code CLI 결과 게시

circle-info

Snyk은 버전 v1.1300.0+ 이상을 사용할 것을 권장합니다. 최소 지원 CLI 버전은 v1.1297.0입니다.

통합을 사용하거나 사용하지 않고 Snyk Code 결과를 Snyk 프로젝트에 게시할 수 있습니다.

이를 위해 GitHub 또는 GitLab과 같은 SCM 통합에 연결할 필요가 없습니다. Snyk CLI에서 업로드한 결과와 직접 작동합니다.

  • Snyk 웹 UI와 동기화: CLI에서 프로젝트를 생성한 후 Snyk 웹 인터페이스에서 관리할 수 있습니다. UI에서 문제를 Ignored로 표시하면 해당 프로젝트에 대한 향후 CLI 스캔에서 다시 보고되지 않습니다.

  • 프로젝트가 존재하지 않는 경우 Snyk은 --project-name 옵션에 제공된 값으로 새 CLI 프로젝트를 자동으로 생성합니다.

  • 프로젝트가 이미 존재하는 경우 Snyk은 최신 스캔을 동일한 프로젝트에 새 스냅샷으로 추가합니다. 이를 통해 시간 경과에 따른 보안 기록을 추적할 수 있습니다.

Snyk Code 프로젝트에 CLI 결과 게시

CLI를 통해 Snyk Code를 사용하면 로컬 코드의 테스트 결과를 Snyk 웹 UI의 Snyk 프로젝트에 게시할 수 있습니다. 이 프로젝트의 향후 CLI 테스트는 웹 UI에서 무시된 문제를 존중합니다.

이를 통해 Snyk Code를 차단 CI/CD 게이트로 사용하여 메인 브랜치 수준에서 빌드를 테스트하고 차단한 다음 개발자가 웹 UI에서 결과를 검토하고 새로 도입된 취약점을 수정하거나 관련 없는 취약점을 무시하도록 할 수 있습니다.

터미널에서 다음 명령을 입력합니다.

이 옵션을 사용한 후 Snyk에 로그인하고 프로젝트를 보고 스냅샷을 확인하십시오.

Snyk Code CLI 결과 게시 명령

그림과 같이 --report 옵션과 함께 snyk code test 명령을 실행하면 결과가 게시된 Snyk Code 프로젝트의 URL과 함께 터미널 창에 결과가 반환됩니다. 다음 스크린샷을 참조하십시오.

--report 옵션을 사용한 Snyk Code 테스트 결과

옵션에 제공된 값에 대해 CLI로 생성된 Snyk Code 프로젝트가 아직 존재하지 않는 경우 Snyk CLI는 새 프로젝트를 생성합니다. CLI를 사용하여 생성된 프로젝트가 이미 존재하는 경우 동일한 프로젝트 아래에 새 스냅샷이 생성됩니다.

Snyk 웹 UI에서 프로젝트를 더 쉽게 해석할 수 있도록 추가 명령을 사용하여 대상 이름과 Git 브랜치와 같은 대상 참조를 지정할 수 있습니다. 다음 명령은 <TARGET_NAME>이라는 대상 아래에 <PROJECT_NAME>이라는 기존 프로젝트를 생성하거나 업로드합니다.

다음 명령은 <TARGET_NAME>이라는 대상 아래에 <PROJECT_NAME>이라는 기존 프로젝트를 생성하거나 업로드하고 "$(git branch --show-current)" 브랜치 이름으로 그룹화합니다.

브랜치별로 그룹화된 코드 분석 프로젝트

터미널에서 직접 인라인 문서를 보려면 snyk code test 명령과 함께 --help 플래그를 사용할 수 있습니다.

Snyk이 CLI 스캔을 구성하는 방법

Snyk은 명령에 제공한 --project-name 또는 --target-name을 사용하여 업데이트할 프로젝트를 식별합니다.

이를 위해 GitHub 또는 GitLab과 같은 SCM 통합에 연결할 필요가 없습니다. Snyk CLI에서 업로드한 결과와 직접 작동합니다.

  • Snyk 웹 UI와 동기화: CLI에서 프로젝트를 생성한 후 Snyk 웹 인터페이스에서 관리할 수 있습니다. UI에서 문제를 Ignored로 표시하면 향후 모든 프로젝트 스캔에서 억제됩니다.

  • 프로젝트가 새 프로젝트인 경우 Snyk은 --project-name 옵션에 제공된 값으로 새 CLI 프로젝트를 자동으로 생성합니다.

  • 프로젝트가 이미 존재하는 경우 Snyk은 최신 스캔을 동일한 프로젝트에 새 스냅샷으로 추가합니다. 이를 통해 시간 경과에 따른 보안 기록을 추적할 수 있습니다.

게시된 Snyk Code CLI 결과 문제 해결

이 오류가 표시될 수 있습니다: There was a problem running Code analysis. The findings for this project may exceed the allowed size limit.

이 오류는 스캔된 프로젝트의 내용이 제한을 초과했음을 나타냅니다. 스캔을 완료하려면 다음 문제 해결 단계를 고려하십시오.

  • 전체 리포지토리 대신 하위 디렉토리를 스캔하여 프로젝트 리포지토리를 분할합니다. 예:

    • 프론트엔드 및 백엔드 디렉토리에 대해 두 개의 프로젝트를 생성하고 별도로 스캔합니다.

    • 각 마이크로서비스에 대해 프로젝트를 생성하고 스캔합니다.

  • .snyk 제외 옵션을 사용하여 스캔 프로세스에서 불필요한 파일을 제외합니다. 예를 들어 스캔에서 테스트 파일을 제외할 수 있습니다.

  • --severity-threshold=high를 사용하여 심각도 임계값을 설정하여 더 중요한 문제에 집중하고 긴급한 문제에 대한 가시성을 확보합니다.

Snyk Code에 대한 CLI 결과 무시

Snyk 웹 UI에서 문제를 무시할 수 있습니다. 무시는 Snyk Code 프로젝트에 CLI 결과를 게시하는 데 사용됩니다.

웹 UI에서 문제 무시

snyk-to-htmlarrow-up-right은 무시된 문제를 존중하지 않습니다. Snyk 웹 UI에서 무시된 모든 항목은 snyk-to-html이 생성하는 보고서에서 무시되지 않습니다.

게시 워크플로의 경우 CLI 결과가 Snyk Code 프로젝트에 게시된 후 다음 명령을 사용할 때 웹 UI에서 무시된 문제가 CLI 테스트에서 무시됩니다.

  • 제공된 --project-name이 웹 UI에 있는 것과 일치한다고 가정합니다.

  • PROJECT_NAME이 있는 프로젝트에 적용된 무시는 다음에 동일한 PROJECT_NAME에 대해 CLI가 실행될 때 문제를 억제합니다.

Last updated