Security settings in Kibana
You do not need to configure any additional settings to use the security features in Kibana. They are enabled by default.
Authentication security settings
You configure authentication settings in the xpack.security.authc namespace.
For example:
xpack.security.authc:
providers:
basic.basic1:
order: 0
...
saml.saml1:
order: 1
...
saml.saml2:
order: 2
...
pki.realm3:
order: 3
...
...
- Specifies the type of authentication provider (for example,
basic,token,saml,oidc,kerberos,pki) and the provider name. This setting is mandatory. - Specifies the order of the provider in the authentication chain and on the Login Selector UI. This setting is mandatory.
- Specifies the settings for the SAML authentication provider with a
saml1name. - Specifies the settings for the SAML authentication provider with a
saml2name.
Valid settings for all authentication providers
The valid settings in the xpack.security.authc.providers namespace vary depending on the authentication provider type. For more information, refer to Authentication.
- xpack.security.authc.providers.<provider-type>.<provider-name>.enabled
-
Supported on:
Determines if the authentication provider should be enabled. By default, Kibana enables the provider as soon as you configure any of its properties.
Datatype:
bool - xpack.security.authc.providers.<provider-type>.<provider-name>.order
-
Supported on:
Order of the provider in the authentication chain and on the Login Selector UI.
Datatype:
int - xpack.security.authc.providers.<provider-type>.<provider-name>.description
-
Supported on:
Custom description of the provider entry displayed on the Login Selector UI.
Datatype:
string - xpack.security.authc.providers.<provider-type>.<provider-name>.hint
-
Supported on:
Custom hint for the provider entry displayed on the Login Selector UI.
Datatype:
string - xpack.security.authc.providers.<provider-type>.<provider-name>.icon
-
Supported on:
Custom icon for the provider entry displayed on the Login Selector UI.
Datatype:
string - xpack.security.authc.providers.<provider-type>.<provider-name>.origin
-
Supported on:
Specifies the origin(s) where the provider will appear to users in the Login Selector UI. Each origin must be a valid URI only containing an origin. By default, providers are not restricted to specific origins.
Datatype:
stringFor example:
xpack.security.authc: providers: basic.basic1: origin: [http://localhost:5601, http://127.0.0.1:5601] ... saml.saml1: origin: https://elastic.co ... - xpack.security.authc.providers.<provider-type>.<provider-name>.showInSelector
-
Supported on:
Flag that indicates if the provider should have an entry on the Login Selector UI. Setting this to
falsedoesn't remove the provider from the authentication chain.Datatype:
boolNoteYou are unable to set this setting to
falseforbasicandtokenauthentication providers. - xpack.security.authc.providers.<provider-type>.<provider-name>.accessAgreement.message
-
Supported on:
Access agreement text in Markdown format. For more information, refer to Access agreement.
Datatype:
string - xpack.security.authc.providers.<provider-type>.<provider-name>.session.idleTimeout
-
Supported on:
Ensures that user sessions will expire after a period of inactivity. Setting this to
0will prevent sessions from expiring because of inactivity. By default, this setting is equal toxpack.security.session.idleTimeout.Datatype:
stringNoteUse a string of
<count>[ms\|s\|m\|h\|d\|w\|M\|Y](e.g. 20m, 24h, 7d, 1w). - xpack.security.authc.providers.<provider-type>.<provider-name>.session.lifespan
-
Supported on:
Ensures that user sessions will expire after the defined time period. This behavior is also known as an "absolute timeout". If this is set to
0, user sessions could stay active indefinitely. By default, this setting is equal toxpack.security.session.lifespan.Datatype:
stringNoteUse a string of
<count>[ms\|s\|m\|h\|d\|w\|M\|Y](e.g. 20m, 24h, 7d, 1w).
SAML authentication provider settings
In addition to the settings that are valid for all providers, you can specify the following settings:
- xpack.security.authc.providers.saml.<provider-name>.realm
-
Supported on:
SAML realm in Elasticsearch that provider should use.
Datatype:
string - xpack.security.authc.providers.saml.<provider-name>.maxRedirectURLSize
-
Supported on:
Specifies the maximum size of the URL that Kibana is allowed to store during the SAML handshake.
Datatype:
string - xpack.security.authc.providers.saml.<provider-name>.useRelayStateDeepLink
-
Supported on:
Determines if the provider should treat the
RelayStateparameter as a deep link in Kibana during Identity Provider initiated log in. By default, this setting is set tofalse. The link specified inRelayStateshould be a relative, URL-encoded Kibana URL. For example, the/app/dashboards#/listlink inRelayStateparameter would look like this:RelayState=%2Fapp%2Fdashboards%23%2Flist.Datatype:
boolDefault:
false - xpack.security.authc.saml.maxRedirectURLSize
-
Supported on:
Specifies the maximum size of the URL that Kibana is allowed to store during the SAML handshake.
Datatype:
string
Discontinued SAML settings
The following settings are available in Elastic Cloud for all supported versions before 8.0:
- xpack.security.authProviders
-
Supported on:
Set to
samlto instruct Kibana to use SAML SSO as the authentication method.Datatype:
string - xpack.security.public.protocol
-
Supported on:
Set to HTTP or HTTPS. To access Kibana, HTTPS protocol is recommended.
Datatype:
enumOptions:
-
http -
https
-
- xpack.security.public.hostname
-
Supported on:
Set to a fully qualified hostname to connect your users to the proxy server.
Datatype:
string - xpack.security.public.port
-
Supported on:
The port number that connects your users to the proxy server (for example, 80 for HTTP or 443 for HTTPS).
Datatype:
int - xpack.security.authc.saml.useRelayStateDeepLink
-
Supported on:
Specifies if Kibana should treat the
RelayStateparameter as a deep link when Identity Provider Initiated login flow is used.Datatype:
bool - server.xsrf.whitelist
-
Supported on:
Explicitly allows the SAML authentication URL within Kibana, so that the Kibana server doesn't reject external authentication messages that originate from your Identity Provider. This setting is renamed to
server.xsrf.allowlistin version 8.0.0.Datatype:
string
OpenID Connect authentication provider settings
In addition to the settings that are valid for all providers, you can specify the following settings:
- xpack.security.authc.providers.oidc.<provider-name>.realm
-
Supported on:
OpenID Connect realm in Elasticsearch that the provider should use.
Datatype:
string
Anonymous authentication provider settings
In addition to the settings that are valid for all providers, you can specify the following settings:
For more information, refer to Anonymous authentication.
You can configure only one anonymous provider per Kibana instance.
- xpack.security.authc.providers.anonymous.<provider-name>.credentials
-
Supported on:
Credentials that Kibana should use internally to authenticate anonymous requests to Elasticsearch.
Datatype:
stringFor example:
xpack.security.authc.providers.anonymous.anonymous1: credentials: username: "anonymous_service_account" password: "anonymous_service_account_password"
HTTP authentication settings
There is a very limited set of cases when you'd want to change these settings. For more information, refer to HTTP authentication.
- xpack.security.authc.http.enabled
-
Supported on:
Determines if HTTP authentication should be enabled. By default, this setting is set to
true.Datatype:
boolDefault:
true - xpack.security.authc.http.autoSchemesEnabled
-
Supported on:
Determines if HTTP authentication schemes used by the enabled authentication providers should be automatically supported during HTTP authentication. By default, this setting is set to
true.Datatype:
boolDefault:
true - xpack.security.authc.http.schemes[]
-
Supported on:
List of HTTP authentication schemes that Kibana HTTP authentication should support. By default, this setting is set to
['apikey', 'bearer']to support HTTP authentication with theApiKeyandBearerschemes.Datatype:
stringDefault:
['apikey', 'bearer']
Login user interface settings
- xpack.security.loginAssistanceMessage
-
Supported on:
Adds a message to the login UI. Useful for displaying information about maintenance windows, links to corporate sign up pages, and so on.
Datatype:
string - xpack.security.loginHelp
-
Supported on:
Adds a message accessible at the login UI with additional help information for the login process.
Datatype:
string - xpack.security.authc.selector.enabled
-
Supported on:
Determines if the login selector UI should be enabled. By default, this setting is set to
trueif more than one authentication provider is configured.Datatype:
bool
Configure a default access agreement
- xpack.security.accessAgreement.message
-
Supported on:
This setting specifies the access agreement text in Markdown format that will be used as the default access agreement for all providers that do not specify a value for
xpack.security.authc.providers.<provider-type>.<provider-name>.accessAgreement.message. For more information, refer to Access agreement.Datatype:
string
Session and cookie security settings
-
Supported on:
Sets the name of the cookie used for the session. The default value is
"sid".Datatype:
stringDefault:
sid - xpack.security.encryptionKey
-
Supported on:
An arbitrary string of 32 characters or more that is used to encrypt session information. Do not expose this key to users of Kibana. By default, a value is automatically generated in memory. If you use that default behavior, all sessions are invalidated when Kibana restarts. In addition, high-availability deployments of Kibana will behave unexpectedly if this setting isn't the same for all instances of Kibana.
Datatype:
string -
Supported on:
Sets the
secureflag of the session cookie. The default value isfalse. It is automatically set totrueifserver.ssl.enabledis set totrue. Set this totrueif SSL is configured outside of Kibana (for example, you are routing requests through a load balancer or proxy).Datatype:
boolDefault:
false -
Supported on:
Sets the
SameSiteattribute of the session cookie. This allows you to declare whether your cookie should be restricted to a first-party or same-site context. Valid values areStrict,Lax,None. This is not set by default, which modern browsers will treat asLax. If you use Kibana embedded in an iframe in modern browsers, you might need to set it toNone. Setting this value toNonerequires cookies to be sent over a secure connection by settingxpack.security.secureCookies:true.Datatype:
enumOptions:
-
Strict -
Lax -
None
-
- xpack.security.session.idleTimeout
-
Supported on:
Ensures that user sessions will expire after a period of inactivity. This and
xpack.security.session.lifespanare both highly recommended. You can also specify this setting for every provider separately. If this is set to0, then sessions will never expire due to inactivity. By default, this value is 3 days.Datatype:
stringDefault:
3dNoteUse a string of
<count>[ms\|s\|m\|h\|d\|w\|M\|Y](e.g. 20m, 24h, 7d, 1w). - xpack.security.session.lifespan
-
Supported on:
Ensures that user sessions will expire after the defined time period. This behavior is also known as an "absolute timeout". If this is set to
0, user sessions could stay active indefinitely. This andxpack.security.session.idleTimeoutare both highly recommended. You can also specify this setting for every provider separately. By default, this value is 30 days for on-prem installations, and 24 hours for Elastic Cloud installations.Datatype:
stringDefault:
30d (on-prem), 24h (Elastic Cloud)TipUse a string of
<count>[ms\|s\|m\|h\|d\|w\|M\|Y](e.g. 20m, 24h, 7d, 1w). - xpack.security.session.cleanupInterval
-
Supported on:
Sets the interval at which Kibana tries to remove expired and invalid sessions from the session index. By default, this value is 1 hour. The minimum value is 10 seconds.
Datatype:
stringDefault:
1hTipUse a string of
<count>[ms\|s\|m\|h\|d\|w\|M\|Y](e.g. 20m, 24h, 7d, 1w). - xpack.security.session.concurrentSessions.maxSessions
-
Supported on:
Set the maximum number of sessions each user is allowed to have active at any given time. By default, no limit is applied. If set, the value of this option should be an integer between
1and1000. When the limit is exceeded, the oldest session is automatically invalidated. It is available in Elastic Cloud 8.7.0 and later versions.Datatype:
int
Encrypted saved objects settings
These settings control the encryption of saved objects with sensitive data. For more details, refer to Secure saved objects.
- xpack.encryptedSavedObjects.encryptionKey
-
Supported on:
An arbitrary string of at least 32 characters that is used to encrypt sensitive properties of saved objects before they're stored in Elasticsearch. If not set, Kibana will generate a random key on startup, but certain features won't be available until you set the encryption key explicitly.
Datatype:
string - xpack.encryptedSavedObjects.keyRotation.decryptionOnlyKeys
-
Supported on:
An optional list of previously used encryption keys. Like
xpack.encryptedSavedObjects.encryptionKey, these must be at least 32 characters in length. Kibana doesn't use these keys for encryption, but may still require them to decrypt some existing saved objects. Use this setting if you wish to change your encryption key, but don't want to lose access to saved objects that were previously encrypted with a different key.Datatype:
string
Audit logging settings
You can enable audit logging to support compliance, accountability, and security. When enabled, Kibana will capture:
- Who performed an action
- What action was performed
- When the action occurred
For more details and a reference of audit events, refer to Audit logs.
- xpack.security.audit.enabled
-
Supported on:
Set to
trueto enable audit logging. Default:falseDatatype:
boolDefault:
falseFor example:
xpack.security.audit.enabled: true xpack.security.audit.appender: type: rolling-file fileName: ./logs/audit.log policy: type: time-interval interval: 24h strategy: type: numeric max: 10 layout: type: json- This appender is the default and will be used if no
appender.*config options are specified. - Rotates log files every 24 hours.
- Keeps maximum of 10 log files before deleting older ones.
- This appender is the default and will be used if no
- xpack.security.audit.appender
-
Supported on:
Optional. Specifies where audit logs should be written to and how they should be formatted. If no appender is specified, a default appender will be used (see above).
Datatype:
string - xpack.security.audit.appender.type
-
Supported on:
Required. Specifies where audit logs should be written to. Allowed values are
console,file, orrolling-file.Refer to file appender and rolling file appender for appender specific settings.
Datatype:
enumOptions:
-
console -
file -
rolling-file
-
- xpack.security.audit.appender.layout.type
-
Supported on:
Required. Specifies how audit logs should be formatted. Allowed values are
jsonorpattern.Refer to pattern layout for layout specific settings.
Datatype:
enumOptions:
-
json -
pattern
TipWe recommend using
jsonformat to allow ingesting Kibana audit logs into Elasticsearch using Filebeat. -
File appender
The file appender writes to a file and can be configured using the following settings:
- xpack.security.audit.appender.fileName
-
Supported on:
Required. Full file path the log file should be written to.
Datatype:
string
Rolling file appender
The rolling-file appender writes to a file and rotates it using a rolling strategy, when a particular policy is triggered:
- xpack.security.audit.appender.fileName
-
Supported on:
Required. Full file path the log file should be written to.
Datatype:
string - xpack.security.audit.appender.policy.type
-
Supported on:
Specifies when a rollover should occur. Allowed values are
size-limitandtime-interval. Default:time-interval.Refer to size limit policy and time interval policy for policy specific settings.
Datatype:
enumDefault:
time-intervalOptions:
-
size-limit -
time-interval
-
- xpack.security.audit.appender.strategy.type
-
Supported on:
Specifies how the rollover should occur. Only allowed value is currently
numeric. Default:numericRefer to numeric strategy for strategy specific settings.
Datatype:
enumDefault:
numericOptions:
-
numeric
-
Size limit triggering policy
The size-limit triggering policy will rotate the file when it reaches a certain size:
- xpack.security.audit.appender.policy.size
-
Supported on:
Maximum size the log file should reach before a rollover should be performed. Default:
100mbDatatype:
stringDefault:
100mb
Time interval triggering policy
The time-interval triggering policy will rotate the file every given interval of time:
- xpack.security.audit.appender.policy.interval
-
Supported on:
How often a rollover should occur. Default:
24hDatatype:
stringDefault:
24h - xpack.security.audit.appender.policy.modulate
-
Supported on:
Whether the interval should be adjusted to cause the next rollover to occur on the interval boundary. Default:
trueDatatype:
boolDefault:
true
Numeric rolling strategy
The numeric rolling strategy will suffix the log file with a given pattern when rolling over, and will retain a fixed number of rolled files:
- xpack.security.audit.appender.strategy.pattern
-
Supported on:
Suffix to append to the file name when rolling over. Must include
%i. Default:-%iDatatype:
stringDefault:
-%i - xpack.security.audit.appender.strategy.max
-
Supported on:
Maximum number of files to keep. Once this number is reached, oldest files will be deleted. Default:
7Datatype:
intDefault:
7
Pattern layout
The pattern layout outputs a string, formatted using a pattern with special placeholders, which will be replaced with data from the actual log message:
- xpack.security.audit.appender.layout.pattern
-
Supported on:
Optional. Specifies how the log line should be formatted. Default:
[%date][%level][%logger]%meta %messageDatatype:
stringDefault:
[%date][%level][%logger]%meta %message - xpack.security.audit.appender.layout.highlight
-
Supported on:
Optional. Set to
trueto enable highlighting log messages with colors.Datatype:
bool
Ignore filters
- xpack.security.audit.ignore_filters[]
-
Supported on:
List of filters that determine which events should be excluded from the audit log. An event will get filtered out if at least one of the provided filters matches.
Datatype:
stringFor example:
xpack.security.audit.ignore_filters: - actions: [http_request] - categories: [database] types: [creation, change, deletion] - spaces: [default] - users: [elastic, kibana_system]- Filters out HTTP request events
- Filters out any data write events
- Filters out events from the
defaultspace - Filters out events from the
elasticandkibana_systemusers
- xpack.security.audit.ignore_filters[].actions[]
-
Supported on:
List of values matched against the
event.actionfield of an audit event. Refer to Audit logs for a list of available events.Datatype:
string - xpack.security.audit.ignore_filters[].categories[]
-
Supported on:
List of values matched against the
event.categoryfield of an audit event. Refer to ECS categorization field for allowed values.Datatype:
string - xpack.security.audit.ignore_filters[].outcomes[]
-
Supported on:
List of values matched against the
event.outcomefield of an audit event. Refer to ECS outcome field for allowed values.Datatype:
string - xpack.security.audit.ignore_filters[].spaces[]
-
Supported on:
List of values matched against the
kibana.space_idfield of an audit event. This represents the space id in which the event took place.Datatype:
string - xpack.security.audit.ignore_filters[].types[]
-
Supported on:
List of values matched against the
event.typefield of an audit event. Refer to ECS type field for allowed values.Datatype:
string - xpack.security.audit.ignore_filters[].users[]
-
Supported on:
List of values matched against the
user.namefield of an audit event. This represents theusernameassociated with the audit event.Datatype:
string