devsecops-engine-tools 1.36.0__py3-none-any.whl → 1.38.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/applications/runner_engine_core.py +41 -1
- devsecops_engine_tools/engine_core/src/domain/model/gateway/metrics_manager_gateway.py +1 -1
- devsecops_engine_tools/engine_core/src/domain/usecases/break_build.py +1 -1
- devsecops_engine_tools/engine_core/src/domain/usecases/handle_scan.py +7 -8
- devsecops_engine_tools/engine_core/src/domain/usecases/metrics_manager.py +2 -2
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/s3_manager.py +2 -2
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py +9 -6
- devsecops_engine_tools/engine_core/src/infrastructure/entry_points/entry_point_core.py +6 -3
- devsecops_engine_tools/engine_sca/engine_dependencies/src/applications/runner_dependencies_scan.py +5 -1
- devsecops_engine_tools/engine_utilities/defect_dojo/applications/defect_dojo.py +7 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/import_scan.py +3 -2
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/import_scan.py +1 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/import_scan.py +70 -34
- devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/reimport_scan.py +74 -0
- devsecops_engine_tools/engine_utilities/sonarqube/src/domain/usecases/report_sonar.py +1 -1
- devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/entry_points/entry_point_report_sonar.py +1 -1
- devsecops_engine_tools/version.py +1 -1
- {devsecops_engine_tools-1.36.0.dist-info → devsecops_engine_tools-1.38.1.dist-info}/METADATA +7 -7
- {devsecops_engine_tools-1.36.0.dist-info → devsecops_engine_tools-1.38.1.dist-info}/RECORD +22 -21
- {devsecops_engine_tools-1.36.0.dist-info → devsecops_engine_tools-1.38.1.dist-info}/WHEEL +0 -0
- {devsecops_engine_tools-1.36.0.dist-info → devsecops_engine_tools-1.38.1.dist-info}/entry_points.txt +0 -0
- {devsecops_engine_tools-1.36.0.dist-info → devsecops_engine_tools-1.38.1.dist-info}/top_level.txt +0 -0
|
@@ -83,6 +83,26 @@ def get_inputs_from_cli(args):
|
|
|
83
83
|
parser.add_argument(
|
|
84
84
|
"-t",
|
|
85
85
|
"--tool",
|
|
86
|
+
choices=[
|
|
87
|
+
"nuclei",
|
|
88
|
+
"bearer",
|
|
89
|
+
"checkov",
|
|
90
|
+
"kics",
|
|
91
|
+
"kubescape",
|
|
92
|
+
"trufflehog",
|
|
93
|
+
"gitleaks",
|
|
94
|
+
"prisma",
|
|
95
|
+
"trivy",
|
|
96
|
+
"xray",
|
|
97
|
+
"dependency_check",
|
|
98
|
+
],
|
|
99
|
+
type=str,
|
|
100
|
+
required=False,
|
|
101
|
+
help="Tool to execute according to the module",
|
|
102
|
+
)
|
|
103
|
+
parser.add_argument(
|
|
104
|
+
"-m",
|
|
105
|
+
"--module",
|
|
86
106
|
choices=[
|
|
87
107
|
"engine_iac",
|
|
88
108
|
"engine_dast",
|
|
@@ -94,7 +114,7 @@ def get_inputs_from_cli(args):
|
|
|
94
114
|
],
|
|
95
115
|
type=str,
|
|
96
116
|
required=True,
|
|
97
|
-
help="
|
|
117
|
+
help="Module to execute",
|
|
98
118
|
)
|
|
99
119
|
parser.add_argument(
|
|
100
120
|
"-fp",
|
|
@@ -176,12 +196,32 @@ def get_inputs_from_cli(args):
|
|
|
176
196
|
help="File path containing the configuration, structured according to the documentation, \
|
|
177
197
|
for the API or web application to be scanned by the DAST tool."
|
|
178
198
|
)
|
|
199
|
+
|
|
200
|
+
TOOLS = {
|
|
201
|
+
"engine_iac": ["checkov", "kics", "kubescape"],
|
|
202
|
+
"engine_secret": ["trufflehog", "gitleaks"],
|
|
203
|
+
"engine_container": ["prisma", "trivy"],
|
|
204
|
+
"engine_dependencies": ["xray", "dependency_check"],
|
|
205
|
+
"engine_code": ["bearer"],
|
|
206
|
+
"engine_dast": ["nuclei"],
|
|
207
|
+
"engine_risk": None,
|
|
208
|
+
}
|
|
209
|
+
|
|
179
210
|
args = parser.parse_args()
|
|
211
|
+
|
|
212
|
+
if args.module in TOOLS and args.tool:
|
|
213
|
+
allowed_tools = TOOLS[args.module]
|
|
214
|
+
if allowed_tools is None:
|
|
215
|
+
parser.error(f"The tool flag should not be used with module {args.module}")
|
|
216
|
+
elif allowed_tools and (args.tool not in allowed_tools):
|
|
217
|
+
parser.error(f"Invalid value for tool. Allowed values for the provided module {args.module} are: {', '.join(allowed_tools)}")
|
|
218
|
+
|
|
180
219
|
return {
|
|
181
220
|
"platform_devops": args.platform_devops,
|
|
182
221
|
"remote_config_repo": args.remote_config_repo,
|
|
183
222
|
"remote_config_branch": args.remote_config_branch,
|
|
184
223
|
"tool": args.tool,
|
|
224
|
+
"module": args.module,
|
|
185
225
|
"folder_path": args.folder_path,
|
|
186
226
|
"platform": args.platform,
|
|
187
227
|
"use_secrets_manager": args.use_secrets_manager,
|
|
@@ -34,7 +34,7 @@ class BreakBuild:
|
|
|
34
34
|
def _apply_policie_exception_new_vulnerability_industry(
|
|
35
35
|
self, findings_list: "list[Finding]", exclusions: "list[Exclusions]", args: any
|
|
36
36
|
):
|
|
37
|
-
if args["
|
|
37
|
+
if args["module"] in ["engine_container", "engine_dependencies"]:
|
|
38
38
|
date_actual = datetime.now(pytz.utc)
|
|
39
39
|
for item in findings_list:
|
|
40
40
|
if item.published_date_cve:
|
|
@@ -47,7 +47,6 @@ from devsecops_engine_tools.engine_utilities import settings
|
|
|
47
47
|
|
|
48
48
|
logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
|
|
49
49
|
|
|
50
|
-
|
|
51
50
|
class HandleScan:
|
|
52
51
|
def __init__(
|
|
53
52
|
self,
|
|
@@ -69,7 +68,7 @@ class HandleScan:
|
|
|
69
68
|
)
|
|
70
69
|
if dict_args["use_secrets_manager"] == "true":
|
|
71
70
|
secret_tool = self.secrets_manager_gateway.get_secret(config_tool)
|
|
72
|
-
if "engine_iac" in dict_args["
|
|
71
|
+
if "engine_iac" in dict_args["module"]:
|
|
73
72
|
findings_list, input_core = runner_engine_iac(
|
|
74
73
|
dict_args,
|
|
75
74
|
config_tool["ENGINE_IAC"]["TOOL"],
|
|
@@ -81,7 +80,7 @@ class HandleScan:
|
|
|
81
80
|
config_tool, input_core, dict_args, secret_tool, env
|
|
82
81
|
)
|
|
83
82
|
return findings_list, input_core
|
|
84
|
-
elif "engine_container" in dict_args["
|
|
83
|
+
elif "engine_container" in dict_args["module"]:
|
|
85
84
|
findings_list, input_core, sbom_components = runner_engine_container(
|
|
86
85
|
dict_args,
|
|
87
86
|
config_tool["ENGINE_CONTAINER"]["TOOL"],
|
|
@@ -97,7 +96,7 @@ class HandleScan:
|
|
|
97
96
|
sbom_components,
|
|
98
97
|
)
|
|
99
98
|
return findings_list, input_core
|
|
100
|
-
elif "engine_dast" in dict_args["
|
|
99
|
+
elif "engine_dast" in dict_args["module"]:
|
|
101
100
|
findings_list, input_core = runner_engine_dast(
|
|
102
101
|
dict_args,
|
|
103
102
|
config_tool["ENGINE_DAST"],
|
|
@@ -108,7 +107,7 @@ class HandleScan:
|
|
|
108
107
|
config_tool, input_core, dict_args, secret_tool, env
|
|
109
108
|
)
|
|
110
109
|
return findings_list, input_core
|
|
111
|
-
elif "engine_code" in dict_args["
|
|
110
|
+
elif "engine_code" in dict_args["module"]:
|
|
112
111
|
findings_list, input_core = runner_engine_code(
|
|
113
112
|
dict_args,
|
|
114
113
|
config_tool["ENGINE_CODE"]["TOOL"],
|
|
@@ -118,7 +117,7 @@ class HandleScan:
|
|
|
118
117
|
config_tool, input_core, dict_args, secret_tool, env
|
|
119
118
|
)
|
|
120
119
|
return findings_list, input_core
|
|
121
|
-
elif "engine_secret" in dict_args["
|
|
120
|
+
elif "engine_secret" in dict_args["module"]:
|
|
122
121
|
findings_list, input_core = runner_secret_scan(
|
|
123
122
|
dict_args,
|
|
124
123
|
config_tool["ENGINE_SECRET"]["TOOL"],
|
|
@@ -129,7 +128,7 @@ class HandleScan:
|
|
|
129
128
|
config_tool, input_core, dict_args, secret_tool, env
|
|
130
129
|
)
|
|
131
130
|
return findings_list, input_core
|
|
132
|
-
elif "engine_dependencies" in dict_args["
|
|
131
|
+
elif "engine_dependencies" in dict_args["module"]:
|
|
133
132
|
findings_list, input_core, sbom_components = runner_engine_dependencies(
|
|
134
133
|
dict_args,
|
|
135
134
|
config_tool,
|
|
@@ -156,7 +155,7 @@ class HandleScan:
|
|
|
156
155
|
if input_core.path_file_results:
|
|
157
156
|
self.vulnerability_management.send_vulnerability_management(
|
|
158
157
|
VulnerabilityManagement(
|
|
159
|
-
config_tool[dict_args["
|
|
158
|
+
config_tool[dict_args["module"].upper()]["TOOL"],
|
|
160
159
|
input_core,
|
|
161
160
|
dict_args,
|
|
162
161
|
secret_tool,
|
|
@@ -45,7 +45,7 @@ class MetricsManager:
|
|
|
45
45
|
"date": datetime.datetime.now().strftime("%Y-%m-%d"),
|
|
46
46
|
"component": scope_pipeline,
|
|
47
47
|
"stage": input_core.stage_pipeline,
|
|
48
|
-
"check_type": dict_args["
|
|
48
|
+
"check_type": dict_args["module"],
|
|
49
49
|
"environment": define_env(
|
|
50
50
|
self.devops_platform_gateway.get_variable("environment"),
|
|
51
51
|
self.devops_platform_gateway.get_variable("branch_name"),
|
|
@@ -55,5 +55,5 @@ class MetricsManager:
|
|
|
55
55
|
}
|
|
56
56
|
json.dump(body, file)
|
|
57
57
|
self.metrics_manager_gateway.send_metrics(
|
|
58
|
-
config_tool, dict_args["
|
|
58
|
+
config_tool, dict_args["module"], file_path
|
|
59
59
|
)
|
|
@@ -23,7 +23,7 @@ class S3Manager(MetricsManagerGateway):
|
|
|
23
23
|
except client.exceptions.NoSuchKey:
|
|
24
24
|
return ""
|
|
25
25
|
|
|
26
|
-
def send_metrics(self, config_tool,
|
|
26
|
+
def send_metrics(self, config_tool, module, file_path):
|
|
27
27
|
credentials_role = assume_role(config_tool["METRICS_MANAGER"]["AWS"]["ROLE_ARN"]) if config_tool["METRICS_MANAGER"]["AWS"]["USE_ROLE"] else None
|
|
28
28
|
session = boto3.session.Session()
|
|
29
29
|
|
|
@@ -41,7 +41,7 @@ class S3Manager(MetricsManagerGateway):
|
|
|
41
41
|
region_name=config_tool["METRICS_MANAGER"]["AWS"]["REGION_NAME"]
|
|
42
42
|
)
|
|
43
43
|
date = datetime.datetime.now()
|
|
44
|
-
path_bucket = f'engine_tools/{
|
|
44
|
+
path_bucket = f'engine_tools/{module}/{date.strftime("%Y")}/{date.strftime("%m")}/{date.strftime("%d")}/{file_path.split("/")[-1]}'
|
|
45
45
|
|
|
46
46
|
data = self._get_s3_data(
|
|
47
47
|
client, config_tool["METRICS_MANAGER"]["AWS"]["BUCKET"], path_bucket
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py
CHANGED
|
@@ -90,10 +90,10 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
|
90
90
|
for branch in vulnerability_management.config_tool[
|
|
91
91
|
"VULNERABILITY_MANAGER"
|
|
92
92
|
]["BRANCH_FILTER"]
|
|
93
|
-
) or (vulnerability_management.dict_args["
|
|
94
|
-
tags = vulnerability_management.dict_args["
|
|
95
|
-
if vulnerability_management.dict_args["
|
|
96
|
-
tags = f"{vulnerability_management.dict_args['
|
|
93
|
+
) or (vulnerability_management.dict_args["module"] == "engine_secret"):
|
|
94
|
+
tags = vulnerability_management.dict_args["module"]
|
|
95
|
+
if vulnerability_management.dict_args["module"] == "engine_iac":
|
|
96
|
+
tags = f"{vulnerability_management.dict_args['module']}_{'_'.join(vulnerability_management.dict_args['platform'])}"
|
|
97
97
|
|
|
98
98
|
use_cmdb = vulnerability_management.config_tool[
|
|
99
99
|
"VULNERABILITY_MANAGER"
|
|
@@ -125,7 +125,7 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
|
125
125
|
test_string = "//".join([url_parts[0] + "/", url_parts[1]])
|
|
126
126
|
print(
|
|
127
127
|
"Report sent to vulnerability management: ",
|
|
128
|
-
f"{test_string}?tags={vulnerability_management.dict_args['
|
|
128
|
+
f"{test_string}?tags={vulnerability_management.dict_args['module']}",
|
|
129
129
|
)
|
|
130
130
|
else:
|
|
131
131
|
raise ExceptionVulnerabilityManagement(response)
|
|
@@ -185,7 +185,7 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
|
185
185
|
"MAX_RETRIES_QUERY"
|
|
186
186
|
]
|
|
187
187
|
|
|
188
|
-
tool = dict_args["
|
|
188
|
+
tool = dict_args["module"]
|
|
189
189
|
|
|
190
190
|
risk_accepted_query_params = {
|
|
191
191
|
"risk_accepted": True,
|
|
@@ -451,6 +451,7 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
|
451
451
|
"branch_tag": vulnerability_management.branch_tag,
|
|
452
452
|
"commit_hash": vulnerability_management.commit_hash,
|
|
453
453
|
"service": vulnerability_management.input_core.scope_pipeline,
|
|
454
|
+
"test_title": tags,
|
|
454
455
|
"environment": (
|
|
455
456
|
enviroment_mapping[vulnerability_management.environment.lower()]
|
|
456
457
|
if vulnerability_management.environment is not None
|
|
@@ -464,6 +465,8 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
|
464
465
|
"expression": vulnerability_management.config_tool["VULNERABILITY_MANAGER"][
|
|
465
466
|
"DEFECT_DOJO"
|
|
466
467
|
]["CMDB"]["REGEX_EXPRESSION_CMDB"],
|
|
468
|
+
"reimport_scan": vulnerability_management.config_tool["VULNERABILITY_MANAGER"][
|
|
469
|
+
"DEFECT_DOJO"]["REIMPORT_SCAN"]
|
|
467
470
|
}
|
|
468
471
|
|
|
469
472
|
if use_cmdb:
|
|
@@ -29,8 +29,8 @@ def init_engine_core(
|
|
|
29
29
|
)
|
|
30
30
|
Printers.print_logo_tool(config_tool["BANNER"])
|
|
31
31
|
|
|
32
|
-
if config_tool[args["
|
|
33
|
-
if args["
|
|
32
|
+
if config_tool[args["module"].upper()]["ENABLED"]:
|
|
33
|
+
if args["module"] == "engine_risk":
|
|
34
34
|
results, input_core = HandleRisk(
|
|
35
35
|
vulnerability_management_gateway,
|
|
36
36
|
secrets_manager_gateway,
|
|
@@ -39,6 +39,9 @@ def init_engine_core(
|
|
|
39
39
|
).process(args, config_tool)
|
|
40
40
|
|
|
41
41
|
else:
|
|
42
|
+
if args.get("tool"):
|
|
43
|
+
config_tool[args["module"].upper()]["TOOL"] = args.get("tool").upper()
|
|
44
|
+
|
|
42
45
|
findings_list, input_core = HandleScan(
|
|
43
46
|
vulnerability_management_gateway,
|
|
44
47
|
secrets_manager_gateway,
|
|
@@ -59,6 +62,6 @@ def init_engine_core(
|
|
|
59
62
|
print(
|
|
60
63
|
devops_platform_gateway.message(
|
|
61
64
|
"warning",
|
|
62
|
-
"DevSecOps Engine Tool - {0} in maintenance...".format(args["
|
|
65
|
+
"DevSecOps Engine Tool - {0} in maintenance...".format(args["module"]),
|
|
63
66
|
)
|
|
64
67
|
)
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/applications/runner_dependencies_scan.py
CHANGED
|
@@ -20,7 +20,11 @@ def runner_engine_dependencies(
|
|
|
20
20
|
):
|
|
21
21
|
try:
|
|
22
22
|
tools_mapping = {
|
|
23
|
-
"XRAY": {
|
|
23
|
+
"XRAY": {
|
|
24
|
+
"tool_run": XrayScan,
|
|
25
|
+
"tool_deserializator": XrayDeserializator,
|
|
26
|
+
"tool_sbom": sbom_tool_gateway
|
|
27
|
+
},
|
|
24
28
|
"DEPENDENCY_CHECK": {
|
|
25
29
|
"tool_run": DependencyCheckTool,
|
|
26
30
|
"tool_deserializator": DependencyCheckDeserialize,
|
|
@@ -3,6 +3,9 @@ from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
|
|
|
3
3
|
from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.import_scan import (
|
|
4
4
|
ImportScanRestConsumer,
|
|
5
5
|
)
|
|
6
|
+
from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.reimport_scan import (
|
|
7
|
+
ReimportScanRestConsumer,
|
|
8
|
+
)
|
|
6
9
|
from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.product_type import (
|
|
7
10
|
ProductTypeRestConsumer,
|
|
8
11
|
)
|
|
@@ -48,12 +51,16 @@ class DefectDojo:
|
|
|
48
51
|
rest_scan_configuration = ScanConfigrationRestConsumer(
|
|
49
52
|
request, session=SessionManager()
|
|
50
53
|
)
|
|
54
|
+
rest_reimport_scan = ReimportScanRestConsumer(
|
|
55
|
+
request, session=SessionManager()
|
|
56
|
+
)
|
|
51
57
|
uc = ImportScanUserCase(
|
|
52
58
|
rest_import_scan,
|
|
53
59
|
rest_product_type,
|
|
54
60
|
rest_product,
|
|
55
61
|
rest_scan_configuration,
|
|
56
62
|
rest_engagement=rest_engagement,
|
|
63
|
+
rest_reimport_scan=rest_reimport_scan
|
|
57
64
|
)
|
|
58
65
|
return uc.execute(request)
|
|
59
66
|
except ApiError as e:
|
|
@@ -52,10 +52,10 @@ class ImportScanRequest:
|
|
|
52
52
|
cmdb_mapping: dict = None
|
|
53
53
|
product_type_name_mapping: dict = None
|
|
54
54
|
compact_remote_config_url: str = None
|
|
55
|
-
# ** Expression
|
|
56
55
|
expression: str = ""
|
|
57
|
-
# ** Test url
|
|
58
56
|
url: str = ""
|
|
57
|
+
reimport_scan: bool = None
|
|
58
|
+
test_title: str = ""
|
|
59
59
|
|
|
60
60
|
@classmethod
|
|
61
61
|
def from_dict(cls, obj):
|
|
@@ -100,6 +100,7 @@ class ImportScanRequest:
|
|
|
100
100
|
product_type_name_mapping=obj.get("product_type_name_mapping"),
|
|
101
101
|
expression=obj.get("expression"),
|
|
102
102
|
compact_remote_config_url=obj.get("compact_remote_config_url"),
|
|
103
|
+
reimport_scan=obj.get("reimport_scan"),
|
|
103
104
|
)
|
|
104
105
|
return obj
|
|
105
106
|
|
|
@@ -219,6 +219,7 @@ class ImportScanSerializer(Schema):
|
|
|
219
219
|
project_remote_config = fields.Str(required=False)
|
|
220
220
|
# regulare expression
|
|
221
221
|
expression = fields.Str(required=True)
|
|
222
|
+
reimport_scan = fields.Bool(required=False, default=False)
|
|
222
223
|
|
|
223
224
|
@post_load
|
|
224
225
|
def make_cmdb(self, data, **kwargs):
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import re
|
|
2
2
|
import os
|
|
3
|
-
|
|
3
|
+
import urllib3
|
|
4
4
|
from devsecops_engine_tools.engine_utilities.settings import SETTING_LOGGER
|
|
5
|
+
from devsecops_engine_tools.engine_utilities.utils.api_error import ApiError
|
|
5
6
|
from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
|
|
6
7
|
from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.import_scan import ImportScanRestConsumer
|
|
8
|
+
from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.reimport_scan import ReimportScanRestConsumer
|
|
7
9
|
from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.product_type import ProductTypeRestConsumer
|
|
8
10
|
from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.product import ProductRestConsumer
|
|
9
11
|
from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.scan_configurations import (
|
|
10
|
-
ScanConfigrationRestConsumer
|
|
11
|
-
)
|
|
12
|
+
ScanConfigrationRestConsumer)
|
|
12
13
|
from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.engagement import EngagementRestConsumer
|
|
13
14
|
from devsecops_engine_tools.engine_utilities.defect_dojo.domain.request_objects.import_scan import ImportScanRequest
|
|
14
|
-
import urllib3
|
|
15
15
|
|
|
16
16
|
logger = MyLogger.__call__(**SETTING_LOGGER).get_logger()
|
|
17
17
|
|
|
@@ -26,15 +26,76 @@ class ImportScanUserCase:
|
|
|
26
26
|
rest_product: ProductRestConsumer,
|
|
27
27
|
rest_scan_configuration: ScanConfigrationRestConsumer,
|
|
28
28
|
rest_engagement: EngagementRestConsumer,
|
|
29
|
+
rest_reimport_scan: ReimportScanRestConsumer,
|
|
29
30
|
):
|
|
30
31
|
self.__rest_import_scan = rest_import_scan
|
|
31
32
|
self.__rest_product_type = rest_product_type
|
|
32
33
|
self.__rest_product = rest_product
|
|
33
34
|
self.__rest_scan_configurations = rest_scan_configuration
|
|
34
35
|
self.__rest_engagement = rest_engagement
|
|
36
|
+
self.__rest_reimport_scan = rest_reimport_scan
|
|
35
37
|
|
|
36
|
-
|
|
38
|
+
|
|
39
|
+
def get_file_type(self, path_file):
|
|
40
|
+
__, extension = os.path.splitext(path_file)
|
|
41
|
+
dict_rule_type_file = {
|
|
42
|
+
".csv": "text/csv",
|
|
43
|
+
".json": "apllication/json",
|
|
44
|
+
".xml": "aplication/xml",
|
|
45
|
+
".sarif": "aplication/json",
|
|
46
|
+
}
|
|
47
|
+
file_type = dict_rule_type_file.get(extension)
|
|
48
|
+
return file_type
|
|
49
|
+
|
|
50
|
+
def import_scan(self, request, api_scan_bool):
|
|
37
51
|
response = None
|
|
52
|
+
|
|
53
|
+
if api_scan_bool:
|
|
54
|
+
response = self.__rest_import_scan.import_scan_api(request)
|
|
55
|
+
logger.info(f"End process Succesfull!!!: {response}")
|
|
56
|
+
else:
|
|
57
|
+
try:
|
|
58
|
+
file_type = self.get_file_type(request.file)
|
|
59
|
+
if file_type is None:
|
|
60
|
+
raise ApiError("File format not allowed")
|
|
61
|
+
|
|
62
|
+
with open(request.file, "rb") as file:
|
|
63
|
+
logger.info(f"read {file_type} file successful !!!")
|
|
64
|
+
files = [("file", (request.file, file, file_type))]
|
|
65
|
+
response = self.__rest_import_scan.import_scan(request, files)
|
|
66
|
+
|
|
67
|
+
except Exception as e:
|
|
68
|
+
raise ApiError(e)
|
|
69
|
+
|
|
70
|
+
response.url = f"{request.host_defect_dojo}/engagement/{str(response.engagement_id)}/finding/open"
|
|
71
|
+
return response
|
|
72
|
+
|
|
73
|
+
def reimport_scan(self, request, api_scan_bool):
|
|
74
|
+
response = None
|
|
75
|
+
|
|
76
|
+
if api_scan_bool:
|
|
77
|
+
logger.debug(f"reimport scan :{self.__rest_reimport_scan}")
|
|
78
|
+
response = self.__rest_reimport_scan.reimport_scan(request)
|
|
79
|
+
logger.info(f"End process Succesfull!!!: {response}")
|
|
80
|
+
else:
|
|
81
|
+
try:
|
|
82
|
+
logger.debug(f"reimport scan file :{self.__rest_reimport_scan}")
|
|
83
|
+
file_type = self.get_file_type(request.file)
|
|
84
|
+
if file_type is None:
|
|
85
|
+
raise ApiError("File format not allowed")
|
|
86
|
+
|
|
87
|
+
with open(request.file, "rb") as file:
|
|
88
|
+
logger.info(f"read {file_type} file successful !!!")
|
|
89
|
+
files = [("file", (request.file, file, file_type))]
|
|
90
|
+
response = self.__rest_reimport_scan.reimport_scan(request, files)
|
|
91
|
+
|
|
92
|
+
except Exception as e:
|
|
93
|
+
raise ApiError(e)
|
|
94
|
+
|
|
95
|
+
response.url = f"{request.host_defect_dojo}/engagement/{str(response.engagement_id)}/finding/open"
|
|
96
|
+
return response
|
|
97
|
+
|
|
98
|
+
def execute(self, request: ImportScanRequest) -> ImportScanRequest:
|
|
38
99
|
product_id = None
|
|
39
100
|
|
|
40
101
|
if (request.product_name or request.product_type_name) == "":
|
|
@@ -101,33 +162,8 @@ class ImportScanUserCase:
|
|
|
101
162
|
engagement = self.__rest_engagement.post_engagement(request.engagement_name, product_id)
|
|
102
163
|
logger.debug(f"Egagement created: {engagement.name} whit product id {engagement.product}")
|
|
103
164
|
|
|
104
|
-
if
|
|
105
|
-
|
|
106
|
-
|
|
165
|
+
if request.reimport_scan is True:
|
|
166
|
+
logger.debug("reimport scan flow")
|
|
167
|
+
return self.reimport_scan(request, api_scan_bool)
|
|
107
168
|
else:
|
|
108
|
-
|
|
109
|
-
file_type = self.get_file_type(request.file)
|
|
110
|
-
if file_type is None:
|
|
111
|
-
raise ApiError("File format not allowed")
|
|
112
|
-
|
|
113
|
-
with open(request.file, "rb") as file:
|
|
114
|
-
logger.info(f"read {file_type} file successful !!!")
|
|
115
|
-
files = [("file", (request.file, file, file_type))]
|
|
116
|
-
response = self.__rest_import_scan.import_scan(request, files)
|
|
117
|
-
|
|
118
|
-
except Exception as e:
|
|
119
|
-
raise ApiError(e)
|
|
120
|
-
|
|
121
|
-
response.url = f"{request.host_defect_dojo}/engagement/{str(response.engagement_id)}/finding/open"
|
|
122
|
-
return response
|
|
123
|
-
|
|
124
|
-
def get_file_type(self, path_file):
|
|
125
|
-
__, extension = os.path.splitext(path_file)
|
|
126
|
-
dict_rule_type_file = {
|
|
127
|
-
".csv": "text/csv",
|
|
128
|
-
".json": "apllication/json",
|
|
129
|
-
".xml": "aplication/xml",
|
|
130
|
-
".sarif": "aplication/json",
|
|
131
|
-
}
|
|
132
|
-
file_type = dict_rule_type_file.get(extension)
|
|
133
|
-
return file_type
|
|
169
|
+
return self.import_scan(request, api_scan_bool)
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/reimport_scan.py
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
from devsecops_engine_tools.engine_utilities.utils.api_error import ApiError
|
|
2
|
+
from devsecops_engine_tools.engine_utilities.defect_dojo.domain.request_objects.import_scan import ImportScanRequest
|
|
3
|
+
from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
|
|
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
|
+
|
|
11
|
+
class ReimportScanRestConsumer:
|
|
12
|
+
|
|
13
|
+
def __init__(self, request: ImportScanRequest, session: SessionManager):
|
|
14
|
+
self.__token = request.token_defect_dojo
|
|
15
|
+
self.__host = request.host_defect_dojo
|
|
16
|
+
self.__session = session._instance
|
|
17
|
+
|
|
18
|
+
def reimport_scan(self, request: ImportScanRequest, files) -> ImportScanRequest:
|
|
19
|
+
url = f"{self.__host}/api/v2/reimport-scan/"
|
|
20
|
+
logger.debug(f"URL: {url}")
|
|
21
|
+
payload = {
|
|
22
|
+
"scan_date": request.scan_date,
|
|
23
|
+
"minimum_severity": request.minimum_severity,
|
|
24
|
+
"active": request.active,
|
|
25
|
+
"verified": request.verified,
|
|
26
|
+
"scan_type": request.scan_type,
|
|
27
|
+
"endpoint_to_add": request.endpoint_to_add,
|
|
28
|
+
"file": files,
|
|
29
|
+
"product_type_name": request.product_type_name,
|
|
30
|
+
"product_name": request.product_name,
|
|
31
|
+
"engagement_name": request.engagement_name,
|
|
32
|
+
"engagement_end_date": request.engagement_end_date,
|
|
33
|
+
"source_code_management_uri": request.source_code_management_uri,
|
|
34
|
+
"auto_create_context": "true",
|
|
35
|
+
"deduplication_on_engagement": request.deduplication_on_engagement,
|
|
36
|
+
"lead": request.lead,
|
|
37
|
+
"push_to_jira": request.push_to_jira,
|
|
38
|
+
"environment": request.environment,
|
|
39
|
+
"build_id": request.build_id,
|
|
40
|
+
"branch_tag": request.branch_tag,
|
|
41
|
+
"commit_hash": request.commit_hash,
|
|
42
|
+
"api_scan_configuration": str(request.api_scan_configuration)
|
|
43
|
+
if request.api_scan_configuration != 0
|
|
44
|
+
else "",
|
|
45
|
+
"service": request.service,
|
|
46
|
+
"group_by": request.group_by,
|
|
47
|
+
"create_finding_groups_for_all_findings": request.create_finding_groups_for_all_findings,
|
|
48
|
+
"do_not_reactive"
|
|
49
|
+
"scan_type": request.scan_type,
|
|
50
|
+
"close_old_findings": request.close_old_findings,
|
|
51
|
+
"close_old_findings_product_scope": request.close_old_findings_product_scope,
|
|
52
|
+
"version": request.version,
|
|
53
|
+
"tags": request.tags,
|
|
54
|
+
"test_title": request.test_title,
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
headers = {"Authorization": f"Token {self.__token}"}
|
|
58
|
+
try:
|
|
59
|
+
response = self.__session.post(
|
|
60
|
+
url,
|
|
61
|
+
headers=headers,
|
|
62
|
+
data=payload,
|
|
63
|
+
files=files,
|
|
64
|
+
verify=VERIFY_CERTIFICATE
|
|
65
|
+
)
|
|
66
|
+
if response.status_code != 201:
|
|
67
|
+
logger.error(response.json())
|
|
68
|
+
raise ApiError(response.json())
|
|
69
|
+
logger.info(f"Sucessfull {response}")
|
|
70
|
+
response = ImportScanRequest.from_dict(response.json())
|
|
71
|
+
except Exception as e:
|
|
72
|
+
logger.error(f"from dict import Scan: {response.json()}")
|
|
73
|
+
raise ApiError(e)
|
|
74
|
+
return response
|
|
@@ -85,7 +85,7 @@ class ReportSonar:
|
|
|
85
85
|
else:
|
|
86
86
|
project_keys = self.sonar_gateway.get_project_keys(pipeline_name)
|
|
87
87
|
|
|
88
|
-
args["
|
|
88
|
+
args["module"] = "sonarqube"
|
|
89
89
|
vulnerability_manager = VulnerabilityManagement(
|
|
90
90
|
scan_type = "SONARQUBE",
|
|
91
91
|
input_core = input_core,
|
|
@@ -60,7 +60,7 @@ def init_report_sonar(
|
|
|
60
60
|
|
|
61
61
|
if args["send_metrics"] == "true":
|
|
62
62
|
MetricsManager(devops_platform_gateway, metrics_manager_gateway).process(
|
|
63
|
-
config_tool, input_core, {"
|
|
63
|
+
config_tool, input_core, {"module": "report_sonar"}, ""
|
|
64
64
|
)
|
|
65
65
|
else:
|
|
66
66
|
if not is_enabled:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
version = '1.
|
|
1
|
+
version = '1.38.1'
|
{devsecops_engine_tools-1.36.0.dist-info → devsecops_engine_tools-1.38.1.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.38.1
|
|
4
4
|
Summary: Tool for DevSecOps strategy
|
|
5
5
|
Home-page: https://github.com/bancolombia/devsecops-engine-tools
|
|
6
6
|
Author: Bancolombia DevSecOps Team
|
|
@@ -74,7 +74,7 @@ pip3 install devsecops-engine-tools
|
|
|
74
74
|
### Scan running - flags (CLI)
|
|
75
75
|
|
|
76
76
|
```bash
|
|
77
|
-
devsecops-engine-tools --platform_devops ["local","azure","github"] --remote_config_repo ["remote_config_repo"] --remote_config_branch ["remote_config_branch"] --
|
|
77
|
+
devsecops-engine-tools --platform_devops ["local","azure","github"] --remote_config_repo ["remote_config_repo"] --remote_config_branch ["remote_config_branch"] --module ["engine_iac", "engine_dast", "engine_secret", "engine_dependencies", "engine_container", "engine_risk", "engine_code"] --tool ["nuclei", "bearer", "checkov", "kics", "kubescape", "trufflehog", "gitleaks", "prisma", "trivy", "xray", "dependency_check"] --folder_path ["Folder path scan engine_iac, engine_code, engine_dependencies and engine_secret"] --platform ["k8s","cloudformation","docker", "openapi", "terraform"] --use_secrets_manager ["false", "true"] --use_vulnerability_management ["false", "true"] --send_metrics ["false", "true"] --token_cmdb ["token_cmdb"] --token_vulnerability_management ["token_vulnerability_management"] --token_engine_container ["token_engine_container"] --token_engine_dependencies ["token_engine_dependencies"] --token_external_checks ["token_external_checks"] --xray_mode ["scan", "audit","build-scan"] --image_to_scan ["image_to_scan"] --dast_file_path ["dast_file_path"]
|
|
78
78
|
```
|
|
79
79
|
|
|
80
80
|
### Structure Remote Config
|
|
@@ -184,7 +184,7 @@ $ set +a
|
|
|
184
184
|
|
|
185
185
|
|
|
186
186
|
```bash
|
|
187
|
-
devsecops-engine-tools --platform_devops local --remote_config_repo DevSecOps_Remote_Config --
|
|
187
|
+
devsecops-engine-tools --platform_devops local --remote_config_repo DevSecOps_Remote_Config --module engine_iac
|
|
188
188
|
|
|
189
189
|
```
|
|
190
190
|
|
|
@@ -198,13 +198,13 @@ devsecops-engine-tools --platform_devops local --remote_config_repo DevSecOps_Re
|
|
|
198
198
|
docker pull bancolombia/devsecops-engine-tools
|
|
199
199
|
```
|
|
200
200
|
```bash
|
|
201
|
-
docker run --rm -v ./folder_to_analyze:/folder_to_analyze bancolombia/devsecops-engine-tools:latest devsecops-engine-tools --platform_devops local --remote_config_repo docker_default_remote_config --
|
|
201
|
+
docker run --rm -v ./folder_to_analyze:/folder_to_analyze bancolombia/devsecops-engine-tools:latest devsecops-engine-tools --platform_devops local --remote_config_repo docker_default_remote_config --module engine_iac --folder_path /folder_to_analyze
|
|
202
202
|
```
|
|
203
203
|
|
|
204
204
|
The docker image have it own default remote config with basic configuration called docker_default_remote_config, but you can define your own config and pass it as volume
|
|
205
205
|
|
|
206
206
|
```bash
|
|
207
|
-
docker run --rm -v ./folder_to_analyze:/folder_to_analyze -v ./custom_remote_config:/custom_remote_config bancolombia/devsecops-engine-tools:latest devsecops-engine-tools --platform_devops local --remote_config_repo custom_remote_config --
|
|
207
|
+
docker run --rm -v ./folder_to_analyze:/folder_to_analyze -v ./custom_remote_config:/custom_remote_config bancolombia/devsecops-engine-tools:latest devsecops-engine-tools --platform_devops local --remote_config_repo custom_remote_config --module engine_iac --folder_path /folder_to_analyze
|
|
208
208
|
```
|
|
209
209
|
|
|
210
210
|
|
|
@@ -234,7 +234,7 @@ stages:
|
|
|
234
234
|
- script: |
|
|
235
235
|
# Install devsecops-engine-tools
|
|
236
236
|
pip3 install -q devsecops-engine-tools
|
|
237
|
-
devsecops-engine-tools --platform_devops azure --remote_config_repo remote_config --
|
|
237
|
+
devsecops-engine-tools --platform_devops azure --remote_config_repo remote_config --module engine_iac
|
|
238
238
|
displayName: "Engine Tools"
|
|
239
239
|
env:
|
|
240
240
|
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
|
|
@@ -285,7 +285,7 @@ jobs:
|
|
|
285
285
|
run: |
|
|
286
286
|
# Install devsecops-engine-tools
|
|
287
287
|
pip3 install -q devsecops-engine-tools
|
|
288
|
-
output=$(devsecops-engine-tools --platform_devops github --remote_config_repo remote_config --
|
|
288
|
+
output=$(devsecops-engine-tools --platform_devops github --remote_config_repo remote_config --module engine_iac)
|
|
289
289
|
echo "$output"
|
|
290
290
|
if [[ $output == *"✘Failed"* ]]; then
|
|
291
291
|
exit 1
|
|
@@ -1,9 +1,9 @@
|
|
|
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=k-dFbsHP_yN2nl0ULlETXy87V3IRDfb4Cjk-70sRNPc,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
|
|
6
|
-
devsecops_engine_tools/engine_core/src/applications/runner_engine_core.py,sha256=
|
|
6
|
+
devsecops_engine_tools/engine_core/src/applications/runner_engine_core.py,sha256=7KqgqvdENk5e0uFkMbRWx5fSmQK0MAnX2NOlj9R57eI,9429
|
|
7
7
|
devsecops_engine_tools/engine_core/src/deployment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
8
8
|
devsecops_engine_tools/engine_core/src/deployment/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
9
|
devsecops_engine_tools/engine_core/src/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -20,25 +20,25 @@ devsecops_engine_tools/engine_core/src/domain/model/threshold.py,sha256=TCBECuvo
|
|
|
20
20
|
devsecops_engine_tools/engine_core/src/domain/model/vulnerability_management.py,sha256=04ALQoTM4uoea9s505WCDw18J3Cvu6phf54ZTKODN64,552
|
|
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
|
-
devsecops_engine_tools/engine_core/src/domain/model/gateway/metrics_manager_gateway.py,sha256=
|
|
23
|
+
devsecops_engine_tools/engine_core/src/domain/model/gateway/metrics_manager_gateway.py,sha256=wApR5faZG5YqprWrDBMM9b4V7sBraJUxDmIUNGi0zqg,193
|
|
24
24
|
devsecops_engine_tools/engine_core/src/domain/model/gateway/printer_table_gateway.py,sha256=ROBsh7Lyu62a5RqZ4KgGQcwrBzbHRwxAJ9Rj3LoupQc,602
|
|
25
25
|
devsecops_engine_tools/engine_core/src/domain/model/gateway/sbom_manager.py,sha256=HpkUZYbmW72r4KDIPWwDmAOU_uawmKaexxmWheR9QAA,321
|
|
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=g9JXQeWTi1cC-PFcLMcVFnX0QARZnXqzx2k9d5nA-_A,16647
|
|
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=
|
|
32
|
-
devsecops_engine_tools/engine_core/src/domain/usecases/metrics_manager.py,sha256=
|
|
31
|
+
devsecops_engine_tools/engine_core/src/domain/usecases/handle_scan.py,sha256=iPv_wayjgbKvc0o2bZcFtBVXkT-uJRo1ynED--46ZCg,10736
|
|
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
|
|
35
35
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
36
|
-
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/s3_manager.py,sha256=
|
|
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
39
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/azure_devops.py,sha256=lNjYo83p3lovwfW4BeBtHQZckZl9m-9jlcIB-DesqhY,5316
|
|
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=UoNuHkx3UIeXjgJJk8YxtjT9Lq9LHt1N-fKNFKmkOdA,29572
|
|
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=cn9VGDaD9gUnJrLn9vEkQvfqYHIJftGE9ZACHEUOUxo,4132
|
|
44
44
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/printer_pretty_table/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -50,7 +50,7 @@ devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/runtime_lo
|
|
|
50
50
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/syft/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
51
51
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/syft/syft.py,sha256=hP5MitHTeZf3Ia-xwi5bUdIU5hIwbUNuDSzcsqlxG5c,4457
|
|
52
52
|
devsecops_engine_tools/engine_core/src/infrastructure/entry_points/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
53
|
-
devsecops_engine_tools/engine_core/src/infrastructure/entry_points/entry_point_core.py,sha256=
|
|
53
|
+
devsecops_engine_tools/engine_core/src/infrastructure/entry_points/entry_point_core.py,sha256=XzrvNHnVe7JEBFoi0je7iyddGAUSRZ5jxPjR77FDOss,2306
|
|
54
54
|
devsecops_engine_tools/engine_core/src/infrastructure/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
55
55
|
devsecops_engine_tools/engine_core/src/infrastructure/helpers/aws.py,sha256=wfy_PosHS0rrvkdiUYczxIcc8ZNwfqzWwqVxrmRTCBI,264
|
|
56
56
|
devsecops_engine_tools/engine_core/src/infrastructure/helpers/util.py,sha256=lDtaozInb5m2R8Y-oGQasroksCRw_N_Ltz7gLkSguX8,380
|
|
@@ -220,7 +220,7 @@ devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/helpers/__
|
|
|
220
220
|
devsecops_engine_tools/engine_sca/engine_dependencies/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
221
221
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
222
222
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/applications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
223
|
-
devsecops_engine_tools/engine_sca/engine_dependencies/src/applications/runner_dependencies_scan.py,sha256=
|
|
223
|
+
devsecops_engine_tools/engine_sca/engine_dependencies/src/applications/runner_dependencies_scan.py,sha256=0M43cNGZ_dU3rzOf7985N7uvkj-M2u3inAVZVgBcBfY,2047
|
|
224
224
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/deployment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
225
225
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/deployment/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
226
226
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -257,7 +257,7 @@ devsecops_engine_tools/engine_utilities/defect_dojo/hello_world.py,sha256=WDvgS2
|
|
|
257
257
|
devsecops_engine_tools/engine_utilities/defect_dojo/applications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
258
258
|
devsecops_engine_tools/engine_utilities/defect_dojo/applications/component.py,sha256=Y6vA1nRfMCoqJEceRBDQ_QLpIKASqB-t8V1yqao-eUQ,1175
|
|
259
259
|
devsecops_engine_tools/engine_utilities/defect_dojo/applications/connect.py,sha256=tRvNN-zVKBJbHMvfW97SCsZoyjGaKttcQhLOKrbjK9E,2079
|
|
260
|
-
devsecops_engine_tools/engine_utilities/defect_dojo/applications/defect_dojo.py,sha256=
|
|
260
|
+
devsecops_engine_tools/engine_utilities/defect_dojo/applications/defect_dojo.py,sha256=WKx_nBZV9bZj-Y9UAg-C4SeCapbRhQb7475lcuzlGVg,2943
|
|
261
261
|
devsecops_engine_tools/engine_utilities/defect_dojo/applications/engagement.py,sha256=sPTeQs6QHg07QNthqhY3caVbG54vDkd_E_KJpBvgTk4,878
|
|
262
262
|
devsecops_engine_tools/engine_utilities/defect_dojo/applications/finding.py,sha256=Cw5_TElo0D0Ec8X0lu-La2H9Pp1rsrmw-2Wv-0w_9oI,1451
|
|
263
263
|
devsecops_engine_tools/engine_utilities/defect_dojo/applications/finding_exclusion.py,sha256=StnDFV3vGhBffBEs-jfV9nMprzRucm5VJqtZFWKF3Fo,689
|
|
@@ -276,17 +276,17 @@ 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=bISidRCaCMTXZBMOUlvQWW1yCLMPKRU0MCq2Nk9P7ZY,5085
|
|
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=CvAxMDQBgqI7sCE8wGL7PYlyhpUQQJT6iU763EngYmc,7354
|
|
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=N31WBga-wu0inWOuikasSUP9ASemDJtrcHg31whCALM,8573
|
|
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
|
|
@@ -298,6 +298,7 @@ devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapt
|
|
|
298
298
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/import_scan.py,sha256=68Qd8o0oSxFG-3cRlX97BkX9muS6k64DGslGtX9sx6M,5897
|
|
299
299
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/product.py,sha256=DhiLPv8KyRhHBRhvF0ULhchhGAT8SQyn1ftiuou_aKw,2576
|
|
300
300
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/product_type.py,sha256=x-Gh2BEP6IZccS2m_DLB8xI6aEkS19J0ZUpP2mjY88o,3078
|
|
301
|
+
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/reimport_scan.py,sha256=6Wtg88p9WFdWjEAfNT2qjUcRGRg6wmruvuKcmajG3A8,3469
|
|
301
302
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/scan_configurations.py,sha256=YVIHiXPkJ8m1nOW7lG8LGbST16eMZoJwFQcrRRU7R6k,3089
|
|
302
303
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/settings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
303
304
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/settings/settings.py,sha256=5ni59GuAHT-avpWNc4FSedVpoFRTGRNzjQJkAXpWv6c,28
|
|
@@ -327,13 +328,13 @@ devsecops_engine_tools/engine_utilities/sonarqube/src/domain/model/__init__.py,s
|
|
|
327
328
|
devsecops_engine_tools/engine_utilities/sonarqube/src/domain/model/gateways/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
328
329
|
devsecops_engine_tools/engine_utilities/sonarqube/src/domain/model/gateways/sonar_gateway.py,sha256=mgycD3bzC_BYv7qT0tMLAro9hyNOvi4gJRzceYNF0t8,1339
|
|
329
330
|
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=
|
|
331
|
+
devsecops_engine_tools/engine_utilities/sonarqube/src/domain/usecases/report_sonar.py,sha256=c8GwlcR6NvLV1vuIAdXb4yAmsxdgHptH0HSCRWmW57g,9495
|
|
331
332
|
devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
332
333
|
devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
333
334
|
devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/driven_adapters/sonarqube/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
334
335
|
devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/driven_adapters/sonarqube/sonarqube_report.py,sha256=BpCLMgFQjytZc1HfZ5hXqX44E8T0JhLpAaNOVq5pFjo,4909
|
|
335
336
|
devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/entry_points/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
336
|
-
devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/entry_points/entry_point_report_sonar.py,sha256=
|
|
337
|
+
devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/entry_points/entry_point_report_sonar.py,sha256=wn692qaSzqrYRDL829m9AVzddJlQi9aPHfUTN9qejq8,2605
|
|
337
338
|
devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
338
339
|
devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/helpers/utils.py,sha256=SGOWrkzQrvOt9bRhhSfgiMzj1695e1W0B9ox9C1ihQI,294
|
|
339
340
|
devsecops_engine_tools/engine_utilities/ssh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -347,8 +348,8 @@ devsecops_engine_tools/engine_utilities/utils/name_conversion.py,sha256=ADJrRGax
|
|
|
347
348
|
devsecops_engine_tools/engine_utilities/utils/printers.py,sha256=amYAr9YQfYgR6jK9a2l26z3oovFPQ3FAKmhq6BKhEBA,623
|
|
348
349
|
devsecops_engine_tools/engine_utilities/utils/session_manager.py,sha256=Z0fdhB3r-dxU0nGSD9zW_B4r2Qol1rUnUCkhFR0U-HQ,487
|
|
349
350
|
devsecops_engine_tools/engine_utilities/utils/utils.py,sha256=XFap4yOK7ItLWsqbwDhvLd7NpDhs7i-UGJAMD6jjd7w,6687
|
|
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.
|
|
351
|
+
devsecops_engine_tools-1.38.1.dist-info/METADATA,sha256=DtSVZdHmHEFqDcRbyaKx3iG9fOPcH-q9hcvbKWhQnmw,11750
|
|
352
|
+
devsecops_engine_tools-1.38.1.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
|
|
353
|
+
devsecops_engine_tools-1.38.1.dist-info/entry_points.txt,sha256=MHCTFFs9bdNKo6YcWCcBW2_8X6yTisgLOlmVx-V8Rxc,276
|
|
354
|
+
devsecops_engine_tools-1.38.1.dist-info/top_level.txt,sha256=ge6y0X_xBAU1aG3EMWFtl9djbVyg5BxuSp2r2Lg6EQU,23
|
|
355
|
+
devsecops_engine_tools-1.38.1.dist-info/RECORD,,
|
|
File without changes
|
{devsecops_engine_tools-1.36.0.dist-info → devsecops_engine_tools-1.38.1.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{devsecops_engine_tools-1.36.0.dist-info → devsecops_engine_tools-1.38.1.dist-info}/top_level.txt
RENAMED
|
File without changes
|