Skip to content

Commit 40996df

Browse files
authored
fix(helm): Check HELM_NAMESPACE env var in CKV_K8S_21 (#7355)
1 parent d4b0efe commit 40996df

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

checkov/kubernetes/checks/resource/k8s/DefaultNamespace.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from __future__ import annotations
22

3+
import os
34
from typing import Any
45

56
from checkov.common.models.enums import CheckCategories, CheckResult
@@ -37,6 +38,8 @@ def scan_spec_conf(self, conf: dict[str, Any]) -> CheckResult:
3738
if metadata:
3839
if "namespace" in metadata and metadata["namespace"] != "default":
3940
return CheckResult.PASSED
41+
if os.getenv('HELM_NAMESPACE') and os.getenv('HELM_NAMESPACE') != "default":
42+
return CheckResult.PASSED
4043

4144
# If namespace not defined it is default -> Ignore default Service account and kubernetes service
4245
if conf["kind"] == "ServiceAccount" and metadata["name"] == "default":

tests/kubernetes/checks/test_DefaultNamespace.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import os
22
import unittest
3+
from unittest import mock
34

45
from checkov.kubernetes.checks.resource.k8s.DefaultNamespace import check
56
from checkov.kubernetes.runner import Runner
@@ -21,6 +22,19 @@ def test_summary(self):
2122
self.assertEqual(summary['skipped'], 0)
2223
self.assertEqual(summary['parsing_errors'], 0)
2324

25+
@mock.patch.dict(os.environ, {"HELM_NAMESPACE": "non-default"})
26+
def test_summary_with_env_var(self):
27+
runner = Runner()
28+
current_dir = os.path.dirname(os.path.realpath(__file__))
29+
test_files_dir = current_dir + "/example_DefaultNamespace"
30+
report = runner.run(root_folder=test_files_dir, runner_filter=RunnerFilter(checks=[check.id]))
31+
summary = report.get_summary()
32+
33+
self.assertEqual(summary['passed'], 11)
34+
self.assertEqual(summary['failed'], 0)
35+
self.assertEqual(summary['skipped'], 0)
36+
self.assertEqual(summary['parsing_errors'], 0)
37+
2438

2539
if __name__ == '__main__':
2640
unittest.main()

0 commit comments

Comments
 (0)