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,24 @@
1
+ from devsecops_engine_tools.engine_core.src.domain.model.threshold import Threshold
2
+
3
+
4
+ class ConfigTool:
5
+ def __init__(self, json_data, tool):
6
+ self.version = json_data[tool]["VERSION"]
7
+ self.search_pattern = json_data["SEARCH_PATTERN"]
8
+ self.ignore_search_pattern = json_data["IGNORE_SEARCH_PATTERN"]
9
+ self.exclusions_path = json_data["EXCLUSIONS_PATH"]
10
+ self.use_external_checks_git = json_data[tool]["USE_EXTERNAL_CHECKS_GIT"]
11
+ self.external_checks_git = json_data[tool]["EXTERNAL_CHECKS_GIT"]
12
+ self.repository_ssh_host = json_data[tool]["EXTERNAL_GIT_SSH_HOST"]
13
+ self.repository_public_key_fp = json_data[tool]["EXTERNAL_GIT_PUBLIC_KEY_FINGERPRINT"]
14
+ self.use_external_checks_dir = json_data[tool]["USE_EXTERNAL_CHECKS_DIR"]
15
+ self.external_dir_owner = json_data[tool]["EXTERNAL_DIR_OWNER"]
16
+ self.external_dir_repository = json_data[tool]["EXTERNAL_DIR_REPOSITORY"]
17
+ self.message_info_engine_iac = json_data["MESSAGE_INFO_ENGINE_IAC"]
18
+ self.threshold = Threshold(json_data["THRESHOLD"])
19
+ self.rules_data_type = json_data[tool]["RULES"]
20
+ self.scope_pipeline = ""
21
+ self.exclusions = None
22
+ self.exclusions_all = None
23
+ self.exclusions_scope = None
24
+ self.rules_all = {}
@@ -0,0 +1,6 @@
1
+ from abc import ABCMeta, abstractmethod
2
+
3
+ class ToolGateway(metaclass=ABCMeta):
4
+ @abstractmethod
5
+ def run_tool(self, config_tool, folders_to_scan, environment, container_platform, secret_tool):
6
+ "run_tool"
@@ -0,0 +1,130 @@
1
+ import os
2
+ import re
3
+ from devsecops_engine_tools.engine_sast.engine_iac.src.domain.model.gateways.tool_gateway import (
4
+ ToolGateway,
5
+ )
6
+ from devsecops_engine_tools.engine_core.src.domain.model.gateway.devops_platform_gateway import (
7
+ DevopsPlatformGateway,
8
+ )
9
+ from devsecops_engine_tools.engine_sast.engine_iac.src.domain.model.config_tool import (
10
+ ConfigTool,
11
+ )
12
+ from devsecops_engine_tools.engine_core.src.domain.model.exclusions import Exclusions
13
+ from devsecops_engine_tools.engine_core.src.domain.model.input_core import (
14
+ InputCore
15
+ )
16
+ from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
17
+ from devsecops_engine_tools.engine_utilities import settings
18
+
19
+ logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
20
+
21
+
22
+ class IacScan:
23
+ def __init__(
24
+ self, tool_gateway: ToolGateway, devops_platform_gateway: DevopsPlatformGateway
25
+ ):
26
+ self.tool_gateway = tool_gateway
27
+ self.devops_platform_gateway = devops_platform_gateway
28
+
29
+ def process(self, dict_args, secret_tool, tool, env):
30
+ init_config_tool = self.devops_platform_gateway.get_remote_config(
31
+ dict_args["remote_config_repo"], "engine_sast/engine_iac/ConfigTool.json"
32
+ )
33
+
34
+ exclusions = self.devops_platform_gateway.get_remote_config(
35
+ dict_args["remote_config_repo"], "engine_sast/engine_iac/Exclusions.json"
36
+ )
37
+
38
+ config_tool, folders_to_scan, skip_tool = self.complete_config_tool(
39
+ init_config_tool, exclusions, tool, dict_args
40
+ )
41
+
42
+
43
+ findings_list, path_file_results = [], None
44
+ if skip_tool == "false":
45
+ findings_list, path_file_results = self.tool_gateway.run_tool(
46
+ config_tool,
47
+ folders_to_scan,
48
+ "pdn" if env not in ["dev","qa","pdn"] else env,
49
+ dict_args["platform"],
50
+ secret_tool,
51
+ )
52
+
53
+ totalized_exclusions = []
54
+ (
55
+ totalized_exclusions.extend(
56
+ map(lambda elem: Exclusions(**elem), config_tool.exclusions_all)
57
+ )
58
+ if config_tool.exclusions_all is not None
59
+ else None
60
+ )
61
+ (
62
+ totalized_exclusions.extend(
63
+ map(lambda elem: Exclusions(**elem), config_tool.exclusions_scope)
64
+ )
65
+ if config_tool.exclusions_scope is not None
66
+ else None
67
+ )
68
+
69
+ input_core = InputCore(
70
+ totalized_exclusions=totalized_exclusions,
71
+ threshold_defined=config_tool.threshold,
72
+ path_file_results=path_file_results,
73
+ custom_message_break_build=config_tool.message_info_engine_iac,
74
+ scope_pipeline=config_tool.scope_pipeline,
75
+ stage_pipeline=self.devops_platform_gateway.get_variable("stage").capitalize(),
76
+ )
77
+
78
+ return findings_list, input_core
79
+
80
+ def complete_config_tool(self, data_file_tool, exclusions, tool, dict_args):
81
+ config_tool = ConfigTool(json_data=data_file_tool, tool=tool)
82
+ skip_tool = "false"
83
+
84
+ config_tool.exclusions = exclusions
85
+ config_tool.scope_pipeline = self.devops_platform_gateway.get_variable(
86
+ "pipeline_name"
87
+ )
88
+
89
+ if config_tool.exclusions.get("All") is not None:
90
+ config_tool.exclusions_all = config_tool.exclusions.get("All").get(tool)
91
+ if config_tool.exclusions.get(config_tool.scope_pipeline) is not None:
92
+ config_tool.exclusions_scope = config_tool.exclusions.get(
93
+ config_tool.scope_pipeline
94
+ ).get(tool)
95
+ skip_tool = "true" if config_tool.exclusions.get(config_tool.scope_pipeline).get("SKIP_TOOL") else "false"
96
+ if(dict_args["folder_path"]):
97
+ folders_to_scan = [dict_args["folder_path"]]
98
+ else:
99
+ folders_to_scan = self.search_folders(
100
+ config_tool.search_pattern, config_tool.ignore_search_pattern
101
+ )
102
+
103
+ if len(folders_to_scan) == 0:
104
+ logger.warning(
105
+ "No folders found with the search pattern: %s",
106
+ config_tool.search_pattern,
107
+ )
108
+
109
+ return config_tool, folders_to_scan, skip_tool
110
+
111
+ def search_folders(self, search_pattern, ignore_pattern):
112
+ current_directory = os.getcwd()
113
+ patron = (
114
+ "(?i)(?!.*(?:"
115
+ + "|".join(ignore_pattern)
116
+ + ")).*?("
117
+ + "|".join(search_pattern)
118
+ + ").*$"
119
+ )
120
+ folders = [
121
+ folder
122
+ for folder in os.listdir(current_directory)
123
+ if os.path.isdir(os.path.join(current_directory, folder))
124
+ ]
125
+ matching_folders = [
126
+ os.path.normpath(os.path.join(current_directory, folder))
127
+ for folder in folders
128
+ if re.match(patron, folder)
129
+ ]
130
+ return matching_folders
@@ -0,0 +1,135 @@
1
+ from enum import Enum
2
+
3
+
4
+ MESSAGE_VALUE = "El valor"
5
+ MESSAGE_NIL = "no puede ser nulo"
6
+
7
+
8
+ class CheckovConfigEnum(Enum):
9
+ "https://www.checkov.io/2.Basics/CLI%20Command%20Reference.html"
10
+ BRANCH = "branch"
11
+ FRAMEWORK = "framework"
12
+ CHECKS = "check"
13
+ COMPACT = "compact"
14
+ DIRECTORIES = "directory"
15
+ QUIET = "quiet"
16
+ OUTPUT = "output"
17
+ SOFT_FAIL = "soft-fail"
18
+ EVALUATE_VARIABLES = "evaluate-variables"
19
+ EXTERNAL_CHECKS_DIR = "external-checks-dir"
20
+ SKIP_CHECKS = "skip-check"
21
+ DOCKER_IMAGE = "docker-image"
22
+ DOCKERFILEPATH = "dockerfile-path"
23
+ EXTERNAL_CHECKS_GIT = "external-checks-git"
24
+ SKIP_DOWNLOAD = "skip-download"
25
+
26
+
27
+ class CheckovConfig:
28
+ dict_confg_file = {}
29
+
30
+ def __init__(
31
+ self,
32
+ path_config_file,
33
+ config_file_name,
34
+ directories,
35
+ env,
36
+ branch=None,
37
+ framework=None,
38
+ checks=None,
39
+ compact=True,
40
+ quiet=True,
41
+ output="json",
42
+ soft_fail=True,
43
+ evaluate_variables=True,
44
+ external_checks_dir=None,
45
+ external_checks_git=None,
46
+ skip_checks=None,
47
+ skip_download=True,
48
+ ):
49
+ self.path_config_file = path_config_file
50
+ self.config_file_name = config_file_name
51
+ self.branch = branch
52
+ self.checks = checks
53
+ self.framework = framework
54
+ self.compact = compact
55
+ self.directories = directories
56
+ self.quiet = quiet
57
+ self.output = output
58
+ self.soft_fail = soft_fail
59
+ self.evaluate_variables = evaluate_variables
60
+ self.external_checks_dir = external_checks_dir
61
+ self.external_checks_git = external_checks_git
62
+ self.skip_checks = skip_checks
63
+ self.skip_download = skip_download
64
+ self.env = env
65
+
66
+ def create_config_dict(self):
67
+ if self.framework is not None:
68
+ self.dict_confg_file[CheckovConfigEnum.FRAMEWORK.value] = self.framework
69
+ else:
70
+ raise ValueError(
71
+ MESSAGE_VALUE + CheckovConfigEnum.FRAMEWORK.value + MESSAGE_NIL
72
+ )
73
+ if self.compact is not None:
74
+ self.dict_confg_file[CheckovConfigEnum.COMPACT.value] = self.compact
75
+ else:
76
+ raise ValueError(
77
+ MESSAGE_VALUE + CheckovConfigEnum.COMPACT.value + MESSAGE_NIL
78
+ )
79
+
80
+ if self.quiet is not None:
81
+ self.dict_confg_file[CheckovConfigEnum.QUIET.value] = self.quiet
82
+ else:
83
+ raise ValueError(
84
+ MESSAGE_VALUE + CheckovConfigEnum.QUIET.value + MESSAGE_NIL
85
+ )
86
+
87
+ if self.checks is not None:
88
+ self.dict_confg_file[CheckovConfigEnum.CHECKS.value] = self.checks
89
+ else:
90
+ raise ValueError(
91
+ MESSAGE_VALUE + CheckovConfigEnum.CHECKS.value + MESSAGE_NIL
92
+ )
93
+
94
+ if self.output is not None:
95
+ self.dict_confg_file[CheckovConfigEnum.OUTPUT.value] = self.output
96
+ else:
97
+ raise ValueError(
98
+ MESSAGE_VALUE + CheckovConfigEnum.OUTPUT.value + MESSAGE_NIL
99
+ )
100
+
101
+ if self.soft_fail is not None:
102
+ self.dict_confg_file[CheckovConfigEnum.SOFT_FAIL.value] = self.soft_fail
103
+ else:
104
+ raise ValueError(
105
+ MESSAGE_VALUE + CheckovConfigEnum.CHECKS.value + MESSAGE_NIL
106
+ )
107
+
108
+ if self.directories is not None:
109
+ self.dict_confg_file[CheckovConfigEnum.DIRECTORIES.value] = self.directories
110
+ else:
111
+ raise ValueError(
112
+ MESSAGE_VALUE + CheckovConfigEnum.DIRECTORIES.value + MESSAGE_NIL
113
+ )
114
+
115
+ if self.evaluate_variables is not None:
116
+ self.dict_confg_file[
117
+ CheckovConfigEnum.EVALUATE_VARIABLES.value
118
+ ] = self.evaluate_variables
119
+
120
+ if self.external_checks_git is not None:
121
+ self.dict_confg_file[
122
+ CheckovConfigEnum.EXTERNAL_CHECKS_GIT.value
123
+ ] = self.external_checks_git
124
+
125
+ if self.external_checks_dir is not None:
126
+ self.dict_confg_file[
127
+ CheckovConfigEnum.EXTERNAL_CHECKS_DIR.value
128
+ ] = self.external_checks_dir
129
+
130
+ if self.skip_download is not None:
131
+ self.dict_confg_file[
132
+ CheckovConfigEnum.SKIP_DOWNLOAD.value
133
+ ] = self.skip_download
134
+
135
+ return self.dict_confg_file
@@ -0,0 +1,35 @@
1
+ from devsecops_engine_tools.engine_core.src.domain.model.finding import (
2
+ Category,
3
+ Finding,
4
+ )
5
+ from datetime import datetime
6
+ from dataclasses import dataclass
7
+
8
+
9
+ @dataclass
10
+ class CheckovDeserealizator:
11
+ @classmethod
12
+ def get_list_finding(
13
+ cls, results_scan_list: list, rules
14
+ ) -> "list[Finding]":
15
+ list_open_findings = []
16
+
17
+ for result in results_scan_list:
18
+ if "failed_checks" in str(result):
19
+ for scan in result["results"]["failed_checks"]:
20
+ finding_open = Finding(
21
+ id=scan.get("check_id"),
22
+ cvss=None,
23
+ where=scan.get("repo_file_path"),
24
+ description=rules[scan.get("check_id")].get("checkID", scan.get("check_name")),
25
+ severity=rules[scan.get("check_id")].get("severity").lower(),
26
+ identification_date=datetime.now().strftime("%d%m%Y"),
27
+ published_date_cve=None,
28
+ module="engine_iac",
29
+ category=Category(rules[scan.get("check_id")].get("category").lower()),
30
+ requirements=scan.get("guideline"),
31
+ tool="Checkov"
32
+ )
33
+ list_open_findings.append(finding_open)
34
+
35
+ return list_open_findings
@@ -0,0 +1,195 @@
1
+ import yaml
2
+ import subprocess
3
+ import os
4
+ import platform
5
+ import queue
6
+ import threading
7
+ import json
8
+ from devsecops_engine_tools.engine_sast.engine_iac.src.domain.model.gateways.tool_gateway import (
9
+ ToolGateway,
10
+ )
11
+ from devsecops_engine_tools.engine_sast.engine_iac.src.domain.model.config_tool import (
12
+ ConfigTool,
13
+ )
14
+
15
+ from devsecops_engine_tools.engine_sast.engine_iac.src.infrastructure.driven_adapters.checkov.checkov_deserealizator import (
16
+ CheckovDeserealizator,
17
+ )
18
+ from devsecops_engine_tools.engine_sast.engine_iac.src.infrastructure.driven_adapters.checkov.checkov_config import (
19
+ CheckovConfig
20
+ )
21
+ from devsecops_engine_tools.engine_sast.engine_iac.src.infrastructure.helpers.file_generator_tool import (
22
+ generate_file_from_tool,
23
+ )
24
+
25
+ from devsecops_engine_tools.engine_utilities.github.infrastructure.github_api import GithubApi
26
+ from devsecops_engine_tools.engine_utilities.ssh.managment_private_key import (
27
+ create_ssh_private_file,
28
+ add_ssh_private_key,
29
+ decode_base64,
30
+ config_knowns_hosts,
31
+ )
32
+ from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
33
+ from devsecops_engine_tools.engine_utilities import settings
34
+
35
+ logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
36
+
37
+ class CheckovTool(ToolGateway):
38
+ CHECKOV_CONFIG_FILE = "checkov_config.yaml"
39
+ TOOL = "CHECKOV"
40
+ framework_mapping = {"RULES_DOCKER": "dockerfile", "RULES_K8S": "kubernetes", "RULES_CLOUDFORMATION": "cloudformation"}
41
+
42
+
43
+ def create_config_file(self, checkov_config: CheckovConfig):
44
+ with open(
45
+ checkov_config.path_config_file
46
+ + checkov_config.config_file_name
47
+ + self.CHECKOV_CONFIG_FILE,
48
+ "w",
49
+ ) as file:
50
+ yaml.dump(checkov_config.dict_confg_file, file)
51
+ file.close()
52
+
53
+ def configurate_external_checks(self, config_tool: ConfigTool, secret_tool):
54
+ agent_env = None
55
+ try:
56
+ if secret_tool is None:
57
+ logger.warning("Secrets manager is not enabled to configure external checks")
58
+ else:
59
+ if (
60
+ config_tool.use_external_checks_git == "True"
61
+ and platform.system()
62
+ in (
63
+ "Linux",
64
+ "Darwin",
65
+ )
66
+ ):
67
+ config_knowns_hosts(
68
+ config_tool.repository_ssh_host,
69
+ config_tool.repository_public_key_fp,
70
+ )
71
+ ssh_key_content = decode_base64(
72
+ secret_tool, "repository_ssh_private_key"
73
+ )
74
+ ssh_key_file_path = "/tmp/ssh_key_file"
75
+ create_ssh_private_file(ssh_key_file_path, ssh_key_content)
76
+ ssh_key_password = decode_base64(
77
+ secret_tool, "repository_ssh_password"
78
+ )
79
+ agent_env = add_ssh_private_key(ssh_key_file_path, ssh_key_password)
80
+
81
+ # Create configuration dir external checks
82
+ if config_tool.use_external_checks_dir == "True":
83
+ github_api = GithubApi(secret_tool["github_token"])
84
+ github_api.download_latest_release_assets(
85
+ config_tool.external_dir_owner,
86
+ config_tool.external_dir_repository,
87
+ "/tmp",
88
+ )
89
+
90
+ except Exception as ex:
91
+ logger.error(f"An error ocurred configuring external checks {ex}")
92
+ return agent_env
93
+
94
+ def execute(self, checkov_config: CheckovConfig):
95
+ command = (
96
+ "checkov --config-file "
97
+ + checkov_config.path_config_file
98
+ + checkov_config.config_file_name
99
+ + self.CHECKOV_CONFIG_FILE
100
+ )
101
+ env_modified = dict(os.environ)
102
+ if checkov_config.env is not None:
103
+ env_modified = {**dict(os.environ), **checkov_config.env}
104
+ result = subprocess.run(
105
+ command, capture_output=True, text=True, shell=True, env=env_modified
106
+ )
107
+ output = result.stdout.strip()
108
+ error = result.stderr.strip()
109
+ return output
110
+
111
+ def async_scan(self, queue, checkov_config: CheckovConfig):
112
+ result = []
113
+ output = self.execute(checkov_config)
114
+ result.append(json.loads(output))
115
+ queue.put(result)
116
+
117
+ def if_platform(self,value,container_platform):
118
+ if value.get("platform_not_apply"):
119
+ if value.get("platform_not_apply") != container_platform:
120
+ return True
121
+ else:
122
+ return False
123
+ else:
124
+ return True
125
+
126
+ def scan_folders(
127
+ self, folders_to_scan, config_tool: ConfigTool, agent_env, environment, container_platform
128
+ ):
129
+ output_queue = queue.Queue()
130
+ # Crea una lista para almacenar los hilos
131
+ threads = []
132
+ for folder in folders_to_scan:
133
+ for rule in config_tool.rules_data_type:
134
+ checkov_config = CheckovConfig(
135
+ path_config_file="",
136
+ config_file_name=rule,
137
+ framework=self.framework_mapping[rule],
138
+ checks=[
139
+ key
140
+ for key, value in config_tool.rules_data_type[rule].items()
141
+ if value["environment"].get(environment) and self.if_platform(value,container_platform)
142
+ ],
143
+ soft_fail=False,
144
+ directories=folder,
145
+ external_checks_git=[
146
+ f"{config_tool.external_checks_git}/{self.framework_mapping[rule]}"
147
+ ]
148
+ if config_tool.use_external_checks_git == "True"
149
+ and agent_env is not None
150
+ and rule in ["RULES_K8S", "RULES_CLOUDFORMATION","RULES_DOCKER"]
151
+ else [],
152
+ env=agent_env,
153
+ external_checks_dir=f"/tmp/rules/{self.framework_mapping[rule]}"
154
+ if config_tool.use_external_checks_dir == "True"
155
+ and rule in ["RULES_K8S", "RULES_CLOUDFORMATION","RULES_DOCKER"]
156
+ else [],
157
+ )
158
+
159
+ checkov_config.create_config_dict()
160
+ self.create_config_file(checkov_config)
161
+ config_tool.rules_all.update(config_tool.rules_data_type[rule])
162
+ t = threading.Thread(
163
+ target=self.async_scan,
164
+ args=(output_queue, checkov_config),
165
+ )
166
+ t.start()
167
+ threads.append(t)
168
+ # Espera a que todos los hilos terminen
169
+ for t in threads:
170
+ t.join()
171
+ # Recopila las salidas de las tareas
172
+ result_scans = []
173
+ while not output_queue.empty():
174
+ result = output_queue.get()
175
+ result_scans.extend(result)
176
+ return result_scans
177
+
178
+ def run_tool(
179
+ self, config_tool: ConfigTool, folders_to_scan, environment, container_platform, secret_tool
180
+ ):
181
+ agent_env = self.configurate_external_checks(config_tool, secret_tool)
182
+
183
+ result_scans = self.scan_folders(
184
+ folders_to_scan, config_tool, agent_env, environment, container_platform
185
+ )
186
+
187
+ checkov_deserealizator = CheckovDeserealizator()
188
+ findings_list = checkov_deserealizator.get_list_finding(
189
+ result_scans, config_tool.rules_all
190
+ )
191
+
192
+ return (
193
+ findings_list,
194
+ generate_file_from_tool(self.TOOL, result_scans, config_tool.rules_all)
195
+ )
@@ -0,0 +1,6 @@
1
+ from devsecops_engine_tools.engine_sast.engine_iac.src.domain.usecases.iac_scan import (
2
+ IacScan,
3
+ )
4
+
5
+ def init_engine_sast_rm(devops_platform_gateway, tool_gateway, dict_args, secret_tool, tool, env):
6
+ return IacScan(tool_gateway, devops_platform_gateway).process(dict_args, secret_tool, tool, env)
@@ -0,0 +1,74 @@
1
+ import json
2
+ import os
3
+ from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
4
+ from devsecops_engine_tools.engine_utilities import settings
5
+
6
+ logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
7
+
8
+
9
+ def generate_file_from_tool(tool, result_list, rules_doc):
10
+ if tool == "CHECKOV":
11
+ try:
12
+ if len(result_list) > 0:
13
+ all_failed_checks = []
14
+ summary_passed = 0
15
+ summary_failed = 0
16
+ summary_skipped = 0
17
+ summary_parsing_errors = 0
18
+ summary_resource_count = 0
19
+ checkov_version = None
20
+ for result in result_list:
21
+ failed_checks = result.get("results", {}).get("failed_checks", [])
22
+ all_failed_checks.extend(
23
+ map(lambda x: update_fields(x, rules_doc), failed_checks)
24
+ )
25
+ summary_passed += result.get("summary", {}).get("passed", 0)
26
+ summary_failed += result.get("summary", {}).get("failed", 0)
27
+ summary_skipped += result.get("summary", {}).get("skipped", 0)
28
+ summary_parsing_errors += result.get("summary", {}).get(
29
+ "parsing_errors", 0
30
+ )
31
+ summary_resource_count += result.get("summary", {}).get(
32
+ "resource_count", 0
33
+ )
34
+ checkov_version = result.get("summary", {}).get(
35
+ "checkov_version", None
36
+ )
37
+
38
+ file_name = "results.json"
39
+ results_data = {
40
+ "check_type": "Dockerfile, Kubernetes and CloudFormation",
41
+ "results": {
42
+ "failed_checks": all_failed_checks,
43
+ },
44
+ "summary": {
45
+ "passed": summary_passed,
46
+ "failed": summary_failed,
47
+ "skipped": summary_skipped,
48
+ "parsing_errors": summary_parsing_errors,
49
+ "resource_count": summary_resource_count,
50
+ "checkov_version": checkov_version,
51
+ },
52
+ }
53
+
54
+ with open(file_name, "w") as json_file:
55
+ json.dump(results_data, json_file, indent=4)
56
+
57
+ absolute_path = os.path.abspath(file_name)
58
+ return absolute_path
59
+ except Exception as ex:
60
+ logger.error(f"Error during handling checkov json integrator {ex}")
61
+
62
+
63
+ def update_fields(check_result, rules_doc):
64
+ rule_info = rules_doc.get(check_result.get("check_id"), {})
65
+
66
+ check_result["severity"] = rule_info["severity"].lower()
67
+ if "customID" in rule_info:
68
+ check_result["custom_vuln_id"] = rule_info["customID"]
69
+ if "guideline" in rule_info:
70
+ check_result["guideline"] = rule_info["guideline"]
71
+ if "category" in rule_info:
72
+ check_result["bc_category"] = rule_info["category"]
73
+
74
+ return check_result
@@ -0,0 +1,34 @@
1
+ from devsecops_engine_tools.engine_sast.engine_secret.src.infrastructure.entry_points.entry_point_tool import (
2
+ engine_secret_scan
3
+ )
4
+ from devsecops_engine_tools.engine_sast.engine_secret.src.infrastructure.driven_adapters.trufflehog.trufflehog_run import (
5
+ TrufflehogRun
6
+ )
7
+ from devsecops_engine_tools.engine_sast.engine_secret.src.infrastructure.driven_adapters.trufflehog.trufflehog_deserealizator import (
8
+ SecretScanDeserealizator
9
+ )
10
+ from devsecops_engine_tools.engine_sast.engine_secret.src.infrastructure.driven_adapters.git_cli.git_run import (
11
+ GitRun
12
+ )
13
+
14
+ def runner_secret_scan(dict_args, tool, devops_platform_gateway):
15
+ try:
16
+ tool_deserealizator = None
17
+ tool_gateway = None
18
+ git_gateway = GitRun()
19
+ if (tool == "TRUFFLEHOG"):
20
+ tool_gateway = TrufflehogRun()
21
+ tool_deserealizator = SecretScanDeserealizator()
22
+ return engine_secret_scan(
23
+ devops_platform_gateway = devops_platform_gateway,
24
+ tool_gateway = tool_gateway,
25
+ dict_args = dict_args,
26
+ tool=tool,
27
+ tool_deserealizator = tool_deserealizator,
28
+ git_gateway = git_gateway
29
+ )
30
+ except Exception as e:
31
+ raise Exception(f"Error engine_secret : {str(e)}")
32
+
33
+ if __name__ == "__main__":
34
+ runner_secret_scan()