Artifactory 게이트키퍼 플러그인
기능 가용성\n이 기능은 엔터프라이즈(Enterprise) 플랜에서만 사용할 수 있습니다. 자세한 내용은 플랜 및 가격을 참조하십시오.
Artifactory용 Snyk 플러그인을 사용하면 아티팩트의 오픈소스 취약점 및 라이선스 문제를 스캔할 수 있습니다.
플러그인이 설치되면 백그라운드에서 실행되며 자동으로 다음을 수행할 수 있습니다.
Snyk의 취약점 및 라이선스 이슈 카운트를 아티팩트의 속성(property)으로 추가
구성된 임계값에 따라 개발자가 취약점 및 라이선스 이슈가 있는 패키지를 다운로드하는 것을 차단
워크플로우의 일부로 아티팩트를 스캔한 다음 해당 테스트 결과를 Artifactory UI에서 직접 표시함으로써, Snyk Artifactory Gatekeeper 플러그인을 사용하면 애플리케이션 보안에 위험이 되는 이슈를 더 빠르게 추적 및 식별하고 프로젝트에서 해당 아티팩트의 사용을 피할 수 있습니다.
이 페이지는 Artifactory 머신에 설치되어 게이트키퍼 역할을 하며 Artifactory 인스턴스에서 취약한 패키지가 다운로드되는 것을 차단하는 독립적인 소프트웨어인 Artifactory 플러그인을 설명합니다.
이 플러그인은 SCM 스캔에서 사용자 정의 패키지 레지스트리를 사용하도록 구성할 수 있게 해주는 Snyk 통합 기능인 Maven용 Artifactory 레지스트리와는 별개입니다.
Artifactory 플러그인이 지원하는 패키지 관리자
npm
Maven (.jar 파일)
Gradle (.jar 파일)
sbt (.jar 파일)
pip (PyPi)
CocoaPods
Ruby Gems
Nuget
Artifactory 플러그인을 위한 사전 준비 사항
Snyk 엔터프라이즈 계정
Artifactory 버전 7.4.3 이상
Artifactory와 Snyk 간에 교환되는 데이터
Artifactory는 패키지 이름과 버전을 Snyk API 인스턴스의 테스트 엔드포인트로 전송합니다. 헤더에는 인증 토큰이 전송됩니다.
Artifactory 설치가 프록시를 사용하도록 구성된 경우, Snyk도 자동으로 프록시를 사용합니다. 프록시가 인증이 필요하거나 Kerberos 프록시인 경우 문제가 발생할 수 있지만, Artifactory 설치 및 기본 JVM이 프록시와 함께 올바르게 구성된 경우 표준적이고 인증이 필요 없는 포워딩 프록시는 정상적으로 작동해야 합니다.
Snyk은 올바른 패키지 관리자, 이름 및 버전에 대해 https://api.snyk.io/v1/test를 호출합니다.
Artifactory 플러그인 설치
Snyk 계정에 로그인합니다.
Settings > General을 선택하여 다음 정보를 찾아 복사하고 저장합니다.
서비스 계정 토큰(Service account token) 또는 조직 API 토큰
조직 중 하나의 조직 ID(Organization ID)
GitHub의 Snyk Artifactory 플러그인 리포지토리로 이동한 다음 Releases로 이동합니다.
최신 릴리스에서 Assets 섹션을 확장하여 artifactory-snyk-security-plugin-.zip 아카이브를 다운로드합니다.
아카이브의 압축을 풉니다. 다음과 같은 구조를 가져야 합니다:
plugins (디렉토리)및 그 아래의snykSecurityPlugin.groovy — 플러그인snykSecurityPlugin.properties — 플러그인 구성lib (디렉토리)artifactory-snyk-security-core.jar - 플러그인 라이브러리snykSecurityPlugin.version - 플러그인 버전
텍스트 에디터에서
snykSecurityPlugin.properties를 엽니다.이전 단계에서 얻은 API 토큰과 조직 ID를 각각
snyk.api.token및snyk.api.organization으로 설정합니다.나머지 속성은 필요에 따라 구성하거나 기본값으로 둡니다. 플러그인 구성 섹션을 참조하십시오.
전체 속성 목록은 GitHub의 속성 파일을 확인하십시오.
모든 파일을
$JFROG_HOME/artifactory/etc/artifactory/plugins아래에 둡니다.Artifactory 서버를 재시작합니다. Refresh now 또는 Reload만으로는 충분하지 않으며, 반드시 Artifactory를 재시작해야 합니다.
Artifactory 인스턴스에 로그인하고 System Logs로 이동하여 Snyk이 성공적으로 설치되었는지 확인합니다.

