Skip to content

Commit 222eddc

Browse files
committed
Script for checking if there are updates available for keycloak container image
Signed-off-by: stianst <stianst@gmail.com>
1 parent 7935832 commit 222eddc

1 file changed

Lines changed: 61 additions & 0 deletions

File tree

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#!/bin/bash -e
2+
3+
CONTAINER_TOOL=$( which podman &>/dev/null && echo "podman" || echo "docker" )
4+
ORIGINAL_IMAGE="quay.io/keycloak/keycloak:latest"
5+
6+
cd $(mktemp -d -t kc-container-scan-XXXX)
7+
8+
#cp ~/dev/keycloak/quarkus/container/* .
9+
10+
#mkdir keycloak-empty
11+
#tar cfvz keycloak-empty.tar.gz keycloak-empty
12+
13+
echo -n "Pulling image: "
14+
$CONTAINER_TOOL pull -q $ORIGINAL_IMAGE
15+
16+
CONTAINER_VERSION=$($CONTAINER_TOOL image inspect quay.io/keycloak/keycloak:latest | jq -r '.[].Config.Labels.version')
17+
RELEASE_BRANCH=$(echo $CONTAINER_VERSION | awk -F '.' '{ print "release/"$1"."$2 }')
18+
19+
echo "Container version: $CONTAINER_VERSION"
20+
echo "Release branch: $RELEASE_BRANCH"
21+
22+
echo ""
23+
echo -n "Building mock image: "
24+
25+
curl -s -o Dockerfile https://raw.githubusercontent.com/keycloak/keycloak/refs/heads/$RELEASE_BRANCH/quarkus/container/Dockerfile
26+
curl -s -o ubi-null.sh https://raw.githubusercontent.com/keycloak/keycloak/refs/heads/$RELEASE_BRANCH/quarkus/container/ubi-null.sh
27+
28+
mkdir keycloak-empty
29+
tar cfz keycloak-empty.tar.gz keycloak-empty
30+
31+
$CONTAINER_TOOL build -q --build-arg KEYCLOAK_DIST=keycloak-empty.tar.gz -t keycloak-scan-tmp .
32+
33+
echo ""
34+
35+
echo -n "Scanning $ORIGINAL_IMAGE: "
36+
trivy image -q --scanners vuln $ORIGINAL_IMAGE -s MEDIUM,HIGH,CRITICAL --skip-dirs /opt/keycloak --format json > report-current.json
37+
echo "report-current.json"
38+
39+
echo -n "Scanning mock image: "
40+
trivy image -q --scanners vuln keycloak-scan-tmp -s MEDIUM,HIGH,CRITICAL --skip-dirs /opt/keycloak --format json > report-updated.json
41+
echo "report-updated.json"
42+
43+
list_resolved_cves() {
44+
for CVE in $(jq -r '.Results[].Vulnerabilities[] | .VulnerabilityID' report-current.json); do
45+
jq -e '.Results[].Vulnerabilities[] | select(.VulnerabilityID == "'$CVE'")' report-updated.json &>/dev/null || echo $CVE
46+
done
47+
}
48+
49+
echo ""
50+
51+
RESOLVED_CVES=$(list_resolved_cves)
52+
53+
if [ "$RESOLVED_CVES" == "" ]; then
54+
echo "NO FIXES AVAILABLE!"
55+
else
56+
echo "RESOLVED CVEs:"
57+
echo "--------------"
58+
for CVE in $RESOLVED_CVES; do
59+
jq -r '.Results[].Vulnerabilities[] | select(.VulnerabilityID == "'$CVE'") | "\(.VulnerabilityID) (\(.Severity) \(.PkgName))"' report-current.json
60+
done
61+
fi

0 commit comments

Comments
 (0)