forked from p34709852/monkey
Pillar grading resource is now real data
This commit is contained in:
parent
47375efe42
commit
ae88764dc8
|
@ -99,6 +99,28 @@ TESTS_MAP = {
|
||||||
POSSIBLE_STATUSES_KEY: [STATUS_UNEXECUTED, STATUS_CONCLUSIVE, STATUS_POSITIVE]
|
POSSIBLE_STATUSES_KEY: [STATUS_UNEXECUTED, STATUS_CONCLUSIVE, STATUS_POSITIVE]
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PILLARS_TO_TESTS = {
|
||||||
|
DATA: [],
|
||||||
|
PEOPLE: [],
|
||||||
|
NETWORKS: [],
|
||||||
|
DEVICES: [],
|
||||||
|
WORKLOADS: [],
|
||||||
|
VISIBILITY_ANALYTICS: [],
|
||||||
|
AUTOMATION_ORCHESTRATION: []
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def populate_pillars_to_tests():
|
||||||
|
for pillar in PILLARS:
|
||||||
|
for test, test_info in TESTS_MAP.items():
|
||||||
|
if pillar in test_info[PILLARS_KEY]:
|
||||||
|
PILLARS_TO_TESTS[pillar].append(test)
|
||||||
|
|
||||||
|
|
||||||
|
populate_pillars_to_tests()
|
||||||
|
|
||||||
|
|
||||||
EVENT_TYPE_ISLAND = "island"
|
EVENT_TYPE_ISLAND = "island"
|
||||||
EVENT_TYPE_MONKEY_NETWORK = "monkey_network"
|
EVENT_TYPE_MONKEY_NETWORK = "monkey_network"
|
||||||
EVENT_TYPE_MONKEY_LOCAL = "monkey_local"
|
EVENT_TYPE_MONKEY_LOCAL = "monkey_local"
|
||||||
|
|
|
@ -4,7 +4,8 @@ import json
|
||||||
import flask_restful
|
import flask_restful
|
||||||
from flask import jsonify
|
from flask import jsonify
|
||||||
|
|
||||||
from common.data.zero_trust_consts import TESTS_MAP, EXPLANATION_KEY, PILLARS_KEY
|
from common.data.zero_trust_consts import TESTS_MAP, EXPLANATION_KEY, PILLARS_KEY, PILLARS, STATUS_CONCLUSIVE, \
|
||||||
|
STATUS_INCONCLUSIVE, STATUS_POSITIVE, STATUS_UNEXECUTED, PILLARS_TO_TESTS
|
||||||
from monkey_island.cc.auth import jwt_required
|
from monkey_island.cc.auth import jwt_required
|
||||||
from monkey_island.cc.models.finding import Finding
|
from monkey_island.cc.models.finding import Finding
|
||||||
from monkey_island.cc.services.reporting.report import ReportService
|
from monkey_island.cc.services.reporting.report import ReportService
|
||||||
|
@ -151,55 +152,35 @@ def get_recommendations_status():
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def get_pillar_grade(pillar, all_findings):
|
||||||
|
pillar_grade = {
|
||||||
|
"Pillar": pillar,
|
||||||
|
STATUS_CONCLUSIVE: 0,
|
||||||
|
STATUS_INCONCLUSIVE: 0,
|
||||||
|
STATUS_POSITIVE: 0,
|
||||||
|
STATUS_UNEXECUTED: 0
|
||||||
|
}
|
||||||
|
|
||||||
|
tests_of_this_pillar = PILLARS_TO_TESTS[pillar]
|
||||||
|
|
||||||
|
test_unexecuted = {}
|
||||||
|
for test in tests_of_this_pillar:
|
||||||
|
test_unexecuted[test] = True
|
||||||
|
|
||||||
|
for finding in all_findings:
|
||||||
|
test_unexecuted[finding.test] = False
|
||||||
|
test_info = TESTS_MAP[finding.test]
|
||||||
|
if pillar in test_info[PILLARS_KEY]:
|
||||||
|
pillar_grade[finding.status] += 1
|
||||||
|
|
||||||
|
pillar_grade[STATUS_UNEXECUTED] = sum(1 for condition in test_unexecuted.values() if condition)
|
||||||
|
|
||||||
|
return pillar_grade
|
||||||
|
|
||||||
|
|
||||||
def get_pillars_grades():
|
def get_pillars_grades():
|
||||||
return [
|
pillars_grades = []
|
||||||
{
|
all_findings = Finding.objects()
|
||||||
"Pillar": "Data",
|
for pillar in PILLARS:
|
||||||
"Conclusive": 6,
|
pillars_grades.append(get_pillar_grade(pillar, all_findings))
|
||||||
"Inconclusive": 6,
|
return pillars_grades
|
||||||
"Positive": 6,
|
|
||||||
"Unexecuted": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Pillar": "Networks",
|
|
||||||
"Conclusive": 6,
|
|
||||||
"Inconclusive": 6,
|
|
||||||
"Positive": 6,
|
|
||||||
"Unexecuted": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Pillar": "People",
|
|
||||||
"Conclusive": 6,
|
|
||||||
"Inconclusive": 6,
|
|
||||||
"Positive": 6,
|
|
||||||
"Unexecuted": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Pillar": "Workloads",
|
|
||||||
"Conclusive": 6,
|
|
||||||
"Inconclusive": 6,
|
|
||||||
"Positive": 6,
|
|
||||||
"Unexecuted": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Pillar": "Devices",
|
|
||||||
"Conclusive": 6,
|
|
||||||
"Inconclusive": 6,
|
|
||||||
"Positive": 6,
|
|
||||||
"Unexecuted": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Pillar": "Visibility & Analytics",
|
|
||||||
"Conclusive": 6,
|
|
||||||
"Inconclusive": 6,
|
|
||||||
"Positive": 6,
|
|
||||||
"Unexecuted": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Pillar": "Automation & Orchestration",
|
|
||||||
"Conclusive": 6,
|
|
||||||
"Inconclusive": 6,
|
|
||||||
"Positive": 6,
|
|
||||||
"Unexecuted": 6
|
|
||||||
},
|
|
||||||
]
|
|
||||||
|
|
|
@ -12,6 +12,7 @@ const columns = [
|
||||||
{ Header: 'Conclusive', accessor: 'Conclusive'},
|
{ Header: 'Conclusive', accessor: 'Conclusive'},
|
||||||
{ Header: 'Inconclusive', accessor: 'Inconclusive'},
|
{ Header: 'Inconclusive', accessor: 'Inconclusive'},
|
||||||
{ Header: 'Unexecuted', accessor: 'Unexecuted'},
|
{ Header: 'Unexecuted', accessor: 'Unexecuted'},
|
||||||
|
{ Header: 'Positive', accessor: 'Positive'},
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
Loading…
Reference in New Issue