devsecops-engine-tools 1.30.2__py3-none-any.whl → 1.31.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/infrastructure/driven_adapters/defect_dojo/defect_dojo.py +86 -25
- devsecops_engine_tools/engine_utilities/defect_dojo/__init__.py +2 -1
- devsecops_engine_tools/engine_utilities/defect_dojo/applications/component.py +0 -1
- devsecops_engine_tools/engine_utilities/defect_dojo/applications/finding.py +0 -3
- devsecops_engine_tools/engine_utilities/defect_dojo/applications/finding_exclusion.py +14 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/finding_exclusion.py +20 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/finding.py +1 -1
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/finding_exclusion.py +9 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/import_scan.py +6 -6
- devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/finding_exclusion.py +28 -0
- devsecops_engine_tools/version.py +1 -1
- {devsecops_engine_tools-1.30.2.dist-info → devsecops_engine_tools-1.31.0.dist-info}/METADATA +2 -1
- {devsecops_engine_tools-1.30.2.dist-info → devsecops_engine_tools-1.31.0.dist-info}/RECORD +16 -12
- {devsecops_engine_tools-1.30.2.dist-info → devsecops_engine_tools-1.31.0.dist-info}/WHEEL +0 -0
- {devsecops_engine_tools-1.30.2.dist-info → devsecops_engine_tools-1.31.0.dist-info}/entry_points.txt +0 -0
- {devsecops_engine_tools-1.30.2.dist-info → devsecops_engine_tools-1.31.0.dist-info}/top_level.txt +0 -0
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py
CHANGED
|
@@ -13,6 +13,7 @@ from devsecops_engine_tools.engine_utilities.defect_dojo import (
|
|
|
13
13
|
Engagement,
|
|
14
14
|
Product,
|
|
15
15
|
Component,
|
|
16
|
+
FindingExclusion
|
|
16
17
|
)
|
|
17
18
|
from devsecops_engine_tools.engine_core.src.domain.model.exclusions import Exclusions
|
|
18
19
|
from devsecops_engine_tools.engine_core.src.domain.model.report import Report
|
|
@@ -42,9 +43,11 @@ logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
|
|
|
42
43
|
@dataclass
|
|
43
44
|
class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
44
45
|
|
|
46
|
+
RISK_ACCEPTED = "Risk Accepted"
|
|
45
47
|
OUT_OF_SCOPE = "Out of Scope"
|
|
46
48
|
FALSE_POSITIVE = "False Positive"
|
|
47
49
|
TRANSFERRED_FINDING = "Transferred Finding"
|
|
50
|
+
ON_WHITELIST = "On Whitelist"
|
|
48
51
|
|
|
49
52
|
def send_vulnerability_management(
|
|
50
53
|
self, vulnerability_management: VulnerabilityManagement
|
|
@@ -203,6 +206,11 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
|
203
206
|
"tags": tool,
|
|
204
207
|
"limit": dd_limits_query,
|
|
205
208
|
}
|
|
209
|
+
white_list_query_params = {
|
|
210
|
+
"risk_status": self.ON_WHITELIST,
|
|
211
|
+
"tags": tool,
|
|
212
|
+
"limit": dd_limits_query,
|
|
213
|
+
}
|
|
206
214
|
|
|
207
215
|
exclusions_risk_accepted = self._get_findings_with_exclusions(
|
|
208
216
|
session_manager,
|
|
@@ -211,7 +219,7 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
|
211
219
|
risk_accepted_query_params,
|
|
212
220
|
tool,
|
|
213
221
|
self._format_date_to_dd_format,
|
|
214
|
-
|
|
222
|
+
self.RISK_ACCEPTED,
|
|
215
223
|
)
|
|
216
224
|
|
|
217
225
|
exclusions_false_positive = self._get_findings_with_exclusions(
|
|
@@ -244,11 +252,29 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
|
244
252
|
self.TRANSFERRED_FINDING,
|
|
245
253
|
)
|
|
246
254
|
|
|
255
|
+
white_list = self._get_finding_exclusion(
|
|
256
|
+
session_manager, dd_max_retries, {
|
|
257
|
+
"type": "white_list",
|
|
258
|
+
}
|
|
259
|
+
)
|
|
260
|
+
|
|
261
|
+
exclusions_white_list = self._get_findings_with_exclusions(
|
|
262
|
+
session_manager,
|
|
263
|
+
service,
|
|
264
|
+
dd_max_retries,
|
|
265
|
+
white_list_query_params,
|
|
266
|
+
tool,
|
|
267
|
+
self._format_date_to_dd_format,
|
|
268
|
+
self.ON_WHITELIST,
|
|
269
|
+
white_list=white_list,
|
|
270
|
+
)
|
|
271
|
+
|
|
247
272
|
return (
|
|
248
273
|
list(exclusions_risk_accepted)
|
|
249
274
|
+ list(exclusions_false_positive)
|
|
250
275
|
+ list(exclusions_out_of_scope)
|
|
251
276
|
+ list(exclusions_transfer_finding)
|
|
277
|
+
+ list(exclusions_white_list)
|
|
252
278
|
)
|
|
253
279
|
except Exception as ex:
|
|
254
280
|
raise ExceptionFindingsExcepted(
|
|
@@ -272,8 +298,10 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
|
272
298
|
"HOST_DEFECT_DOJO"
|
|
273
299
|
]
|
|
274
300
|
|
|
301
|
+
session_manager = self._get_session_manager(dict_args, secret_tool, config_tool)
|
|
302
|
+
|
|
275
303
|
findings = self._get_findings(
|
|
276
|
-
|
|
304
|
+
session_manager,
|
|
277
305
|
service,
|
|
278
306
|
max_retries,
|
|
279
307
|
all_findings_query_params,
|
|
@@ -286,8 +314,14 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
|
286
314
|
)
|
|
287
315
|
)
|
|
288
316
|
|
|
317
|
+
white_list = self._get_finding_exclusion(
|
|
318
|
+
session_manager, max_retries, {
|
|
319
|
+
"type": "white_list",
|
|
320
|
+
}
|
|
321
|
+
)
|
|
322
|
+
|
|
289
323
|
all_exclusions = self._get_report_exclusions(
|
|
290
|
-
all_findings, self._format_date_to_dd_format, host_dd=host_dd
|
|
324
|
+
all_findings, self._format_date_to_dd_format, host_dd=host_dd, white_list=white_list
|
|
291
325
|
)
|
|
292
326
|
|
|
293
327
|
return all_findings, all_exclusions
|
|
@@ -461,25 +495,25 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
|
461
495
|
config_tool["VULNERABILITY_MANAGER"]["DEFECT_DOJO"]["HOST_DEFECT_DOJO"],
|
|
462
496
|
)
|
|
463
497
|
|
|
464
|
-
def _get_report_exclusions(self, total_findings, date_fn, host_dd):
|
|
498
|
+
def _get_report_exclusions(self, total_findings, date_fn, host_dd, **kwargs):
|
|
465
499
|
exclusions = []
|
|
466
500
|
for finding in total_findings:
|
|
467
501
|
if finding.risk_accepted:
|
|
468
502
|
exclusions.append(
|
|
469
503
|
self._create_report_exclusion(
|
|
470
|
-
finding, date_fn, "engine_risk",
|
|
504
|
+
finding, date_fn, "engine_risk", self.RISK_ACCEPTED, host_dd, **kwargs
|
|
471
505
|
)
|
|
472
506
|
)
|
|
473
507
|
elif finding.false_p:
|
|
474
508
|
exclusions.append(
|
|
475
509
|
self._create_report_exclusion(
|
|
476
|
-
finding, date_fn, "engine_risk", self.FALSE_POSITIVE, host_dd
|
|
510
|
+
finding, date_fn, "engine_risk", self.FALSE_POSITIVE, host_dd, **kwargs
|
|
477
511
|
)
|
|
478
512
|
)
|
|
479
513
|
elif finding.out_of_scope:
|
|
480
514
|
exclusions.append(
|
|
481
515
|
self._create_report_exclusion(
|
|
482
|
-
finding, date_fn, "engine_risk", self.OUT_OF_SCOPE, host_dd
|
|
516
|
+
finding, date_fn, "engine_risk", self.OUT_OF_SCOPE, host_dd, **kwargs
|
|
483
517
|
)
|
|
484
518
|
)
|
|
485
519
|
elif finding.risk_status == "Transfer Accepted":
|
|
@@ -490,18 +524,26 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
|
490
524
|
"engine_risk",
|
|
491
525
|
self.TRANSFERRED_FINDING,
|
|
492
526
|
host_dd,
|
|
527
|
+
**kwargs
|
|
528
|
+
)
|
|
529
|
+
)
|
|
530
|
+
elif finding.risk_status == self.ON_WHITELIST:
|
|
531
|
+
exclusions.append(
|
|
532
|
+
self._create_report_exclusion(
|
|
533
|
+
finding, date_fn, "engine_risk", self.ON_WHITELIST, host_dd, **kwargs
|
|
493
534
|
)
|
|
494
535
|
)
|
|
495
536
|
return exclusions
|
|
496
537
|
|
|
497
538
|
def _get_findings_with_exclusions(
|
|
498
|
-
self, session_manager, service, max_retries, query_params, tool, date_fn, reason
|
|
539
|
+
self, session_manager, service, max_retries, query_params, tool, date_fn, reason, **kwargs
|
|
499
540
|
):
|
|
500
541
|
findings = self._get_findings(
|
|
501
542
|
session_manager, service, max_retries, query_params
|
|
502
543
|
)
|
|
544
|
+
|
|
503
545
|
return map(
|
|
504
|
-
partial(self._create_exclusion, date_fn=date_fn, tool=tool, reason=reason),
|
|
546
|
+
partial(self._create_exclusion, date_fn=date_fn, tool=tool, reason=reason, **kwargs),
|
|
505
547
|
findings,
|
|
506
548
|
)
|
|
507
549
|
|
|
@@ -512,6 +554,14 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
|
512
554
|
).results
|
|
513
555
|
|
|
514
556
|
return self._retries_requests(request_func, max_retries, retry_delay=5)
|
|
557
|
+
|
|
558
|
+
def _get_finding_exclusion(self, session_manager, max_retries, query_params):
|
|
559
|
+
def request_func():
|
|
560
|
+
return FindingExclusion.get_finding_exclusion(
|
|
561
|
+
session=session_manager, **query_params
|
|
562
|
+
).results
|
|
563
|
+
|
|
564
|
+
return self._retries_requests(request_func, max_retries, retry_delay=5)
|
|
515
565
|
|
|
516
566
|
def _retries_requests(self, request_func, max_retries, retry_delay):
|
|
517
567
|
for attempt in range(max_retries):
|
|
@@ -526,23 +576,34 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
|
526
576
|
logger.error("Maximum number of retries reached, aborting.")
|
|
527
577
|
raise e
|
|
528
578
|
|
|
529
|
-
def _date_reason_based(self, finding, date_fn, reason):
|
|
530
|
-
if reason in [self.FALSE_POSITIVE, self.OUT_OF_SCOPE]:
|
|
531
|
-
create_date = date_fn(finding.last_status_update)
|
|
532
|
-
expired_date = date_fn(None)
|
|
533
|
-
elif reason == self.TRANSFERRED_FINDING:
|
|
534
|
-
create_date = date_fn(finding.transfer_finding.date)
|
|
535
|
-
expired_date = date_fn(finding.transfer_finding.expiration_date)
|
|
536
|
-
else:
|
|
537
|
-
last_accepted_risk = finding.accepted_risks[-1]
|
|
538
|
-
create_date = date_fn(last_accepted_risk["created"])
|
|
539
|
-
expired_date = date_fn(last_accepted_risk["expiration_date"])
|
|
540
579
|
|
|
541
|
-
|
|
580
|
+
def _date_reason_based(self, finding, date_fn, reason, tool, **kwargs):
|
|
581
|
+
def get_vuln_id(finding, tool):
|
|
582
|
+
if tool == "engine_risk":
|
|
583
|
+
return finding.id[0]["vulnerability_id"] if finding.id else finding.vuln_id_from_tool
|
|
584
|
+
else:
|
|
585
|
+
return finding.vulnerability_ids[0]["vulnerability_id"] if finding.vulnerability_ids else finding.vuln_id_from_tool
|
|
586
|
+
|
|
587
|
+
def get_dates_from_whitelist(vuln_id, white_list):
|
|
588
|
+
matching_finding = next(filter(lambda x: x.unique_id_from_tool == vuln_id, white_list), None)
|
|
589
|
+
if matching_finding:
|
|
590
|
+
return date_fn(matching_finding.create_date), date_fn(matching_finding.expiration_date)
|
|
591
|
+
return date_fn(None), date_fn(None)
|
|
592
|
+
|
|
593
|
+
reason_to_dates = {
|
|
594
|
+
self.FALSE_POSITIVE: lambda: (date_fn(finding.last_status_update), date_fn(None)),
|
|
595
|
+
self.OUT_OF_SCOPE: lambda: (date_fn(finding.last_status_update), date_fn(None)),
|
|
596
|
+
self.TRANSFERRED_FINDING: lambda: (date_fn(finding.transfer_finding.date), date_fn(finding.transfer_finding.expiration_date)),
|
|
597
|
+
self.RISK_ACCEPTED: lambda: (date_fn(finding.accepted_risks[-1]["created"]), date_fn(finding.accepted_risks[-1]["expiration_date"])),
|
|
598
|
+
self.ON_WHITELIST: lambda: get_dates_from_whitelist(get_vuln_id(finding, tool), kwargs.get("white_list", [])),
|
|
599
|
+
}
|
|
542
600
|
|
|
543
|
-
|
|
544
|
-
create_date, expired_date
|
|
601
|
+
create_date, expired_date = reason_to_dates.get(reason, lambda: (date_fn(None), date_fn(None)))()
|
|
602
|
+
return create_date, expired_date
|
|
545
603
|
|
|
604
|
+
def _create_exclusion(self, finding, date_fn, tool, reason, **kwargs):
|
|
605
|
+
create_date, expired_date = self._date_reason_based(finding, date_fn, reason, tool, **kwargs)
|
|
606
|
+
|
|
546
607
|
return Exclusions(
|
|
547
608
|
id=(
|
|
548
609
|
finding.vuln_id_from_tool
|
|
@@ -560,8 +621,8 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
|
560
621
|
reason=reason,
|
|
561
622
|
)
|
|
562
623
|
|
|
563
|
-
def _create_report_exclusion(self, finding, date_fn, tool, reason, host_dd):
|
|
564
|
-
create_date, expired_date = self._date_reason_based(finding, date_fn, reason)
|
|
624
|
+
def _create_report_exclusion(self, finding, date_fn, tool, reason, host_dd, **kwargs):
|
|
625
|
+
create_date, expired_date = self._date_reason_based(finding, date_fn, reason, tool, **kwargs)
|
|
565
626
|
|
|
566
627
|
return Exclusions(
|
|
567
628
|
id=(
|
|
@@ -5,4 +5,5 @@ from .applications.finding import Finding
|
|
|
5
5
|
from .applications.connect import Connect
|
|
6
6
|
from .applications.engagement import Engagement
|
|
7
7
|
from .applications.product import Product
|
|
8
|
-
from .applications.component import Component
|
|
8
|
+
from .applications.component import Component
|
|
9
|
+
from .applications.finding_exclusion import FindingExclusion
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
from devsecops_engine_tools.engine_utilities.defect_dojo.domain.request_objects.finding import FindingRequest
|
|
2
1
|
from devsecops_engine_tools.engine_utilities.defect_dojo.domain.serializers.finding import FindingSerializer
|
|
3
2
|
from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.finding import FindingRestConsumer
|
|
4
3
|
from devsecops_engine_tools.engine_utilities.defect_dojo.domain.user_case.finding import FindingUserCase, FindingGetUserCase
|
|
5
|
-
from devsecops_engine_tools.engine_utilities.utils.session_manager import SessionManager
|
|
6
|
-
from devsecops_engine_tools.engine_utilities.utils.api_error import ApiError
|
|
7
4
|
from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
|
|
8
5
|
from devsecops_engine_tools.engine_utilities import settings
|
|
9
6
|
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
from devsecops_engine_tools.engine_utilities.utils.api_error import ApiError
|
|
2
|
+
from devsecops_engine_tools.engine_utilities.defect_dojo.domain.user_case.finding_exclusion import FindingExclusionUserCase
|
|
3
|
+
from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.finding_exclusion import FindingExclusionRestConsumer
|
|
4
|
+
|
|
5
|
+
class FindingExclusion:
|
|
6
|
+
@staticmethod
|
|
7
|
+
def get_finding_exclusion(session, **request):
|
|
8
|
+
try:
|
|
9
|
+
rest_finding_exclusion = FindingExclusionRestConsumer(session=session)
|
|
10
|
+
|
|
11
|
+
uc = FindingExclusionUserCase(rest_finding_exclusion)
|
|
12
|
+
return uc.execute(request)
|
|
13
|
+
except ApiError as e:
|
|
14
|
+
raise e
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import dataclasses
|
|
2
|
+
from typing import List
|
|
3
|
+
from devsecops_engine_tools.engine_utilities.utils.dataclass_classmethod import FromDictMixin
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@dataclasses.dataclass
|
|
7
|
+
class FindingExclusion(FromDictMixin):
|
|
8
|
+
uuid: str = ""
|
|
9
|
+
unique_id_from_tool: str = ""
|
|
10
|
+
type: str = ""
|
|
11
|
+
create_date: str = ""
|
|
12
|
+
expiration_date: str = ""
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@dataclasses.dataclass
|
|
16
|
+
class FindingExclusionList(FromDictMixin):
|
|
17
|
+
count: int = 0
|
|
18
|
+
next = None
|
|
19
|
+
previous = None
|
|
20
|
+
results: List[FindingExclusion] = dataclasses.field(default_factory=list)
|
|
@@ -63,7 +63,7 @@ class FindingSerializer(Schema):
|
|
|
63
63
|
reviewers = fields.List(fields.Int, requerided=False)
|
|
64
64
|
risk_accetance = fields.Int(requerided=False)
|
|
65
65
|
risk_status = fields.Str(
|
|
66
|
-
required=False, validate=validate.OneOf(["Risk Pending", "Risk Rejected", "Risk Expired", "Risk Accepted", "Risk Active", "Transfer Pending", "Transfer Rejected", "Transfer Expired", "Transfer Accepted"])
|
|
66
|
+
required=False, validate=validate.OneOf(["Risk Pending", "Risk Rejected", "Risk Expired", "Risk Accepted", "Risk Active", "Transfer Pending", "Transfer Rejected", "Transfer Expired", "Transfer Accepted", "On Whitelist", "On Blacklist"])
|
|
67
67
|
)
|
|
68
68
|
risk_accepted = fields.Bool(requerided=False)
|
|
69
69
|
sast_sink_object = fields.Str(requeride=False)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.finding_exclusion import FindingExclusionRestConsumer
|
|
2
|
+
|
|
3
|
+
class FindingExclusionUserCase:
|
|
4
|
+
def __init__(self, rest_finding_exclusion: FindingExclusionRestConsumer):
|
|
5
|
+
self.__rest_finding_exclusion = rest_finding_exclusion
|
|
6
|
+
|
|
7
|
+
def execute(self, request):
|
|
8
|
+
response = self.__rest_finding_exclusion.get_finding_exclusions(request)
|
|
9
|
+
return response
|
|
@@ -66,12 +66,12 @@ class ImportScanUserCase:
|
|
|
66
66
|
with id {product_type_id}"
|
|
67
67
|
)
|
|
68
68
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
69
|
+
product = self.__rest_product.post_product(request, product_type_id)
|
|
70
|
+
product_id = product.id
|
|
71
|
+
logger.info(
|
|
72
|
+
f"product created: {product.name}\
|
|
73
|
+
found with id: {product.id}"
|
|
74
|
+
)
|
|
75
75
|
|
|
76
76
|
api_scan_bool = re.search(" API ", request.scan_type)
|
|
77
77
|
if api_scan_bool:
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
from devsecops_engine_tools.engine_utilities.utils.api_error import ApiError
|
|
2
|
+
from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
|
|
3
|
+
from devsecops_engine_tools.engine_utilities.defect_dojo.domain.models.finding_exclusion import FindingExclusionList
|
|
4
|
+
from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.settings.settings import VERIFY_CERTIFICATE
|
|
5
|
+
from devsecops_engine_tools.engine_utilities.utils.session_manager import SessionManager
|
|
6
|
+
from devsecops_engine_tools.engine_utilities.settings import SETTING_LOGGER
|
|
7
|
+
|
|
8
|
+
logger = MyLogger.__call__(**SETTING_LOGGER).get_logger()
|
|
9
|
+
|
|
10
|
+
class FindingExclusionRestConsumer:
|
|
11
|
+
def __init__(self, session: SessionManager):
|
|
12
|
+
self.__token = session._token
|
|
13
|
+
self.__host = session._host
|
|
14
|
+
self.__session = session._instance
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def get_finding_exclusions(self, request) -> FindingExclusionList:
|
|
18
|
+
url = f"{self.__host}/api/v2/finding_exclusions/"
|
|
19
|
+
headers = {"Authorization": f"Token {self.__token}", "Content-Type": "application/json"}
|
|
20
|
+
try:
|
|
21
|
+
response = self.__session.get(url, headers=headers, params=request, verify=VERIFY_CERTIFICATE)
|
|
22
|
+
if response.status_code != 200:
|
|
23
|
+
raise ApiError(response.json())
|
|
24
|
+
finding_exclusions_object = FindingExclusionList.from_dict(response.json())
|
|
25
|
+
except Exception as e:
|
|
26
|
+
logger.error(f"from dict FindingExclusion: {e}")
|
|
27
|
+
raise ApiError(e)
|
|
28
|
+
return finding_exclusions_object
|
|
@@ -1 +1 @@
|
|
|
1
|
-
version = '1.
|
|
1
|
+
version = '1.31.0'
|
{devsecops_engine_tools-1.30.2.dist-info → devsecops_engine_tools-1.31.0.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: devsecops-engine-tools
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.31.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
|
|
@@ -36,6 +36,7 @@ Requires-Dist: packageurl-python==0.15.6
|
|
|
36
36
|
[](https://sonarcloud.io/summary/new_code?id=bancolombia_devsecops-engine-tools)
|
|
37
37
|
[](https://sonarcloud.io/summary/new_code?id=bancolombia_devsecops-engine-tools)
|
|
38
38
|
[](#)
|
|
39
|
+
[](https://pypi.org/project/devsecops-engine-tools/)
|
|
39
40
|
[](https://hub.docker.com/r/bancolombia/devsecops-engine-tools)
|
|
41
42
|
|
|
@@ -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=dORcM9p3Gq4eeQIYB7RelGt7lAEzbOinMO8jaEM2CLo,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
|
|
@@ -38,7 +38,7 @@ 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=buCBJ6kAg-5b_7P-gWzem6NEMbk5lK9Hx0Zuf-BQfXQ,5090
|
|
40
40
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
41
|
-
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py,sha256=
|
|
41
|
+
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py,sha256=kUGFYhCm4-gZajqZCdhsyDecILWQtFj3dmcIT07pNXU,27745
|
|
42
42
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/github/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
43
43
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/github/github_actions.py,sha256=KCg6tTDncasrRZbB20QiLZNE6TKYkfgQ9zP0wPd3xe0,3925
|
|
44
44
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/printer_pretty_table/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -226,14 +226,15 @@ devsecops_engine_tools/engine_utilities/azuredevops/infrastructure/azure_devops_
|
|
|
226
226
|
devsecops_engine_tools/engine_utilities/azuredevops/models/AzureMessageLoggingPipeline.py,sha256=pCwlPDDl-hgvZ9gvceuC8GsKbsMhRm3ykhFFVByVqcI,664
|
|
227
227
|
devsecops_engine_tools/engine_utilities/azuredevops/models/AzurePredefinedVariables.py,sha256=z9AGtc64o-BNTngiowRJFBlXmo_JmWqenL8YxdLs0aE,2561
|
|
228
228
|
devsecops_engine_tools/engine_utilities/azuredevops/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
229
|
-
devsecops_engine_tools/engine_utilities/defect_dojo/__init__.py,sha256=
|
|
229
|
+
devsecops_engine_tools/engine_utilities/defect_dojo/__init__.py,sha256=P-HiaN1sgDUekalZPCzSTF-zuqyXpNG2uVEsMDaC0ro,462
|
|
230
230
|
devsecops_engine_tools/engine_utilities/defect_dojo/hello_world.py,sha256=WDvgS22lIJJNoIM4b6mrxT8Bu_6hADmrCOZgvf5yGVY,45
|
|
231
231
|
devsecops_engine_tools/engine_utilities/defect_dojo/applications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
232
|
-
devsecops_engine_tools/engine_utilities/defect_dojo/applications/component.py,sha256=
|
|
232
|
+
devsecops_engine_tools/engine_utilities/defect_dojo/applications/component.py,sha256=Y6vA1nRfMCoqJEceRBDQ_QLpIKASqB-t8V1yqao-eUQ,1175
|
|
233
233
|
devsecops_engine_tools/engine_utilities/defect_dojo/applications/connect.py,sha256=tRvNN-zVKBJbHMvfW97SCsZoyjGaKttcQhLOKrbjK9E,2079
|
|
234
234
|
devsecops_engine_tools/engine_utilities/defect_dojo/applications/defect_dojo.py,sha256=gJMBVtE--Kvdc908fQa2T35mYyBXAWNTxM0DKsZ7e-w,2615
|
|
235
235
|
devsecops_engine_tools/engine_utilities/defect_dojo/applications/engagement.py,sha256=sPTeQs6QHg07QNthqhY3caVbG54vDkd_E_KJpBvgTk4,878
|
|
236
|
-
devsecops_engine_tools/engine_utilities/defect_dojo/applications/finding.py,sha256=
|
|
236
|
+
devsecops_engine_tools/engine_utilities/defect_dojo/applications/finding.py,sha256=Cw5_TElo0D0Ec8X0lu-La2H9Pp1rsrmw-2Wv-0w_9oI,1451
|
|
237
|
+
devsecops_engine_tools/engine_utilities/defect_dojo/applications/finding_exclusion.py,sha256=StnDFV3vGhBffBEs-jfV9nMprzRucm5VJqtZFWKF3Fo,689
|
|
237
238
|
devsecops_engine_tools/engine_utilities/defect_dojo/applications/product.py,sha256=ogJM1AqfW-f_bJP4JWeHHM82PqN7G-jKKTbO8FM2x_Q,598
|
|
238
239
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
239
240
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -241,6 +242,7 @@ devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/cmdb.py,sha256
|
|
|
241
242
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/component.py,sha256=KYyWMUQcPsraqRaw0KY9eBaZPfajfBiskgOuwTI8mnA,483
|
|
242
243
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/engagement.py,sha256=MXb7c526tz0zSDS8xGPC5IjTMF9g9qtzcEKLyfcY89c,1393
|
|
243
244
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/finding.py,sha256=0Xj7BOlC30LCdBjIkviB2QmmdSj0GlDvT1-TbnaT8nE,3201
|
|
245
|
+
devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/finding_exclusion.py,sha256=mz6RDW3Xk3VHNQcUHm9cCMAyX6Ultcb-IZy9N59qPI4,530
|
|
244
246
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/product.py,sha256=KL5ue6icA8HH1xKkmAJzElAat3OOYU3_lt3xuNfo7Mc,1272
|
|
245
247
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/product_list.py,sha256=yFo8eYOGJiJMkU5pGpW0r1o5uVaNP5iA80-5w_MyWxU,664
|
|
246
248
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/product_type.py,sha256=2KVfRB0qgPO7osY4PBEQSOBOqRnZs0UzUZkS1guisBQ,524
|
|
@@ -250,14 +252,15 @@ devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/__ini
|
|
|
250
252
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/finding.py,sha256=RinG3ISc-u_3VXVqntwdcQvZoQdmHPCvDHWSvnkCkcU,2619
|
|
251
253
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/import_scan.py,sha256=UfvICLF-Wjii3iqvsRq0Tpc-quK4t3oS8U79tozzjfA,5014
|
|
252
254
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
253
|
-
devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/finding.py,sha256=
|
|
255
|
+
devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/finding.py,sha256=4IQLjqgyImVdn8AxoU3UKgXnvU-F-x7Tm2bJdp6nHm4,5265
|
|
254
256
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/import_scan.py,sha256=AYYPtuAOKagT5qmFvdwuGQ_GupZfQNdMCyMaKzCkTDE,7290
|
|
255
257
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
256
258
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/cmdb.py,sha256=BUOdvP39bEMQ6Unr2hB28eljVGU2Uv8dDEkzRyEJgyQ,2650
|
|
257
259
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/component.py,sha256=_icc-ZAqw-aVgE5J4VH8Q7fSqpCgEGcfmurgRIN9NqM,448
|
|
258
260
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/engagement.py,sha256=SVX-weFRPT3DK7w6IBrLuWS4L6vboMuZtwXAQmIHfEE,406
|
|
259
261
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/finding.py,sha256=TjfpdJtaBwQvT8XNJKBf6tuOASOAw7ZiOxJbqsKadaA,1689
|
|
260
|
-
devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/
|
|
262
|
+
devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/finding_exclusion.py,sha256=VqdwBiQGc9XFpatvbXGL837LtTxkWlfhWH46W1cTbCg,455
|
|
263
|
+
devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/import_scan.py,sha256=eT1f1dtrLMLa41Mv_wnjg1L7bCBGKGjSpxD4hIDMx4Y,6927
|
|
261
264
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/product.py,sha256=6f6eABdC79zOopMe_Rif3XoGG-yFfq9x_EOkevTuGDY,368
|
|
262
265
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
263
266
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -265,6 +268,7 @@ devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapt
|
|
|
265
268
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/component.py,sha256=-J0Sv7z709Hctb-tgM0wmp5ofE4WKEIA_uJwzvMnStE,2132
|
|
266
269
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/engagement.py,sha256=39qqmTxECRY5IoFvK_B_R0vfwfJwLbdhGt_pcdvdVIE,3571
|
|
267
270
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/finding.py,sha256=k-z2tg_NPKMni7rZgXMZa2-t8_8F35r8YtF1EcjMyDs,2355
|
|
271
|
+
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/finding_exclusion.py,sha256=BL4xf1FE5tMsBri0LetxBRUgOgLogdoHX97rQkHh10g,1524
|
|
268
272
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/import_scan.py,sha256=68Qd8o0oSxFG-3cRlX97BkX9muS6k64DGslGtX9sx6M,5897
|
|
269
273
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/product.py,sha256=DhiLPv8KyRhHBRhvF0ULhchhGAT8SQyn1ftiuou_aKw,2576
|
|
270
274
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/product_type.py,sha256=9Lzsh9HCs4rbJ2b6X11renvYU3g6s-1q2NUDwbYX0qY,3051
|
|
@@ -317,8 +321,8 @@ devsecops_engine_tools/engine_utilities/utils/name_conversion.py,sha256=ADJrRGax
|
|
|
317
321
|
devsecops_engine_tools/engine_utilities/utils/printers.py,sha256=amYAr9YQfYgR6jK9a2l26z3oovFPQ3FAKmhq6BKhEBA,623
|
|
318
322
|
devsecops_engine_tools/engine_utilities/utils/session_manager.py,sha256=Z0fdhB3r-dxU0nGSD9zW_B4r2Qol1rUnUCkhFR0U-HQ,487
|
|
319
323
|
devsecops_engine_tools/engine_utilities/utils/utils.py,sha256=_yaXWHN1pi2xFFKg0yKbb4fsK_ZRv7Dk_9N1FtPS72k,5964
|
|
320
|
-
devsecops_engine_tools-1.
|
|
321
|
-
devsecops_engine_tools-1.
|
|
322
|
-
devsecops_engine_tools-1.
|
|
323
|
-
devsecops_engine_tools-1.
|
|
324
|
-
devsecops_engine_tools-1.
|
|
324
|
+
devsecops_engine_tools-1.31.0.dist-info/METADATA,sha256=pvTlUKMErHnqovHTD6U9B8lHN9TSbSXj_H8B9D00HeI,11276
|
|
325
|
+
devsecops_engine_tools-1.31.0.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
|
|
326
|
+
devsecops_engine_tools-1.31.0.dist-info/entry_points.txt,sha256=MHCTFFs9bdNKo6YcWCcBW2_8X6yTisgLOlmVx-V8Rxc,276
|
|
327
|
+
devsecops_engine_tools-1.31.0.dist-info/top_level.txt,sha256=ge6y0X_xBAU1aG3EMWFtl9djbVyg5BxuSp2r2Lg6EQU,23
|
|
328
|
+
devsecops_engine_tools-1.31.0.dist-info/RECORD,,
|
|
File without changes
|
{devsecops_engine_tools-1.30.2.dist-info → devsecops_engine_tools-1.31.0.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{devsecops_engine_tools-1.30.2.dist-info → devsecops_engine_tools-1.31.0.dist-info}/top_level.txt
RENAMED
|
File without changes
|