devsecops-engine-tools 1.6.7__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 (231) hide show
  1. devsecops_engine_tools/__init__.py +0 -0
  2. devsecops_engine_tools/engine_core/__init__.py +0 -0
  3. devsecops_engine_tools/engine_core/src/__init__.py +0 -0
  4. devsecops_engine_tools/engine_core/src/applications/__init__.py +0 -0
  5. devsecops_engine_tools/engine_core/src/applications/runner_engine_core.py +124 -0
  6. devsecops_engine_tools/engine_core/src/deployment/__init__.py +0 -0
  7. devsecops_engine_tools/engine_core/src/deployment/infrastructure/__init__.py +0 -0
  8. devsecops_engine_tools/engine_core/src/domain/__init__.py +0 -0
  9. devsecops_engine_tools/engine_core/src/domain/model/__init__.py +0 -0
  10. devsecops_engine_tools/engine_core/src/domain/model/customs_exceptions.py +9 -0
  11. devsecops_engine_tools/engine_core/src/domain/model/exclusions.py +14 -0
  12. devsecops_engine_tools/engine_core/src/domain/model/finding.py +20 -0
  13. devsecops_engine_tools/engine_core/src/domain/model/gateway/__init__.py +0 -0
  14. devsecops_engine_tools/engine_core/src/domain/model/gateway/devops_platform_gateway.py +27 -0
  15. devsecops_engine_tools/engine_core/src/domain/model/gateway/metrics_manager_gateway.py +7 -0
  16. devsecops_engine_tools/engine_core/src/domain/model/gateway/printer_table_gateway.py +13 -0
  17. devsecops_engine_tools/engine_core/src/domain/model/gateway/secrets_manager_gateway.py +7 -0
  18. devsecops_engine_tools/engine_core/src/domain/model/gateway/vulnerability_management_gateway.py +17 -0
  19. devsecops_engine_tools/engine_core/src/domain/model/input_core.py +12 -0
  20. devsecops_engine_tools/engine_core/src/domain/model/level_compliance.py +3 -0
  21. devsecops_engine_tools/engine_core/src/domain/model/level_vulnerability.py +7 -0
  22. devsecops_engine_tools/engine_core/src/domain/model/threshold.py +12 -0
  23. devsecops_engine_tools/engine_core/src/domain/model/vulnerability_management.py +20 -0
  24. devsecops_engine_tools/engine_core/src/domain/usecases/__init__.py +0 -0
  25. devsecops_engine_tools/engine_core/src/domain/usecases/break_build.py +375 -0
  26. devsecops_engine_tools/engine_core/src/domain/usecases/handle_scan.py +148 -0
  27. devsecops_engine_tools/engine_core/src/domain/usecases/metrics_manager.py +59 -0
  28. devsecops_engine_tools/engine_core/src/infrastructure/__init__.py +0 -0
  29. devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/__init__.py +0 -0
  30. devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/__init__.py +0 -0
  31. devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/s3_manager.py +52 -0
  32. devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/secrets_manager.py +40 -0
  33. devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/__init__.py +0 -0
  34. devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/azure_devops.py +103 -0
  35. devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/__init__.py +0 -0
  36. devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py +215 -0
  37. devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/printer_pretty_table/__init__.py +0 -0
  38. devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/printer_pretty_table/printer_pretty_table.py +84 -0
  39. devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/runtime_local/__init__.py +0 -0
  40. devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/runtime_local/runtime_local.py +71 -0
  41. devsecops_engine_tools/engine_core/src/infrastructure/entry_points/__init__.py +0 -0
  42. devsecops_engine_tools/engine_core/src/infrastructure/entry_points/entry_point_core.py +50 -0
  43. devsecops_engine_tools/engine_core/src/infrastructure/helpers/__init__.py +0 -0
  44. devsecops_engine_tools/engine_core/src/infrastructure/helpers/aws.py +9 -0
  45. devsecops_engine_tools/engine_core/src/infrastructure/helpers/util.py +15 -0
  46. devsecops_engine_tools/engine_dast/__init__.py +0 -0
  47. devsecops_engine_tools/engine_dast/src/__init__.py +0 -0
  48. devsecops_engine_tools/engine_dast/src/applications/__init__.py +0 -0
  49. devsecops_engine_tools/engine_dast/src/deployment/__init__.py +0 -0
  50. devsecops_engine_tools/engine_dast/src/deployment/infrastructure/__init__.py +0 -0
  51. devsecops_engine_tools/engine_dast/src/domain/__init__.py +0 -0
  52. devsecops_engine_tools/engine_dast/src/domain/model/__init__.py +0 -0
  53. devsecops_engine_tools/engine_dast/src/domain/usecases/__init__.py +0 -0
  54. devsecops_engine_tools/engine_dast/src/infrastructure/__init__.py +0 -0
  55. devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/__init__.py +0 -0
  56. devsecops_engine_tools/engine_dast/src/infrastructure/entry_points/__init__.py +0 -0
  57. devsecops_engine_tools/engine_dast/src/infrastructure/helpers/__init__.py +0 -0
  58. devsecops_engine_tools/engine_sast/__init__.py +0 -0
  59. devsecops_engine_tools/engine_sast/engine_iac/__init__.py +0 -0
  60. devsecops_engine_tools/engine_sast/engine_iac/src/__init__.py +0 -0
  61. devsecops_engine_tools/engine_sast/engine_iac/src/applications/__init__.py +0 -0
  62. devsecops_engine_tools/engine_sast/engine_iac/src/applications/runner_iac_scan.py +30 -0
  63. devsecops_engine_tools/engine_sast/engine_iac/src/deployment/__init__.py +0 -0
  64. devsecops_engine_tools/engine_sast/engine_iac/src/deployment/infrastructure/__init__.py +0 -0
  65. devsecops_engine_tools/engine_sast/engine_iac/src/domain/__init__.py +0 -0
  66. devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/__init__.py +0 -0
  67. devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/config_tool.py +24 -0
  68. devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/gateways/__init__.py +0 -0
  69. devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/gateways/tool_gateway.py +6 -0
  70. devsecops_engine_tools/engine_sast/engine_iac/src/domain/usecases/__init__.py +0 -0
  71. devsecops_engine_tools/engine_sast/engine_iac/src/domain/usecases/iac_scan.py +130 -0
  72. devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/__init__.py +0 -0
  73. devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/__init__.py +0 -0
  74. devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/__init__.py +0 -0
  75. devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/checkov_config.py +135 -0
  76. devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/checkov_deserealizator.py +35 -0
  77. devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/checkov_tool.py +195 -0
  78. devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/entry_points/__init__.py +0 -0
  79. devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/entry_points/entry_point_tool.py +6 -0
  80. devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/helpers/__init__.py +0 -0
  81. devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/helpers/file_generator_tool.py +74 -0
  82. devsecops_engine_tools/engine_sast/engine_secret/__init__.py +0 -0
  83. devsecops_engine_tools/engine_sast/engine_secret/src/__init__.py +0 -0
  84. devsecops_engine_tools/engine_sast/engine_secret/src/applications/__init__.py +0 -0
  85. devsecops_engine_tools/engine_sast/engine_secret/src/applications/runner_secret_scan.py +34 -0
  86. devsecops_engine_tools/engine_sast/engine_secret/src/deployment/__init__.py +0 -0
  87. devsecops_engine_tools/engine_sast/engine_secret/src/deployment/infrastructure/__init__.py +0 -0
  88. devsecops_engine_tools/engine_sast/engine_secret/src/domain/__init__.py +0 -0
  89. devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/DeserializeConfigTool.py +11 -0
  90. devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/__init__.py +0 -0
  91. devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/gateway/__init__.py +0 -0
  92. devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/gateway/gateway_deserealizator.py +11 -0
  93. devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/gateway/git_gateway.py +15 -0
  94. devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/gateway/tool_gateway.py +16 -0
  95. devsecops_engine_tools/engine_sast/engine_secret/src/domain/usecases/__init__.py +0 -0
  96. devsecops_engine_tools/engine_sast/engine_secret/src/domain/usecases/secret_scan.py +72 -0
  97. devsecops_engine_tools/engine_sast/engine_secret/src/domain/usecases/set_input_core.py +73 -0
  98. devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/__init__.py +0 -0
  99. devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/__init__.py +0 -0
  100. devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/git_cli/__init__.py +0 -0
  101. devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/git_cli/git_run.py +60 -0
  102. devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/trufflehog/__init__.py +0 -0
  103. devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/trufflehog/trufflehog_deserealizator.py +39 -0
  104. devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/trufflehog/trufflehog_run.py +104 -0
  105. devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/entry_points/__init__.py +0 -0
  106. devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/entry_points/entry_point_tool.py +11 -0
  107. devsecops_engine_tools/engine_sca/__init__.py +0 -0
  108. devsecops_engine_tools/engine_sca/engine_container/__init__.py +0 -0
  109. devsecops_engine_tools/engine_sca/engine_container/src/__init__.py +0 -0
  110. devsecops_engine_tools/engine_sca/engine_container/src/applications/__init__.py +0 -0
  111. devsecops_engine_tools/engine_sca/engine_container/src/applications/runner_container_scan.py +45 -0
  112. devsecops_engine_tools/engine_sca/engine_container/src/deployment/__init__.py +0 -0
  113. devsecops_engine_tools/engine_sca/engine_container/src/deployment/infrastructure/__init__.py +0 -0
  114. devsecops_engine_tools/engine_sca/engine_container/src/domain/__init__.py +0 -0
  115. devsecops_engine_tools/engine_sca/engine_container/src/domain/model/__init__.py +0 -0
  116. devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/__init__.py +0 -0
  117. devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/deserealizator_gateway.py +8 -0
  118. devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/images_gateway.py +7 -0
  119. devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/tool_gateway.py +7 -0
  120. devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/__init__.py +0 -0
  121. devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/container_sca_scan.py +82 -0
  122. devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/handle_remote_config_patterns.py +67 -0
  123. devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/set_input_core.py +76 -0
  124. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/__init__.py +0 -0
  125. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/__init__.py +0 -0
  126. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/docker/__init__.py +0 -0
  127. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/docker/docker_images.py +22 -0
  128. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/__init__.py +0 -0
  129. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/prisma_cloud_manager_scan.py +123 -0
  130. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/prisma_deserialize_output.py +62 -0
  131. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/__init__.py +0 -0
  132. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/trivy_deserialize_output.py +48 -0
  133. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/trivy_manager_scan.py +114 -0
  134. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/entry_points/__init__.py +0 -0
  135. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/entry_points/entry_point_tool.py +40 -0
  136. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/helpers/__init__.py +0 -0
  137. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/helpers/images_scanned.py +16 -0
  138. devsecops_engine_tools/engine_sca/engine_dependencies/__init__.py +0 -0
  139. devsecops_engine_tools/engine_sca/engine_dependencies/src/__init__.py +0 -0
  140. devsecops_engine_tools/engine_sca/engine_dependencies/src/applications/__init__.py +0 -0
  141. devsecops_engine_tools/engine_sca/engine_dependencies/src/applications/runner_dependencies_scan.py +32 -0
  142. devsecops_engine_tools/engine_sca/engine_dependencies/src/deployment/__init__.py +0 -0
  143. devsecops_engine_tools/engine_sca/engine_dependencies/src/deployment/infrastructure/__init__.py +0 -0
  144. devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/__init__.py +0 -0
  145. devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/__init__.py +0 -0
  146. devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/gateways/__init__.py +0 -0
  147. devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/gateways/deserializator_gateway.py +8 -0
  148. devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/gateways/tool_gateway.py +9 -0
  149. devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/__init__.py +0 -0
  150. devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/dependencies_sca_scan.py +44 -0
  151. devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/find_artifacts.py +95 -0
  152. devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/find_mono_repos.py +29 -0
  153. devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/handle_remote_config_patterns.py +90 -0
  154. devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/set_input_core.py +65 -0
  155. devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/__init__.py +0 -0
  156. devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/__init__.py +0 -0
  157. devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/__init__.py +0 -0
  158. devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/xray_deserialize_output.py +57 -0
  159. devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/xray_manager_scan.py +154 -0
  160. devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/entry_points/__init__.py +0 -0
  161. devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/entry_points/entry_point_tool.py +83 -0
  162. devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/helpers/__init__.py +0 -0
  163. devsecops_engine_tools/engine_utilities/__init__.py +0 -0
  164. devsecops_engine_tools/engine_utilities/azuredevops/__init__.py +0 -0
  165. devsecops_engine_tools/engine_utilities/azuredevops/infrastructure/__init__.py +0 -0
  166. devsecops_engine_tools/engine_utilities/azuredevops/infrastructure/azure_devops_api.py +67 -0
  167. devsecops_engine_tools/engine_utilities/azuredevops/models/AzureMessageLoggingPipeline.py +21 -0
  168. devsecops_engine_tools/engine_utilities/azuredevops/models/AzurePredefinedVariables.py +65 -0
  169. devsecops_engine_tools/engine_utilities/azuredevops/models/__init__.py +0 -0
  170. devsecops_engine_tools/engine_utilities/defect_dojo/__init__.py +5 -0
  171. devsecops_engine_tools/engine_utilities/defect_dojo/applications/__init__.py +0 -0
  172. devsecops_engine_tools/engine_utilities/defect_dojo/applications/connect.py +37 -0
  173. devsecops_engine_tools/engine_utilities/defect_dojo/applications/defect_dojo.py +40 -0
  174. devsecops_engine_tools/engine_utilities/defect_dojo/applications/finding.py +40 -0
  175. devsecops_engine_tools/engine_utilities/defect_dojo/domain/__init__.py +0 -0
  176. devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/__init__.py +0 -0
  177. devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/cmdb.py +11 -0
  178. devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/engagement.py +55 -0
  179. devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/finding.py +96 -0
  180. devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/product.py +35 -0
  181. devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/product_list.py +12 -0
  182. devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/product_type.py +16 -0
  183. devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/product_type_list.py +13 -0
  184. devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/scan_configuration.py +21 -0
  185. devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/__init__.py +0 -0
  186. devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/finding.py +95 -0
  187. devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/import_scan.py +125 -0
  188. devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/__init__.py +0 -0
  189. devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/finding.py +100 -0
  190. devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/import_scan.py +223 -0
  191. devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/__init__.py +0 -0
  192. devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/cmdb.py +59 -0
  193. devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/finding.py +38 -0
  194. devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/import_scan.py +133 -0
  195. devsecops_engine_tools/engine_utilities/defect_dojo/hello_world.py +2 -0
  196. devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/__init__.py +0 -0
  197. devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/__init__.py +0 -0
  198. devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/cmdb.py +55 -0
  199. devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/engagement.py +55 -0
  200. devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/finding.py +37 -0
  201. devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/import_scan.py +115 -0
  202. devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/product.py +50 -0
  203. devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/product_type.py +59 -0
  204. devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/scan_configurations.py +65 -0
  205. devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/settings/__init__.py +0 -0
  206. devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/settings/settings.py +1 -0
  207. devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/repository/__init__.py +0 -0
  208. devsecops_engine_tools/engine_utilities/github/__init__.py +0 -0
  209. devsecops_engine_tools/engine_utilities/github/infrastructure/__init__.py +0 -0
  210. devsecops_engine_tools/engine_utilities/github/infrastructure/github_api.py +49 -0
  211. devsecops_engine_tools/engine_utilities/github/models/__init__.py +0 -0
  212. devsecops_engine_tools/engine_utilities/input_validations/__init__.py +0 -0
  213. devsecops_engine_tools/engine_utilities/input_validations/env_utils.py +10 -0
  214. devsecops_engine_tools/engine_utilities/input_validations/validate_input_with_regex_letters_number_and_only.py +8 -0
  215. devsecops_engine_tools/engine_utilities/settings.py +38 -0
  216. devsecops_engine_tools/engine_utilities/ssh/__init__.py +0 -0
  217. devsecops_engine_tools/engine_utilities/ssh/managment_private_key.py +67 -0
  218. devsecops_engine_tools/engine_utilities/utils/__init__.py +0 -0
  219. devsecops_engine_tools/engine_utilities/utils/api_error.py +14 -0
  220. devsecops_engine_tools/engine_utilities/utils/dataclass_classmethod.py +84 -0
  221. devsecops_engine_tools/engine_utilities/utils/datetime_parsing.py +10 -0
  222. devsecops_engine_tools/engine_utilities/utils/logger_info.py +109 -0
  223. devsecops_engine_tools/engine_utilities/utils/name_conversion.py +12 -0
  224. devsecops_engine_tools/engine_utilities/utils/printers.py +21 -0
  225. devsecops_engine_tools/engine_utilities/utils/session_manager.py +14 -0
  226. devsecops_engine_tools/version.py +1 -0
  227. devsecops_engine_tools-1.6.7.dist-info/METADATA +156 -0
  228. devsecops_engine_tools-1.6.7.dist-info/RECORD +231 -0
  229. devsecops_engine_tools-1.6.7.dist-info/WHEEL +5 -0
  230. devsecops_engine_tools-1.6.7.dist-info/entry_points.txt +2 -0
  231. devsecops_engine_tools-1.6.7.dist-info/top_level.txt +1 -0
