Java 및 Kotlin
적용 가능성 및 통합
Java 및 Kotlin은 Snyk Code 및 Snyk 오픈소스(Open Source)에서 지원됩니다.
사용 가능한 통합:
SCM 가져오기
CLI 및 IDE: 앱 테스트 또는 모니터링
릴리스 상태
향상된 Gradle SCM 스캔은 Early Access 단계입니다. 자세한 내용은 Maven 및 Gradle을 사용한 SCM 통합을 참조하십시오.
사용 가능한 기능:
pkg:maven을 사용하여 앱의 SBOM 테스트pkg:maven을 사용하여 앱의 패키지 테스트
기술 사양
Snyk은 Java SE 21 버전까지의 Java 분석을 지원하며, 가능한 경우 더 최신 Java 버전의 코드도 처리할 수 있도록 설계되었습니다.
지원되는 프레임워크 및 라이브러리
Java 및 Kotlin의 경우, 다음 프레임워크 및 라이브러리가 지원됩니다:
Amazon AWS SDK
Android Standard Library
Apache Commons
Apache Tomcat
Apache XML
apache.mahou
bouncycastle
com.azure.ai.openai
com.google.ai.client.generativeai
com.google.cloud.vertexai.generativeai
com.google.re2j
com.google.gwt
Dropwizard
elasticsearch
FasterXML Jackson
Google Guava
grpc-java
hibernate
http4k
io.jsonwebtoken
Jakarta EE
Jakarta XML Services
Java EE
Java Servlet
Java Servlet (javax)
Java Server Pages
Java Standard Edition
javalin
Jax-RS
jooq
Kyro
Micronaut
mongo-java-driver
Netty
okhttp3
org.apache.hc.client5
org.apache.http.client
org.apache.sling
org.apache.tools.zip
org.codehaus.plexus
org.dom4j.io
Playframework
rxhttp
Seam logger
SnakeYaml
Spongycastle
Spring AI
Spring boot
Spring Web, MVC and JDBC
Spring WebFlux
Struts
Vaadin
XStream
Kotlin 전용:
Android Standard Library
com.aallam.openai
com.expediagroup.graphql.server
Javalin
Ktor
Kotlin Standard Library
khttp
지원되는 패키지 관리자 및 패키지 레지스트리
지원되는 패키지 관리자: Maven 및 Gradle, 다음 버전 지원:
Maven:
3.*,4.*. 자세한 내용은 Snyk Maven 플러그인 readme를 참조하십시오.Gradle:
4.*,5.*,6.*,7.*,8.*,9*. 자세한 내용은 Snyk Gradle 플러그인 readme를 참조하십시오.
지원되는 패키지 레지스트리: maven.org (Maven Central Repository)
Snyk Code용 Java 및 Kotlin
Snyk Code와 함께 사용하는 Java 및 Kotlin의 경우, 다음 파일 형식이 지원됩니다:
Java:
.java,.jsp,.jspxKotlin:
.kt
사용 가능한 기능:
보고서(Reports)
사용자 정의 규칙(Custom rules)
파일 간 분석(Interfile analysis) - Kotlin은 완전히 지원됨
파일 간 분석(Interfile analysis) - Android는 부분적으로 지원됨
Snyk 오픈소스용 Java 및 Kotlin
Snyk 오픈소스와 함께 사용하는 Java 및 Kotlin의 경우, 다음 파일 형식이 지원됩니다:
Maven:
pom.xmlGradle:
build.gradle,build.gradle.kts
Snyk 오픈소스와 함께 Java 및 Kotlin에 대해 보고서를 사용할 수 있습니다.
사용 가능한 기능:
보고서(Reports)
라이선스 스캐닝(License scanning)
Fix PRs (Gradle의 경우 Fix 조언만 제공됨)
Java 및 Kotlin에 대한 검증, 모니터링, 알림 및 게이팅(Gating)
SCM 통합의 경우, Snyk을 사용하면 머지하기 전에 코드 및 오픈 소스 패키지에 제출된 변경 사항을 검증하기 위해 PR 검사(PR Checks)를 실행할 수 있습니다. Snyk은 또한 예약된 일정에 따라 기본 브랜치를 재테스트하고 알림을 보낼 수 있습니다. 결과는 Projects 페이지에서 확인할 수 있습니다.
CI/CD 통합의 경우, Snyk은 수동적으로 모니터링하고 정책 위반에 대한 테스트 중 빌드 검사를 실패시켜 QA 게이트를 제공할 수 있습니다.
Snyk은 다음을 포함한 유연한 기능을 제공합니다:
Gradle 플러그인 (커뮤니티 프로젝트)
Jenkins, Circle CI 등을 위한 전용 플러그인 (관련 마켓플레이스 참조)
Snyk CLI는 대부분의 CI/CD 시스템에서 사용할 수 있습니다 (예시 참조)
옵션 또는 snyk-filter 도구를 사용하여 기준에 따라 빌드를 실패시킵니다.
컨테이너화된 버전이 제공됩니다.
파트너 플랫폼 사용: Azure, Bitbucket 및 AWS에는 Snyk과 함께 사용할 수 있는 파이프/컴포넌트가 내장되어 있습니다. Java의 경우, Snyk은 미리 패키징된 Bitbucket Pipe 대신 Bitbucket Cloud와의 SCM 통합을 사용하거나 CLI를 사용할 것을 제안합니다.
Snyk은 Kubernetes 통합을 사용하여 프로덕션에서 사용 중인 컨테이너 이미지와 오픈 소스 또는 Linux 기반 패키지를 모니터링하여 프로덕션 애플리케이션의 알려진 취약점을 고객에게 알릴 수 있습니다. 이 기능은 엔터프라이즈(Enterprise) 플랜에서만 사용할 수 있습니다.
프로덕션 통합이 없는 경우, snyk monitor CLI 명령을 사용하여 스냅샷을 찍고 프로덕션으로 푸시되는 항목을 모니터링하십시오 (모든 플랜에서 사용 가능).
BOM에 대한 Java 지원
Maven은 함께 작동하는 것으로 알려진 종속성 버전을 중앙 집중화하기 위해 BOM(Bill of Materials) POM 파일을 지원합니다.
BOM 파일에는 다음이 포함됩니다:
pom패키징 유형:<packaging>pom</packaging>dependencyManagement섹션
타사 프로젝트는 종속성 관리를 쉽게 하기 위해 BOM 파일을 제공할 수 있습니다. 다음은 몇 가지 일반적인 예입니다:
spring-data-bom - Spring 팀은 Spring Data 프로젝트를 위한 BOM을 제공합니다.
jackson-bom - Jackson 프로젝트는 Jackson 종속성을 위한 BOM을 제공합니다.
BOM 파일 예시:
dependencyManagement 섹션에는 종속성 요소가 포함되어 있습니다. 각 종속성은 Maven이 전이(및 직접) 종속성에 대해 선택할 버전을 결정하기 위한 조회 참조입니다.
dependencyManagement 섹션에서 종속성을 정의하는 것은 조회 참조용으로만 사용되며, 프로젝트의 종속성 트리에 추가되지는 않습니다.
이전 BOM 예시에서 mvn dependency:tree를 실행하여 Maven이 해당 내용을 파일 자체의 종속성으로 처리하지 않음을 확인할 수 있습니다.
이 BOM은 프로젝트 POM에 부모로 가져올 수 있습니다. BOM에서 상속받으므로 log4j 버전을 지정할 필요가 없습니다:
Snyk은 BOM dependencyManagement 조회의 버전을 parent로 가져오는 프로젝트 POM에 선언된 모든 종속성에 적용합니다.
Snyk이 BOM 파일을 스캔할 때, dependencyManagement 내용은 해당 파일의 종속성으로 간주되지 않습니다. 이것들은 오직 조회용입니다.
이전 예시들에 대해, Snyk은 파일을 다음과 같이 분석하고 처리합니다:
BOM 파일 - Snyk은 이 파일에 종속성이 없으므로 Snyk 프로젝트를 생성하지 않습니다.
프로젝트 POM - Snyk은
log4j(v1.2.12)라는 단일 종속성을 가진 프로젝트를 생성합니다. Snyk은 부모 BOM의 규칙을 적용하여log4j의 올바른 버전을 식별합니다. 종속성commons-logging은 프로젝트 POM에 직접 선언되지 않았으므로 포함되지 않습니다.
BOM이 dependencyManagement 외부에 직접 종속성을 가지고 있는 경우, Snyk은 해당 BOM에 대한 프로젝트를 생성합니다.
Snyk은 또한 Fix PR 기능을 통해 취약한 패키지를 업그레이드하기 위한 권장 사항을 포함한 수정 조언을 제공합니다.
Fix PR은 이슈가 보고된 POM 파일에서 버전이 관리되는 종속성에 대해서만 생성될 수 있습니다.
버전 또는 종속성이 부모 BOM에서 관리되는 경우, Snyk이 버전을 변경하여 취약한 경로를 수정할 수 있음을 확인하더라도 수정을 적용할 수 없습니다.
보안 주제 및 모범 사례에 대한 Java 개발자를 위한 추가 리소스를 확인하십시오:
Last updated