From 01f6a1e1c07f9647befac886d320d5607ae36097 Mon Sep 17 00:00:00 2001 From: dwertent Date: Wed, 13 Oct 2021 20:41:30 +0300 Subject: [PATCH 1/2] fixed counters --- cautils/opapolicy/datastructuresmethods.go | 6 ++---- opaprocessor/processorhandlerutils.go | 1 + resultshandling/printer/printresults.go | 11 +++-------- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/cautils/opapolicy/datastructuresmethods.go b/cautils/opapolicy/datastructuresmethods.go index 56835967..df436516 100644 --- a/cautils/opapolicy/datastructuresmethods.go +++ b/cautils/opapolicy/datastructuresmethods.go @@ -124,9 +124,7 @@ func (ruleReport *RuleReport) GetNumberOfFailedResources() int { sum := 0 for i := len(ruleReport.RuleResponses) - 1; i >= 0; i-- { if ruleReport.RuleResponses[i].GetSingleResultStatus() == "failed" { - //if !ruleReport.DeleteIfRedundantResponse(&ruleReport.RuleResponses[i], i) { sum += len(ruleReport.RuleResponses[i].AlertObject.K8SApiObjects) - //} } } return sum @@ -168,9 +166,9 @@ func removeResponse(slice []RuleResponse, index int) []RuleResponse { func (ruleReport *RuleReport) GetNumberOfWarningResources() int { sum := 0 - for i := range ruleReport.RuleResponses { + for i := len(ruleReport.RuleResponses) - 1; i >= 0; i-- { if ruleReport.RuleResponses[i].GetSingleResultStatus() == "warning" { - sum += 1 + sum += len(ruleReport.RuleResponses[i].AlertObject.K8SApiObjects) } } return sum diff --git a/opaprocessor/processorhandlerutils.go b/opaprocessor/processorhandlerutils.go index d08a8876..ddd361e3 100644 --- a/opaprocessor/processorhandlerutils.go +++ b/opaprocessor/processorhandlerutils.go @@ -98,6 +98,7 @@ func editRuleResponses(ruleResponses []opapolicy.RuleResponse) []opapolicy.RuleR // resource found -> remove from slice ruleResponses = removeFromSlice(ruleResponses, i) lenRuleResponses -= 1 + i -= 1 break } else { cleanRuleResponses(w) diff --git a/resultshandling/printer/printresults.go b/resultshandling/printer/printresults.go index e652e60e..39e89ebe 100644 --- a/resultshandling/printer/printresults.go +++ b/resultshandling/printer/printresults.go @@ -45,12 +45,7 @@ func calculatePostureScore(postureReport *opapolicy.PostureReport) float32 { totalFailed := 0 for _, frameworkReport := range postureReport.FrameworkReports { for _, controlReport := range frameworkReport.ControlReports { - for _, ruleReport := range controlReport.RuleReports { - for _, ruleResponses := range ruleReport.RuleResponses { - totalFailed += len(ruleResponses.AlertObject.K8SApiObjects) - totalFailed += len(ruleResponses.AlertObject.ExternalObjects) - } - } + totalFailed += controlReport.GetNumberOfFailedResources() totalResources += controlReport.GetNumberOfResources() } } @@ -107,7 +102,7 @@ func (printer *Printer) SummarySetup(postureReport *opapolicy.PostureReport) { printer.summary[cr.Name] = ControlSummary{ TotalResources: cr.GetNumberOfResources(), - TotalFailed: len(workloadsSummary) - cr.GetNumberOfWarningResources(), + TotalFailed: cr.GetNumberOfFailedResources(), TotalWarnign: cr.GetNumberOfWarningResources(), WorkloadSummary: mapResources, Description: cr.Description, @@ -133,7 +128,7 @@ func (printer *Printer) PrintResults() { func (printer *Printer) printSummary(controlName string, controlSummary *ControlSummary) { cautils.SimpleDisplay(printer.writer, "Summary - ") - cautils.SuccessDisplay(printer.writer, "Passed:%v ", controlSummary.TotalResources-controlSummary.TotalFailed) + cautils.SuccessDisplay(printer.writer, "Passed:%v ", controlSummary.TotalResources-controlSummary.TotalFailed-controlSummary.TotalWarnign) cautils.WarningDisplay(printer.writer, "Excluded:%v ", controlSummary.TotalWarnign) cautils.FailureDisplay(printer.writer, "Failed:%v ", controlSummary.TotalFailed) cautils.InfoDisplay(printer.writer, "Total:%v\n", controlSummary.TotalResources) From efa53bd83ca27f20a0cdba5ba36f01d79fa08cf2 Mon Sep 17 00:00:00 2001 From: dwertent Date: Thu, 14 Oct 2021 09:13:07 +0300 Subject: [PATCH 2/2] fixed loop --- cautils/opapolicy/datastructuresmethods.go | 38 +--------------------- 1 file changed, 1 insertion(+), 37 deletions(-) diff --git a/cautils/opapolicy/datastructuresmethods.go b/cautils/opapolicy/datastructuresmethods.go index df436516..a649aebd 100644 --- a/cautils/opapolicy/datastructuresmethods.go +++ b/cautils/opapolicy/datastructuresmethods.go @@ -3,8 +3,6 @@ package opapolicy import ( "bytes" "encoding/json" - - "github.com/armosec/kubescape/cautils/k8sinterface" ) func (pn *PolicyNotification) ToJSONBytesBuffer() (*bytes.Buffer, error) { @@ -130,43 +128,9 @@ func (ruleReport *RuleReport) GetNumberOfFailedResources() int { return sum } -func (ruleReport *RuleReport) DeleteIfRedundantResponse(RuleResponse *RuleResponse, index int) bool { - if b, rr := ruleReport.IsDuplicateResponseOfResource(RuleResponse, index); b { - rr.AddMessageToResponse(RuleResponse.AlertMessage) - ruleReport.RuleResponses = removeResponse(ruleReport.RuleResponses, index) - return true - } - return false -} - -func (ruleResponse *RuleResponse) AddMessageToResponse(message string) { - ruleResponse.AlertMessage += message -} - -func (ruleReport *RuleReport) IsDuplicateResponseOfResource(RuleResponse *RuleResponse, index int) (bool, *RuleResponse) { - for i := range ruleReport.RuleResponses { - if i != index { - for j := range ruleReport.RuleResponses[i].AlertObject.K8SApiObjects { - for k := range RuleResponse.AlertObject.K8SApiObjects { - w1 := k8sinterface.NewWorkloadObj(ruleReport.RuleResponses[i].AlertObject.K8SApiObjects[j]) - w2 := k8sinterface.NewWorkloadObj(RuleResponse.AlertObject.K8SApiObjects[k]) - if w1.GetName() == w2.GetName() && w1.GetNamespace() == w2.GetNamespace() && w1.GetKind() != "Role" && w1.GetKind() != "ClusterRole" { - return true, &ruleReport.RuleResponses[i] - } - } - } - } - } - return false, nil -} - -func removeResponse(slice []RuleResponse, index int) []RuleResponse { - return append(slice[:index], slice[index+1:]...) -} - func (ruleReport *RuleReport) GetNumberOfWarningResources() int { sum := 0 - for i := len(ruleReport.RuleResponses) - 1; i >= 0; i-- { + for i := range ruleReport.RuleResponses { if ruleReport.RuleResponses[i].GetSingleResultStatus() == "warning" { sum += len(ruleReport.RuleResponses[i].AlertObject.K8SApiObjects) }