devsecops-engine-tools 1.7.12__py3-none-any.whl → 1.7.14__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of devsecops-engine-tools might be problematic. Click here for more details.

Files changed (17) hide show
  1. devsecops_engine_tools/engine_core/src/domain/usecases/handle_scan.py +1 -1
  2. devsecops_engine_tools/engine_sca/engine_container/src/applications/runner_container_scan.py +4 -4
  3. devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/container_sca_scan.py +7 -33
  4. devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/handle_remote_config_patterns.py +10 -45
  5. devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/set_input_core.py +31 -55
  6. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/docker/docker_images.py +1 -1
  7. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/prisma_cloud_manager_scan.py +24 -28
  8. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/prisma_deserialize_output.py +6 -2
  9. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/trivy_deserialize_output.py +4 -1
  10. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/entry_points/entry_point_tool.py +29 -11
  11. devsecops_engine_tools/version.py +1 -1
  12. devsecops_engine_tools-1.7.14.dist-info/METADATA +120 -0
  13. {devsecops_engine_tools-1.7.12.dist-info → devsecops_engine_tools-1.7.14.dist-info}/RECORD +16 -16
  14. devsecops_engine_tools-1.7.12.dist-info/METADATA +0 -156
  15. {devsecops_engine_tools-1.7.12.dist-info → devsecops_engine_tools-1.7.14.dist-info}/WHEEL +0 -0
  16. {devsecops_engine_tools-1.7.12.dist-info → devsecops_engine_tools-1.7.14.dist-info}/entry_points.txt +0 -0
  17. {devsecops_engine_tools-1.7.12.dist-info → devsecops_engine_tools-1.7.14.dist-info}/top_level.txt +0 -0
@@ -110,7 +110,7 @@ class HandleScan:
110
110
  else:
111
111
  secret_sca = dict_args["token_engine_container"]
112
112
  findings_list, input_core = runner_engine_container(
113
- dict_args, config_tool, secret_sca, self.devops_platform_gateway
113
+ dict_args, config_tool["ENGINE_CONTAINER"]["TOOL"], secret_sca, self.devops_platform_gateway
114
114
  )
115
115
  if (
116
116
  dict_args["use_vulnerability_management"] == "true"
@@ -18,12 +18,12 @@ from devsecops_engine_tools.engine_sca.engine_container.src.infrastructure.drive
18
18
  )
19
19
 
20
20
 
21
- def runner_engine_container(dict_args, config_tool, token, tool_remote):
21
+ def runner_engine_container(dict_args, tool, token, tool_remote):
22
22
  try:
23
- if config_tool["ENGINE_CONTAINER"]["TOOL"].lower() == "trivy":
23
+ if tool.lower() == "trivy":
24
24
  tool_run = TrivyScan()
25
25
  tool_deseralizator = TrivyDeserializator()
26
- elif config_tool["ENGINE_CONTAINER"]["TOOL"].lower() == "prisma":
26
+ elif tool.lower() == "prisma":
27
27
  tool_run = PrismaCloudManagerScan()
28
28
  tool_deseralizator = PrismaDeserealizator()
29
29
  tool_images = DockerImages()
@@ -34,7 +34,7 @@ def runner_engine_container(dict_args, config_tool, token, tool_remote):
34
34
  tool_deseralizator,
35
35
  dict_args,
36
36
  token,
37
- config_tool,
37
+ tool,
38
38
  )
39
39
 
40
40
  except Exception as e:
@@ -1,6 +1,3 @@
1
- from devsecops_engine_tools.engine_core.src.domain.model.gateway.devops_platform_gateway import (
2
- DevopsPlatformGateway,
3
- )
4
1
  from devsecops_engine_tools.engine_sca.engine_container.src.domain.model.gateways.tool_gateway import (
5
2
  ToolGateway,
6
3
  )
@@ -11,33 +8,23 @@ from devsecops_engine_tools.engine_sca.engine_container.src.domain.model.gateway
11
8
  DeseralizatorGateway,
12
9
  )
13
10
 
11
+
14
12
  class ContainerScaScan:
15
13
  def __init__(
16
14
  self,
17
15
  tool_run: ToolGateway,
18
- tool_remote: DevopsPlatformGateway,
16
+ remote_config,
19
17
  tool_images: ImagesGateway,
20
18
  tool_deseralizator: DeseralizatorGateway,
21
- dict_args,
19
+ build_id,
22
20
  token,
23
- skip_flag
24
21
  ):
25
22
  self.tool_run = tool_run
26
- self.tool_remote = tool_remote
23
+ self.remote_config = remote_config
27
24
  self.tool_images = tool_images
28
25
  self.tool_deseralizator = tool_deseralizator
29
- self.dict_args = dict_args
26
+ self.build_id = build_id
30
27
  self.token = token
31
- self.skip_flag = skip_flag
32
-
33
- def get_remote_config(self, file_path):
34
- """
35
- Get remote configuration.
36
-
37
- Returns:
38
- dict: Remote configuration.
39
- """
40
- return self.tool_remote.get_remote_config(self.dict_args["remote_config_repo"], file_path)
41
28
 
42
29
  def scan_image(self):
43
30
  """
@@ -48,15 +35,6 @@ class ContainerScaScan:
48
35
  """
49
36
  return self.tool_images.list_images()
50
37
 
51
- def get_variable(self, variable):
52
- """
53
- Get variable.
54
-
55
- Returns:
56
- dict: Remote variable.
57
- """
58
- return self.tool_remote.get_variable(variable)
59
-
60
38
  def process(self):
61
39
  """
62
40
  Process SCA scanning.
@@ -65,11 +43,7 @@ class ContainerScaScan:
65
43
  dict: SCA scanning results.
66
44
  """
