17
17
# Clear any previous outputs
18
18
rm -rf image-scan-output
19
19
20
- # Make a fresh output directory
21
- mkdir -p image-scan-output
20
+ # Make fresh output directories
21
+ mkdir -p image-scan-output image-sboms
22
22
23
23
# Get built container images
24
24
docker image ls --filter " reference=ark.stackhpc.com/stackhpc-dev/*:$2 " > $1 -scanned-container-images.txt
@@ -40,6 +40,7 @@ for image in $images; do
40
40
global_vulnerabilities=$( yq .global_allowed_vulnerabilities[] src/kayobe-config/etc/kayobe/trivy/allowed-vulnerabilities.yml)
41
41
image_vulnerabilities=$( yq .$imagename ' _allowed_vulnerabilities[]' src/kayobe-config/etc/kayobe/trivy/allowed-vulnerabilities.yml)
42
42
touch .trivyignore
43
+ mkdir -p image-scan-output/$filename
43
44
for vulnerability in $global_vulnerabilities ; do
44
45
echo $vulnerability >> .trivyignore
45
46
done
@@ -52,22 +53,22 @@ for image in $images; do
52
53
--scanners vuln \
53
54
--format json \
54
55
--severity HIGH,CRITICAL \
55
- --output image-scan-output/${filename} .json \
56
+ --output image-scan-output/${filename} / ${filename} .json \
56
57
--ignore-unfixed \
57
58
--db-repository ghcr.io/aquasecurity/trivy-db:2 \
58
59
--db-repository public.ecr.aws/aquasecurity/trivy-db \
59
60
--java-db-repository ghcr.io/aquasecurity/trivy-java-db:1 \
60
61
--java-db-repository public.ecr.aws/aquasecurity/trivy-java-db \
61
62
$image ) ; then
62
63
# Clean up the output file for any images with no vulnerabilities
63
- rm -f image-scan-output/${filename} .json
64
+ rm -f image-scan-output/${filename} / ${filename} .json
64
65
65
66
# Add the image to the clean list
66
67
echo " ${image} " >> image-scan-output/clean-images.txt
67
68
else
68
69
69
70
# Write a header for the summary CSV
70
- echo ' "PkgName","PkgPath","PkgID","VulnerabilityID","FixedVersion","PrimaryURL","Severity"' > image-scan-output/${filename} .summary.csv
71
+ echo ' "PkgName","PkgPath","PkgID","VulnerabilityID","FixedVersion","PrimaryURL","Severity"' > image-scan-output/${filename} / ${filename} .summary.csv
71
72
72
73
# Write the summary CSV data
73
74
jq -r ' .Results[]
@@ -88,15 +89,23 @@ for image in $images; do
88
89
]
89
90
)
90
91
| .[]
91
- | @csv' image-scan-output/${filename} .json >> image-scan-output/${filename} .summary.csv
92
+ | @csv' image-scan-output/${filename} / ${filename} .json >> image-scan-output/ ${filename} /${filename} .summary.csv
92
93
93
- if [ $( grep " CRITICAL" image-scan-output/${filename} .summary.csv -c) -gt 0 ]; then
94
+ if [ $( grep " CRITICAL" image-scan-output/${filename} / ${filename} .summary.csv -c) -gt 0 ]; then
94
95
# If the image contains critical vulnerabilities, add the image to critical list
95
96
echo " ${image} " >> image-scan-output/critical-images.txt
96
97
else
97
98
# Otherwise, add the image to the dirty list
98
99
echo " ${image} " >> image-scan-output/dirty-images.txt
99
100
fi
100
101
fi
101
- rm .trivyignore
102
+ trivy image \
103
+ --quiet \
104
+ --format spdx \
105
+ --output image-scan-output/${filename} /${filename} -sbom.spdx \
106
+ --db-repository ghcr.io/aquasecurity/trivy-db:2 \
107
+ --db-repository public.ecr.aws/aquasecurity/trivy-db \
108
+ --java-db-repository ghcr.io/aquasecurity/trivy-java-db:1 \
109
+ --java-db-repository public.ecr.aws/aquasecurity/trivy-java-db \
110
+ $image
102
111
done
0 commit comments