Skip to content

Commit d72b936

Browse files
wip: added BYPASS_CVE_DENIED as env for bypassing fail on CVE
Signed-off-by: Rahul Vishwakarma <[email protected]>
1 parent c03ffc0 commit d72b936

File tree

4 files changed

+29
-4
lines changed

4 files changed

+29
-4
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
APP_NAME = k8s-custom-controller
22
DOCKER_USER = manzilrahul
3-
VERSION ?= 1.0.11
3+
VERSION ?= 1.0.14
44
IMAGE_NAME = $(DOCKER_USER)/$(APP_NAME)
55

66
# 🖼️ Logo banner

main.go

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,8 @@ func main() {
138138
go func() {
139139
http.HandleFunc("/validate", ValidateDeployment)
140140
log.Println("Starting webhook server on :8000...")
141-
err := http.ListenAndServeTLS(":8000", "certs/tls.crt", "certs/tls.key", nil)
141+
// local go for certs/tls.crt and certs/tls.key
142+
err := http.ListenAndServeTLS(":8000", "/certs/tls.crt", "/certs/tls.key", nil) // k8s
142143
if err != nil {
143144
log.Fatalf("Failed to start webhook server: %v", err)
144145
}
@@ -241,15 +242,27 @@ func ValidateDeployment(w http.ResponseWriter, r *http.Request) {
241242
images := []string{}
242243
denied := false
243244
var reasons []string
245+
BYPASS_CVE_DENIED := false
244246
// InitContainers
245247
for _, c := range dep.Spec.Template.Spec.InitContainers {
248+
for _, e := range c.Env {
249+
if e.Name == "BYPASS_CVE_DENIED" && (e.Value == "yes" || e.Value == "true") {
250+
BYPASS_CVE_DENIED = true
251+
}
252+
}
246253
images = append(images, c.Image)
247254
}
248255
// Containers
249256
for _, c := range dep.Spec.Template.Spec.Containers {
257+
for _, e := range c.Env {
258+
if e.Name == "BYPASS_CVE_DENIED" && (e.Value == "yes" || e.Value == "true") {
259+
BYPASS_CVE_DENIED = true
260+
}
261+
}
250262
images = append(images, c.Image)
251263
}
252264
for _, image := range images {
265+
log.Printf("started scanning for [ %s ]", image)
253266
ok, vulns, err := scanImageWithTrivy(image)
254267
if err != nil {
255268
log.Printf("Error scanning image %s: %v", image, err)
@@ -262,7 +275,14 @@ func ValidateDeployment(w http.ResponseWriter, r *http.Request) {
262275
}
263276
message := "Images allowed"
264277
if denied {
265-
message = fmt.Sprintf("Denied images due to CVEs: %v", reasons)
278+
message = fmt.Sprintf("Denied images due to total CVEs across %v images: %v", len(images), reasons)
279+
log.Printf("Denied images due to CVEs: %v", reasons)
280+
}
281+
282+
// look for BYPASS_CVE env - you need to skip
283+
if BYPASS_CVE_DENIED {
284+
log.Printf("It have CVE across all the %v images, but we are skipping as BYPASS_CVE_DENIED set true", len(images))
285+
denied = false
266286
}
267287

268288
log.Printf("Validating Deployment: %s, Images: %v", dep.Name, images)

manifest/k8s-controller-webhook.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ spec:
6767
spec:
6868
containers:
6969
- name: k8s-controller
70-
image: manzilrahul/k8s-custom-controller:1.0.11
70+
image: manzilrahul/k8s-custom-controller:1.0.14
7171
volumeMounts:
7272
- name: webhook-certs
7373
mountPath: /certs
@@ -77,6 +77,8 @@ spec:
7777
value: "/certs/tls.crt"
7878
- name: TLS_KEY_FILE
7979
value: "/certs/tls.key"
80+
# - name: BYPASS_CVE_DENIED
81+
# value: "yes" # yes or true (lowercase)
8082
volumes:
8183
- name: webhook-certs
8284
secret:

manifest/webhook-example/ZeroInitCVE.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,6 @@ spec:
2222
image: nginx:1.19 # Will have CVEs
2323
ports:
2424
- containerPort: 80
25+
env:
26+
- name: BYPASS_CVE_DENIED
27+
value: "yes" # yes or true (lowercase)

0 commit comments

Comments
 (0)