From 4573d838310c9bb91bb9774bb2700893f8d9efe5 Mon Sep 17 00:00:00 2001 From: dwertent Date: Thu, 6 Jan 2022 13:05:51 +0200 Subject: [PATCH] fixed counters and skipped ctr --- cautils/datastructuresmethods.go | 6 ++++-- opaprocessor/processorhandler.go | 5 +++-- opaprocessor/processorhandler_test.go | 2 +- opaprocessor/utils.go | 22 +++++++++++---------- opaprocessor/utils_test.go | 3 ++- resultshandling/printer/v1/prettyprinter.go | 10 ++++++---- 6 files changed, 28 insertions(+), 20 deletions(-) diff --git a/cautils/datastructuresmethods.go b/cautils/datastructuresmethods.go index b84dd57f..cee394d7 100644 --- a/cautils/datastructuresmethods.go +++ b/cautils/datastructuresmethods.go @@ -25,8 +25,10 @@ func (policies *Policies) Set(frameworks []reporthandling.Framework, version str compatibleRules = append(compatibleRules, frameworks[i].Controls[j].Rules[r]) } } - frameworks[i].Controls[j].Rules = compatibleRules - policies.Controls[frameworks[i].Controls[j].ControlID] = frameworks[i].Controls[j] + if len(compatibleRules) > 0 { + frameworks[i].Controls[j].Rules = compatibleRules + policies.Controls[frameworks[i].Controls[j].ControlID] = frameworks[i].Controls[j] + } } } } diff --git a/opaprocessor/processorhandler.go b/opaprocessor/processorhandler.go index fdd63e2e..d9c53fbc 100644 --- a/opaprocessor/processorhandler.go +++ b/opaprocessor/processorhandler.go @@ -59,10 +59,10 @@ func (opaHandler *OPAProcessorHandler) ProcessRulesListenner() { opaSessionObj := <-*opaHandler.processedPolicy opap := NewOPAProcessor(opaSessionObj, opaHandler.regoDependenciesData) - ConvertFrameworksToSummaryDetails(&opap.Report.SummaryDetails, opap.Frameworks) - policies := ConvertFrameworksToPolicies(opap.Frameworks, cautils.BuildNumber) + ConvertFrameworksToSummaryDetails(&opap.Report.SummaryDetails, opap.Frameworks, policies) + // process if err := opap.Process(policies); err != nil { // fmt.Println(err) @@ -197,6 +197,7 @@ func (opap *OPAProcessor) processRule(rule *reporthandling.PolicyRule) (map[stri if r, k := resources[failedResources[j].GetID()]; k { ruleResult = r } + ruleResult.Status = apis.StatusFailed for j := range ruleResponses[i].FailedPaths { ruleResult.Paths = append(ruleResult.Paths, resourcesresults.Path{FailedPath: ruleResponses[i].FailedPaths[j]}) diff --git a/opaprocessor/processorhandler_test.go b/opaprocessor/processorhandler_test.go index 50882127..78dda554 100644 --- a/opaprocessor/processorhandler_test.go +++ b/opaprocessor/processorhandler_test.go @@ -71,7 +71,7 @@ func TestProcessResourcesResult(t *testing.T) { opaSessionObj.Frameworks = frameworks policies := ConvertFrameworksToPolicies(opaSessionObj.Frameworks, "") - ConvertFrameworksToSummaryDetails(&opaSessionObj.Report.SummaryDetails, opaSessionObj.Frameworks) + ConvertFrameworksToSummaryDetails(&opaSessionObj.Report.SummaryDetails, opaSessionObj.Frameworks, policies) opaSessionObj.K8SResources = &k8sResources opaSessionObj.AllResources[deployment.GetID()] = deployment diff --git a/opaprocessor/utils.go b/opaprocessor/utils.go index 6289935c..5e8623e3 100644 --- a/opaprocessor/utils.go +++ b/opaprocessor/utils.go @@ -14,7 +14,7 @@ func ConvertFrameworksToPolicies(frameworks []reporthandling.Framework, version } // ConvertFrameworksToSummaryDetails initialize the summary details for the report object -func ConvertFrameworksToSummaryDetails(summaryDetails *reportsummary.SummaryDetails, frameworks []reporthandling.Framework) { +func ConvertFrameworksToSummaryDetails(summaryDetails *reportsummary.SummaryDetails, frameworks []reporthandling.Framework, policies *cautils.Policies) { if summaryDetails.Controls == nil { summaryDetails.Controls = make(map[string]reportsummary.ControlSummary) } @@ -22,17 +22,19 @@ func ConvertFrameworksToSummaryDetails(summaryDetails *reportsummary.SummaryDeta controls := map[string]reportsummary.ControlSummary{} for j := range frameworks[i].Controls { id := frameworks[i].Controls[j].ControlID - c := reportsummary.ControlSummary{ - Name: frameworks[i].Controls[j].Name, - ControlID: id, - ScoreFactor: frameworks[i].Controls[j].BaseScore, - Description: frameworks[i].Controls[j].Description, - Remediation: frameworks[i].Controls[j].Remediation, + if _, ok := policies.Controls[id]; ok { + c := reportsummary.ControlSummary{ + Name: frameworks[i].Controls[j].Name, + ControlID: id, + ScoreFactor: frameworks[i].Controls[j].BaseScore, + Description: frameworks[i].Controls[j].Description, + Remediation: frameworks[i].Controls[j].Remediation, + } + controls[frameworks[i].Controls[j].ControlID] = c + summaryDetails.Controls[id] = c } - controls[frameworks[i].Controls[j].ControlID] = c - summaryDetails.Controls[id] = c } - if frameworks[i].Name != "" { + if cautils.StringInSlice(policies.Frameworks, frameworks[i].Name) != cautils.ValueNotFound { summaryDetails.Frameworks = append(summaryDetails.Frameworks, reportsummary.FrameworkSummary{ Name: frameworks[i].Name, Controls: controls, diff --git a/opaprocessor/utils_test.go b/opaprocessor/utils_test.go index a059a78e..f54256b7 100644 --- a/opaprocessor/utils_test.go +++ b/opaprocessor/utils_test.go @@ -23,7 +23,8 @@ func TestInitializeSummaryDetails(t *testing.T) { summaryDetails := reportsummary.SummaryDetails{} frameworks := []reporthandling.Framework{*fw0, *fw1} - ConvertFrameworksToSummaryDetails(&summaryDetails, frameworks) + policies := ConvertFrameworksToPolicies([]reporthandling.Framework{*fw0, *fw1}, "") + ConvertFrameworksToSummaryDetails(&summaryDetails, frameworks, policies) assert.Equal(t, 2, len(summaryDetails.Frameworks)) assert.Equal(t, 3, len(summaryDetails.Controls)) } diff --git a/resultshandling/printer/v1/prettyprinter.go b/resultshandling/printer/v1/prettyprinter.go index 2b6c591b..3ee22bc7 100644 --- a/resultshandling/printer/v1/prettyprinter.go +++ b/resultshandling/printer/v1/prettyprinter.go @@ -76,9 +76,9 @@ func (prettyPrinter *PrettyPrinter) Score(score float32) { func (prettyPrinter *PrettyPrinter) summarySetup(fr reporthandling.FrameworkReport, allResources map[string]workloadinterface.IMetadata) { for _, cr := range fr.ControlReports { - if len(cr.RuleReports) == 0 { - continue - } + // if len(cr.RuleReports) == 0 { + // continue + // } workloadsSummary := listResultSummary(cr.RuleReports, allResources) var passedWorkloads map[string][]WorkloadSummary @@ -248,7 +248,9 @@ func (prettyPrinter *PrettyPrinter) printSummaryTable(frameworksNames []string, func (prettyPrinter *PrettyPrinter) printFramework(frameworksNames []string, frameworkScores []float32) { if len(frameworksNames) == 1 { - cautils.InfoTextDisplay(prettyPrinter.writer, fmt.Sprintf("FRAMEWORK %s\n", frameworksNames[0])) + if frameworksNames[0] != "" { + cautils.InfoTextDisplay(prettyPrinter.writer, fmt.Sprintf("FRAMEWORK %s\n", frameworksNames[0])) + } } else if len(frameworksNames) > 1 { p := "FRAMEWORKS: " for i := 0; i < len(frameworksNames)-1; i++ {