Go to file
Ryland Herrick 5c3f8b9941
[Security Solution][Detections] Create value list indexes if they do not exist (#71360)
* Add API functions and hooks for reading and creating the lists index

* Ensure KibanaApiError extends the Error interface

It has a name, so we should type it as such. This way, we can use it
anywhere that an Error is accepted.

* Return an Error from validationEither and thus from our useAsync hooks

Because an io-ts pipeline needs a consistent type across its left value,
and validateEither was returning a string, we were forcing all our
errors to strings. In the case of an API error, however, this meant a
loss of data, since the original error's extra fields were lost.

By returning an Error from validateEither, we can now pass through Api
errors from useAsync and thus use them directly in kibana utilities like
toasts.addError.

* WIP: implements checking for and consequent creation of lists index

This adds most of the machinery that I think we're going to need. Not
featured here:

* lists privileges (stubbed out currently)
* handling when lists is disabled
* tests

* Add frontend plugin for lists

We need this to deteremine in security_solution whether lists is enabled
or not. There's no other functionality here, just boilerplate.

* Fix cross-plugin imports/exports

Now that lists has a client plugin, the optimizer cares about code
coming into and out of it.

By default, you cannot import another plugin's common/ folder into your
own common/ nor public/ folders. This is fixed by adding 'common' to
extraPublicDirs, however: extraPublicDirs need to resolve to modules.

Rather than adding each folder from which we export modules to
extraPublicDirs, I've added common/index.ts and exporting everything
through there.

By convention, I'm adding shared_exports.ts as an index of these exported modules,
and shared_imports.ts is used to import on the other end.

For now, I've left the ad hoc _deps files so as to limit the changes
here, but we should come back through and remove them at some point. NB
that I did remove lists_common_deps as it was only used in one or two
spots.

* Fix test failing due to lack of context

This component now uses useKibana indirectly through useListsConfig.

* Lists and securitySolution require each other's bundles

Without lists being a requiredBundle of securitySolution, we cannot
import its code when the plugin is disabled. The opposite is also true,
but there's no lists "app" to break.

* Fix logic in useListsConfig

Lists needs configuration if the index explicitly does not exist. If it
is true (already exists) or null (lists is disabled or we could not read
the index), we're good.

* useList* behavior when lists plugin is disabled

When the lists plugin is disabled, our calls in useListsIndex become no-ops so that:

* useListsIndex state does not change
* useListsConfig.needsConfiguration remains false as indexExists is
never non-null

This also removes use of our `useIsMounted` hook. Since the effects
we're consuming come from useAsync hooks, state will (already) not be
updated if the component is unmounted.

* Fix warning due to dynamic creation of a styled component

* Revert "Fix warning due to dynamic creation of a styled component"

This reverts commit 7124a8fbd9.

(This was already fixed on master)

* Check user's lists index privileges when determining configuration status

If there is no lists index and the user cannot create it, we will
display a configuration message in lieu of Detections

* Adds a lists hook to read privileges (missing schemae)
* Adds security hook useListsPrivileges to perform and parse the
privileges request
* Updates useListsConfig to use useListsPrivileges hook

* Move lists hooks to their own subfolder

* Redirect to main detections page if lists needs configuration

If:

* lists are enabled, and
* lists indexes DNE, and
* user cannot manage the lists indexes

Then they will be redirected to the main detections page where they'll
be instructed to configure detections. If any of the above is false,
things work as normal.

* Lock out of detections when user cannot write to value lists

Rather than add conditional logic to all our UI components dealing with
lists, we're going the heavy-handed route for now.

* Mock lists config hook in relevant Detections page tests

* Disable Detections when Lists is enabled

This refactors useListsConfig.needsConfiguration to mean:

* lists plugin is disabled, OR
* lists indexes DNE and can't be created, OR,
* user can't write to the lists index

In any of these situations, we want to disable detections, and so we
export that as a single boolean, needsConfiguration.

* Remove unneeded complexity exception

We refactored this to work 👍

* Remove outdated TODO

We link to our documentation, which will describe the lists aspects of
configuration.
2020-07-13 17:05:31 -05:00
.ci [build] Creates Linux aarch64 archive (#69165) 2020-07-09 19:42:48 -07:00
.github New Enterprise Search Kibana plugin (#66922) 2020-07-09 13:10:31 -07:00
common/graphql
config Node options from cfg file for production (#62468) 2020-07-13 16:30:03 +01:00
data [folder structure] plugins/.data -> data 2016-07-05 14:06:16 -05:00
docs [Data Plugin] Allow server-side date formatters to accept custom timezone (#70668) 2020-07-13 14:50:49 -07:00
examples [kbn/optimizer] implement "requiredBundles" property of KP plugins (#70911) 2020-07-09 18:43:17 -07:00
licenses Migrate x-pack-kibana source to kibana 2018-04-24 13:48:10 -07:00
packages [scripts/report_failed_tests] fix report_failed_tests integration on CI (#71131) 2020-07-13 12:29:29 -07:00
rfcs [rfc][skip-ci][reporting] Rendering API RFC (#64372) 2020-06-18 09:26:05 -07:00
scripts Bump backport to 5.5.1 (#71408) 2020-07-13 13:59:13 +02:00
src [Data Plugin] Allow server-side date formatters to accept custom timezone (#70668) 2020-07-13 14:50:49 -07:00
tasks Revert #64011 and subsequent fixes (#71137) 2020-07-08 13:05:12 -07:00
test skip flaky suite (#71501) 2020-07-13 19:13:38 +01:00
typings chore(NA): upgrade to lodash@4 (#69868) 2020-07-03 01:30:13 +01:00
utilities apply prettier styles 2020-05-22 09:08:58 +02:00
vars [scripts/report_failed_tests] fix report_failed_tests integration on CI (#71131) 2020-07-13 12:29:29 -07:00
webpackShims upgrade elastic/numeral and complete migration away from numeral (#68035) 2020-06-03 10:07:11 -07:00
x-pack [Security Solution][Detections] Create value list indexes if they do not exist (#71360) 2020-07-13 17:05:31 -05:00
.backportrc.json Add master branch to backport config (#69893) 2020-06-25 14:00:45 +02:00
.browserslistrc build immutable bundles for new platform plugins (#53976) 2020-02-12 19:42:42 -07:00
.editorconfig [editorconfig] disable insert_final_newline for package.json 2019-04-18 09:44:17 -07:00
.eslintignore [build] Creates Linux aarch64 archive (#69165) 2020-07-09 19:42:48 -07:00
.eslintrc.js New Enterprise Search Kibana plugin (#66922) 2020-07-09 13:10:31 -07:00
.fossa.yml Adds FOSSA CLI configuration file (#70137) 2020-07-02 08:37:37 -07:00
.gitattributes [canvas] Color fixes + Storybook 5 (#34075) 2019-04-02 11:21:51 -05:00
.gitignore Node options from cfg file for production (#62468) 2020-07-13 16:30:03 +01:00
.i18nrc.json Move apm tutorial from apm plugin into apm_oss plugin (#66432) 2020-05-20 14:40:37 +03:00
.node-version Update Node.js to version 10.21.0 (#68059) 2020-06-05 08:31:59 +02:00
.nvmrc Update Node.js to version 10.21.0 (#68059) 2020-06-05 08:31:59 +02:00
.prettierrc Increase prettier line width to 100 (#20535) 2018-07-09 22:50:37 +02:00
.sass-lint.yml [Monitoring] SASS modularization (#68726) 2020-06-11 13:36:47 -07:00
.telemetryrc.json [Telemetry] Collector Schema (#64942) 2020-06-27 02:52:26 +03:00
.yarnrc [kbn-pm] Use yarn workspaces for dependencies (#24095) 2018-11-12 12:38:11 -06:00
api-documenter.json Normalize EOL symbol in platform docs (#56021) 2020-01-27 18:42:45 +01:00
CONTRIBUTING.md Improvements to our developer guide (#67764) 2020-07-13 10:47:01 -04:00
FAQ.md propose language changes (#10709) 2017-03-05 12:10:32 -05:00
github_checks_reporter.json implementing github checks - second attempt (#35757) 2019-05-01 16:02:33 -05:00
Gruntfile.js apply prettier styles 2020-05-22 09:08:58 +02:00
Jenkinsfile Revert #64011 and subsequent fixes (#71137) 2020-07-08 13:05:12 -07:00
kibana.d.ts Move src/legacy/server/index_patterns to data plugin (server) (Remove step) (#61618) 2020-04-02 12:53:14 +03:00
LICENSE.txt Migrate x-pack-kibana source to kibana 2018-04-24 13:48:10 -07:00
NOTICE.txt [SIEM][Detection Rules] Add 7.9 rules (#71332) 2020-07-13 14:44:14 -06:00
package.json Revert "Bump lodash package version (#71392)" 2020-07-13 13:17:42 -07:00
preinstall_check.js
README.md chore: point issue links to choose (#49616) 2019-10-29 15:54:27 +01:00
renovate.json5 chore(NA): upgrade to lodash@4 (#69868) 2020-07-03 01:30:13 +01:00
STYLEGUIDE.md Remove Kibana a11y guide in favor of EUI (#57021) 2020-02-07 10:55:29 -05:00
tsconfig.browser.json
tsconfig.json Bump jest related packages (#58095) 2020-06-20 21:05:09 +02:00
tsconfig.types.json [data.search.aggs]: Add AggConfig.toSerializedFieldFormat (#69114) 2020-06-24 07:52:21 -06:00
TYPESCRIPT.md Update deprecated React.SFC and React.StatelessComponent types (#50852) 2019-11-21 20:53:54 +01:00
yarn.lock Revert "Bump lodash package version (#71392)" 2020-07-13 13:17:42 -07:00

Kibana

Kibana is your window into the Elastic Stack. Specifically, it's a browser-based analytics and search dashboard for Elasticsearch.

Getting Started

If you just want to try Kibana out, check out the Elastic Stack Getting Started Page to give it a whirl.

If you're interested in diving a bit deeper and getting a taste of Kibana's capabilities, head over to the Kibana Getting Started Page.

Using a Kibana Release

If you want to use a Kibana release in production, give it a test run, or just play around:

Building and Running Kibana, and/or Contributing Code

You might want to build Kibana locally to contribute some code, test out the latest features, or try out an open PR:

Documentation

Visit Elastic.co for the full Kibana documentation.

For information about building the documentation, see the README in elastic/docs.

Version Compatibility with Elasticsearch

Ideally, you should be running Elasticsearch and Kibana with matching version numbers. If your Elasticsearch has an older version number or a newer major number than Kibana, then Kibana will fail to run. If Elasticsearch has a newer minor or patch number than Kibana, then the Kibana Server will log a warning.

Note: The version numbers below are only examples, meant to illustrate the relationships between different types of version numbers.

Situation Example Kibana version Example ES version Outcome
Versions are the same. 5.1.2 5.1.2 💚 OK
ES patch number is newer. 5.1.2 5.1.5 ⚠️ Logged warning
ES minor number is newer. 5.1.2 5.5.0 ⚠️ Logged warning
ES major number is newer. 5.1.2 6.0.0 🚫 Fatal error
ES patch number is older. 5.1.2 5.1.0 ⚠️ Logged warning
ES minor number is older. 5.1.2 5.0.0 🚫 Fatal error
ES major number is older. 5.1.2 4.0.0 🚫 Fatal error

Questions? Problems? Suggestions?

  • If you've found a bug or want to request a feature, please create a GitHub Issue. Please check to make sure someone else hasn't already created an issue for the same topic.
  • Need help using Kibana? Ask away on our Kibana Discuss Forum and a fellow community member or Elastic engineer will be glad to help you out.