67
45
  return self.tool_run.run_tool_container_sca(
68
- self.get_remote_config("engine_sca/engine_container/ConfigTool.json"),
69
- self.token,
70
- self.scan_image(),
71
- self.get_variable("build_id"),
72
- self.skip_flag
46
+ self.remote_config, self.token, self.scan_image(), self.build_id
73
47
  )
74
48
 
75
49
  def deseralizator(self, image_scanned):
@@ -79,4 +53,4 @@ class ContainerScaScan:
79
53
  Returns:
80
54
  list: Deserialized list of findings.
81
55
  """
82
- return self.tool_deseralizator.get_list_findings(image_scanned)
56
+ return self.tool_deseralizator.get_list_findings(image_scanned)
@@ -1,67 +1,32 @@
1
1
  import re
2
- from devsecops_engine_tools.engine_core.src.domain.model.gateway.devops_platform_gateway import (
3
- DevopsPlatformGateway,
4
- )
5
2
 
6
3
 
7
4
  class HandleRemoteConfigPatterns:
8
- def __init__(
9
- self,
10
- tool_remote: DevopsPlatformGateway,
11
- dict_args,
12
- ):
13
- self.tool_remote = tool_remote
14
- self.dict_args = dict_args
5
+ def __init__(self, remote_config, exclusions, pipeline_name):
6
+ self.remote_config = remote_config
7
+ self.exclusions = exclusions
8
+ self.pipeline_name = pipeline_name
15
9
 
16
- def get_remote_config(self, file_path):
17
- """
18
- Get remote configuration
19
- Return: dict: Remote configuration
20
- """
21
- return self.tool_remote.get_remote_config(
22
- self.dict_args["remote_config_repo"], file_path
23
- )
24
-
25
- def get_variable(self, variable):
26
- """
27
- Get variable.
28
-
29
- Returns:
30
- dict: Remote variable.
31
- """
32
- return self.tool_remote.get_variable(variable)
33
-
34
10
  def ignore_analysis_pattern(self):
35
11
  """
36
12
  Handle analysis pattern.
37
13
  Return: bool: False -> not scan, True -> scan.
38
14
  """
39
- ignore = self.get_remote_config("engine_sca/engine_container/ConfigTool.json")["IGNORE_SEARCH_PATTERN"]
40
- if re.match(ignore, self.get_variable("pipeline_name"), re.IGNORECASE):
15
+ ignore = self.remote_config["IGNORE_SEARCH_PATTERN"]
16
+ if re.match(ignore, self.pipeline_name, re.IGNORECASE):
41
17
  return False
42
18
  else:
43
19
  return True
44
-
45
- def handle_skip_tool(self, exclusions, pipeline_name):
20
+
21
+ def skip_from_exclusion(self):
46
22
  """
47
23
  Handle skip tool.
48
24
 
49
25
  Return: bool: True -> skip tool, False -> not skip tool.
50
26
  """
51
- if (pipeline_name in exclusions) and (
52
- exclusions[pipeline_name].get("SKIP_TOOL", 0)
27
+ if (self.pipeline_name in self.exclusions) and (
28
+ self.exclusions[self.pipeline_name].get("SKIP_TOOL", 0)
53
29
  ):
54
30
  return True
55
31
  else:
56
32
  return False
57
-
58
- def process_handle_skip_tool(self):
59
- """
60
- Process handle skip tool.
61
-
62
- Return: bool: True -> skip tool, False -> not skip tool.
63
- """
64
- return self.handle_skip_tool(
65
- self.get_remote_config("engine_sca/engine_container/Exclusions.json"),
66
- self.get_variable("pipeline_name"),
67
- )
@@ -1,54 +1,34 @@
1
1
  from devsecops_engine_tools.engine_core.src.domain.model.input_core import InputCore
2
2
  from devsecops_engine_tools.engine_core.src.domain.model.threshold import Threshold
3
- from devsecops_engine_tools.engine_core.src.domain.model.gateway.devops_platform_gateway import (
4
- DevopsPlatformGateway,
5
- )
3
+
6
4
 
7
5
  from devsecops_engine_tools.engine_core.src.domain.model.exclusions import Exclusions
8
6
 
9
7
 
10
8
  class SetInputCore:
11
- def __init__(self, tool_remote: DevopsPlatformGateway, dict_args, config_tool):
12
- self.tool_remote = tool_remote
13
- self.dict_args = dict_args
14
- self.config_tool = config_tool
15
-
16
- def get_remote_config(self, file_path):
17
- """
18
- Get remote configuration.
19
-
20
- Returns:
21
- dict: Remote configuration.
22
- """
23
- return self.tool_remote.get_remote_config(self.dict_args["remote_config_repo"], file_path)
24
-
25
- def get_variable(self, variable):
26
- """
27
- Get variable.
28
-
29
- Returns:
30
- dict: Remote variable.
31
- """
32
- return self.tool_remote.get_variable(variable)
33
-
34
- def get_exclusions(self, exclusions_data, pipeline_name, config_tool):
35
- list_exclusions = []
36
- for key, value in exclusions_data.items():
37
- if (key == "All") or (key == pipeline_name):
38
- exclusions = [
39
- Exclusions(
40
- id=item.get("id", ""),
41
- where=item.get("where", ""),
42
- cve_id=item.get("cve_id", ""),
43
- create_date=item.get("create_date", ""),
44
- expired_date=item.get("expired_date", ""),
45
- severity=item.get("severity", ""),
46
- hu=item.get("hu", ""),
47
- reason=item.get("reason", "Risk acceptance"),
48
- )
49
- for item in value[config_tool["ENGINE_CONTAINER"]["TOOL"]]
50
- ]
51
- list_exclusions.extend(exclusions)
9
+ def __init__(self, remote_config, exclusions, pipeline_name, tool, stage):
10
+ self.remote_config = remote_config
11
+ self.exclusions = exclusions
12
+ self.pipeline_name = pipeline_name
13
+ self.tool = tool
14
+ self.stage = stage
15
+
16
+ def get_exclusions(self, exclusions_data, pipeline_name, tool):
17
+ list_exclusions = [
18
+ Exclusions(
19
+ id=item.get("id", ""),
20
+ where=item.get("where", ""),
21
+ cve_id=item.get("cve_id", ""),
22
+ create_date=item.get("create_date", ""),
23
+ expired_date=item.get("expired_date", ""),
24
+ severity=item.get("severity", ""),
25
+ hu=item.get("hu", ""),
26
+ reason=item.get("reason", "Risk acceptance"),
27
+ )
28
+ for key, value in exclusions_data.items()
29
+ if key in {"All", pipeline_name} and value.get(tool)
30
+ for item in value[tool]
31
+ ]
52
32
  return list_exclusions
53
33
 
54
34
  def set_input_core(self, images_scanned):
@@ -60,17 +40,13 @@ class SetInputCore:
60
40
  """
