devsecops-engine-tools 1.13.2__py3-none-any.whl → 1.14.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.
- devsecops_engine_tools/engine_core/src/domain/model/exclusions.py +2 -2
- devsecops_engine_tools/engine_core/src/domain/usecases/handle_risk.py +42 -31
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py +2 -1
- devsecops_engine_tools/engine_risk/src/applications/runner_engine_risk.py +7 -1
- devsecops_engine_tools/engine_risk/src/domain/usecases/break_build.py +25 -23
- devsecops_engine_tools/engine_risk/src/domain/usecases/get_exclusions.py +4 -3
- devsecops_engine_tools/engine_risk/src/infrastructure/entry_points/entry_point_risk.py +6 -17
- devsecops_engine_tools/version.py +1 -1
- {devsecops_engine_tools-1.13.2.dist-info → devsecops_engine_tools-1.14.0.dist-info}/METADATA +1 -1
- {devsecops_engine_tools-1.13.2.dist-info → devsecops_engine_tools-1.14.0.dist-info}/RECORD +13 -13
- {devsecops_engine_tools-1.13.2.dist-info → devsecops_engine_tools-1.14.0.dist-info}/WHEEL +0 -0
- {devsecops_engine_tools-1.13.2.dist-info → devsecops_engine_tools-1.14.0.dist-info}/entry_points.txt +0 -0
- {devsecops_engine_tools-1.13.2.dist-info → devsecops_engine_tools-1.14.0.dist-info}/top_level.txt +0 -0
|
@@ -5,10 +5,10 @@ from dataclasses import dataclass
|
|
|
5
5
|
class Exclusions:
|
|
6
6
|
def __init__(self, **kwargs):
|
|
7
7
|
self.id = kwargs.get("id", "")
|
|
8
|
-
self.where = kwargs.get("where", "")
|
|
8
|
+
self.where = kwargs.get("where", "all")
|
|
9
9
|
self.cve_id = kwargs.get("cve_id", "")
|
|
10
10
|
self.create_date = kwargs.get("create_date", "")
|
|
11
11
|
self.expired_date = kwargs.get("expired_date", "")
|
|
12
12
|
self.severity = kwargs.get("severity", "")
|
|
13
13
|
self.hu = kwargs.get("hu", "")
|
|
14
|
-
self.reason = kwargs.get("reason", "Risk
|
|
14
|
+
self.reason = kwargs.get("reason", "Risk Accepted")
|
|
@@ -51,9 +51,7 @@ class HandleRisk:
|
|
|
51
51
|
"Error getting finding list in handle risk: {0}".format(str(e))
|
|
52
52
|
)
|
|
53
53
|
|
|
54
|
-
def _filter_engagements(
|
|
55
|
-
self, engagements, service, endings_to_exclude, risk_config
|
|
56
|
-
):
|
|
54
|
+
def _filter_engagements(self, engagements, service, risk_config):
|
|
57
55
|
filtered_engagements = []
|
|
58
56
|
min_word_length = risk_config["HANDLE_SERVICE_NAME"]["MIN_WORD_LENGTH"]
|
|
59
57
|
words = [
|
|
@@ -65,21 +63,22 @@ class HandleRisk:
|
|
|
65
63
|
]
|
|
66
64
|
check_words_regex = risk_config["HANDLE_SERVICE_NAME"]["REGEX_CHECK_WORDS"]
|
|
67
65
|
min_word_amount = risk_config["HANDLE_SERVICE_NAME"]["MIN_WORD_AMOUNT"]
|
|
66
|
+
endings = risk_config["HANDLE_SERVICE_NAME"]["CHECK_ENDING"]
|
|
68
67
|
|
|
69
68
|
for engagement in engagements:
|
|
70
|
-
if service.lower()
|
|
69
|
+
if service.lower() == engagement.name.lower():
|
|
71
70
|
filtered_engagements += [engagement.name]
|
|
72
71
|
elif re.search(check_words_regex, engagement.name.lower()) and (
|
|
73
72
|
sum(1 for word in words if word.lower() in engagement.name.lower())
|
|
74
73
|
>= min_word_amount
|
|
75
74
|
):
|
|
76
75
|
filtered_engagements += [engagement.name]
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
76
|
+
elif endings:
|
|
77
|
+
if any(
|
|
78
|
+
(service.lower() + ending.lower() == engagement.name.lower())
|
|
79
|
+
for ending in endings
|
|
80
|
+
):
|
|
81
|
+
filtered_engagements += [engagement.name]
|
|
83
82
|
|
|
84
83
|
return filtered_engagements
|
|
85
84
|
|
|
@@ -106,30 +105,48 @@ class HandleRisk:
|
|
|
106
105
|
return remaining_services
|
|
107
106
|
return service_list
|
|
108
107
|
|
|
109
|
-
def
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
108
|
+
def _should_skip_analysis(self, remote_config, pipeline_name, exclusions):
|
|
109
|
+
ignore_pattern = remote_config["IGNORE_ANALYSIS_PATTERN"]
|
|
110
|
+
return re.match(ignore_pattern, pipeline_name, re.IGNORECASE) or (
|
|
111
|
+
pipeline_name in exclusions
|
|
112
|
+
and exclusions[pipeline_name].get("SKIP_TOOL", 0)
|
|
113
|
+
)
|
|
113
114
|
|
|
115
|
+
def process(self, dict_args: any, remote_config: any):
|
|
114
116
|
risk_config = self.devops_platform_gateway.get_remote_config(
|
|
115
117
|
dict_args["remote_config_repo"], "engine_risk/ConfigTool.json"
|
|
116
118
|
)
|
|
117
|
-
|
|
119
|
+
risk_exclusions = self.devops_platform_gateway.get_remote_config(
|
|
120
|
+
dict_args["remote_config_repo"], "engine_risk/Exclusions.json"
|
|
121
|
+
)
|
|
118
122
|
pipeline_name = self.devops_platform_gateway.get_variable("pipeline_name")
|
|
123
|
+
|
|
124
|
+
input_core = InputCore(
|
|
125
|
+
[],
|
|
126
|
+
{},
|
|
127
|
+
"",
|
|
128
|
+
"",
|
|
129
|
+
pipeline_name,
|
|
130
|
+
self.devops_platform_gateway.get_variable("stage").capitalize(),
|
|
131
|
+
)
|
|
132
|
+
|
|
133
|
+
if self._should_skip_analysis(risk_config, pipeline_name, risk_exclusions):
|
|
134
|
+
print("Tool skipped by DevSecOps Policy.")
|
|
135
|
+
logger.info("Tool skipped by DevSecOps Policy.")
|
|
136
|
+
return [], input_core
|
|
137
|
+
|
|
138
|
+
secret_tool = None
|
|
139
|
+
if dict_args["use_secrets_manager"] == "true":
|
|
140
|
+
secret_tool = self.secrets_manager_gateway.get_secret(remote_config)
|
|
141
|
+
|
|
119
142
|
service = pipeline_name
|
|
120
143
|
service_list = []
|
|
121
144
|
|
|
122
145
|
if risk_config["HANDLE_SERVICE_NAME"]["ENABLED"].lower() == "true":
|
|
123
|
-
exclusive_endings = risk_config["HANDLE_SERVICE_NAME"]["EXCLUSIVE_ENDING"]
|
|
124
|
-
endings_to_exclude = [
|
|
125
|
-
ending
|
|
126
|
-
for ending in exclusive_endings
|
|
127
|
-
if not pipeline_name.endswith(ending)
|
|
128
|
-
]
|
|
129
146
|
service = next(
|
|
130
147
|
(
|
|
131
148
|
pipeline_name.replace(ending, "")
|
|
132
|
-
for ending in
|
|
149
|
+
for ending in risk_config["HANDLE_SERVICE_NAME"]["CHECK_ENDING"]
|
|
133
150
|
if pipeline_name.endswith(ending)
|
|
134
151
|
),
|
|
135
152
|
pipeline_name,
|
|
@@ -147,7 +164,7 @@ class HandleRisk:
|
|
|
147
164
|
service_code, dict_args, secret_tool, remote_config
|
|
148
165
|
)
|
|
149
166
|
service_list += self._filter_engagements(
|
|
150
|
-
engagements, service,
|
|
167
|
+
engagements, service, risk_config
|
|
151
168
|
)
|
|
152
169
|
|
|
153
170
|
service_list += [service]
|
|
@@ -180,15 +197,9 @@ class HandleRisk:
|
|
|
180
197
|
dict_args,
|
|
181
198
|
findings,
|
|
182
199
|
exclusions,
|
|
200
|
+
new_service_list,
|
|
183
201
|
self.devops_platform_gateway,
|
|
184
202
|
self.print_table_gateway,
|
|
185
203
|
)
|
|
186
|
-
|
|
187
|
-
[],
|
|
188
|
-
{},
|
|
189
|
-
"",
|
|
190
|
-
"",
|
|
191
|
-
pipeline_name,
|
|
192
|
-
self.devops_platform_gateway.get_variable("stage").capitalize(),
|
|
193
|
-
)
|
|
204
|
+
|
|
194
205
|
return result, input_core
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py
CHANGED
|
@@ -220,7 +220,8 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
|
220
220
|
all_findings_query_params = {
|
|
221
221
|
"limit": config_tool["VULNERABILITY_MANAGER"]["DEFECT_DOJO"][
|
|
222
222
|
"LIMITS_QUERY"
|
|
223
|
-
]
|
|
223
|
+
],
|
|
224
|
+
"duplicate": "false"
|
|
224
225
|
}
|
|
225
226
|
max_retries = config_tool["VULNERABILITY_MANAGER"]["DEFECT_DOJO"][
|
|
226
227
|
"MAX_RETRIES_QUERY"
|
|
@@ -13,7 +13,12 @@ logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
def runner_engine_risk(
|
|
16
|
-
dict_args,
|
|
16
|
+
dict_args,
|
|
17
|
+
findings,
|
|
18
|
+
vm_exclusions,
|
|
19
|
+
services,
|
|
20
|
+
devops_platform_gateway,
|
|
21
|
+
print_table_gateway,
|
|
17
22
|
):
|
|
18
23
|
add_epss_gateway = FirstCsv()
|
|
19
24
|
|
|
@@ -23,5 +28,6 @@ def runner_engine_risk(
|
|
|
23
28
|
print_table_gateway,
|
|
24
29
|
dict_args,
|
|
25
30
|
findings,
|
|
31
|
+
services,
|
|
26
32
|
vm_exclusions,
|
|
27
33
|
)
|
|
@@ -118,9 +118,11 @@ class BreakBuild:
|
|
|
118
118
|
|
|
119
119
|
def _remediation_rate_control(self, all_report: "list[Report]"):
|
|
120
120
|
remote_config = self.remote_config
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
)
|
|
121
|
+
mitigated = sum(1 for report in all_report if report.mitigated)
|
|
122
|
+
total = len(all_report)
|
|
123
|
+
print(f"Mitigated count: {mitigated} Total count: {total}")
|
|
124
|
+
remediation_rate_value = self._get_percentage(mitigated / total)
|
|
125
|
+
|
|
124
126
|
risk_threshold = remote_config["THRESHOLD"]["REMEDIATION_RATE"]
|
|
125
127
|
self.remediation_rate = remediation_rate_value
|
|
126
128
|
|
|
@@ -151,14 +153,6 @@ class BreakBuild:
|
|
|
151
153
|
def _get_percentage(self, decimal):
|
|
152
154
|
return round(decimal * 100, 3)
|
|
153
155
|
|
|
154
|
-
def _get_applied_exclusion(self, report: Report):
|
|
155
|
-
for exclusion in self.exclusions:
|
|
156
|
-
if exclusion.id and (report.id == exclusion.id):
|
|
157
|
-
return exclusion
|
|
158
|
-
elif exclusion.id and (report.vuln_id_from_tool == exclusion.id):
|
|
159
|
-
return exclusion
|
|
160
|
-
return None
|
|
161
|
-
|
|
162
156
|
def _map_applied_exclusion(self, exclusions: "list[Exclusions]"):
|
|
163
157
|
return [
|
|
164
158
|
{
|
|
@@ -173,22 +167,27 @@ class BreakBuild:
|
|
|
173
167
|
]
|
|
174
168
|
|
|
175
169
|
def _apply_exclusions(self, report_list: "list[Report]"):
|
|
176
|
-
|
|
170
|
+
filtered_reports = []
|
|
177
171
|
applied_exclusions = []
|
|
178
|
-
exclusions_ids = {exclusion.id for exclusion in self.exclusions if exclusion.id}
|
|
179
172
|
|
|
180
173
|
for report in report_list:
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
174
|
+
exclude = False
|
|
175
|
+
for exclusion in self.exclusions:
|
|
176
|
+
if (
|
|
177
|
+
(
|
|
178
|
+
report.vuln_id_from_tool
|
|
179
|
+
and report.vuln_id_from_tool == exclusion.id
|
|
180
|
+
)
|
|
181
|
+
or (report.id and report.id == exclusion.id)
|
|
182
|
+
) and ((exclusion.where in report.where) or (exclusion.where == "all")):
|
|
183
|
+
exclude = True
|
|
184
|
+
applied_exclusions.append(exclusion)
|
|
185
|
+
break
|
|
186
|
+
if not exclude:
|
|
188
187
|
report.reason = "Remediation Rate"
|
|
189
|
-
|
|
188
|
+
filtered_reports.append(report)
|
|
190
189
|
|
|
191
|
-
return
|
|
190
|
+
return filtered_reports, applied_exclusions
|
|
192
191
|
|
|
193
192
|
def _tag_blacklist_control(self, report_list: "list[Report]"):
|
|
194
193
|
remote_config = self.remote_config
|
|
@@ -245,7 +244,10 @@ class BreakBuild:
|
|
|
245
244
|
report.risk_score = round(
|
|
246
245
|
remote_config["WEIGHTS"]["severity"].get(report.severity.lower(), 0)
|
|
247
246
|
+ remote_config["WEIGHTS"]["epss_score"] * report.epss_score
|
|
248
|
-
+
|
|
247
|
+
+ min(
|
|
248
|
+
remote_config["WEIGHTS"]["age"] * report.age,
|
|
249
|
+
remote_config["WEIGHTS"]["max_age"],
|
|
250
|
+
)
|
|
249
251
|
+ sum(
|
|
250
252
|
remote_config["WEIGHTS"]["tags"].get(tag, 0)
|
|
251
253
|
for tag in report.tags
|
|
@@ -11,14 +11,14 @@ class GetExclusions:
|
|
|
11
11
|
findings,
|
|
12
12
|
risk_config,
|
|
13
13
|
risk_exclusions,
|
|
14
|
-
|
|
14
|
+
services,
|
|
15
15
|
):
|
|
16
16
|
self.devops_platform_gateway = devops_platform_gateway
|
|
17
17
|
self.dict_args = dict_args
|
|
18
18
|
self.findings = findings
|
|
19
19
|
self.risk_config = risk_config
|
|
20
20
|
self.risk_exclusions = risk_exclusions
|
|
21
|
-
self.
|
|
21
|
+
self.services = services
|
|
22
22
|
|
|
23
23
|
def process(self):
|
|
24
24
|
core_config = self.devops_platform_gateway.get_remote_config(
|
|
@@ -49,7 +49,8 @@ class GetExclusions:
|
|
|
49
49
|
|
|
50
50
|
def _get_exclusions(self, config, key):
|
|
51
51
|
exclusions = []
|
|
52
|
-
|
|
52
|
+
scope_list = ["All"] + self.services
|
|
53
|
+
for scope in scope_list:
|
|
53
54
|
if config.get(scope, None) and config[scope].get(key, None):
|
|
54
55
|
exclusions.extend(
|
|
55
56
|
[
|
|
@@ -26,6 +26,7 @@ def init_engine_risk(
|
|
|
26
26
|
print_table_gateway,
|
|
27
27
|
dict_args,
|
|
28
28
|
findings,
|
|
29
|
+
services,
|
|
29
30
|
vm_exclusions,
|
|
30
31
|
):
|
|
31
32
|
remote_config = devops_platform_gateway.get_remote_config(
|
|
@@ -34,17 +35,12 @@ def init_engine_risk(
|
|
|
34
35
|
risk_exclusions = devops_platform_gateway.get_remote_config(
|
|
35
36
|
dict_args["remote_config_repo"], "engine_risk/Exclusions.json"
|
|
36
37
|
)
|
|
37
|
-
pipeline_name = devops_platform_gateway.get_variable("pipeline_name")
|
|
38
|
-
if should_skip_analysis(remote_config, pipeline_name, risk_exclusions):
|
|
39
|
-
print("Tool skipped by DevSecOps Policy.")
|
|
40
|
-
logger.info("Tool skipped by DevSecOps Policy.")
|
|
41
|
-
return
|
|
42
38
|
|
|
43
39
|
return process_findings(
|
|
44
40
|
findings,
|
|
45
41
|
vm_exclusions,
|
|
46
42
|
dict_args,
|
|
47
|
-
|
|
43
|
+
services,
|
|
48
44
|
risk_exclusions,
|
|
49
45
|
remote_config,
|
|
50
46
|
add_epss_gateway,
|
|
@@ -53,18 +49,11 @@ def init_engine_risk(
|
|
|
53
49
|
)
|
|
54
50
|
|
|
55
51
|
|
|
56
|
-
def should_skip_analysis(remote_config, pipeline_name, exclusions):
|
|
57
|
-
ignore_pattern = remote_config["IGNORE_ANALYSIS_PATTERN"]
|
|
58
|
-
return re.match(ignore_pattern, pipeline_name, re.IGNORECASE) or (
|
|
59
|
-
pipeline_name in exclusions and exclusions[pipeline_name].get("SKIP_TOOL", 0)
|
|
60
|
-
)
|
|
61
|
-
|
|
62
|
-
|
|
63
52
|
def process_findings(
|
|
64
53
|
findings,
|
|
65
54
|
vm_exclusions,
|
|
66
55
|
dict_args,
|
|
67
|
-
|
|
56
|
+
services,
|
|
68
57
|
risk_exclusions,
|
|
69
58
|
remote_config,
|
|
70
59
|
add_epss_gateway,
|
|
@@ -86,7 +75,7 @@ def process_findings(
|
|
|
86
75
|
dict_args,
|
|
87
76
|
remote_config,
|
|
88
77
|
risk_exclusions,
|
|
89
|
-
|
|
78
|
+
services,
|
|
90
79
|
add_epss_gateway,
|
|
91
80
|
print_table_gateway,
|
|
92
81
|
)
|
|
@@ -100,7 +89,7 @@ def process_active_findings(
|
|
|
100
89
|
dict_args,
|
|
101
90
|
remote_config,
|
|
102
91
|
risk_exclusions,
|
|
103
|
-
|
|
92
|
+
services,
|
|
104
93
|
add_epss_gateway,
|
|
105
94
|
print_table_gateway,
|
|
106
95
|
):
|
|
@@ -111,7 +100,7 @@ def process_active_findings(
|
|
|
111
100
|
data_added,
|
|
112
101
|
remote_config,
|
|
113
102
|
risk_exclusions,
|
|
114
|
-
|
|
103
|
+
services,
|
|
115
104
|
)
|
|
116
105
|
exclusions = get_exclusions.process()
|
|
117
106
|
break_build = BreakBuild(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
version = '1.
|
|
1
|
+
version = '1.14.0'
|
|
@@ -1,5 +1,5 @@
|
|
|
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=oB3CD-aoOXzQYqOvkxp0DM_gsf5lrHCmWwwlwsT3uDI,19
|
|
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
|
|
@@ -10,7 +10,7 @@ devsecops_engine_tools/engine_core/src/domain/__init__.py,sha256=47DEQpj8HBSa-_T
|
|
|
10
10
|
devsecops_engine_tools/engine_core/src/domain/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
11
|
devsecops_engine_tools/engine_core/src/domain/model/custom_level_vulnerability.py,sha256=eO9m76WVslcwhYbF9IAXqhI_iYK6zKLiOVt_3AxsOLY,302
|
|
12
12
|
devsecops_engine_tools/engine_core/src/domain/model/customs_exceptions.py,sha256=YLeOj4O7kNsUx8RD6pwBQdFLYbkm7Eh-F-ohZ3jFGbs,599
|
|
13
|
-
devsecops_engine_tools/engine_core/src/domain/model/exclusions.py,sha256=
|
|
13
|
+
devsecops_engine_tools/engine_core/src/domain/model/exclusions.py,sha256=rFinY7wQsIu4nNPdT9WlvzB-1S1tS3J3oQgb8tDxbZk,499
|
|
14
14
|
devsecops_engine_tools/engine_core/src/domain/model/finding.py,sha256=MntDksQuPt1L-1Ww3nK7NbMLfVwRjxPGCN_oHYXbbWk,383
|
|
15
15
|
devsecops_engine_tools/engine_core/src/domain/model/input_core.py,sha256=hc1WMzCwsGxnrlvvk84S5iNYJRDQWbaQP9MwR3N7tVM,422
|
|
16
16
|
devsecops_engine_tools/engine_core/src/domain/model/level_compliance.py,sha256=ntn_UWqHc6sT5g_LozBdjdewTQxFsp7Kt8M0xqw-k_o,98
|
|
@@ -26,7 +26,7 @@ devsecops_engine_tools/engine_core/src/domain/model/gateway/secrets_manager_gate
|
|
|
26
26
|
devsecops_engine_tools/engine_core/src/domain/model/gateway/vulnerability_management_gateway.py,sha256=c98JSdYYPyr82VZR4MRy49xSBVxueERbAS1mWwKqV6g,878
|
|
27
27
|
devsecops_engine_tools/engine_core/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
28
28
|
devsecops_engine_tools/engine_core/src/domain/usecases/break_build.py,sha256=JP-i5SFaMN7Yi4uDCe_AE1kJ197g1IJGcwQdq-RYbk4,16198
|
|
29
|
-
devsecops_engine_tools/engine_core/src/domain/usecases/handle_risk.py,sha256=
|
|
29
|
+
devsecops_engine_tools/engine_core/src/domain/usecases/handle_risk.py,sha256=1vctNN5aSPGsSgrldPiYg2Fq86q6Z9DzFdazjWAm2Do,8133
|
|
30
30
|
devsecops_engine_tools/engine_core/src/domain/usecases/handle_scan.py,sha256=yrPQdNvFNDeS4g4UxdxFDj-yw17K_OZ3T-HDEiePknE,7041
|
|
31
31
|
devsecops_engine_tools/engine_core/src/domain/usecases/metrics_manager.py,sha256=Xi0iNnPrFgqd2cBdAA5E_tgouhxs-BTo016aolnGgv8,2413
|
|
32
32
|
devsecops_engine_tools/engine_core/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -37,7 +37,7 @@ devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/secret
|
|
|
37
37
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
38
38
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/azure_devops.py,sha256=blI4ZrquRE4y6DJ7N2YRx1nL0wrAXvdpx0fLSUf5qwA,4831
|
|
39
39
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
40
|
-
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py,sha256=
|
|
40
|
+
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py,sha256=bqtDUeaEqdecvyJ6cRx9CCiCG3F-Y6FPM74xHcW6o3o,16596
|
|
41
41
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/github/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
42
42
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/github/github_actions.py,sha256=pxlgjhX4-Dssn-XHKK8AdCOj6Ry6VcQtoDf5q8CxTks,3731
|
|
43
43
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/printer_pretty_table/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -64,7 +64,7 @@ devsecops_engine_tools/engine_dast/src/infrastructure/helpers/__init__.py,sha256
|
|
|
64
64
|
devsecops_engine_tools/engine_risk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
65
65
|
devsecops_engine_tools/engine_risk/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
66
66
|
devsecops_engine_tools/engine_risk/src/applications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
67
|
-
devsecops_engine_tools/engine_risk/src/applications/runner_engine_risk.py,sha256=
|
|
67
|
+
devsecops_engine_tools/engine_risk/src/applications/runner_engine_risk.py,sha256=4-QLLQ1XIpJdnprDkxlNH5kf2-mHpm74nl8K5JRD_4Q,838
|
|
68
68
|
devsecops_engine_tools/engine_risk/src/deployment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
69
69
|
devsecops_engine_tools/engine_risk/src/deployment/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
70
70
|
devsecops_engine_tools/engine_risk/src/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -73,15 +73,15 @@ devsecops_engine_tools/engine_risk/src/domain/model/gateways/__init__.py,sha256=
|
|
|
73
73
|
devsecops_engine_tools/engine_risk/src/domain/model/gateways/add_epss_gateway.py,sha256=cTm4QSxiaUt7ETCdXWZxKEus8pmEDA3e9k5b39SLDDE,178
|
|
74
74
|
devsecops_engine_tools/engine_risk/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
75
75
|
devsecops_engine_tools/engine_risk/src/domain/usecases/add_data.py,sha256=4wqDj-q7hJfJscvrbMDcy7tONqxdxl-CSl_TWTRUGKA,402
|
|
76
|
-
devsecops_engine_tools/engine_risk/src/domain/usecases/break_build.py,sha256=
|
|
77
|
-
devsecops_engine_tools/engine_risk/src/domain/usecases/get_exclusions.py,sha256=
|
|
76
|
+
devsecops_engine_tools/engine_risk/src/domain/usecases/break_build.py,sha256=sYcsReL3FF_9_NTEcK-sFCFHK5Hi9zJrMpD4cDLAX4w,11380
|
|
77
|
+
devsecops_engine_tools/engine_risk/src/domain/usecases/get_exclusions.py,sha256=o4vMpmgt5q1BsaWpGZWdCHPVs1CFyj-P3TrgOSEBcqM,2327
|
|
78
78
|
devsecops_engine_tools/engine_risk/src/domain/usecases/handle_filters.py,sha256=w18CVVSs0mkfLYo7f-wZJv1afoPWzEU-IBKUzk7LMYI,832
|
|
79
79
|
devsecops_engine_tools/engine_risk/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
80
80
|
devsecops_engine_tools/engine_risk/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
81
81
|
devsecops_engine_tools/engine_risk/src/infrastructure/driven_adapters/first_csv/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
82
82
|
devsecops_engine_tools/engine_risk/src/infrastructure/driven_adapters/first_csv/first_epss_csv.py,sha256=pWaRmIwVyiB5mlmWySHIx-DUgN9vtKQc-MqyRNVlTJo,2150
|
|
83
83
|
devsecops_engine_tools/engine_risk/src/infrastructure/entry_points/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
84
|
-
devsecops_engine_tools/engine_risk/src/infrastructure/entry_points/entry_point_risk.py,sha256=
|
|
84
|
+
devsecops_engine_tools/engine_risk/src/infrastructure/entry_points/entry_point_risk.py,sha256=URwX6I8Rihhy8x-bUR1XsZ_S3jZT61WdIkGMjPJN0ZA,2820
|
|
85
85
|
devsecops_engine_tools/engine_risk/src/infrastructure/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
86
86
|
devsecops_engine_tools/engine_sast/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
87
87
|
devsecops_engine_tools/engine_sast/engine_code/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -286,8 +286,8 @@ devsecops_engine_tools/engine_utilities/utils/name_conversion.py,sha256=ADJrRGax
|
|
|
286
286
|
devsecops_engine_tools/engine_utilities/utils/printers.py,sha256=amYAr9YQfYgR6jK9a2l26z3oovFPQ3FAKmhq6BKhEBA,623
|
|
287
287
|
devsecops_engine_tools/engine_utilities/utils/session_manager.py,sha256=yNtlT-8Legz1sHbGPH8LNYjL-LgDUE0zXG2rYjiab7U,290
|
|
288
288
|
devsecops_engine_tools/engine_utilities/utils/utils.py,sha256=esLnDBxP9MQBvV8noVohTrdWSVuljTKRpZgrn2kaD_c,192
|
|
289
|
-
devsecops_engine_tools-1.
|
|
290
|
-
devsecops_engine_tools-1.
|
|
291
|
-
devsecops_engine_tools-1.
|
|
292
|
-
devsecops_engine_tools-1.
|
|
293
|
-
devsecops_engine_tools-1.
|
|
289
|
+
devsecops_engine_tools-1.14.0.dist-info/METADATA,sha256=n-afXgS_Ad--GHwm-4ACrBejpCD5-iXKK8ajHfxgjuQ,10854
|
|
290
|
+
devsecops_engine_tools-1.14.0.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
|
|
291
|
+
devsecops_engine_tools-1.14.0.dist-info/entry_points.txt,sha256=9IjXF_7Zpgowq_SY6OSmsA9vZze18a8_AeHwkQVrgKk,131
|
|
292
|
+
devsecops_engine_tools-1.14.0.dist-info/top_level.txt,sha256=ge6y0X_xBAU1aG3EMWFtl9djbVyg5BxuSp2r2Lg6EQU,23
|
|
293
|
+
devsecops_engine_tools-1.14.0.dist-info/RECORD,,
|
|
File without changes
|
{devsecops_engine_tools-1.13.2.dist-info → devsecops_engine_tools-1.14.0.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{devsecops_engine_tools-1.13.2.dist-info → devsecops_engine_tools-1.14.0.dist-info}/top_level.txt
RENAMED
|
File without changes
|