engine

package
v0.0.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 15, 2025 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CELEngine

type CELEngine struct {
	// contains filtered or unexported fields
}

CELEngine implements EvaluationEngine using Google's CEL (Common Expression Language)

func NewCELEngine

func NewCELEngine() (*CELEngine, error)

NewCELEngine creates a new CEL evaluation engine with Kubernetes-specific extensions

func (*CELEngine) CompileRule

func (e *CELEngine) CompileRule(ctx context.Context, rule *models.SecurityRule) error

CompileRule pre-compiles a rule's CEL expression for better performance

func (*CELEngine) EvaluateRule

func (e *CELEngine) EvaluateRule(ctx context.Context, rule *models.SecurityRule, resource map[string]interface{}) (*models.ValidationResult, error)

EvaluateRule evaluates a single security rule against a single resource

func (*CELEngine) EvaluateRules

func (e *CELEngine) EvaluateRules(ctx context.Context, rules []*models.SecurityRule, resource map[string]interface{}) ([]*models.ValidationResult, error)

EvaluateRules evaluates multiple rules against a Kubernetes resource

func (*CELEngine) EvaluateRulesAgainstResources

func (e *CELEngine) EvaluateRulesAgainstResources(ctx context.Context, rules []*models.SecurityRule, resources []map[string]interface{}) (*models.ScanResult, error)

EvaluateRulesAgainstResources evaluates multiple rules against multiple resources

func (*CELEngine) EvaluateRulesAgainstResourcesConcurrent

func (e *CELEngine) EvaluateRulesAgainstResourcesConcurrent(ctx context.Context, rules []*models.SecurityRule, resources []map[string]interface{}, parallelism int) (*models.ScanResult, error)

EvaluateRulesAgainstResourcesConcurrent evaluates multiple rules against multiple resources with optimized parallelism

func (*CELEngine) ValidateCELExpression

func (e *CELEngine) ValidateCELExpression(ctx context.Context, expression string) error

ValidateCELExpression validates a CEL expression without caching This method provides comprehensive validation including syntax, type checking, and semantic analysis

type EvaluationEngine

type EvaluationEngine interface {
	// EvaluateRule evaluates a single rule against a Kubernetes resource
	EvaluateRule(ctx context.Context, rule *models.SecurityRule, resource map[string]interface{}) (*models.ValidationResult, error)

	// EvaluateRules evaluates multiple rules against a Kubernetes resource
	EvaluateRules(ctx context.Context, rules []*models.SecurityRule, resource map[string]interface{}) ([]*models.ValidationResult, error)

	// EvaluateRulesAgainstResources evaluates multiple rules against multiple resources
	EvaluateRulesAgainstResources(ctx context.Context, rules []*models.SecurityRule, resources []map[string]interface{}) (*models.ScanResult, error)

	// EvaluateRulesAgainstResourcesConcurrent evaluates multiple rules against multiple resources with specified parallelism
	EvaluateRulesAgainstResourcesConcurrent(ctx context.Context, rules []*models.SecurityRule, resources []map[string]interface{}, parallelism int) (*models.ScanResult, error)

	// CompileRule pre-compiles a rule's CEL expression for better performance
	CompileRule(ctx context.Context, rule *models.SecurityRule) error

	// ValidateCELExpression validates a CEL expression without executing it
	ValidateCELExpression(ctx context.Context, expression string) error
}

EvaluationEngine defines the interface for evaluating security rules

type ResourceMatcher

type ResourceMatcher interface {
	// MatchesRule checks if a resource matches the rule's match criteria
	MatchesRule(ctx context.Context, rule *models.SecurityRule, resource map[string]interface{}) (bool, error)

	// MatchesNamespace checks if a resource's namespace matches the namespace selector
	MatchesNamespace(ctx context.Context, namespace string, selector *models.NamespaceSelector) (bool, error)

	// MatchesLabels checks if a resource's labels match the label selector
	MatchesLabels(ctx context.Context, labels map[string]string, selector *models.LabelSelector) (bool, error)

	// MatchesKind checks if a resource kind matches the rule criteria
	MatchesKind(ctx context.Context, apiVersion, kind string, criteria *models.KubernetesResourceCriteria) (bool, error)
}

ResourceMatcher defines the interface for matching resources against rule criteria

func NewResourceMatcher

func NewResourceMatcher() ResourceMatcher

NewResourceMatcher creates a new resource matcher

type RuleCompiler

type RuleCompiler interface {
	// Compile compiles a CEL program and caches it
	Compile(ctx context.Context, ruleID string, program cel.Program) error

	// GetCompiled retrieves a compiled CEL program
	GetCompiled(ctx context.Context, ruleID string) (interface{}, bool)

	// ClearCache clears the compilation cache
	ClearCache(ctx context.Context)

	// GetCacheStats returns cache statistics
	GetCacheStats(ctx context.Context) map[string]interface{}
}

RuleCompiler defines the interface for compiling and caching CEL expressions

func NewRuleCompiler

func NewRuleCompiler() RuleCompiler

NewRuleCompiler creates a new rule compiler

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL