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,14 @@
|
|
|
1
|
+
from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
|
|
2
|
+
from marshmallow import ValidationError
|
|
3
|
+
from requests import Response
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class ApiError(ValidationError):
|
|
7
|
+
def __init__(self, message):
|
|
8
|
+
m = ""
|
|
9
|
+
if isinstance(message, dict):
|
|
10
|
+
m = str(message.get("message")) if message.get("message") else ""
|
|
11
|
+
m += str(message.get("detail")) if message.get("detail") else ""
|
|
12
|
+
else:
|
|
13
|
+
m = str(message)
|
|
14
|
+
super().__init__({"message": str(m)})
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import dataclasses
|
|
2
|
+
import typing
|
|
3
|
+
import datetime
|
|
4
|
+
import enum
|
|
5
|
+
from inspect import isclass
|
|
6
|
+
from .name_conversion import camel_case_to_snake_case, snake_case_to_camel_case
|
|
7
|
+
from .datetime_parsing import iso_from_datetime, parse_iso_datetime
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class FromDictMixin:
|
|
11
|
+
@staticmethod
|
|
12
|
+
def attribute_to_dict(attribute):
|
|
13
|
+
if hasattr(attribute, "to_dict") and callable(attribute.to_dict):
|
|
14
|
+
return getattr(attribute, "to_dict")()
|
|
15
|
+
return attribute
|
|
16
|
+
|
|
17
|
+
def to_dict(self):
|
|
18
|
+
if self == {}:
|
|
19
|
+
return self
|
|
20
|
+
available_fields = {field.name: field for field in dataclasses.fields(self)}
|
|
21
|
+
transformed_data = {}
|
|
22
|
+
for field_name, field_type in available_fields.items():
|
|
23
|
+
navitaire_key = snake_case_to_camel_case(field_name)
|
|
24
|
+
attribute = getattr(self, field_name)
|
|
25
|
+
if isinstance(attribute, list):
|
|
26
|
+
transformed_data[navitaire_key] = []
|
|
27
|
+
for element in attribute:
|
|
28
|
+
transformed_data[navitaire_key].append(FromDictMixin.attribute_to_dict(element))
|
|
29
|
+
elif isinstance(attribute, dict):
|
|
30
|
+
transformed_data[navitaire_key] = {}
|
|
31
|
+
for key, element in attribute.items():
|
|
32
|
+
transformed_data[navitaire_key][key] = FromDictMixin.attribute_to_dict(element)
|
|
33
|
+
elif isinstance(attribute, enum.Enum):
|
|
34
|
+
transformed_data[navitaire_key] = attribute.value
|
|
35
|
+
elif isinstance(attribute, datetime.datetime):
|
|
36
|
+
transformed_data[navitaire_key] = iso_from_datetime(attribute)
|
|
37
|
+
else:
|
|
38
|
+
transformed_data[navitaire_key] = FromDictMixin.attribute_to_dict(attribute)
|
|
39
|
+
return transformed_data
|
|
40
|
+
|
|
41
|
+
@classmethod
|
|
42
|
+
def from_dict(cls, data):
|
|
43
|
+
built_in_types = (int, str, bool, float)
|
|
44
|
+
available_fields = {field.name: field for field in dataclasses.fields(cls)}
|
|
45
|
+
transformed_data = {}
|
|
46
|
+
for key, value in data.items():
|
|
47
|
+
internal_key = camel_case_to_snake_case(key)
|
|
48
|
+
if internal_key in available_fields.keys() and value:
|
|
49
|
+
matching_internal_field = available_fields[internal_key]
|
|
50
|
+
if matching_internal_field.type in built_in_types:
|
|
51
|
+
internal_value = value
|
|
52
|
+
elif matching_internal_field.type == datetime.datetime and value:
|
|
53
|
+
internal_value = parse_iso_datetime(value)
|
|
54
|
+
elif isclass(matching_internal_field.type) and issubclass(matching_internal_field.type, enum.Enum):
|
|
55
|
+
internal_value = matching_internal_field.type(value)
|
|
56
|
+
elif hasattr(matching_internal_field.type, "from_dict") and callable(
|
|
57
|
+
matching_internal_field.type.from_dict
|
|
58
|
+
):
|
|
59
|
+
internal_value = matching_internal_field.type.from_dict(value)
|
|
60
|
+
elif (
|
|
61
|
+
isinstance(matching_internal_field.type, typing._GenericAlias)
|
|
62
|
+
and matching_internal_field.type.__origin__ == list
|
|
63
|
+
):
|
|
64
|
+
value_class = matching_internal_field.type.__args__[0]
|
|
65
|
+
internal_value = []
|
|
66
|
+
if hasattr(value_class, "from_dict") and callable(value_class.from_dict):
|
|
67
|
+
internal_value = [value_class.from_dict(v) for v in value]
|
|
68
|
+
else:
|
|
69
|
+
internal_value = [v for v in value]
|
|
70
|
+
elif (
|
|
71
|
+
isinstance(matching_internal_field.type, typing._GenericAlias)
|
|
72
|
+
and matching_internal_field.type.__origin__ == dict
|
|
73
|
+
):
|
|
74
|
+
value_class = matching_internal_field.type.__args__[1]
|
|
75
|
+
internal_value = {}
|
|
76
|
+
if hasattr(value_class, "from_dict") and callable(value_class.from_dict):
|
|
77
|
+
internal_value = {k: value_class.from_dict(v) for k, v in value.items()}
|
|
78
|
+
else:
|
|
79
|
+
internal_value = value
|
|
80
|
+
else:
|
|
81
|
+
internal_value = None
|
|
82
|
+
if internal_value:
|
|
83
|
+
transformed_data[internal_key] = internal_value
|
|
84
|
+
return cls(**transformed_data)
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
import logging
|
|
3
|
+
import os
|
|
4
|
+
import datetime
|
|
5
|
+
|
|
6
|
+
log_records = []
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class CustomFormatter(logging.Formatter):
|
|
10
|
+
grey = "\x1b[38;20m"
|
|
11
|
+
yellow = "\x1b[33;20m"
|
|
12
|
+
red = "\x1b[31;20m"
|
|
13
|
+
bold_red = "\x1b[31;1m"
|
|
14
|
+
reset = "\x1b[0m"
|
|
15
|
+
format = "%(asctime)s [%(levelname)s | %(filename)s | %(funcName)s | %(lineno)d] > %(message)s"
|
|
16
|
+
|
|
17
|
+
FORMATS = {
|
|
18
|
+
logging.DEBUG: grey + format + reset,
|
|
19
|
+
logging.INFO: grey + format + reset,
|
|
20
|
+
logging.WARNING: yellow + format + reset,
|
|
21
|
+
logging.ERROR: red + format + reset,
|
|
22
|
+
logging.CRITICAL: bold_red + format + reset,
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
def format(self, record):
|
|
26
|
+
log_fmt = self.FORMATS.get(record.levelno)
|
|
27
|
+
formatter = logging.Formatter(log_fmt)
|
|
28
|
+
return formatter.format(record)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class JsonFormatter(logging.Formatter):
|
|
32
|
+
def format(self, record):
|
|
33
|
+
log_data = {
|
|
34
|
+
"timestamp": self.formatTime(record),
|
|
35
|
+
"level": record.levelname,
|
|
36
|
+
"message": record.getMessage(),
|
|
37
|
+
"module": record.module,
|
|
38
|
+
"funcName": record.funcName,
|
|
39
|
+
"lineno": record.lineno
|
|
40
|
+
}
|
|
41
|
+
return log_data
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
class ListHandler(logging.Handler):
|
|
45
|
+
def emit(self, record):
|
|
46
|
+
log_record = self.format(record)
|
|
47
|
+
log_records.append(log_record)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class SingletonType(type):
|
|
51
|
+
_instances = {}
|
|
52
|
+
|
|
53
|
+
def __call__(cls, *args, **kwargs):
|
|
54
|
+
if cls not in cls._instances:
|
|
55
|
+
cls._instances[cls] = super(SingletonType, cls).__call__(*args, **kwargs)
|
|
56
|
+
return cls._instances[cls]
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
class MyLogger(metaclass=SingletonType):
|
|
60
|
+
"""resive como parametro bool si es
|
|
61
|
+
True cre un archivo de logs por default is False"""
|
|
62
|
+
|
|
63
|
+
_logger = None
|
|
64
|
+
|
|
65
|
+
def __init__(self, *args, **kwargs):
|
|
66
|
+
self._logger = logging.getLogger("crumbs")
|
|
67
|
+
if kwargs["debug"]:
|
|
68
|
+
self._logger.setLevel(logging.DEBUG)
|
|
69
|
+
else:
|
|
70
|
+
self._logger.setLevel(logging.WARNING)
|
|
71
|
+
|
|
72
|
+
if kwargs["log_file"]:
|
|
73
|
+
now = datetime.datetime.now()
|
|
74
|
+
dirname = "./log"
|
|
75
|
+
if not os.path.isdir(dirname):
|
|
76
|
+
os.mkdir(dirname)
|
|
77
|
+
if kwargs["log_file_format"] == "log":
|
|
78
|
+
# log with file log
|
|
79
|
+
file_handler = logging.FileHandler(
|
|
80
|
+
dirname + "/log_" + now.strftime("%Y-%m-%d") + ".log"
|
|
81
|
+
)
|
|
82
|
+
formatter = logging.Formatter(
|
|
83
|
+
"%(asctime)s [%(levelname)s | %(filename)s | %(funcName)s | %(lineno)d] > %(message)s"
|
|
84
|
+
)
|
|
85
|
+
file_handler.setFormatter(formatter)
|
|
86
|
+
self._logger.addHandler(file_handler)
|
|
87
|
+
elif kwargs["log_file_format"] == "json":
|
|
88
|
+
# log with file json
|
|
89
|
+
file_handler = ListHandler()
|
|
90
|
+
file_handler.setFormatter(JsonFormatter())
|
|
91
|
+
self._logger.addHandler(file_handler)
|
|
92
|
+
if kwargs["log_console"]:
|
|
93
|
+
# log whit console
|
|
94
|
+
stream_handler = logging.StreamHandler()
|
|
95
|
+
stream_handler.setFormatter(CustomFormatter())
|
|
96
|
+
self._logger.addHandler(stream_handler)
|
|
97
|
+
|
|
98
|
+
def get_logger(self):
|
|
99
|
+
return self._logger
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
# forma de llamado
|
|
103
|
+
# if __name__ == "__main__":
|
|
104
|
+
# logger = MyLogger.__call__(True)(True).get_logger()
|
|
105
|
+
# logger.info("debug message")
|
|
106
|
+
# logger.info("info message")
|
|
107
|
+
# logger.warning("warning message")
|
|
108
|
+
# logger.error("error message")
|
|
109
|
+
# logger.critical("critical message")
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import re
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def camel_case_to_snake_case(value):
|
|
5
|
+
return re.sub(r"(?<=[a-z])(?=[A-Z])", "_", value).lower()
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def snake_case_to_camel_case(value):
|
|
9
|
+
parts = value.split("_")
|
|
10
|
+
parts[0] = parts[0].lower()
|
|
11
|
+
parts[1:] = [part.capitalize() for part in parts[1:]]
|
|
12
|
+
return "".join(parts)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import pyfiglet
|
|
2
|
+
from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
|
|
3
|
+
from devsecops_engine_tools.engine_utilities import settings
|
|
4
|
+
import logging
|
|
5
|
+
|
|
6
|
+
logger = logging.getLogger(__name__)
|
|
7
|
+
logging.basicConfig(format="%(message)s", level=logging.INFO)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Printers:
|
|
11
|
+
@staticmethod
|
|
12
|
+
def print_logo_tool(banner: str):
|
|
13
|
+
print(pyfiglet.figlet_format(banner, font="slant"))
|
|
14
|
+
|
|
15
|
+
@staticmethod
|
|
16
|
+
def print_title(title: str):
|
|
17
|
+
logger.info("\n")
|
|
18
|
+
logger.info("*" * len(title))
|
|
19
|
+
logger.info(title)
|
|
20
|
+
logger.info("*" * len(title))
|
|
21
|
+
logger.info("\n")
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import requests
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class SessionManager:
|
|
5
|
+
_instance = None
|
|
6
|
+
_token = None
|
|
7
|
+
_host = None
|
|
8
|
+
|
|
9
|
+
def __new__(cls, token=None, host=None):
|
|
10
|
+
cls._token = token
|
|
11
|
+
cls._host = host
|
|
12
|
+
if not cls._instance:
|
|
13
|
+
cls._instance = requests.Session()
|
|
14
|
+
return cls
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
version = '1.6.7'
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: devsecops-engine-tools
|
|
3
|
+
Version: 1.6.7
|
|
4
|
+
Summary: Tool for DevSecOps strategy
|
|
5
|
+
Home-page: https://github.com/bancolombia/devsecops-engine-tools
|
|
6
|
+
Author: Bancolombia DevSecOps Team
|
|
7
|
+
Author-email: devsecops@bancolombia.com.co
|
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
|
9
|
+
Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
|
|
10
|
+
Classifier: Operating System :: OS Independent
|
|
11
|
+
Requires-Python: >=3.8
|
|
12
|
+
Description-Content-Type: text/markdown
|
|
13
|
+
Requires-Dist: requests ==2.31.0
|
|
14
|
+
Requires-Dist: multipledispatch ==0.6.0
|
|
15
|
+
Requires-Dist: PyYAML ==6.0.1
|
|
16
|
+
Requires-Dist: checkov ==2.3.296
|
|
17
|
+
Requires-Dist: pyfiglet ==0.7
|
|
18
|
+
Requires-Dist: prettytable ==3.8.0
|
|
19
|
+
Requires-Dist: azure-devops ==7.1.0b3
|
|
20
|
+
Requires-Dist: marshmallow ==3.19.0
|
|
21
|
+
Requires-Dist: pytz ==2023.3
|
|
22
|
+
Requires-Dist: python-decouple ==3.8
|
|
23
|
+
Requires-Dist: requests-toolbelt ==1.0.0
|
|
24
|
+
Requires-Dist: python-dateutil ==2.8.2
|
|
25
|
+
Requires-Dist: pexpect ==4.9.0
|
|
26
|
+
|
|
27
|
+
# DevSecOps Engine Tools
|
|
28
|
+
|
|
29
|
+
[](#)
|
|
30
|
+
[](https://github.com/bancolombia/devsecops-engine-tools/actions/workflows/build.yml)
|
|
31
|
+
[](#)
|
|
32
|
+
|
|
33
|
+
# Objective
|
|
34
|
+
|
|
35
|
+
Tool that unifies the evaluation of the different devsecops practices being agnostic to the devops platform, using both open source and market tools.
|
|
36
|
+
|
|
37
|
+
# Component
|
|
38
|
+
|
|
39
|
+
π¦ [tools](https://github.com/bancolombia/devsecops-engine-tools/tree/trunk/tools): DevSecOps Practice Modules
|
|
40
|
+
|
|
41
|
+
# Communications channel
|
|
42
|
+
|
|
43
|
+
Here are the channels we use to communicate about the project:
|
|
44
|
+
|
|
45
|
+
**1. Mailing list:** You can join our mailing list to always be informed at the following link: [CommunityDevsecopsEngine](https://groups.google.com/g/CommunityDevsecopsEngine)
|
|
46
|
+
|
|
47
|
+
**2. Email:** You can write to us by email: MaintainersDevsecopsEngine@googlegroups.com
|
|
48
|
+
|
|
49
|
+
# Getting started
|
|
50
|
+
|
|
51
|
+
### Requirements
|
|
52
|
+
|
|
53
|
+
- Python >= 3.8
|
|
54
|
+
|
|
55
|
+
### Installation
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
pip3 install devsecops-engine-tools
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Scan running - flags (CLI)
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
devsecops-engine-tools --platform_devops ["local","azure"] --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 ["eks","openshift"] --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"]
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Structure Remote Config
|
|
68
|
+
[example_remote_config_local](https://github.com/bancolombia/devsecops-engine-tools/blob/trunk/example_remote_config_local/)
|
|
69
|
+
```bash
|
|
70
|
+
π¦Remote_Config
|
|
71
|
+
β£ πengine_core
|
|
72
|
+
β β πConfigTool.json
|
|
73
|
+
β£ πengine_sast
|
|
74
|
+
β β πengine_iac
|
|
75
|
+
β β πConfigTool.json
|
|
76
|
+
β β πExclusions.json
|
|
77
|
+
β β πengine_secret
|
|
78
|
+
β β πConfigTool.json
|
|
79
|
+
β£ πengine_sca
|
|
80
|
+
β β πengine_container
|
|
81
|
+
β β πConfigTool.json
|
|
82
|
+
β β πExclusions.json
|
|
83
|
+
β β πengine_dependencies
|
|
84
|
+
β β πConfigTool.json
|
|
85
|
+
β β πExclusions.json
|
|
86
|
+
```
|
|
87
|
+
### Scan running sample (CLI) - Local
|
|
88
|
+
|
|
89
|
+
> Complete the value in **.envdetlocal** file a set in execution environment
|
|
90
|
+
```
|
|
91
|
+
$ set -a
|
|
92
|
+
$ source .envdetlocal
|
|
93
|
+
$ set +a
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
devsecops-engine-tools --platform_devops local --remote_config_repo DevSecOps_Remote_Config --tool engine_iac
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
### Scan result sample (CLI)
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
____ _____ ____ ______ _ ______ __
|
|
105
|
+
/ __ \___ _ __/ ___/___ _____/ __ \____ _____ / ____/___ ____ _(_)___ ___ /_ __/___ ____ / /____
|
|
106
|
+
/ / / / _ \ | / /\__ \/ _ \/ ___/ / / / __ \/ ___/ / __/ / __ \/ __ `/ / __ \/ _ \ / / / __ \/ __ \/ / ___/
|
|
107
|
+
/ /_/ / __/ |/ /___/ / __/ /__/ /_/ / /_/ (__ ) / /___/ / / / /_/ / / / / / __/ / / / /_/ / /_/ / (__ )
|
|
108
|
+
/_____/\___/|___//____/\___/\___/\____/ .___/____/ /_____/_/ /_/\__, /_/_/ /_/\___/ /_/ \____/\____/_/____/
|
|
109
|
+
/_/ /____/
|
|
110
|
+
|
|
111
|
+
Secrets manager is not enabled to configure external checks
|
|
112
|
+
|
|
113
|
+
Below are all vulnerabilities detected.
|
|
114
|
+
ββββββββββββ¦βββββββββββββ¦βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ¦βββββββββββββββββββββββββ
|
|
115
|
+
β Severity β ID β Description β Where β
|
|
116
|
+
β βββββββββββ¬βββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββ£
|
|
117
|
+
β critical β CKV_K8S_37 β IAC-CKV_K8S_37 Minimize the admission of containers with capabilities assigned β /_AW1234/app.yaml β
|
|
118
|
+
β critical β CKV_K8S_20 β IAC-CKV_K8S_20 Containers should not run with allowPrivilegeEscalation β /_AW1234/app.yaml β
|
|
119
|
+
β critical β CKV_K8S_30 β IAC-CKV_K8S_30 Apply security context to your containers β /_AW1234/app.yaml β
|
|
120
|
+
β critical β CKV_K8S_23 β IAC-CKV_K8S_23 Minimize the admission of root containers β /_AW1234/app.yaml β
|
|
121
|
+
β high β CKV_AWS_20 β C-S3-005-AWS S3 buckets are accessible to public β /_AW1234/template.yaml β
|
|
122
|
+
β high β CKV_K8S_22 β IAC-CKV_K8S_22 Use read-only filesystem for containers where possible β /_AW1234/app.yaml β
|
|
123
|
+
β high β CKV_K8S_28 β IAC-CKV_K8S_28 Minimize the admission of containers with the NET_RAW capability β /_AW1234/app.yaml β
|
|
124
|
+
β high β CKV_K8S_38 β IAC-CKV_K8S_38 Ensure that Service Account Tokens are only mounted where necessary β /_AW1234/app.yaml β
|
|
125
|
+
ββββββββββββ©βββββββββββββ©βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©βββββββββββββββββββββββββ
|
|
126
|
+
Security count issues (critical: 4, high: 4, medium: 0, low: 0) is greater than or equal to failure criteria (critical: 1, high: 8, medium: 10, low:15, operator: or)
|
|
127
|
+
βFailed
|
|
128
|
+
|
|
129
|
+
Below are all compliances issues detected.
|
|
130
|
+
ββββββββββββ¦ββββββββββββ¦βββββββββββββββββββββββββββββββββββββββββββββββββββββ¦ββββββββββββββββββββ
|
|
131
|
+
β Severity β ID β Description β Where β
|
|
132
|
+
β βββββββββββ¬ββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββββββββ¬ββββββββββββββββββββ£
|
|
133
|
+
β critical β CKV_K8S_8 β IAC-CKV_K8S_8 Liveness Probe Should be Configured β /_AW1234/app.yaml β
|
|
134
|
+
β critical β CKV_K8S_9 β IAC-CKV_K8S_9 Readiness Probe Should be Configured β /_AW1234/app.yaml β
|
|
135
|
+
ββββββββββββ©ββββββββββββ©βββββββββββββββββββββββββββββββββββββββββββββββββββββ©ββββββββββββββββββββ
|
|
136
|
+
Compliance issues count (critical: 2) is greater than or equal to failure criteria (critical: 1)
|
|
137
|
+
βFailed
|
|
138
|
+
|
|
139
|
+
Bellow are all the findings that were accepted.
|
|
140
|
+
ββββββββββββ¦βββββββββββββ¦ββββββββββββββββββββ¦ββββββββββββββ¦βββββββββββββββ¦βββββββββββββββββββ
|
|
141
|
+
β Severity β ID β Where β Create Date β Expired Date β Reason β
|
|
142
|
+
β βββββββββββ¬βββββββββββββ¬ββββββββββββββββββββ¬ββββββββββββββ¬βββββββββββββββ¬βββββββββββββββββββ£
|
|
143
|
+
β high β CKV_K8S_38 β /_AW1234/app.yaml β 18/11/2023 β 18/03/2024 β False Positive β
|
|
144
|
+
ββββββββββββ©βββββββββββββ©ββββββββββββββββββββ©ββββββββββββββ©βββββββββββββββ©βββββββββββββββββββ
|
|
145
|
+
|
|
146
|
+
message custom
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
# How can I help?
|
|
150
|
+
|
|
151
|
+
Review the issues, we hear new ideas. Read more [Contributing](https://github.com/bancolombia/devsecops-engine-tools/blob/trunk/docs/CONTRIBUTING.md)
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
|