mirror of
https://github.com/kubescape/kubescape.git
synced 2026-04-15 06:58:11 +00:00
use inputaggregator on k8sresources, don't use v0 rules
This commit is contained in:
@@ -85,7 +85,8 @@ func NewARMOAPICustomized(armoERURL, armoBEURL, armoFEURL string) *ArmoAPI {
|
||||
func newArmoAPI() *ArmoAPI {
|
||||
return &ArmoAPI{
|
||||
httpClient: &http.Client{Timeout: time.Duration(61) * time.Second},
|
||||
gs: gitregostore.InitDefaultGitRegoStore(-1),
|
||||
// gs: gitregostore.InitDefaultGitRegoStore(-1),
|
||||
gs: gitregostore.InitGitRegoStore("https://api.github.com/repos", "armosec", "regolibrary", "git/trees", "", "dev", -1),
|
||||
}
|
||||
}
|
||||
func (armoAPI *ArmoAPI) SetCustomerGUID(customerGUID string) {
|
||||
|
||||
@@ -18,7 +18,8 @@ type DownloadReleasedPolicy struct {
|
||||
|
||||
func NewDownloadReleasedPolicy() *DownloadReleasedPolicy {
|
||||
return &DownloadReleasedPolicy{
|
||||
gs: gitregostore.InitDefaultGitRegoStore(-1),
|
||||
// gs: gitregostore.InitDefaultGitRegoStore(-1),
|
||||
gs: gitregostore.InitGitRegoStore("https://api.github.com/repos", "armosec", "regolibrary", "git/trees", "", "dev", -1),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ go 1.17
|
||||
|
||||
require (
|
||||
github.com/armosec/armoapi-go v0.0.23
|
||||
github.com/armosec/k8s-interface v0.0.8
|
||||
github.com/armosec/opa-utils v0.0.42
|
||||
github.com/armosec/k8s-interface v0.0.12
|
||||
github.com/armosec/opa-utils v0.0.45
|
||||
github.com/armosec/rbac-utils v0.0.1
|
||||
github.com/armosec/utils-go v0.0.3
|
||||
github.com/briandowns/spinner v1.16.0
|
||||
|
||||
@@ -86,10 +86,11 @@ github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj
|
||||
github.com/armosec/armoapi-go v0.0.2/go.mod h1:vIK17yoKbJRQyZXWWLe3AqfqCRITxW8qmSkApyq5xFs=
|
||||
github.com/armosec/armoapi-go v0.0.23 h1:jqoLIWM5CR7DCD9fpFgN0ePqtHvOCoZv/XzCwsUluJU=
|
||||
github.com/armosec/armoapi-go v0.0.23/go.mod h1:iaVVGyc23QGGzAdv4n+szGQg3Rbpixn9yQTU3qWRpaw=
|
||||
github.com/armosec/k8s-interface v0.0.8 h1:Eo3Qen4yFXxzVem49FNeij2ckyzHSAJ0w6PZMaSEIm8=
|
||||
github.com/armosec/k8s-interface v0.0.8/go.mod h1:xxS+V5QT3gVQTwZyAMMDrYLWGrfKOpiJ7Jfhfa0w9sM=
|
||||
github.com/armosec/opa-utils v0.0.42 h1:7YzQJNVBmM0+1nWOAiUgDt+mvlVEwApg80FjMh4oxXo=
|
||||
github.com/armosec/opa-utils v0.0.42/go.mod h1:OqewZoSqKD5udtQ4lGFixb8yyFNqLq9zqinlAL6KSjM=
|
||||
github.com/armosec/k8s-interface v0.0.12 h1:SzFqu9dG+Pak+empVkYu+weznWTNSWlxcIqTaGFIgFo=
|
||||
github.com/armosec/k8s-interface v0.0.12/go.mod h1:xxS+V5QT3gVQTwZyAMMDrYLWGrfKOpiJ7Jfhfa0w9sM=
|
||||
github.com/armosec/opa-utils v0.0.45 h1:TZQ9QY6Lft4BxLrHADv0ERoJdzRMg8U6N7LBO9vAUMs=
|
||||
github.com/armosec/opa-utils v0.0.45/go.mod h1:HtOWZJXviVwuCeUBc5TMZFoxYz9QsITxCE3oJVx/Z6Y=
|
||||
github.com/armosec/rbac-utils v0.0.1 h1:N2MI98F/0zbDjmRZ29CNElU1AXkFLk5csd/qAHOBdXY=
|
||||
github.com/armosec/rbac-utils v0.0.1/go.mod h1:pQ8CBiij8kSKV7aeZm9FMvtZN28VgA7LZcYyTWimq40=
|
||||
github.com/armosec/utils-go v0.0.2/go.mod h1:itWmRLzRdsnwjpEOomL0mBWGnVNNIxSjDAdyc+b0iUo=
|
||||
|
||||
@@ -3,6 +3,7 @@ package opaprocessor
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/armosec/kubescape/cautils"
|
||||
@@ -149,7 +150,11 @@ func (opap *OPAProcessor) processRule(rule *reporthandling.PolicyRule) (*reporth
|
||||
if ruleWithArmoOpaDependency(rule.Attributes) {
|
||||
return nil, nil
|
||||
}
|
||||
if strings.HasSuffix(rule.Name, "-v0") {
|
||||
return nil, nil
|
||||
}
|
||||
k8sObjects := getKubernetesObjects(opap.K8SResources, rule.Match)
|
||||
k8sObjects = reporthandling.RegoResourcesAggregator(rule, k8sObjects)
|
||||
ruleReport, err := opap.runOPAOnSingleRule(rule, k8sObjects)
|
||||
if err != nil {
|
||||
ruleReport.RuleStatus.Status = "failure"
|
||||
|
||||
@@ -57,6 +57,13 @@ func ruleResultSummary(obj reporthandling.AlertObject) ([]WorkloadSummary, error
|
||||
|
||||
resource = append(resource, *r)
|
||||
}
|
||||
if obj.ExternalObjects != nil {
|
||||
r, err := newWorkloadSummaryExternalObj(obj.ExternalObjects)
|
||||
if err != nil {
|
||||
return resource, err
|
||||
}
|
||||
resource = append(resource, *r)
|
||||
}
|
||||
|
||||
return resource, nil
|
||||
}
|
||||
@@ -73,3 +80,25 @@ func newWorkloadSummary(obj map[string]interface{}) (*WorkloadSummary, error) {
|
||||
r.Name = workload.GetName()
|
||||
return r, nil
|
||||
}
|
||||
|
||||
func newWorkloadSummaryExternalObj(obj map[string]interface{}) (*WorkloadSummary, error) {
|
||||
r := &WorkloadSummary{}
|
||||
|
||||
relatedObjects := []workloadinterface.IMetadata{}
|
||||
if relatedObjectslist, ok := obj["relatedObjects"].([]interface{}); ok {
|
||||
for _, related := range relatedObjectslist {
|
||||
if r, ok := related.(map[string]interface{}); ok {
|
||||
o := workloadinterface.NewWorkloadObj(r)
|
||||
relatedObjects = append(relatedObjects, o)
|
||||
}
|
||||
}
|
||||
}
|
||||
vector := workloadinterface.NewRegoResponseVectorObject(obj, relatedObjects)
|
||||
if vector == nil {
|
||||
return r, fmt.Errorf("error creating rego response vector obj")
|
||||
}
|
||||
r.Kind = vector.GetKind()
|
||||
r.Namespace = vector.GetNamespace()
|
||||
r.Name = vector.GetName()
|
||||
return r, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user