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,67 @@
1
+ import json
2
+ from devsecops_engine_tools.engine_utilities.utils.api_error import ApiError
3
+ from urllib.parse import urlsplit, unquote
4
+ from azure.devops.connection import Connection
5
+ from msrest.authentication import BasicAuthentication
6
+ from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
7
+ from devsecops_engine_tools.engine_utilities.settings import SETTING_LOGGER
8
+ from azure.devops.v7_1.git.models import GitVersionDescriptor
9
+
10
+ logger = MyLogger.__call__(**SETTING_LOGGER).get_logger()
11
+
12
+
13
+ class AzureDevopsApi:
14
+ def __init__(
15
+ self,
16
+ personal_access_token: str = "",
17
+ project_remote_config: str = "",
18
+ organization_url: str = "",
19
+ compact_remote_config_url: str = "",
20
+ repository_id: str = "",
21
+ remote_config_path: str = "",
22
+ ):
23
+ self.__personal_access_token = personal_access_token
24
+ self.__organization_url = organization_url
25
+ self.__project_remote_config = project_remote_config
26
+ self.__compact_remote_config_url = compact_remote_config_url
27
+ self.__repository_id = repository_id
28
+ self.__remote_config_path = remote_config_path
29
+
30
+ def segment_url(self):
31
+ if self.__compact_remote_config_url:
32
+ url_parts = urlsplit(self.__compact_remote_config_url)
33
+ path = unquote(url_parts.path)
34
+ path_parts = path.split("/")
35
+ self.__organization_url = url_parts.scheme + "://" + url_parts.netloc + "/"
36
+ self.__project_remote_config = path_parts[1]
37
+ self.__repository_id = path_parts[3]
38
+ query_parts = url_parts.query.split("=")
39
+ self.__remote_config_path = query_parts[1]
40
+
41
+ def get_azure_connection(self) -> Connection:
42
+ self.segment_url()
43
+ try:
44
+ credentials = BasicAuthentication(username="", password=self.__personal_access_token)
45
+
46
+ connection = Connection(base_url=self.__organization_url, creds=credentials)
47
+
48
+ return connection
49
+ except Exception as e:
50
+ raise ApiError("Error getting Azure DevOps connection: " + str(e))
51
+
52
+ def get_remote_json_config(self, connection: Connection):
53
+ try:
54
+ git_client = connection.clients.get_git_client()
55
+ git_version_descriptor = GitVersionDescriptor(version_type="branch", version="feature/migration_open")
56
+ file_content = git_client.get_item_text(
57
+ repository_id=self.__repository_id,
58
+ path=self.__remote_config_path,
59
+ project=self.__project_remote_config,
60
+ version_descriptor=git_version_descriptor,
61
+ )
62
+ data = json.loads(b"".join(file_content).decode("utf-8"))
63
+ return data
64
+ except Exception as e:
65
+ # Arrojar una excepción personalizada
66
+ logger.error(str(e))
67
+ raise ApiError("Error getting remote configuration file: " + str(e))
@@ -0,0 +1,21 @@
1
+ from enum import Enum
2
+
3
+ """https://learn.microsoft.com/en-us/azure/devops/pipelines/scripts/logging-commands?view=azure-devops&tabs=bash """
4
+
5
+
6
+ class BaseEnum(Enum):
7
+ def get_message(self, message: str):
8
+ return self._value_ + message
9
+
10
+
11
+ class AzureMessageResultPipeline(Enum):
12
+ Failed = "##vso[task.complete result=Failed;]DONE"
13
+ SucceededWithIssues = "##vso[task.complete result=SucceededWithIssues;]DONE"
14
+ Succeeded = "##vso[task.complete result=Succeeded;]DONE"
15
+
16
+
17
+ class AzureMessageLoggingPipeline(BaseEnum):
18
+ WarningLogging = "##[warning]"
19
+ ErrorLogging = "##[error]"
20
+ SucceededLogging = "##[section]"
21
+ InfoLogging = "##[command]"
@@ -0,0 +1,65 @@
1
+ import os
2
+ from enum import Enum
3
+ from devsecops_engine_tools.engine_utilities.input_validations.env_utils import EnvVariables
4
+
5
+ """ Info de https://learn.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&tabs=yaml%2Cbatch
6
+ Build variables (DevOps Services) https://learn.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml """
7
+
8
+
9
+ class EnvVariables:
10
+ @staticmethod
11
+ def get_value(env_name):
12
+ env_var = os.environ.get(env_name)
13
+ if env_var is None:
14
+ raise ValueError(f"La variable de entorno {env_name} no está definida")
15
+ return env_var
16
+
17
+
18
+ class BaseEnum(Enum):
19
+ @property
20
+ def env_name(self):
21
+ return self._value_.replace(".", "_").upper()
22
+
23
+ def value(self):
24
+ return EnvVariables.get_value(self.env_name)
25
+
26
+
27
+ class SystemVariables(BaseEnum):
28
+ System_AccessToken = "System.AccessToken"
29
+ System_CollectionId = "System.CollectionId"
30
+ System_DefaultWorkingDirectory = "System.DefaultWorkingDirectory"
31
+ System_StageName = "System.StageName"
32
+ System_HostType = "System.HostType"
33
+ System_TeamFoundationCollectionUri = "System.TeamFoundationCollectionUri"
34
+ System_TeamProject = "System.TeamProject"
35
+ System_TeamProjectId = "System.TeamProject"
36
+ System_PullRequestId = "System.PullRequest.PullRequestId"
37
+ System_TargetBranchName = "System.PullRequest.TargetBranchName"
38
+ System_SourceBranch = "System.PullRequest.SourceBranch"
39
+
40
+
41
+ class BuildVariables(BaseEnum):
42
+ Build_BuildId = "Build.BuildId"
43
+ Build_BuildNumber = "Build.BuildNumber"
44
+ Build_DefinitionName = "Build.DefinitionName"
45
+ Build_Project_Name = "Build.ProjectName"
46
+ Build_Repository_Name = "Build.Repository.Name"
47
+ Build_SourceBranch = "Build.SourceBranch"
48
+ Build_SourceBranchName = "Build.SourceBranchName"
49
+ Build_StagingDirectory = "Build.StagingDirectory"
50
+ Build_SourceVersion = "Build.SourceVersion"
51
+ Build_Repository_Provider = "Build.Repository.Provider"
52
+
53
+
54
+ class ReleaseVariables(BaseEnum):
55
+ Release_Definitionname = "Release.DefinitionName"
56
+ Release_Releaseid = "Release.ReleaseId"
57
+ Artifact_Path = "ARTIFACT_PATH"
58
+ Environment = "ENV"
59
+
60
+
61
+ class AgentVariables(BaseEnum):
62
+ Agent_BuildDirectory = "Agent.BuildDirectory"
63
+ Agent_WorkFolder = "Agent.WorkFolder"
64
+ Agent_TempDirectory = "Agent.TempDirectory"
65
+ Agent_OS = "Agent.OS"
@@ -0,0 +1,5 @@
1
+ from .domain.request_objects.import_scan import ImportScanRequest
2
+ from .domain.request_objects.finding import FindingRequest
3
+ from .applications.defect_dojo import DefectDojo
4
+ from .applications.finding import Finding
5
+ from .applications.connect import Connect
@@ -0,0 +1,37 @@
1
+ from devsecops_engine_tools.engine_utilities.utils.api_error import ApiError
2
+ from devsecops_engine_tools.engine_utilities.defect_dojo.domain.request_objects.import_scan import ImportScanRequest
3
+ from devsecops_engine_tools.engine_utilities.defect_dojo.domain.serializers.import_scan import ImportScanSerializer
4
+ from devsecops_engine_tools.engine_utilities.defect_dojo.domain.user_case.cmdb import CmdbUserCase
5
+ from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.cmdb import CmdbRestConsumer
6
+ from devsecops_engine_tools.engine_utilities.azuredevops.infrastructure.azure_devops_api import AzureDevopsApi
7
+ from devsecops_engine_tools.engine_utilities.utils.session_manager import SessionManager
8
+
9
+
10
+ class Connect:
11
+ @staticmethod
12
+ # Configuration Management Database aws
13
+ def cmdb(**kwargs) -> ImportScanRequest:
14
+ try:
15
+ request: ImportScanRequest = ImportScanSerializer().load(kwargs)
16
+ rc = CmdbRestConsumer(
17
+ token=request.token_cmdb,
18
+ host=request.host_cmdb,
19
+ mapping_cmdb=request.cmdb_mapping,
20
+ session=SessionManager(),
21
+ )
22
+
23
+ utils_azure = AzureDevopsApi(
24
+ personal_access_token=request.personal_access_token,
25
+ project_remote_config=request.project_remote_config,
26
+ organization_url=request.organization_url,
27
+ compact_remote_config_url=request.compact_remote_config_url,
28
+ repository_id=request.repository_id,
29
+ remote_config_path=request.remote_config_path,
30
+ )
31
+
32
+ uc = CmdbUserCase(rest_consumer_cmdb=rc, utils_azure=utils_azure, expression=request.expression)
33
+ response = uc.execute(request)
34
+ except Exception as e:
35
+ return e
36
+
37
+ return response
@@ -0,0 +1,40 @@
1
+ from devsecops_engine_tools.engine_utilities.utils.api_error import ApiError
2
+ from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
3
+ from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.import_scan import ImportScanRestConsumer
4
+ from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.product_type import ProductTypeRestConsumer
5
+ from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.product import ProductRestConsumer
6
+ from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.scan_configurations import (
7
+ ScanConfigrationRestConsumer,
8
+ )
9
+ from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.engagement import EngagementRestConsumer
10
+ from devsecops_engine_tools.engine_utilities.defect_dojo.domain.request_objects.import_scan import ImportScanRequest
11
+ from devsecops_engine_tools.engine_utilities.defect_dojo.domain.user_case.import_scan import ImportScanUserCase
12
+ from devsecops_engine_tools.engine_utilities.utils.session_manager import SessionManager
13
+ from devsecops_engine_tools.engine_utilities.settings import SETTING_LOGGER
14
+
15
+ logger = MyLogger.__call__(**SETTING_LOGGER).get_logger()
16
+
17
+
18
+ class DefectDojo:
19
+ @staticmethod
20
+ def send_import_scan(request: ImportScanRequest):
21
+ try:
22
+ if not isinstance(request, ImportScanRequest):
23
+ return request
24
+ rest_import_scan = ImportScanRestConsumer(request, session=SessionManager())
25
+ rest_product_type = ProductTypeRestConsumer(request, session=SessionManager())
26
+ rest_product = ProductRestConsumer(request, session=SessionManager())
27
+ rest_engagement = EngagementRestConsumer(request, session=SessionManager())
28
+
29
+ rest_scan_configuration = ScanConfigrationRestConsumer(request, session=SessionManager())
30
+ uc = ImportScanUserCase(
31
+ rest_import_scan,
32
+ rest_product_type,
33
+ rest_product,
34
+ rest_scan_configuration,
35
+ rest_engagement=rest_engagement,
36
+ )
37
+ response = uc.execute(request)
38
+ return response
39
+ except ApiError as e:
40
+ return e
@@ -0,0 +1,40 @@
1
+ from devsecops_engine_tools.engine_utilities.defect_dojo.domain.request_objects.finding import FindingRequest
2
+ from devsecops_engine_tools.engine_utilities.defect_dojo.domain.serializers.finding import FindingSerializer
3
+ from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.finding import FindingRestConsumer
4
+ from devsecops_engine_tools.engine_utilities.defect_dojo.domain.user_case.finding import FindingUserCase, FindingGetUserCase
5
+ from devsecops_engine_tools.engine_utilities.utils.session_manager import SessionManager
6
+ from devsecops_engine_tools.engine_utilities.utils.api_error import ApiError
7
+ from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
8
+ from devsecops_engine_tools.engine_utilities import settings
9
+
10
+ logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
11
+
12
+
13
+ class Finding:
14
+ @staticmethod
15
+ def serializer(*args, **request):
16
+ serializer = FindingSerializer()
17
+ errors = serializer.validate(request)
18
+ if errors:
19
+ logger.error(errors)
20
+ raise Exception(errors)
21
+
22
+ @staticmethod
23
+ def close_finding(session, **request):
24
+ try:
25
+ Finding.serializer(**request)
26
+ rest_finding = FindingRestConsumer(session=session)
27
+ uc = FindingUserCase(rest_finding)
28
+ return uc.execute(request)
29
+ except Exception as e:
30
+ raise e
31
+
32
+ @staticmethod
33
+ def get_finding(session, **request):
34
+ try:
35
+ Finding.serializer(**request)
36
+ rest_finding = FindingRestConsumer(session=session)
37
+ uc = FindingGetUserCase(rest_finding)
38
+ return uc.execute(request)
39
+ except Exception as e:
40
+ raise e
@@ -0,0 +1,11 @@
1
+ import dataclasses
2
+ from devsecops_engine_tools.engine_utilities.utils.dataclass_classmethod import FromDictMixin
3
+
4
+
5
+ @dataclasses.dataclass
6
+ class Cmdb(FromDictMixin):
7
+ product_type_name: str = ""
8
+ product_name: str = ""
9
+ tag_product: str = ""
10
+ product_description: str = ""
11
+ codigo_app: str = ""
@@ -0,0 +1,55 @@
1
+ import dataclasses
2
+ from typing import List
3
+ from devsecops_engine_tools.engine_utilities.utils.dataclass_classmethod import FromDictMixin
4
+
5
+
6
+ @dataclasses.dataclass
7
+ class Engagement(FromDictMixin):
8
+ id: int = 0
9
+ tags = []
10
+ name: str = ""
11
+ description: str = ""
12
+ version: str = ""
13
+ first_contacted: str = ""
14
+ target_start: str = ""
15
+ target_end: str = ""
16
+ reason: str = ""
17
+ updated: str = ""
18
+ created: str = ""
19
+ active: str = ""
20
+ tracker: str = ""
21
+ test_strategy: str = ""
22
+ threat_model: str = ""
23
+ api_test: str = ""
24
+ pen_test: str = ""
25
+ check_list: str = ""
26
+ status: str = ""
27
+ progress: str = ""
28
+ tmodel_path: str = ""
29
+ done_testing: str = ""
30
+ engagement_type: str = ""
31
+ build_id: str = ""
32
+ commit_hash: str = ""
33
+ branch_tag: str = ""
34
+ source_code_management_uri: str = ""
35
+ deduplication_on_engagement: str = ""
36
+ lead: int = 0
37
+ requester: str = ""
38
+ preset: str = ""
39
+ report_type: str = ""
40
+ product: int = 0
41
+ build_server: str = ""
42
+ source_code_management_server: str = ""
43
+ orchestration_engine: str = ""
44
+ notes = []
45
+ files = []
46
+ risk_acceptance = []
47
+
48
+
49
+ @dataclasses.dataclass
50
+ class EngagementList(FromDictMixin):
51
+ count: int = 0
52
+ next = None
53
+ previous = None
54
+ results: List[Engagement] = dataclasses.field(default_factory=list)
55
+ prefetch = None
@@ -0,0 +1,96 @@
1
+ import dataclasses
2
+ from typing import List
3
+ from devsecops_engine_tools.engine_utilities.utils.dataclass_classmethod import FromDictMixin
4
+
5
+
6
+ @dataclasses.dataclass
7
+ class Finding(FromDictMixin):
8
+ id: int = 0
9
+ tags: List[None] = dataclasses.field(default_factory=list)
10
+ request_response = None
11
+ req_resp: List[None] = dataclasses.field(default_factory=list)
12
+ accepted_risks: List[None] = dataclasses.field(default_factory=list)
13
+ push_to_jira: bool = False
14
+ age: int = 0
15
+ sla_days_remaining: int = 0
16
+ finding_meta: List[None] = dataclasses.field(default_factory=list)
17
+ related_fields = None
18
+ jira_creation = None
19
+ jira_change = None
20
+ display_status: str = ""
21
+ finding_groups: List[None] = dataclasses.field(default_factory=list)
22
+ vulnerability_ids: List[None] = dataclasses.field(default_factory=list)
23
+ reporter: int = 0
24
+ title: int = 0
25
+ date: str = ""
26
+ sla_start_date = None
27
+ cwe: int = 0
28
+ cvssv3 = None
29
+ cvssv3_score = None
30
+ url: str = ""
31
+ severity: str = ""
32
+ description: str = ""
33
+ mitigation = None
34
+ impact = None
35
+ steps_to_reproduce = None
36
+ severity_justification = None
37
+ references = None
38
+ active: bool = None
39
+ verified: bool = None
40
+ false_p: bool = None
41
+ duplicate: bool = None
42
+ out_of_scope: bool = None
43
+ risk_status: str = ""
44
+ risk_accepted: bool = None
45
+ under_review: bool = None
46
+ last_status_update: str = ""
47
+ under_defect_review: bool = None
48
+ is_mitigated: bool = None
49
+ thread_id: int = -1
50
+ mitigated = None
51
+ numerical_severity: str = ""
52
+ last_reviewed: str = ""
53
+ param = None
54
+ payload = None
55
+ hash_code: str = ""
56
+ line = None
57
+ file_path: str = ""
58
+ component_name: str = ""
59
+ component_version: str = ""
60
+ static_finding: bool = None
61
+ dynamic_finding: bool = None
62
+ created: str = ""
63
+ scanner_confidence = None
64
+ unique_id_from_tool: str = ""
65
+ vuln_id_from_tool: str = ""
66
+ sast_source_object = None
67
+ sast_sink_object = None
68
+ sast_source_line = None
69
+ sast_source_file_path = None
70
+ nb_occurences = None
71
+ publish_date = None
72
+ service = None
73
+ planned_remediation_date = None
74
+ planned_remediation_version = None
75
+ effort_for_fixing = None
76
+ test: int = -1
77
+ duplicate_finding = None
78
+ review_requested_by = None
79
+ defect_review_requested_by = None
80
+ mitigated_by = None
81
+ last_reviewed_by: int = -1
82
+ sonarqube_issue = None
83
+ endpoints: List[None] = dataclasses.field(default_factory=list)
84
+ reviewers: List[None] = dataclasses.field(default_factory=list)
85
+ notes: List[None] = dataclasses.field(default_factory=list)
86
+ files: List[None] = dataclasses.field(default_factory=list)
87
+ found_by: List[None] = dataclasses.field(default_factory=list)
88
+
89
+
90
+ @dataclasses.dataclass
91
+ class FindingList(FromDictMixin):
92
+ count: int = 0
93
+ next = None
94
+ previous = None
95
+ results: List[Finding] = dataclasses.field(default_factory=list)
96
+ prefetch = None
@@ -0,0 +1,35 @@
1
+ import dataclasses
2
+ from typing import List
3
+ from devsecops_engine_tools.engine_utilities.utils.dataclass_classmethod import FromDictMixin
4
+
5
+
6
+ @dataclasses.dataclass
7
+ class Product(FromDictMixin):
8
+ id: int = 0
9
+ findings_count: int = 0
10
+ findings_list: List[None] = dataclasses.field(default_factory=list)
11
+ tags: List[None] = dataclasses.field(default_factory=list)
12
+ product_meta: List[None] = dataclasses.field(default_factory=list)
13
+ name: int = ""
14
+ description: str = ""
15
+ created: str = ""
16
+ prod_numeric_grade: int = 0
17
+ business_criticality = None
18
+ platform = None
19
+ lifecycle = None
20
+ origin = None
21
+ user_records = None
22
+ revenue = None
23
+ external_audience: bool = None
24
+ internet_accessible: bool = None
25
+ enable_simple_risk_acceptance: bool = None
26
+ enable_full_risk_acceptance: bool = None
27
+ disable_sla_breach_notifications: bool = None
28
+ product_manager = None
29
+ technical_contact = None
30
+ team_manager = None
31
+ prod_type: int = 0
32
+ sla_configuration: int = 0
33
+ members: List[int] = dataclasses.field(default_factory=list)
34
+ authorization_groups: List[None] = dataclasses.field(default_factory=list)
35
+ regulations: List[None] = dataclasses.field(default_factory=list)
@@ -0,0 +1,12 @@
1
+ import dataclasses
2
+ from typing import List
3
+ from devsecops_engine_tools.engine_utilities.utils.dataclass_classmethod import FromDictMixin
4
+ from devsecops_engine_tools.engine_utilities.defect_dojo.domain.models.product import Product
5
+
6
+
7
+ @dataclasses.dataclass
8
+ class ProductList(FromDictMixin):
9
+ count: int = 0
10
+ next = None
11
+ previous = None
12
+ results: List[Product] = dataclasses.field(default_factory=list)
@@ -0,0 +1,16 @@
1
+ import dataclasses
2
+ from typing import List
3
+ from devsecops_engine_tools.engine_utilities.utils.dataclass_classmethod import FromDictMixin
4
+
5
+
6
+ @dataclasses.dataclass
7
+ class ProductType(FromDictMixin):
8
+ id: int = 0
9
+ name: str = ""
10
+ description: str = ""
11
+ critical_product: bool = None
12
+ key_product: bool = None
13
+ updated: str = ""
14
+ created: str = ""
15
+ members: List[int] = dataclasses.field(default_factory=list)
16
+ authorization_groups: List[None] = dataclasses.field(default_factory=list)
@@ -0,0 +1,13 @@
1
+ import dataclasses
2
+ from typing import List
3
+ from devsecops_engine_tools.engine_utilities.utils.dataclass_classmethod import FromDictMixin
4
+ from devsecops_engine_tools.engine_utilities.defect_dojo.domain.models.product_type import ProductType
5
+
6
+
7
+ @dataclasses.dataclass
8
+ class ProductTypeList(FromDictMixin):
9
+ count: int = 0
10
+ next = None
11
+ previous = None
12
+ results: List[ProductType] = dataclasses.field(default_factory=list)
13
+ prefetch = None
@@ -0,0 +1,21 @@
1
+ import dataclasses
2
+ from typing import List
3
+ from devsecops_engine_tools.engine_utilities.utils.dataclass_classmethod import FromDictMixin
4
+
5
+
6
+ @dataclasses.dataclass
7
+ class ScanConfiguration(FromDictMixin):
8
+ id: int = 0
9
+ service_key_1: str = ""
10
+ service_key_2: str = ""
11
+ service_key_3: str = ""
12
+ product: int = 0
13
+ tool_configuration: int = 0
14
+
15
+
16
+ @dataclasses.dataclass
17
+ class ScanConfigurationList(FromDictMixin):
18
+ count: int = 2
19
+ next = None
20
+ previous = None
21
+ results: List[ScanConfiguration] = dataclasses.field(default_factory=list)
@@ -0,0 +1,95 @@
1
+ import dataclasses
2
+
3
+
4
+ @dataclasses.dataclass
5
+ class FindingRequest:
6
+ active: bool = True
7
+ component_name: str = ""
8
+ component_version: str = ""
9
+ created: str = ""
10
+ cvssv3: str = ""
11
+ cvssv3_score: float = 0.0
12
+ cwe = None
13
+ date: str = ""
14
+ defect_review_requested_by = None
15
+ description: str = ""
16
+ duplicate: bool = True
17
+ duplicate_finding = 0
18
+ dynamic_finding: bool = False
19
+ effort_for_fixing: str = ""
20
+ endpoints = None
21
+ false_p: bool = False
22
+ file_path: str = ""
23
+ finding_group = None
24
+ found_by: int = 0
25
+ has_jira: bool = False
26
+ has_tags: bool = False
27
+ hash_code: str = ""
28
+ id = None
29
+ impact: str = ""
30
+ inherited_tags = None
31
+ is_mitigated: bool = False
32
+ jira_change: str = ""
33
+ jira_creation: str = ""
34
+ last_reviewed: str = ""
35
+ last_reviewed_by = None
36
+ limit: int = 0
37
+ mitigated: str = ""
38
+ mitigated_by = None
39
+ mitigation: str = ""
40
+ nb_occurences = None
41
+ not_tag: str = ""
42
+ not_tags = None
43
+ not_test__engagement__product__tags = None
44
+ not_test__engagement__tags = None
45
+ not_test__tags = None
46
+ numerical_severity: str = ""
47
+ offset: int = 0
48
+ out_of_scope: bool = False
49
+ outside_of_sla: int = 0
50
+ param: str = ""
51
+ payload: str = ""
52
+ planned_remediation_date: str = ""
53
+ planned_remediation_version: str = ""
54
+ prefetch = None
55
+ product_name: str = ""
56
+ product_name_contains: str = ""
57
+ publish_date: str = ""
58
+ references: str = ""
59
+ related_fields: str = ""
60
+ reporter = None
61
+ review_request_by = None
62
+ reviewers = None
63
+ risk_accetance: int = 0
64
+ risk_accepted: bool = False
65
+ sast_sink_object: str = ""
66
+ sast_source_object: str = ""
67
+ scanner_confidence = None
68
+ service: str = ""
69
+ severity: str = ""
70
+ severity_justification: str = ""
71
+ sla_start_date: str = ""
72
+ sonarqube_issue = None
73
+ static_finding: bool = False
74
+ steps_to_reproduce: str = ""
75
+ tag: str = ""
76
+ tags: str = ""
77
+ test = None
78
+ test__engagement = None
79
+ test__engagement__product = None
80
+ test__engagement__product__prod_type = None
81
+ test__engagement__product__tags = None
82
+ test__engagement__tags = None
83
+ test__tags = None
84
+ test__test_type = None
85
+ title: str = ""
86
+ under_defect_review: bool = False
87
+ under_review: bool = False
88
+ unique_id_from_tool: str = ""
89
+ verified: bool = False
90
+ vuln_id_from_tool: str = ""
91
+ vulnerability_id: str = ""
92
+
93
+ @classmethod
94
+ def from_dict(cls, obj):
95
+ obj = cls(unique_id_from_tool=obj.get("unique_id_from_tool"))