kibana/config
James Gowdy 6a6df9d72f
[ML] Module filtering (#168721)
Adds a new `tags` property to our ML Modules which contains an array of
strings to used to filter the modules returned when calling
`/internal/ml/modules/get_module` or `/internal/ml/modules/recognize`

Adds a new kibana config setting `xpack.ml.compatibleModuleType` which
will enforce a module filter.
This setting supports the values `security`, `observability` or `search`
and will be used by the serverless projects to ensure only modules
relevant to the current project are discoverable.

When matching against the `xpack.ml.compatibleModuleType` setting,
modules with no tags will be returned along with modules which match the
`compatibleModuleType` value.

The endpoints `/internal/ml/modules/get_module` and
`/internal/ml/modules/recognize` can also take a `filter` query
parameter in the form of a comma separated list of values. If any of
these filter values match a module's tags, the module will be returned.
Modules with no tags will not be matched when using the `filter`
parameter.

This PR also updates the security plugin to apply a `security` filter
when retrieving modules and running recognize. This will improve
performance, especially for recognize which runs the queries from every
module on the supplied index pattern.

Examples

**Running the Security serverless project.**
Request:
`/internal/ml/modules/get_module` 
Response:
All modules containing `tags: ["security"]`
Plus all modules with no `tags` or `tags: []`

Request:
`/internal/ml/modules/get_module?filter=observability` 
Response:
An empty list

**Running stateful es**
Request:
`/internal/ml/modules/get_module` 
Response:
All modules

Request:
`/internal/ml/modules/get_module?filter=security` 
Response:
Only modules containing `tags: ["security"]` 

Request:
`/internal/ml/modules/get_module?filter=security,observability` 
Response:
Modules containing `tags: ["security"]`  and `tags: ["observability"]`

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
2023-10-26 16:55:48 +01:00
..
kibana.yml [Unified Search] Move autocomplete logic to unified search plugin (#129977) 2022-04-22 11:02:56 +05:00
node.options [node] Enable openssl legacy provider (#163190) 2023-08-30 11:51:10 -07:00
README.md Fix config stacking order (#158827) 2023-06-05 15:15:07 +02:00
serverless.es.yml [ML] Module filtering (#168721) 2023-10-26 16:55:48 +01:00
serverless.oblt.yml [ML] Module filtering (#168721) 2023-10-26 16:55:48 +01:00
serverless.security.yml [ML] Module filtering (#168721) 2023-10-26 16:55:48 +01:00
serverless.yml [Serverless][Index Management] Hide Storage size column in Data streams (#169280) 2023-10-23 18:05:23 +01:00

as work on serverless picks up we will add config values to these files that define how Kibana will run in "serverless" modes. To start Kibana locally with this configuration, pass --serverless={mode} or run yarn serverless-{mode}

valid modes are currently: es, oblt, and security

configuration is applied in the following order, later values override

  1. serverless.yml (serverless configs go first)
  2. serverless.{mode}.yml (serverless configs go first)
  3. base config, in this preference order:
  • my-config.yml(s) (set by --config)
  • env-config.yml (described by env.KBN_CONFIG_PATHS)
  • kibana.yml (default @ env.KBN_PATH_CONF/kibana.yml)
  1. kibana.dev.yml
  2. serverless.dev.yml
  3. serverless.{mode}.dev.yml