Artifactory 플러그인 작동 방식
패키지 관리자나 URL을 통해 Artifactory 원격 리포지토리에서 다운로드가 요청될 때마다, Snyk은 아티팩트의 취약점 및 라이선스 문제를 자동으로 스캔합니다. Snyk에서 발견한 이슈는 아티팩트 속성으로 저장됩니다. 패키지에 대한 액세스는 이후 이러한 속성과 플러그인 구성에 설정된 심각도 임계값에 따라 제어됩니다.
구성에 따라 플러그인은 이슈 메타데이터를 최신 상태로 유지하기 위해 패키지를 주기적으로 다시 스캔할 수 있습니다.
플러그인은 원격 리포지토리에서만 작동합니다. 로컬에 저장된 아티팩트를 스캔하는 대신 아티팩트에 대한 메타 정보로 Snyk API에 쿼리합니다. 따라서 프록시된 원격 리포지토리의 게시된 아티팩트만 Snyk Artifactory 플러그인으로 검사할 수 있습니다.
다운로드 상태에 대한 자세한 내용을 보려면 System Logs를 여십시오.
스캔에서 이슈가 발견되면 구성에 따라 다운로드 요청이 HTTP 상태 코드 "403 Forbidden"으로 차단될 수 있습니다.
스캔 결과는 아티팩트 속성에서 찾을 수 있으며, 여기서 이슈를 무시하고 다운로드를 허용하도록 결정할 수 있습니다. 아티팩트를 찾으려면 Artifactory 검색창을 사용하거나 트리 보기를 탐색하십시오.

플러그인 구성
플러그인 구성은 $JFROG_HOME/artifactory/etc/artifactory/plugins/snykSecurityPlugin.properties 파일에서 로드됩니다. 이 파일의 변경 사항이 적용되려면 Artifactory를 재시작해야 합니다.
파라미터
기본값
설명
snyk.api.token
서비스 계정 토큰 또는 조직 API 토큰
snyk.api.organization
Snyk 조직 중 하나의 조직 ID
snyk.api.url
https://api.snyk.io/v1/
Snyk API 기본 URL
snyk.scanner.test.continuously
false
플러그인이 주기적으로 Snyk의 취약점 데이터를 새로 고칠지, 아니면 패키지가 처음 요청되었을 때 얻은 결과에 따라 액세스를 필터링할지 결정합니다. 지속 모드(continuous mode)를 사용하지 않으면 이미 게이트키퍼를 통과한 패키지에 대해 새로운 취약점이 보고되지 않습니다.
snyk.scanner.frequency.hours
168
스캔 결과 만료 시간 (지속 모드 전용). 이 시간 내에 가장 최근의 스캔이 이루어진 경우 필터링은 이전 결과를 따릅니다. 그 시간이 지나면 새로운 Snyk Test 요청이 이루어집니다. 이 속성이 0으로 설정되면 아티팩트에 액세스할 때마다 플러그인이 테스트를 트리거합니다.
snyk.scanner.vulnerability.threshold
low
취약점 이슈에 대한 글로벌 임계값. 허용되는 값: "low", "medium", "high", "critical", "none"
snyk.scanner.license.threshold
low
라이선스 이슈에 대한 글로벌 임계값. 허용되는 값: "low", "medium", "high", "critical", "none"
전체 속성 목록은 GitHub의 속성 파일을 확인하십시오.
아티팩트 속성 (Artifact properties)
다음은 스캔된 아티팩트에 대해 플러그인이 설정하는 속성들입니다. 이러한 속성 값에 따라 아티팩트 액세스 허용 또는 차단 여부가 결정됩니다.
속성
설명
snyk.test.timestamp
Snyk에 의해 아티팩트가 마지막으로 스캔된 날짜와 시간입니다.
snyk.issue.url
Snyk 데이터베이스로 연결되는 URL이며, 취약한 버전, 사용 가능한 업그레이드 및 Snyk 패치에 대한 구체적인 세부 정보를 포함한 취약점 설명입니다.
snyk.issue.vulnerabilities
구성된 임계값에 관계없이 취약점 요약 스캔 결과를 표시합니다.
snyk.issue.vulnerabilities.forceDownload
true인 경우, 취약점이 있더라도 이 아티팩트의 다운로드를 허용합니다.
snyk.issue.vulnerabilities.forceDownload.info
왜 forceDownload가 활성화되었는지에 대한 추가 정보를 제공하려면 이 필드를 사용하십시오.
snyk.issue.licenses
구성된 임계값에 관계없이 라이선스 요약 스캔 결과를 표시합니다.
snyk.issue.licenses.forceDownload
true인 경우, 라이선스 이슈가 있더라도 이 아티팩트의 다운로드를 허용합니다.
snyk.issue.licenses.forceDownload.info
왜 forceDownload가 활성화되었는지에 대한 추가 정보를 제공하려면 이 필드를 사용하십시오.
Artifactory Gatekeeper 플러그인 문제 해결
${ARTIFACTORY_HOME}/var/etc/artifactory/logback.xml 파일을 수정하고 다음 라인을 추가하여 디버그 로그를 활성화할 수 있습니다.
Artifactory는 자동으로 새로운 구성을 인식합니다. 만약 인식하지 못한다면 Artifactory를 재시작하십시오.
Last updated