|
| 1 | +# security.mk - Security scanning with Trivy (https://trivy.dev) |
| 2 | + |
| 3 | +TRIVY_IMAGE := aquasec/trivy:latest |
| 4 | +TRIVY_SEVERITY ?= CRITICAL,HIGH |
| 5 | +TRIVY_CACHE_VOLUME := trivy-cache |
| 6 | + |
| 7 | +# Docker images to scan (space-separated, override or extend as needed) |
| 8 | +SCAN_IMAGES ?= evstack:local-dev |
| 9 | + |
| 10 | +# Common docker run args for Trivy |
| 11 | +TRIVY_RUN := docker run --rm \ |
| 12 | + -v $(TRIVY_CACHE_VOLUME):/root/.cache/ \ |
| 13 | + -e TRIVY_SEVERITY=$(TRIVY_SEVERITY) |
| 14 | + |
| 15 | +## trivy-scan: Run all Trivy security scans (filesystem + Docker images) |
| 16 | +trivy-scan: trivy-scan-fs trivy-scan-image |
| 17 | +.PHONY: trivy-scan |
| 18 | + |
| 19 | +## trivy-scan-fs: Scan repo for dependency vulnerabilities, misconfigs, and secrets |
| 20 | +trivy-scan-fs: |
| 21 | + @echo "--> Scanning repository filesystem with Trivy" |
| 22 | + @$(TRIVY_RUN) \ |
| 23 | + -v $(CURDIR):/workspace \ |
| 24 | + $(TRIVY_IMAGE) \ |
| 25 | + fs --scanners vuln,misconfig,secret \ |
| 26 | + --severity $(TRIVY_SEVERITY) \ |
| 27 | + /workspace |
| 28 | + @echo "--> Filesystem scan complete" |
| 29 | +.PHONY: trivy-scan-fs |
| 30 | + |
| 31 | +## trivy-scan-image: Scan built Docker images for vulnerabilities |
| 32 | +trivy-scan-image: |
| 33 | + @echo "--> Scanning Docker images with Trivy" |
| 34 | + @for img in $(SCAN_IMAGES); do \ |
| 35 | + echo "--> Scanning image: $$img"; \ |
| 36 | + $(TRIVY_RUN) \ |
| 37 | + -v /var/run/docker.sock:/var/run/docker.sock \ |
| 38 | + $(TRIVY_IMAGE) \ |
| 39 | + image --severity $(TRIVY_SEVERITY) \ |
| 40 | + $$img; \ |
| 41 | + done |
| 42 | + @echo "--> Image scan complete" |
| 43 | +.PHONY: trivy-scan-image |
0 commit comments