devsecops-engine-tools 1.46.2__py3-none-any.whl → 1.47.1__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/threshold.py +1 -0
- devsecops_engine_tools/engine_core/src/domain/model/vulnerability_management.py +1 -0
- devsecops_engine_tools/engine_core/src/domain/usecases/break_build.py +4 -0
- devsecops_engine_tools/engine_core/src/domain/usecases/handle_scan.py +7 -5
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/azure_devops.py +44 -39
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py +64 -40
- devsecops_engine_tools/engine_dast/src/domain/usecases/dast_scan.py +7 -1
- devsecops_engine_tools/engine_sast/engine_iac/src/domain/usecases/iac_scan.py +0 -1
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/import_scan.py +2 -1
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/import_scan.py +3 -1
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/import_scan.py +7 -6
- devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/engagement.py +11 -6
- devsecops_engine_tools/engine_utilities/sonarqube/src/domain/usecases/report_sonar.py +1 -0
- devsecops_engine_tools/engine_utilities/utils/utils.py +1 -0
- devsecops_engine_tools/version.py +1 -1
- {devsecops_engine_tools-1.46.2.dist-info → devsecops_engine_tools-1.47.1.dist-info}/METADATA +1 -1
- {devsecops_engine_tools-1.46.2.dist-info → devsecops_engine_tools-1.47.1.dist-info}/RECORD +20 -20
- {devsecops_engine_tools-1.46.2.dist-info → devsecops_engine_tools-1.47.1.dist-info}/WHEEL +0 -0
- {devsecops_engine_tools-1.46.2.dist-info → devsecops_engine_tools-1.47.1.dist-info}/entry_points.txt +0 -0
- {devsecops_engine_tools-1.46.2.dist-info → devsecops_engine_tools-1.47.1.dist-info}/top_level.txt +0 -0
|
@@ -10,4 +10,5 @@ class Threshold:
|
|
|
10
10
|
self.vulnerability = LevelVulnerability(data.get("VULNERABILITY"))
|
|
11
11
|
self.compliance = LevelCompliance(data.get("COMPLIANCE"))
|
|
12
12
|
self.cve = data.get("CVE",[])
|
|
13
|
+
self.name = data.get("NAME", "default")
|
|
13
14
|
self.quality_vulnerability_management = data.get("QUALITY_VULNERABILITY_MANAGEMENT") if data.get("QUALITY_VULNERABILITY_MANAGEMENT") else None
|
|
@@ -77,6 +77,7 @@ class BreakBuild:
|
|
|
77
77
|
lambda item: any(
|
|
78
78
|
exclusion.id == item.id
|
|
79
79
|
and (exclusion.where in item.where or "all" in exclusion.where)
|
|
80
|
+
and exclusion.severity == item.severity
|
|
80
81
|
for exclusion in exclusions
|
|
81
82
|
),
|
|
82
83
|
findings_list,
|
|
@@ -349,6 +350,7 @@ class BreakBuild:
|
|
|
349
350
|
and (
|
|
350
351
|
elem.where in item.where or "all" in elem.where
|
|
351
352
|
)
|
|
353
|
+
and elem.severity == item.severity
|
|
352
354
|
),
|
|
353
355
|
None,
|
|
354
356
|
),
|
|
@@ -360,6 +362,7 @@ class BreakBuild:
|
|
|
360
362
|
and (
|
|
361
363
|
elem.where in item.where or "all" in elem.where
|
|
362
364
|
)
|
|
365
|
+
and elem.severity == item.severity
|
|
363
366
|
),
|
|
364
367
|
None,
|
|
365
368
|
),
|
|
@@ -371,6 +374,7 @@ class BreakBuild:
|
|
|
371
374
|
and (
|
|
372
375
|
elem.where in item.where or "all" in elem.where
|
|
373
376
|
)
|
|
377
|
+
and elem.severity == item.severity
|
|
374
378
|
),
|
|
375
379
|
None,
|
|
376
380
|
),
|
|
@@ -160,6 +160,7 @@ class HandleScan:
|
|
|
160
160
|
dict_args,
|
|
161
161
|
secret_tool,
|
|
162
162
|
config_tool,
|
|
163
|
+
self.devops_platform_gateway.get_variable("repository_provider"),
|
|
163
164
|
self.devops_platform_gateway.get_source_code_management_uri(),
|
|
164
165
|
self.devops_platform_gateway.get_base_compact_remote_config_url(
|
|
165
166
|
dict_args["remote_config_repo"]
|
|
@@ -218,11 +219,12 @@ class HandleScan:
|
|
|
218
219
|
def _update_threshold_cve(
|
|
219
220
|
self, input_core: InputCore, dict_args, secret_tool, config_tool
|
|
220
221
|
):
|
|
221
|
-
input_core.threshold_defined.
|
|
222
|
-
|
|
223
|
-
|
|
222
|
+
if input_core.threshold_defined.name == "default":
|
|
223
|
+
input_core.threshold_defined.cve.extend(
|
|
224
|
+
self.vulnerability_management.get_black_list(
|
|
225
|
+
dict_args, secret_tool, config_tool
|
|
226
|
+
)
|
|
224
227
|
)
|
|
225
|
-
)
|
|
226
228
|
|
|
227
229
|
def _define_threshold_quality_vuln(
|
|
228
230
|
self, input_core: InputCore, dict_args, secret_tool, config_tool
|
|
@@ -230,7 +232,7 @@ class HandleScan:
|
|
|
230
232
|
quality_vulnerability_management = (
|
|
231
233
|
input_core.threshold_defined.quality_vulnerability_management
|
|
232
234
|
)
|
|
233
|
-
if quality_vulnerability_management:
|
|
235
|
+
if quality_vulnerability_management and input_core.threshold_defined.name == "default":
|
|
234
236
|
product_type = self.vulnerability_management.get_product_type_service(
|
|
235
237
|
input_core.scope_pipeline, dict_args, secret_tool, config_tool
|
|
236
238
|
)
|
|
@@ -7,7 +7,7 @@ from devsecops_engine_tools.engine_utilities.azuredevops.models.AzurePredefinedV
|
|
|
7
7
|
SystemVariables,
|
|
8
8
|
ReleaseVariables,
|
|
9
9
|
AgentVariables,
|
|
10
|
-
VMVariables
|
|
10
|
+
VMVariables,
|
|
11
11
|
)
|
|
12
12
|
from devsecops_engine_tools.engine_utilities.azuredevops.infrastructure.azure_devops_api import (
|
|
13
13
|
AzureDevopsApi,
|
|
@@ -57,11 +57,16 @@ class AzureDevops(DevopsPlatformGateway):
|
|
|
57
57
|
return AzureMessageResultPipeline.SucceededWithIssues.value
|
|
58
58
|
|
|
59
59
|
def get_source_code_management_uri(self):
|
|
60
|
-
source_code_management_uri =
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
60
|
+
source_code_management_uri = {
|
|
61
|
+
"tfsgit": (
|
|
62
|
+
f"{SystemVariables.System_TeamFoundationCollectionUri.value()}"
|
|
63
|
+
f"{SystemVariables.System_TeamProject.value()}/_git/{BuildVariables.Build_Repository_Name.value()}"
|
|
64
|
+
).replace(" ", "%20"),
|
|
65
|
+
"github": (
|
|
66
|
+
f"https://github.com/{BuildVariables.Build_Repository_Name.value()}"
|
|
67
|
+
),
|
|
68
|
+
}
|
|
69
|
+
return source_code_management_uri.get(BuildVariables.Build_Repository_Provider.value().lower())
|
|
65
70
|
|
|
66
71
|
def get_base_compact_remote_config_url(self, remote_config_repo):
|
|
67
72
|
return (
|
|
@@ -75,36 +80,36 @@ class AzureDevops(DevopsPlatformGateway):
|
|
|
75
80
|
|
|
76
81
|
def get_variable(self, variable):
|
|
77
82
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
83
|
+
variable_map = {
|
|
84
|
+
"branch_name": BuildVariables.Build_SourceBranchName,
|
|
85
|
+
"build_id": BuildVariables.Build_BuildNumber,
|
|
86
|
+
"build_execution_id": BuildVariables.Build_BuildId,
|
|
87
|
+
"commit_hash": BuildVariables.Build_SourceVersion,
|
|
88
|
+
"environment": ReleaseVariables.Environment,
|
|
89
|
+
"release_id": ReleaseVariables.Release_Releaseid,
|
|
90
|
+
"branch_tag": BuildVariables.Build_SourceBranch,
|
|
91
|
+
"access_token": SystemVariables.System_AccessToken,
|
|
92
|
+
"organization": SystemVariables.System_TeamFoundationCollectionUri,
|
|
93
|
+
"project_name": SystemVariables.System_TeamProject,
|
|
94
|
+
"repository": BuildVariables.Build_Repository_Name,
|
|
95
|
+
"pipeline_name": (
|
|
96
|
+
BuildVariables.Build_DefinitionName
|
|
97
|
+
if SystemVariables.System_HostType.value() == "build"
|
|
98
|
+
else ReleaseVariables.Release_Definitionname
|
|
99
|
+
),
|
|
100
|
+
"stage": SystemVariables.System_HostType,
|
|
101
|
+
"path_directory": SystemVariables.System_DefaultWorkingDirectory,
|
|
102
|
+
"os": AgentVariables.Agent_OS,
|
|
103
|
+
"temp_directory": AgentVariables.Agent_TempDirectory,
|
|
104
|
+
"target_branch": SystemVariables.System_TargetBranchName,
|
|
105
|
+
"source_branch": SystemVariables.System_SourceBranch,
|
|
106
|
+
"repository_provider": BuildVariables.Build_Repository_Provider,
|
|
107
|
+
"pull_request_id": SystemVariables.System_PullRequestId,
|
|
108
|
+
"vm_product_type_name": VMVariables.Vm_Product_Type_Name,
|
|
109
|
+
"vm_product_name": VMVariables.Vm_Product_Name,
|
|
110
|
+
"vm_product_description": VMVariables.Vm_Product_Description,
|
|
111
|
+
}
|
|
112
|
+
try:
|
|
113
|
+
return variable_map.get(variable).value()
|
|
114
|
+
except ValueError:
|
|
115
|
+
return None
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py
CHANGED
|
@@ -49,6 +49,28 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
|
49
49
|
TRANSFERRED_FINDING = "Transferred Finding"
|
|
50
50
|
ON_WHITELIST = "On Whitelist"
|
|
51
51
|
|
|
52
|
+
enviroment_mapping = {
|
|
53
|
+
"dev": "Development",
|
|
54
|
+
"qa": "Staging",
|
|
55
|
+
"pdn": "Production",
|
|
56
|
+
"default": "Production",
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
scan_type_mapping = {
|
|
60
|
+
"CHECKOV": "Checkov Scan",
|
|
61
|
+
"PRISMA": "Twistlock Image Scan",
|
|
62
|
+
"XRAY": "JFrog Xray On Demand Binary Scan",
|
|
63
|
+
"TRUFFLEHOG": "Trufflehog Scan",
|
|
64
|
+
"TRIVY": "Trivy Scan",
|
|
65
|
+
"KUBESCAPE": "Kubescape JSON Importer",
|
|
66
|
+
"KICS": "KICS Scan",
|
|
67
|
+
"BEARER": "Bearer CLI",
|
|
68
|
+
"DEPENDENCY_CHECK": "Dependency Check Scan",
|
|
69
|
+
"SONARQUBE": "SonarQube API Import",
|
|
70
|
+
"GITLEAKS": "Gitleaks Scan",
|
|
71
|
+
"NUCLEI": "Nuclei Scan",
|
|
72
|
+
}
|
|
73
|
+
|
|
52
74
|
def send_vulnerability_management(
|
|
53
75
|
self, vulnerability_management: VulnerabilityManagement
|
|
54
76
|
):
|
|
@@ -65,27 +87,6 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
|
65
87
|
else vulnerability_management.secret_tool["token_cmdb"]
|
|
66
88
|
)
|
|
67
89
|
|
|
68
|
-
enviroment_mapping = {
|
|
69
|
-
"dev": "Development",
|
|
70
|
-
"qa": "Staging",
|
|
71
|
-
"pdn": "Production",
|
|
72
|
-
"default": "Production",
|
|
73
|
-
}
|
|
74
|
-
scan_type_mapping = {
|
|
75
|
-
"CHECKOV": "Checkov Scan",
|
|
76
|
-
"PRISMA": "Twistlock Image Scan",
|
|
77
|
-
"XRAY": "JFrog Xray On Demand Binary Scan",
|
|
78
|
-
"TRUFFLEHOG": "Trufflehog Scan",
|
|
79
|
-
"TRIVY": "Trivy Scan",
|
|
80
|
-
"KUBESCAPE": "Kubescape Scanner",
|
|
81
|
-
"KICS": "KICS Scanner",
|
|
82
|
-
"BEARER": "Bearer CLI",
|
|
83
|
-
"DEPENDENCY_CHECK": "Dependency Check Scan",
|
|
84
|
-
"SONARQUBE": "SonarQube API Import",
|
|
85
|
-
"GITLEAKS": "Gitleaks Scan",
|
|
86
|
-
"NUCLEI": "Nuclei Scan",
|
|
87
|
-
}
|
|
88
|
-
|
|
89
90
|
if any(
|
|
90
91
|
branch in str(vulnerability_management.branch_tag)
|
|
91
92
|
for branch in vulnerability_management.config_tool[
|
|
@@ -94,11 +95,24 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
|
94
95
|
) or (vulnerability_management.dict_args["module"] == "engine_secret"):
|
|
95
96
|
tags = [vulnerability_management.dict_args["module"]]
|
|
96
97
|
if vulnerability_management.dict_args["module"] == "engine_iac":
|
|
97
|
-
tags = [
|
|
98
|
-
|
|
99
|
-
|
|
98
|
+
tags = [
|
|
99
|
+
f"{vulnerability_management.dict_args['module']}_{'_'.join(vulnerability_management.dict_args['platform'])}"
|
|
100
|
+
]
|
|
101
|
+
if (
|
|
102
|
+
vulnerability_management.dict_args["module"] == "engine_container"
|
|
103
|
+
and sum(
|
|
104
|
+
1
|
|
105
|
+
for line in open("scanned_images.txt", "r", encoding="utf-8")
|
|
106
|
+
if line.strip()
|
|
107
|
+
)
|
|
108
|
+
> 1
|
|
109
|
+
):
|
|
110
|
+
match = re.search(
|
|
111
|
+
r"(?<=:)([^-]+)",
|
|
112
|
+
vulnerability_management.dict_args["image_to_scan"],
|
|
113
|
+
)
|
|
100
114
|
tags.append(match.group(1) if match else None)
|
|
101
|
-
|
|
115
|
+
|
|
102
116
|
use_cmdb = vulnerability_management.config_tool[
|
|
103
117
|
"VULNERABILITY_MANAGER"
|
|
104
118
|
]["DEFECT_DOJO"]["CMDB"]["USE_CMDB"]
|
|
@@ -107,8 +121,6 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
|
107
121
|
vulnerability_management,
|
|
108
122
|
token_cmdb,
|
|
109
123
|
token_dd,
|
|
110
|
-
scan_type_mapping,
|
|
111
|
-
enviroment_mapping,
|
|
112
124
|
tags,
|
|
113
125
|
use_cmdb,
|
|
114
126
|
)
|
|
@@ -422,7 +434,9 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
|
422
434
|
|
|
423
435
|
exclusions_black_list = self._get_finding_exclusion(
|
|
424
436
|
session_manager,
|
|
425
|
-
config_tool["VULNERABILITY_MANAGER"]["DEFECT_DOJO"][
|
|
437
|
+
config_tool["VULNERABILITY_MANAGER"]["DEFECT_DOJO"][
|
|
438
|
+
"MAX_RETRIES_QUERY"
|
|
439
|
+
],
|
|
426
440
|
{
|
|
427
441
|
"type": "black_list",
|
|
428
442
|
},
|
|
@@ -439,28 +453,37 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
|
439
453
|
vulnerability_management: VulnerabilityManagement,
|
|
440
454
|
token_cmdb,
|
|
441
455
|
token_dd,
|
|
442
|
-
scan_type_mapping,
|
|
443
|
-
enviroment_mapping,
|
|
444
456
|
tags,
|
|
445
457
|
use_cmdb: bool,
|
|
446
458
|
):
|
|
459
|
+
tool_scm_conf_mapping = vulnerability_management.config_tool["VULNERABILITY_MANAGER"]["DEFECT_DOJO"]["TOOL_SCM_MAPPING"]
|
|
447
460
|
common_fields = {
|
|
448
|
-
"scan_type": scan_type_mapping[vulnerability_management.scan_type],
|
|
461
|
+
"scan_type": self.scan_type_mapping[vulnerability_management.scan_type],
|
|
449
462
|
"file": vulnerability_management.input_core.path_file_results,
|
|
450
463
|
"engagement_name": vulnerability_management.input_core.scope_pipeline,
|
|
451
464
|
"source_code_management_uri": vulnerability_management.source_code_management_uri,
|
|
465
|
+
"tool_scm_configuration": (
|
|
466
|
+
tool_scm_conf_mapping[
|
|
467
|
+
vulnerability_management.repository_provider.upper()
|
|
468
|
+
]
|
|
469
|
+
if vulnerability_management.repository_provider is not None
|
|
470
|
+
and vulnerability_management.repository_provider.upper()
|
|
471
|
+
in tool_scm_conf_mapping
|
|
472
|
+
else tool_scm_conf_mapping["DEFAULT"]
|
|
473
|
+
),
|
|
452
474
|
"tags": tags,
|
|
453
475
|
"version": vulnerability_management.version,
|
|
454
476
|
"build_id": vulnerability_management.build_id,
|
|
455
477
|
"branch_tag": vulnerability_management.branch_tag,
|
|
456
478
|
"commit_hash": vulnerability_management.commit_hash,
|
|
457
479
|
"service": vulnerability_management.input_core.scope_pipeline,
|
|
458
|
-
"test_title":
|
|
480
|
+
"test_title": "_".join(tags),
|
|
459
481
|
"environment": (
|
|
460
|
-
enviroment_mapping[vulnerability_management.environment.lower()]
|
|
482
|
+
self.enviroment_mapping[vulnerability_management.environment.lower()]
|
|
461
483
|
if vulnerability_management.environment is not None
|
|
462
|
-
and vulnerability_management.environment.lower()
|
|
463
|
-
|
|
484
|
+
and vulnerability_management.environment.lower()
|
|
485
|
+
in self.enviroment_mapping
|
|
486
|
+
else self.enviroment_mapping["default"]
|
|
464
487
|
),
|
|
465
488
|
"token_defect_dojo": token_dd,
|
|
466
489
|
"host_defect_dojo": vulnerability_management.config_tool[
|
|
@@ -469,8 +492,9 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
|
469
492
|
"expression": vulnerability_management.config_tool["VULNERABILITY_MANAGER"][
|
|
470
493
|
"DEFECT_DOJO"
|
|
471
494
|
]["CMDB"]["REGEX_EXPRESSION_CMDB"],
|
|
472
|
-
"reimport_scan": vulnerability_management.config_tool[
|
|
473
|
-
"
|
|
495
|
+
"reimport_scan": vulnerability_management.config_tool[
|
|
496
|
+
"VULNERABILITY_MANAGER"
|
|
497
|
+
]["DEFECT_DOJO"]["REIMPORT_SCAN"],
|
|
474
498
|
}
|
|
475
499
|
|
|
476
500
|
if use_cmdb:
|
|
@@ -625,7 +649,7 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
|
625
649
|
).results
|
|
626
650
|
|
|
627
651
|
return Utils().retries_requests(request_func, max_retries, retry_delay=5)
|
|
628
|
-
|
|
652
|
+
|
|
629
653
|
def _get_finding_exclusion(self, session_manager, max_retries, query_params):
|
|
630
654
|
def request_func():
|
|
631
655
|
return FindingExclusion.get_finding_exclusion(
|
|
@@ -704,7 +728,7 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
|
704
728
|
where=self._get_where(finding, tool),
|
|
705
729
|
create_date=create_date,
|
|
706
730
|
expired_date=expired_date,
|
|
707
|
-
severity=finding.severity,
|
|
731
|
+
severity=finding.severity.lower(),
|
|
708
732
|
reason=reason,
|
|
709
733
|
)
|
|
710
734
|
|
|
@@ -789,4 +813,4 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
|
789
813
|
return self._get_where(finding, tag)
|
|
790
814
|
return finding.file_path
|
|
791
815
|
else:
|
|
792
|
-
return finding.file_path
|
|
816
|
+
return finding.file_path
|
|
@@ -14,6 +14,7 @@ from devsecops_engine_tools.engine_core.src.domain.model.exclusions import (
|
|
|
14
14
|
Exclusions,
|
|
15
15
|
)
|
|
16
16
|
from devsecops_engine_tools.engine_core.src.domain.model.threshold import Threshold
|
|
17
|
+
from devsecops_engine_tools.engine_utilities.utils.utils import Utils
|
|
17
18
|
|
|
18
19
|
class DastScan:
|
|
19
20
|
def __init__(
|
|
@@ -118,7 +119,12 @@ class DastScan:
|
|
|
118
119
|
|
|
119
120
|
input_core = InputCore(
|
|
120
121
|
totalized_exclusions=totalized_exclusions,
|
|
121
|
-
threshold_defined=
|
|
122
|
+
threshold_defined=Utils.update_threshold(
|
|
123
|
+
self,
|
|
124
|
+
Threshold(config_tool['THRESHOLD']),
|
|
125
|
+
exclusions,
|
|
126
|
+
config_tool["SCOPE_PIPELINE"],
|
|
127
|
+
),
|
|
122
128
|
path_file_results=path_file_results,
|
|
123
129
|
custom_message_break_build=config_tool.get("MESSAGE_INFO_DAST"),
|
|
124
130
|
scope_pipeline=config_tool.get("SCOPE_PIPELINE"),
|
|
@@ -13,7 +13,6 @@ from devsecops_engine_tools.engine_core.src.domain.model.exclusions import Exclu
|
|
|
13
13
|
from devsecops_engine_tools.engine_core.src.domain.model.input_core import InputCore
|
|
14
14
|
from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
|
|
15
15
|
from devsecops_engine_tools.engine_utilities import settings
|
|
16
|
-
from devsecops_engine_tools.engine_core.src.domain.model.threshold import Threshold
|
|
17
16
|
from devsecops_engine_tools.engine_utilities.utils.utils import Utils
|
|
18
17
|
|
|
19
18
|
logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
|
|
@@ -37,7 +37,8 @@ class ImportScanRequest:
|
|
|
37
37
|
create_finding_groups_for_all_findings: str = ""
|
|
38
38
|
# ****another parameter outside defect dojo*****
|
|
39
39
|
product_description: str = ""
|
|
40
|
-
|
|
40
|
+
tool_sonarqube_configuration: str = ""
|
|
41
|
+
tool_scm_configuration: str = ""
|
|
41
42
|
code_app: str = ""
|
|
42
43
|
token_cmdb: str = ""
|
|
43
44
|
host_cmdb: str = ""
|
|
@@ -83,6 +83,7 @@ list_scan_type = [
|
|
|
83
83
|
"JFrog Xray On Demand Binary Scan",
|
|
84
84
|
"JFrog Xray Scan",
|
|
85
85
|
"JFrog Xray Unified Scan",
|
|
86
|
+
"Kubescape JSON Importer",
|
|
86
87
|
"KICS Scan",
|
|
87
88
|
"Kiuwan Scan",
|
|
88
89
|
"kube-bench Scan",
|
|
@@ -201,7 +202,8 @@ class ImportScanSerializer(Schema):
|
|
|
201
202
|
test_title = fields.Str(required=False)
|
|
202
203
|
product_description = fields.Str(required=False)
|
|
203
204
|
create_finding_groups_for_all_findings = fields.Str(required=False)
|
|
204
|
-
|
|
205
|
+
tool_sonarqube_configuration = fields.Int(required=False, load_default=1)
|
|
206
|
+
tool_scm_configuration = fields.Int(required=False)
|
|
205
207
|
code_app = fields.Str(required=False)
|
|
206
208
|
# defect-dojo credential
|
|
207
209
|
token_cmdb = fields.Str(required=False)
|
|
@@ -25,6 +25,7 @@ class ImportScanUserCase:
|
|
|
25
25
|
rest_product: ProductRestConsumer,
|
|
26
26
|
rest_scan_configuration: ScanConfigrationRestConsumer,
|
|
27
27
|
rest_engagement: EngagementRestConsumer,
|
|
28
|
+
|
|
28
29
|
):
|
|
29
30
|
self.__rest_import_scan = rest_import_scan
|
|
30
31
|
self.__rest_product_type = rest_product_type
|
|
@@ -75,7 +76,7 @@ class ImportScanUserCase:
|
|
|
75
76
|
raise ApiError(log)
|
|
76
77
|
|
|
77
78
|
logger.info(f"Match {request.scan_type}")
|
|
78
|
-
products = self.__rest_product.get_products({"name":request.product_name})
|
|
79
|
+
products = self.__rest_product.get_products({"name": request.product_name}) or self.__rest_product.get_products({"name": request.code_app})
|
|
79
80
|
if len(products.results) > 0:
|
|
80
81
|
product_id = products.results[0].id
|
|
81
82
|
request.product_name = products.results[0].name
|
|
@@ -110,7 +111,7 @@ class ImportScanUserCase:
|
|
|
110
111
|
scan_configuration_list = self.__rest_scan_configurations.get_api_scan_configuration(request)
|
|
111
112
|
if scan_configuration_list.results == []:
|
|
112
113
|
scan_configuration = self.__rest_scan_configurations.post_api_scan_configuration(
|
|
113
|
-
request, product_id, request.
|
|
114
|
+
request, product_id, request.tool_sonarqube_configuration
|
|
114
115
|
)
|
|
115
116
|
request.api_scan_configuration = scan_configuration.id
|
|
116
117
|
logger.debug(f"Scan configuration create service_key_1 : {scan_configuration.service_key_1}")
|
|
@@ -123,14 +124,14 @@ class ImportScanUserCase:
|
|
|
123
124
|
logger.debug(f"search Engagement name: {request.engagement_name}")
|
|
124
125
|
engagement = self.__rest_engagement.get_engagements(request.engagement_name)
|
|
125
126
|
if engagement.results == [] or not any(engagement.name == request.engagement_name for engagement in engagement.results):
|
|
126
|
-
engagement = self.__rest_engagement.post_engagement(request
|
|
127
|
-
logger.debug(f"
|
|
127
|
+
engagement = self.__rest_engagement.post_engagement(request, product_id, request.tool_scm_configuration)
|
|
128
|
+
logger.debug(f"Engagement created: {engagement.name}")
|
|
128
129
|
else:
|
|
129
130
|
engagement = [engagement for engagement in engagement.results if engagement.product == product_id and engagement.name == request.engagement_name]
|
|
130
131
|
if engagement:
|
|
131
132
|
logger.debug(f"Engagement found: {engagement[0].name} whit product id: {engagement[0].product}")
|
|
132
133
|
else:
|
|
133
|
-
engagement = self.__rest_engagement.post_engagement(request
|
|
134
|
-
logger.debug(f"
|
|
134
|
+
engagement = self.__rest_engagement.post_engagement(request, product_id, request.tool_scm_configuration)
|
|
135
|
+
logger.debug(f"Engagement created: {engagement.name} whit product id {engagement.product}")
|
|
135
136
|
|
|
136
137
|
return self.import_scan(request, api_scan_bool)
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/engagement.py
CHANGED
|
@@ -57,25 +57,30 @@ class EngagementRestConsumer:
|
|
|
57
57
|
raise ApiError(e)
|
|
58
58
|
return engagements
|
|
59
59
|
|
|
60
|
-
def post_engagement(self,
|
|
60
|
+
def post_engagement(self, request: ImportScanRequest, product_id, tool_scm_configuration_id):
|
|
61
61
|
url = f"{self.__host}/api/v2/engagements/"
|
|
62
|
-
data =
|
|
63
|
-
|
|
64
|
-
"name": engagement_name,
|
|
62
|
+
data = {
|
|
63
|
+
"name": request.engagement_name,
|
|
65
64
|
"target_start": str(datetime.now().date()),
|
|
66
65
|
"target_end": str(datetime.now().date()),
|
|
67
66
|
"product": product_id,
|
|
68
67
|
"engagement_type": "CI/CD",
|
|
69
68
|
"status": "In Progress",
|
|
70
69
|
}
|
|
71
|
-
|
|
70
|
+
|
|
71
|
+
if request.source_code_management_uri:
|
|
72
|
+
data["source_code_management_uri"] = request.source_code_management_uri
|
|
73
|
+
|
|
74
|
+
if tool_scm_configuration_id:
|
|
75
|
+
data["source_code_management_server"] = tool_scm_configuration_id
|
|
76
|
+
|
|
72
77
|
headers = {
|
|
73
78
|
"Authorization": f"Token {self.__token}",
|
|
74
79
|
"Content-Type": "application/json",
|
|
75
80
|
}
|
|
76
81
|
try:
|
|
77
82
|
response = self.__session.post(
|
|
78
|
-
url=url, headers=headers, data=data, verify=VERIFY_CERTIFICATE
|
|
83
|
+
url=url, headers=headers, data=json.dumps(data), verify=VERIFY_CERTIFICATE
|
|
79
84
|
)
|
|
80
85
|
if response.status_code != 201:
|
|
81
86
|
logger.error(response.json())
|
|
@@ -94,6 +94,7 @@ class ReportSonar:
|
|
|
94
94
|
config_tool = config_tool,
|
|
95
95
|
source_code_management_uri = source_code_management_uri,
|
|
96
96
|
base_compact_remote_config_url = compact_remote_config_url,
|
|
97
|
+
repository_provider = self.devops_platform_gateway.get_variable("repository_provider"),
|
|
97
98
|
access_token = self.devops_platform_gateway.get_variable("access_token"),
|
|
98
99
|
version = self.devops_platform_gateway.get_variable("build_execution_id"),
|
|
99
100
|
build_id = self.devops_platform_gateway.get_variable("build_id"),
|
|
@@ -126,6 +126,7 @@ class Utils:
|
|
|
126
126
|
threshold.vulnerability = LevelVulnerability(new_threshold.get("VULNERABILITY"))
|
|
127
127
|
threshold.compliance = LevelCompliance(new_threshold.get("COMPLIANCE")) if new_threshold.get("COMPLIANCE") else threshold.compliance
|
|
128
128
|
threshold.cve = new_threshold.get("CVE") if new_threshold.get("CVE") is not None else threshold.cve
|
|
129
|
+
threshold.name = new_threshold.get("reason", "Exclusion")
|
|
129
130
|
return threshold
|
|
130
131
|
|
|
131
132
|
threshold_pipeline = exclusions_data.get(pipeline_name, {}).get("THRESHOLD", {})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
version = '1.
|
|
1
|
+
version = '1.47.1'
|
|
@@ -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=9leceY-Awk1TwhWg1kXLWI3YA1L8cyiJmbTZJ1x1XsE,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
|
|
@@ -16,8 +16,8 @@ devsecops_engine_tools/engine_core/src/domain/model/input_core.py,sha256=hc1WMzC
|
|
|
16
16
|
devsecops_engine_tools/engine_core/src/domain/model/level_compliance.py,sha256=ntn_UWqHc6sT5g_LozBdjdewTQxFsp7Kt8M0xqw-k_o,98
|
|
17
17
|
devsecops_engine_tools/engine_core/src/domain/model/level_vulnerability.py,sha256=0sySEnFNkS2Y8uF5GUVAYehXw-i2OglUClkVobnSTPc,257
|
|
18
18
|
devsecops_engine_tools/engine_core/src/domain/model/report.py,sha256=09QV_jBQbucoiGM_PjVzRwWvvnebAx24Vehs2bqEe2o,1929
|
|
19
|
-
devsecops_engine_tools/engine_core/src/domain/model/threshold.py,sha256=
|
|
20
|
-
devsecops_engine_tools/engine_core/src/domain/model/vulnerability_management.py,sha256=
|
|
19
|
+
devsecops_engine_tools/engine_core/src/domain/model/threshold.py,sha256=d_T9EC4l0H_pm-RqR3obgYksM3TOnWETfCNwWW7xMUk,644
|
|
20
|
+
devsecops_engine_tools/engine_core/src/domain/model/vulnerability_management.py,sha256=6zR3IKNTMuCwRDr9J-trg0Z7n_XSbhtDEfdDTU_Y508,581
|
|
21
21
|
devsecops_engine_tools/engine_core/src/domain/model/gateway/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
22
22
|
devsecops_engine_tools/engine_core/src/domain/model/gateway/devops_platform_gateway.py,sha256=-L7O48UlUe2wI1DRnpAdZ98SLge7pcvoUOXITgFaBLg,800
|
|
23
23
|
devsecops_engine_tools/engine_core/src/domain/model/gateway/metrics_manager_gateway.py,sha256=wApR5faZG5YqprWrDBMM9b4V7sBraJUxDmIUNGi0zqg,193
|
|
@@ -26,9 +26,9 @@ devsecops_engine_tools/engine_core/src/domain/model/gateway/sbom_manager.py,sha2
|
|
|
26
26
|
devsecops_engine_tools/engine_core/src/domain/model/gateway/secrets_manager_gateway.py,sha256=CTwUIvUWF0NSSzdCqASUFst6KUysW53NV9eatjLGdl8,170
|
|
27
27
|
devsecops_engine_tools/engine_core/src/domain/model/gateway/vulnerability_management_gateway.py,sha256=MsNHO4x78KqMkJ3u3gxPltyBIqP5gB3tRBlN-w7VtBg,1429
|
|
28
28
|
devsecops_engine_tools/engine_core/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
29
|
-
devsecops_engine_tools/engine_core/src/domain/usecases/break_build.py,sha256=
|
|
29
|
+
devsecops_engine_tools/engine_core/src/domain/usecases/break_build.py,sha256=gIMtuO6J1jv80wJwdaBqHhPsHshYodF0fbDJ6UBzpcc,16924
|
|
30
30
|
devsecops_engine_tools/engine_core/src/domain/usecases/handle_risk.py,sha256=RirHqsW5AhGjV7ITa13bW_BfM6VE99DffrPASoB9SN0,9403
|
|
31
|
-
devsecops_engine_tools/engine_core/src/domain/usecases/handle_scan.py,sha256=
|
|
31
|
+
devsecops_engine_tools/engine_core/src/domain/usecases/handle_scan.py,sha256=KMbPszDoAVHDg_wW76SpMekYuDQOODHn_pGSlIkmxFc,10960
|
|
32
32
|
devsecops_engine_tools/engine_core/src/domain/usecases/metrics_manager.py,sha256=xfaGrDf9rnN32qG_zOD9NN-a62reqQ5KOd2bP6xoRnw,2417
|
|
33
33
|
devsecops_engine_tools/engine_core/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
34
34
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -36,9 +36,9 @@ devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/__init
|
|
|
36
36
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/s3_manager.py,sha256=xLPwfh8FQzP5CldRj0ev8LsSxFO4A_i88EnNGBPuN2g,2210
|
|
37
37
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/secrets_manager.py,sha256=ELihQBgSPH4f9QCyg2dgjudsFitaqgdsljnVOmaA_v4,1972
|
|
38
38
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
39
|
-
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/azure_devops.py,sha256=
|
|
39
|
+
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/azure_devops.py,sha256=_HbiOZ0XdXCiAGm4LS02gCvekTDQu0YKRKcaCR1IqVM,5491
|
|
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=dKodTpwafJUDSfCLPWELLkx7THK1m91ncoIO0mqStGg,30603
|
|
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=jK3Qtt0UfSX4wbE4wo4iY7a8v8u1pcQcWASWmJ7sFfk,4216
|
|
44
44
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/printer_pretty_table/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -69,7 +69,7 @@ devsecops_engine_tools/engine_dast/src/domain/model/gateways/__init__.py,sha256=
|
|
|
69
69
|
devsecops_engine_tools/engine_dast/src/domain/model/gateways/authentication_gateway.py,sha256=JSi2LAK8kPctqPmh3KfxIkXeDY5sSRsXoPWqudlmyYQ,175
|
|
70
70
|
devsecops_engine_tools/engine_dast/src/domain/model/gateways/tool_gateway.py,sha256=F9Xusc7bQo25GpRvCMWPPQ_hlILbGF1yZKMAnm15Axs,255
|
|
71
71
|
devsecops_engine_tools/engine_dast/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
72
|
-
devsecops_engine_tools/engine_dast/src/domain/usecases/dast_scan.py,sha256=
|
|
72
|
+
devsecops_engine_tools/engine_dast/src/domain/usecases/dast_scan.py,sha256=pBVTXC8E9iaXdRIkt-MxS9GAGvV-O2NTJmjQAOXDoLc,4917
|
|
73
73
|
devsecops_engine_tools/engine_dast/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
74
74
|
devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
75
75
|
devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/http/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -146,7 +146,7 @@ devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/config_tool.py,sh
|
|
|
146
146
|
devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/gateways/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
147
147
|
devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/gateways/tool_gateway.py,sha256=ClElxyHbwfDCW0fgcehaNfQLq00zozhO71EnyCjzt-U,182
|
|
148
148
|
devsecops_engine_tools/engine_sast/engine_iac/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
149
|
-
devsecops_engine_tools/engine_sast/engine_iac/src/domain/usecases/iac_scan.py,sha256
|
|
149
|
+
devsecops_engine_tools/engine_sast/engine_iac/src/domain/usecases/iac_scan.py,sha256=4d9TF8pM_iun9EZo1c9IPZV84BrufGJvQRC8WCup3oQ,5910
|
|
150
150
|
devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
151
151
|
devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
152
152
|
devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -276,23 +276,23 @@ devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/product_type_l
|
|
|
276
276
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/scan_configuration.py,sha256=-uVxaTkxnDmUUGQUdN9x_VKR8KJUagJKnGR6B1emoEU,577
|
|
277
277
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
278
278
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/finding.py,sha256=RinG3ISc-u_3VXVqntwdcQvZoQdmHPCvDHWSvnkCkcU,2619
|
|
279
|
-
devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/import_scan.py,sha256=
|
|
279
|
+
devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/import_scan.py,sha256=3OqfunER_l7j8JkcwEiVVao40GvGtGKcHf5YlPqfjsw,5198
|
|
280
280
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
281
281
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/finding.py,sha256=4IQLjqgyImVdn8AxoU3UKgXnvU-F-x7Tm2bJdp6nHm4,5265
|
|
282
|
-
devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/import_scan.py,sha256=
|
|
282
|
+
devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/import_scan.py,sha256=__mRQMSt94gd3JlC0xZ5RSvMmaUrXOxu8XoWnom72iw,7489
|
|
283
283
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
284
284
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/cmdb.py,sha256=BUOdvP39bEMQ6Unr2hB28eljVGU2Uv8dDEkzRyEJgyQ,2650
|
|
285
285
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/component.py,sha256=_icc-ZAqw-aVgE5J4VH8Q7fSqpCgEGcfmurgRIN9NqM,448
|
|
286
286
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/engagement.py,sha256=SVX-weFRPT3DK7w6IBrLuWS4L6vboMuZtwXAQmIHfEE,406
|
|
287
287
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/finding.py,sha256=TjfpdJtaBwQvT8XNJKBf6tuOASOAw7ZiOxJbqsKadaA,1689
|
|
288
288
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/finding_exclusion.py,sha256=VqdwBiQGc9XFpatvbXGL837LtTxkWlfhWH46W1cTbCg,455
|
|
289
|
-
devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/import_scan.py,sha256=
|
|
289
|
+
devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/import_scan.py,sha256=ybXVAIL7tjHrip5maK9iWqC4DmugaxBLiVJ6ayXmiZw,7157
|
|
290
290
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/product.py,sha256=6f6eABdC79zOopMe_Rif3XoGG-yFfq9x_EOkevTuGDY,368
|
|
291
291
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
292
292
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
293
293
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/cmdb.py,sha256=waucNjkwT9eo-ykeZKxAMZHQCnI-R9Keu0091wVfyOQ,4942
|
|
294
294
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/component.py,sha256=-J0Sv7z709Hctb-tgM0wmp5ofE4WKEIA_uJwzvMnStE,2132
|
|
295
|
-
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/engagement.py,sha256=
|
|
295
|
+
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/engagement.py,sha256=E6ilSQLOcJeBGYn_XXzJimUdi3l9vo0FpN1FhdNJV58,3866
|
|
296
296
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/finding.py,sha256=k-z2tg_NPKMni7rZgXMZa2-t8_8F35r8YtF1EcjMyDs,2355
|
|
297
297
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/finding_exclusion.py,sha256=BL4xf1FE5tMsBri0LetxBRUgOgLogdoHX97rQkHh10g,1524
|
|
298
298
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/import_scan.py,sha256=uZqPM9sOyclq8q-uKRWUY9qR67SzpIzirM6T7KMkYZ4,6515
|
|
@@ -327,7 +327,7 @@ devsecops_engine_tools/engine_utilities/sonarqube/src/domain/model/__init__.py,s
|
|
|
327
327
|
devsecops_engine_tools/engine_utilities/sonarqube/src/domain/model/gateways/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
328
328
|
devsecops_engine_tools/engine_utilities/sonarqube/src/domain/model/gateways/sonar_gateway.py,sha256=mgycD3bzC_BYv7qT0tMLAro9hyNOvi4gJRzceYNF0t8,1339
|
|
329
329
|
devsecops_engine_tools/engine_utilities/sonarqube/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
330
|
-
devsecops_engine_tools/engine_utilities/sonarqube/src/domain/usecases/report_sonar.py,sha256=
|
|
330
|
+
devsecops_engine_tools/engine_utilities/sonarqube/src/domain/usecases/report_sonar.py,sha256=ImJvICOHiFpooBV3whtCqrgupVjwvei6nsy10vUp0z4,10285
|
|
331
331
|
devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
332
332
|
devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
333
333
|
devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/driven_adapters/sonarqube/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -346,9 +346,9 @@ devsecops_engine_tools/engine_utilities/utils/logger_info.py,sha256=4Mz8Bwlm9Mku
|
|
|
346
346
|
devsecops_engine_tools/engine_utilities/utils/name_conversion.py,sha256=ADJrRGaxYSDe0ZRh6VHRf53H4sXPcb-vNP_i81PUn3I,307
|
|
347
347
|
devsecops_engine_tools/engine_utilities/utils/printers.py,sha256=amYAr9YQfYgR6jK9a2l26z3oovFPQ3FAKmhq6BKhEBA,623
|
|
348
348
|
devsecops_engine_tools/engine_utilities/utils/session_manager.py,sha256=Z0fdhB3r-dxU0nGSD9zW_B4r2Qol1rUnUCkhFR0U-HQ,487
|
|
349
|
-
devsecops_engine_tools/engine_utilities/utils/utils.py,sha256=
|
|
350
|
-
devsecops_engine_tools-1.
|
|
351
|
-
devsecops_engine_tools-1.
|
|
352
|
-
devsecops_engine_tools-1.
|
|
353
|
-
devsecops_engine_tools-1.
|
|
354
|
-
devsecops_engine_tools-1.
|
|
349
|
+
devsecops_engine_tools/engine_utilities/utils/utils.py,sha256=HCjS900TBoNcHrC4LaiP-Kf9frVdtagF130qOUgnO2M,6757
|
|
350
|
+
devsecops_engine_tools-1.47.1.dist-info/METADATA,sha256=p51qq6-NnJ3WCmMuaAc7K3ohlaogKKR96f2LRPq0SAc,11779
|
|
351
|
+
devsecops_engine_tools-1.47.1.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
|
|
352
|
+
devsecops_engine_tools-1.47.1.dist-info/entry_points.txt,sha256=MHCTFFs9bdNKo6YcWCcBW2_8X6yTisgLOlmVx-V8Rxc,276
|
|
353
|
+
devsecops_engine_tools-1.47.1.dist-info/top_level.txt,sha256=ge6y0X_xBAU1aG3EMWFtl9djbVyg5BxuSp2r2Lg6EQU,23
|
|
354
|
+
devsecops_engine_tools-1.47.1.dist-info/RECORD,,
|
|
File without changes
|
{devsecops_engine_tools-1.46.2.dist-info → devsecops_engine_tools-1.47.1.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{devsecops_engine_tools-1.46.2.dist-info → devsecops_engine_tools-1.47.1.dist-info}/top_level.txt
RENAMED
|
File without changes
|