Documentation
¶
Index ¶
- Constants
- Variables
- func NewPolicies() *policies
- func PoliciesMaxExceededError() error
- func PoliciesOutOfRangeError(idx int) error
- func PolicyAlreadyExistsError(name string, idx int) error
- func PolicyNilError() error
- func PolicyNotFoundByIDError(idx int) error
- func PolicyNotFoundByNameError(name string) error
- func Snapshots() *snapshots
- type PoliciesConfig
- type Policy
- type PolicyManager
- func (pm *PolicyManager) CreateAllIterator() utils.Iterator[*Policy]
- func (pm *PolicyManager) CreateUserlandIterator() utils.Iterator[*Policy]
- func (pm *PolicyManager) DisableEvent(id events.ID)
- func (pm *PolicyManager) DisableRule(policyId int, id events.ID) error
- func (pm *PolicyManager) EnableEvent(id events.ID)
- func (pm *PolicyManager) EnableRule(policyId int, id events.ID) error
- func (pm *PolicyManager) FilterableInUserland(bitmap uint64) bool
- func (pm *PolicyManager) IsEnabled(matchedPolicies uint64, id events.ID) bool
- func (pm *PolicyManager) IsEventEnabled(id events.ID) bool
- func (pm *PolicyManager) IsRuleEnabled(matchedPolicies uint64, id events.ID) bool
- func (pm *PolicyManager) LookupByName(name string) (*Policy, error)
- func (pm *PolicyManager) MatchedNames(matched uint64) []string
- func (pm *PolicyManager) UpdateBPF(bpfModule *bpf.Module, cts *containers.Containers, ...) (*PoliciesConfig, error)
- func (pm *PolicyManager) WithContainerFilterEnabled() uint64
Constants ¶
const ( // outer maps UIDFilterMapVersion = "uid_filter_version" PIDFilterMapVersion = "pid_filter_version" MntNSFilterMapVersion = "mnt_ns_filter_version" PidNSFilterMapVersion = "pid_ns_filter_version" UTSFilterMapVersion = "uts_ns_filter_version" CommFilterMapVersion = "comm_filter_version" CgroupIdFilterVersion = "cgroup_id_filter_version" ProcessTreeFilterMapVersion = "process_tree_map_version" BinaryFilterMapVersion = "binary_filter_version" PoliciesConfigVersion = "policies_config_version" // inner maps UIDFilterMap = "uid_filter" PIDFilterMap = "pid_filter" MntNSFilterMap = "mnt_ns_filter" PidNSFilterMap = "pid_ns_filter" UTSFilterMap = "uts_ns_filter" CommFilterMap = "comm_filter" CgroupIdFilterMap = "cgroup_id_filter" ProcessTreeFilterMap = "process_tree_map" BinaryFilterMap = "binary_filter" PoliciesConfigMap = "policies_config_map" ProcInfoMap = "proc_info_map" )
const ( PolicyMax = int(64) PolicyAll = ^uint64(0) PolicyNone = uint64(0) )
Variables ¶
var AlwaysSubmit = events.EventState{ Submit: PolicyAll, }
Functions ¶
func NewPolicies ¶
func NewPolicies() *policies
func PoliciesMaxExceededError ¶
func PoliciesMaxExceededError() error
func PoliciesOutOfRangeError ¶
func PolicyAlreadyExistsError ¶ added in v0.21.0
func PolicyNilError ¶
func PolicyNilError() error
func PolicyNotFoundByIDError ¶ added in v0.18.0
func PolicyNotFoundByNameError ¶ added in v0.18.0
Types ¶
type PoliciesConfig ¶ added in v0.20.0
type PoliciesConfig struct {
UIDFilterEnabledScopes uint64
PIDFilterEnabledScopes uint64
MntNsFilterEnabledScopes uint64
PidNsFilterEnabledScopes uint64
UtsNsFilterEnabledScopes uint64
CommFilterEnabledScopes uint64
CgroupIdFilterEnabledScopes uint64
ContFilterEnabledScopes uint64
NewContFilterEnabledScopes uint64
NewPidFilterEnabledScopes uint64
ProcTreeFilterEnabledScopes uint64
BinPathFilterEnabledScopes uint64
FollowFilterEnabledScopes uint64
UIDFilterOutScopes uint64
PIDFilterOutScopes uint64
MntNsFilterOutScopes uint64
PidNsFilterOutScopes uint64
UtsNsFilterOutScopes uint64
CommFilterOutScopes uint64
CgroupIdFilterOutScopes uint64
ContFilterOutScopes uint64
NewContFilterOutScopes uint64
NewPidFilterOutScopes uint64
ProcTreeFilterOutScopes uint64
BinPathFilterOutScopes uint64
EnabledScopes uint64
UidMax uint64
UidMin uint64
PidMax uint64
PidMin uint64
}
PoliciesConfig mirrors the C struct policies_config (policies_config_t). Order of fields is important, as it is used as a value for the PoliciesConfigMap BPF map.
type Policy ¶
type Policy struct {
ID int
Name string
EventsToTrace map[events.ID]string
UIDFilter *filters.UIntFilter[uint32]
PIDFilter *filters.UIntFilter[uint32]
NewPidFilter *filters.BoolFilter
MntNSFilter *filters.UIntFilter[uint64]
PidNSFilter *filters.UIntFilter[uint64]
UTSFilter *filters.StringFilter
CommFilter *filters.StringFilter
ContFilter *filters.BoolFilter
NewContFilter *filters.BoolFilter
ContIDFilter *filters.StringFilter
RetFilter *filters.RetFilter
DataFilter *filters.DataFilter
ScopeFilter *filters.ScopeFilter
ProcessTreeFilter *filters.ProcessTreeFilter
BinaryFilter *filters.BinaryFilter
Follow bool
}
func (*Policy) ContainerFilterEnabled ¶
ContainerFilterEnabled returns true if the policy has at least one container filter type enabled.
type PolicyManager ¶ added in v0.22.0
type PolicyManager struct {
// contains filtered or unexported fields
}
PolicyManager is a thread-safe struct that manages the enabled policies for each rule
func NewPolicyManager ¶ added in v0.22.0
func NewPolicyManager(policies ...*Policy) *PolicyManager
func (*PolicyManager) CreateAllIterator ¶ added in v0.22.0
func (pm *PolicyManager) CreateAllIterator() utils.Iterator[*Policy]
func (*PolicyManager) CreateUserlandIterator ¶ added in v0.22.0
func (pm *PolicyManager) CreateUserlandIterator() utils.Iterator[*Policy]
func (*PolicyManager) DisableEvent ¶ added in v0.22.0
func (pm *PolicyManager) DisableEvent(id events.ID)
DisableEvent disables a given event
func (*PolicyManager) DisableRule ¶ added in v0.22.0
func (pm *PolicyManager) DisableRule(policyId int, id events.ID) error
DisableRule disables a rule for a given event policy
func (*PolicyManager) EnableEvent ¶ added in v0.22.0
func (pm *PolicyManager) EnableEvent(id events.ID)
EnableEvent enables a given event
func (*PolicyManager) EnableRule ¶ added in v0.22.0
func (pm *PolicyManager) EnableRule(policyId int, id events.ID) error
EnableRule enables a rule for a given event policy
func (*PolicyManager) FilterableInUserland ¶ added in v0.22.0
func (pm *PolicyManager) FilterableInUserland(bitmap uint64) bool
func (*PolicyManager) IsEnabled ¶ added in v0.22.0
func (pm *PolicyManager) IsEnabled(matchedPolicies uint64, id events.ID) bool
IsEnabled tests if a event, or a policy per event is enabled (in the future it will also check if a policy is enabled) TODO: add metrics about an event being enabled/disabled, or a policy being enabled/disabled?
func (*PolicyManager) IsEventEnabled ¶ added in v0.22.0
func (pm *PolicyManager) IsEventEnabled(id events.ID) bool
IsEventEnabled returns true if a given event policy is enabled for a given rule
func (*PolicyManager) IsRuleEnabled ¶ added in v0.22.0
func (pm *PolicyManager) IsRuleEnabled(matchedPolicies uint64, id events.ID) bool
IsRuleEnabled returns true if a given event policy is enabled for a given rule
func (*PolicyManager) LookupByName ¶ added in v0.22.0
func (pm *PolicyManager) LookupByName(name string) (*Policy, error)
func (*PolicyManager) MatchedNames ¶ added in v0.22.0
func (pm *PolicyManager) MatchedNames(matched uint64) []string
func (*PolicyManager) UpdateBPF ¶ added in v0.22.0
func (pm *PolicyManager) UpdateBPF( bpfModule *bpf.Module, cts *containers.Containers, eventsState map[events.ID]events.EventState, eventsParams map[events.ID][]bufferdecoder.ArgType, createNewMaps bool, updateProcTree bool, ) (*PoliciesConfig, error)
func (*PolicyManager) WithContainerFilterEnabled ¶ added in v0.22.0
func (pm *PolicyManager) WithContainerFilterEnabled() uint64