@@ -0,0 +1,103 @@
1
+ from dataclasses import dataclass
2
+ from devsecops_engine_tools.engine_core.src.domain.model.gateway.devops_platform_gateway import (
3
+ DevopsPlatformGateway,
4
+ )
5
+ from devsecops_engine_tools.engine_utilities.azuredevops.models.AzurePredefinedVariables import (
6
+ BuildVariables,
7
+ SystemVariables,
8
+ ReleaseVariables,
9
+ AgentVariables,
10
+ )
11
+ from devsecops_engine_tools.engine_utilities.azuredevops.infrastructure.azure_devops_api import (
12
+ AzureDevopsApi,
13
+ )
14
+ from devsecops_engine_tools.engine_utilities.azuredevops.models.AzureMessageLoggingPipeline import (
15
+ AzureMessageLoggingPipeline,
16
+ AzureMessageResultPipeline,
17
+ )
18
+ from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
19
+ from devsecops_engine_tools.engine_utilities import settings
20
+
21
+ logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
22
+
23
+
24
+ @dataclass
25
+ class AzureDevops(DevopsPlatformGateway):
26
+ def get_remote_config(self, repository, path):
27
+ base_compact_remote_config_url = (
28
+ f"https://{SystemVariables.System_TeamFoundationCollectionUri.value().rstrip('/').split('/')[-1].replace('.visualstudio.com','')}"
29
+ f".visualstudio.com/{SystemVariables.System_TeamProject.value()}/_git/"
30
+ f"{repository}?path={path}"
31
+ )
32
+ utils_azure = AzureDevopsApi(
33
+ personal_access_token=SystemVariables.System_AccessToken.value(),
34
+ compact_remote_config_url=base_compact_remote_config_url,
35
+ )
36
+ connection = utils_azure.get_azure_connection()
37
+ return utils_azure.get_remote_json_config(connection=connection)
38
+
39
+ def message(self, type, message):
40
+ if type == "succeeded":
41
+ return AzureMessageLoggingPipeline.SucceededLogging.get_message(message)
42
+ elif type == "info":
43
+ return AzureMessageLoggingPipeline.InfoLogging.get_message(message)
44
+ elif type == "warning":
45
+ return AzureMessageLoggingPipeline.WarningLogging.get_message(message)
46
+ elif type == "error":
47
+ return AzureMessageLoggingPipeline.ErrorLogging.get_message(message)
48
+
49
+ def result_pipeline(self, type):
50
+ if type == "failed":
51
+ return AzureMessageResultPipeline.Failed.value
52
+ elif type == "succeeded":
53
+ return AzureMessageResultPipeline.Succeeded.value
54
+ elif type == "succeeded_with_issues":
55
+ return AzureMessageResultPipeline.SucceededWithIssues.value
56
+
57
+ def get_source_code_management_uri(self):
58
+ source_code_management_uri = (
59
+ f"{SystemVariables.System_TeamFoundationCollectionUri.value()}"
60
+ f"{SystemVariables.System_TeamProject.value()}/_git/{BuildVariables.Build_Repository_Name.value()}"
61
+ )
62
+ return source_code_management_uri.replace(" ", "%20")
63
+
64
+ def get_base_compact_remote_config_url(self, remote_config_repo):
65
+ return (
66
+ f"https://{SystemVariables.System_TeamFoundationCollectionUri.value().rstrip('/').split('/')[-1].replace('.visualstudio.com','')}"
67
+ f".visualstudio.com/{SystemVariables.System_TeamProject.value()}/_git/"
68
+ f"{remote_config_repo}?path=/"
69
+ )
70
+
71
+ def get_variable(self, variable):
72
+
73
+ variable_map = {
74
+ "branch_name": BuildVariables.Build_SourceBranchName,
75
+ "build_id": BuildVariables.Build_BuildNumber,
76
+ "build_execution_id": BuildVariables.Build_BuildId,
77
+ "commit_hash": BuildVariables.Build_SourceVersion,
78
+ "environment": ReleaseVariables.Environment,
79
+ "release_id": ReleaseVariables.Release_Releaseid,
80
+ "branch_tag": BuildVariables.Build_SourceBranch,
81
+ "access_token": SystemVariables.System_AccessToken,
82
+ "organization": SystemVariables.System_TeamFoundationCollectionUri,
83
+ "project_name": SystemVariables.System_TeamProject,
84
+ "repository": BuildVariables.Build_Repository_Name,
85
+ "pipeline_name": (
86
+ BuildVariables.Build_DefinitionName
87
+ if SystemVariables.System_HostType.value() == "build"
88
+ else ReleaseVariables.Release_Definitionname
89
+ ),
90
+ "stage": SystemVariables.System_HostType,
91
+ "path_directory": SystemVariables.System_DefaultWorkingDirectory,
92
+ "os": AgentVariables.Agent_OS,
93
+ "work_folder": AgentVariables.Agent_WorkFolder,
94
+ "temp_directory": AgentVariables.Agent_TempDirectory,
95
+ "agent_directory": AgentVariables.Agent_BuildDirectory,
96
+ "target_branch": SystemVariables.System_TargetBranchName,
97
+ "source_branch": SystemVariables.System_SourceBranch,
98
+ "repository_provider": BuildVariables.Build_Repository_Provider,
99
+ }
100
+ try:
101
+ return variable_map.get(variable).value()
102
+ except ValueError:
103
+ return None
@@ -0,0 +1,215 @@
1
+ from dataclasses import dataclass
2
+ from devsecops_engine_tools.engine_core.src.domain.model.gateway.vulnerability_management_gateway import (
3
+ VulnerabilityManagementGateway,
4
+ )
5
+ from devsecops_engine_tools.engine_core.src.domain.model.vulnerability_management import (
6
+ VulnerabilityManagement,
7
+ )
8
+ from devsecops_engine_tools.engine_utilities.defect_dojo import (
9
+ DefectDojo,
10
+ ImportScanRequest,
11
+ Connect,
12
+ Finding,
13
+ )
14
+ from devsecops_engine_tools.engine_core.src.domain.model.exclusions import Exclusions
15
+ from devsecops_engine_tools.engine_utilities.utils.session_manager import SessionManager
16
+ from devsecops_engine_tools.engine_core.src.domain.model.customs_exceptions import (
17
+ ExceptionVulnerabilityManagement,
18
+ ExceptionFindingsExcepted,
19
+ )
20
+ from devsecops_engine_tools.engine_core.src.infrastructure.helpers.util import (
21
+ format_date,
22
+ )
23
+ from functools import partial
24
+
25
+
26
+ @dataclass
27
+ class DefectDojoPlatform(VulnerabilityManagementGateway):
28
+ def send_vulnerability_management(
29
+ self, vulnerability_management: VulnerabilityManagement
30
+ ):
31
+ try:
32
+ token_dd = (
33
+ vulnerability_management.dict_args["token_vulnerability_management"]
34
+ if vulnerability_management.dict_args["token_vulnerability_management"]
35
+ is not None
36
+ else vulnerability_management.secret_tool["token_defect_dojo"]
37
+ )
38
+ token_cmdb = (
39
+ vulnerability_management.dict_args["token_cmdb"]
40
+ if vulnerability_management.dict_args["token_cmdb"] is not None
41
+ else vulnerability_management.secret_tool["token_cmdb"]
42
+ )
43
+
44
+ enviroment_mapping = {
45
+ "dev": "Development",
46
+ "qa": "Staging",
47
+ "pdn": "Production",
48
+ "default": "Production",
49
+ }
50
+ scan_type_mapping = {
51
+ "CHECKOV": "Checkov Scan",
52
+ "PRISMA": "Twistlock Image Scan",
53
+ "XRAY": "JFrog Xray On Demand Binary Scan",
54
+ }
55
+
56
+ if any(
57
+ branch in str(vulnerability_management.branch_tag)
58
+ for branch in vulnerability_management.config_tool[
59
+ "VULNERABILITY_MANAGER"
60
+ ]["BRANCH_FILTER"].split(",")
61
+ ):
62
+ request: ImportScanRequest = Connect.cmdb(
63
+ cmdb_mapping={
64
+ "product_type_name": "nombreevc",
65
+ "product_name": "nombreapp",
66
+ "tag_product": "nombreentorno",
67
+ "product_description": "arearesponsableti",
68
+ "codigo_app": "CodigoApp",
69
+ },
70
+ compact_remote_config_url=f'{vulnerability_management.base_compact_remote_config_url}{vulnerability_management.config_tool["VULNERABILITY_MANAGER"]["DEFECT_DOJO"]["CMDB_MAPPING_PATH"]}',
71
+ personal_access_token=vulnerability_management.access_token,
72
+ token_cmdb=token_cmdb,
73
+ host_cmdb=vulnerability_management.config_tool[
74
+ "VULNERABILITY_MANAGER"
75
+ ]["DEFECT_DOJO"]["HOST_CMDB"],
76
+ expression=vulnerability_management.config_tool[
77
+ "VULNERABILITY_MANAGER"
78
+ ]["DEFECT_DOJO"]["REGEX_EXPRESSION_CMDB"],
79
+ token_defect_dojo=token_dd,
80
+ host_defect_dojo=vulnerability_management.config_tool[
81
+ "VULNERABILITY_MANAGER"
82
+ ]["DEFECT_DOJO"]["HOST_DEFECT_DOJO"],
83
+ scan_type=scan_type_mapping[vulnerability_management.scan_type],
84
+ engagement_name=vulnerability_management.input_core.scope_pipeline,
85
+ service=vulnerability_management.input_core.scope_pipeline,
86
+ file=vulnerability_management.input_core.path_file_results,
87
+ version=vulnerability_management.version,
88
+ build_id=vulnerability_management.build_id,
89
+ source_code_management_uri=vulnerability_management.source_code_management_uri,
90
+ branch_tag=vulnerability_management.branch_tag,
91
+ commit_hash=vulnerability_management.commit_hash,
92
+ environment=(
93
+ enviroment_mapping[vulnerability_management.environment.lower()]
94
+ if vulnerability_management.environment is not None
95
+ and vulnerability_management.environment.lower()
96
+ in enviroment_mapping
97
+ else enviroment_mapping["default"]
98
+ ),
99
+ tags="evc",
100
+ )
101
+
102
+ response = DefectDojo.send_import_scan(request)
103
+ if hasattr(response, "url"):
104
+ url_parts = response.url.split("//")
105
+ test_string = "//".join([url_parts[0] + "/", url_parts[1]])
106
+ print(
107
+ "Report sent to vulnerability management: ",
108
+ f"{test_string}?tags={vulnerability_management.dict_args['tool']}",
109
+ )
110
+ else:
111
+ raise ExceptionVulnerabilityManagement(response)
112
+ except Exception as ex:
113
+ raise ExceptionVulnerabilityManagement(
114
+ "Error sending report to vulnerability management with the following error: {0} ".format(
115
+ ex
116
+ )
117
+ )
118
+
119
+ def get_findings_excepted(self, service, dict_args, secret_tool, config_tool):
120
+ try:
121
+ token_dd = dict_args.get(
122
+ "token_vulnerability_management"
123
+ ) or secret_tool.get("token_defect_dojo")
124
+ session_manager = SessionManager(
125
+ token_dd,
126
+ config_tool["VULNERABILITY_MANAGER"]["DEFECT_DOJO"]["HOST_DEFECT_DOJO"],
127
+ )
128
+
129
+ dd_limits_query = config_tool["VULNERABILITY_MANAGER"]["DEFECT_DOJO"][
130
+ "LIMITS_QUERY"
131
+ ]
132
+ tool = dict_args["tool"]
133
+
134
+ risk_accepted_query_params = {
135
+ "risk_accepted": True,
136
+ "tags": tool,
137
+ "limit": dd_limits_query,
138
+ }
139
+ false_positive_query_params = {
140
+ "false_p": True,
141
+ "tags": tool,
142
+ "limit": dd_limits_query,
143
+ }
144
+
145
+ exclusions_risk_accepted = self._get_findings_with_exclusions(
146
+ session_manager,
147
+ service,
148
+ risk_accepted_query_params,
149
+ tool,
150
+ self._format_date_to_dd_format,
151
+ "Risk Accepted",
152
+ )
153
+
154
+ exclusions_false_positive = self._get_findings_with_exclusions(
155
+ session_manager,
156
+ service,
157
+ false_positive_query_params,
158
+ tool,
159
+ self._format_date_to_dd_format,
160
+ "False Positive",
161
+ )
162
+
163
+ return list(exclusions_risk_accepted) + list(exclusions_false_positive)
164
+ except Exception as ex:
165
+ raise ExceptionFindingsExcepted(
166
+ "Error getting excepted findings with the following error: {0} ".format(
167
+ ex
168
+ )
169
+ )
170
+
171
+ def _get_findings_with_exclusions(
172
+ self, session_manager, service, query_params, tool, date_fn, reason
173
+ ):
174
+ findings = self._get_findings(session_manager, service, query_params)
175
+ return map(
176
+ partial(self._create_exclusion, date_fn=date_fn, tool=tool, reason=reason),
177
+ findings,
178
+ )
179
+
180
+ def _get_findings(self, session_manager, service, query_params):
181
+ return Finding.get_finding(
182
+ session=session_manager, service=service, **query_params
183
+ ).results
184
+
185
+ def _create_exclusion(self, finding, date_fn, tool, reason):
186
+ return Exclusions(
187
+ id=finding.vuln_id_from_tool,
188
+ where=self._get_where(finding, tool),
189
+ create_date=date_fn(
190
+ finding.last_status_update
191
+ if reason == "False Positive"
192
+ else finding.accepted_risks[-1]["created"]
193
+ ),
194
+ expired_date=date_fn(
195
+ None
196
+ if reason == "False Positive"
197
+ else finding.accepted_risks[-1]["expiration_date"]
198
+ ),
199
+ reason=reason,
200
+ )
201
+
202
+ def _format_date_to_dd_format(self, date_string):
203
+ return (
204
+ format_date(date_string.split("T")[0], "%Y-%m-%d", "%d%m%Y")
205
+ if date_string
206
+ else None
207
+ )
208
+
209
+ def _get_where(self, finding, tool):
210
+ if tool in ["engine_iac", "engine_secret"]:
211
+ return finding.file_path
212
+ elif tool in ["engine_container", "engine_dependencies"]:
213
+ return finding.component_name + ":" + finding.component_version
214
+ elif tool == "engine_dast":
215
+ return finding.endpoints
@@ -0,0 +1,84 @@
1
+ from dataclasses import dataclass
2
+
3
+ from devsecops_engine_tools.engine_core.src.domain.model.gateway.printer_table_gateway import (
4
+ PrinterTableGateway,
5
+ )
6
+ from devsecops_engine_tools.engine_core.src.domain.model.finding import (
7
+ Finding,
8
+ )
9
+ from devsecops_engine_tools.engine_core.src.infrastructure.helpers.util import (
10
+ format_date
11
+ )
12
+ from prettytable import PrettyTable, DOUBLE_BORDER
13
+
14
+
15
+ @dataclass
16
+ class PrinterPrettyTable(PrinterTableGateway):
17
+ def _create_table(self, headers, finding_list):
18
+ table = PrettyTable(headers)
19
+
20
+ for finding in finding_list:
21
+ row_data = [
22
+ finding.severity,
23
+ finding.id,
24
+ finding.description,
25
+ finding.where,
26
+ ]
27
+ if (finding.module == "engine_container") or (
28
+ finding.module == "engine_dependencies"
29
+ ):
30
+ row_data.append(finding.requirements)
31
+
32
+ table.add_row(row_data)
33
+
34
+ severity_order = {"critical": 0, "high": 1, "medium": 2, "low": 3, "unknown": 4}
35
+ sorted_table = PrettyTable()
36
+ sorted_table.field_names = table.field_names
37
+ sorted_table.add_rows(
38
+ sorted(table._rows, key=lambda row: severity_order[row[0]])
39
+ )
40
+
41
+ for column in table.field_names:
42
+ sorted_table.align[column] = "l"
43
+
44
+ sorted_table.set_style(DOUBLE_BORDER)
45
+ return sorted_table
46
+
47
+ def print_table_findings(self, finding_list: "list[Finding]"):
48
+ if (
49
+ finding_list
50
+ and (finding_list[0].module != "engine_container")
51
+ and (finding_list[0].module != "engine_dependencies")
52
+ ):
53
+ headers = ["Severity", "ID", "Description", "Where"]
54
+ else:
55
+ headers = ["Severity", "ID", "Description", "Where", "Fixed in"]
56
+
57
+ sorted_table = self._create_table(headers, finding_list)
58
+
59
+ if len(sorted_table.rows) > 0:
60
+ print(sorted_table)
61
+
62
+ def print_table_exclusions(self, exclusions):
63
+ if (exclusions):
64
+ headers = ["Severity", "ID", "Where", "Create Date", "Expired Date", "Reason"]
65
+
66
+ table = PrettyTable(headers)
67
+
68
+ for exclusion in exclusions:
69
+ row_data = [
70
+ exclusion["severity"],
71
+ exclusion["id"],
72
+ exclusion["where"],
73
+ format_date(exclusion["create_date"], "%d%m%Y", "%d/%m/%Y"),
74
+ format_date(exclusion["expired_date"], "%d%m%Y", "%d/%m/%Y") if exclusion["expired_date"] and exclusion["expired_date"] != "undefined" else "NA",
75
+ exclusion["reason"],
76
+ ]
77
+ table.add_row(row_data)
78
+
79
+ for column in table.field_names:
80
+ table.align[column] = "l"
81
+
82
+ table.set_style(DOUBLE_BORDER)
83
+ if len(table.rows) > 0:
84
+ print(table)
@@ -0,0 +1,71 @@
1
+ from dataclasses import dataclass
2
+ from devsecops_engine_tools.engine_core.src.domain.model.gateway.devops_platform_gateway import (
3
+ DevopsPlatformGateway,
4
+ )
5
+ import json
6
+ import os
7
+
8
+
9
+ @dataclass
10
+ class RuntimeLocal(DevopsPlatformGateway):
11
+
12
+ OKGREEN = "\033[92m"
13
+ WARNING = "\033[93m"
14
+ FAIL = "\033[91m"
15
+ ENDC = "\033[0m"
16
+ BOLD = "\033[1m"
17
+ ICON_FAIL = "\u2718"
18
+ ICON_SUCCESS = "\u2714"
19
+
20
+
21
+ def get_remote_config(self, repository, path):
22
+ with open(f"{repository}/{path}") as f:
23
+ return json.load(f)
24
+
25
+ def message(self, type, message):
26
+ if type == "succeeded":
27
+ return f"{self.OKGREEN}{message}{self.ENDC}"
28
+ elif type == "info":
29
+ return f"{self.BOLD}{message}{self.ENDC}"
30
+ elif type == "warning":
31
+ return f"{self.WARNING}{message}{self.ENDC}"
32
+ elif type == "error":
33
+ return f"{self.FAIL}{message}{self.ENDC}"
34
+
35
+ def result_pipeline(self, type):
36
+ if type == "failed":
37
+ return f"{self.FAIL}{self.ICON_FAIL}Failed{self.ENDC}"
38
+ elif type == "succeeded":
39
+ return f"{self.OKGREEN}{self.ICON_SUCCESS}Succeeded{self.ENDC}"
40
+
41
+ def get_source_code_management_uri(self):
42
+ return os.environ.get("DET_SOURCE_CODE_MANAGEMENT_URI")
43
+
44
+ def get_base_compact_remote_config_url(self, remote_config_repo):
45
+ return os.environ.get("DET_BASE_COMPACT_REMOTE_CONFIG_URL")
46
+
47
+ def get_variable(self, variable):
48
+ env_variables = {
49
+ "branch_name" : "DET_BRANCH_NAME",
50
+ "build_id" : "DET_BUILD_ID",
51
+ "build_execution_id" : "DET_BUILD_EXECUTION_ID",
52
+ "commit_hash" : "DET_COMMIT_HASH",
53
+ "environment" : "DET_ENVIRONMENT",
54
+ "release_id" : "DET_RELEASE_ID",
55
+ "branch_tag" : "DET_BRANCH_TAG",
56
+ "access_token" : "DET_ACCESS_TOKEN",
57
+ "organization" : "DET_ORGANIZATION",
58
+ "project_name" : "DET_PROJECT_NAME",
59
+ "repository" : "DET_REPOSITORY",
60
+ "pipeline_name" : "DET_PIPELINE_NAME",
61
+ "stage" : "DET_STAGE",
62
+ "path_directory" : "DET_PATH_DIRECTORY",
63
+ "os" : "DET_OS",
64
+ "work_folder" : "DET_WORK_FOLDER",
65
+ "temp_directory" : "DET_TEMP_DIRECTORY",
66
+ "agent_directory" : "DET_AGENT_DIRECTORY",
67
+ "target_branch" : "DET_TARGET_BRANCH",
68
+ "source_branch" : "DET_SOURCE_BRANCH",
69
+ "repository_provider" : "DET_REPOSITORY_PROVIDER"
70
+ }
71
+ return os.environ.get(env_variables[variable], None)
@@ -0,0 +1,50 @@
1
+ from devsecops_engine_tools.engine_core.src.domain.usecases.break_build import (
2
+ BreakBuild,
3
+ )
4
+ from devsecops_engine_tools.engine_core.src.domain.usecases.handle_scan import (
5
+ HandleScan,
6
+ )
7
+ from devsecops_engine_tools.engine_core.src.domain.usecases.metrics_manager import (
8
+ MetricsManager,
9
+ )
10
+ from devsecops_engine_tools.engine_utilities.utils.printers import (
11
+ Printers,
12
+ )
13
+
14
+
15
+ def init_engine_core(
16
+ vulnerability_management_gateway: any,
17
+ secrets_manager_gateway: any,
18
+ devops_platform_gateway: any,
19
+ print_table_gateway: any,
20
+ metrics_manager_gateway: any,
21
+ args: any
22
+ ):
23
+ config_tool = devops_platform_gateway.get_remote_config(
24
+ args["remote_config_repo"], "/engine_core/ConfigTool.json"
25
+ )
26
+ Printers.print_logo_tool(config_tool["BANNER"])
27
+
28
+ if config_tool[args["tool"].upper()]["ENABLED"] == "true":
29
+ findings_list, input_core = HandleScan(
30
+ vulnerability_management_gateway,
31
+ secrets_manager_gateway,
32
+ devops_platform_gateway,
33
+ ).process(args, config_tool)
34
+
35
+ scan_result = BreakBuild(devops_platform_gateway, print_table_gateway).process(
36
+ findings_list,
37
+ input_core,
38
+ args
39
+ )
40
+ if args["send_metrics"] == "true":
41
+ MetricsManager(devops_platform_gateway, metrics_manager_gateway).process(
42
+ config_tool, input_core, args, scan_result
43
+ )
44
+ else:
45
+ print(
46
+ devops_platform_gateway.message(
47
+ "warning",
48
+ "DevSecOps Engine Tool - {0} in maintenance...".format(args["tool"]),
49
+ )
50
+ )
@@ -0,0 +1,9 @@
1
+ import boto3
2
+
3
+ def assume_role(role_arn):
4
+ sts_client = boto3.client("sts")
5
+ response = sts_client.assume_role(
6
+ RoleArn=role_arn, RoleSessionName="DevSecOpsTools"
7
+ )
8
+ temporal_credentials = response["Credentials"]
9
+ return temporal_credentials
@@ -0,0 +1,15 @@
1
+ from datetime import datetime
2
+
3
+
4
+ def format_date(date, to_format, from_format):
5
+ return datetime.strptime(date, to_format).strftime(from_format)
6
+
7
+
8
+ def define_env(variable_env, branch):
9
+ if variable_env is not None:
10
+ return variable_env.lower()
11
+ return (
12
+ "pdn"
13
+ if branch in ["trunk", "master"]
14
+ else "qa" if branch in "release" else "dev"
15
+ )
File without changes
File without changes
File without changes
@@ -0,0 +1,30 @@
1
+ from devsecops_engine_tools.engine_sast.engine_iac.src.infrastructure.entry_points.entry_point_tool import (
2
+ init_engine_sast_rm,
3
+ )
4
+ from devsecops_engine_tools.engine_sast.engine_iac.src.infrastructure.driven_adapters.checkov.checkov_tool import (
5
+ CheckovTool
6
+ )
7
+
8
+
9
+ def runner_engine_iac(dict_args, tool, secret_tool, devops_platform_gateway, env):
10
+ try:
11
+ # Define driven adapters for gateways
12
+ tool_gateway = None
13
+ if (tool == "CHECKOV"):
14
+ tool_gateway = CheckovTool()
15
+
16
+ return init_engine_sast_rm(
17
+ devops_platform_gateway=devops_platform_gateway,
18
+ tool_gateway=tool_gateway,
19
+ dict_args=dict_args,
20
+ secret_tool=secret_tool,
21
+ tool=tool,
22
+ env=env,
23
+ )
24
+
25
+ except Exception as e:
26
+ raise Exception(f"Error engine_iac : {str(e)}")
27
+
28
+
29
+ if __name__ == "__main__":
30
+ runner_engine_iac()