feat(trivy): Enhance Trivy report generation and metrics handling

- Updated `generate_report.sh` to include additional scanners and output paths.
- Enhanced `send_report.py` with new data classes for misconfigurations and vulnerabilities.
- Improved parsing logic for Trivy output, supporting both Kubernetes and image scans.
- Added Prometheus metrics generation for various scan results, including misconfigurations and vulnerabilities.
- Introduced unit tests for parsing Trivy output and generating Prometheus metrics.
- Modified Terraform variables for SMTP port type and added Pushgateway URL variable.
This commit is contained in:
2026-05-22 23:41:26 +02:00
parent 829ab48919
commit 255ba6aec9
25 changed files with 410938 additions and 71 deletions
+66
View File
@@ -1,3 +1,36 @@
resource "kubernetes_config_map" "grafana_datasources" {
metadata {
name = "grafana-datasources"
namespace = kubernetes_namespace.grafana.metadata[0].name
}
data = {
"default.yml" = replace(local.grafana_datasource_config, "__PROMETHEUS_URL__", var.prometheus_url)
}
}
resource "kubernetes_config_map" "grafana_dashboard_provider" {
metadata {
name = "grafana-dashboard-provider"
namespace = kubernetes_namespace.grafana.metadata[0].name
}
data = {
"dashboard-provider.yml" = local.grafana_dashboard_provider
}
}
resource "kubernetes_config_map" "grafana_dashboards" {
metadata {
name = "grafana-dashboards"
namespace = kubernetes_namespace.grafana.metadata[0].name
}
data = {
"trivy-vulnerabilities-dashboard.json" = local.grafana_trivy_dashboard
}
}
resource "kubernetes_deployment" "grafana" {
metadata {
@@ -67,6 +100,21 @@ resource "kubernetes_deployment" "grafana" {
name = "grafana-pv"
mount_path = "/var/lib/grafana"
}
volume_mount {
name = "grafana-datasources"
mount_path = "/etc/grafana/provisioning/datasources"
read_only = true
}
volume_mount {
name = "grafana-dashboard-provider"
mount_path = "/etc/grafana/provisioning/dashboards"
read_only = true
}
volume_mount {
name = "grafana-dashboards"
mount_path = "/var/lib/grafana/dashboards"
read_only = true
}
}
volume {
name = "grafana-pv"
@@ -74,6 +122,24 @@ resource "kubernetes_deployment" "grafana" {
path = local.monitoring_folder
}
}
volume {
name = "grafana-datasources"
config_map {
name = kubernetes_config_map.grafana_datasources.metadata[0].name
}
}
volume {
name = "grafana-dashboard-provider"
config_map {
name = kubernetes_config_map.grafana_dashboard_provider.metadata[0].name
}
}
volume {
name = "grafana-dashboards"
config_map {
name = kubernetes_config_map.grafana_dashboards.metadata[0].name
}
}
}
}
}