devsecops-engine-tools 1.7.5__py3-none-any.whl → 1.7.7__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.
- devsecops_engine_tools/engine_core/src/applications/runner_engine_core.py +1 -0
- devsecops_engine_tools/engine_core/src/domain/model/customs_exceptions.py +5 -0
- devsecops_engine_tools/engine_core/src/domain/model/gateway/printer_table_gateway.py +7 -0
- devsecops_engine_tools/engine_core/src/domain/model/gateway/vulnerability_management_gateway.py +6 -0
- devsecops_engine_tools/engine_core/src/domain/model/report.py +13 -0
- devsecops_engine_tools/engine_core/src/domain/usecases/handle_risk.py +64 -0
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py +62 -10
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/printer_pretty_table/printer_pretty_table.py +31 -1
- devsecops_engine_tools/engine_core/src/infrastructure/entry_points/entry_point_core.py +24 -13
- devsecops_engine_tools/engine_risk/__init__.py +0 -0
- devsecops_engine_tools/engine_risk/src/__init__.py +0 -0
- devsecops_engine_tools/engine_risk/src/applications/__init__.py +0 -0
- devsecops_engine_tools/engine_risk/src/applications/runner_engine_risk.py +20 -0
- devsecops_engine_tools/engine_risk/src/deployment/__init__.py +0 -0
- devsecops_engine_tools/engine_risk/src/deployment/infrastructure/__init__.py +0 -0
- devsecops_engine_tools/engine_risk/src/domain/__init__.py +0 -0
- devsecops_engine_tools/engine_risk/src/domain/model/__init__.py +0 -0
- devsecops_engine_tools/engine_risk/src/domain/model/gateways/__init__.py +0 -0
- devsecops_engine_tools/engine_risk/src/domain/usecases/__init__.py +0 -0
- devsecops_engine_tools/engine_risk/src/domain/usecases/break_build.py +36 -0
- devsecops_engine_tools/engine_risk/src/domain/usecases/handle_filters.py +16 -0
- devsecops_engine_tools/engine_risk/src/infrastructure/__init__.py +0 -0
- devsecops_engine_tools/engine_risk/src/infrastructure/driven_adapters/__init__.py +0 -0
- devsecops_engine_tools/engine_risk/src/infrastructure/entry_points/__init__.py +0 -0
- devsecops_engine_tools/engine_risk/src/infrastructure/entry_points/entry_point_risk.py +31 -0
- devsecops_engine_tools/engine_risk/src/infrastructure/helpers/__init__.py +0 -0
- devsecops_engine_tools/version.py +1 -1
- {devsecops_engine_tools-1.7.5.dist-info → devsecops_engine_tools-1.7.7.dist-info}/METADATA +1 -1
- {devsecops_engine_tools-1.7.5.dist-info → devsecops_engine_tools-1.7.7.dist-info}/RECORD +32 -13
- {devsecops_engine_tools-1.7.5.dist-info → devsecops_engine_tools-1.7.7.dist-info}/WHEEL +0 -0
- {devsecops_engine_tools-1.7.5.dist-info → devsecops_engine_tools-1.7.7.dist-info}/entry_points.txt +0 -0
- {devsecops_engine_tools-1.7.5.dist-info → devsecops_engine_tools-1.7.7.dist-info}/top_level.txt +0 -0
|
@@ -7,3 +7,8 @@ class ExceptionFindingsExcepted(Exception):
|
|
|
7
7
|
def __init__(self, message):
|
|
8
8
|
self.message = message
|
|
9
9
|
super().__init__(self.message)
|
|
10
|
+
|
|
11
|
+
class ExceptionGettingFindings(Exception):
|
|
12
|
+
def __init__(self, message):
|
|
13
|
+
self.message = message
|
|
14
|
+
super().__init__(self.message)
|
|
@@ -2,12 +2,19 @@ from abc import ABCMeta, abstractmethod
|
|
|
2
2
|
from devsecops_engine_tools.engine_core.src.domain.model.finding import (
|
|
3
3
|
Finding,
|
|
4
4
|
)
|
|
5
|
+
from devsecops_engine_tools.engine_core.src.domain.model.report import (
|
|
6
|
+
Report,
|
|
7
|
+
)
|
|
5
8
|
|
|
6
9
|
class PrinterTableGateway(metaclass=ABCMeta):
|
|
7
10
|
@abstractmethod
|
|
8
11
|
def print_table_findings(self, finding_list: "list[Finding]"):
|
|
9
12
|
"print_table_findings"
|
|
10
13
|
|
|
14
|
+
@abstractmethod
|
|
15
|
+
def print_table_report(self, report_list: "list[Report]"):
|
|
16
|
+
"print_table_report"
|
|
17
|
+
|
|
11
18
|
@abstractmethod
|
|
12
19
|
def print_table_exclusions(self, exclusions_list):
|
|
13
20
|
"print_table_exclusions"
|
devsecops_engine_tools/engine_core/src/domain/model/gateway/vulnerability_management_gateway.py
CHANGED
|
@@ -15,3 +15,9 @@ class VulnerabilityManagementGateway(metaclass=ABCMeta):
|
|
|
15
15
|
self, service, dict_args, secret_tool, config_tool
|
|
16
16
|
):
|
|
17
17
|
"get_findings_excepted"
|
|
18
|
+
|
|
19
|
+
@abstractmethod
|
|
20
|
+
def get_all_findings(
|
|
21
|
+
self, service, dict_args, secret_tool, config_tool
|
|
22
|
+
):
|
|
23
|
+
"get_report"
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
@dataclass
|
|
5
|
+
class Report:
|
|
6
|
+
def __init__(self, **kwargs):
|
|
7
|
+
self.id = kwargs.get("id", "")
|
|
8
|
+
self.date = kwargs.get("date", "")
|
|
9
|
+
self.where = kwargs.get("where", "")
|
|
10
|
+
self.tags = kwargs.get("tags", [])
|
|
11
|
+
self.severity = kwargs.get("severity", "")
|
|
12
|
+
self.active = kwargs.get("active", "")
|
|
13
|
+
self.status = kwargs.get("status", "")
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
from devsecops_engine_tools.engine_core.src.domain.model.gateway.vulnerability_management_gateway import (
|
|
2
|
+
VulnerabilityManagementGateway,
|
|
3
|
+
)
|
|
4
|
+
from devsecops_engine_tools.engine_core.src.domain.model.gateway.secrets_manager_gateway import (
|
|
5
|
+
SecretsManagerGateway,
|
|
6
|
+
)
|
|
7
|
+
from devsecops_engine_tools.engine_core.src.domain.model.gateway.devops_platform_gateway import (
|
|
8
|
+
DevopsPlatformGateway,
|
|
9
|
+
)
|
|
10
|
+
from devsecops_engine_tools.engine_core.src.domain.model.gateway.printer_table_gateway import (
|
|
11
|
+
PrinterTableGateway,
|
|
12
|
+
)
|
|
13
|
+
from devsecops_engine_tools.engine_risk.src.applications.runner_engine_risk import (
|
|
14
|
+
runner_engine_risk,
|
|
15
|
+
)
|
|
16
|
+
from devsecops_engine_tools.engine_core.src.domain.model.customs_exceptions import (
|
|
17
|
+
ExceptionGettingFindings,
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
|
|
21
|
+
from devsecops_engine_tools.engine_utilities import settings
|
|
22
|
+
|
|
23
|
+
logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class HandleRisk:
|
|
27
|
+
def __init__(
|
|
28
|
+
self,
|
|
29
|
+
vulnerability_management: VulnerabilityManagementGateway,
|
|
30
|
+
secrets_manager_gateway: SecretsManagerGateway,
|
|
31
|
+
devops_platform_gateway: DevopsPlatformGateway,
|
|
32
|
+
print_table_gateway: PrinterTableGateway,
|
|
33
|
+
):
|
|
34
|
+
self.vulnerability_management = vulnerability_management
|
|
35
|
+
self.secrets_manager_gateway = secrets_manager_gateway
|
|
36
|
+
self.devops_platform_gateway = devops_platform_gateway
|
|
37
|
+
self.print_table_gateway = print_table_gateway
|
|
38
|
+
|
|
39
|
+
def get_finding_list(self, dict_args, secret_tool, remote_config):
|
|
40
|
+
try:
|
|
41
|
+
findigs_list = self.vulnerability_management.get_all_findings(
|
|
42
|
+
self.devops_platform_gateway.get_variable("pipeline_name"),
|
|
43
|
+
dict_args,
|
|
44
|
+
secret_tool,
|
|
45
|
+
remote_config,
|
|
46
|
+
)
|
|
47
|
+
return findigs_list
|
|
48
|
+
except ExceptionGettingFindings as e:
|
|
49
|
+
logger.error("Error getting finding list in handle risk: {0}".format(str(e)))
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def process(self, dict_args: any, remote_config: any):
|
|
53
|
+
secret_tool = None
|
|
54
|
+
if dict_args["use_secrets_manager"] == "true":
|
|
55
|
+
secret_tool = self.secrets_manager_gateway.get_secret(remote_config)
|
|
56
|
+
|
|
57
|
+
findigs_list = self.get_finding_list(dict_args, secret_tool, remote_config)
|
|
58
|
+
|
|
59
|
+
runner_engine_risk(
|
|
60
|
+
dict_args,
|
|
61
|
+
findigs_list,
|
|
62
|
+
self.devops_platform_gateway,
|
|
63
|
+
self.print_table_gateway
|
|
64
|
+
)
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py
CHANGED
|
@@ -12,10 +12,12 @@ from devsecops_engine_tools.engine_utilities.defect_dojo import (
|
|
|
12
12
|
Finding,
|
|
13
13
|
)
|
|
14
14
|
from devsecops_engine_tools.engine_core.src.domain.model.exclusions import Exclusions
|
|
15
|
+
from devsecops_engine_tools.engine_core.src.domain.model.report import Report
|
|
15
16
|
from devsecops_engine_tools.engine_utilities.utils.session_manager import SessionManager
|
|
16
17
|
from devsecops_engine_tools.engine_core.src.domain.model.customs_exceptions import (
|
|
17
18
|
ExceptionVulnerabilityManagement,
|
|
18
19
|
ExceptionFindingsExcepted,
|
|
20
|
+
ExceptionGettingFindings,
|
|
19
21
|
)
|
|
20
22
|
from devsecops_engine_tools.engine_core.src.infrastructure.helpers.util import (
|
|
21
23
|
format_date,
|
|
@@ -118,13 +120,7 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
|
118
120
|
|
|
119
121
|
def get_findings_excepted(self, service, dict_args, secret_tool, config_tool):
|
|
120
122
|
try:
|
|
121
|
-
|
|
122
|
-
"token_vulnerability_management"
|
|
123
|
-
) or secret_tool.get("token_defect_dojo")
|
|
124
|
-
session_manager = SessionManager(
|
|
125
|
-
token_dd,
|
|
126
|
-
config_tool["VULNERABILITY_MANAGER"]["DEFECT_DOJO"]["HOST_DEFECT_DOJO"],
|
|
127
|
-
)
|
|
123
|
+
session_manager = self._get_session_manager(dict_args, secret_tool, config_tool)
|
|
128
124
|
|
|
129
125
|
dd_limits_query = config_tool["VULNERABILITY_MANAGER"]["DEFECT_DOJO"][
|
|
130
126
|
"LIMITS_QUERY"
|
|
@@ -168,6 +164,45 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
|
168
164
|
)
|
|
169
165
|
)
|
|
170
166
|
|
|
167
|
+
def get_all_findings(
|
|
168
|
+
self, service, dict_args, secret_tool, config_tool
|
|
169
|
+
):
|
|
170
|
+
try:
|
|
171
|
+
all_findings_query_params = {
|
|
172
|
+
"limit": config_tool["VULNERABILITY_MANAGER"]["DEFECT_DOJO"]["LIMITS_QUERY"]
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
findings = self._get_findings(
|
|
176
|
+
self._get_session_manager(dict_args, secret_tool, config_tool),
|
|
177
|
+
service,
|
|
178
|
+
all_findings_query_params
|
|
179
|
+
)
|
|
180
|
+
|
|
181
|
+
maped_list = list(
|
|
182
|
+
map(
|
|
183
|
+
partial(self._create_report, date_fn=self._format_date_to_dd_format),
|
|
184
|
+
findings,
|
|
185
|
+
)
|
|
186
|
+
)
|
|
187
|
+
|
|
188
|
+
return maped_list
|
|
189
|
+
|
|
190
|
+
except Exception as ex:
|
|
191
|
+
raise ExceptionGettingFindings(
|
|
192
|
+
"Error getting all findings with the following error: {0} ".format(
|
|
193
|
+
ex
|
|
194
|
+
)
|
|
195
|
+
)
|
|
196
|
+
|
|
197
|
+
def _get_session_manager(self, dict_args, secret_tool, config_tool):
|
|
198
|
+
token_dd = dict_args.get(
|
|
199
|
+
"token_vulnerability_management"
|
|
200
|
+
) or secret_tool.get("token_defect_dojo")
|
|
201
|
+
return SessionManager(
|
|
202
|
+
token_dd,
|
|
203
|
+
config_tool["VULNERABILITY_MANAGER"]["DEFECT_DOJO"]["HOST_DEFECT_DOJO"],
|
|
204
|
+
)
|
|
205
|
+
|
|
171
206
|
def _get_findings_with_exclusions(
|
|
172
207
|
self, session_manager, service, query_params, tool, date_fn, reason
|
|
173
208
|
):
|
|
@@ -199,17 +234,34 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
|
199
234
|
reason=reason,
|
|
200
235
|
)
|
|
201
236
|
|
|
237
|
+
def _create_report(self, finding, date_fn):
|
|
238
|
+
return Report(
|
|
239
|
+
id=finding.vuln_id_from_tool,
|
|
240
|
+
date=date_fn(
|
|
241
|
+
finding.date
|
|
242
|
+
),
|
|
243
|
+
status=finding.display_status,
|
|
244
|
+
where=self._get_where_report(finding),
|
|
245
|
+
tags=finding.tags,
|
|
246
|
+
severity=finding.severity,
|
|
247
|
+
active=finding.active,
|
|
248
|
+
)
|
|
249
|
+
|
|
202
250
|
def _format_date_to_dd_format(self, date_string):
|
|
203
251
|
return (
|
|
204
252
|
format_date(date_string.split("T")[0], "%Y-%m-%d", "%d%m%Y")
|
|
205
253
|
if date_string
|
|
206
254
|
else None
|
|
207
255
|
)
|
|
256
|
+
|
|
257
|
+
def _get_where_report(self, finding):
|
|
258
|
+
for tag in finding.tags:
|
|
259
|
+
return self._get_where(finding, tag)
|
|
208
260
|
|
|
209
261
|
def _get_where(self, finding, tool):
|
|
210
|
-
if tool in ["
|
|
211
|
-
return finding.file_path
|
|
212
|
-
elif tool in ["engine_container", "engine_dependencies"]:
|
|
262
|
+
if tool in ["engine_container", "engine_dependencies"]:
|
|
213
263
|
return finding.component_name + ":" + finding.component_version
|
|
214
264
|
elif tool == "engine_dast":
|
|
215
265
|
return finding.endpoints
|
|
266
|
+
else:
|
|
267
|
+
return finding.file_path
|
|
@@ -6,6 +6,9 @@ from devsecops_engine_tools.engine_core.src.domain.model.gateway.printer_table_g
|
|
|
6
6
|
from devsecops_engine_tools.engine_core.src.domain.model.finding import (
|
|
7
7
|
Finding,
|
|
8
8
|
)
|
|
9
|
+
from devsecops_engine_tools.engine_core.src.domain.model.report import (
|
|
10
|
+
Report,
|
|
11
|
+
)
|
|
9
12
|
from devsecops_engine_tools.engine_core.src.infrastructure.helpers.util import (
|
|
10
13
|
format_date
|
|
11
14
|
)
|
|
@@ -58,7 +61,34 @@ class PrinterPrettyTable(PrinterTableGateway):
|
|
|
58
61
|
|
|
59
62
|
if len(sorted_table.rows) > 0:
|
|
60
63
|
print(sorted_table)
|
|
61
|
-
|
|
64
|
+
|
|
65
|
+
def print_table_report(self, report_list: "list[Report]"):
|
|
66
|
+
headers = ["Severity", "ID", "Tag", "Where"]
|
|
67
|
+
table = PrettyTable(headers)
|
|
68
|
+
for report in report_list:
|
|
69
|
+
row_data = [
|
|
70
|
+
report.severity.lower(),
|
|
71
|
+
report.id,
|
|
72
|
+
report.tags,
|
|
73
|
+
report.where,
|
|
74
|
+
]
|
|
75
|
+
table.add_row(row_data)
|
|
76
|
+
|
|
77
|
+
severity_order = {"critical": 0, "high": 1, "medium": 2, "low": 3, "unknown": 4}
|
|
78
|
+
sorted_table = PrettyTable()
|
|
79
|
+
sorted_table.field_names = table.field_names
|
|
80
|
+
sorted_table.add_rows(
|
|
81
|
+
sorted(table._rows, key=lambda row: severity_order[row[0]])
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
for column in table.field_names:
|
|
85
|
+
sorted_table.align[column] = "l"
|
|
86
|
+
|
|
87
|
+
sorted_table.set_style(DOUBLE_BORDER)
|
|
88
|
+
|
|
89
|
+
if len(sorted_table.rows) > 0:
|
|
90
|
+
print(sorted_table)
|
|
91
|
+
|
|
62
92
|
def print_table_exclusions(self, exclusions):
|
|
63
93
|
if (exclusions):
|
|
64
94
|
headers = ["Severity", "ID", "Where", "Create Date", "Expired Date", "Reason"]
|
|
@@ -4,6 +4,9 @@ from devsecops_engine_tools.engine_core.src.domain.usecases.break_build import (
|
|
|
4
4
|
from devsecops_engine_tools.engine_core.src.domain.usecases.handle_scan import (
|
|
5
5
|
HandleScan,
|
|
6
6
|
)
|
|
7
|
+
from devsecops_engine_tools.engine_core.src.domain.usecases.handle_risk import (
|
|
8
|
+
HandleRisk,
|
|
9
|
+
)
|
|
7
10
|
from devsecops_engine_tools.engine_core.src.domain.usecases.metrics_manager import (
|
|
8
11
|
MetricsManager,
|
|
9
12
|
)
|
|
@@ -26,21 +29,29 @@ def init_engine_core(
|
|
|
26
29
|
Printers.print_logo_tool(config_tool["BANNER"])
|
|
27
30
|
|
|
28
31
|
if config_tool[args["tool"].upper()]["ENABLED"] == "true":
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
if args["tool"] == "engine_risk":
|
|
33
|
+
HandleRisk(
|
|
34
|
+
vulnerability_management_gateway,
|
|
35
|
+
secrets_manager_gateway,
|
|
36
|
+
devops_platform_gateway,
|
|
37
|
+
print_table_gateway,
|
|
38
|
+
).process(args, config_tool)
|
|
39
|
+
else:
|
|
40
|
+
findings_list, input_core = HandleScan(
|
|
41
|
+
vulnerability_management_gateway,
|
|
42
|
+
secrets_manager_gateway,
|
|
43
|
+
devops_platform_gateway,
|
|
44
|
+
).process(args, config_tool)
|
|
34
45
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
)
|
|
40
|
-
if args["send_metrics"] == "true":
|
|
41
|
-
MetricsManager(devops_platform_gateway, metrics_manager_gateway).process(
|
|
42
|
-
config_tool, input_core, args, scan_result
|
|
46
|
+
scan_result = BreakBuild(devops_platform_gateway, print_table_gateway).process(
|
|
47
|
+
findings_list,
|
|
48
|
+
input_core,
|
|
49
|
+
args
|
|
43
50
|
)
|
|
51
|
+
if args["send_metrics"] == "true":
|
|
52
|
+
MetricsManager(devops_platform_gateway, metrics_manager_gateway).process(
|
|
53
|
+
config_tool, input_core, args, scan_result
|
|
54
|
+
)
|
|
44
55
|
else:
|
|
45
56
|
print(
|
|
46
57
|
devops_platform_gateway.message(
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
from devsecops_engine_tools.engine_risk.src.infrastructure.entry_points.entry_point_risk import (
|
|
2
|
+
init_engine_risk,
|
|
3
|
+
)
|
|
4
|
+
|
|
5
|
+
from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
|
|
6
|
+
from devsecops_engine_tools.engine_utilities import settings
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def runner_engine_risk(
|
|
13
|
+
dict_args, findings, devops_platform_gateway, print_table_gateway
|
|
14
|
+
):
|
|
15
|
+
init_engine_risk(
|
|
16
|
+
devops_platform_gateway,
|
|
17
|
+
print_table_gateway,
|
|
18
|
+
dict_args,
|
|
19
|
+
findings,
|
|
20
|
+
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
from devsecops_engine_tools.engine_core.src.domain.model.gateway.devops_platform_gateway import (
|
|
2
|
+
DevopsPlatformGateway,
|
|
3
|
+
)
|
|
4
|
+
from devsecops_engine_tools.engine_core.src.domain.model.gateway.printer_table_gateway import (
|
|
5
|
+
PrinterTableGateway,
|
|
6
|
+
)
|
|
7
|
+
from devsecops_engine_tools.engine_core.src.domain.model.report import (
|
|
8
|
+
Report,
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class BreakBuild:
|
|
13
|
+
def __init__(
|
|
14
|
+
self,
|
|
15
|
+
devops_platform_gateway: DevopsPlatformGateway,
|
|
16
|
+
printer_table_gateway: PrinterTableGateway,
|
|
17
|
+
):
|
|
18
|
+
self.devops_platform_gateway = devops_platform_gateway
|
|
19
|
+
self.printer_table_gateway = printer_table_gateway
|
|
20
|
+
|
|
21
|
+
def process(self, report_list: "list[Report]"):
|
|
22
|
+
devops_platform_gateway = self.devops_platform_gateway
|
|
23
|
+
printer_table_gateway = self.printer_table_gateway
|
|
24
|
+
if len(report_list):
|
|
25
|
+
print(
|
|
26
|
+
"Below are all vulnerabilities from Vulnerability Management Platform"
|
|
27
|
+
)
|
|
28
|
+
printer_table_gateway.print_table_report(
|
|
29
|
+
report_list,
|
|
30
|
+
)
|
|
31
|
+
else:
|
|
32
|
+
print(
|
|
33
|
+
devops_platform_gateway.message(
|
|
34
|
+
"succeeded", "There are no vulnerabilities"
|
|
35
|
+
)
|
|
36
|
+
)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
class HandleFilters:
|
|
2
|
+
def __init__(
|
|
3
|
+
self,
|
|
4
|
+
remote_config,
|
|
5
|
+
):
|
|
6
|
+
self.remote_config = remote_config
|
|
7
|
+
|
|
8
|
+
def filter(self, findings):
|
|
9
|
+
tag_list = self.remote_config["TAG_FILTER"]
|
|
10
|
+
return list(
|
|
11
|
+
filter(
|
|
12
|
+
lambda finding: finding.active
|
|
13
|
+
and any(tag in finding.tags for tag in tag_list),
|
|
14
|
+
findings,
|
|
15
|
+
)
|
|
16
|
+
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
from devsecops_engine_tools.engine_risk.src.domain.usecases.handle_filters import (
|
|
2
|
+
HandleFilters,
|
|
3
|
+
)
|
|
4
|
+
from devsecops_engine_tools.engine_risk.src.domain.usecases.break_build import (
|
|
5
|
+
BreakBuild,
|
|
6
|
+
)
|
|
7
|
+
|
|
8
|
+
from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
|
|
9
|
+
from devsecops_engine_tools.engine_utilities import settings
|
|
10
|
+
|
|
11
|
+
logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def init_engine_risk(devops_platform_gateway, print_table_gateway, dict_args, findings):
|
|
15
|
+
remote_config = devops_platform_gateway.get_remote_config(
|
|
16
|
+
dict_args["remote_config_repo"], "engine_risk/ConfigTool.json"
|
|
17
|
+
)
|
|
18
|
+
findings_filtered = []
|
|
19
|
+
if len(findings):
|
|
20
|
+
handle_filters = HandleFilters(
|
|
21
|
+
remote_config,
|
|
22
|
+
)
|
|
23
|
+
findings_filtered = handle_filters.filter(findings)
|
|
24
|
+
|
|
25
|
+
BreakBuild(devops_platform_gateway, print_table_gateway).process(
|
|
26
|
+
findings_filtered,
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
else:
|
|
30
|
+
print("No Findings found in Vulnerability Management Platform")
|
|
31
|
+
logger.info("No Findings found in Vulnerability Management Platform")
|
|
File without changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
version = '1.7.
|
|
1
|
+
version = '1.7.7'
|
|
@@ -1,29 +1,31 @@
|
|
|
1
1
|
devsecops_engine_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
devsecops_engine_tools/version.py,sha256=
|
|
2
|
+
devsecops_engine_tools/version.py,sha256=3c0qZaOK9yKD7aUT8WdOiEMuvMDNJDrPlNmCmbPi4Ro,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
|
|
6
|
-
devsecops_engine_tools/engine_core/src/applications/runner_engine_core.py,sha256=
|
|
6
|
+
devsecops_engine_tools/engine_core/src/applications/runner_engine_core.py,sha256=N62RsNN9aM2dhLQDNtDqDRRS0oo9zGnyjEotNaPmrMI,5169
|
|
7
7
|
devsecops_engine_tools/engine_core/src/deployment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
8
8
|
devsecops_engine_tools/engine_core/src/deployment/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
9
|
devsecops_engine_tools/engine_core/src/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
10
|
devsecops_engine_tools/engine_core/src/domain/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
|
-
devsecops_engine_tools/engine_core/src/domain/model/customs_exceptions.py,sha256=
|
|
11
|
+
devsecops_engine_tools/engine_core/src/domain/model/customs_exceptions.py,sha256=Djiq-FHewZs85snLoJJkZvGjEtXqcpN2EwZuSvQJCUI,449
|
|
12
12
|
devsecops_engine_tools/engine_core/src/domain/model/exclusions.py,sha256=4Cn65ARrCw2xMAYEwoNlPUYVo5NVO0IPd6tj0wGDZig,498
|
|
13
13
|
devsecops_engine_tools/engine_core/src/domain/model/finding.py,sha256=MntDksQuPt1L-1Ww3nK7NbMLfVwRjxPGCN_oHYXbbWk,383
|
|
14
14
|
devsecops_engine_tools/engine_core/src/domain/model/input_core.py,sha256=hc1WMzCwsGxnrlvvk84S5iNYJRDQWbaQP9MwR3N7tVM,422
|
|
15
15
|
devsecops_engine_tools/engine_core/src/domain/model/level_compliance.py,sha256=ntn_UWqHc6sT5g_LozBdjdewTQxFsp7Kt8M0xqw-k_o,98
|
|
16
16
|
devsecops_engine_tools/engine_core/src/domain/model/level_vulnerability.py,sha256=0sySEnFNkS2Y8uF5GUVAYehXw-i2OglUClkVobnSTPc,257
|
|
17
|
+
devsecops_engine_tools/engine_core/src/domain/model/report.py,sha256=eJ4r39OBgB-leNImTVV2fHuublFnpmCMHcvKWvL-hxs,410
|
|
17
18
|
devsecops_engine_tools/engine_core/src/domain/model/threshold.py,sha256=AQu4NnYBvbUbzW_IkuCVF0_i535O4LeE3ZvBIZ7s9ZM,445
|
|
18
19
|
devsecops_engine_tools/engine_core/src/domain/model/vulnerability_management.py,sha256=5RcMHpeqznrTOpkjLuqekA_Bqf2Qr-w6OZ5Eoi3b-bs,465
|
|
19
20
|
devsecops_engine_tools/engine_core/src/domain/model/gateway/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
20
21
|
devsecops_engine_tools/engine_core/src/domain/model/gateway/devops_platform_gateway.py,sha256=ufAe6jd91IX-vKsFtlad2K-WliyY7TiN8wPTNmeHZD0,676
|
|
21
22
|
devsecops_engine_tools/engine_core/src/domain/model/gateway/metrics_manager_gateway.py,sha256=u_ivbmCyymw0Je7gRFg0uD9iDmZfTbteH5UwcgP0JAs,191
|
|
22
|
-
devsecops_engine_tools/engine_core/src/domain/model/gateway/printer_table_gateway.py,sha256=
|
|
23
|
+
devsecops_engine_tools/engine_core/src/domain/model/gateway/printer_table_gateway.py,sha256=ROBsh7Lyu62a5RqZ4KgGQcwrBzbHRwxAJ9Rj3LoupQc,602
|
|
23
24
|
devsecops_engine_tools/engine_core/src/domain/model/gateway/secrets_manager_gateway.py,sha256=CTwUIvUWF0NSSzdCqASUFst6KUysW53NV9eatjLGdl8,170
|
|
24
|
-
devsecops_engine_tools/engine_core/src/domain/model/gateway/vulnerability_management_gateway.py,sha256=
|
|
25
|
+
devsecops_engine_tools/engine_core/src/domain/model/gateway/vulnerability_management_gateway.py,sha256=sn9bEDfaNtRmHHtn49eSVg_JO7Zr2OVyj350KzyGiXo,667
|
|
25
26
|
devsecops_engine_tools/engine_core/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
26
27
|
devsecops_engine_tools/engine_core/src/domain/usecases/break_build.py,sha256=z6lcd-tnb-3QfZ1yf2ZlaRbovwF0YE6nUmS5V92aszc,15534
|
|
28
|
+
devsecops_engine_tools/engine_core/src/domain/usecases/handle_risk.py,sha256=EBLEzm-p_lEeB7T8iarn2Fc4_6hY0XAIT1AJATd2JUM,2473
|
|
27
29
|
devsecops_engine_tools/engine_core/src/domain/usecases/handle_scan.py,sha256=CBk6KR2lpZ_ayitIdZERjJ0yasg1_dICHA0Tw97s-eo,6410
|
|
28
30
|
devsecops_engine_tools/engine_core/src/domain/usecases/metrics_manager.py,sha256=Xi0iNnPrFgqd2cBdAA5E_tgouhxs-BTo016aolnGgv8,2413
|
|
29
31
|
devsecops_engine_tools/engine_core/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -34,13 +36,13 @@ devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/secret
|
|
|
34
36
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
35
37
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/azure_devops.py,sha256=Ot1j5my-iEpU-ZYy9yNXkwmwLOmJ3f95JyyAUcpFN5g,4967
|
|
36
38
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
37
|
-
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py,sha256=
|
|
39
|
+
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py,sha256=YxW1Otev5V7REBr9yCW36XCmk9e_v5Y-blXrmRX_rZU,10748
|
|
38
40
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/printer_pretty_table/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
39
|
-
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/printer_pretty_table/printer_pretty_table.py,sha256=
|
|
41
|
+
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/printer_pretty_table/printer_pretty_table.py,sha256=Tz056qYuIKrdYGKyoPo7xFdOpfN3A0YMd3cCSAGVrYQ,3828
|
|
40
42
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/runtime_local/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
41
43
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/runtime_local/runtime_local.py,sha256=2eOsZQHegJg3AdZrQK6cJJJhlR-CHrcJxHvapE5eRx8,2565
|
|
42
44
|
devsecops_engine_tools/engine_core/src/infrastructure/entry_points/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
43
|
-
devsecops_engine_tools/engine_core/src/infrastructure/entry_points/entry_point_core.py,sha256=
|
|
45
|
+
devsecops_engine_tools/engine_core/src/infrastructure/entry_points/entry_point_core.py,sha256=v8D9F_MvS2_zQqciDXUEaCHx6oK60ESpSdh-SDz851Y,2082
|
|
44
46
|
devsecops_engine_tools/engine_core/src/infrastructure/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
45
47
|
devsecops_engine_tools/engine_core/src/infrastructure/helpers/aws.py,sha256=wfy_PosHS0rrvkdiUYczxIcc8ZNwfqzWwqVxrmRTCBI,264
|
|
46
48
|
devsecops_engine_tools/engine_core/src/infrastructure/helpers/util.py,sha256=DTruKscu64gBk-0F-xwKcqKu6_Y8HhqemSpBJxd2BTY,382
|
|
@@ -56,6 +58,23 @@ devsecops_engine_tools/engine_dast/src/infrastructure/__init__.py,sha256=47DEQpj
|
|
|
56
58
|
devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
57
59
|
devsecops_engine_tools/engine_dast/src/infrastructure/entry_points/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
58
60
|
devsecops_engine_tools/engine_dast/src/infrastructure/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
61
|
+
devsecops_engine_tools/engine_risk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
62
|
+
devsecops_engine_tools/engine_risk/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
63
|
+
devsecops_engine_tools/engine_risk/src/applications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
64
|
+
devsecops_engine_tools/engine_risk/src/applications/runner_engine_risk.py,sha256=1_9kBIxFAXAHLIcA8HK9CQrbXZgyANAR-JlDzck8G4w,558
|
|
65
|
+
devsecops_engine_tools/engine_risk/src/deployment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
66
|
+
devsecops_engine_tools/engine_risk/src/deployment/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
67
|
+
devsecops_engine_tools/engine_risk/src/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
68
|
+
devsecops_engine_tools/engine_risk/src/domain/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
69
|
+
devsecops_engine_tools/engine_risk/src/domain/model/gateways/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
70
|
+
devsecops_engine_tools/engine_risk/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
71
|
+
devsecops_engine_tools/engine_risk/src/domain/usecases/break_build.py,sha256=G0uFO59UJspQnq3Np2M5PiXTxWDZUgJqfkVyxcuk3jI,1225
|
|
72
|
+
devsecops_engine_tools/engine_risk/src/domain/usecases/handle_filters.py,sha256=HLS24HrGneeueqp8pQJH3FgGHchxAyAr6Gg_Csc8qn8,415
|
|
73
|
+
devsecops_engine_tools/engine_risk/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
74
|
+
devsecops_engine_tools/engine_risk/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
75
|
+
devsecops_engine_tools/engine_risk/src/infrastructure/entry_points/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
76
|
+
devsecops_engine_tools/engine_risk/src/infrastructure/entry_points/entry_point_risk.py,sha256=9clAw0ccvz7o8n6E-Uxtn_UKC-cVa_jp_JzIXnoYcmE,1107
|
|
77
|
+
devsecops_engine_tools/engine_risk/src/infrastructure/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
59
78
|
devsecops_engine_tools/engine_sast/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
60
79
|
devsecops_engine_tools/engine_sast/engine_iac/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
61
80
|
devsecops_engine_tools/engine_sast/engine_iac/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -224,8 +243,8 @@ devsecops_engine_tools/engine_utilities/utils/logger_info.py,sha256=4Mz8Bwlm9Mku
|
|
|
224
243
|
devsecops_engine_tools/engine_utilities/utils/name_conversion.py,sha256=ADJrRGaxYSDe0ZRh6VHRf53H4sXPcb-vNP_i81PUn3I,307
|
|
225
244
|
devsecops_engine_tools/engine_utilities/utils/printers.py,sha256=GAslbWaBpwP3mP6fBsgVl07TTBgcCggQTy8h2M9ibeo,612
|
|
226
245
|
devsecops_engine_tools/engine_utilities/utils/session_manager.py,sha256=yNtlT-8Legz1sHbGPH8LNYjL-LgDUE0zXG2rYjiab7U,290
|
|
227
|
-
devsecops_engine_tools-1.7.
|
|
228
|
-
devsecops_engine_tools-1.7.
|
|
229
|
-
devsecops_engine_tools-1.7.
|
|
230
|
-
devsecops_engine_tools-1.7.
|
|
231
|
-
devsecops_engine_tools-1.7.
|
|
246
|
+
devsecops_engine_tools-1.7.7.dist-info/METADATA,sha256=3Cgk97pgyXWQiWFLHKhWqj3apQU0Rg5EHToRsFPflxM,9926
|
|
247
|
+
devsecops_engine_tools-1.7.7.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
248
|
+
devsecops_engine_tools-1.7.7.dist-info/entry_points.txt,sha256=9IjXF_7Zpgowq_SY6OSmsA9vZze18a8_AeHwkQVrgKk,131
|
|
249
|
+
devsecops_engine_tools-1.7.7.dist-info/top_level.txt,sha256=ge6y0X_xBAU1aG3EMWFtl9djbVyg5BxuSp2r2Lg6EQU,23
|
|
250
|
+
devsecops_engine_tools-1.7.7.dist-info/RECORD,,
|
|
File without changes
|
{devsecops_engine_tools-1.7.5.dist-info → devsecops_engine_tools-1.7.7.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{devsecops_engine_tools-1.7.5.dist-info → devsecops_engine_tools-1.7.7.dist-info}/top_level.txt
RENAMED
|
File without changes
|