The module lifecycle stage: Experimental
The module has requirements for installation
The Deckhouse Platform installs CRDs but does not remove them when a module is disabled. If you no longer need the created CRDs, delete them.
ClusterSecurityEventAlertRule
Short names: csear
Scope: Cluster
Version: v1alpha1
-
objectspec
Turns a pattern in security events into a Prometheus alert.
A rule looks for a pattern in the collected security events, for example “one actor read more than 20 secrets in 5 minutes”, and raises a named alert once the pattern occurs. The pattern is expressed as a LogQL query and evaluated against the cluster Loki, so the
cluster-lokidestination must be enabled for any rule to work.Rules are organized into groups. A group has no effect on evaluation: each rule is evaluated on its own, independently of the other rules in its group.
A firing rule raises the
D8SecurityEventAlertFiringalert, which reaches the operator the same way as any other cluster alert: as a ClusterAlert object, in the console, and through the cluster alert delivery. Delivery requires no configuration.The structure mirrors PrometheusRule: named groups, each with an
intervaland a list of rules carryingalert,expr,for,labelsandannotations. The difference is thatexpris written in LogQL rather than in PromQL.-
array of objectsspec.groups
Required value
List of rule groups.
A group consists of a name and a list of rules. It does not affect how or when its rules are evaluated and only keeps related rules together. The same structure as
spec.groupsof PrometheusRule.-
stringspec.groups.interval
How often every rule in this group is evaluated against Loki.
Digits followed by
s,morh, for example30s. The default is30s.Default:
30sPattern:
^[0-9]+(s|m|h)$ -
stringspec.groups.name
Group name.
Does not affect evaluation and is used only in the output of
d8 k get -o yamland in logs, to identify the group.Length:
1..253 -
array of objectsspec.groups.rulesAlert rules in this group.
-
objectspec.groups.rules.aggregation
Counting parameters of the rule.
Events are grouped by
groupBy, and the alert fires as soon as a group reachesthresholdwithinwindow. The window slides continuously: it is recomputed against the logs stored in Loki on every evaluation rather than kept as counter state.Requires
match, because a rule based onexprexpresses grouping and the threshold in the query itself. Withoutaggregation, a rule based onmatchfires on every matched event.-
array of stringsspec.groups.rules.aggregation.groupBy
Required value
Event fields that identify a group.
Values of these fields become alert labels, so the set of allowed fields is limited to attributes with low cardinality. Using an object name as a key, for example, would create a separate group per event, cause unbounded growth of the evaluator and overload the alert receiver.
-
stringspec.groups.rules.aggregation.groupBy.Element of the array
Event field to group by.
Each value is named after the field it reads in LogQL:
EventCodereadsevent_code;EventSeverityreadsevent_severity;EventCategoryreadsevent_category;SourceComponentreadssource_component;ActorIDreadsactor_id;ActorSourceIPreadsactor_sourceIP;ObjectNamespacereadsobject_namespace;ObjectTypereadsobject_type.
Allowed values:
EventCode,EventSeverity,EventCategory,SourceComponent,ActorID,ActorSourceIP,ObjectNamespace,ObjectType
-
-
integerspec.groups.rules.aggregation.threshold
Required value
Number of events in a group that triggers the alert.
To raise an alert on every event, use a rule without the
aggregationblock.Allowed values:
2 <= X -
stringspec.groups.rules.aggregation.window
Required value
Time span over which a group keeps counting before it is forgotten.
Digits followed by
s,morh, for example5m. Choose the span within which the described behaviour occurs: minutes for a brute-force attempt, hours for a slow sweep.Pattern:
^[0-9]+(s|m|h)$
-
-
stringspec.groups.rules.alert
Short name of what the rule detects, for example
MassSecretAccess.The name identifies the rule in the
alertlabel of the produced metric, in logs and in the status of the rule itself. The equivalent of thealertfield of PrometheusRule.Maximum length:
253Pattern:
^[A-Za-z][A-Za-z0-9_]*$ -
objectspec.groups.rules.annotations
Text shown alongside the alert once it fires.
Unlike labels, annotations do not identify the alert and are intended to be read by a human. The field is required: every rule must state in
summarywhat it detected, and that text is what the fired alert carries.A value may quote the data that made the rule fire, the same way Prometheus templates the annotations of PrometheusRule. Use
{{ $labels.<NAME> }}for one of the labels thatexprgrouped by and{{ $value }}for the number thatexprproduced, for example{{ $labels.actor_id }} read secrets {{ $value }} times.The rendered text is passed as a label of the firing metric, so each distinct rendering becomes a separate Prometheus series for the whole retention period. In a rule whose count changes on every evaluation,
{{ $value }}therefore adds a series per interval. Prefer{{ $labels.<NAME> }}, which stays stable for as long as the group exists.-
stringspec.groups.rules.annotations.description
Detailed description, shown in the
descriptionannotation of the alert.State what to check and where, the way a runbook does.
Maximum length:
4096 -
stringspec.groups.rules.annotations.summary
Required value
Short one-line summary, shown in thesummaryannotation of the alert, for exampleOne actor read an unusual number of secrets.Maximum length:
512
-
-
stringspec.groups.rules.expr
LogQL query that determines whether the rule fires.
Each rule sets exactly one of
exprandmatch. Useexprwhen the structured fields ofmatchcannot express the required condition.The query must be a metric query, that is, one that returns a number rather than a list of log lines, and must include the comparison itself. For example:
sum by (actor_id) ( count_over_time({source_component="kube-audit", event_code="K8S_SECRET_ACCESSED", actor_id!=""} [5m]) ) > 20The query above consists of the following parts:
{source_component="kube-audit", ...}selects the log streams to search;count_over_time(...[5m])counts the matching lines over the last 5 minutes;sum by (actor_id)keeps a separate count per actor instead of summing the events of all actors;> 20is the condition itself: the rule fires once the count for any actor exceeds 20.
No further processing of the number is required: reaching the threshold set in the query is what firing means.
Every field listed in
sum by (...)or a similar aggregation becomes a label of the resulting alert. Keep that list short and limited to fields with a bounded set of values, as described in the section on the specifics of writing rules on the examples page.The equivalent of the
exprfield of PrometheusRule, written in LogQL rather than in PromQL.Length:
1..8192 -
stringspec.groups.rules.for
Time span over which
exprmust keep matching without a break before the rule fires.The field filters out one-off spikes: with
for: 5m, a spike that lasts a couple of minutes and then stops does not fire the rule at all.Digits followed by
s,morh, for example5m. The default is0s, meaning that the rule fires on the first match ofexpr, with no waiting period.The pending and firing semantics are the same as for the
forfield of PrometheusRule.Default:
0sPattern:
^[0-9]+(s|m|h)$ -
objectspec.groups.rules.labels
Additional alert labels.
They are added next to
rule,alert,severity_leveland the fields thatexprgroups by. Labels identify the alert: two alerts with the same labels are the same alert. -
objectspec.groups.rules.match
Security events the rule applies to.
Criteria are combined with AND.
Each rule sets exactly one of
exprandmatch. Thematchandaggregationfields are compiled into the same kind of LogQL query thatexprwould hold, so they are a form for building that query rather than a separate evaluation path. Useexprdirectly when a rule requires a field that this form does not cover or a line filter more specific than an exact or glob match.-
stringspec.groups.rules.match.actorType
Kind of subject the rule is narrowed to.
ServiceAccountskeeps only the actors matchingsystem:serviceaccount:*.NonServiceAccountskeeps all the others and is used for rules about people and other external clients. Mirrors the “Subject type” filter of the console.Default:
AnyAllowed values:
Any,ServiceAccounts,NonServiceAccounts -
array of stringsspec.groups.rules.match.actors
Actors whose events are counted.
Values are matched against
actor_idthe same way as inexcludeActors:*stands for any sequence of characters, everything else is literal.Use this field to watch a specific subject, for example a ServiceAccount that must not change secrets.
-
stringspec.groups.rules.match.actors.Element of the array
Maximum length:
253
-
-
array of stringsspec.groups.rules.match.categoriesEvent categories to match, as declared in
spec.categoryof SecurityEventDefinition.-
stringspec.groups.rules.match.categories.Element of the array
Allowed values:
Auth,Config,Network,Rbac,Runtime
-
-
array of stringsspec.groups.rules.match.eventCodesEvent codes to match, as declared in SecurityEventDefinition.
-
stringspec.groups.rules.match.eventCodes.Element of the arrayFor example
K8S_SECRET_ACCESSED.Pattern:
^[A-Z][A-Z0-9_]*$
-
-
array of stringsspec.groups.rules.match.excludeActors
Actors whose events the rule ignores.
Values are matched against
actor_id:*stands for any sequence of characters, everything else is literal.Platform components generate most of the routine activity. On an idle cluster, the Deckhouse ServiceAccount alone accounts for thousands of secret reads per hour, so a rule about people and workloads has to exclude them. A typical list:
excludeActors: - "system:serviceaccount:d8-*" - "system:serviceaccount:kube-system:*" - "system:node:*" - "system:apiserver"-
stringspec.groups.rules.match.excludeActors.Element of the array
Maximum length:
253
-
-
booleanspec.groups.rules.match.excludeSystemActors
Whether to ignore the events produced by the platform itself.
Routine cluster work touches secrets, RBAC and pods constantly. On an idle cluster, the Deckhouse ServiceAccount alone accounted for 2617 of 2812 secret reads in an hour, which makes a rule about people and workloads statistically insignificant against that background.
The list is maintained by the module and matches the “Exclude system” filter of the console, so the interface and the rule put the same events out of view. The list covers
actor_idmatchingsystem:serviceaccount:kube-system:*,system:serviceaccount:d8-*,system:node:*,system:kube-*,system:apiserverandkubernetes-admin.Nothing is removed from the event stream: the events are still collected and delivered, and only stop being counted. Events without an actor are kept, and anonymous or unauthenticated identities are never treated as platform actors, because those are what a security rule looks for.
Default:
true -
stringspec.groups.rules.match.severityMinMinimal event severity to match (inclusive).
Allowed values:
Low,Medium,High,Critical -
array of stringsspec.groups.rules.match.sourcesSource components to match, as declared in
spec.sourceof SecurityEventDefinition, for examplekube-audit.-
stringspec.groups.rules.match.sources.Element of the array
Maximum length:
253
-
-
-
stringspec.groups.rules.mode
Which of the two ways this rule is written in.
Expr— the condition is a LogQL query written by hand inexpr.Match— the condition is built from the structured fields ofmatch, optionally counted byaggregation.The field states explicitly what the presence of
exprormatchalready implies, and must agree with it. It exists so that a reader of the manifest and the platform web interface both know which form a rule is written in without inspecting which block is filled: the web interface shows the fields of the selected mode only, and hides the other form entirely.Allowed values:
Expr,Match -
integerspec.groups.rules.severityLevel
DKP severity level, sent as the
severity_levellabel.On clusters with
update.blockOnAlertsenabled in thedeckhousemodule, an alert with a level at or below the configured threshold (4 by default) blocks DKP releases from being applied.Default:
6Allowed values:
0 <= X <= 9
-
-
-
-
objectstatusCurrent status of this resource.
-
array of objectsstatus.conditionsRepresents the latest available observations of an object’s state.
-
stringstatus.conditions.lastTransitionTime
-
stringstatus.conditions.message
Maximum length:
32768 -
integerstatus.conditions.observedGeneration
-
stringstatus.conditions.reason
Length:
1..1024 -
stringstatus.conditions.status
Allowed values:
True,False,Unknown -
stringstatus.conditions.type
Maximum length:
316
-
-
integerstatus.observedGenerationThe generation observed by the controller.
-
ClusterSecurityEventConfig
Short names: csec
Scope: Cluster
Version: v1alpha1
-
objectspecDefines which sources are enabled and which destinations they are shipped to.
-
objectspec.cef
Default CEF (Common Event Format) metadata for destinations that use CEF encoding.
These values are used when a ClusterSecurityEventDestination has
encoding.codecset toCEFbut does not specify its owncef.deviceVendor,cef.deviceProduct,cef.deviceVersionandcef.version.-
stringspec.cef.deviceProduct
Default device product for CEF header.
Applies to a destination that does not set
encoding.cef.deviceProductof its own. When the field is omitted,security-events-manageris used.Maximum length:
63 -
stringspec.cef.deviceVendor
Default device vendor for CEF header.
Applies to a destination that does not set
encoding.cef.deviceVendorof its own. When the field is omitted,Deckhouseis used.Maximum length:
63 -
stringspec.cef.deviceVersion
Default device version for CEF header. This is the fourth field of the CEF header and is unrelated to
version, which selects the format of theCEF:prefix.Applies to a destination that does not set
encoding.cef.deviceVersionof its own. When the field is omitted,1is used.Maximum length:
63 -
stringspec.cef.version
Default CEF format version written in the
CEF:prefix of the header.Applies to a destination that does not set
encoding.cef.versionof its own. When the field is omitted,V0is used.Possible values:
V0— emit theCEF:0prefix, used by default and expected by most SIEM systems;V1— emit theCEF:1prefix.
Allowed values:
V0,V1
-
-
stringspec.defaultSeverityThreshold
Required value
Minimal severity to ship (inclusive).Allowed values:
Low,Medium,High,Critical -
array of stringsspec.destinations
Required value
List of ClusterSecurityEventDestination names.-
stringspec.destinations.Element of the array
Maximum length:
253
-
-
array of stringsspec.enabledSources
Sources that are enabled.
If the parameter is omitted, all sources are enabled. Each item uses one of the following formats:
clusterSecurityEventShipper/<SHIPPER NAME>/<SOURCE>;podSecurityEventShipper/<NAMESPACE>/<SHIPPER NAME>/<SOURCE>.
-
stringspec.enabledSources.Element of the array
Pattern:
^(clusterSecurityEventShipper/[^/]+/[^/]+|podSecurityEventShipper/[^/]+/[^/]+/[^/]+)$
-
array of stringsspec.enabledSourcesMasks
Glob masks of the sources that are enabled.
If the parameter is omitted, all sources are enabled. A
*in a mask matches any substring, including/. The parametersenabledSourcesandenabledSourcesMasksare mutually exclusive.Each mask uses one of the following formats:
clusterSecurityEventShipper/<SHIPPER NAME>/<SOURCE>;podSecurityEventShipper/<NAMESPACE>/<SHIPPER NAME>/<SOURCE>.
For example:
enabledSourcesMasks: - podSecurityEventShipper/* - clusterSecurityEventShipper/kube-audit/*-
stringspec.enabledSourcesMasks.Element of the array
Pattern:
^(clusterSecurityEventShipper/.+|podSecurityEventShipper/.+)$
-
-
objectstatusCurrent status of this resource.
-
array of objectsstatus.conditionsRepresents the latest available observations of an object’s state.
-
stringstatus.conditions.lastTransitionTime
-
stringstatus.conditions.message
Maximum length:
32768 -
integerstatus.conditions.observedGeneration
-
stringstatus.conditions.reason
Length:
1..1024 -
stringstatus.conditions.status
Allowed values:
True,False,Unknown -
stringstatus.conditions.type
Maximum length:
316
-
-
integerstatus.observedGenerationThe generation observed by the controller.
-
ClusterSecurityEventDestination
Short names: csed
Scope: Cluster
Version: v1alpha1
-
objectspec
Describes where to send security events.
Fields are designed to be translated to deckhouse.io/log-shipper ClusterLogDestination.
-
objectspec.buffer
Per-destination buffer settings for the gateway Vector sink.
Overrides the global gateway.buffer defaults from module values. If not set, the global defaults are used.
-
integerspec.buffer.maxEvents
Maximum number of events in the buffer.
Used as a secondary limit for
Memorytype. Ignored whentype=Disk(disk buffer uses maxSize only).Default:
500Allowed values:
100 <= X -
stringspec.buffer.maxSize
Maximum size of the buffer as a Kubernetes quantity string with a mandatory unit suffix for example
512Mi,1Gior256Mi.Plain numbers without a unit suffix are not accepted. For
Disk: maximum disk space used on the volume. ForMemory: approximate memory limit for the in-memory ring buffer.Default:
512MiPattern:
^[0-9]+(\.[0-9]+)?(Ki|Mi|Gi|Ti|Pi|Ei|k|M|G|T|P|E)$ -
stringspec.buffer.type
Buffer type.
Possible values:
Disk: disk-based buffer using LevelDB. Survives Vector process restarts within the pod. Used by default and ensures that no security events are lost during a temporary destination outage.Memory: in-memory ring buffer. Faster, but all events are lost on Vector process restart. Use only for test/dev environments.
Default:
DiskAllowed values:
Memory,Disk -
stringspec.buffer.whenFull
Behavior when the buffer is full.
Possible values:
Block: apply backpressure to upstream. The pipeline slows down, but no events are lost. Used by default and is the correct choice for security events.DropNewest: discard incoming events. Data loss occurs but no backpressure. Use only when data loss is acceptable (test environments).
Default:
BlockAllowed values:
Block,DropNewest
-
-
objectspec.console
-
objectspec.console.encoding
Encoding format for events sent to console.
Default is
JSON. SetcodectoCEFto emit events in Common Event Format.-
objectspec.console.encoding.cef
CEF-specific configuration fields.
Only applicable when
codecis set toCEF. Every field of the block is optional and overrides the matching field ofspec.cefof ClusterSecurityEventConfig. A field set in neither place falls back todeviceVendor=Deckhouse,deviceProduct=security-events-manager,deviceVersion=1,version=V0.-
stringspec.console.encoding.cef.deviceProduct
Device product field in the CEF header.
When the field is omitted,
spec.cef.deviceProductof ClusterSecurityEventConfig applies, andsecurity-events-manageris used when that is not set either.Maximum length:
63 -
stringspec.console.encoding.cef.deviceVendor
Device vendor field in the CEF header.
When the field is omitted,
spec.cef.deviceVendorof ClusterSecurityEventConfig applies, andDeckhouseis used when that is not set either.Maximum length:
63 -
stringspec.console.encoding.cef.deviceVersion
Device version field in the CEF header.
When the field is omitted,
spec.cef.deviceVersionof ClusterSecurityEventConfig applies, and1is used when that is not set either.Maximum length:
63 -
stringspec.console.encoding.cef.version
CEF format version written in the
CEF:prefix of the header.Set it to match the format the receiving SIEM parses. When the field is omitted,
spec.cef.versionof ClusterSecurityEventConfig applies, andV0is used when that is not set either.Possible values:
V0— emit theCEF:0prefix, used by default and expected by most SIEM systems;V1— emit theCEF:1prefix.
Allowed values:
V0,V1
-
-
stringspec.console.encoding.codec
Encoding codec for the destination.
Possible values:
JSON— structured JSON, used by default and suitable for Loki, Elasticsearch and Kafka;CEF— Common Event Format, suitable for SIEM integration through Kafka, Vector, File, Console and Socket.
Default:
JSONAllowed values:
JSON,CEF -
stringspec.console.encoding.syslogWrapper
Syslog header wrapping for CEF output.
Only applicable when
codecisCEF.Possible values:
None— emit a bare CEF string, used by default;RFC3164— prepend an RFC 3164 (BSD syslog) header;RFC5424— prepend an RFC 5424 (IETF syslog) header.
Default:
NoneAllowed values:
None,RFC3164,RFC5424
-
-
stringspec.console.target
Default:
StdoutAllowed values:
Stdout,Stderr
-
-
objectspec.elasticsearch
-
objectspec.elasticsearch.auth
-
stringspec.elasticsearch.auth.password
Password for Basic authentication.
Consider using
passwordSecretRefinstead to avoid storing secrets in the resource spec.Maximum length:
4096 -
objectspec.elasticsearch.auth.passwordSecretRef
-
stringspec.elasticsearch.auth.passwordSecretRef.name
Required value
Name of the secret in the
d8-security-events-managernamespace containing the credential.The secret must have the key
valuein itsdatafield.Maximum length:
253
-
-
stringspec.elasticsearch.auth.strategy
Default:
NoneAllowed values:
None,Bearer,Basic -
stringspec.elasticsearch.auth.token
Bearer token for authentication.
Consider using
tokenSecretRefinstead to avoid storing secrets in the resource spec.Maximum length:
4096 -
objectspec.elasticsearch.auth.tokenSecretRef
-
stringspec.elasticsearch.auth.tokenSecretRef.name
Required value
Name of the secret in the
d8-security-events-managernamespace containing the credential.The secret must have the key
valuein itsdatafield.Maximum length:
253
-
-
stringspec.elasticsearch.auth.username
Maximum length:
4096
-
-
stringspec.elasticsearch.endpoint
Required value
Maximum length:
2048 -
stringspec.elasticsearch.index
Maximum length:
253 -
objectspec.elasticsearch.tls
-
stringspec.elasticsearch.tls.caBase64-encoded PEM with the CA certificate chain used to verify the destination server certificate.
Maximum length:
32768 -
booleanspec.elasticsearch.tls.verifyCertificate
Default:
true -
booleanspec.elasticsearch.tls.verifyHostname
Default:
true
-
-
-
objectspec.file
-
objectspec.file.encoding
Encoding format for events written to this file destination.
Default is
JSON. SetcodectoCEFto write events in Common Event Format.-
objectspec.file.encoding.cef
CEF-specific configuration fields.
Only applicable when
codecis set toCEF. Every field of the block is optional and overrides the matching field ofspec.cefof ClusterSecurityEventConfig. A field set in neither place falls back todeviceVendor=Deckhouse,deviceProduct=security-events-manager,deviceVersion=1,version=V0.-
stringspec.file.encoding.cef.deviceProduct
Device product field in the CEF header.
When the field is omitted,
spec.cef.deviceProductof ClusterSecurityEventConfig applies, andsecurity-events-manageris used when that is not set either.Maximum length:
63 -
stringspec.file.encoding.cef.deviceVendor
Device vendor field in the CEF header.
When the field is omitted,
spec.cef.deviceVendorof ClusterSecurityEventConfig applies, andDeckhouseis used when that is not set either.Maximum length:
63 -
stringspec.file.encoding.cef.deviceVersion
Device version field in the CEF header.
When the field is omitted,
spec.cef.deviceVersionof ClusterSecurityEventConfig applies, and1is used when that is not set either.Maximum length:
63 -
stringspec.file.encoding.cef.version
CEF format version written in the
CEF:prefix of the header.Set it to match the format the receiving SIEM parses. When the field is omitted,
spec.cef.versionof ClusterSecurityEventConfig applies, andV0is used when that is not set either.Possible values:
V0— emit theCEF:0prefix, used by default and expected by most SIEM systems;V1— emit theCEF:1prefix.
Allowed values:
V0,V1
-
-
stringspec.file.encoding.codec
Encoding codec for the destination.
Possible values:
JSON— structured JSON, used by default and suitable for Loki, Elasticsearch and Kafka;CEF— Common Event Format, suitable for SIEM integration through Kafka, Vector, File, Console and Socket.
Default:
JSONAllowed values:
JSON,CEF -
stringspec.file.encoding.syslogWrapper
Syslog header wrapping for CEF output.
Only applicable when
codecisCEF.Possible values:
None— emit a bare CEF string, used by default;RFC3164— prepend an RFC 3164 (BSD syslog) header;RFC5424— prepend an RFC 5424 (IETF syslog) header.
Default:
NoneAllowed values:
None,RFC3164,RFC5424
-
-
stringspec.file.path
Required value
Maximum length:
2048
-
-
objectspec.http
-
objectspec.http.auth
-
stringspec.http.auth.password
Password for Basic authentication.
Consider using
passwordSecretRefinstead to avoid storing secrets in the resource spec.Maximum length:
4096 -
objectspec.http.auth.passwordSecretRef
-
stringspec.http.auth.passwordSecretRef.name
Required value
Name of the secret in the
d8-security-events-managernamespace containing the credential.The secret must have the key
valuein itsdatafield.Maximum length:
253
-
-
stringspec.http.auth.strategy
Default:
NoneAllowed values:
None,Bearer,Basic -
stringspec.http.auth.token
Bearer token for authentication.
Consider using
tokenSecretRefinstead to avoid storing secrets in the resource spec.Maximum length:
4096 -
objectspec.http.auth.tokenSecretRef
-
stringspec.http.auth.tokenSecretRef.name
Required value
Name of the secret in the
d8-security-events-managernamespace containing the credential.The secret must have the key
valuein itsdatafield.Maximum length:
253
-
-
stringspec.http.auth.username
Maximum length:
4096
-
-
stringspec.http.endpoint
Required value
Full URL to send events to, including the path, for example
https://collector.example.com/api/ingest.Events are always sent with the POST method.
Maximum length:
2048 -
stringspec.http.framing
How a set of events is laid out in the request body.
JSONArraywraps the set into a single JSON array, which is what receivers expecting one document per request read.NewlineDelimitedsends one JSON object per line (NDJSON), which suits collectors that read a stream of records.Default:
JSONArrayAllowed values:
JSONArray,NewlineDelimited -
objectspec.http.headers
Additional request headers.
The
Authorizationheader is managed byauthand must not be set here.Header values are treated as secrets: a receiver often expects its API key in a header of its own. Values are hidden the same way
auth.tokenis, so read them back through theclustersecurityeventdestinations/sensitivesubresource. -
objectspec.http.tls
-
stringspec.http.tls.caBase64-encoded PEM with the CA certificate chain used to verify the destination server certificate.
Maximum length:
32768 -
booleanspec.http.tls.verifyCertificate
Default:
true -
booleanspec.http.tls.verifyHostname
Default:
true
-
-
-
objectspec.kafka
-
array of stringsspec.kafka.brokers
Required value
-
stringspec.kafka.brokers.Element of the array
Maximum length:
259
-
-
objectspec.kafka.encoding
Encoding format for events sent to this Kafka destination.
Default is
JSON. SetcodectoCEFto emit events in Common Event Format (requires a CEF-capable SIEM consumer on the receiving end).-
objectspec.kafka.encoding.cef
CEF-specific configuration fields.
Only applicable when
codecis set toCEF. Every field of the block is optional and overrides the matching field ofspec.cefof ClusterSecurityEventConfig. A field set in neither place falls back todeviceVendor=Deckhouse,deviceProduct=security-events-manager,deviceVersion=1,version=V0.-
stringspec.kafka.encoding.cef.deviceProduct
Device product field in the CEF header.
When the field is omitted,
spec.cef.deviceProductof ClusterSecurityEventConfig applies, andsecurity-events-manageris used when that is not set either.Maximum length:
63 -
stringspec.kafka.encoding.cef.deviceVendor
Device vendor field in the CEF header.
When the field is omitted,
spec.cef.deviceVendorof ClusterSecurityEventConfig applies, andDeckhouseis used when that is not set either.Maximum length:
63 -
stringspec.kafka.encoding.cef.deviceVersion
Device version field in the CEF header.
When the field is omitted,
spec.cef.deviceVersionof ClusterSecurityEventConfig applies, and1is used when that is not set either.Maximum length:
63 -
stringspec.kafka.encoding.cef.version
CEF format version written in the
CEF:prefix of the header.Set it to match the format the receiving SIEM parses. When the field is omitted,
spec.cef.versionof ClusterSecurityEventConfig applies, andV0is used when that is not set either.Possible values:
V0— emit theCEF:0prefix, used by default and expected by most SIEM systems;V1— emit theCEF:1prefix.
Allowed values:
V0,V1
-
-
stringspec.kafka.encoding.codec
Encoding codec for the destination.
Possible values:
JSON— structured JSON, used by default and suitable for Loki, Elasticsearch and Kafka;CEF— Common Event Format, suitable for SIEM integration through Kafka, Vector, File, Console and Socket.
Default:
JSONAllowed values:
JSON,CEF -
stringspec.kafka.encoding.syslogWrapper
Syslog header wrapping for CEF output.
Only applicable when
codecisCEF.Possible values:
None— emit a bare CEF string, used by default;RFC3164— prepend an RFC 3164 (BSD syslog) header;RFC5424— prepend an RFC 5424 (IETF syslog) header.
Default:
NoneAllowed values:
None,RFC3164,RFC5424
-
-
objectspec.kafka.sasl
-
stringspec.kafka.sasl.mechanism
Allowed values:
Plain,SCRAM-SHA-256,SCRAM-SHA-512 -
stringspec.kafka.sasl.password
SASL password.
Consider using
passwordSecretRefinstead to avoid storing secrets in the resource spec.Maximum length:
4096 -
objectspec.kafka.sasl.passwordSecretRef
-
stringspec.kafka.sasl.passwordSecretRef.name
Required value
Name of the secret in the
d8-security-events-managernamespace containing the credential.The secret must have the key
valuein itsdatafield.Maximum length:
253
-
-
stringspec.kafka.sasl.username
Maximum length:
4096
-
-
objectspec.kafka.tls
-
stringspec.kafka.tls.caBase64-encoded PEM with the CA certificate chain used to verify the destination server certificate.
Maximum length:
32768 -
booleanspec.kafka.tls.verifyCertificate
Default:
true -
booleanspec.kafka.tls.verifyHostname
Default:
true
-
-
stringspec.kafka.topic
Required value
Maximum length:
249
-
-
objectspec.loki
-
objectspec.loki.auth
-
stringspec.loki.auth.password
Password for Basic authentication.
Consider using
passwordSecretRefinstead to avoid storing secrets in the resource spec.Maximum length:
4096 -
objectspec.loki.auth.passwordSecretRef
-
stringspec.loki.auth.passwordSecretRef.name
Required value
Name of the secret in the
d8-security-events-managernamespace containing the credential.The secret must have the key
valuein itsdatafield.Maximum length:
253
-
-
stringspec.loki.auth.strategy
Default:
NoneAllowed values:
None,Bearer,Basic -
stringspec.loki.auth.token
Bearer token for authentication.
Consider using
tokenSecretRefinstead to avoid storing secrets in the resource spec.Maximum length:
4096 -
objectspec.loki.auth.tokenSecretRef
-
stringspec.loki.auth.tokenSecretRef.name
Required value
Name of the secret in the
d8-security-events-managernamespace containing the credential.The secret must have the key
valuein itsdatafield.Maximum length:
253
-
-
stringspec.loki.auth.username
Maximum length:
4096
-
-
stringspec.loki.endpoint
Required value
Maximum length:
2048 -
objectspec.loki.tls
-
stringspec.loki.tls.caBase64-encoded PEM with the CA certificate chain used to verify the destination server certificate.
Maximum length:
32768 -
booleanspec.loki.tls.verifyCertificate
Default:
true -
booleanspec.loki.tls.verifyHostname
Default:
true
-
-
-
objectspec.socket
-
stringspec.socket.address
Required value
The address to connect to.
Format depends on mode:
TCP—host:port, for examplesiem.example.com:514;UDP—host:port, for examplesiem.example.com:514;Unix—/path/to/socket, for example/var/run/siem.sock.
Maximum length:
2048 -
objectspec.socket.encoding
Encoding format for events sent to this socket destination.
Default is
JSON. SetcodectoCEFto emit events in Common Event Format (the primary use-case for syslog-based SIEM integrations).-
objectspec.socket.encoding.cef
CEF-specific configuration fields.
Only applicable when
codecis set toCEF. Every field of the block is optional and overrides the matching field ofspec.cefof ClusterSecurityEventConfig. A field set in neither place falls back todeviceVendor=Deckhouse,deviceProduct=security-events-manager,deviceVersion=1,version=V0.-
stringspec.socket.encoding.cef.deviceProduct
Device product field in the CEF header.
When the field is omitted,
spec.cef.deviceProductof ClusterSecurityEventConfig applies, andsecurity-events-manageris used when that is not set either.Maximum length:
63 -
stringspec.socket.encoding.cef.deviceVendor
Device vendor field in the CEF header.
When the field is omitted,
spec.cef.deviceVendorof ClusterSecurityEventConfig applies, andDeckhouseis used when that is not set either.Maximum length:
63 -
stringspec.socket.encoding.cef.deviceVersion
Device version field in the CEF header.
When the field is omitted,
spec.cef.deviceVersionof ClusterSecurityEventConfig applies, and1is used when that is not set either.Maximum length:
63 -
stringspec.socket.encoding.cef.version
CEF format version written in the
CEF:prefix of the header.Set it to match the format the receiving SIEM parses. When the field is omitted,
spec.cef.versionof ClusterSecurityEventConfig applies, andV0is used when that is not set either.Possible values:
V0— emit theCEF:0prefix, used by default and expected by most SIEM systems;V1— emit theCEF:1prefix.
Allowed values:
V0,V1
-
-
stringspec.socket.encoding.codec
Encoding codec for the destination.
Possible values:
JSON— structured JSON, used by default and suitable for Loki, Elasticsearch and Kafka;CEF— Common Event Format, suitable for SIEM integration through Kafka, Vector, File, Console and Socket.
Default:
JSONAllowed values:
JSON,CEF -
stringspec.socket.encoding.syslogWrapper
Syslog header wrapping for CEF output.
Only applicable when
codecisCEF.Possible values:
None— emit a bare CEF string, used by default;RFC3164— prepend an RFC 3164 (BSD syslog) header;RFC5424— prepend an RFC 5424 (IETF syslog) header.
Default:
NoneAllowed values:
None,RFC3164,RFC5424
-
-
stringspec.socket.mode
Required value
Socket transport mode.
Possible values:
TCP— stream-oriented and reliable, supports TLS. Recommended for a production syslog;UDP— datagram-oriented, with no delivery guarantee. The maximum message size is limited by the MTU;Unix— local Unix domain socket in stream mode. Intended for SIEM agents running as a sidecar.
Allowed values:
TCP,UDP,Unix -
objectspec.socket.tls
TLS configuration.
Only applicable when mode is TCP. Ignored for UDP and Unix modes.
-
stringspec.socket.tls.caBase64-encoded PEM with the CA certificate chain used to verify the destination server certificate.
Maximum length:
32768 -
booleanspec.socket.tls.verifyCertificate
Default:
true -
booleanspec.socket.tls.verifyHostname
Default:
true
-
-
-
objectspec.splunkHEC
-
stringspec.splunkHEC.endpoint
Required value
Maximum length:
2048 -
objectspec.splunkHEC.tls
-
stringspec.splunkHEC.tls.caBase64-encoded PEM with the CA certificate chain used to verify the destination server certificate.
Maximum length:
32768 -
booleanspec.splunkHEC.tls.verifyCertificate
Default:
true -
booleanspec.splunkHEC.tls.verifyHostname
Default:
true
-
-
stringspec.splunkHEC.token
Splunk HEC token.
Consider using
tokenSecretRefinstead to avoid storing secrets in the resource spec.Maximum length:
4096 -
objectspec.splunkHEC.tokenSecretRef
-
stringspec.splunkHEC.tokenSecretRef.name
Required value
Name of the secret in the
d8-security-events-managernamespace containing the credential.The secret must have the key
valuein itsdatafield.Maximum length:
253
-
-
-
stringspec.type
Required value
Allowed values:
Loki,Elasticsearch,Kafka,SplunkHEC,File,Console,Vector,Socket,Http -
objectspec.vector
-
objectspec.vector.encoding
Encoding format for events sent to this Vector destination.
Default is
JSON. SetcodectoCEFto emit events in Common Event Format.-
objectspec.vector.encoding.cef
CEF-specific configuration fields.
Only applicable when
codecis set toCEF. Every field of the block is optional and overrides the matching field ofspec.cefof ClusterSecurityEventConfig. A field set in neither place falls back todeviceVendor=Deckhouse,deviceProduct=security-events-manager,deviceVersion=1,version=V0.-
stringspec.vector.encoding.cef.deviceProduct
Device product field in the CEF header.
When the field is omitted,
spec.cef.deviceProductof ClusterSecurityEventConfig applies, andsecurity-events-manageris used when that is not set either.Maximum length:
63 -
stringspec.vector.encoding.cef.deviceVendor
Device vendor field in the CEF header.
When the field is omitted,
spec.cef.deviceVendorof ClusterSecurityEventConfig applies, andDeckhouseis used when that is not set either.Maximum length:
63 -
stringspec.vector.encoding.cef.deviceVersion
Device version field in the CEF header.
When the field is omitted,
spec.cef.deviceVersionof ClusterSecurityEventConfig applies, and1is used when that is not set either.Maximum length:
63 -
stringspec.vector.encoding.cef.version
CEF format version written in the
CEF:prefix of the header.Set it to match the format the receiving SIEM parses. When the field is omitted,
spec.cef.versionof ClusterSecurityEventConfig applies, andV0is used when that is not set either.Possible values:
V0— emit theCEF:0prefix, used by default and expected by most SIEM systems;V1— emit theCEF:1prefix.
Allowed values:
V0,V1
-
-
stringspec.vector.encoding.codec
Encoding codec for the destination.
Possible values:
JSON— structured JSON, used by default and suitable for Loki, Elasticsearch and Kafka;CEF— Common Event Format, suitable for SIEM integration through Kafka, Vector, File, Console and Socket.
Default:
JSONAllowed values:
JSON,CEF -
stringspec.vector.encoding.syslogWrapper
Syslog header wrapping for CEF output.
Only applicable when
codecisCEF.Possible values:
None— emit a bare CEF string, used by default;RFC3164— prepend an RFC 3164 (BSD syslog) header;RFC5424— prepend an RFC 5424 (IETF syslog) header.
Default:
NoneAllowed values:
None,RFC3164,RFC5424
-
-
stringspec.vector.endpoint
Required value
Maximum length:
2048 -
objectspec.vector.tls
-
stringspec.vector.tls.caBase64-encoded PEM with the CA certificate chain used to verify the destination server certificate.
Maximum length:
32768 -
booleanspec.vector.tls.verifyCertificate
Default:
true -
booleanspec.vector.tls.verifyHostname
Default:
true
-
-
-
ClusterSecurityEventEnrichmentPlugin
Short names: csep
Scope: Cluster
Version: v1alpha1
-
objectspec
Describes an enrichment plugin — an HTTP endpoint that resolves additional fields for outgoing SecurityEvents at runtime.
-
Internalplugins are served by the built-inenrichment-cachesidecar in the gateway pod. The module ships three Internal plugins:k8s-pod-info,k8s-container-info,k8s-nodeuser-info. Internal resources are managed by Deckhouse and cannot be created or modified. -
Externalplugins are served by user-deployed pods in any namespace. The resource specifies the endpoint URL, the argument schema, the return field schema and, optionally, TLS and authentication settings.
-
array of objectsspec.args
Required value
Input arguments, passed as query parameters, that the plugin accepts.
Each argument has a name, a flag marking it as required, and a description.
When a
ShipperEnrichRulereferences this plugin, itsargsvalues are resolved from event fields (dot-paths) and sent as query parameters to the plugin endpoint.The controller validates that all
required: trueargs are present in the referencingShipperEnrichRule.-
stringspec.args.descriptionHuman-readable description of the argument.
Maximum length:
4096 -
stringspec.args.nameArgument name, used as the query parameter key.
Length:
1..253 -
booleanspec.args.requiredWhether the argument is required in ShipperEnrichRule.
Default:
true
-
-
stringspec.descriptionHuman-readable description of the plugin.
Maximum length:
4096 -
objectspec.endpoint
HTTP endpoint configuration.
Required for
Externalplugins. ForInternalplugins the parameter is ignored, because the sidecar URL is used automatically.-
array of objectsspec.endpoint.headersStatic HTTP headers sent with each lookup request.
-
stringspec.endpoint.headers.name
Length:
1..256 -
stringspec.endpoint.headers.value
Maximum length:
4096
-
-
objectspec.endpoint.tlsTLS configuration for the HTTPS endpoint.
-
stringspec.endpoint.tls.caSecretName of a Secret in the module namespace (
d8-security-events-manager) containing the CA certificate (keyca.crt). Used to verify the plugin endpoint’s TLS certificate.Maximum length:
253 -
stringspec.endpoint.tls.clientCertSecretName of a Secret in the module namespace containing the client certificate and key for mTLS (keys
tls.crt,tls.key).Maximum length:
253
-
-
stringspec.endpoint.url
Required value
Full HTTP(S) URL of the enrichment endpoint.
The controller generates a request of the form
GET <URL>?<ARGS AS QUERY PARAMS>. The URL must start withhttp://orhttps://. To prevent SSRF, it must not reference cloud metadata endpoints such as169.254.x.xor link-local addresses.Length:
1..2048
-
-
objectspec.readiness
Readiness probe of the plugin.
The controller can probe this endpoint before including the plugin in the gateway configuration. If the endpoint is unreachable, the controller sets the
NotReadystatus condition.-
integerspec.readiness.expectedStatusExpected HTTP status code for a ready plugin.
Default:
200 -
stringspec.readiness.pathHTTP path to probe, appended to
endpoint.url.Default:
/healthzMaximum length:
2048
-
-
objectspec.returns
Required value
Fields that the plugin returns in its JSON response.
The list is used for validation: the
valueparameter in a referencingShipperEnrichRulemust match one of thefields[].namevalues listed here.-
array of objectsspec.returns.fields
Required value
-
stringspec.returns.fields.descriptionHuman-readable description of the field.
Maximum length:
4096 -
stringspec.returns.fields.nameResponse field name.
Length:
1..253 -
stringspec.returns.fields.typeField type.
Allowed values:
String,Int,Bool
-
-
-
stringspec.type
Required value
Plugin type.
Internal— served by the built-inenrichment-cachesidecar, no endpoint required;External— served by a user-deployed pod, requiresendpoint.url.
Allowed values:
Internal,External
-
-
objectstatusCurrent status of this resource.
-
array of objectsstatus.conditionsRepresents the latest available observations of an object’s state.
-
stringstatus.conditions.lastTransitionTime
-
stringstatus.conditions.message
Maximum length:
32768 -
integerstatus.conditions.observedGeneration
-
stringstatus.conditions.reason
Length:
1..1024 -
stringstatus.conditions.status
Allowed values:
True,False,Unknown -
stringstatus.conditions.type
Maximum length:
316
-
-
integerstatus.observedGenerationThe generation observed by the controller.
-
ClusterSecurityEventLoggingTransformationRules
Short names: cseltr
Scope: Cluster
Version: v1alpha1
-
objectspec
Cluster-wide rules to transform raw log lines into structured objects (Vector events) before further processing.
Namespaced SecurityEventLoggingTransformationRules (SELTR) take precedence over these rules when both match the same pod/container.
-
objectspec.file
Selection + shared transform for node file logs. Required when type is File.
File match is performed against the Vector event field
.file.-
array of stringsspec.file.paths
Required value
Exact file paths to match.-
stringspec.file.paths.Element of the array
Length:
1..4096
-
-
objectspec.file.transform
Required value
Shared transformation applied to every matched file log line.-
booleanspec.file.transform.drop_raw
Default:
false -
array of objectsspec.file.transform.fields
-
stringspec.file.transform.fields.nameField name in the parsed object.
Length:
1..253 -
stringspec.file.transform.fields.typeTarget field type.
Allowed values:
String,Int,Float,Bool
-
-
objectspec.file.transform.parser
Required value
Parser configuration that defines how to unpack the original log line.
Parsing follows these rules:
- parsing is best-effort, so errors and mismatches do not drop events;
- for the
RegexandGroktypes, the first successfully matched pattern wins; - named captures are written into
.parsed_data.
-
objectspec.file.transform.parser.grokGrok parser configuration. Named fields are saved into
.parsed_data.-
array of objectsspec.file.transform.parser.grok.customPatternsCustom grok pattern definitions (name -> regex). These are added to the built-in grok patterns.
-
stringspec.file.transform.parser.grok.customPatterns.key
Maximum length:
256 -
stringspec.file.transform.parser.grok.customPatterns.value
Maximum length:
4096
-
-
array of stringsspec.file.transform.parser.grok.patterns
Required value
Grok patterns to try in order. The first successfully matched pattern wins.-
stringspec.file.transform.parser.grok.patterns.Element of the array
Length:
1..16384
-
-
-
objectspec.file.transform.parser.regexRegex parser configuration. Only named capture groups are saved into
.parsed_data.-
array of stringsspec.file.transform.parser.regex.patterns
Required value
Regex patterns to try in order. The first successfully matched pattern wins.-
stringspec.file.transform.parser.regex.patterns.Element of the array
Length:
1..16384
-
-
-
stringspec.file.transform.parser.type
Required value
Parser type.
JSON— parse the original log line as JSON withparse_json();Regex— apply regular expressions and extract named capture groups;Grok— apply grok patterns and extract named fields.
Allowed values:
JSON,Regex,Grok
-
-
-
objectspec.kubernetesPodsSelection + per-container transforms for Kubernetes pod logs. Required when type is KubernetesPods.
-
array of objectsspec.kubernetesPods.containers
Required value
Per-container transformation rules.-
booleanspec.kubernetesPods.containers.drop_rawIf true, removes the original raw message field after parsing.
Default:
false -
array of objectsspec.kubernetesPods.containers.fieldsField type conversions applied after parsing. Use them to enforce stable types for sinks such as Elasticsearch or ClickHouse.
-
stringspec.kubernetesPods.containers.fields.nameField name in the parsed object.
Length:
1..253 -
stringspec.kubernetesPods.containers.fields.typeTarget field type.
Allowed values:
String,Int,Float,Bool
-
-
stringspec.kubernetesPods.containers.nameContainer name to apply this transformation to.
Length:
1..253 -
objectspec.kubernetesPods.containers.parser
Parser configuration that defines how to unpack the original log line.
Parsing follows these rules:
- parsing is best-effort, so errors and mismatches do not drop events;
- for the
RegexandGroktypes, the first successfully matched pattern wins; - named captures are written into
.parsed_data.
-
objectspec.kubernetesPods.containers.parser.grokGrok parser configuration. Named fields are saved into
.parsed_data.-
array of objectsspec.kubernetesPods.containers.parser.grok.customPatternsCustom grok pattern definitions (name -> regex). These are added to the built-in grok patterns.
-
stringspec.kubernetesPods.containers.parser.grok.customPatterns.key
Maximum length:
256 -
stringspec.kubernetesPods.containers.parser.grok.customPatterns.value
Maximum length:
4096
-
-
array of stringsspec.kubernetesPods.containers.parser.grok.patterns
Required value
Grok patterns to try in order. The first successfully matched pattern wins.-
stringspec.kubernetesPods.containers.parser.grok.patterns.Element of the array
Length:
1..16384
-
-
-
objectspec.kubernetesPods.containers.parser.regexRegex parser configuration. Only named capture groups are saved into
.parsed_data.-
array of stringsspec.kubernetesPods.containers.parser.regex.patterns
Required value
Regex patterns to try in order. The first successfully matched pattern wins.-
stringspec.kubernetesPods.containers.parser.regex.patterns.Element of the array
Length:
1..16384
-
-
-
stringspec.kubernetesPods.containers.parser.type
Required value
Parser type.
JSON— parse the original log line as JSON withparse_json();Regex— apply regular expressions and extract named capture groups;Grok— apply grok patterns and extract named fields.
Allowed values:
JSON,Regex,Grok
-
-
objectspec.kubernetesPods.labelSelector
Required value
Pod label selector.
Not used for matching. Pods are selected by the shipper that references these rules, through its own
input.kubernetesPods.labelSelector. The field is kept required for compatibility and is ignored.-
array of objectsspec.kubernetesPods.labelSelector.matchExpressionsList of label selector requirements.
-
stringspec.kubernetesPods.labelSelector.matchExpressions.key
Maximum length:
317 -
stringspec.kubernetesPods.labelSelector.matchExpressions.operator
Allowed values:
In,NotIn,Exists,DoesNotExist -
array of stringsspec.kubernetesPods.labelSelector.matchExpressions.values
-
stringspec.kubernetesPods.labelSelector.matchExpressions.values.Element of the array
Maximum length:
63
-
-
-
objectspec.kubernetesPods.labelSelector.matchLabelsMap of label key to value.
-
-
objectspec.kubernetesPods.namespaceSelector
Namespace selection (subset of ClusterLoggingConfig). Only matchNames/excludeNames are supported.
Not used for matching. Namespaces are selected by the shipper that references these rules, through its own
input.kubernetesPods. The field is ignored.-
array of stringsspec.kubernetesPods.namespaceSelector.excludeNames
-
stringspec.kubernetesPods.namespaceSelector.excludeNames.Element of the array
Maximum length:
253
-
-
array of stringsspec.kubernetesPods.namespaceSelector.matchNames
-
stringspec.kubernetesPods.namespaceSelector.matchNames.Element of the array
Maximum length:
253
-
-
-
-
stringspec.type
Required value
Input type the rules apply to. KubernetesPods — match pod/container logs. File — match node file logs.Allowed values:
KubernetesPods,File
-
-
objectstatusCurrent status of this resource.
-
array of objectsstatus.conditionsRepresents the latest available observations of an object’s state.
-
stringstatus.conditions.lastTransitionTime
-
stringstatus.conditions.message
Maximum length:
32768 -
integerstatus.conditions.observedGeneration
-
stringstatus.conditions.reason
Length:
1..1024 -
stringstatus.conditions.status
Allowed values:
True,False,Unknown -
stringstatus.conditions.type
Maximum length:
316
-
-
integerstatus.observedGenerationThe generation observed by the controller.
-
ClusterSecurityEventShipper
Short names: cses
Scope: Cluster
Version: v1alpha1
-
array of objectsspecCluster-wide pipelines for extracting security events from node files or pod logs. Each pipeline item describes the source and one or more event definitions (produces).
-
objectspec.input
-
array of stringsspec.input.filesNode file paths (required for type File).
-
stringspec.input.files.Element of the array
Maximum length:
4096
-
-
objectspec.input.kubernetesPodsPod selection for cluster-wide collection.
-
objectspec.input.kubernetesPods.labelSelector
Required value
Kubernetes-style label selector.-
array of objectsspec.input.kubernetesPods.labelSelector.matchExpressionsList of label selector requirements.
-
stringspec.input.kubernetesPods.labelSelector.matchExpressions.key
Length:
1..317 -
stringspec.input.kubernetesPods.labelSelector.matchExpressions.operator
Allowed values:
In,NotIn,Exists,DoesNotExist -
array of stringsspec.input.kubernetesPods.labelSelector.matchExpressions.values
-
stringspec.input.kubernetesPods.labelSelector.matchExpressions.values.Element of the array
Maximum length:
63
-
-
-
objectspec.input.kubernetesPods.labelSelector.matchLabelsMap of label key to value.
-
-
stringspec.input.kubernetesPods.namespaceNamespace to collect pod logs from (legacy exact namespace match).
Length:
1..63Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ -
objectspec.input.kubernetesPods.namespaceSelector
Namespace selector for cluster pod log collection.
- If
matchNamesis set, only these namespaces are included. - If
excludeNamesis set, these namespaces are excluded. - If both are set, the exclusion applies on top of the inclusion.
- If both are empty, all namespaces are matched.
The selector is translated into a condition on the
kubernetes.io/metadata.namelabel of a namespace.-
array of stringsspec.input.kubernetesPods.namespaceSelector.excludeNamesExplicitly excluded namespace names.
-
stringspec.input.kubernetesPods.namespaceSelector.excludeNames.Element of the array
Length:
1..63Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
-
-
array of stringsspec.input.kubernetesPods.namespaceSelector.matchNamesExplicitly included namespace names.
-
stringspec.input.kubernetesPods.namespaceSelector.matchNames.Element of the array
Length:
1..63Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
-
- If
-
-
stringspec.input.type
Required value
File — read from node files. KubernetesPods — read from pod logs (cluster-wide; labelSelector required; namespace or namespaceSelector optional).Allowed values:
File,KubernetesPods
-
-
array of objectsspec.parser
Parser rules for best-effort parsing of raw log line
.messageinto.parsed_data.- For
input.type: KubernetesPods: this repeatsSecurityEventLoggingTransformationRules.spec.containers[]. Match is performed by.namespace+.container+.pod_labels. - For
input.type: File: setname: fileand the rule will be applied when.filematches one ofinput.files.
Container selection happens on the log-shipper side via
labelFilter.-
booleanspec.parser.drop_rawIf true, removes the original raw message field after parsing.
Default:
false -
array of objectsspec.parser.fieldsField type conversions applied after parsing.
-
stringspec.parser.fields.nameField name in the parsed object.
Length:
1..253 -
stringspec.parser.fields.typeTarget field type.
Allowed values:
String,Int,Float,Bool
-
-
stringspec.parser.nameContainer name (or
filefor file input).Length:
1..253 -
objectspec.parser.parserParser configuration.
-
objectspec.parser.parser.grok
-
array of objectsspec.parser.parser.grok.customPatterns
-
stringspec.parser.parser.grok.customPatterns.key
Maximum length:
256 -
stringspec.parser.parser.grok.customPatterns.value
Maximum length:
4096
-
-
array of stringsspec.parser.parser.grok.patterns
Required value
-
stringspec.parser.parser.grok.patterns.Element of the array
Length:
1..16384
-
-
-
objectspec.parser.parser.regex
-
array of stringsspec.parser.parser.regex.patterns
Required value
-
stringspec.parser.parser.regex.patterns.Element of the array
Length:
1..16384
-
-
-
stringspec.parser.parser.type
Required value
Parser type.Allowed values:
JSON,Regex,Grok
-
- For
-
stringspec.parserRef
Name of ClusterSecurityEventLoggingTransformationRules (CSELTR) object to use as parser rule source.
Used only when
parseris not set.Length:
1..253 -
array of objectsspec.producesList of produced security events for this source.
-
array of objectsspec.produces.enrich
Enrichment rules for adding extra fields into outgoing SecurityEvent.
Each rule writes into a destination field path (
target). Sources:Static: write a literal string fromvalue.Plugin: resolve a field at runtime via HTTP lookup to theenrichment-cachesidecar (in-memory Pod/NodeUser cache, no API server call per event). Plugins:k8s-pod-info,k8s-container-info: resolve Pod fields. Supports two lookup modes:- Pod-name mode: args
pod_name+namespace. - Container-ID mode: arg
container_id(resolves namespace, name, or serviceAccountName from the container runtime ID).
- Pod-name mode: args
k8s-nodeuser-info: resolve a static-user username (nodeusers.deckhouse.io) by uid. Arguid(resolves the NodeUser metadata.name matching spec.uid).
Enrich rules are applied after
transform, so they overridetransformwhen targeting the same field.-
array of objectsspec.produces.enrich.args
Plugin arguments as key/value pairs. The
keymust match an arg name declared by the referenced ClusterSecurityEventEnrichmentPlugin CR (spec.args[].name). Thevalueis a dot-path in the event resolved with the same logic astransformrules: a@root.prefix reads from the event root, otherwise the value is read from.parsed_data.At runtime, each arg becomes a query parameter sent to the plugin endpoint:
GET <endpoint>?<arg1>=<val1>&<arg2>=<val2>.For built-in plugins:
k8s-pod-info:pod_name+namespace(both required).k8s-container-info:container_id(required; runtime prefixes likecontainerd://are stripped automatically).k8s-nodeuser-info:uid(required; system UID from the event).
-
stringspec.produces.enrich.args.key
Maximum length:
256 -
stringspec.produces.enrich.args.value
Maximum length:
4096
-
stringspec.produces.enrich.plugin
Plugin name (required for
source=Plugin). References an existing ClusterSecurityEventEnrichmentPlugin resource by itsmetadata.name.Built-in Internal plugins shipped with the module:
k8s-pod-info— resolve Pod fields by pod name + namespace.k8s-container-info— resolve Pod fields by container runtime ID.k8s-nodeuser-info— resolve static-user username (nodeusers.deckhouse.io) by uid.
To register custom enrichment endpoints, create ClusterSecurityEventEnrichmentPlugin resources of type
External.Maximum length:
253 -
stringspec.produces.enrich.sourceEnrichment source type.
Allowed values:
Static,Plugin -
stringspec.produces.enrich.targetDestination field path in outgoing SecurityEvent (dot-separated).
Length:
1..2048 -
stringspec.produces.enrich.value
For
Staticsource: literal string to be written totarget.For
Pluginsource: the response field to extract from the plugin’s JSON response. Must match one of thereturns.fields[].namedeclared by the referenced ClusterSecurityEventEnrichmentPlugin resource. For example:serviceAccountName,name,namespace(k8s-pod-info / k8s-container-info),username(k8s-nodeuser-info).Maximum length:
2048
-
stringspec.produces.eventCodeEvent code (references SecurityEventDefinition.spec.code).
Length:
1..128Pattern:
^[A-Z0-9_]+$ -
objectspec.produces.extract
Detection rule for this produced event.
This structure maps 1:1 into log-shipper ClusterLoggingConfig.spec.labelFilter item.
Notes:
valuesis required forIn,NotIn,Regex,NotRegex.valuesmust be omitted/empty forExists,DoesNotExist.
Allowed
fieldvalues aremessageplus log-shipper metadata labels. Kubernetes:pod,namespace,pod_labels,pod_ip,image,container,node,pod_owner,node_group. File:host,host_ip,file.-
stringspec.produces.extract.field
Required value
Field name for filtering (same as ClusterLoggingConfiglabelFilter.field). Typical values:message,file,namespace.Length:
1..2048 -
stringspec.produces.extract.operator
Required value
Operator for field comparison (same as ClusterLoggingConfiglabelFilter.operator).Allowed values:
In,NotIn,Regex,NotRegex,Exists,DoesNotExist -
array of stringsspec.produces.extract.valuesArray of values or regexes for corresponding operations (same as ClusterLoggingConfig
labelFilter.values).
-
array of objectsspec.produces.transform
Field mapping for transforming parsed raw logs into outgoing SecurityEvent.
Keys are destination field paths in the outgoing event (dot-separated). Values are source field paths inside the parsed raw object (dot-separated, relative to
.parsed_data). To read from root-level fields, use the@root.prefix (for example:metadata.extra.host_ip: @root.host_ip). A key that contains a dot is written in brackets and quotes, otherwise the dot reads as a step into a nested object (for example:actor.id: output_fields["user.name"]).Example:
pod.name: pod_namewill copy.parsed_data.pod_nameinto.pod.name.-
stringspec.produces.transform.key
Maximum length:
256 -
stringspec.produces.transform.value
Maximum length:
4096
-
-
-
objectspec.producesDefaults
Default mappings applied to all items in
produces[]of this pipeline item.Precedence:
transform: keys are merged; defaults first, thenproduces[].transformoverwrites.enrich: used only whenproduces[].enrichis omitted.
-
array of objectsspec.producesDefaults.enrichDefault enrich rules (see
produces[].enrich).-
array of objectsspec.producesDefaults.enrich.args
Plugin arguments as key/value pairs. The
keymust match an arg name declared by the referenced ClusterSecurityEventEnrichmentPlugin CR (spec.args[].name). Thevalueis a dot-path in the event resolved with the same logic astransformrules: a@root.prefix reads from the event root, otherwise the value is read from.parsed_data.At runtime, each arg becomes a query parameter sent to the plugin endpoint:
GET <endpoint>?<arg1>=<val1>&<arg2>=<val2>.For built-in plugins:
k8s-pod-info:pod_name+namespace(both required).k8s-container-info:container_id(required; runtime prefixes likecontainerd://are stripped automatically).k8s-nodeuser-info:uid(required; system UID from the event).
-
stringspec.producesDefaults.enrich.args.key
Maximum length:
256 -
stringspec.producesDefaults.enrich.args.value
Maximum length:
4096
-
stringspec.producesDefaults.enrich.plugin
Plugin name (required for
source=Plugin). References an existing ClusterSecurityEventEnrichmentPlugin resource by itsmetadata.name.Built-in Internal plugins shipped with the module:
k8s-pod-info— resolve Pod fields by pod name + namespace.k8s-container-info— resolve Pod fields by container runtime ID.k8s-nodeuser-info— resolve static-user username (nodeusers.deckhouse.io) by uid.
To register custom enrichment endpoints, create ClusterSecurityEventEnrichmentPlugin resources of type
External.Maximum length:
253 -
stringspec.producesDefaults.enrich.sourceEnrichment source type.
Allowed values:
Static,Plugin -
stringspec.producesDefaults.enrich.targetDestination field path in outgoing SecurityEvent (dot-separated).
Length:
1..2048 -
stringspec.producesDefaults.enrich.value
For
Staticsource: literal string to be written totarget.For
Pluginsource: the response field to extract from the plugin’s JSON response. Must match one of thereturns.fields[].namedeclared by the referenced ClusterSecurityEventEnrichmentPlugin resource. For example:serviceAccountName,name,namespace(k8s-pod-info / k8s-container-info),username(k8s-nodeuser-info).Maximum length:
2048
-
-
array of objectsspec.producesDefaults.transformDefault field mapping (see
produces[].transform).-
stringspec.producesDefaults.transform.key
Maximum length:
256 -
stringspec.producesDefaults.transform.value
Maximum length:
4096
-
-
stringspec.sourceSource identifier (used for enable/disable via ClusterSecurityEventConfig).
Length:
1..253
-
-
objectstatusCurrent status of this resource.
-
array of objectsstatus.conditionsRepresents the latest available observations of an object’s state.
-
stringstatus.conditions.lastTransitionTime
-
stringstatus.conditions.message
Maximum length:
32768 -
integerstatus.conditions.observedGeneration
-
stringstatus.conditions.reason
Length:
1..1024 -
stringstatus.conditions.status
Allowed values:
True,False,Unknown -
stringstatus.conditions.type
Maximum length:
316
-
-
integerstatus.observedGenerationThe generation observed by the controller.
-
PodSecurityEventShipper
Short names: pses
Scope: Namespaced
Version: v1alpha1
-
array of objectsspecNamespaced pipelines for extracting security events from pod logs of this namespace. Namespace is implied and equals the PodSecurityEventShipper namespace.
-
objectspec.input
-
objectspec.input.kubernetesPods
Required value
-
objectspec.input.kubernetesPods.labelSelector
Required value
Kubernetes-style label selector.-
array of objectsspec.input.kubernetesPods.labelSelector.matchExpressionsList of label selector requirements.
-
stringspec.input.kubernetesPods.labelSelector.matchExpressions.key
Length:
1..317 -
stringspec.input.kubernetesPods.labelSelector.matchExpressions.operator
Allowed values:
In,NotIn,Exists,DoesNotExist -
array of stringsspec.input.kubernetesPods.labelSelector.matchExpressions.values
-
stringspec.input.kubernetesPods.labelSelector.matchExpressions.values.Element of the array
Maximum length:
63
-
-
-
objectspec.input.kubernetesPods.labelSelector.matchLabelsMap of label key to value.
-
-
-
stringspec.input.type
Required value
Allowed values:
KubernetesPods
-
-
array of objectsspec.parserParser rules (same shape as
SecurityEventLoggingTransformationRules.spec.containers[]). Used by the gateway for best-effort parsing of raw logs.messageinto.parsed_databefore applying transform mappings. Note: container is selected by log-shipper vialabelFilter;nameis the container name these rules apply to.-
booleanspec.parser.drop_rawIf true, removes the original raw message field after parsing.
Default:
false -
array of objectsspec.parser.fieldsField type conversions applied after parsing.
-
stringspec.parser.fields.nameField name in the parsed object.
Length:
1..253 -
stringspec.parser.fields.typeTarget field type.
Allowed values:
String,Int,Float,Bool
-
-
stringspec.parser.nameContainer name.
Length:
1..253 -
objectspec.parser.parserParser configuration.
-
objectspec.parser.parser.grokGrok parser configuration.
-
array of objectsspec.parser.parser.grok.customPatternsCustom grok pattern definitions (name -> regex).
-
stringspec.parser.parser.grok.customPatterns.key
Maximum length:
256 -
stringspec.parser.parser.grok.customPatterns.value
Maximum length:
4096
-
-
array of stringsspec.parser.parser.grok.patterns
Required value
Grok patterns to try in order.-
stringspec.parser.parser.grok.patterns.Element of the array
Length:
1..16384
-
-
-
objectspec.parser.parser.regexRegex parser configuration.
-
array of stringsspec.parser.parser.regex.patterns
Required value
Regex patterns to try in order.-
stringspec.parser.parser.regex.patterns.Element of the array
Length:
1..16384
-
-
-
stringspec.parser.parser.type
Required value
Parser type.
JSON— parse the original log line as JSON;Regex— apply regular expressions and extract named capture groups;Grok— apply grok patterns and extract named fields.
Allowed values:
JSON,Regex,Grok
-
-
-
stringspec.parserRefName of SecurityEventLoggingTransformationRules (SELTR) resource in the same namespace to use as parser rules. Used only when
parseris not set.Length:
1..253 -
array of objectsspec.producesList of produced security events for this source.
-
array of objectsspec.produces.enrich
Enrichment rules for adding extra fields into outgoing SecurityEvent.
Each rule writes into a destination field path (
target). Sources:Static: write a literal string fromvalue.Plugin: resolve a field at runtime via HTTP lookup to theenrichment-cachesidecar (in-memory Pod/NodeUser cache, no API server call per event). Plugins:k8s-pod-info,k8s-container-info: resolve Pod fields. Supports two lookup modes:- Pod-name mode: args
pod_name+namespace. - Container-ID mode: arg
container_id(resolves namespace, name, or serviceAccountName from the container runtime ID).
- Pod-name mode: args
k8s-nodeuser-info: resolve a static-user username (nodeusers.deckhouse.io) by uid. Arguid(resolves the NodeUser metadata.name matching spec.uid).
Enrich rules are applied after
transform, so they overridetransformwhen targeting the same field.-
array of objectsspec.produces.enrich.args
Plugin arguments as key/value pairs. The
keymust match an arg name declared by the referenced ClusterSecurityEventEnrichmentPlugin CR (spec.args[].name). Thevalueis a dot-path in the event resolved with the same logic astransformrules: a@root.prefix reads from the event root, otherwise the value is read from.parsed_data.At runtime, each arg becomes a query parameter sent to the plugin endpoint:
GET <endpoint>?<arg1>=<val1>&<arg2>=<val2>.For built-in plugins:
k8s-pod-info:pod_name+namespace(both required).k8s-container-info:container_id(required; runtime prefixes likecontainerd://are stripped automatically).k8s-nodeuser-info:uid(required; system UID from the event).
-
stringspec.produces.enrich.args.key
Maximum length:
256 -
stringspec.produces.enrich.args.value
Maximum length:
4096
-
stringspec.produces.enrich.plugin
Plugin name (required for
source=Plugin). References an existing ClusterSecurityEventEnrichmentPlugin resource by itsmetadata.name.Built-in Internal plugins shipped with the module:
k8s-pod-info— resolve Pod fields by pod name + namespace.k8s-container-info— resolve Pod fields by container runtime ID.k8s-nodeuser-info— resolve static-user username (nodeusers.deckhouse.io) by uid.
To register custom enrichment endpoints, create ClusterSecurityEventEnrichmentPlugin resources of type
External.Maximum length:
253 -
stringspec.produces.enrich.sourceEnrichment source type.
Allowed values:
Static,Plugin -
stringspec.produces.enrich.targetDestination field path in outgoing SecurityEvent (dot-separated).
Length:
1..2048 -
stringspec.produces.enrich.value
For
Staticsource: literal string to be written totarget.For
Pluginsource: the response field to extract from the plugin’s JSON response. Must match one of thereturns.fields[].namedeclared by the referenced ClusterSecurityEventEnrichmentPlugin resource. For example:serviceAccountName,name,namespace(k8s-pod-info / k8s-container-info),username(k8s-nodeuser-info).Maximum length:
2048
-
stringspec.produces.eventCodeEvent code (references SecurityEventDefinition.spec.code).
Length:
1..128Pattern:
^[A-Z0-9_]+$ -
objectspec.produces.extract
Detection rule for this produced event.
This structure maps 1:1 into log-shipper PodLoggingConfig.spec.labelFilter item.
Notes:
valuesis required forIn,NotIn,Regex,NotRegex.valuesmust be omitted/empty forExists,DoesNotExist.
Allowed
fieldvalues aremessageplus log-shipper metadata labels. Kubernetes:pod,namespace,pod_labels,pod_ip,image,container,node,pod_owner,node_group. File:host,host_ip,file.-
stringspec.produces.extract.field
Required value
Field name for filtering (same as PodLoggingConfiglabelFilter.field). Typical values:message,container,namespace.Length:
1..2048 -
stringspec.produces.extract.operator
Required value
Operator for field comparison (same as PodLoggingConfiglabelFilter.operator).Allowed values:
In,NotIn,Regex,NotRegex,Exists,DoesNotExist -
array of stringsspec.produces.extract.valuesArray of values or regexes for corresponding operations (same as PodLoggingConfig
labelFilter.values).
-
array of objectsspec.produces.transform
Field mapping for transforming parsed raw logs into outgoing SecurityEvent.
Keys are destination field paths in the outgoing event (dot-separated). Values are source field paths inside the parsed raw object (dot-separated, relative to
.parsed_data). To read from root-level fields, use the@root.prefix (for example:metadata.extra.host_ip: @root.host_ip). A key that contains a dot is written in brackets and quotes, otherwise the dot reads as a step into a nested object (for example:actor.id: output_fields["user.name"]).Example:
pod.name: pod_namewill copy.parsed_data.pod_nameinto.pod.name.-
stringspec.produces.transform.key
Maximum length:
256 -
stringspec.produces.transform.value
Maximum length:
4096
-
-
-
objectspec.producesDefaults
Default mappings applied to all items in
produces[]of this pipeline item.Precedence:
transform: keys are merged; defaults first, thenproduces[].transformoverwrites.enrich: used only whenproduces[].enrichis omitted.
-
array of objectsspec.producesDefaults.enrichDefault enrich rules (see
produces[].enrich).-
array of objectsspec.producesDefaults.enrich.args
Plugin arguments as key/value pairs. The
keymust match an arg name declared by the referenced ClusterSecurityEventEnrichmentPlugin CR (spec.args[].name). Thevalueis a dot-path in the event resolved with the same logic astransformrules: a@root.prefix reads from the event root, otherwise the value is read from.parsed_data.At runtime, each arg becomes a query parameter sent to the plugin endpoint:
GET <endpoint>?<arg1>=<val1>&<arg2>=<val2>.For built-in plugins:
k8s-pod-info:pod_name+namespace(both required).k8s-container-info:container_id(required; runtime prefixes likecontainerd://are stripped automatically).k8s-nodeuser-info:uid(required; system UID from the event).
-
stringspec.producesDefaults.enrich.args.key
Maximum length:
256 -
stringspec.producesDefaults.enrich.args.value
Maximum length:
4096
-
stringspec.producesDefaults.enrich.plugin
Plugin name (required for
source=Plugin). References an existing ClusterSecurityEventEnrichmentPlugin resource by itsmetadata.name.Built-in Internal plugins shipped with the module:
k8s-pod-info— resolve Pod fields by pod name + namespace.k8s-container-info— resolve Pod fields by container runtime ID.k8s-nodeuser-info— resolve static-user username (nodeusers.deckhouse.io) by uid.
To register custom enrichment endpoints, create ClusterSecurityEventEnrichmentPlugin resources of type
External.Maximum length:
253 -
stringspec.producesDefaults.enrich.sourceEnrichment source type.
Allowed values:
Static,Plugin -
stringspec.producesDefaults.enrich.targetDestination field path in outgoing SecurityEvent (dot-separated).
Length:
1..2048 -
stringspec.producesDefaults.enrich.value
For
Staticsource: literal string to be written totarget.For
Pluginsource: the response field to extract from the plugin’s JSON response. Must match one of thereturns.fields[].namedeclared by the referenced ClusterSecurityEventEnrichmentPlugin resource. For example:serviceAccountName,name,namespace(k8s-pod-info / k8s-container-info),username(k8s-nodeuser-info).Maximum length:
2048
-
-
array of objectsspec.producesDefaults.transformDefault field mapping (see
produces[].transform).-
stringspec.producesDefaults.transform.key
Maximum length:
256 -
stringspec.producesDefaults.transform.value
Maximum length:
4096
-
-
stringspec.sourceSource identifier (used for enable/disable via ClusterSecurityEventConfig).
Length:
1..253
-
-
objectstatusCurrent status of this resource.
-
array of objectsstatus.conditionsRepresents the latest available observations of an object’s state.
-
stringstatus.conditions.lastTransitionTime
-
stringstatus.conditions.message
Maximum length:
32768 -
integerstatus.conditions.observedGeneration
-
stringstatus.conditions.reason
Length:
1..1024 -
stringstatus.conditions.status
Allowed values:
True,False,Unknown -
stringstatus.conditions.type
Maximum length:
316
-
-
integerstatus.observedGenerationThe generation observed by the controller.
-
SecurityEvent
Scope: Cluster
Version: v1
-
objectactorActor (subject) that performed the action.
-
stringactor.idActor identifier.
Maximum length:
512 -
stringactor.typeActor type.
Allowed values:
User,ServiceAccount,System
-
-
objecteventEvent classification and details.
-
stringevent.category
Required value
Event category.Allowed values:
Auth,Rbac,Runtime,Network,Config -
stringevent.code
Required value
Event code.Maximum length:
128 -
stringevent.descriptionHuman-readable event description.
Maximum length:
4096 -
stringevent.outcome
Required value
Event outcome.Allowed values:
Success,Failure,Denied -
stringevent.severity
Required value
Event severity.Allowed values:
Low,Medium,High,Critical
-
-
objecteventMetadataAdditional metadata.
-
stringeventMetadata.cluster
Required value
Cluster identifier.Maximum length:
253 -
array of objectseventMetadata.extraExtra key-value metadata.
-
stringeventMetadata.extra.key
Maximum length:
256 -
stringeventMetadata.extra.value
Maximum length:
4096
-
-
stringeventMetadata.nodeNode name.
Maximum length:
253
-
-
stringidUnique event identifier.
-
objectobjectObject the event is related to.
-
stringobject.nameObject name.
Maximum length:
253 -
stringobject.namespaceObject namespace.
Maximum length:
253 -
stringobject.typeObject type.
Maximum length:
253
-
-
objectsourceSource identification for the event.
-
stringsource.component
Required value
Component name, for examplekube-apiserver.Maximum length:
253 -
stringsource.instanceInstance identifier.
Maximum length:
253
-
-
stringtimestampEvent timestamp.
SecurityEventDefinition
Short names: sed
Scope: Cluster
Version: v1alpha1
-
objectspecDescribes a possible security event.
-
stringspec.category
Required value
Event category.Allowed values:
Auth,Rbac,Runtime,Network,Config -
stringspec.code
Required value
Event code.Length:
1..128Pattern:
^[A-Z0-9_]+$ -
stringspec.description
Required value
Human-readable description.Length:
1..4096 -
stringspec.descriptionRuHuman-readable description in Russian.
Maximum length:
4096 -
array of objectsspec.fieldsList of fields that the event may contain.
-
stringspec.fields.nameField name.
Length:
1..253 -
booleanspec.fields.requiredWhether the field is required.
Default:
true
-
-
objectspec.metadataMetadata related to the rule
-
objectspec.metadata.docsHuman-readable description of the event, shown in documentation.
-
objectspec.metadata.docs.desc
-
stringspec.metadata.docs.desc.enDescription in English.
Maximum length:
4096 -
stringspec.metadata.docs.desc.ruDescription in Russian.
Maximum length:
4096
-
-
-
objectspec.metadata.testsHow this event can be triggered when testing the module.
-
stringspec.metadata.tests.executionTargetWhere the trigger commands run.
Allowed values:
Host,Pod -
stringspec.metadata.tests.testabilityWhether the event can be triggered automatically.
Allowed values:
supported,unsupported,manual -
objectspec.metadata.tests.trigger
-
array of stringsspec.metadata.tests.trigger.cleanupCommandsCommands that undo what the trigger did.
-
stringspec.metadata.tests.trigger.cleanupCommands.Element of the array
Maximum length:
4096
-
-
array of stringsspec.metadata.tests.trigger.commandsCommands that trigger the event.
-
stringspec.metadata.tests.trigger.commands.Element of the array
Maximum length:
4096
-
-
-
-
-
stringspec.severity
Required value
Event severity.Allowed values:
Low,Medium,High,Critical -
stringspec.source
Required value
Source identifier.Length:
1..253
-
-
objectstatusCurrent status of this resource.
-
array of objectsstatus.conditionsRepresents the latest available observations of an object’s state.
-
stringstatus.conditions.lastTransitionTime
-
stringstatus.conditions.message
Maximum length:
32768 -
integerstatus.conditions.observedGeneration
-
stringstatus.conditions.reason
Length:
1..1024 -
stringstatus.conditions.status
Allowed values:
True,False,Unknown -
stringstatus.conditions.type
Maximum length:
316
-
-
integerstatus.observedGenerationThe generation observed by the controller.
-
SecurityEventLoggingTransformationRules
Short names: seltr
Scope: Namespaced
Version: v1alpha1
-
objectspecNamespaced rules to transform raw log lines into structured objects (Vector events) before further processing.
-
array of objectsspec.containers
Required value
Per-container transformation rules.-
booleanspec.containers.drop_rawIf true, removes the original raw message field after parsing.
Default:
false -
array of objectsspec.containers.fieldsField type conversions applied after parsing. Use them to enforce stable types for sinks such as Elasticsearch or ClickHouse.
-
stringspec.containers.fields.nameField name in the parsed object.
Length:
1..253 -
stringspec.containers.fields.typeTarget field type.
Allowed values:
String,Int,Float,Bool
-
-
stringspec.containers.nameContainer name to apply this transformation to.
Length:
1..253 -
objectspec.containers.parser
Parser configuration that defines how to unpack the original log line.
Parsing follows these rules:
- parsing is best-effort, so errors and mismatches do not drop events;
- for the
RegexandGroktypes, the first successfully matched pattern wins; - named captures are written into
.parsed_data.
-
objectspec.containers.parser.grokGrok parser configuration. Named fields are saved into
.parsed_data.-
array of objectsspec.containers.parser.grok.customPatternsCustom grok pattern definitions (name -> regex). These are added to the built-in grok patterns.
-
stringspec.containers.parser.grok.customPatterns.key
Maximum length:
256 -
stringspec.containers.parser.grok.customPatterns.value
Maximum length:
4096
-
-
array of stringsspec.containers.parser.grok.patterns
Required value
Grok patterns to try in order. The first successfully matched pattern wins.-
stringspec.containers.parser.grok.patterns.Element of the array
Length:
1..16384
-
-
-
objectspec.containers.parser.regexRegex parser configuration. Only named capture groups are saved into
.parsed_data.-
array of stringsspec.containers.parser.regex.patterns
Required value
Regex patterns to try in order. The first successfully matched pattern wins.-
stringspec.containers.parser.regex.patterns.Element of the array
Length:
1..16384
-
-
-
stringspec.containers.parser.type
Required value
Parser type.
JSON— parse the original log line as JSON withparse_json();Regex— apply regular expressions and extract named capture groups;Grok— apply grok patterns and extract named fields.
Allowed values:
JSON,Regex,Grok
-
-
objectspec.selector
Required value
Pod label selector.
Not used for matching. Pods are selected by the shipper that references these rules, through its own
input.kubernetesPods.labelSelector. The field is kept required for compatibility and is ignored.-
array of objectsspec.selector.matchExpressionsList of label selector requirements.
-
stringspec.selector.matchExpressions.key
Maximum length:
317 -
stringspec.selector.matchExpressions.operator
Allowed values:
In,NotIn,Exists,DoesNotExist -
array of stringsspec.selector.matchExpressions.values
-
stringspec.selector.matchExpressions.values.Element of the array
Maximum length:
63
-
-
-
objectspec.selector.matchLabelsMap of label key to value.
-
-
-
objectstatusCurrent status of this resource.
-
array of objectsstatus.conditionsRepresents the latest available observations of an object’s state.
-
stringstatus.conditions.lastTransitionTime
-
stringstatus.conditions.message
Maximum length:
32768 -
integerstatus.conditions.observedGeneration
-
stringstatus.conditions.reason
Length:
1..1024 -
stringstatus.conditions.status
Allowed values:
True,False,Unknown -
stringstatus.conditions.type
Maximum length:
316
-
-
integerstatus.observedGenerationThe generation observed by the controller.
-