61
41
  return InputCore(
62
42
  self.get_exclusions(
63
- self.get_remote_config("engine_sca/engine_container/Exclusions.json"),
64
- self.get_variable("pipeline_name"),
65
- self.config_tool,
66
- ),
67
- Threshold(
68
- self.get_remote_config("engine_sca/engine_container/ConfigTool.json")["THRESHOLD"]
43
+ self.exclusions,
44
+ self.pipeline_name,
45
+ self.tool,
69
46
  ),
47
+ Threshold(self.remote_config["THRESHOLD"]),
70
48
  images_scanned[-1] if images_scanned else None,
71
- self.get_remote_config("engine_sca/engine_container/ConfigTool.json")[
72
- "MESSAGE_INFO_ENGINE_CONTAINER"
73
- ],
74
- self.get_variable("pipeline_name"),
75
- self.get_variable("stage").capitalize(),
49
+ self.remote_config["MESSAGE_INFO_ENGINE_CONTAINER"],
50
+ self.pipeline_name,
51
+ self.stage.capitalize(),
76
52
  )
@@ -19,4 +19,4 @@ class DockerImages(ImagesGateway):
19
19
  print("Created date last image:", latest_image.attrs["Created"])
20
20
  return latest_image
21
21
  except subprocess.CalledProcessError as e:
22
- raise ValueError(f"Error listing images:{e.stderr}")
22
+ raise ValueError(f"Error listing images:{e.stderr}")
@@ -3,7 +3,6 @@ import requests
3
3
  import os
4
4
  import subprocess
5
5
  import logging
6
- import re
7
6
  import base64
