Snyk 오픈소스 특정 CI/CD 전략

이러한 전략은 Snyk SCA(소프트웨어 구성 분석arrow-up-right) 테스트 기능을 사용하는 팀에 유용합니다.

--fail-on--severity-threshold와 같은 CLI 옵션을 사용하여 빌드 작업의 실패 상태를 사용자 지정하십시오. 더 고급 테스트의 경우 --json 옵션을 사용하여 전체 취약점 보고서를 포함하는 JSON 파일을 생성하고 JSON 데이터를 기반으로 자체 빌드 실패 상태를 설정할 수 있습니다.

Gradle 및 Scala

  • 다중 프로젝트 구성의 경우 모든 하위 프로젝트를 테스트합니다. 이 옵션을 monitor 또는 test 명령과 함께 사용하십시오: --all-sub-projects.

  • 특정 구성을 스캔하려면 종속성을 해결하기 위해 구성 속성의 특정 값을 선택합니다. 이 옵션을 test 또는 monitor 명령과 함께 사용하십시오: --configuration-attributes=.

Python

  • Snyk은 Python을 사용하여 종속성을 스캔하고 찾습니다. Snyk은 스캔을 시작하기 위해 Python 버전이 필요하며 기본값은 python입니다. 여러 Python 버전을 사용하는 경우 test 또는 monitor 명령과 함께 --command= 옵션을 사용하여 실행할 올바른 Python 명령을 지정하십시오. 다음 예시가 있습니다. snyk test --command=python3

  • setup.py 파일을 대상으로 해야 합니다. snyk test --file=setup.py 명령을 사용하십시오.

  • 매니페스트 파일이 표준 requirements.txt가 아니기 때문에 Pip 프로젝트를 스캔하고 --file= 옵션을 사용하는 경우 Pip을 패키지 관리자로 지정하려면 --package-manager=pip 옵션을 사용해야 합니다.

.NET

.sln 파일을 사용하는 경우 파일 경로를 지정할 수 있으며 Snyk은 리포지토리의 일부인 모든 하위 프로젝트를 스캔합니다. 예를 들면 다음과 같습니다.

snyk test --file=sln/.sln

Yarn

Yarn 작업 공간의 경우 --yarn-workspaces 옵션을 사용하여 패키지를 testmonitor합니다. 모든 패키지 스캔에 대해 루트 잠금 파일이 참조됩니다. 기본적으로 자동 검색되지 않는 하위 폴더를 찾으려면 --detection-depth 옵션을 사용하십시오.

circle-info

Yarn 작업 공간 지원은 snyk testsnyk monitor 명령에서만 사용할 수 있습니다.

현재 디렉토리 및 5개 하위 디렉토리 깊이까지 발견된 모든 작업 공간에 속하는 패키지만 스캔하는 예제 명령은 다음과 같습니다.

모든 감지된 작업 공간에 적용되도록 무시 및 패치를 한 곳에서 유지 관리하는 경우 다음 스크립트와 같이 정책 경로를 제공하여 공통 .snyk 정책 파일을 사용할 수 있습니다.

모노레포

일부 고객은 단일 리포지토리에 여러 언어, 패키지 관리자 및 프로젝트가 있는 복잡한 프로젝트를 가지고 있습니다. 이를 용이하게 하기 위해 다양한 접근 방식을 취할 수 있습니다.

  • 각 프로젝트와 언어를 빌드할 때 snyk test를 실행하고 특정 프로젝트 파일을 대상으로 하는 지시문을 추가합니다. 예를 들면 다음과 같습니다.

  • 각 프로젝트의 종속성을 설치한 후 pom.xml과 같은 특정 아티팩트를 가리키는 유사한 호출을 수행합니다. 이것은 빠르고 효율적이지만 특히 프로젝트에 익숙하지 않은 경우 확장하기 어려울 수 있습니다.

  • 대부분의 Gradle 프로젝트의 경우 --all-projects를 사용하면 --all-projects 검색의 일부로 빌드 파일을 찾을 때 snyk test --file=build.gradle --all-sub-projects 형식으로 Gradle 특정 옵션을 백그라운드에서 호출하므로 작동합니다.

  • Gradle은 추가 구성 매개변수를 요구할 수 있습니다. 그렇다면 다른 언어 및 패키지 관리자의 각 매니페스트에 대해 --file=을 사용하여 다른 아티팩트를 대상으로 해야 합니다. 그런 다음 복잡한 Gradle 프로젝트를 스캔하려면 --all-sub-projects 및 잠재적으로 --configuration-matching을 사용해야 합니다.

자세한 내용은 Java 및 Kotlin을 참조하십시오.

Last updated