trivy — Trivy 스캐닝을 위한 GitLab CI 구성 요소 | Kitploit
도구 / GitLab / niclas-zone / ci / trivy
niclas-zone/ci/trivy trivy Trivy 스캐닝을 위한 GitLab CI 구성 요소
4 1개월 전커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.
지난 7일 지난 30일
Trivy GitLab CI 컴포넌트
GitLab CI를 위한 Trivy 컴포넌트입니다. Trivy는 컨테이너 이미지, 파일시스템, 리포지토리, Kubernetes 클러스터, SBOM, 라이선스 규정 준수를 포괄하는 올인원 보안 스캐너입니다. 이 템플릿들을 파이프라인에 직접 연결하면 거의 셸 스크립팅 없이 반복 가능한 스캔, GitLab 네이티브 보고서 및 이식 가능한 아티팩트를 얻을 수 있습니다.
기능
전체 표면 커버리지 : 컨테이너, 파일시스템, 루트 파일시스템, Git 리포지토리, VM, SBOM, Kubernetes 클러스터 등.
다중 스캐너 : 취약점, 잘못된 구성/IaC, 시크릿, 라이선스 스캐닝을 작업별 제어와 함께 제공.
GitLab 보고서 : 머지 리퀘스트 인사이트를 위한 컨테이너 스캐닝, JUnit, SARIF, JSON 아티팩트를 생성합니다.
사용자 정의 가능한 입력 : 모든 템플릿은 심각도, 스캐너, 시간 초과, 패키지 유형, 아티팩트에 대한 설정을 제공합니다.
조합 가능한 템플릿 : 하나의 컴포넌트 네임스페이스에서 원격 또는 로컬 스캔, SBOM 워크플로우, Rekor 증명, IaC 검사를 혼합할 수 있습니다.
사용법
기본 사용법
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/main@latest
stages:
- test
원격 이미지 - 사용자 정의 심각도
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/main@latest
inputs:
job_name: "security:remote"
TRIVY_SCAN_REMOTE_IMAGE: "registry.gitlab.com/group/app:latest"
severity: "CRITICAL,HIGH,MEDIUM"
exit_on_vulnerability: true
stages:
- test
로컬 tar / OCI 레이아웃 스캔 include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/main@latest
inputs:
job_name: "security:local"
TRIVY_SCAN_LOCAL_IMAGES: "dist/"
TRIVY_SCANNERS: "vuln,secret"
exit_on_vulnerability: false
stages:
- test
컴포넌트 입력 및 템플릿 아래 각 템플릿은 컴포넌트 사양에 정의된 대로 사용 가능한 입력 및 기본값을 나열하고, 그 뒤에 최소 작업 예제를 제공합니다.
컴포넌트: templates/main.yml 입력 설명 기본값 job_nameCI 작업 이름 "trivy scanning"stage파이프라인 단계 "test"imageTrivy를 실행하는 컨테이너 이미지 "ghcr.io/aquasecurity/trivy:0.68.1"TRIVY_NEEDED_STAGETrivy 실행 전에 완료되어야 하는 단계 "build"TRIVY_SCAN_REMOTE_IMAGE스캔할 원격 이미지 ""TRIVY_SCAN_LOCAL_IMAGEStar/OCI 입력 경로 (비어 있으면 . 검색) ""TRIVY_SCANNERS쉼표로 구분된 스캐너 "vuln,secret,misconfig"severity포함할 심각도 "CRITICAL,HIGH"exit_on_vulnerability문제 발견 시 작업 실패 처리 trueTRIVY_EXTRA_ARGS추가 CLI 플래그 ""allow_failure파이프라인 실패 없이 작업 실패 허용 false
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/main@latest
inputs:
job_name: "trivy:basic"
TRIVY_SCAN_REMOTE_IMAGE: "nginx:latest"
컴포넌트: templates/target_container.yml 입력 설명 기본값 job_nameCI 작업 이름 "trivy:scan:containers"stage파이프라인 단계 "test"imageTrivy 컨테이너 이미지 "ghcr.io/aquasecurity/trivy:0.68.1"TRIVY_SCAN_REMOTE_IMAGE원격 이미지 참조 ""TRIVY_SCAN_LOCAL_IMAGES로컬 스캔을 위한 디렉터리/tar ""TRIVY_SCANNERS활성화된 스캐너 "vuln,secret,misconfig"TRIVY_IMAGE_SRC이미지 소스 백엔드 (remote/docker/...) ""severity심각도 "CRITICAL,HIGH"exit_on_vulnerability심각도 일치 시 실패 trueTRIVY_IGNORE_UNFIXED수정 사항이 없는 문제 무시 trueTRIVY_PKG_TYPES패키지 유형 "os,library"TRIVY_VULN_TYPEpkg 유형의 사용 중단된 별칭 ""TRIVY_TIMEOUT명령 시간 초과 "10m"TRIVY_EXTRA_ARGS추가 CLI 인수 ""TRIVY_DB_REPOSITORY사용자 정의 DB 미러 ""TRIVY_JAVA_DB_REPOSITORY사용자 정의 Java DB 미러 ""TRIVY_SKIP_FILES파일 글로브 제외 패턴 ""
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/target_container@latest
inputs:
job_name: "trivy:containers"
TRIVY_SCAN_REMOTE_IMAGE: "registry.gitlab.com/group/service:latest"
TRIVY_SCANNERS: "vuln,secret"
exit_on_vulnerability: true
컴포넌트: templates/target_filesystem.yml 입력 설명 기본값 job_nameCI 작업 이름 "trivy:scan:filesystem"stage파이프라인 단계 "test"imageTrivy 이미지 "ghcr.io/aquasecurity/trivy:0.68.1"TRIVY_FS_PATH스캔할 파일 또는 디렉터리 "."TRIVY_SCANNERS활성화된 스캐너 "vuln,secret"severity심각도 "CRITICAL,HIGH"exit_on_vulnerability심각도 일치 시 실패 trueTRIVY_IGNORE_UNFIXED수정되지 않은 문제 무시 trueTRIVY_PKG_TYPES패키지 유형 "os,library"TRIVY_TIMEOUT시간 초과 "10m"TRIVY_SKIP_FILES건너뛸 파일 글로브 ""TRIVY_SKIP_DIRS건너뛸 디렉터리 ""TRIVY_EXTRA_ARGS추가 CLI 인수 ""TRIVY_REPORT_BASENAME아티팩트 기본 이름 "filesystem-scan"allow_failure작업 실패 허용 false
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/target_filesystem@latest
inputs:
TRIVY_FS_PATH: "services/api"
TRIVY_SCANNERS: "vuln,misconfig,secret"
컴포넌트: templates/target_rootfs.yml 입력 설명 기본값 job_name작업 이름 "trivy:scan:rootfs"stage단계 "test"imageTrivy 이미지 "ghcr.io/aquasecurity/trivy:0.68.1"TRIVY_ROOTFS_PATH루트 파일시스템 경로 "/"TRIVY_SCANNERS스캐너 "vuln,secret"severity심각도 "CRITICAL,HIGH"exit_on_vulnerability발견 시 작업 실패 trueTRIVY_IGNORE_UNFIXED수정되지 않은 문제 무시 trueTRIVY_PKG_TYPES패키지 유형 "os,library"TRIVY_TIMEOUT시간 초과 "10m"TRIVY_SKIP_FILES건너뛸 파일 ""TRIVY_SKIP_DIRS건너뛸 디렉터리 ""TRIVY_EXTRA_ARGS추가 인수 ""TRIVY_REPORT_BASENAME아티팩트 기본 이름 "rootfs-scan"allow_failure실패 허용 false
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/target_rootfs@latest
inputs:
TRIVY_ROOTFS_PATH: "/mnt/root"
TRIVY_SCANNERS: "vuln"
컴포넌트: templates/target_repository.yml 입력 설명 기본값 job_name작업 이름 "trivy:scan:repo"stage단계 "test"imageTrivy 이미지 "ghcr.io/aquasecurity/trivy:0.68.1"TRIVY_REPO_TARGET로컬 경로 또는 Git URL "."TRIVY_REPO_BRANCH원격 브랜치 ""TRIVY_REPO_COMMIT커밋 해시 ""TRIVY_REPO_TAG태그 이름 ""TRIVY_SCANNERS스캐너 "vuln,secret"severity심각도 "CRITICAL,HIGH"exit_on_vulnerability발견 시 작업 실패 trueTRIVY_IGNORE_UNFIXED수정되지 않은 문제 무시 trueTRIVY_TIMEOUT시간 초과 "10m"TRIVY_SKIP_FILES건너뛸 파일 ""TRIVY_SKIP_DIRS건너뛸 디렉터리 ""TRIVY_EXTRA_ARGS추가 인수 ""TRIVY_REPORT_BASENAME아티팩트 기본 이름 "repo-scan"allow_failure실패 허용 false
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/target_repository@latest
inputs:
TRIVY_REPO_TARGET: "https://github.com/aquasecurity/trivy"
TRIVY_REPO_BRANCH: "main"
컴포넌트: templates/target_vm.yml 입력 설명 기본값 job_name작업 이름 "trivy:scan:vm"stage단계 "test"imageTrivy 이미지 "ghcr.io/aquasecurity/trivy:0.68.1"TRIVY_VM_TARGET로컬 경로 또는 ami:/ebs: 식별자 ""TRIVY_AWS_REGIONAMI/EBS 스캔을 위한 AWS 리전 ""TRIVY_SCANNERS스캐너 "vuln"severity심각도 "CRITICAL,HIGH"exit_on_vulnerability발견 시 작업 실패 trueTRIVY_IGNORE_UNFIXED수정되지 않은 문제 무시 trueTRIVY_TIMEOUT시간 초과 "20m"TRIVY_EXTRA_ARGS추가 인수 ""TRIVY_REPORT_BASENAME아티팩트 기본 이름 "vm-scan"allow_failure실패 허용 false
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/target_vm@latest
inputs:
TRIVY_VM_TARGET: "ami-0123456789abcdef0"
TRIVY_AWS_REGION: "us-east-1"
컴포넌트: templates/target_kubernetes.yml 입력 설명 기본값 job_name작업 이름 "trivy:scan:k8s"stage단계 "test"imageTrivy 이미지 "ghcr.io/aquasecurity/trivy:0.68.1"TRIVY_K8S_OBJECT범위 (cluster, namespace/foo 등) ""TRIVY_K8S_REPORT보고서 상세 수준 (summary/all) "summary"TRIVY_K8S_KUBECONFIG사용자 정의 kubeconfig 경로 ""TRIVY_K8S_INCLUDE_NAMESPACES포함할 네임스페이스 ""TRIVY_K8S_EXCLUDE_NAMESPACES제외할 네임스페이스 ""TRIVY_K8S_INCLUDE_KINDS포함할 종류 ""TRIVY_K8S_EXCLUDE_KINDS제외할 종류 ""TRIVY_K8S_SKIP_IMAGES워크로드 이미지 스캔 건너뛰기 falseTRIVY_K8S_DISABLE_NODE_COLLECTOR노드 수집기 비활성화 falseTRIVY_SCANNERS스캐너 "vuln,misconfig,secret"severity심각도 "CRITICAL,HIGH"exit_on_vulnerability발견 시 작업 실패 trueTRIVY_IGNORE_UNFIXED수정되지 않은 문제 무시 trueTRIVY_TIMEOUT
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/target_kubernetes@latest
inputs:
TRIVY_K8S_OBJECT: "namespace/prod"
TRIVY_K8S_REPORT: "summary"
컴포넌트: templates/scanner_iac_config.yml 입력 설명 기본값 job_name작업 이름 "trivy:scan:iac"stage단계 "test"imageTrivy 이미지 "ghcr.io/aquasecurity/trivy:0.68.1"TRIVY_CONFIG_PATHIaC 디렉터리 "."severity심각도 "CRITICAL,HIGH"exit_on_vulnerability발견 시 실패 trueTRIVY_CONFIG_REPORT보고서 상세 수준 "all"TRIVY_CONFIG_INCLUDE_NON_FAILURES통과도 포함 falseTRIVY_MISCONFIG_SCANNERS잘못된 구성 스캐너 목록 "azure-arm,cloudformation,dockerfile,helm,kubernetes,terraform"TRIVY_TIMEOUT시간 초과 "10m"TRIVY_SKIP_FILES건너뛸 파일 ""TRIVY_SKIP_DIRS건너뛸 디렉터리 ""TRIVY_CONFIG_EXTRA_ARGS추가 인수 ""TRIVY_REPORT_BASENAME아티팩트 기본 이름 "iac-scan"allow_failure실패 허용 false
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/scanner_iac_config@latest
inputs:
TRIVY_CONFIG_PATH: "examples/iac/terraform"
severity: "CRITICAL,HIGH,MEDIUM"
컴포넌트: templates/scanner_license.yml 입력 설명 기본값 job_name작업 이름 "trivy:scan:license"stage단계 "test"imageTrivy 이미지 "ghcr.io/aquasecurity/trivy:0.68.1"TRIVY_SCAN_REMOTE_IMAGE원격 이미지 참조 ""TRIVY_SCAN_LOCAL_IMAGES로컬 tar/OCI 또는 파일시스템 경로 ""TRIVY_SCANNERS스캐너 목록 "license"severity심각도 "CRITICAL"exit_on_vulnerability심각도 일치 시 실패 trueTRIVY_LICENSE_FULL--license-full 활성화falseTRIVY_LICENSE_CONFIDENCE신뢰도 임계값 "0.9"TRIVY_LICENSE_IGNORED무시할 라이선스 ""TRIVY_PKG_TYPES패키지 유형 "os,library"TRIVY_TIMEOUT시간 초과 "10m"TRIVY_EXTRA_ARGS추가 인수 ""allow_failure실패 허용 false
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/scanner_license@latest
inputs:
TRIVY_SCAN_LOCAL_IMAGES: "test.tar"
TRIVY_LICENSE_FULL: true
컴포넌트: templates/sbom_generate_image.yml 입력 설명 기본값 job_name작업 이름 "trivy:sbom:image"stage단계 "test"imageTrivy 이미지 "ghcr.io/aquasecurity/trivy:0.68.1"TRIVY_SBOM_IMAGE원격 이미지 참조 ""TRIVY_SBOM_INPUT로컬 OCI/tar 입력 ""TRIVY_SBOM_FORMATSBOM 형식 "cyclonedx"TRIVY_SBOM_FILENAME출력 파일 이름 "image-sbom.cdx.json"TRIVY_SBOM_EXTRA_ARGS추가 인수 ""TRIVY_TIMEOUT시간 초과 "10m"allow_failure실패 허용 false
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/sbom_generate_image@latest
inputs:
TRIVY_SBOM_INPUT: "test.tar"
TRIVY_SBOM_FILENAME: "ci-image-sbom.cdx.json"
컴포넌트: templates/sbom_generate_repo.yml 입력 설명 기본값 job_name작업 이름 "trivy:sbom:repo"stage단계 "test"imageTrivy 이미지 "ghcr.io/aquasecurity/trivy:0.68.1"TRIVY_REPO_TARGET경로 또는 원격 Git URL "."TRIVY_REPO_BRANCH브랜치 ""TRIVY_REPO_COMMIT커밋 해시 ""TRIVY_REPO_TAG태그 ""TRIVY_SBOM_FORMAT형식 "cyclonedx"TRIVY_SBOM_FILENAME출력 파일 이름 "repo-sbom.cdx.json"TRIVY_REPO_SCANNERSSBOM 생성 중 사용할 스캐너 "vuln,secret"TRIVY_REPO_EXTRA_ARGS추가 인수 ""TRIVY_TIMEOUT시간 초과 "10m"allow_failure실패 허용 false
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/sbom_generate_repo@latest
inputs:
TRIVY_REPO_TARGET: "."
TRIVY_SBOM_FORMAT: "spdx-json"
컴포넌트: templates/sbom_generate_kbom.yml 입력 설명 기본값 job_name작업 이름 "trivy:sbom:kbom"stage단계 "test"imageTrivy 이미지 "ghcr.io/aquasecurity/trivy:0.68.1"TRIVY_K8S_TARGETtrivy k8s 대상 (cluster, namespace/...)"cluster"TRIVY_K8S_CONTEXTKubeconfig 컨텍스트 ""TRIVY_K8S_EXTRA_ARGS추가 인수 ""TRIVY_SBOM_FILENAMEKBOM 파일 이름 "kbom.cdx.json"TRIVY_TIMEOUT시간 초과 "15m"scan_kbom생성된 KBOM에 취약점 스캔 실행 trueTRIVY_SBOM_SCANNERSKBOM 스캔용 스캐너 "vuln"severityKBOM 스캔 심각도 "CRITICAL,HIGH"exit_on_vulnerability발견 시 실패 trueTRIVY_SBOM_SCAN_EXTRA_ARGSKBOM 스캔 추가 인수 ""allow_failure실패 허용 false
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/sbom_generate_kbom@latest
inputs:
TRIVY_K8S_TARGET: "namespace/default"
scan_kbom: true
컴포넌트: templates/sbom_scan_file.yml 입력 설명 기본값 job_name작업 이름 "trivy:scan:sbom"stage단계 "test"imageTrivy 이미지 "ghcr.io/aquasecurity/trivy:0.68.1"TRIVY_SBOM_PATHSBOM 파일 경로 "artifacts/trivy/image-sbom.cdx.json"TRIVY_SBOM_REPORT_BASENAME출력 기본 이름 "sbom-scan"TRIVY_SCANNERS실행할 스캐너 "vuln,license"severity심각도 "CRITICAL,HIGH"exit_on_vulnerability발견 시 실패 trueTRIVY_SBOM_SCAN_EXTRA_ARGS추가 인수 ""TRIVY_TIMEOUT시간 초과 "10m"allow_failure실패 허용 false
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/sbom_scan_file@latest
inputs:
TRIVY_SBOM_PATH: "artifacts/trivy/ci-image-sbom.cdx.json"
TRIVY_SCANNERS: "vuln,license"
컴포넌트: templates/sbom_scan_rekor.yml 입력 설명 기본값 job_name작업 이름 "trivy:scan:rekor"stage단계 "test"imageTrivy 이미지 "ghcr.io/aquasecurity/trivy:0.68.1"TRIVY_SCAN_REMOTE_IMAGE증명된 원격 이미지 ""TRIVY_REKOR_URLRekor API 엔드포인트 ""TRIVY_SCANNERS스캐너 "vuln"severity심각도 "CRITICAL,HIGH"exit_on_vulnerability발견 시 실패 trueTRIVY_IGNORE_UNFIXED수정되지 않은 문제 무시 trueTRIVY_TIMEOUT시간 초과 "10m"TRIVY_EXTRA_ARGS추가 인수 ""allow_failure실패 허용 false
include:
- component: $CI_SERVER_FQDN/niclas-zone/ci/trivy/sbom_scan_rekor@latest
inputs:
TRIVY_SCAN_REMOTE_IMAGE: "registry.gitlab.com/group/app@sha256:..."
TRIVY_REKOR_URL: "https://rekor.sigstore.dev"
TRIVY_SKIP_DIRS
allow_failure파이프라인 실패 없이 실패 허용 false
TRIVY_K8S_EXTRA_ARGS추가 인수 ""
TRIVY_REPORT_BASENAME아티팩트 기본 이름 "k8s-scan"