Maven 및 Gradle을 이용한 SCM 통합
사용 가능한 SCM 통합
Maven
Maven 애플리케이션을 스캔할 때 Snyk은 pom.xml 파일당 하나의 프로젝트(Project)를 생성합니다. 프로젝트에는 해당 파일과 관련된 모든 직접 및 간접 종속성이 포함됩니다.
프로젝트에는 compile, provided, runtime 범위의 프로덕션 종속성만 포함됩니다.
Maven의 경우 Snyk은 SCM 통합 또는 CLI를 통해 POM에서 종속성 트리를 생성할 수 있습니다.
로컬 및 CI/CD 사용 시: Snyk은 패키지 관리자와 상호 작용하여 종속성 목록을 생성합니다.
SCM 통합 사용 시: Snyk은 해당 시점에 빌드된 것처럼 빌드를 근사화합니다.
개발자 종속성(scope=test)은 프로덕션에 푸시되지 않으며 일반적으로 노이즈로 간주되므로 무시됩니다. CLI에서 --dev를 추가하여 활성화할 수 있습니다.
Maven은 POM 파일에서 발견되는 순서대로 종속성을 해결하므로, 개발자 종속성을 POM 파일의 마지막에 나열하는 것이 중요합니다. 그렇지 않으면 개발자 종속성이 Snyk에 의해 보고될 수 있습니다.
Gradle
Gradle의 경우 Snyk은 패키지 관리자와 상호 작용하여 종속성 목록을 생성합니다. 일반적으로 Gradle은 빌드 프로세스 중에 코드를 실행하고 설치된 종속성에 영향을 미치는 기타 작업을 수행하므로, Snyk은 gradle.lockfile이 없는 경우 CLI를 사용할 것을 권장합니다.
Gradle의 경우 가져오기(import)할 프로젝트를 선택하면 Snyk은 build.gradle 파일과 (선택 사항인) gradle.lockfile을 기반으로 종속성 트리를 빌드합니다.
api, compile, classpath, implementation, runtime 및 runtimeOnly 구성의 프로덕션 종속성만 포함됩니다.
가능하다면 애플리케이션에서 Gradle 락파일(lockfiles)을 활성화하십시오. 락파일이 있으면 Snyk은 프로젝트에서 사용되는 종속성의 최종 버전을 더 정확하게 해결할 수 있습니다.
Kotlin의 경우 다음 매니페스트 파일이 지원됩니다.
build.gradle (Groovy DSL): SCM 및 CLI 모두 지원
build.gradle.kts (Kotlin DSL): CLI만 지원
gradle.lockfile을 사용하는 Maven 및 Gradle 프로젝트
gradle.lockfile과 함께 Maven 또는 Gradle을 사용하는 경우, Git 코드 리포지토리 통합은 Snyk을 사용하고 가시성을 확보하는 효율적인 방법입니다. 또는 CLI/IDE 또는 CI/CD 통합을 사용하여 테스트, 게이트(gate) 및 모니터링할 수 있습니다.
일반적으로 빌드 시스템의 일부로 테스트를 구현하거나 프로세스의 일부로 락파일을 도입할 수 있습니다.
대규모 조직에서는 Git 통합을 통해 애플리케이션을 모니터링하고, 처음에는 주요 애플리케이션에 대해서만 PR 검사를 켜서 매일 모니터링을 시작하는 것이 일반적입니다.
개발자가 Snyk 기능에 익숙해짐에 따라 게이팅(gating)을 위해 PR 검사를 적용하는 애플리케이션 범위를 넓힙니다.
CI/CD를 사용하여 수동적으로 모니터링한 다음, snyk [product] test 및 monitor 명령을 사용하여 게이팅을 활성화합니다.
락파일이 없는 Gradle 프로젝트
Gradle.lockfile 없이 Gradle을 사용하는 경우 전체 종속성 트리가 명확하지 않거나 외부 리소스에서 아티팩트를 가져올 수 있습니다. Snyk은 다음을 권장합니다.
로컬 스캔을 위해 CLI/IDE 워크플로우 사용
CI/CD를 사용하여 수동적으로 모니터링한 다음,
snyk [product] test및monitor명령을 사용하여 게이팅을 활성화합니다.하나의 프로젝트에서 게이팅을 켜고 빌드를 실패하게 하여 개발자가 프로세스에 익숙해지도록 시작한 다음, 나머지 포트폴리오에 대해 수동 모니터링을 사용합니다.
향상된 Gradle SCM 스캔
릴리스 상태
향상된 Gradle SCM 스캔은 Early Access 단계입니다. Snyk 미리 보기(Snyk Preview)를 사용하여 기능을 활성화할 수 있습니다.
지원되는 Gradle 기능
로컬 및 전역 변수, 맵(map) 및 문자열 보간(string interpolation)
allprojects및subprojects블록apply from을 사용하여 참조되는 사용자 정의 파일Gradle 락파일(lockfiles)
Gradle 속성 및 시스템 속성 -
gradle.properties다중 프로젝트 빌드, 프로젝트 이름, 프로젝트 참조
platform종속성으로서의 Maven BOM
다음 Gradle 기능은 지원되지 않습니다.
buildSrc디렉토리의 사용자 정의 구성플러그인을 통해 도입된 종속성
향상된 Gradle SCM 스캔 활성화
향상된 Gradle SCM 스캔은 SCM 리포지토리당 최대 5,000개의 build.gradle(.kts) 파일 가져오기를 지원합니다. 5,000개 이상의 Gradle 빌드 파일이 있는 리포지토리 가져오기 시도는 실패합니다.
이 기능을 활성화하려면 Snyk 조직(Organization)에 대해 다음 단계를 따르십시오.
패키지 리포지토리 통합을 구성합니다 (Artifactory 또는 Nexus를 사용하는 경우 아래 참조).
SCM 통합을 위한 워크스페이스(Workspaces)를 활성화합니다.
Snyk 미리 보기에서 Improved Gradle scanning을 활성화합니다.
향상된 Gradle SCM 스캔이 활성화된 후:
이전에 가져온 SCM 리포지토리에 기존 Gradle Groovy DSL 프로젝트가 있는 경우, 다음 수동 또는 정기 테스트 시 자동으로 업데이트됩니다.
Gradle Kotlin DSL 프로젝트의 결과를 보려면 리포지토리를 다시 가져오십시오.
패키지 리포지토리 통합
애플리케이션 빌드에서 비공개 패키지 리포지토리를 사용하는 경우, 가장 정확한 결과를 얻으려면 관련 Snyk 통합을 구성해야 합니다.
향상된 Gradle 스캔 기능과 함께 패키지 리포지토리 통합을 사용하려면 Maven의 구성 지침 및 설정을 사용하십시오. 이는 향상된 Gradle 스캔에서 감지되어 사용됩니다.
Java 언어 설정에서 Snyk을 비공개 패키지 리포지토리(예: Artifactory 또는 Nexus)와 통합할 수 있습니다. 이를 통해 Snyk은 비공개 패키지를 참조하는 Maven 또는 Gradle 프로젝트를 스캔할 때 완전한 종속성 트리를 빌드할 수 있습니다.
패키지 레지스트리 통합 (Artifactory/Nexus) - Maven
Artifactory 및 Nexus 패키지 레지스트리 통합은 Snyk 엔터프라이즈(Enterprise) 플랜에서만 사용할 수 있습니다.
Snyk Open Source는 Artifactory 또는 Nexus를 사용하여 비공개 패키지를 통해 전이 종속성을 해결합니다.
Snyk은 사용자 이름과 비밀번호를 사용하여 공개적으로 사용 가능한 인스턴스에 연결하거나, Snyk Broker를 사용하여 네트워크의 사설 서버에 연결할 수 있습니다.
Snyk Open Source는 로컬 게이트키퍼(gatekeeper)로서 그리고 보안 테스트를 위해 레지스트리와 상호 작용하는 Artifactory 및 Nexus와의 통합을 제공합니다. Nexus 리포지토리 관리자 설정 및 Artifactory 레지스트리 설정을 참조하십시오.
Artifactory 또는 Nexus에 대한 Snyk 엔터프라이즈 통합이 없는 사용자의 경우, Snyk은 빌드 시스템이 로컬에서 사용할 수 있게 만드는 종속성과 함께 작동하는 CLI를 사용할 것을 권장합니다.
Maven을 포함한 패키지 레지스트리 통합에 대한 자세한 내용은 다음 외부 리소스를 참조하십시오.
패키지 레지스트리 통합: Nexus 리포지토리 관리자 설정 및 Artifactory 레지스트리 설정
Nexus 컨테이너 레지스트리: Nexus 통합을 통한 컨테이너 보안
게이트키퍼 플러그인: Artifactory Gatekeeper 플러그인
Java용 Snyk 언어 설정 구성
조직 수준에서 오픈 소스 라이브러리 및 라이선싱에 대한 언어 설정을 구성할 수 있습니다. 구성 설정은 해당 조직의 모든 프로젝트에 적용됩니다. 구성 방법은 다음과 같습니다.
Snyk 웹 UI에서 Settings > Snyk Open Source > Languages > Java로 이동합니다.
Edit settings를 클릭합니다.
Maven 설정을 구성합니다.
Update Settings를 클릭하여 변경 사항을 저장합니다.
API
고객은 고급 종속성 관리 전략을 개발하고 표준적이고 자주 사용되는 패키지 관리자를 사용하지 않기로 선택할 수 있습니다.
Snyk API를 사용한 정시 테스트의 경우 Test 엔드포인트를 사용할 수 있습니다. 예로는 그룹 ID, 아티팩트 ID 및 버전에 의한 (Maven) 공용 패키지의 문제 테스트 및 패키지 문제 목록이 있습니다.
Last updated