The module lifecycle stage: Experimental
The module has requirements for installation
The Deckhouse Kubernetes Platform installs CRDs but does not remove them when a module is disabled. If you no longer need the created CRDs, delete them.
ClusterSecurityEventConfig
Short names: csec
Scope: Cluster
Version: v1alpha1
-
objectspecDefines which sources are enabled and which destinations they should be shipped to.
-
objectspec.cefDefault CEF (Common Event Format) metadata for destinations that use CEF encoding. These values are used when a ClusterSecurityEventDestination has encoding.codec=CEF but does not specify its own cef.deviceVendor/deviceProduct/deviceVersion.
-
stringspec.cef.deviceProductDefault device product for CEF header.
Default:
security-events-manager -
stringspec.cef.deviceVendorDefault device vendor for CEF header.
Default:
Deckhouse -
stringspec.cef.deviceVersionDefault device version for CEF header.
Default:
1
-
-
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. -
array of stringsspec.enabledSources
If set, only these sources are enabled. If omitted, all sources are enabled. Expected format:
- clusterSecurityEventShipper/
/<source> - podSecurityEventShipper/<namespace>/
/<source>
-
stringspec.enabledSources.Element of the array
Pattern:
^(clusterSecurityEventShipper/[^/]+/[^/]+|podSecurityEventShipper/[^/]+/[^/]+/[^/]+)$
- clusterSecurityEventShipper/
-
array of stringsspec.enabledSourcesMasks
If set, only sources matching these glob-style masks are enabled. If omitted, all sources are enabled. Masks use ‘*’ to match any substring (including ‘/’). You must set either enabledSources or enabledSourcesMasks, but not both. Expected format:
- clusterSecurityEventShipper/
/<source> - podSecurityEventShipper/<namespace>/
/<source> Examples: - podSecurityEventShipper/*
- clusterSecurityEventShipper/kube-audit/*
-
stringspec.enabledSourcesMasks.Element of the array
Pattern:
^(clusterSecurityEventShipper/.+|podSecurityEventShipper/.+)$
- clusterSecurityEventShipper/
-
-
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
-
objectspecDescribes where to send security events. Fields are designed to be translated to deckhouse.io/log-shipper ClusterLogDestination.
-
objectspec.bufferPer-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.maxEventsMaximum number of events in the buffer. Used as a secondary limit for Memory type. Ignored when type is Disk (disk buffer uses maxSize only).
Default:
500 -
stringspec.buffer.maxSizeMaximum size of the buffer as a Kubernetes quantity string with a mandatory unit suffix (e.g. “512Mi”, “1Gi”, “256Mi”). Plain numbers without a unit suffix are NOT accepted. For Disk type: maximum disk space used on the volume. For Memory type: 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.
- Disk: disk-based buffer using LevelDB. Survives Vector process restarts within the pod. DEFAULT — ensures no security events are lost during temporary destination outages.
- 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.
- Block: apply backpressure to upstream. Pipeline slows down but NO events are lost. DEFAULT — 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.encodingEncoding format for events sent to console. Default is JSON. Set codec to CEF to emit events in Common Event Format.
-
objectspec.console.encoding.cefCEF-specific configuration fields. Only applicable when codec is set to CEF. If omitted, defaults are used: vendor=Deckhouse, product=security-events-manager, version=1.
-
stringspec.console.encoding.cef.deviceProductDevice product field in the CEF header.
Default:
security-events-manager -
stringspec.console.encoding.cef.deviceVendorDevice vendor field in the CEF header.
Default:
Deckhouse -
stringspec.console.encoding.cef.deviceVersionDevice version field in the CEF header.
Default:
1
-
-
stringspec.console.encoding.codec
Encoding codec for the destination.
- JSON: structured JSON (default, suitable for Loki, ES, Kafka, etc.).
- CEF: Common Event Format (suitable for SIEM integration via Kafka, Vector, File, Console).
Default:
JSONAllowed values:
JSON,CEF -
stringspec.console.encoding.syslogWrapper
Optional syslog header wrapping for CEF output. Only applicable when codec is CEF.
- None: emit bare CEF string (default).
- RFC3164: prepend RFC 3164 (BSD syslog) header.
- RFC5424: prepend 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.passwordPassword for Basic authentication. Consider using
passwordSecretRefinstead to avoid storing secrets in the CR spec. -
objectspec.elasticsearch.auth.passwordSecretRef
-
stringspec.elasticsearch.auth.passwordSecretRef.name
Required value
Name of the Secret in thed8-security-events-managernamespace containing the credential. The Secret must have the keyvaluein itsdatafield.
-
-
stringspec.elasticsearch.auth.strategy
Default:
NoneAllowed values:
None,Bearer,Basic -
stringspec.elasticsearch.auth.tokenBearer token for authentication. Consider using
tokenSecretRefinstead to avoid storing secrets in the CR spec. -
objectspec.elasticsearch.auth.tokenSecretRef
-
stringspec.elasticsearch.auth.tokenSecretRef.name
Required value
Name of the Secret in thed8-security-events-managernamespace containing the credential. The Secret must have the keyvaluein itsdatafield.
-
-
stringspec.elasticsearch.auth.username
-
-
stringspec.elasticsearch.endpoint
Required value
-
stringspec.elasticsearch.index
-
objectspec.elasticsearch.tls
-
stringspec.elasticsearch.tls.caBase64-encoded PEM with the CA certificate chain used to verify the destination server certificate.
-
booleanspec.elasticsearch.tls.verifyCertificate
Default:
true -
booleanspec.elasticsearch.tls.verifyHostname
Default:
true
-
-
-
objectspec.file
-
objectspec.file.encodingEncoding format for events written to this file destination. Default is JSON. Set codec to CEF to write events in Common Event Format.
-
objectspec.file.encoding.cefCEF-specific configuration fields. Only applicable when codec is set to CEF. If omitted, defaults are used: vendor=Deckhouse, product=security-events-manager, version=1.
-
stringspec.file.encoding.cef.deviceProductDevice product field in the CEF header.
Default:
security-events-manager -
stringspec.file.encoding.cef.deviceVendorDevice vendor field in the CEF header.
Default:
Deckhouse -
stringspec.file.encoding.cef.deviceVersionDevice version field in the CEF header.
Default:
1
-
-
stringspec.file.encoding.codec
Encoding codec for the destination.
- JSON: structured JSON (default, suitable for Loki, ES, Kafka, etc.).
- CEF: Common Event Format (suitable for SIEM integration via Kafka, Vector, File, Console).
Default:
JSONAllowed values:
JSON,CEF -
stringspec.file.encoding.syslogWrapper
Optional syslog header wrapping for CEF output. Only applicable when codec is CEF.
- None: emit bare CEF string (default).
- RFC3164: prepend RFC 3164 (BSD syslog) header.
- RFC5424: prepend RFC 5424 (IETF syslog) header.
Default:
NoneAllowed values:
None,RFC3164,RFC5424
-
-
stringspec.file.path
Required value
-
-
objectspec.kafka
-
array of stringsspec.kafka.brokers
Required value
-
objectspec.kafka.encodingEncoding format for events sent to this Kafka destination. Default is JSON. Set codec to CEF to emit events in Common Event Format (requires a CEF-capable SIEM consumer on the receiving end).
-
objectspec.kafka.encoding.cefCEF-specific configuration fields. Only applicable when codec is set to CEF. If omitted, defaults are used: vendor=Deckhouse, product=security-events-manager, version=1.
-
stringspec.kafka.encoding.cef.deviceProductDevice product field in the CEF header.
Default:
security-events-manager -
stringspec.kafka.encoding.cef.deviceVendorDevice vendor field in the CEF header.
Default:
Deckhouse -
stringspec.kafka.encoding.cef.deviceVersionDevice version field in the CEF header.
Default:
1
-
-
stringspec.kafka.encoding.codec
Encoding codec for the destination.
- JSON: structured JSON (default, suitable for Loki, ES, Kafka, etc.).
- CEF: Common Event Format (suitable for SIEM integration via Kafka, Vector, File, Console).
Default:
JSONAllowed values:
JSON,CEF -
stringspec.kafka.encoding.syslogWrapper
Optional syslog header wrapping for CEF output. Only applicable when codec is CEF.
- None: emit bare CEF string (default).
- RFC3164: prepend RFC 3164 (BSD syslog) header.
- RFC5424: prepend 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.passwordSASL password. Consider using
passwordSecretRefinstead to avoid storing secrets in the CR spec. -
objectspec.kafka.sasl.passwordSecretRef
-
stringspec.kafka.sasl.passwordSecretRef.name
Required value
Name of the Secret in thed8-security-events-managernamespace containing the credential. The Secret must have the keyvaluein itsdatafield.
-
-
stringspec.kafka.sasl.username
-
-
objectspec.kafka.tls
-
stringspec.kafka.tls.caBase64-encoded PEM with the CA certificate chain used to verify the destination server certificate.
-
booleanspec.kafka.tls.verifyCertificate
Default:
true -
booleanspec.kafka.tls.verifyHostname
Default:
true
-
-
stringspec.kafka.topic
Required value
-
-
objectspec.loki
-
objectspec.loki.auth
-
stringspec.loki.auth.passwordPassword for Basic authentication. Consider using
passwordSecretRefinstead to avoid storing secrets in the CR spec. -
objectspec.loki.auth.passwordSecretRef
-
stringspec.loki.auth.passwordSecretRef.name
Required value
Name of the Secret in thed8-security-events-managernamespace containing the credential. The Secret must have the keyvaluein itsdatafield.
-
-
stringspec.loki.auth.strategy
Default:
NoneAllowed values:
None,Bearer,Basic -
stringspec.loki.auth.tokenBearer token for authentication. Consider using
tokenSecretRefinstead to avoid storing secrets in the CR spec. -
objectspec.loki.auth.tokenSecretRef
-
stringspec.loki.auth.tokenSecretRef.name
Required value
Name of the Secret in thed8-security-events-managernamespace containing the credential. The Secret must have the keyvaluein itsdatafield.
-
-
stringspec.loki.auth.username
-
-
stringspec.loki.endpoint
Required value
-
objectspec.loki.tls
-
stringspec.loki.tls.caBase64-encoded PEM with the CA certificate chain used to verify the destination server certificate.
-
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” (e.g. “siem.example.com:514”)
- UDP: “host:port” (e.g. “siem.example.com:514”)
- Unix: “/path/to/socket” (e.g. “/var/run/siem.sock”)
-
objectspec.socket.encodingEncoding format for events sent to this socket destination. Default is JSON. Set codec to CEF to emit events in Common Event Format (the primary use-case for syslog-based SIEM integrations).
-
objectspec.socket.encoding.cefCEF-specific configuration fields. Only applicable when codec is set to CEF. If omitted, defaults are used: vendor=Deckhouse, product=security-events-manager, version=1.
-
stringspec.socket.encoding.cef.deviceProductDevice product field in the CEF header.
Default:
security-events-manager -
stringspec.socket.encoding.cef.deviceVendorDevice vendor field in the CEF header.
Default:
Deckhouse -
stringspec.socket.encoding.cef.deviceVersionDevice version field in the CEF header.
Default:
1
-
-
stringspec.socket.encoding.codec
Encoding codec for the destination.
- JSON: structured JSON (default, suitable for Loki, ES, Kafka, etc.).
- CEF: Common Event Format (suitable for SIEM integration via Kafka, Vector, File, Console).
Default:
JSONAllowed values:
JSON,CEF -
stringspec.socket.encoding.syslogWrapper
Optional syslog header wrapping for CEF output. Only applicable when codec is CEF.
- None: emit bare CEF string (default).
- RFC3164: prepend RFC 3164 (BSD syslog) header.
- RFC5424: prepend RFC 5424 (IETF syslog) header.
Default:
NoneAllowed values:
None,RFC3164,RFC5424
-
-
stringspec.socket.mode
Required value
Socket transport mode.
- TCP: stream-oriented, reliable, supports TLS. Recommended for production syslog.
- UDP: datagram-oriented, fire-and-forget. Max message size limited by MTU.
- Unix: local Unix domain socket (stream mode). For sidecar-based SIEM agents.
Allowed values:
TCP,UDP,Unix -
objectspec.socket.tlsTLS 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.
-
booleanspec.socket.tls.verifyCertificate
Default:
true -
booleanspec.socket.tls.verifyHostname
Default:
true
-
-
-
objectspec.splunkHEC
-
stringspec.splunkHEC.endpoint
Required value
-
objectspec.splunkHEC.tls
-
stringspec.splunkHEC.tls.caBase64-encoded PEM with the CA certificate chain used to verify the destination server certificate.
-
booleanspec.splunkHEC.tls.verifyCertificate
Default:
true -
booleanspec.splunkHEC.tls.verifyHostname
Default:
true
-
-
stringspec.splunkHEC.tokenSplunk HEC token. Consider using
tokenSecretRefinstead to avoid storing secrets in the CR spec. -
objectspec.splunkHEC.tokenSecretRef
-
stringspec.splunkHEC.tokenSecretRef.name
Required value
Name of the Secret in thed8-security-events-managernamespace containing the credential. The Secret must have the keyvaluein itsdatafield.
-
-
-
stringspec.type
Required value
Allowed values:
Loki,Elasticsearch,Kafka,SplunkHEC,File,Console,Vector,Socket -
objectspec.vector
-
objectspec.vector.encodingEncoding format for events sent to this Vector destination. Default is JSON. Set codec to CEF to emit events in Common Event Format.
-
objectspec.vector.encoding.cefCEF-specific configuration fields. Only applicable when codec is set to CEF. If omitted, defaults are used: vendor=Deckhouse, product=security-events-manager, version=1.
-
stringspec.vector.encoding.cef.deviceProductDevice product field in the CEF header.
Default:
security-events-manager -
stringspec.vector.encoding.cef.deviceVendorDevice vendor field in the CEF header.
Default:
Deckhouse -
stringspec.vector.encoding.cef.deviceVersionDevice version field in the CEF header.
Default:
1
-
-
stringspec.vector.encoding.codec
Encoding codec for the destination.
- JSON: structured JSON (default, suitable for Loki, ES, Kafka, etc.).
- CEF: Common Event Format (suitable for SIEM integration via Kafka, Vector, File, Console).
Default:
JSONAllowed values:
JSON,CEF -
stringspec.vector.encoding.syslogWrapper
Optional syslog header wrapping for CEF output. Only applicable when codec is CEF.
- None: emit bare CEF string (default).
- RFC3164: prepend RFC 3164 (BSD syslog) header.
- RFC5424: prepend RFC 5424 (IETF syslog) header.
Default:
NoneAllowed values:
None,RFC3164,RFC5424
-
-
stringspec.vector.endpoint
Required value
-
objectspec.vector.tls
-
stringspec.vector.tls.caBase64-encoded PEM with the CA certificate chain used to verify the destination server certificate.
-
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 CRs are managed by Deckhouse and cannot be created or modified by users. -
Externalplugins are served by user-deployed pods in any namespace. The user provides the endpoint URL, optional TLS/auth, arg schema, and return field schema.
-
array of objectsspec.args
Required value
Declares the input arguments (query parameters) that the plugin accepts. Each arg has a name, a required flag, 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.
-
stringspec.args.nameArgument name (used as the query parameter key).
-
booleanspec.args.requiredWhether the argument is required in ShipperEnrichRule.
Default:
true
-
-
stringspec.descriptionHuman-readable description of the plugin.
-
objectspec.endpointHTTP endpoint configuration. Required for
Externalplugins. Ignored forInternalplugins (the sidecar URL is used automatically).-
array of objectsspec.endpoint.headersOptional static HTTP headers sent with each lookup request.
-
stringspec.endpoint.headers.name
-
stringspec.endpoint.headers.value
-
-
objectspec.endpoint.tlsTLS configuration for the HTTPS endpoint (optional).
-
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. -
stringspec.endpoint.tls.clientCertSecretName of a Secret in the module namespace containing the client certificate and key for mTLS (keys
tls.crt,tls.key).
-
-
stringspec.endpoint.url
Required value
Full HTTP(S) URL of the enrichment endpoint. The controller generates:GET <url>?<args as query params>. Must start withhttp://orhttps://. Must not reference cloud metadata endpoints (e.g. 169.254.x.x) or link-local addresses to prevent SSRF.
-
-
objectspec.readinessOptional readiness probe. The controller can probe this endpoint before including the plugin in the gateway config. If unreachable, the controller sets a
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:
/healthz
-
-
objectspec.returns
Required value
Declares the fields that the plugin returns in its JSON response. Used for validation: thevaluein a referencingShipperEnrichRulemust match one of thefields[].namelisted here.-
array of objectsspec.returns.fields
Required value
-
stringspec.returns.fields.descriptionHuman-readable description of the field.
-
stringspec.returns.fields.nameResponse field name.
-
stringspec.returns.fields.typeField type.
Allowed values:
String,Int,Bool
-
-
-
stringspec.type
Required value
Plugin type.
Internal— served by the built-in enrichment-cache sidecar (no endpoint needed).External— served by a user-deployed pod (endpoint.url required).
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. -
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.
-
stringspec.file.transform.fields.typeTarget field type.
Allowed values:
String,Int,Float,Bool
-
-
objectspec.file.transform.parser
Required value
Parser configuration (defines how to unpack the original log line).
Semantics:
- parsing is best-effort (errors/mismatches do not drop events)
- first successful pattern wins (for Regex/Grok)
- 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
-
stringspec.file.transform.parser.grok.customPatterns.value
-
-
array of stringsspec.file.transform.parser.grok.patterns
Required value
Grok patterns to try in order. The first successfully matched pattern wins.
-
-
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.type
Required value
Parser type.
- JSON: parse the original log line as JSON (parse_json()).
- Regex: apply regex patterns 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.fieldsOptional field type conversions applied after parsing. Useful to enforce stable types for sinks (Elasticsearch/ClickHouse/etc.).
-
stringspec.kubernetesPods.containers.fields.nameField name in the parsed object.
-
stringspec.kubernetesPods.containers.fields.typeTarget field type.
Allowed values:
String,Int,Float,Bool
-
-
stringspec.kubernetesPods.containers.nameContainer name to apply this transformation to.
-
objectspec.kubernetesPods.containers.parser
Parser configuration (defines how to unpack the original log line).
Semantics:
- parsing is best-effort (errors/mismatches do not drop events)
- first successful pattern wins (for Regex/Grok)
- 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
-
stringspec.kubernetesPods.containers.parser.grok.customPatterns.value
-
-
array of stringsspec.kubernetesPods.containers.parser.grok.patterns
Required value
Grok patterns to try in order. The first successfully matched pattern wins.
-
-
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.type
Required value
Parser type.
- JSON: parse the original log line as JSON (parse_json()).
- Regex: apply regex patterns 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.-
array of objectsspec.kubernetesPods.labelSelector.matchExpressionsList of label selector requirements.
-
stringspec.kubernetesPods.labelSelector.matchExpressions.key
-
stringspec.kubernetesPods.labelSelector.matchExpressions.operator
Allowed values:
In,NotIn,Exists,DoesNotExist -
array of stringsspec.kubernetesPods.labelSelector.matchExpressions.values
-
-
objectspec.kubernetesPods.labelSelector.matchLabelsMap of label key to value.
-
-
objectspec.kubernetesPods.namespaceSelectorNamespace selection (subset of ClusterLoggingConfig). Only matchNames/excludeNames are supported.
-
array of stringsspec.kubernetesPods.namespaceSelector.excludeNames
-
array of stringsspec.kubernetesPods.namespaceSelector.matchNames
-
-
-
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).
-
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
-
stringspec.input.kubernetesPods.labelSelector.matchExpressions.operator
Allowed values:
In,NotIn,Exists,DoesNotExist -
array of stringsspec.input.kubernetesPods.labelSelector.matchExpressions.values
-
-
objectspec.input.kubernetesPods.labelSelector.matchLabelsMap of label key to value.
-
-
stringspec.input.kubernetesPods.namespaceNamespace to collect pod logs from (legacy exact namespace match).
-
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 empty, all namespaces are matched.
-
array of stringsspec.input.kubernetesPods.namespaceSelector.excludeNamesExplicitly excluded namespace names.
-
array of stringsspec.input.kubernetesPods.namespaceSelector.matchNamesExplicitly included namespace names.
- 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.fieldsOptional field type conversions applied after parsing.
-
stringspec.parser.fields.nameField name in the parsed object.
-
stringspec.parser.fields.typeTarget field type.
Allowed values:
String,Int,Float,Bool
-
-
stringspec.parser.nameContainer name (or
filefor file input). -
objectspec.parser.parserParser configuration.
-
objectspec.parser.parser.grok
-
array of objectsspec.parser.parser.grok.customPatterns
-
stringspec.parser.parser.grok.customPatterns.key
-
stringspec.parser.parser.grok.customPatterns.value
-
-
array of stringsspec.parser.parser.grok.patterns
Required value
-
-
objectspec.parser.parser.regex
-
array of stringsspec.parser.parser.regex.patterns
Required value
-
-
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. -
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 referencedClusterSecurityEventEnrichmentPluginCR (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
-
stringspec.produces.enrich.args.value
-
stringspec.produces.enrich.plugin
Plugin name (required for
source=Plugin). References an existingClusterSecurityEventEnrichmentPluginCR 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.
Users can create
ExternalClusterSecurityEventEnrichmentPluginCRs to register custom enrichment endpoints. -
stringspec.produces.enrich.sourceEnrichment source type.
Allowed values:
Static,Plugin -
stringspec.produces.enrich.targetDestination field path in outgoing SecurityEvent (dot-separated).
-
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 referencedClusterSecurityEventEnrichmentPluginCR. For example:serviceAccountName,name,namespace(k8s-pod-info / k8s-container-info),username(k8s-nodeuser-info).
-
stringspec.produces.eventCodeEvent code (references SecurityEventDefinition.spec.code).
-
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. -
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).Example:
pod.name: pod_namewill copy.parsed_data.pod_nameinto.pod.name.-
stringspec.produces.transform.key
-
stringspec.produces.transform.value
-
-
-
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 referencedClusterSecurityEventEnrichmentPluginCR (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
-
stringspec.producesDefaults.enrich.args.value
-
stringspec.producesDefaults.enrich.plugin
Plugin name (required for
source=Plugin). References an existingClusterSecurityEventEnrichmentPluginCR 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.
Users can create
ExternalClusterSecurityEventEnrichmentPluginCRs to register custom enrichment endpoints. -
stringspec.producesDefaults.enrich.sourceEnrichment source type.
Allowed values:
Static,Plugin -
stringspec.producesDefaults.enrich.targetDestination field path in outgoing SecurityEvent (dot-separated).
-
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 referencedClusterSecurityEventEnrichmentPluginCR. For example:serviceAccountName,name,namespace(k8s-pod-info / k8s-container-info),username(k8s-nodeuser-info).
-
-
array of objectsspec.producesDefaults.transformDefault field mapping (see
produces[].transform).-
stringspec.producesDefaults.transform.key
-
stringspec.producesDefaults.transform.value
-
-
stringspec.sourceSource identifier (used for enable/disable via ClusterSecurityEventConfig).
-
-
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
-
stringspec.input.kubernetesPods.labelSelector.matchExpressions.operator
Allowed values:
In,NotIn,Exists,DoesNotExist -
array of stringsspec.input.kubernetesPods.labelSelector.matchExpressions.values
-
-
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.fieldsOptional field type conversions applied after parsing.
-
stringspec.parser.fields.nameField name in the parsed object.
-
stringspec.parser.fields.typeTarget field type.
Allowed values:
String,Int,Float,Bool
-
-
stringspec.parser.nameContainer name.
-
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
-
stringspec.parser.parser.grok.customPatterns.value
-
-
array of stringsspec.parser.parser.grok.patterns
Required value
Grok patterns to try in order.
-
-
objectspec.parser.parser.regexRegex parser configuration.
-
array of stringsspec.parser.parser.regex.patterns
Required value
Regex patterns to try in order.
-
-
stringspec.parser.parser.type
Required value
Parser type.
- JSON: parse the original log line as JSON.
- Regex: apply regex patterns 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 whenparseris not set. -
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 referencedClusterSecurityEventEnrichmentPluginCR (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
-
stringspec.produces.enrich.args.value
-
stringspec.produces.enrich.plugin
Plugin name (required for
source=Plugin). References an existingClusterSecurityEventEnrichmentPluginCR 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.
Users can create
ExternalClusterSecurityEventEnrichmentPluginCRs to register custom enrichment endpoints. -
stringspec.produces.enrich.sourceEnrichment source type.
Allowed values:
Static,Plugin -
stringspec.produces.enrich.targetDestination field path in outgoing SecurityEvent (dot-separated).
-
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 referencedClusterSecurityEventEnrichmentPluginCR. For example:serviceAccountName,name,namespace(k8s-pod-info / k8s-container-info),username(k8s-nodeuser-info).
-
stringspec.produces.eventCodeEvent code (references SecurityEventDefinition.spec.code).
-
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. -
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).Example:
pod.name: pod_namewill copy.parsed_data.pod_nameinto.pod.name.-
stringspec.produces.transform.key
-
stringspec.produces.transform.value
-
-
-
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 referencedClusterSecurityEventEnrichmentPluginCR (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
-
stringspec.producesDefaults.enrich.args.value
-
stringspec.producesDefaults.enrich.plugin
Plugin name (required for
source=Plugin). References an existingClusterSecurityEventEnrichmentPluginCR 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.
Users can create
ExternalClusterSecurityEventEnrichmentPluginCRs to register custom enrichment endpoints. -
stringspec.producesDefaults.enrich.sourceEnrichment source type.
Allowed values:
Static,Plugin -
stringspec.producesDefaults.enrich.targetDestination field path in outgoing SecurityEvent (dot-separated).
-
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 referencedClusterSecurityEventEnrichmentPluginCR. For example:serviceAccountName,name,namespace(k8s-pod-info / k8s-container-info),username(k8s-nodeuser-info).
-
-
array of objectsspec.producesDefaults.transformDefault field mapping (see
produces[].transform).-
stringspec.producesDefaults.transform.key
-
stringspec.producesDefaults.transform.value
-
-
stringspec.sourceSource identifier (used for enable/disable via ClusterSecurityEventConfig).
-
-
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.
-
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. -
stringevent.descriptionHuman-readable event description.
-
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. -
array of objectseventMetadata.extraExtra key-value metadata.
-
stringeventMetadata.extra.key
-
stringeventMetadata.extra.value
-
-
stringeventMetadata.nodeNode name.
-
-
stringidUnique event identifier.
-
objectobjectObject the event is related to.
-
stringobject.nameObject name.
-
stringobject.namespaceObject namespace.
-
stringobject.typeObject type.
-
-
objectsourceSource identification for the event.
-
stringsource.component
Required value
Component name (e.g. kube-apiserver). -
stringsource.instanceOptional instance identifier.
-
-
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. -
stringspec.description
Required value
Human-readable description. -
stringspec.descriptionRuHuman-readable description in Russian.
-
array of objectsspec.fieldsList of fields that the event may contain.
-
stringspec.fields.nameField name.
-
booleanspec.fields.requiredWhether the field is required.
Default:
true
-
-
objectspec.metadataMetadata related to the rule
-
stringspec.severity
Required value
Event severity.Allowed values:
Low,Medium,High,Critical -
stringspec.source
Required value
Source identifier.
-
-
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.fieldsOptional field type conversions applied after parsing. Useful to enforce stable types for sinks (Elasticsearch/ClickHouse/etc.).
-
stringspec.containers.fields.nameField name in the parsed object.
-
stringspec.containers.fields.typeTarget field type.
Allowed values:
String,Int,Float,Bool
-
-
stringspec.containers.nameContainer name to apply this transformation to.
-
objectspec.containers.parser
Parser configuration (defines how to unpack the original log line).
Semantics:
- parsing is best-effort (errors/mismatches do not drop events)
- first successful pattern wins (for Regex/Grok)
- 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
-
stringspec.containers.parser.grok.customPatterns.value
-
-
array of stringsspec.containers.parser.grok.patterns
Required value
Grok patterns to try in order. The first successfully matched pattern wins.
-
-
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.type
Required value
Parser type.
- JSON: parse the original log line as JSON (parse_json()).
- Regex: apply regex patterns 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.-
array of objectsspec.selector.matchExpressionsList of label selector requirements.
-
stringspec.selector.matchExpressions.key
-
stringspec.selector.matchExpressions.operator
Allowed values:
In,NotIn,Exists,DoesNotExist -
array of stringsspec.selector.matchExpressions.values
-
-
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.
-