devsecops-engine-tools 1.59.0__py3-none-any.whl → 1.60.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.

Files changed (41) hide show
  1. devsecops_engine_tools/engine_core/src/applications/runner_engine_core.py +15 -0
  2. devsecops_engine_tools/engine_core/src/domain/usecases/handle_risk.py +6 -3
  3. devsecops_engine_tools/engine_core/src/domain/usecases/handle_scan.py +8 -0
  4. devsecops_engine_tools/engine_core/src/infrastructure/entry_points/entry_point_core.py +4 -1
  5. devsecops_engine_tools/engine_dast/src/applications/runner_dast_scan.py +2 -2
  6. devsecops_engine_tools/engine_dast/src/domain/usecases/dast_scan.py +4 -2
  7. devsecops_engine_tools/engine_dast/src/infrastructure/entry_points/entry_point_dast.py +2 -1
  8. devsecops_engine_tools/engine_risk/src/applications/runner_engine_risk.py +2 -0
  9. devsecops_engine_tools/engine_risk/src/domain/usecases/get_exclusions.py +4 -2
  10. devsecops_engine_tools/engine_risk/src/infrastructure/entry_points/entry_point_risk.py +4 -2
  11. devsecops_engine_tools/engine_sast/engine_code/src/applications/runner_engine_code.py +2 -1
  12. devsecops_engine_tools/engine_sast/engine_code/src/domain/usecases/code_scan.py +4 -2
  13. devsecops_engine_tools/engine_sast/engine_code/src/infrastructure/entry_points/entry_point_tool.py +2 -2
  14. devsecops_engine_tools/engine_sast/engine_iac/src/applications/runner_iac_scan.py +2 -1
  15. devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/context_iac.py +2 -1
  16. devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/gateways/tool_gateway.py +4 -5
  17. devsecops_engine_tools/engine_sast/engine_iac/src/domain/usecases/iac_scan.py +18 -15
  18. devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/checkov_deserealizator.py +11 -8
  19. devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/checkov_tool.py +230 -206
  20. devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/kics/kics_tool.py +123 -85
  21. devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/kubescape/kubescape_tool.py +80 -65
  22. devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/entry_points/entry_point_tool.py +2 -2
  23. devsecops_engine_tools/engine_sast/engine_secret/src/applications/runner_secret_scan.py +2 -1
  24. devsecops_engine_tools/engine_sast/engine_secret/src/domain/usecases/secret_scan.py +3 -1
  25. devsecops_engine_tools/engine_sast/engine_secret/src/domain/usecases/set_input_core.py +3 -1
  26. devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/entry_points/entry_point_tool.py +4 -4
  27. devsecops_engine_tools/engine_sca/engine_container/src/applications/runner_container_scan.py +2 -1
  28. devsecops_engine_tools/engine_sca/engine_container/src/domain/model/context_container.py +2 -1
  29. devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/deserealizator_gateway.py +7 -2
  30. devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/container_sca_scan.py +53 -52
  31. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/prisma_deserialize_output.py +3 -3
  32. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/trivy_deserialize_output.py +50 -31
  33. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/entry_points/entry_point_tool.py +12 -7
  34. devsecops_engine_tools/engine_sca/engine_dependencies/src/applications/runner_dependencies_scan.py +2 -1
  35. devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/entry_points/entry_point_tool.py +3 -2
  36. devsecops_engine_tools/version.py +1 -1
  37. {devsecops_engine_tools-1.59.0.dist-info → devsecops_engine_tools-1.60.1.dist-info}/METADATA +7 -7
  38. {devsecops_engine_tools-1.59.0.dist-info → devsecops_engine_tools-1.60.1.dist-info}/RECORD +41 -41
  39. {devsecops_engine_tools-1.59.0.dist-info → devsecops_engine_tools-1.60.1.dist-info}/WHEEL +0 -0
  40. {devsecops_engine_tools-1.59.0.dist-info → devsecops_engine_tools-1.60.1.dist-info}/entry_points.txt +0 -0
  41. {devsecops_engine_tools-1.59.0.dist-info → devsecops_engine_tools-1.60.1.dist-info}/top_level.txt +0 -0
@@ -38,52 +38,6 @@ class ContainerScaScan:
38
38
  self.pipeline_name = pipeline_name
39
39
  self.context = context
40
40
 