8
7
  from devsecops_engine_tools.engine_sca.engine_container.src.infrastructure.helpers.images_scanned import (
9
8
  ImagesScanned,
@@ -87,37 +86,34 @@ class PrismaCloudManagerScan(ToolGateway):
87
86
 
88
87
  return images_scanned
89
88
 
90
- def run_tool_container_sca(
91
- self, remoteconfig, prisma_secret_key, image, build_id, skip_flag
92
- ):
89
+ def run_tool_container_sca(self, remoteconfig, prisma_secret_key, image, build_id):
93
90
  images_scanned = []
94
- if not (skip_flag):
95
- try:
96
- file_path = os.path.join(
97
- os.getcwd(), remoteconfig["PRISMA_CLOUD"]["TWISTCLI_PATH"]
98
- )
91
+ try:
92
+ file_path = os.path.join(
93
+ os.getcwd(), remoteconfig["PRISMA_CLOUD"]["TWISTCLI_PATH"]
94
+ )
99
95
 
100
- if not os.path.exists(file_path):
101
- self.download_twistcli(
102
- file_path,
103
- remoteconfig["PRISMA_CLOUD"]["PRISMA_ACCESS_KEY"],
104
- prisma_secret_key,
105
- remoteconfig["PRISMA_CLOUD"]["PRISMA_CONSOLE_URL"],
106
- remoteconfig["PRISMA_CLOUD"]["PRISMA_API_VERSION"],
107
- )
108
- images_scanned.extend(
109
- self.scan_image(
110
- file_path,
111
- image,
112
- remoteconfig,
113
- prisma_secret_key,
114
- build_id,
115
- )
96
+ if not os.path.exists(file_path):
97
+ self.download_twistcli(
98
+ file_path,
99
+ remoteconfig["PRISMA_CLOUD"]["PRISMA_ACCESS_KEY"],
100
+ prisma_secret_key,
101
+ remoteconfig["PRISMA_CLOUD"]["PRISMA_CONSOLE_URL"],
102
+ remoteconfig["PRISMA_CLOUD"]["PRISMA_API_VERSION"],
103
+ )
104
+ images_scanned.extend(
105
+ self.scan_image(
106
+ file_path,
107
+ image,
108
+ remoteconfig,
109
+ prisma_secret_key,
110
+ build_id,
116
111
  )
112
+ )
117
113
 
118
- return images_scanned
114
+ return images_scanned
119
115
 
120
- except Exception as ex:
121
- logger.error(f"An overall error occurred: {ex}")
116
+ except Exception as ex:
117
+ logger.error(f"An overall error occurred: {ex}")
122
118
 
123
119
  return images_scanned
@@ -31,8 +31,12 @@ class PrismaDeserealizator(DeseralizatorGateway):
31
31
  image_object = file.read()
32
32
 
33
33
  json_data = json.loads(image_object)
34
- vulnerabilities_data = json_data["results"][0]["vulnerabilities"] if "vulnerabilities" in json_data["results"][0] else []
35
-
34
+ vulnerabilities_data = (
35
+ json_data["results"][0]["vulnerabilities"]
36
+ if "vulnerabilities" in json_data["results"][0]
37
+ else []
38
+ )
39
+
36
40
  # Create a list of findings instances from the JSON data
37
41
  vulnerabilities = [
38
42
  Finding(
@@ -9,6 +9,7 @@ from dataclasses import dataclass
9
9
  import json
10
10
  from datetime import datetime
11
11
 
12
+
12
13
  @dataclass
13
14
  class TrivyDeserializator(DeseralizatorGateway):
14
15
  def get_list_findings(self, images_scanned: list) -> "list[Finding]":
@@ -34,7 +35,9 @@ class TrivyDeserializator(DeseralizatorGateway):
34
35
  + vul.get("InstalledVersion", ""),
35
36
  description=vul.get("Description", "").replace("\n", ""),
36
37
  severity=vul.get("Severity", "").lower(),
37
- identification_date=datetime.now().strftime("%d-%m-%Y %H:%M:%S"),
38
+ identification_date=datetime.now().strftime(
39
+ "%d-%m-%Y %H:%M:%S"
40
+ ),
38
41
  published_date_cve=vul.get("PublishedDate", ""),
39
42
  module="engine_container",
40
43
  category=Category.VULNERABILITY,
@@ -7,6 +7,10 @@ from devsecops_engine_tools.engine_sca.engine_container.src.domain.usecases.hand
7
7
  from devsecops_engine_tools.engine_sca.engine_container.src.domain.usecases.set_input_core import (
8
8
  SetInputCore,
9
9
  )
10
+ from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
11
+ from devsecops_engine_tools.engine_utilities import settings
12
+
13
+ logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
10
14
 
11
15
 
12
16
  def init_engine_sca_rm(
@@ -16,25 +20,39 @@ def init_engine_sca_rm(
16
20
  tool_deseralizator,
17
21
  dict_args,
18
22
  token,
19
- config_tool,
23
+ tool,
20
24
  ):
21
- handle_remote_config_patterns = HandleRemoteConfigPatterns(tool_remote, dict_args)
22
- flag = handle_remote_config_patterns.ignore_analysis_pattern()
25
+ remote_config = tool_remote.get_remote_config(
26
+ dict_args["remote_config_repo"], "engine_sca/engine_container/ConfigTool.json"
27
+ )
28
+ exclusions = tool_remote.get_remote_config(
29
+ dict_args["remote_config_repo"], "engine_sca/engine_container/Exclusions.json"
30
+ )
31
+ pipeline_name = tool_remote.get_variable("pipeline_name")
32
+ handle_remote_config_patterns = HandleRemoteConfigPatterns(
33
+ remote_config, exclusions, pipeline_name
34
+ )
35
+ skip_flag = handle_remote_config_patterns.skip_from_exclusion()
36
+ scan_flag = handle_remote_config_patterns.ignore_analysis_pattern()
37
+ build_id = tool_remote.get_variable("build_id")
38
+ stage = tool_remote.get_variable("stage")
23
39
  images_scanned = []
24
40
  deseralized = []
25
- if flag:
41
+ input_core = SetInputCore(remote_config, exclusions, pipeline_name, tool, stage)
42
+ if scan_flag and not (skip_flag):
26
43
  container_sca_scan = ContainerScaScan(
27
44
  tool_run,
28
- tool_remote,
45
+ remote_config,
29
46
  tool_images,
30
47
  tool_deseralizator,
31
- dict_args,
48
+ build_id,
32
49
  token,
33
- handle_remote_config_patterns.process_handle_skip_tool(),
34
50
  )
35
51
  images_scanned = container_sca_scan.process()
36
52
  deseralized = container_sca_scan.deseralizator(images_scanned)
37
- input_core = SetInputCore(tool_remote, dict_args, config_tool)
38
-
39
- return deseralized, input_core.set_input_core(images_scanned
40
- )
53
+ else:
54
+ print("Tool skipped by DevSecOps policy")
55
+ logger.info("Tool skipped by DevSecOps policy")
56
+ core_input = input_core.set_input_core(images_scanned)
57
+
58
+ return deseralized, core_input
@@ -1 +1 @@
1
- version = '1.7.12'
1
+ version = '1.7.14'
@@ -0,0 +1,120 @@
1
+ Metadata-Version: 2.1
2
+ Name: devsecops-engine-tools
3
+ Version: 1.7.14
4
+ Summary: Tool for DevSecOps strategy
5
+ Home-page: https://github.com/bancolombia/devsecops-engine-tools
6
+ Author: Bancolombia DevSecOps Team
7
+ Author-email: devsecops@bancolombia.com.co
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
10
+ Classifier: Operating System :: OS Independent
11
+ Requires-Python: >=3.8
12
+ Description-Content-Type: text/markdown
13
+ Requires-Dist: requests ==2.31.0
14
+ Requires-Dist: multipledispatch ==0.6.0
15
+ Requires-Dist: PyYAML ==6.0.1
16
+ Requires-Dist: checkov ==2.3.296
17
+ Requires-Dist: pyfiglet ==0.7
18
+ Requires-Dist: prettytable ==3.8.0
19
+ Requires-Dist: azure-devops ==7.1.0b3
20
+ Requires-Dist: marshmallow ==3.19.0
21
+ Requires-Dist: pytz ==2023.3
22
+ Requires-Dist: python-decouple ==3.8
23
+ Requires-Dist: requests-toolbelt ==1.0.0
24
+ Requires-Dist: python-dateutil ==2.8.2
25
+ Requires-Dist: pexpect ==4.9.0
26
+
27
+ # DevSecOps Engine Tools
28
+
29
+ [![Maintained by Bancolombia](https://img.shields.io/badge/maintained_by-Bancolombia-yellow)](#)
30
+ [![Build](https://github.com/bancolombia/devsecops-engine-tools/actions/workflows/build.yml/badge.svg)](https://github.com/bancolombia/devsecops-engine-tools/actions/workflows/build.yml)
31
+ [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=bancolombia_devsecops-engine-tools&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=bancolombia_devsecops-engine-tools)
32
+ [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=bancolombia_devsecops-engine-tools&metric=coverage)](https://sonarcloud.io/summary/new_code?id=bancolombia_devsecops-engine-tools)
33
+ [![Python Version](https://img.shields.io/badge/python%20-%203.8%20%7C%203.9%20%7C%203.10%20%7C%203.11%20%7C%203.12%20-blue)](#)
34
+
35
+ # Objective
36
+
37
+ Tool that unifies the evaluation of the different devsecops practices being agnostic to the devops platform, using both open source and market tools.
38
+
39
+ # Component
40
+
41
+ 📦 [tools](https://github.com/bancolombia/devsecops-engine-tools/tree/trunk/tools): DevSecOps Practice Modules
42
+
43
+ # Communications channel
44
+
45
+ Here are the channels we use to communicate about the project:
46
+
47
+ **1. Mailing list:** You can join our mailing list to always be informed at the following link: [CommunityDevsecopsEngine](https://groups.google.com/g/CommunityDevsecopsEngine)
48
+
49
+ **2. Email:** You can write to us by email: MaintainersDevsecopsEngine@googlegroups.com
50
+
51
+ # Getting started
52
+
53
+ ### Requirements
54
+
55
+ - Python >= 3.8
56
+
57
+ ### Installation
58
+
59
+ ```bash
60
+ pip3 install devsecops-engine-tools
61
+ ```
62
+
63
+ ### Scan running - flags (CLI)
64
+
65
+ ```bash
66
+ devsecops-engine-tools --platform_devops ["local","azure"] --remote_config_repo ["remote_config_repo"] --tool ["engine_iac", "engine_dast", "engine_secret", "engine_dependencies", "engine_container"] --folder_path ["Folder path scan engine_iac"] --platform ["eks","openshift"] --use_secrets_manager ["false", "true"] --use_vulnerability_management ["false", "true"] --send_metrics ["false", "true"] --token_cmdb ["token_cmdb"] --token_vulnerability_management ["token_vulnerability_management"] --token_engine_container ["token_engine_container"] --token_engine_dependencies ["token_engine_dependencies"]
67
+ ```
68
+
69
+ ### Structure Remote Config
70
+ [example_remote_config_local](https://github.com/bancolombia/devsecops-engine-tools/blob/trunk/example_remote_config_local/)
71
+ ```bash
72
+ 📦Remote_Config
73
+ ┣ 📂engine_core
74
+ ┃ ┗ 📜ConfigTool.json
75
+ ┣ 📂engine_sast
76
+ ┃ ┗ 📂engine_iac
77
+ ┃ ┗ 📜ConfigTool.json
78
+ ┃ ┗ 📜Exclusions.json
79
+ ┃ ┗ 📂engine_secret
80
+ ┃ ┗ 📜ConfigTool.json
81
+ ┣ 📂engine_sca
82
+ ┃ ┗ 📂engine_container
83
+ ┃ ┗ 📜ConfigTool.json
84
+ ┃ ┗ 📜Exclusions.json
85
+ ┃ ┗ 📂engine_dependencies
86
+ ┃ ┗ 📜ConfigTool.json
87
+ ┃ ┗ 📜Exclusions.json
88
+ ```
89
+ ### Scan running sample (CLI) - Local
90
+
91
+ > Complete the value in **.envdetlocal** file a set in execution environment
92
+ ```
93
+ $ set -a
94
+ $ source .envdetlocal
95
+ $ set +a
96
+ ```
97
+
98
+
99
+ ```bash
100
+ devsecops-engine-tools --platform_devops local --remote_config_repo DevSecOps_Remote_Config --tool engine_iac
101
+
102
+ ```
103
+ ### Scan result sample (CLI)
104
+
105
+ ![Dashboard Grafana](docs/demo_session.svg)
106
+
107
+ # Metrics
108
+
109
+ With the flag **--send_metrics true** and the configuration of the AWS-METRICS_MANAGER driven adapter in ConfigTool.json of the engine_core the tool will send the report to bucket s3. In the [metrics](https://github.com/bancolombia/devsecops-engine-tools/blob/trunk/metrics/) folder you will find the base of the cloud formation template to deploy the infra and dashboard in grafana.
110
+
111
+ ![Dashboard Grafana](docs/metrics.png)
112
+
113
+ # How can I help?
114
+
115
+ Review the issues, we hear new ideas. Read more [Contributing](https://github.com/bancolombia/devsecops-engine-tools/blob/trunk/docs/CONTRIBUTING.md)
116
+
117
+
118
+
119
+
120
+
@@ -1,5 +1,5 @@
1
1
  devsecops_engine_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- devsecops_engine_tools/version.py,sha256=XbIhoEEUEJTJUiJEPml2J2LjQIi6Frpqax51My0O9Eg,18
2
+ devsecops_engine_tools/version.py,sha256=VuEoY2as5gEYas1qytTrMm-wAOffVDsUMyTM_79SdIg,18
3
3
  devsecops_engine_tools/engine_core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  devsecops_engine_tools/engine_core/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  devsecops_engine_tools/engine_core/src/applications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -26,7 +26,7 @@ devsecops_engine_tools/engine_core/src/domain/model/gateway/vulnerability_manage
26
26
  devsecops_engine_tools/engine_core/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
27
  devsecops_engine_tools/engine_core/src/domain/usecases/break_build.py,sha256=z6lcd-tnb-3QfZ1yf2ZlaRbovwF0YE6nUmS5V92aszc,15534
28
28
  devsecops_engine_tools/engine_core/src/domain/usecases/handle_risk.py,sha256=EBLEzm-p_lEeB7T8iarn2Fc4_6hY0XAIT1AJATd2JUM,2473
29
- devsecops_engine_tools/engine_core/src/domain/usecases/handle_scan.py,sha256=bcQV-mBGoMwUENtWWCl245baGJNSmLxOLvd50S0C9zc,6702
29
+ devsecops_engine_tools/engine_core/src/domain/usecases/handle_scan.py,sha256=ee9ULqKGYfaxBUO8RNq-Znh4dbojghIauH4YIjYx9QU,6730
30
30
  devsecops_engine_tools/engine_core/src/domain/usecases/metrics_manager.py,sha256=Xi0iNnPrFgqd2cBdAA5E_tgouhxs-BTo016aolnGgv8,2413
31
31
  devsecops_engine_tools/engine_core/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
32
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -128,7 +128,7 @@ devsecops_engine_tools/engine_sca/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
128
128
  devsecops_engine_tools/engine_sca/engine_container/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
129
129
  devsecops_engine_tools/engine_sca/engine_container/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
130
130
  devsecops_engine_tools/engine_sca/engine_container/src/applications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
131
- devsecops_engine_tools/engine_sca/engine_container/src/applications/runner_container_scan.py,sha256=-ExUAX2SCr4FM61mHmm0ezla8u0-FCbw59yEiW4YMUk,1802
131
+ devsecops_engine_tools/engine_sca/engine_container/src/applications/runner_container_scan.py,sha256=tu7FU4taXp9XQFNkNv8jzHIS16pqy6zLDjYBGax4tWU,1718
132
132
  devsecops_engine_tools/engine_sca/engine_container/src/deployment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
133
133
  devsecops_engine_tools/engine_sca/engine_container/src/deployment/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
134
134
  devsecops_engine_tools/engine_sca/engine_container/src/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -138,21 +138,21 @@ devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/des
138
138
  devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/images_gateway.py,sha256=szx-9iO1eSDedr3rw605Mx3jYBEFwRKBM0ts5zImgx0,158
139
139
  devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/tool_gateway.py,sha256=ADZjrl8u8CQ0hWoVhbnHFcjvyUmUeleffwmhtlg8s30,224
140
140
  devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
141
- devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/container_sca_scan.py,sha256=eu8Sk2F_YLZ5fQ915ms-ebjHmmZrgg5XgQY53lbPHaU,2442
142
- devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/handle_remote_config_patterns.py,sha256=SuoYbbJkFIzOY71-ALIxMPnHEM6P4h_nu5F-EH7oXj0,1921
143
- devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/set_input_core.py,sha256=luo4pi7PtiH_cUue5DhrnqqABuciwz2w7UWpN-J6e50,2843
141
+ devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/container_sca_scan.py,sha256=zwlYQSmtn7_ms9x5-Dhr3WTilLM5cXdAyslgWRh5xdc,1635
142
+ devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/handle_remote_config_patterns.py,sha256=4wgBTQSDE-C5v01C3Vxzeq0DJKZUSqQ5TVLG7yPZPKs,926
143
+ devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/set_input_core.py,sha256=Jw2sjrgRS8kjIFLt2nEBXQpF2-Ncm_ltgc6Q7ZIZKw0,1840
144
144
  devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
145
145
  devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
146
146
  devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/docker/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
147
- devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/docker/docker_images.py,sha256=gnDC8wnG99D3p6K_ph2a9bMtoYGu_5BdGacVOD8swH8,815
147
+ devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/docker/docker_images.py,sha256=tdZeW5KbZcLxSMM37-GdmkLItpRDUlR0eAyew6bI2ts,816
148
148
  devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
149
- devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/prisma_cloud_manager_scan.py,sha256=J92AIpPzIwAO37RFRN7H9x-9QLWatpL7v7bbGadRY6c,4532
150
- devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/prisma_deserialize_output.py,sha256=InUFpFj1LO_rY_8oiKaAXUZ3NP_uASL1wofyd7WPLeQ,2450
149
+ devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/prisma_cloud_manager_scan.py,sha256=3KyqbuLSFHMAUO5n9ruLMU8nhiP9BuGeXchN9PHW3M0,4369
150
+ devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/prisma_deserialize_output.py,sha256=k6j6ajlHFVfKdxIdvWVak0eryhIknT0IyTvyI2e3gz0,2514
151
151
  devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
152
- devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/trivy_deserialize_output.py,sha256=U5FFZsJCCADpH0-VbweeRqZi0aVM8RQqIijv17BWnY0,2114
152
+ devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/trivy_deserialize_output.py,sha256=v0XU-KJfnt4BFmoLbpc3IE0RxDVsYN5dzftfJiWR2Fs,2169
153
153
  devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/trivy_manager_scan.py,sha256=IBd3fOQmHPDeVud54DQtw0x2o4jm31iwRoiBDTpkqdc,4284
154
154
  devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/entry_points/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
155
- devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/entry_points/entry_point_tool.py,sha256=goSKzTRwVbuwMuEkYVy7eoR-OkljFhB3Jj2BD7U5ggg,1334
155
+ devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/entry_points/entry_point_tool.py,sha256=BM8XJI_tlFxurdhBz2N5R33z4WGNLN_mkaG2npYBTiM,2212
156
156
  devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
157
157
  devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/helpers/images_scanned.py,sha256=V_wE9maXdGlQbYIe6qVgOqEtiWrh-icd8V4dpWDQrXg,590
158
158
  devsecops_engine_tools/engine_sca/engine_dependencies/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -242,8 +242,8 @@ devsecops_engine_tools/engine_utilities/utils/logger_info.py,sha256=4Mz8Bwlm9Mku
242
242
  devsecops_engine_tools/engine_utilities/utils/name_conversion.py,sha256=ADJrRGaxYSDe0ZRh6VHRf53H4sXPcb-vNP_i81PUn3I,307
243
243
  devsecops_engine_tools/engine_utilities/utils/printers.py,sha256=GAslbWaBpwP3mP6fBsgVl07TTBgcCggQTy8h2M9ibeo,612
244
244
  devsecops_engine_tools/engine_utilities/utils/session_manager.py,sha256=yNtlT-8Legz1sHbGPH8LNYjL-LgDUE0zXG2rYjiab7U,290
245
- devsecops_engine_tools-1.7.12.dist-info/METADATA,sha256=kpJhqb5u7IYwXEvJf79--U9cddAzxdHCif-kNijLL04,9927
246
- devsecops_engine_tools-1.7.12.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
247
- devsecops_engine_tools-1.7.12.dist-info/entry_points.txt,sha256=9IjXF_7Zpgowq_SY6OSmsA9vZze18a8_AeHwkQVrgKk,131
248
- devsecops_engine_tools-1.7.12.dist-info/top_level.txt,sha256=ge6y0X_xBAU1aG3EMWFtl9djbVyg5BxuSp2r2Lg6EQU,23
249
- devsecops_engine_tools-1.7.12.dist-info/RECORD,,
245
+ devsecops_engine_tools-1.7.14.dist-info/METADATA,sha256=Usrozy3Bfa1_YcDkTSRZKPJjJuyOqPwi8RHuy30QnF0,4840
246
+ devsecops_engine_tools-1.7.14.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
247
+ devsecops_engine_tools-1.7.14.dist-info/entry_points.txt,sha256=9IjXF_7Zpgowq_SY6OSmsA9vZze18a8_AeHwkQVrgKk,131
248
+ devsecops_engine_tools-1.7.14.dist-info/top_level.txt,sha256=ge6y0X_xBAU1aG3EMWFtl9djbVyg5BxuSp2r2Lg6EQU,23
249
+ devsecops_engine_tools-1.7.14.dist-info/RECORD,,
@@ -1,156 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: devsecops-engine-tools
3
- Version: 1.7.12
4
- Summary: Tool for DevSecOps strategy
5
- Home-page: https://github.com/bancolombia/devsecops-engine-tools
6
- Author: Bancolombia DevSecOps Team
7
- Author-email: devsecops@bancolombia.com.co
8
- Classifier: Programming Language :: Python :: 3
9
- Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
10
- Classifier: Operating System :: OS Independent
11
- Requires-Python: >=3.8
12
- Description-Content-Type: text/markdown
13
- Requires-Dist: requests ==2.31.0
14
- Requires-Dist: multipledispatch ==0.6.0
15
- Requires-Dist: PyYAML ==6.0.1
16
- Requires-Dist: checkov ==2.3.296
17
- Requires-Dist: pyfiglet ==0.7
18
- Requires-Dist: prettytable ==3.8.0
19
- Requires-Dist: azure-devops ==7.1.0b3
20
- Requires-Dist: marshmallow ==3.19.0
21
- Requires-Dist: pytz ==2023.3
22
- Requires-Dist: python-decouple ==3.8
23
- Requires-Dist: requests-toolbelt ==1.0.0
24
- Requires-Dist: python-dateutil ==2.8.2
25
- Requires-Dist: pexpect ==4.9.0
26
-
27
- # DevSecOps Engine Tools
28
-
29
- [![Maintained by Bancolombia](https://img.shields.io/badge/maintained_by-Bancolombia-yellow)](#)
30
- [![Build](https://github.com/bancolombia/devsecops-engine-tools/actions/workflows/build.yml/badge.svg)](https://github.com/bancolombia/devsecops-engine-tools/actions/workflows/build.yml)
31
- [![Python Version](https://img.shields.io/badge/python%20-%203.8%20%7C%203.9%20%7C%203.10%20%7C%203.11%20%7C%203.12%20-blue)](#)
32
-
33
- # Objective
34
-
35
- Tool that unifies the evaluation of the different devsecops practices being agnostic to the devops platform, using both open source and market tools.
36
-
37
- # Component
38
-
39
- 📦 [tools](https://github.com/bancolombia/devsecops-engine-tools/tree/trunk/tools): DevSecOps Practice Modules
40
-
41
- # Communications channel
42
-
43
- Here are the channels we use to communicate about the project:
44
-
45
- **1. Mailing list:** You can join our mailing list to always be informed at the following link: [CommunityDevsecopsEngine](https://groups.google.com/g/CommunityDevsecopsEngine)
46
-
47
- **2. Email:** You can write to us by email: MaintainersDevsecopsEngine@googlegroups.com
48
-
49
- # Getting started
50
-
51
- ### Requirements
52
-
53
- - Python >= 3.8
54
-
55
- ### Installation
56
-
57
- ```bash
58
- pip3 install devsecops-engine-tools
59
- ```
60
-
61
- ### Scan running - flags (CLI)
62
-
63
- ```bash
64
- devsecops-engine-tools --platform_devops ["local","azure"] --remote_config_repo ["remote_config_repo"] --tool ["engine_iac", "engine_dast", "engine_secret", "engine_dependencies", "engine_container"] --folder_path ["Folder path scan engine_iac"] --platform ["eks","openshift"] --use_secrets_manager ["false", "true"] --use_vulnerability_management ["false", "true"] --send_metrics ["false", "true"] --token_cmdb ["token_cmdb"] --token_vulnerability_management ["token_vulnerability_management"] --token_engine_container ["token_engine_container"] --token_engine_dependencies ["token_engine_dependencies"]
65
- ```
66
-
67
- ### Structure Remote Config
68
- [example_remote_config_local](https://github.com/bancolombia/devsecops-engine-tools/blob/trunk/example_remote_config_local/)
69
- ```bash
70
- 📦Remote_Config
71
- ┣ 📂engine_core
72
- ┃ ┗ 📜ConfigTool.json
73
- ┣ 📂engine_sast
74
- ┃ ┗ 📂engine_iac
75
- ┃ ┗ 📜ConfigTool.json
76
- ┃ ┗ 📜Exclusions.json
77
- ┃ ┗ 📂engine_secret
78
- ┃ ┗ 📜ConfigTool.json
79
- ┣ 📂engine_sca
80
- ┃ ┗ 📂engine_container
81
- ┃ ┗ 📜ConfigTool.json
82
- ┃ ┗ 📜Exclusions.json
83
- ┃ ┗ 📂engine_dependencies
84
- ┃ ┗ 📜ConfigTool.json
85
- ┃ ┗ 📜Exclusions.json
86
- ```
87
- ### Scan running sample (CLI) - Local
88
-
89
- > Complete the value in **.envdetlocal** file a set in execution environment
90
- ```
91
- $ set -a
92
- $ source .envdetlocal
93
- $ set +a
94
- ```
95
-
96
-
97
- ```bash
98
- devsecops-engine-tools --platform_devops local --remote_config_repo DevSecOps_Remote_Config --tool engine_iac
99
-
100
- ```
101
- ### Scan result sample (CLI)
102
-
103
- ```bash
104
- ____ _____ ____ ______ _ ______ __
105
- / __ \___ _ __/ ___/___ _____/ __ \____ _____ / ____/___ ____ _(_)___ ___ /_ __/___ ____ / /____
106
- / / / / _ \ | / /\__ \/ _ \/ ___/ / / / __ \/ ___/ / __/ / __ \/ __ `/ / __ \/ _ \ / / / __ \/ __ \/ / ___/
107
- / /_/ / __/ |/ /___/ / __/ /__/ /_/ / /_/ (__ ) / /___/ / / / /_/ / / / / / __/ / / / /_/ / /_/ / (__ )
108
- /_____/\___/|___//____/\___/\___/\____/ .___/____/ /_____/_/ /_/\__, /_/_/ /_/\___/ /_/ \____/\____/_/____/
109
- /_/ /____/
110
-
111
- Secrets manager is not enabled to configure external checks
112
-
113
- Below are all vulnerabilities detected.
114
- ╔══════════╦════════════╦════════════════════════════════════════════════════════════════════════════════════╦════════════════════════╗
115
- ║ Severity ║ ID ║ Description ║ Where ║
116
- ╠══════════╬════════════╬════════════════════════════════════════════════════════════════════════════════════╬════════════════════════╣
117
- ║ critical ║ CKV_K8S_37 ║ IAC-CKV_K8S_37 Minimize the admission of containers with capabilities assigned ║ /_AW1234/app.yaml ║
118
- ║ critical ║ CKV_K8S_20 ║ IAC-CKV_K8S_20 Containers should not run with allowPrivilegeEscalation ║ /_AW1234/app.yaml ║
119
- ║ critical ║ CKV_K8S_30 ║ IAC-CKV_K8S_30 Apply security context to your containers ║ /_AW1234/app.yaml ║
120
- ║ critical ║ CKV_K8S_23 ║ IAC-CKV_K8S_23 Minimize the admission of root containers ║ /_AW1234/app.yaml ║
121
- ║ high ║ CKV_AWS_20 ║ C-S3-005-AWS S3 buckets are accessible to public ║ /_AW1234/template.yaml ║
122
- ║ high ║ CKV_K8S_22 ║ IAC-CKV_K8S_22 Use read-only filesystem for containers where possible ║ /_AW1234/app.yaml ║
123
- ║ high ║ CKV_K8S_28 ║ IAC-CKV_K8S_28 Minimize the admission of containers with the NET_RAW capability ║ /_AW1234/app.yaml ║
124
- ║ high ║ CKV_K8S_38 ║ IAC-CKV_K8S_38 Ensure that Service Account Tokens are only mounted where necessary ║ /_AW1234/app.yaml ║
125
- ╚══════════╩════════════╩════════════════════════════════════════════════════════════════════════════════════╩════════════════════════╝
126
- Security count issues (critical: 4, high: 4, medium: 0, low: 0) is greater than or equal to failure criteria (critical: 1, high: 8, medium: 10, low:15, operator: or)
127
- ✘Failed
128
-
129
- Below are all compliances issues detected.
130
- ╔══════════╦═══════════╦════════════════════════════════════════════════════╦═══════════════════╗
131
- ║ Severity ║ ID ║ Description ║ Where ║
132
- ╠══════════╬═══════════╬════════════════════════════════════════════════════╬═══════════════════╣
133
- ║ critical ║ CKV_K8S_8 ║ IAC-CKV_K8S_8 Liveness Probe Should be Configured ║ /_AW1234/app.yaml ║
134
- ║ critical ║ CKV_K8S_9 ║ IAC-CKV_K8S_9 Readiness Probe Should be Configured ║ /_AW1234/app.yaml ║
135
- ╚══════════╩═══════════╩════════════════════════════════════════════════════╩═══════════════════╝
136
- Compliance issues count (critical: 2) is greater than or equal to failure criteria (critical: 1)
137
- ✘Failed
138
-
139
- Bellow are all the findings that were accepted.
140
- ╔══════════╦════════════╦═══════════════════╦═════════════╦══════════════╦══════════════════╗
141
- ║ Severity ║ ID ║ Where ║ Create Date ║ Expired Date ║ Reason ║
142
- ╠══════════╬════════════╬═══════════════════╬═════════════╬══════════════╬══════════════════╣
143
- ║ high ║ CKV_K8S_38 ║ /_AW1234/app.yaml ║ 18/11/2023 ║ 18/03/2024 ║ False Positive ║
144
- ╚══════════╩════════════╩═══════════════════╩═════════════╩══════════════╩══════════════════╝
145
-
146
- message custom
147
- ```
148
-
149
- # How can I help?
150
-
151
- Review the issues, we hear new ideas. Read more [Contributing](https://github.com/bancolombia/devsecops-engine-tools/blob/trunk/docs/CONTRIBUTING.md)
152
-
153
-
154
-
155
-
156
-