Documentation ¶
Overview ¶
Package detect includes the "API" of the rule-engine and includes public facing types that consumers of the rule engine should work with
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ErrDataNotFound = errors.New("requested data was not found")
var ErrFailedToUnmarshal = errors.New("given value could not be unmarshaled")
var ErrKeyNotSupported = errors.New("queried key is not supported")
Functions ¶
This section is empty.
Types ¶
type DataSource ¶
type DataSource interface { // Get a value from the data source. Make sure the key matches one of the keys allowed in Keys. // The following errors should be returned for the appropriate cases: // // - ErrDataNotFound - When the key does not match to any existing data // - ErrKeyNotSupported - When the key used does not match to a support key // - Otherwise errors may vary. Get(interface{}) (map[string]interface{}, error) // Version of the data fetched. Whenever the schema has a breaking change the version should be incremented. // Consumers of the data source should verify they are running against a support version before using it. Version() uint // The types of keys the data source supports. Keys() []string // JSON Schema of the data source's result. All Get results should conform to the schema described. Schema() string // Namespace of the data source (to avoid ID collisions) Namespace() string // ID of the data source, any unique name works. ID() string }
type Finding ¶
type Finding struct { // Data contains useful information about the context of the finding // added by signature authors. // // Deprecated: direct access to the Data field is allowed for historic reasons, but is unsafe. // The following methods should be used instead: AddDataEntry, AddDataEntries and GetData. Data map[string]interface{} Event protocol.Event // Event is the causal event of the Finding SigMetadata SignatureMetadata // contains filtered or unexported fields }
Finding is the main output of a signature. It represents a match result for the signature business logic
func (*Finding) AddDataEntries ¶
func (*Finding) AddDataEntry ¶
type FindingDataStruct ¶
type FindingDataStruct interface { // ToMap converts the data to a map[string]interface{} for serialization ToMap() map[string]interface{} }
findingDataStruct is the interface that types returned by signatures Data should implement to be serialized to protobuf when using GRPC
type Logger ¶
type Logger interface { Debugw(format string, v ...interface{}) Infow(format string, v ...interface{}) Warnw(format string, v ...interface{}) Errorw(format string, v ...interface{}) }
Logger interface to inject in signatures
type SignalSourceComplete ¶
type SignalSourceComplete string
SignalSourceComplete signals that an input source the signature was subscribed to had ended
type Signature ¶
type Signature interface { // GetMetadata allows the signature to declare information about itself GetMetadata() (SignatureMetadata, error) // GetSelectedEvents allows the signature to declare which events it subscribes to GetSelectedEvents() ([]SignatureEventSelector, error) // Init allows the signature to initialize its internal state Init(ctx SignatureContext) error // Close cleans the signature after Init operation Close() // OnEvent allows the signature to process events passed by the Engine. this is the business logic of the signature OnEvent(event protocol.Event) error // OnSignal allows the signature to handle lifecycle events of the signature OnSignal(signal Signal) error }
Signature is the basic unit of business logic for the rule-engine
type SignatureContext ¶
type SignatureContext struct { Callback SignatureHandler Logger Logger GetDataSource func(namespace string, id string) (DataSource, bool) }
type SignatureEventSelector ¶
SignatureEventSelector represents events the signature is subscribed to
type SignatureHandler ¶
type SignatureHandler func(found *Finding)
SignatureHandler is a callback function that reports a finding
type SignatureMetadata ¶
type SignatureMetadata struct { ID string Version string Name string EventName string Description string Tags []string Properties map[string]interface{} }
SignatureMetadata represents information about the signature
type WriteableDataSource ¶
type WriteableDataSource interface { DataSource // Write values to keys in the data source. The values may not strictly match the schema defined // in the data source, however the implementation must be able to unmarshal it successfully to some form // where it can be eventually represented by the schema. // // The following errors should be returned for the appropriate cases: // // - ErrKeyNotSupported - When a given key does not match to supported key type // - ErrFailedToUnmarshal - When a value given could not be unmarshalled to an expected type // - Otherwise errors may vary. Write(data map[interface{}]interface{}) error // The types of values the data source supports writing. Values() []string }