41
- def get_image(self, image_to_scan):
42
- """
43
- Process the list of images.
44
-
45
- Returns:
46
- list: List of processed images.
47
- """
48
- return self.tool_images.list_images(image_to_scan)
49
-
50
- def get_base_image(self, matching_image):
51
- """
52
- Process the base image.
53
-
54
- Returns:
55
- String: base image.
56
- """
57
- return self.tool_images.get_base_image(matching_image)
58
-
59
- def get_images_already_scanned(self):
60
- """
61
- Create images scanned file if it does not exist and get the images that have already been scanned.
62
- """
63
- scanned_images_file = os.path.join(os.getcwd(), "scanned_images.txt")
64
- if not os.path.exists(scanned_images_file):
65
- open(scanned_images_file, "w").close()
66
- with open(scanned_images_file, "r") as file:
67
- images_scanned = file.read().splitlines()
68
- return images_scanned
69
-
70
- def set_image_scanned(self, result_file):
71
- """
72
- Write in scanned_images.txt the result file
73
- """
74
- with open("scanned_images.txt", "a") as file:
75
- file.write(result_file + "\n")
76
-
77
- def validate_base_image_date(self, matching_image, referenced_date):
78
- """
79
- Process the base image date validation.
80
-
81
- Returns:
82
- string: base image date.
83
- """
84
- return self.tool_images.validate_base_image_date(
85
- matching_image, referenced_date
86
- )
87
41
 
88
42
  def process(self):
89
43
  """
@@ -94,15 +48,15 @@ class ContainerScaScan:
94
48
  """
95
49
  base_image = None
96
50
  image_scanned = None
97
- matching_image = self.get_image(self.image_to_scan)
51
+ matching_image = self._get_image(self.image_to_scan)
98
52
  if self.remote_config["GET_IMAGE_BASE"]:
99
- base_image = self.get_base_image(matching_image)
53
+ base_image = self._get_base_image(matching_image)
100
54
  if self.remote_config["VALIDATE_BASE_IMAGE_DATE"][
101
55
  "ENABLED"
102
56
  ] and not self.exclusions.get(self.pipeline_name, {}).get(
103
57
  "VALIDATE_BASE_IMAGE_DATE"
104
58
  ):
