{% extends "base.html" %} {% block title %}Consolidated Security Report{% endblock %} {% block content %}

Consolidated Security Report

Security Posture Overview

{{ report.total_findings }} Total Findings
{{ critical_count + high_count }} High Risk
{{ pass_count }} Passed
{{ scanners_count }} Scanners

Table of Contents

Severity Breakdown

Severity Count Percentage
CRITICAL {{ critical_count }} {{ ((critical_count / report.total_findings) * 100) | round(1) if report.total_findings > 0 else 0 }}%
HIGH {{ high_count }} {{ ((high_count / report.total_findings) * 100) | round(1) if report.total_findings > 0 else 0 }}%
MEDIUM {{ medium_count }} {{ ((medium_count / report.total_findings) * 100) | round(1) if report.total_findings > 0 else 0 }}%
LOW {{ low_count }} {{ ((low_count / report.total_findings) * 100) | round(1) if report.total_findings > 0 else 0 }}%
INFO {{ info_count }} {{ ((info_count / report.total_findings) * 100) | round(1) if report.total_findings > 0 else 0 }}%
PASS {{ pass_count }} {{ ((pass_count / report.total_findings) * 100) | round(1) if report.total_findings > 0 else 0 }}%

Scanner Results

{% for scanner_name, result in scanner_results.items() %}

{{ scanner_name | title }}

Metric Value
Provider {{ result.summary.provider.value if result.summary.provider else 'N/A' }}
Total Findings {{ result.summary.total_findings }}
Critical {{ result.summary.critical_count }}
High {{ result.summary.high_count }}
Medium {{ result.summary.medium_count }}
Low {{ result.summary.low_count }}
Passed {{ result.summary.pass_count }}
Scan Time {{ result.summary.scan_timestamp.strftime('%Y-%m-%d %H:%M:%S') if result.summary.scan_timestamp else 'N/A' }}
{% endfor %}

Findings by Source

{% for scanner_name, result in scanner_results.items() %} {% if result.findings %}

{{ scanner_name | title }} Findings ({{ result.findings | length }})

{% for finding in result.findings[:20] %} {% endfor %} {% if result.findings | length > 20 %} {% endif %}
ID Severity Title Resource
{{ finding.check_id or finding.id }} {{ finding.severity.value }} {{ finding.title }} {{ finding.resource[:50] if finding.resource else 'N/A' }}{% if finding.resource and finding.resource | length > 50 %}...{% endif %}
... and {{ result.findings | length - 20 }} more findings
{% endif %} {% endfor %} {% if include_all_findings and all_findings %}

All Findings Detail

{% for finding in all_findings %}

{{ finding.severity.value }} {{ finding.title }}

ID: {{ finding.id or 'N/A' }}
Source: {{ finding.source.value | upper }}
Check ID: {{ finding.check_id or 'N/A' }}
Resource: {{ finding.resource or 'N/A' }}
Resource Type: {{ finding.resource_type or 'N/A' }}
{% if finding.description %}

Description: {{ finding.description }}

{% endif %} {% if finding.remediation %}
Remediation: {{ finding.remediation }}
{% endif %}
{% endfor %} {% endif %} {% endblock %}