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