105
- self.validate_base_image_date(
59
+ self._validate_base_image_date(
106
60
  matching_image,
107
61
  self.remote_config["VALIDATE_BASE_IMAGE_DATE"]["REFERENCE_IMAGE_DATE"],
108
62
  )
@@ -114,7 +68,7 @@ class ContainerScaScan:
114
68
  if matching_image:
115
69
  image_name = matching_image.tags[0]
116
70
  result_file = image_name.replace("/", "_") + "_scan_result.json"
117
- if image_name in self.get_images_already_scanned():
71
+ if image_name in self._get_images_already_scanned():
118
72
  print(f"The image {image_name} has already been scanned previously.")
119
73
  return image_scanned, base_image, sbom_components
120
74
  image_scanned, sbom_components = self.tool_run.run_tool_container_sca(
@@ -127,7 +81,7 @@ class ContainerScaScan:
127
81
  self.exclusions,
128
82
  generate_sbom,
129
83
  )
130
- self.set_image_scanned(image_name)
84
+ self._set_image_scanned(image_name)
131
85
  else:
132
86
  print(f"'Not image found for {self.image_to_scan}'. Tool skipped.")
133
87
  return image_scanned, base_image, sbom_components
@@ -142,5 +96,52 @@ class ContainerScaScan:
142
96
  context_flag = self.context
143
97
  if context_flag == "true":
144
98
  self.tool_deseralizator.get_container_context_from_results(image_scanned)
145
-
99
+
146
100
  return self.tool_deseralizator.get_list_findings(image_scanned)
101
+
102
+ def _get_image(self, image_to_scan):
103
+ """
104
+ Process the list of images.
105
+
106
+ Returns:
107
+ list: List of processed images.
108
+ """
109
+ return self.tool_images.list_images(image_to_scan)
110
+
111
+ def _get_base_image(self, matching_image):
112
+ """
113
+ Process the base image.
114
+
115
+ Returns:
116
+ String: base image.
117
+ """
118
+ return self.tool_images.get_base_image(matching_image)
119
+
120
+ def _validate_base_image_date(self, matching_image, referenced_date):
121
+ """
122
+ Process the base image date validation.
123
+
124
+ Returns:
125
+ string: base image date.
126
+ """
127
+ return self.tool_images.validate_base_image_date(
128
+ matching_image, referenced_date
129
+ )
130
+
131
+ def _get_images_already_scanned(self):
132
+ """
133
+ Create images scanned file if it does not exist and get the images that have already been scanned.
134
+ """
135
+ scanned_images_file = os.path.join(os.getcwd(), "scanned_images.txt")
136
+ if not os.path.exists(scanned_images_file):
137
+ open(scanned_images_file, "w").close()
138
+ with open(scanned_images_file, "r") as file:
139
+ images_scanned = file.read().splitlines()
140
+ return images_scanned
141
+
142
+ def _set_image_scanned(self, result_file):
143
+ """
144
+ Write in scanned_images.txt the result file
145
+ """
146
+ with open("scanned_images.txt", "a") as file:
147
+ file.write(result_file + "\n")
@@ -30,7 +30,7 @@ class PrismaDeserealizator(DeseralizatorGateway):
30
30
  image_object = file.read()
31
31
 
32
32
  json_data = json.loads(image_object)
33
- console_url = json_data.get("consoleURL",False)
33
+ console_url = json_data.get("consoleURL", False)
34
34
  if console_url:
35
35
  print(f"Console URL: {console_url}")
36
36
  vulnerabilities_data = (
@@ -67,7 +67,7 @@ class PrismaDeserealizator(DeseralizatorGateway):
67
67
  list_open_vulnerabilities.extend(vulnerabilities)
68
68
 
69
69
  return list_open_vulnerabilities
70
-
70
+
71
71
  def get_container_context_from_results(self, image_scanned):
72
- #TODO: Implement this method
72
+ # TODO: Implement this method
73
73
  pass
@@ -1,4 +1,6 @@
1
- from devsecops_engine_tools.engine_sca.engine_container.src.domain.model.context_container import ContextContainer
1
+ from devsecops_engine_tools.engine_sca.engine_container.src.domain.model.context_container import (
2
+ ContextContainer,
3
+ )
2
4
  from devsecops_engine_tools.engine_sca.engine_container.src.domain.model.gateways.deserealizator_gateway import (
3
5
  DeseralizatorGateway,
4
6
  )
@@ -10,20 +12,9 @@ from dataclasses import asdict, dataclass
10
12
  import json
11
13
  from datetime import datetime, timezone
12
14
 
15
+
13
16
  @dataclass
14
17
  class TrivyDeserializator(DeseralizatorGateway):
15
- def check_date_format(self, vul):
16
- try:
17
- published_date_cve=datetime.strptime(
18
- vul.get("PublishedDate"),
19
- "%Y-%m-%dT%H:%M:%S.%fZ"
20
- ).replace(tzinfo=timezone.utc).isoformat()
21
- except:
22
- published_date_cve=datetime.strptime(
23
- vul.get("PublishedDate"),
24
- "%Y-%m-%dT%H:%M:%SZ"
25
- ).replace(tzinfo=timezone.utc).isoformat()
26
- return published_date_cve
27
18
 
28
19
  def get_list_findings(self, image_scanned) -> "list[Finding]":
29
20
  list_open_vulnerabilities = []
@@ -34,23 +25,23 @@ class TrivyDeserializator(DeseralizatorGateway):
34
25
  vulnerabilities = [
35
26
  Finding(
36
27
  id=vul.get("VulnerabilityID", ""),
37
- cvss=str(next(
38
- (
39
- v["V3Score"]
40
- for v in vul["CVSS"].values()
41
- if "V3Score" in v
42
- ),
43
- None,
44
- )),
28
+ cvss=str(
29
+ next(
30
+ (
31
+ v["V3Score"]
32
+ for v in vul["CVSS"].values()
33
+ if "V3Score" in v
34
+ ),
35
+ None,
36
+ )
37
+ ),
45
38
  where=vul.get("PkgName", "")
46
39
  + " "
47
40
  + vul.get("InstalledVersion", ""),
48
41
  description=vul.get("Description", "").replace("\n", "")[:150],
49
42
  severity=vul.get("Severity", "").lower(),
50
- identification_date=datetime.now().strftime(
51
- "%Y-%m-%dT%H:%M:%S%z"
52
- ),
53
- published_date_cve=self.check_date_format(vul),
43
+ identification_date=datetime.now().strftime("%Y-%m-%dT%H:%M:%S%z"),
44
+ published_date_cve=self._check_date_format(vul),
54
45
  module="engine_container",
55
46
  category=Category.VULNERABILITY,
56
47
  requirements=vul.get("FixedVersion") or vul.get("Status", ""),
@@ -61,8 +52,10 @@ class TrivyDeserializator(DeseralizatorGateway):
61
52
  ]
62
53
  list_open_vulnerabilities.extend(vulnerabilities)
63
54
  return list_open_vulnerabilities
64
-
65
- def get_container_context_from_results(self, image_scanned) -> "list[ContextContainer]":
55
+
56
+ def get_container_context_from_results(
57
+ self, image_scanned
58
+ ) -> "list[ContextContainer]":
66
59
  context_container_list = []
67
60
 
68
61
  with open(image_scanned, "rb") as file:
@@ -96,9 +89,11 @@ class TrivyDeserializator(DeseralizatorGateway):
96
89
  description=vul.get("Description", "unknown").replace("\n", ""),
97
90
  os_type=result.get("Type", "unknown"),
98
91
  layer_digest=vul.get("Layer", {}).get("DiffID", "unknown"),
99
- published_date=self.check_date_format(vul)
100
- if vul.get("PublishedDate")
101
- else None,
92
+ published_date=(
93
+ self._check_date_format(vul)
94
+ if vul.get("PublishedDate")
95
+ else None
96
+ ),
102
97
  last_modified_date=vul.get("LastModifiedDate", "unknown"),
103
98
  references=vul.get("References", "unknown"),
104
99
  source_tool="Trivy",
@@ -106,5 +101,29 @@ class TrivyDeserializator(DeseralizatorGateway):
106
101
  context_container_list.append(context_container)
107
102
 
108
103
  print("===== BEGIN CONTEXT OUTPUT =====")
109
- print(json.dumps({"container_context": [asdict(context) for context in context_container_list]}, indent=2))
104
+ print(
105
+ json.dumps(
106
+ {
107
+ "container_context": [
108
+ asdict(context) for context in context_container_list
109
+ ]
110
+ },
111
+ indent=2,
112
+ )
113
+ )
110
114
  print("===== END CONTEXT OUTPUT =====")
115
+
116
+ def _check_date_format(self, vul):
117
+ try:
118
+ published_date_cve = (
119
+ datetime.strptime(vul.get("PublishedDate"), "%Y-%m-%dT%H:%M:%S.%fZ")
120
+ .replace(tzinfo=timezone.utc)
121
+ .isoformat()
122
+ )
123
+ except:
124
+ published_date_cve = (
125
+ datetime.strptime(vul.get("PublishedDate"), "%Y-%m-%dT%H:%M:%SZ")
126
+ .replace(tzinfo=timezone.utc)
127
+ .isoformat()
128
+ )
129
+ return published_date_cve
@@ -16,17 +16,22 @@ logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
16
16
  def init_engine_sca_rm(
17
17
  tool_run,
18
18
  tool_remote,
19
+ remote_config_source_gateway,
19
20
  tool_images,
20
21
  tool_deseralizator,
21
22
  dict_args,
22
23
  secret_tool,
23
24
  tool,
24
25
  ):
25
- remote_config = tool_remote.get_remote_config(
26
- dict_args["remote_config_repo"], "engine_sca/engine_container/ConfigTool.json", dict_args["remote_config_branch"]
26
+ remote_config = remote_config_source_gateway.get_remote_config(
27
+ dict_args["remote_config_repo"],
28
+ "engine_sca/engine_container/ConfigTool.json",
29
+ dict_args["remote_config_branch"],
27
30
  )
28
- exclusions = tool_remote.get_remote_config(
29
- dict_args["remote_config_repo"], "engine_sca/engine_container/Exclusions.json", dict_args["remote_config_branch"]
31
+ exclusions = remote_config_source_gateway.get_remote_config(
32
+ dict_args["remote_config_repo"],
33
+ "engine_sca/engine_container/Exclusions.json",
34
+ dict_args["remote_config_branch"],
30
35
  )
31
36
  pipeline_name = tool_remote.get_variable("pipeline_name")
32
37
  handle_remote_config_patterns = HandleRemoteConfigPatterns(
@@ -54,7 +59,7 @@ def init_engine_sca_rm(
54
59
  image_to_scan,
55
60
  exclusions,
56
61
  pipeline_name,
57
- context = dict_args["context"]
62
+ context=dict_args["context"],
58
63
  )
59
64
  image_scanned, base_image, sbom_components = container_sca_scan.process()
60
65
  if image_scanned:
@@ -63,7 +68,7 @@ def init_engine_sca_rm(
63
68
  print("Tool skipped by DevSecOps policy")
64
69
  dict_args["send_metrics"] = "false"
65
70
  dict_args["use_vulnerability_management"] = "false"
66
-
67
- core_input = input_core.set_input_core(image_scanned,base_image)
71
+
72
+ core_input = input_core.set_input_core(image_scanned, base_image)
68
73
 
69
74
  return deseralized, core_input, sbom_components
@@ -16,7 +16,7 @@ from devsecops_engine_tools.engine_sca.engine_dependencies.src.infrastructure.en
16
16
 
17
17
 
18
18
  def runner_engine_dependencies(
19
- dict_args, config_tool, secret_tool, devops_platform_gateway, sbom_tool_gateway
19
+ dict_args, config_tool, secret_tool, devops_platform_gateway, remote_config_source_gateway, sbom_tool_gateway
20
20
  ):
21
21
  try:
22
22
  tools_mapping = {
@@ -40,6 +40,7 @@ def runner_engine_dependencies(
40
40
  return init_engine_dependencies(
41
41
  tool_run,
42
42
  devops_platform_gateway,
43
+ remote_config_source_gateway,
43
44
  tool_deserializator,
44
45
  dict_args,
45
46
  secret_tool,
@@ -25,18 +25,19 @@ logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
25
25
  def init_engine_dependencies(
26
26
  tool_run,
27
27
  tool_remote: DevopsPlatformGateway,
28
+ remote_config_source_gateway: DevopsPlatformGateway,
28
29
  tool_deserializator,
29
30
  dict_args,
30
31
  secret_tool,
31
32
  config_tool,
32
33
  tool_sbom: SbomManagerGateway,
33
34
  ):
34
- remote_config = tool_remote.get_remote_config(
35
+ remote_config = remote_config_source_gateway.get_remote_config(
35
36
  dict_args["remote_config_repo"],
36
37
  "engine_sca/engine_dependencies/ConfigTool.json",
37
38
  dict_args["remote_config_branch"]
38
39
  )
39
- exclusions = tool_remote.get_remote_config(
40
+ exclusions = remote_config_source_gateway.get_remote_config(
40
41
  dict_args["remote_config_repo"],
41
42
  "engine_sca/engine_dependencies/Exclusions.json",
42
43
  dict_args["remote_config_branch"]
@@ -1 +1 @@
1
- version = '1.59.0'
1
+ version = '1.60.1'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: devsecops-engine-tools
3
- Version: 1.59.0
3
+ Version: 1.60.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
@@ -76,7 +76,7 @@ pip3 install devsecops-engine-tools
76
76
  ### Scan running - flags (CLI)
77
77
 
78
78
  ```bash
79
- 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"]
79
+ devsecops-engine-tools --platform_devops ["local","azure","github"] --remote_config_source ["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"]
80
80
  ```
81
81
 
82
82
  ### Structure Remote Config
@@ -186,7 +186,7 @@ $ set +a
186
186
 
187
187
 
188
188
  ```bash
189
- devsecops-engine-tools --platform_devops local --remote_config_repo DevSecOps_Remote_Config --module engine_iac
189
+ devsecops-engine-tools --platform_devops local --remote_config_source local --remote_config_repo DevSecOps_Remote_Config --module engine_iac
190
190
 
191
191
  ```
192
192
 
@@ -200,13 +200,13 @@ devsecops-engine-tools --platform_devops local --remote_config_repo DevSecOps_Re
200
200
  docker pull bancolombia/devsecops-engine-tools
201
201
  ```
202
202
  ```bash
203
- 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
203
+ docker run --rm -v ./folder_to_analyze:/folder_to_analyze bancolombia/devsecops-engine-tools:latest devsecops-engine-tools --platform_devops local --remote_config_source local --remote_config_repo docker_default_remote_config --module engine_iac --folder_path /folder_to_analyze
204
204
  ```
205
205
 
206
206
  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
207
207
 
208
208
  ```bash
209
- 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
209
+ 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_source local --remote_config_repo custom_remote_config --module engine_iac --folder_path /folder_to_analyze
210
210
  ```
211
211
 
212
212
 
@@ -236,7 +236,7 @@ stages:
236
236
  - script: |
237
237
  # Install devsecops-engine-tools
238
238
  pip3 install -q devsecops-engine-tools
239
- devsecops-engine-tools --platform_devops azure --remote_config_repo remote_config --module engine_iac
239
+ devsecops-engine-tools --platform_devops azure --remote_config_source azure --remote_config_repo remote_config --module engine_iac
240
240
  displayName: "Engine Tools"
241
241
  env:
242
242
  SYSTEM_ACCESSTOKEN: $(System.AccessToken)
@@ -287,7 +287,7 @@ jobs:
287
287
  run: |
288
288
  # Install devsecops-engine-tools
289
289
  pip3 install -q devsecops-engine-tools
290
- output=$(devsecops-engine-tools --platform_devops github --remote_config_repo remote_config --module engine_iac)
290
+ output=$(devsecops-engine-tools --platform_devops github --remote_config_source github --remote_config_repo remote_config --module engine_iac)
291
291
  echo "$output"
292
292
  if [[ $output == *"✘Failed"* ]]; then
293
293
  exit 1