devsecops-engine-tools 1.104.2__py3-none-any.whl → 1.105.0__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.

@@ -2,6 +2,7 @@ from dataclasses import dataclass
2
2
  import requests
3
3
  import subprocess
4
4
  import platform
5
+ import os
5
6
 
6
7
  from devsecops_engine_tools.engine_core.src.domain.model.gateway.sbom_manager import (
7
8
  SbomManagerGateway,
@@ -26,6 +27,15 @@ class CdxGen(SbomManagerGateway):
26
27
  try:
27
28
  cdxgen_version = config["CDXGEN"]["CDXGEN_VERSION"]
28
29
  slim = "-slim" if config["CDXGEN"]["SLIM_BINARY"] else ""
30
+ exclude_types = config["CDXGEN"].get("EXCLUDE_TYPES", "")
31
+ recurse = config["CDXGEN"].get("RECURSE", True)
32
+ debug_pipelines = config["CDXGEN"].get("DEBUG_PIPELINES", [])
33
+
34
+ enable_debug = service_name in debug_pipelines if debug_pipelines else False
35
+ if enable_debug:
36
+ logger.info(f"Enabling debug mode for pipeline: {service_name}")
37
+ os.environ["CDXGEN_DEBUG_MODE"] = "debug"
38
+
29
39
  os_platform = platform.system()
30
40
  base_url = (
31
41
  f"https://github.com/CycloneDX/cdxgen/releases/download/v{cdxgen_version}/"
@@ -51,31 +61,51 @@ class CdxGen(SbomManagerGateway):
51
61
  logger.warning(f"{os_platform} is not supported.")
52
62
  return None
53
63
 
54
- result_sbom = self._run_cdxgen(command_prefix, artifact, service_name)
64
+ result_sbom = self._run_cdxgen(command_prefix, artifact, service_name, exclude_types, recurse, enable_debug)
55
65
  return get_list_component(result_sbom, config["CDXGEN"]["OUTPUT_FORMAT"])
56
66
  except Exception as e:
57
67
  logger.error(f"Error generating SBOM: {e}")
58
68
  return None
59
69
 
60
- def _run_cdxgen(self, command_prefix, artifact, service_name):
70
+ def _run_cdxgen(self, command_prefix, artifact, service_name, exclude_types, recurse, enable_debug=False):
61
71
  result_file = f"{service_name}_SBOM.json"
62
72
  command = [
63
73
  command_prefix,
64
74
  artifact,
65
75
  "-o",
66
- result_file,
76
+ result_file
67
77
  ]
68
78
 
79
+ if exclude_types:
80
+ command.extend(
81
+ ["--exclude-type", exclude_types]
82
+ )
83
+
84
+ if not recurse:
85
+ command.append(
86
+ "--no-recurse"
87
+ )
88
+
69
89
  try:
70
- subprocess.run(
90
+ result = subprocess.run(
71
91
  command,
72
- check=True,
73
92
  stdout=subprocess.PIPE,
74
93
  stderr=subprocess.PIPE,
75
- text=True,
94
+ text=True
76
95
  )
77
- print(f"SBOM generated and saved to: {result_file}")
78
- return result_file
96
+
97
+ if enable_debug:
98
+ if result.stdout:
99
+ logger.info(f"CDXGEN stdout: {result.stdout}")
100
+ if result.stderr:
101
+ logger.info(f"CDXGEN stderr: {result.stderr}")
102
+
103
+ if result.returncode == 0:
104
+ print(f"SBOM generated and saved to: {result_file}")
105
+ return result_file
106
+ else:
107
+ raise Exception(f"CDXGEN command failed with return code: {result.returncode}")
108
+
79
109
  except Exception as e:
80
110
  logger.error(f"Error running cdxgen: {e}")
81
111
 
@@ -125,43 +125,43 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
125
125
  f"{vulnerability_management.dict_args['module']}_{tag_suffix}"
126
126
  ]
127
127
 
128
- use_cmdb = vulnerability_management.config_tool[
129
- "VULNERABILITY_MANAGER"
130
- ]["DEFECT_DOJO"]["CMDB"]["USE_CMDB"]
131
-
132
- request = self._build_request_importscan(
133
- vulnerability_management,
134
- token_cmdb,
135
- token_dd,
136
- tags,
137
- use_cmdb,
138
- )
128
+ use_cmdb = vulnerability_management.config_tool[
129
+ "VULNERABILITY_MANAGER"
130
+ ]["DEFECT_DOJO"]["CMDB"]["USE_CMDB"]
131
+
132
+ request = self._build_request_importscan(
133
+ vulnerability_management,
134
+ token_cmdb,
135
+ token_dd,
136
+ tags,
137
+ use_cmdb,
138
+ )
139
139
 
140
- def request_func():
141
- return DefectDojo.send_import_scan(request)
140
+ def request_func():
141
+ return DefectDojo.send_import_scan(request)
142
142
 
143
- response = Utils().retries_requests(
144
- request_func,
145
- vulnerability_management.config_tool["VULNERABILITY_MANAGER"][
146
- "DEFECT_DOJO"
147
- ]["MAX_RETRIES_QUERY"],
148
- retry_delay=5,
149
- )
143
+ response = Utils().retries_requests(
144
+ request_func,
145
+ vulnerability_management.config_tool["VULNERABILITY_MANAGER"][
146
+ "DEFECT_DOJO"
147
+ ]["MAX_RETRIES_QUERY"],
148
+ retry_delay=5,
149
+ )
150
150
 
151
- if hasattr(response, "url"):
152
- if vulnerability_management.config_tool.get("VULNERABILITY_MANAGER").get("DEFECT_DOJO").get("PRINT_DOMAIN"):
153
- response.url = response.url.replace(
154
- vulnerability_management.config_tool["VULNERABILITY_MANAGER"]["DEFECT_DOJO"]["HOST_DEFECT_DOJO"],
155
- vulnerability_management.config_tool["VULNERABILITY_MANAGER"]["DEFECT_DOJO"]["PRINT_DOMAIN"]
151
+ if hasattr(response, "url"):
152
+ if vulnerability_management.config_tool.get("VULNERABILITY_MANAGER").get("DEFECT_DOJO").get("PRINT_DOMAIN"):
153
+ response.url = response.url.replace(
154
+ vulnerability_management.config_tool["VULNERABILITY_MANAGER"]["DEFECT_DOJO"]["HOST_DEFECT_DOJO"],
155
+ vulnerability_management.config_tool["VULNERABILITY_MANAGER"]["DEFECT_DOJO"]["PRINT_DOMAIN"]
156
+ )
157
+ url_parts = response.url.split("//")
158
+ test_string = "//".join([url_parts[0] + "/", url_parts[1]])
159
+ print(
160
+ "Report sent to vulnerability management: ",
161
+ f"{test_string}?tags={vulnerability_management.dict_args['module']}",
156
162
  )
157
- url_parts = response.url.split("//")
158
- test_string = "//".join([url_parts[0] + "/", url_parts[1]])
159
- print(
160
- "Report sent to vulnerability management: ",
161
- f"{test_string}?tags={vulnerability_management.dict_args['module']}",
162
- )
163
- else:
164
- raise ExceptionVulnerabilityManagement(response)
163
+ else:
164
+ raise ExceptionVulnerabilityManagement(response)
165
165
  except Exception as ex:
166
166
  raise ExceptionVulnerabilityManagement(
167
167
  f"Error sending report to vulnerability management with the following error: {str(ex)}"
@@ -1 +1 @@
1
- version = '1.104.2'
1
+ version = '1.105.0'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: devsecops-engine-tools
3
- Version: 1.104.2
3
+ Version: 1.105.0
4
4
  Summary: Tool for DevSecOps strategy
5
5
  Home-page: https://github.com/bancolombia/devsecops-engine-tools
6
6
  Author: Bancolombia DevSecOps Team
@@ -1,5 +1,5 @@
1
1
  devsecops_engine_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- devsecops_engine_tools/version.py,sha256=e6VwYGP4OnZbUNfscag_I6mr8JLOn9MkDEePi60X42Q,20
2
+ devsecops_engine_tools/version.py,sha256=SEPteiAKmXH-B5JojzcRHDChVmeoqG-X532Ga0_GU2U,20
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
@@ -38,9 +38,9 @@ devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/secret
38
38
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
39
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/azure_devops.py,sha256=-3KUPxlzBoxJarj8ZY8w84UffuedtBnj3z4r9UW7nFQ,6027
40
40
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/cdxgen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/cdxgen/cdxgen.py,sha256=t1CTeQG2ePBwUdeNinSYEi3vyMjufD0KuHUIxRZCsAU,4370
41
+ devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/cdxgen/cdxgen.py,sha256=aKPBEnhsCM_innNpZ2R5THgLaGctcVafNvXbFjq26tg,5560
42
42
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py,sha256=0Bupn7nE8xWXgLG2Fk7koZwxzR1Bj4Mifs2yDdxa63c,32973
43
+ devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py,sha256=GXz-xBxptaZsQU8sR9OTcDAvdIygXmiLfmMIWhlC-hs,33105
44
44
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/github/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
45
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/github/github_actions.py,sha256=ed8ybPVNTAVS3UUlelnapMfpSoWJ-0X5aXQ54_wyiQo,4377
46
46
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/printer_pretty_table/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -383,8 +383,8 @@ devsecops_engine_tools/engine_utilities/utils/name_conversion.py,sha256=ADJrRGax
383
383
  devsecops_engine_tools/engine_utilities/utils/printers.py,sha256=amYAr9YQfYgR6jK9a2l26z3oovFPQ3FAKmhq6BKhEBA,623
384
384
  devsecops_engine_tools/engine_utilities/utils/session_manager.py,sha256=Z0fdhB3r-dxU0nGSD9zW_B4r2Qol1rUnUCkhFR0U-HQ,487
385
385
  devsecops_engine_tools/engine_utilities/utils/utils.py,sha256=HCjS900TBoNcHrC4LaiP-Kf9frVdtagF130qOUgnO2M,6757
386
- devsecops_engine_tools-1.104.2.dist-info/METADATA,sha256=XkE4LGauh8XlOQXyDcVfKu4UP5_GTZEeeRtseLg8wmU,3233
387
- devsecops_engine_tools-1.104.2.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
388
- devsecops_engine_tools-1.104.2.dist-info/entry_points.txt,sha256=OWAww5aBsGeMv0kWhSgVNB0ySKKpYuJd4dly0ikFPkc,283
389
- devsecops_engine_tools-1.104.2.dist-info/top_level.txt,sha256=ge6y0X_xBAU1aG3EMWFtl9djbVyg5BxuSp2r2Lg6EQU,23
390
- devsecops_engine_tools-1.104.2.dist-info/RECORD,,
386
+ devsecops_engine_tools-1.105.0.dist-info/METADATA,sha256=f4p6nZe_WDm7hrJZrf6rcIEQoyKlG71rZKP76z0a-Y4,3233
387
+ devsecops_engine_tools-1.105.0.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
388
+ devsecops_engine_tools-1.105.0.dist-info/entry_points.txt,sha256=OWAww5aBsGeMv0kWhSgVNB0ySKKpYuJd4dly0ikFPkc,283
389
+ devsecops_engine_tools-1.105.0.dist-info/top_level.txt,sha256=ge6y0X_xBAU1aG3EMWFtl9djbVyg5BxuSp2r2Lg6EQU,23
390
+ devsecops_engine_tools-1.105.0.dist-info/RECORD,,