devsecops-engine-tools 1.7.31__tar.gz → 1.7.33__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of devsecops-engine-tools might be problematic. Click here for more details.
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/PKG-INFO +2 -2
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/applications/runner_engine_core.py +74 -17
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/domain/usecases/break_build.py +3 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/config_tool.py +1 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_iac/src/domain/usecases/iac_scan.py +6 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/gateways/tool_gateway.py +1 -1
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/dependencies_sca_scan.py +12 -6
- devsecops_engine_tools-1.7.33/devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/handle_remote_config_patterns.py +38 -0
- devsecops_engine_tools-1.7.33/devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/xray_manager_scan.py +267 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/entry_points/entry_point_tool.py +13 -14
- devsecops_engine_tools-1.7.33/devsecops_engine_tools/version.py +1 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools.egg-info/PKG-INFO +2 -2
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools.egg-info/SOURCES.txt +0 -1
- devsecops_engine_tools-1.7.31/devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/find_artifacts.py +0 -100
- devsecops_engine_tools-1.7.31/devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/handle_remote_config_patterns.py +0 -75
- devsecops_engine_tools-1.7.31/devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/xray_manager_scan.py +0 -150
- devsecops_engine_tools-1.7.31/devsecops_engine_tools/version.py +0 -1
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/README.md +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/applications/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/deployment/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/deployment/infrastructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/domain/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/domain/model/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/domain/model/customs_exceptions.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/domain/model/exclusions.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/domain/model/finding.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/domain/model/gateway/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/domain/model/gateway/devops_platform_gateway.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/domain/model/gateway/metrics_manager_gateway.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/domain/model/gateway/printer_table_gateway.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/domain/model/gateway/secrets_manager_gateway.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/domain/model/gateway/vulnerability_management_gateway.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/domain/model/input_core.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/domain/model/level_compliance.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/domain/model/level_vulnerability.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/domain/model/report.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/domain/model/threshold.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/domain/model/vulnerability_management.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/domain/usecases/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/domain/usecases/handle_risk.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/domain/usecases/handle_scan.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/domain/usecases/metrics_manager.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/infrastructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/s3_manager.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/secrets_manager.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/azure_devops.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/github/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/github/github_actions.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/printer_pretty_table/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/printer_pretty_table/printer_pretty_table.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/runtime_local/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/runtime_local/runtime_local.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/infrastructure/entry_points/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/infrastructure/entry_points/entry_point_core.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/infrastructure/helpers/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/infrastructure/helpers/aws.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_core/src/infrastructure/helpers/util.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_dast/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_dast/src/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_dast/src/applications/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_dast/src/deployment/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_dast/src/deployment/infrastructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_dast/src/domain/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_dast/src/domain/model/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_dast/src/domain/usecases/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_dast/src/infrastructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_dast/src/infrastructure/entry_points/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_dast/src/infrastructure/helpers/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_risk/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_risk/src/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_risk/src/applications/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_risk/src/applications/runner_engine_risk.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_risk/src/deployment/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_risk/src/deployment/infrastructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_risk/src/domain/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_risk/src/domain/model/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_risk/src/domain/model/gateways/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_risk/src/domain/usecases/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_risk/src/domain/usecases/break_build.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_risk/src/domain/usecases/handle_filters.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_risk/src/infrastructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_risk/src/infrastructure/driven_adapters/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_risk/src/infrastructure/entry_points/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_risk/src/infrastructure/entry_points/entry_point_risk.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_risk/src/infrastructure/helpers/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_iac/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_iac/src/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_iac/src/applications/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_iac/src/applications/runner_iac_scan.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_iac/src/deployment/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_iac/src/deployment/infrastructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_iac/src/domain/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/gateways/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/gateways/tool_gateway.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_iac/src/domain/usecases/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/checkov_config.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/checkov_deserealizator.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/checkov_tool.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/kics/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/kics/kics_deserealizator.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/kics/kics_tool.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/kubescape/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/kubescape/kubescape_deserealizator.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/kubescape/kubescape_tool.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/entry_points/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/entry_points/entry_point_tool.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/helpers/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/helpers/file_generator_tool.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_secret/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_secret/src/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_secret/src/applications/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_secret/src/applications/runner_secret_scan.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_secret/src/deployment/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_secret/src/deployment/infrastructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_secret/src/domain/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/DeserializeConfigTool.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/gateway/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/gateway/gateway_deserealizator.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/gateway/git_gateway.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/gateway/tool_gateway.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_secret/src/domain/usecases/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_secret/src/domain/usecases/secret_scan.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_secret/src/domain/usecases/set_input_core.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/git_cli/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/git_cli/git_run.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/trufflehog/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/trufflehog/trufflehog_deserealizator.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/trufflehog/trufflehog_run.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/entry_points/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/entry_points/entry_point_tool.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_container/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_container/src/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_container/src/applications/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_container/src/applications/runner_container_scan.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_container/src/deployment/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_container/src/deployment/infrastructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_container/src/domain/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_container/src/domain/model/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/deserealizator_gateway.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/images_gateway.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/tool_gateway.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/container_sca_scan.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/handle_remote_config_patterns.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/set_input_core.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/docker/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/docker/docker_images.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/prisma_cloud_manager_scan.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/prisma_deserialize_output.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/trivy_deserialize_output.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/trivy_manager_scan.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/entry_points/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/entry_points/entry_point_tool.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/helpers/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_dependencies/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_dependencies/src/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_dependencies/src/applications/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_dependencies/src/applications/runner_dependencies_scan.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_dependencies/src/deployment/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_dependencies/src/deployment/infrastructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/gateways/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/gateways/deserializator_gateway.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/set_input_core.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/xray_deserialize_output.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/entry_points/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/helpers/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/azuredevops/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/azuredevops/infrastructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/azuredevops/infrastructure/azure_devops_api.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/azuredevops/models/AzureMessageLoggingPipeline.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/azuredevops/models/AzurePredefinedVariables.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/azuredevops/models/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/applications/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/applications/connect.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/applications/defect_dojo.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/applications/finding.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/cmdb.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/engagement.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/finding.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/product.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/product_list.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/product_type.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/product_type_list.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/scan_configuration.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/finding.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/import_scan.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/finding.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/import_scan.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/cmdb.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/finding.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/import_scan.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/hello_world.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/cmdb.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/engagement.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/finding.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/import_scan.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/product.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/product_type.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/scan_configurations.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/settings/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/settings/settings.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/repository/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/github/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/github/infrastructure/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/github/infrastructure/github_api.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/github/models/GithubPredefinedVariables.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/github/models/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/input_validations/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/input_validations/env_utils.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/input_validations/validate_input_with_regex_letters_number_and_only.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/settings.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/ssh/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/ssh/managment_private_key.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/utils/__init__.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/utils/api_error.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/utils/dataclass_classmethod.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/utils/datetime_parsing.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/utils/logger_info.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/utils/name_conversion.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/utils/printers.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools/engine_utilities/utils/session_manager.py +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools.egg-info/dependency_links.txt +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools.egg-info/entry_points.txt +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools.egg-info/requires.txt +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/devsecops_engine_tools.egg-info/top_level.txt +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/setup.cfg +0 -0
- {devsecops_engine_tools-1.7.31 → devsecops_engine_tools-1.7.33}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: devsecops-engine-tools
|
|
3
|
-
Version: 1.7.
|
|
3
|
+
Version: 1.7.33
|
|
4
4
|
Summary: Tool for DevSecOps strategy
|
|
5
5
|
Home-page: https://github.com/bancolombia/devsecops-engine-tools
|
|
6
6
|
Author: Bancolombia DevSecOps Team
|
|
@@ -64,7 +64,7 @@ pip3 install devsecops-engine-tools
|
|
|
64
64
|
### Scan running - flags (CLI)
|
|
65
65
|
|
|
66
66
|
```bash
|
|
67
|
-
devsecops-engine-tools --platform_devops ["local","azure","github"] --remote_config_repo ["remote_config_repo"] --tool ["engine_iac", "engine_dast", "engine_secret", "engine_dependencies", "engine_container"] --folder_path ["Folder path scan engine_iac"] --platform ["k8s","cloudformation","docker", "openapi"] --use_secrets_manager ["false", "true"] --use_vulnerability_management ["false", "true"] --send_metrics ["false", "true"] --token_cmdb ["token_cmdb"] --token_vulnerability_management ["token_vulnerability_management"] --token_engine_container ["token_engine_container"] --token_engine_dependencies ["token_engine_dependencies"]
|
|
67
|
+
devsecops-engine-tools --platform_devops ["local","azure","github"] --remote_config_repo ["remote_config_repo"] --tool ["engine_iac", "engine_dast", "engine_secret", "engine_dependencies", "engine_container"] --folder_path ["Folder path scan engine_iac"] --platform ["k8s","cloudformation","docker", "openapi"] --use_secrets_manager ["false", "true"] --use_vulnerability_management ["false", "true"] --send_metrics ["false", "true"] --token_cmdb ["token_cmdb"] --token_vulnerability_management ["token_vulnerability_management"] --token_engine_container ["token_engine_container"] --token_engine_dependencies ["token_engine_dependencies"] --xray_mode ["scan", "audit"]
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
### Structure Remote Config
|
|
@@ -31,26 +31,48 @@ from devsecops_engine_tools.version import version
|
|
|
31
31
|
|
|
32
32
|
logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
|
|
33
33
|
|
|
34
|
+
|
|
34
35
|
def parse_separated_list(value, choices):
|
|
35
|
-
values = value.split(
|
|
36
|
+
values = value.split(",")
|
|
36
37
|
# Validar cada elemento de la lista
|
|
37
38
|
for val in values:
|
|
38
39
|
if val not in choices:
|
|
39
|
-
raise argparse.ArgumentTypeError(
|
|
40
|
-
|
|
40
|
+
raise argparse.ArgumentTypeError(
|
|
41
|
+
f"Invalid value: {val}. Valid values are: {', '.join(choices)}"
|
|
42
|
+
)
|
|
43
|
+
|
|
41
44
|
return values
|
|
42
45
|
|
|
46
|
+
|
|
43
47
|
def parse_choices(choices):
|
|
44
48
|
def parse_with_choices(value):
|
|
45
49
|
return parse_separated_list(value, choices)
|
|
50
|
+
|
|
46
51
|
return parse_with_choices
|
|
47
52
|
|
|
53
|
+
|
|
48
54
|
def get_inputs_from_cli(args):
|
|
49
55
|
parser = argparse.ArgumentParser()
|
|
50
|
-
parser.add_argument(
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
parser.add_argument(
|
|
56
|
+
parser.add_argument(
|
|
57
|
+
"-v", "--version", action="version", version="{version}".format(version=version)
|
|
58
|
+
)
|
|
59
|
+
parser.add_argument(
|
|
60
|
+
"-pd",
|
|
61
|
+
"--platform_devops",
|
|
62
|
+
choices=["azure", "github", "local"],
|
|
63
|
+
type=str,
|
|
64
|
+
required=True,
|
|
65
|
+
help="Platform where is executed",
|
|
66
|
+
)
|
|
67
|
+
parser.add_argument(
|
|
68
|
+
"-rcf",
|
|
69
|
+
"--remote_config_repo",
|
|
70
|
+
type=str,
|
|
71
|
+
required=True,
|
|
72
|
+
help="Name or Folder Path of Config Repo",
|
|
73
|
+
)
|
|
74
|
+
parser.add_argument(
|
|
75
|
+
"-t",
|
|
54
76
|
"--tool",
|
|
55
77
|
choices=[
|
|
56
78
|
"engine_iac",
|
|
@@ -64,9 +86,20 @@ def get_inputs_from_cli(args):
|
|
|
64
86
|
required=True,
|
|
65
87
|
help="Tool to execute",
|
|
66
88
|
)
|
|
67
|
-
parser.add_argument(
|
|
68
|
-
|
|
69
|
-
"--
|
|
89
|
+
parser.add_argument(
|
|
90
|
+
"-fp",
|
|
91
|
+
"--folder_path",
|
|
92
|
+
type=str,
|
|
93
|
+
required=False,
|
|
94
|
+
help="Folder Path to scan, only apply engine_iac and engine_dependencies tools",
|
|
95
|
+
)
|
|
96
|
+
parser.add_argument(
|
|
97
|
+
"-p",
|
|
98
|
+
"--platform",
|
|
99
|
+
type=parse_choices({"all", "docker", "k8s", "cloudformation", "openapi"}),
|
|
100
|
+
required=False,
|
|
101
|
+
default="all",
|
|
102
|
+
help="Platform to scan, only apply engine_iac tool",
|
|
70
103
|
)
|
|
71
104
|
parser.add_argument(
|
|
72
105
|
"--use_secrets_manager",
|
|
@@ -89,10 +122,31 @@ def get_inputs_from_cli(args):
|
|
|
89
122
|
required=False,
|
|
90
123
|
help="Enable or Disable the send metrics to the driven adapter metrics",
|
|
91
124
|
)
|
|
92
|
-
parser.add_argument(
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
parser.add_argument(
|
|
125
|
+
parser.add_argument(
|
|
126
|
+
"--token_cmdb", required=False, help="Token to connect to the CMDB"
|
|
127
|
+
)
|
|
128
|
+
parser.add_argument(
|
|
129
|
+
"--token_vulnerability_management",
|
|
130
|
+
required=False,
|
|
131
|
+
help="Token to connect to the Vulnerability Management",
|
|
132
|
+
)
|
|
133
|
+
parser.add_argument(
|
|
134
|
+
"--token_engine_container",
|
|
135
|
+
required=False,
|
|
136
|
+
help="Token to execute engine_container if is necessary",
|
|
137
|
+
)
|
|
138
|
+
parser.add_argument(
|
|
139
|
+
"--token_engine_dependencies",
|
|
140
|
+
required=False,
|
|
141
|
+
help="Token to execute engine_dependencies if is necessary. If using xray as engine_dependencies tool, the token is the base64 of artifactory server config that can be obtain from jfrog cli with 'jf config export <ServerID>' command.",
|
|
142
|
+
)
|
|
143
|
+
parser.add_argument(
|
|
144
|
+
"--xray_mode",
|
|
145
|
+
choices=["scan", "audit"],
|
|
146
|
+
required=False,
|
|
147
|
+
default="scan",
|
|
148
|
+
help="Mode to execute xray, only apply engine_dependencies xray tool",
|
|
149
|
+
)
|
|
96
150
|
args = parser.parse_args()
|
|
97
151
|
return {
|
|
98
152
|
"platform_devops": args.platform_devops,
|
|
@@ -107,8 +161,10 @@ def get_inputs_from_cli(args):
|
|
|
107
161
|
"token_vulnerability_management": args.token_vulnerability_management,
|
|
108
162
|
"token_engine_container": args.token_engine_container,
|
|
109
163
|
"token_engine_dependencies": args.token_engine_dependencies,
|
|
164
|
+
"xray_mode": args.xray_mode,
|
|
110
165
|
}
|
|
111
166
|
|
|
167
|
+
|
|
112
168
|
def application_core():
|
|
113
169
|
try:
|
|
114
170
|
# Get inputs from CLI
|
|
@@ -120,18 +176,18 @@ def application_core():
|
|
|
120
176
|
devops_platform_gateway = {
|
|
121
177
|
"azure": AzureDevops(),
|
|
122
178
|
"github": GithubActions(),
|
|
123
|
-
"local": RuntimeLocal()
|
|
179
|
+
"local": RuntimeLocal(),
|
|
124
180
|
}.get(args["platform_devops"])
|
|
125
181
|
printer_table_gateway = PrinterPrettyTable()
|
|
126
182
|
metrics_manager_gateway = S3Manager()
|
|
127
|
-
|
|
183
|
+
|
|
128
184
|
init_engine_core(
|
|
129
185
|
vulnerability_management_gateway,
|
|
130
186
|
secrets_manager_gateway,
|
|
131
187
|
devops_platform_gateway,
|
|
132
188
|
printer_table_gateway,
|
|
133
189
|
metrics_manager_gateway,
|
|
134
|
-
args
|
|
190
|
+
args,
|
|
135
191
|
)
|
|
136
192
|
except Exception as e:
|
|
137
193
|
logger.error("Error engine_core: {0} ".format(str(e)))
|
|
@@ -142,5 +198,6 @@ def application_core():
|
|
|
142
198
|
)
|
|
143
199
|
print(devops_platform_gateway.result_pipeline("failed"))
|
|
144
200
|
|
|
201
|
+
|
|
145
202
|
if __name__ == "__main__":
|
|
146
203
|
application_core()
|
|
@@ -296,6 +296,9 @@ class BreakBuild:
|
|
|
296
296
|
)
|
|
297
297
|
print(devops_platform_gateway.result_pipeline("failed"))
|
|
298
298
|
status = "failed"
|
|
299
|
+
else:
|
|
300
|
+
if devops_platform_gateway.get_variable("stage") == "build":
|
|
301
|
+
print(devops_platform_gateway.result_pipeline("succeeded_with_issues"))
|
|
299
302
|
scan_result["compliances"] = {
|
|
300
303
|
"threshold": {"critical": compliance_critical},
|
|
301
304
|
"status": status,
|
|
@@ -6,6 +6,7 @@ class ConfigTool:
|
|
|
6
6
|
self.version = json_data[tool]["VERSION"]
|
|
7
7
|
self.search_pattern = json_data["SEARCH_PATTERN"]
|
|
8
8
|
self.ignore_search_pattern = json_data["IGNORE_SEARCH_PATTERN"]
|
|
9
|
+
self.update_service_file_name_cft = json_data["UPDATE_SERVICE_WITH_FILE_NAME_CFT"]
|
|
9
10
|
self.use_external_checks_git = json_data[tool]["USE_EXTERNAL_CHECKS_GIT"]
|
|
10
11
|
self.external_checks_git = json_data[tool]["EXTERNAL_CHECKS_GIT"]
|
|
11
12
|
self.repository_ssh_host = json_data[tool]["EXTERNAL_GIT_SSH_HOST"]
|
|
@@ -97,6 +97,12 @@ class IacScan:
|
|
|
97
97
|
).get(tool)
|
|
98
98
|
skip_tool = "true" if config_tool.exclusions.get(config_tool.scope_pipeline).get("SKIP_TOOL") else "false"
|
|
99
99
|
if(dict_args["folder_path"]):
|
|
100
|
+
if config_tool.update_service_file_name_cft == "True" and "cloudformation" in dict_args["platform"]:
|
|
101
|
+
files = os.listdir(os.path.join(os.getcwd(), dict_args["folder_path"]))
|
|
102
|
+
if len(files) > 0:
|
|
103
|
+
name_file, _ = os.path.splitext(files[0])
|
|
104
|
+
config_tool.scope_pipeline = f"{config_tool.scope_pipeline}_{name_file}"
|
|
105
|
+
|
|
100
106
|
folders_to_scan = [dict_args["folder_path"]]
|
|
101
107
|
else:
|
|
102
108
|
folders_to_scan = self.search_folders(
|
|
@@ -4,6 +4,6 @@ from abc import ABCMeta, abstractmethod
|
|
|
4
4
|
class ToolGateway(metaclass=ABCMeta):
|
|
5
5
|
@abstractmethod
|
|
6
6
|
def run_tool_dependencies_sca(
|
|
7
|
-
self, remote_config,
|
|
7
|
+
self, remote_config, dict_args, to_scan, token
|
|
8
8
|
) -> str:
|
|
9
9
|
"run tool dependencies sca"
|
|
@@ -12,15 +12,19 @@ class DependenciesScan:
|
|
|
12
12
|
tool_run: ToolGateway,
|
|
13
13
|
tool_deserializator: DeserializatorGateway,
|
|
14
14
|
remote_config,
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
dict_args,
|
|
16
|
+
exclusions,
|
|
17
|
+
pipeline_name,
|
|
18
|
+
to_scan,
|
|
17
19
|
token,
|
|
18
20
|
):
|
|
19
21
|
self.tool_run = tool_run
|
|
20
22
|
self.tool_deserializator = tool_deserializator
|
|
21
23
|
self.remote_config = remote_config
|
|
22
|
-
self.
|
|
23
|
-
self.
|
|
24
|
+
self.exclusions = exclusions
|
|
25
|
+
self.pipeline_name = pipeline_name
|
|
26
|
+
self.dict_args = dict_args
|
|
27
|
+
self.to_scan = to_scan
|
|
24
28
|
self.token = token
|
|
25
29
|
|
|
26
30
|
def process(self):
|
|
@@ -31,8 +35,10 @@ class DependenciesScan:
|
|
|
31
35
|
"""
|
|
32
36
|
return self.tool_run.run_tool_dependencies_sca(
|
|
33
37
|
self.remote_config,
|
|
34
|
-
self.
|
|
35
|
-
self.
|
|
38
|
+
self.dict_args,
|
|
39
|
+
self.exclusions,
|
|
40
|
+
self.pipeline_name,
|
|
41
|
+
self.to_scan,
|
|
36
42
|
self.token,
|
|
37
43
|
)
|
|
38
44
|
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import re
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class HandleRemoteConfigPatterns:
|
|
5
|
+
def __init__(
|
|
6
|
+
self,
|
|
7
|
+
remote_config,
|
|
8
|
+
exclusions,
|
|
9
|
+
pipeline_name,
|
|
10
|
+
):
|
|
11
|
+
self.remote_config = remote_config
|
|
12
|
+
self.exclusions = exclusions
|
|
13
|
+
self.pipeline_name = pipeline_name
|
|
14
|
+
|
|
15
|
+
def ignore_analysis_pattern(self):
|
|
16
|
+
"""
|
|
17
|
+
Handle analysis pattern.
|
|
18
|
+
|
|
19
|
+
Return: bool: False -> not scan, True -> scan.
|
|
20
|
+
"""
|
|
21
|
+
ignore = self.remote_config["IGNORE_ANALYSIS_PATTERN"]
|
|
22
|
+
if re.match(ignore, self.pipeline_name, re.IGNORECASE):
|
|
23
|
+
return False
|
|
24
|
+
else:
|
|
25
|
+
return True
|
|
26
|
+
|
|
27
|
+
def skip_from_exclusion(self):
|
|
28
|
+
"""
|
|
29
|
+
Handle skip tool.
|
|
30
|
+
|
|
31
|
+
Return: bool: True -> skip tool, False -> not skip tool.
|
|
32
|
+
"""
|
|
33
|
+
if (self.pipeline_name in self.exclusions) and (
|
|
34
|
+
self.exclusions[self.pipeline_name].get("SKIP_TOOL", 0)
|
|
35
|
+
):
|
|
36
|
+
return True
|
|
37
|
+
else:
|
|
38
|
+
return False
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
from devsecops_engine_tools.engine_sca.engine_dependencies.src.domain.model.gateways.tool_gateway import (
|
|
2
|
+
ToolGateway,
|
|
3
|
+
)
|
|
4
|
+
|
|
5
|
+
import subprocess
|
|
6
|
+
import platform
|
|
7
|
+
import requests
|
|
8
|
+
import re
|
|
9
|
+
import os
|
|
10
|
+
import json
|
|
11
|
+
import shutil
|
|
12
|
+
import tarfile
|
|
13
|
+
|
|
14
|
+
from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
|
|
15
|
+
from devsecops_engine_tools.engine_utilities import settings
|
|
16
|
+
|
|
17
|
+
logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class XrayScan(ToolGateway):
|
|
21
|
+
def excluded_files(self, remote_config, pipeline_name, exclusions):
|
|
22
|
+
pattern = remote_config["XRAY"]["REGEX_EXPRESSION_EXTENSIONS"]
|
|
23
|
+
if pipeline_name in exclusions:
|
|
24
|
+
for ex in exclusions[pipeline_name]["XRAY"]:
|
|
25
|
+
if ex.get("SKIP_FILES", 0):
|
|
26
|
+
exclusion = ex.get("SKIP_FILES")
|
|
27
|
+
if exclusion.get("files", 0):
|
|
28
|
+
excluded_file_types = exclusion["files"]
|
|
29
|
+
pattern2 = pattern
|
|
30
|
+
for ext in excluded_file_types:
|
|
31
|
+
pattern2 = (
|
|
32
|
+
pattern2.replace("|" + ext, "")
|
|
33
|
+
.replace(ext + "|", "")
|
|
34
|
+
.replace(ext, "")
|
|
35
|
+
)
|
|
36
|
+
pattern = pattern2
|
|
37
|
+
|
|
38
|
+
return pattern
|
|
39
|
+
|
|
40
|
+
def find_packages(self, pattern, packages, working_dir):
|
|
41
|
+
packages_list = []
|
|
42
|
+
files_list = []
|
|
43
|
+
extension_pattern = re.compile(pattern, re.IGNORECASE)
|
|
44
|
+
for root, dirs, files in os.walk(working_dir):
|
|
45
|
+
components = root.split(os.path.sep)
|
|
46
|
+
flag = 0
|
|
47
|
+
for package in packages:
|
|
48
|
+
if not (package in components):
|
|
49
|
+
flag = 1
|
|
50
|
+
if package in dirs:
|
|
51
|
+
packages_list.append(os.path.join(root, package))
|
|
52
|
+
if flag:
|
|
53
|
+
for file in files:
|
|
54
|
+
if extension_pattern.search(file):
|
|
55
|
+
files_list.append(os.path.join(root, file))
|
|
56
|
+
return packages_list, files_list
|
|
57
|
+
|
|
58
|
+
def compress_and_mv(self, tar_path, package):
|
|
59
|
+
try:
|
|
60
|
+
with tarfile.open(tar_path, "w") as tar:
|
|
61
|
+
tar.add(
|
|
62
|
+
package,
|
|
63
|
+
arcname=os.path.basename(package),
|
|
64
|
+
filter=lambda x: None if "/.bin/" in x.name else x,
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
except subprocess.CalledProcessError as e:
|
|
68
|
+
logger.error(f"Error during {package} compression: {e}")
|
|
69
|
+
|
|
70
|
+
def move_files(self, dir_to_scan_path, finded_files):
|
|
71
|
+
for file in finded_files:
|
|
72
|
+
target = os.path.join(dir_to_scan_path, os.path.basename(file))
|
|
73
|
+
shutil.copy2(file, target)
|
|
74
|
+
logger.debug(f"File to scan: {file}")
|
|
75
|
+
|
|
76
|
+
def find_artifacts(self, to_scan, pattern, packages):
|
|
77
|
+
dir_to_scan_path = os.path.join(to_scan, "dependencies_to_scan")
|
|
78
|
+
if os.path.exists(dir_to_scan_path):
|
|
79
|
+
shutil.rmtree(dir_to_scan_path)
|
|
80
|
+
os.makedirs(dir_to_scan_path)
|
|
81
|
+
|
|
82
|
+
packages_list, files_list = self.find_packages(pattern, packages, to_scan)
|
|
83
|
+
|
|
84
|
+
for package in packages_list:
|
|
85
|
+
tar_path = os.path.join(
|
|
86
|
+
dir_to_scan_path,
|
|
87
|
+
"pkg"
|
|
88
|
+
+ str(packages_list.index(package) + 1)
|
|
89
|
+
+ "_"
|
|
90
|
+
+ os.path.basename(package)
|
|
91
|
+
+ ".tar",
|
|
92
|
+
)
|
|
93
|
+
self.compress_and_mv(tar_path, package)
|
|
94
|
+
|
|
95
|
+
if len(files_list):
|
|
96
|
+
self.move_files(dir_to_scan_path, files_list)
|
|
97
|
+
|
|
98
|
+
files = os.listdir(dir_to_scan_path)
|
|
99
|
+
files = [
|
|
100
|
+
file
|
|
101
|
+
for file in files
|
|
102
|
+
if os.path.isfile(os.path.join(dir_to_scan_path, file))
|
|
103
|
+
]
|
|
104
|
+
file_to_scan = None
|
|
105
|
+
if files:
|
|
106
|
+
file_to_scan = os.path.join(dir_to_scan_path, "file_to_scan.tar")
|
|
107
|
+
self.compress_and_mv(file_to_scan, dir_to_scan_path)
|
|
108
|
+
files_string = ", ".join(files)
|
|
109
|
+
logger.debug(f"Files to scan: {files_string}")
|
|
110
|
+
print(f"Files to scan: {files_string}")
|
|
111
|
+
else:
|
|
112
|
+
logger.warning("No artifacts found")
|
|
113
|
+
|
|
114
|
+
return file_to_scan
|
|
115
|
+
|
|
116
|
+
def install_tool_linux(self, prefix, version):
|
|
117
|
+
installed = subprocess.run(
|
|
118
|
+
["which", prefix],
|
|
119
|
+
stdout=subprocess.PIPE,
|
|
120
|
+
stderr=subprocess.PIPE,
|
|
121
|
+
)
|
|
122
|
+
if installed.returncode == 1:
|
|
123
|
+
command = ["chmod", "+x", prefix]
|
|
124
|
+
try:
|
|
125
|
+
url = f"https://releases.jfrog.io/artifactory/jfrog-cli/v2-jf/{version}/jfrog-cli-linux-amd64/jf"
|
|
126
|
+
response = requests.get(url, allow_redirects=True)
|
|
127
|
+
with open(prefix, "wb") as archivo:
|
|
128
|
+
archivo.write(response.content)
|
|
129
|
+
subprocess.run(
|
|
130
|
+
command, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE
|
|
131
|
+
)
|
|
132
|
+
except subprocess.CalledProcessError as error:
|
|
133
|
+
logger.error(f"Error during Jfrog Cli installation on Linux: {error}")
|
|
134
|
+
|
|
135
|
+
def install_tool_windows(self, prefix, version):
|
|
136
|
+
try:
|
|
137
|
+
subprocess.run(
|
|
138
|
+
[prefix, "--version"],
|
|
139
|
+
stdout=subprocess.PIPE,
|
|
140
|
+
stderr=subprocess.PIPE,
|
|
141
|
+
)
|
|
142
|
+
except:
|
|
143
|
+
try:
|
|
144
|
+
url = f"https://releases.jfrog.io/artifactory/jfrog-cli/v2-jf/{version}/jfrog-cli-windows-amd64/jf.exe"
|
|
145
|
+
response = requests.get(url, allow_redirects=True)
|
|
146
|
+
with open(prefix, "wb") as archivo:
|
|
147
|
+
archivo.write(response.content)
|
|
148
|
+
except subprocess.CalledProcessError as error:
|
|
149
|
+
logger.error(f"Error while Jfrog Cli installation on Windows: {error}")
|
|
150
|
+
|
|
151
|
+
def install_tool_darwin(self, prefix, version):
|
|
152
|
+
installed = subprocess.run(
|
|
153
|
+
["which", prefix],
|
|
154
|
+
stdout=subprocess.PIPE,
|
|
155
|
+
stderr=subprocess.PIPE,
|
|
156
|
+
)
|
|
157
|
+
if installed.returncode == 1:
|
|
158
|
+
command = ["chmod", "+x", prefix]
|
|
159
|
+
try:
|
|
160
|
+
url = f"https://releases.jfrog.io/artifactory/jfrog-cli/v2-jf/{version}/jfrog-cli-mac-386/jf"
|
|
161
|
+
response = requests.get(url, allow_redirects=True)
|
|
162
|
+
with open(prefix, "wb") as archivo:
|
|
163
|
+
archivo.write(response.content)
|
|
164
|
+
subprocess.run(
|
|
165
|
+
command, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE
|
|
166
|
+
)
|
|
167
|
+
except subprocess.CalledProcessError as error:
|
|
168
|
+
logger.error(f"Error during Jfrog Cli installation on Darwin: {error}")
|
|
169
|
+
|
|
170
|
+
def config_server(self, prefix, token):
|
|
171
|
+
try:
|
|
172
|
+
c_import = [prefix, "c", "im", token]
|
|
173
|
+
result = subprocess.run(
|
|
174
|
+
c_import,
|
|
175
|
+
check=True,
|
|
176
|
+
stdout=subprocess.PIPE,
|
|
177
|
+
stderr=subprocess.PIPE,
|
|
178
|
+
text=True,
|
|
179
|
+
)
|
|
180
|
+
server_id = re.search(r"'(.*?)'", result.stderr).group(1)
|
|
181
|
+
c_set_server = [prefix, "c", "use", server_id]
|
|
182
|
+
subprocess.run(
|
|
183
|
+
c_set_server,
|
|
184
|
+
check=True,
|
|
185
|
+
stdout=subprocess.PIPE,
|
|
186
|
+
stderr=subprocess.PIPE,
|
|
187
|
+
text=True,
|
|
188
|
+
)
|
|
189
|
+
except subprocess.CalledProcessError as error:
|
|
190
|
+
logger.error(f"Error during Xray Server configuration: {error}")
|
|
191
|
+
|
|
192
|
+
def config_audit_scan(self, to_scan):
|
|
193
|
+
gradlew_path = os.path.join(to_scan, "gradlew")
|
|
194
|
+
if os.path.exists(gradlew_path):
|
|
195
|
+
os.chmod(gradlew_path, 0o755)
|
|
196
|
+
|
|
197
|
+
def scan_dependencies(self, prefix, cwd, mode, to_scan):
|
|
198
|
+
command = [
|
|
199
|
+
prefix,
|
|
200
|
+
mode,
|
|
201
|
+
"--format=json",
|
|
202
|
+
f"{to_scan}",
|
|
203
|
+
]
|
|
204
|
+
result = subprocess.run(
|
|
205
|
+
command, cwd=cwd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True
|
|
206
|
+
)
|
|
207
|
+
if result.returncode == 0:
|
|
208
|
+
scan_result = json.loads(result.stdout)
|
|
209
|
+
file_result = os.path.join(os.getcwd(), "scan_result.json")
|
|
210
|
+
with open(file_result, "w") as file:
|
|
211
|
+
json.dump(scan_result, file, indent=4)
|
|
212
|
+
if result.stdout == "null\n":
|
|
213
|
+
logger.warning(f"Xray scan returned null: {result.stderr}")
|
|
214
|
+
return None
|
|
215
|
+
return file_result
|
|
216
|
+
else:
|
|
217
|
+
logger.error(f"Error executing Xray scan: {result.stderr}")
|
|
218
|
+
return None
|
|
219
|
+
|
|
220
|
+
def run_tool_dependencies_sca(
|
|
221
|
+
self,
|
|
222
|
+
remote_config,
|
|
223
|
+
dict_args,
|
|
224
|
+
exclusion,
|
|
225
|
+
pipeline_name,
|
|
226
|
+
to_scan,
|
|
227
|
+
token,
|
|
228
|
+
):
|
|
229
|
+
if dict_args["xray_mode"] == "scan":
|
|
230
|
+
pattern = self.excluded_files(remote_config, pipeline_name, exclusion)
|
|
231
|
+
to_scan = self.find_artifacts(
|
|
232
|
+
to_scan, pattern, remote_config["XRAY"]["PACKAGES_TO_SCAN"]
|
|
233
|
+
)
|
|
234
|
+
cwd = os.getcwd()
|
|
235
|
+
if not to_scan:
|
|
236
|
+
return None
|
|
237
|
+
else:
|
|
238
|
+
self.config_audit_scan(to_scan)
|
|
239
|
+
cwd = to_scan
|
|
240
|
+
to_scan = ""
|
|
241
|
+
|
|
242
|
+
cli_version = remote_config["XRAY"]["CLI_VERSION"]
|
|
243
|
+
os_platform = platform.system()
|
|
244
|
+
|
|
245
|
+
if os_platform == "Linux":
|
|
246
|
+
command_prefix = os.path.join(os.path.expanduser("~"), "jf")
|
|
247
|
+
self.install_tool_linux(command_prefix, cli_version)
|
|
248
|
+
elif os_platform == "Windows":
|
|
249
|
+
command_prefix = os.path.join(os.path.expanduser("~"), "jf.exe")
|
|
250
|
+
self.install_tool_windows(command_prefix, cli_version)
|
|
251
|
+
elif os_platform == "Darwin":
|
|
252
|
+
command_prefix = os.path.join(os.path.expanduser("~"), "jf")
|
|
253
|
+
self.install_tool_darwin(command_prefix, cli_version)
|
|
254
|
+
else:
|
|
255
|
+
logger.warning(f"{os_platform} is not supported.")
|
|
256
|
+
return None
|
|
257
|
+
|
|
258
|
+
self.config_server(command_prefix, token)
|
|
259
|
+
|
|
260
|
+
results_file = self.scan_dependencies(
|
|
261
|
+
command_prefix,
|
|
262
|
+
cwd,
|
|
263
|
+
dict_args["xray_mode"],
|
|
264
|
+
to_scan,
|
|
265
|
+
)
|
|
266
|
+
|
|
267
|
+
return results_file
|
|
@@ -7,9 +7,6 @@ from devsecops_engine_tools.engine_sca.engine_dependencies.src.domain.usecases.s
|
|
|
7
7
|
from devsecops_engine_tools.engine_sca.engine_dependencies.src.domain.usecases.handle_remote_config_patterns import (
|
|
8
8
|
HandleRemoteConfigPatterns,
|
|
9
9
|
)
|
|
10
|
-
from devsecops_engine_tools.engine_sca.engine_dependencies.src.domain.usecases.find_artifacts import (
|
|
11
|
-
FindArtifacts,
|
|
12
|
-
)
|
|
13
10
|
|
|
14
11
|
import os
|
|
15
12
|
import sys
|
|
@@ -46,24 +43,26 @@ def init_engine_dependencies(
|
|
|
46
43
|
input_core = SetInputCore(remote_config, exclusions, pipeline_name, tool)
|
|
47
44
|
|
|
48
45
|
if scan_flag and not (skip_flag):
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
find_artifacts = FindArtifacts(
|
|
53
|
-
os.getcwd(), pattern, remote_config["PACKAGES_TO_SCAN"]
|
|
54
|
-
)
|
|
55
|
-
file_to_scan = find_artifacts.find_artifacts()
|
|
56
|
-
if file_to_scan:
|
|
46
|
+
to_scan = dict_args["folder_path"] if dict_args["folder_path"] else os.getcwd()
|
|
47
|
+
if os.path.exists(to_scan):
|
|
57
48
|
dependencies_sca_scan = DependenciesScan(
|
|
58
49
|
tool_run,
|
|
59
50
|
tool_deserializator,
|
|
60
51
|
remote_config,
|
|
61
|
-
|
|
62
|
-
|
|
52
|
+
dict_args,
|
|
53
|
+
exclusions,
|
|
54
|
+
pipeline_name,
|
|
55
|
+
to_scan,
|
|
63
56
|
token,
|
|
64
57
|
)
|
|
65
58
|
dependencies_scanned = dependencies_sca_scan.process()
|
|
66
|
-
deserialized =
|
|
59
|
+
deserialized = (
|
|
60
|
+
dependencies_sca_scan.deserializator(dependencies_scanned)
|
|
61
|
+
if dependencies_scanned is not None
|
|
62
|
+
else []
|
|
63
|
+
)
|
|
64
|
+
else:
|
|
65
|
+
logger.error(f"Path {to_scan} does not exist")
|
|
67
66
|
else:
|
|
68
67
|
print(f"Tool skipped by DevSecOps policy")
|
|
69
68
|
logger.info(f"Tool skipped by DevSecOps policy")
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
version = '1.7.33'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: devsecops-engine-tools
|
|
3
|
-
Version: 1.7.
|
|
3
|
+
Version: 1.7.33
|
|
4
4
|
Summary: Tool for DevSecOps strategy
|
|
5
5
|
Home-page: https://github.com/bancolombia/devsecops-engine-tools
|
|
6
6
|
Author: Bancolombia DevSecOps Team
|
|
@@ -64,7 +64,7 @@ pip3 install devsecops-engine-tools
|
|
|
64
64
|
### Scan running - flags (CLI)
|
|
65
65
|
|
|
66
66
|
```bash
|
|
67
|
-
devsecops-engine-tools --platform_devops ["local","azure","github"] --remote_config_repo ["remote_config_repo"] --tool ["engine_iac", "engine_dast", "engine_secret", "engine_dependencies", "engine_container"] --folder_path ["Folder path scan engine_iac"] --platform ["k8s","cloudformation","docker", "openapi"] --use_secrets_manager ["false", "true"] --use_vulnerability_management ["false", "true"] --send_metrics ["false", "true"] --token_cmdb ["token_cmdb"] --token_vulnerability_management ["token_vulnerability_management"] --token_engine_container ["token_engine_container"] --token_engine_dependencies ["token_engine_dependencies"]
|
|
67
|
+
devsecops-engine-tools --platform_devops ["local","azure","github"] --remote_config_repo ["remote_config_repo"] --tool ["engine_iac", "engine_dast", "engine_secret", "engine_dependencies", "engine_container"] --folder_path ["Folder path scan engine_iac"] --platform ["k8s","cloudformation","docker", "openapi"] --use_secrets_manager ["false", "true"] --use_vulnerability_management ["false", "true"] --send_metrics ["false", "true"] --token_cmdb ["token_cmdb"] --token_vulnerability_management ["token_vulnerability_management"] --token_engine_container ["token_engine_container"] --token_engine_dependencies ["token_engine_dependencies"] --xray_mode ["scan", "audit"]
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
### Structure Remote Config
|
|
@@ -183,7 +183,6 @@ devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/gateways/
|
|
|
183
183
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/gateways/tool_gateway.py
|
|
184
184
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/__init__.py
|
|
185
185
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/dependencies_sca_scan.py
|
|
186
|
-
devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/find_artifacts.py
|
|
187
186
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/handle_remote_config_patterns.py
|
|
188
187
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/set_input_core.py
|
|
189
188
|
devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/__init__.py
|