
Bitbucket Pipelines에서 종속성 및 Docker 이미지에 대한 자동화된 Snyk 취약점 스캔, 심각도 임계값 및 모니터링 옵션을 제공합니다.
이 파이프는 Snyk를 사용하여 앱 종속성과 Docker 이미지에서 알려진 취약점을 찾고, 수정하고, 모니터링합니다.
bitbucket-pipelines.yml 파일의 script 섹션에 다음 스니펫을 추가하세요:
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: "<string>"
# LANGUAGE: "<string>" # Required unless SNYK_TEST_JSON_INPUT is set
# IMAGE_NAME: "<string>" # Only required if LANGUAGE set to "docker"
# SNYK_BASE_IMAGE: "<string>" # Custom base image
# CODE_INSIGHTS_RESULTS: "<boolean>" # Optional.
# SNYK_TEST_JSON_INPUT: "<string>" # Optional. The filename or path of a JSON file containg the output from running a test with the Snyk CLI (with json output option).
# PROTECT: "<boolean>" # Optional.
# DONT_BREAK_BUILD: "<boolean>" # Optional.
# MONITOR: "<boolean>" # Optional.
# SEVERITY_THRESHOLD: "<low|medium|high|critical>" # Optional.
# ORGANIZATION: "<string>" # Optional.
# PROJECT_FOLDER: "<string>" # Optional.
# TARGET_FILE: "<string>" # Optional.
# EXTRA_ARGS: "<string>" # Optional.
# DEBUG: "<boolean>" # Optional.
# SNYK_API: "<string"> # Optional.
(*) = 필수 변수입니다.
Snyk를 Bitbucket Pipelines에 통합하면 코드베이스의 종속성과 Docker 이미지에서 알려진 취약점을 지속적으로 테스트, 수정 및 모니터링할 수 있습니다.
Snyk에 대해 더 자세히 알아보려면 웹사이트를 방문하세요.
Maven 또는 Gradle을 사용하는 Java와 같이 빌드 환경이 더 고급인 언어/패키지 매니저의 경우, 파이프라인에서 Snyk CLI를 직접 사용해야 합니다. "Snyk CLI 직접 사용" 예제를 참조하세요. Code Insights 보고서도 생성하려면 Snyk CLI 테스트 출력을 이 파이프에 전달할 수 있습니다. "기존 Snyk JSON 출력에서 Code Insights 보고서 생성" 예제를 참조하세요.
이 파이프를 사용하려면 Snyk API 토큰이 필요합니다.
Snyk를 사용하여 Node.js 애플리케이션을 스캔하고 취약점이 발견되면 빌드를 중단합니다.
script:
- npm install
- npm test
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "node"
- npm publish
Snyk 스캔을 실행하기 위해 사용자 지정 Docker 이미지를 사용합니다. 기본 Snyk 이미지를 사용하지 않으려는 경우 유용합니다. 이미지 형식은 <MY_CUSTOM_IMAGE>:<TAG>이며, MY_CUSTOM_IMAGE와 TAG는 각각 SNYK_BASE_IMAGE 및 LANGUAGE 변수에 해당합니다.
script:
- docker build -t $IMAGE_NAME .
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "latest"
SNYK_BASE_IMAGE: $BASE_IMAGE_NAME
TARGET_FILE: "Dockerfile"
- docker push $IMAGE_NAME
### 기본 Docker 이미지 스캔 예제
Snyk를 사용하여 Docker 이미지를 스캔하고 취약점이 발견되면 빌드를 중단합니다.
```yaml
script:
- docker build -t $IMAGE_NAME .
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "docker"
IMAGE_NAME: $IMAGE_NAME
TARGET_FILE: "Dockerfile"
- docker push $IMAGE_NAME
이 방법은 빌드 환경이 더 복잡한 언어(예: Maven 또는 Gradle을 사용하는 Java)에 특히 적합합니다. 이러한 시나리오에서는 snyk test의 변형을 사용하여 Snyk CLI로 애플리케이션을 테스트할 수 있습니다. Snyk CLI를 설치하는 가장 쉬운 방법은 npm(npm install -g snyk)을 사용하는 것이지만, 빌드 환경에 npm이 없다면 https://github.com/snyk/snyk/releases에서 curl을 사용하여 바이너리를 다운로드할 수 있습니다.
script:
- mvn install
- npm install -g snyk # binary download also available
- snyk test --all-projects
# rest of your pipeline...
이 방법은 빌드 환경이 더 복잡한 언어(예: Maven 또는 Gradle을 사용하는 Java)에 특히 적합합니다. 이러한 시나리오에서는 snyk test --json > snyk-test-output.json의 변형을 사용하여 Snyk CLI로 애플리케이션을 테스트한 다음, 출력 파일을 파이프에 전달하여 Code Insights 보고서를 생성할 수 있습니다. Snyk CLI를 설치하는 가장 쉬운 방법은 npm(npm install -g snyk)을 사용하는 것이지만, 빌드 환경에 npm이 없다면 https://github.com/snyk/snyk/releases에서 curl을 사용하여 바이너리를 다운로드할 수 있습니다.
script:
- mvn install
- npm install -g snyk # binary download also available
- snyk test --all-projects --json > snyk-test-output.json
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
SNYK_TEST_JSON_INPUT: "snyk-test-output.json"
# rest of your pipeline...
Node.js 앱에 Snyk 패치를 적용하고, 치명적(critical) 심각도의 취약점만 계속 스캔하되, 취약점이 발견되어도 빌드를 실패시키지 않습니다. 또한 Snyk.io에서 종속성 상태 모니터링을 선택(opt-in)하면 새 취약점이 발견될 때 알림을 받을 수 있습니다. 그런 다음 Docker 이미지를 빌드하고 치명적(critical) 심각도의 취약점을 스캔합니다.
script:
- npm install
- npm test
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "node"
PROTECT: "true"
SEVERITY_THRESHOLD: "critical"
DONT_BREAK_BUILD: "true"
MONITOR: "true"
- docker build -t $IMAGE_NAME .
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "docker"
IMAGE_NAME: $IMAGE_NAME
TARGET_FILE: "Dockerfile"
SEVERITY_THRESHOLD: "high"
DONT_BREAK_BUILD: "true"
MONITOR: "true"
- docker push $IMAGE_NAME
기본이 아닌 Snyk 인스턴스를 사용하는 고객은 URL을 지정하기 위해 SNYK_API를 사용해야 합니다. 이는 MT-EU, MT-AU 및 단일 테넌트(single tenant) 고객에게 적용됩니다.
script:
- npm install
- npm test
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
SNYK_API: https://api.eu.snyk.io
LANGUAGE: "node"
- npm publish
이 프로젝트의 장기적인 안정성과 품질을 보장하기 위해 2025년 8월부터 비공개 기여(closed-contribution) 모델로 전환합니다. 이 변경을 통해 핵심 팀은 중앙 집중식 개발 로드맵과 엄격한 품질 보증에 집중할 수 있으며, 이는 이렇게 광범위하게 사용되는 구성 요소에 필수적입니다.
투명성을 위해 모든 개발은 계속 공개됩니다. 커뮤니티의 지원과 소중한 기여에 감사드립니다.
비공개 기여 모델로의 전환의 일환으로 이 저장소에서는 GitHub issues가 비활성화되었습니다. Snyk 지원 팀은 Snyk 개발 프로젝트의 GitHub issues를 적극적으로 모니터링하지 않습니다.
Snyk 제품에 대한 도움이 필요하면 가장 빠르게 지원을 받을 수 있는 Snyk 지원 페이지를 이용하세요.
Copyright (c) 2019 Snyk Ltd. and others. Apache 2.0 라이선스가 적용됩니다. LICENSE.txt 파일을 참조하세요.
| Variable | Usage |
|---|
| SNYK_TOKEN (*) | Snyk API 토큰입니다. |
| LANGUAGE (*) | 개발 언어입니다(예: node, ruby, composer, dotnet 또는 docker). 전체 태그 목록은 Dockerhub를 참조하세요. 참고: SNYK_BASE_IMAGE와 함께 사용하는 경우, 이 필드는 기본 이미지 태그를 의미합니다. |
| IMAGE_NAME (*) | docker 언어의 경우, docker 스캔을 수행할 이미지입니다. |
| SNYK_BASE_IMAGE | Snyk Images를 사용하지 않으려면 자체 기본 이미지를 제공하세요. 기본값: snyk/snyk. 참고: LANGUAGE는 기본 이미지 태그를 의미하므로 태그가 유효한지 확인하세요. |
| CODE_INSIGHTS_RESULTS | Snyk 테스트 결과로 Code Insights 보고서를 생성합니다. 기본값: false. |
| SNYK_TEST_JSON_INPUT | 이전에 생성된 snyk test --json 출력에서 Code Insights 보고서만 생성하려는 경우 사용합니다. 아래의 "기존 Snyk JSON 출력에서 Code Insights 보고서 생성" 섹션에 있는 예제를 참조하세요. |
| PROTECT | .snyk 파일에 지정된 패치를 로컬 파일 시스템에 적용합니다. (Snyk Wizard 실행 후) 기본값: false. |
| DONT_BREAK_BUILD | 문제가 발견되어도 빌드를 계속 진행합니다. 기본값: false. |
| MONITOR | 프로젝트 스냅샷을 Snyk UI에 기록하고 초기 테스트 후에도 계속 모니터링합니다. 기본값: false. |
| SEVERITY_THRESHOLD | 지정된 수준 이상의 이슈를 보고합니다. 허용 값: low, med, high, critical. 기본값: low. |
| ORGANIZATION | CLI를 실행할 조직(Organization)입니다. 기본값: 없음. |
| PROJECT_FOLDER | 프로젝트가 있는 폴더입니다. 기본값: .. |
| TARGET_FILE | 패키지 파일(예: package.json)입니다. CLI의 --file=과 동일합니다. Docker의 경우 Dockerfile을 가리켜야 합니다. 기본값: 없음. |
| EXTRA_ARGS | snyk CLI에 전달할 추가 인수입니다. 기본값: 없음. |
| DEBUG | 추가 디버그 정보를 출력합니다. 기본값: false. |
| SNYK_API | Snyk API 엔드포인트를 지정합니다. 기본값: https://api.snyk.io(표준 Snyk MT-US 환경) |