컨테이너 이미지의 애플리케이션 취약점 감지
한 번의 스캔으로 Snyk은 운영 체제뿐만 아니라 컨테이너 이미지의 애플리케이션 종속성에서 취약점을 감지할 수 있습니다.
애플리케이션 취약점 감지는 타사 이미지를 스캔하기 위한 것입니다. 이 기능은 사용자가 소스 코드에 액세스할 수 있고 Snyk Code 및 Snyk 오픈소스를 사용하여 SDLC 초기에 왼쪽으로 이동(shift left)하여 문제를 감지할 수 있는 사내 개발 코드의 문제를 감지하도록 설계되지 않았습니다.
컨테이너 레지스트리 통합을 위한 컨테이너 이미지의 애플리케이션 취약점 감지는 Node, Ruby, PHP, Python, Go 바이너리 및 Java에 대해 지원됩니다. CLI 및 Kubernetes의 경우 이 기능은 Node, PHP, Python, Go 바이너리 및 Java에 대해 지원됩니다.
컨테이너 레지스트리와 통합하고 프로젝트를 가져오면 Snyk은 이미지의 취약점을 스캔합니다.
컨테이너 레지스트리 통합에서 가져온 이미지로 생성된 애플리케이션 프로젝트의 경우 반복 스캔이나 수동 재스캔 중에 애플리케이션을 다시 가져오지 않습니다.
대신 초기 이미지 가져오기 중에 발견된 애플리케이션 종속성에서 새로운 취약점을 스캔합니다.
이미지 내의 애플리케이션에 새로운 종속성이 도입되면 반복 스캔이나 수동 재스캔으로 감지되지 않습니다. 컨테이너 레지스트리의 이미지 내에서 새롭거나 업데이트된 애플리케이션을 감지하려면 이미지를 Snyk으로 다시 가져와야 합니다.
Kubernetes 통합에서 가져온 이미지에서 발견된 애플리케이션의 경우 기존 애플리케이션은 다시 가져오지만, 이미지에 추가된 새 앱은 반복 스캔 중에 가져오지 않습니다. Kubernetes의 이미지 내에서 새 애플리케이션을 감지하려면 이미지를 Snyk으로 다시 가져와야 합니다.
컨테이너 레지스트리 취약점 스캔 활성화
컨테이너 레지스트리에서 애플리케이션 취약점 스캔을 활성화하려면:
Integrations로 이동한 다음 컨테이너 레지스트리 통합 설정으로 이동합니다.
Detect application vulnerabilities를 활성화하고 변경 사항을 저장합니다.

컨테이너 레지스트리 또는 Kubernetes 통합을 사용하여 이미지를 스캔할 때 스캔은 기본적으로 --app-vulns 플래그도 사용합니다. 컨테이너 레지스트리에서만 플래그를 옵트아웃할 수 있습니다. 이렇게 하려면 Detect application vulnerabilities 기능을 비활성화하십시오.
Java의 경우 플래그를 사용하면 Snyk은 기본적으로 한 수준의 중첩된 jar를 스캔합니다.
Python의 경우 Snyk은 Poetry 및 Pip을 지원합니다(모든 통합 지점에서).
Go 바이너리의 경우 Snyk은 Go 모듈 지원으로 빌드된 모든 유형의 Go 바이너리를 지원합니다.
취약점 감지를 위한 Snyk Container CLI 옵션
App vulns 옵션
CLI 버전 1.1090.0(2023-01-24) 이상에서는 Snyk이 기본적으로 이미지의 애플리케이션 종속성을 스캔합니다. --app-vulns 옵션을 지정할 필요가 없습니다.
애플리케이션 취약점 스캔을 옵트아웃하려면 --exclude-app-vulns 옵션을 지정할 수 있습니다. 이렇게 하면 결과에서 애플리케이션 취약점 섹션이 생략되어 이전 동작을 모방합니다. --exclude-app-vulns 옵션은 CLI 버전 1.1021.0 이상에서 사용할 수 있습니다.
Java 애플리케이션
Snyk Container CLI는 컨테이너 이미지에 JAR 또는 uber-jar로 내장된 Java 애플리케이션 스캔을 지원합니다. uber-jar 또는 shaded jar의 경우 Snyk은 pom.properties 매니페스트 파일을 사용하여 패키지 버전 및 종속성을 확인합니다. JAR 파일에 pom.properties 파일이 있는지 여부는 JAR 빌드 방법과 빌드 프로세스 중에 사용된 도구 및 구성에 따라 다릅니다. Maven 및 Maven Shade Plugin으로 빌드된 JAR에는 기본적으로 pom.properties 매니페스트 파일이 포함됩니다.
중첩된 jar 깊이 옵션
--app-vulns가 활성화된 경우 --nested-jars-depth=n 옵션을 사용하여 Snyk이 압축을 풀 중첩된 jar의 수준 수를 설정할 수도 있습니다. 암시적 기본값은 1입니다. 2를 지정하면 Snyk이 jar 안의 jar 압축을 풉니다. 3은 Snyk이 jar 안의 jar 안의 jar 압축을 풉니다.
불필요하다고 생각되는 스캔을 옵트아웃하려면 --nested-jar-depth=0을 사용하십시오.
@unknown 버전 접미사가 붙은 Maven 패키지
Snyk Container CLI는 pom.properties 매니페스트 파일이 스캔된 JAR에 포함되지 않은 경우 @unknown 버전 접미사가 붙은 Maven 패키지를 보고할 수 있습니다. 패키지 버전이 @unknown으로 보고되는 다른 이유에 대한 자세한 내용은 SCM을 통해 Maven 패키지가 Unknown으로 표시되는 이유를 참조하십시오.
애플리케이션 취약점 및 라이선스 문제 보기
Detect application vulnerabilities 기능이 활성화되면 다음을 볼 수 있습니다.
컨테이너 이미지에서 감지된 매니페스트 파일의 종속성 취약점 및 라이선스 문제
운영 체제 패키지에서 감지된 취약점.
이미지를 Snyk으로 가져오면 Projects 뷰의 레지스트리 레코드 아래에 표시되어 이미지에서 발견된 운영 체제 취약점을 보여줍니다.
이 기능을 활성화하면 이미지에서 감지된 중첩된 매니페스트 파일과 해당 취약점 및 라이선스 문제도 볼 수 있습니다.
자동 스캔 설정
프로젝트 설정에 따라 Snyk은 이미지를 정기적으로 스캔합니다. 구성에 따라 운영 체제 및 애플리케이션 종속성 모두에서 새로운 취약점이 식별될 때마다 Snyk은 이메일이나 Slack으로 업데이트합니다.
각 프로젝트에 대한 스캔 빈도를 설정할 수 있습니다. 기본값은 매일 테스트입니다. 스캔 빈도를 업데이트하려면 프로젝트 페이지의 Settings 탭으로 이동하여 드롭다운에서 빈도를 선택하십시오. 옵션은 never, daily 또는 weekly입니다.

지원되는 컨테이너 레지스트리
다음 컨테이너 레지스트리가 지원됩니다.
Docker Hub
GCR
ACR
Amazon ECR
JFrog Artifactory
Harbor
Quay
GitHub
Nexus
DigitalOcean
GitLab
지원되는 통합
지원되는 언어는 다음 통합과 함께 작동합니다.
언어
컨테이너 레지스트리
CLI
Kubernetes
Node
예
예
예
Ruby
예
PHP
예
예
예
Python
예
예
예
Go Binaries
예
예
예
Java
예
예
예
Last updated