[role="xpack"] [[using-kibana-with-security]] == Configuring Security in Kibana ++++ Configuring Security ++++ {kib} users have to log in when {security} is enabled on your cluster. You configure {security} roles for your {kib} users to control what data those users can access. Most requests made through {kib} to {es} are authenticated by using the credentials of the logged-in user. There are, however, a few internal requests that the {kib} server needs to make to the {es} cluster. For this reason, you must configure credentials for the {kib} server to use for those requests. With {security} enabled, if you load a {kib} dashboard that accesses data in an index that you are not authorized to view, you get an error that indicates the index does not exist. {security} does not currently provide a way to control which users can load which dashboards. To use {kib} with {security}: . {ref}/configuring-security.html[Configure security in {es}]. . Configure {kib} to use the appropriate built-in user. + -- Update the following settings in the `kibana.yml` configuration file: [source,yaml] ----------------------------------------------- elasticsearch.username: "kibana" elasticsearch.password: "kibanapassword" ----------------------------------------------- The {kib} server submits requests as this user to access the cluster monitoring APIs and the `.kibana` index. The server does _not_ need access to user indices. The password for the built-in `kibana` user is typically set as part of the {security} configuration process on {es}. For more information, see {stack-ov}/built-in-users.html[Built-in users]. -- . Set the `xpack.security.encryptionKey` property in the `kibana.yml` configuration file. You can use any text string that is 32 characters or longer as the encryption key. + -- [source,yaml] -------------------------------------------------------------------------------- xpack.security.encryptionKey: "something_at_least_32_characters" -------------------------------------------------------------------------------- For more information, see <>. -- . Optional: Change the default session duration. By default, sessions stay active until the browser is closed. To change the duration, set the `xpack.security.sessionTimeout` property in the `kibana.yml` configuration file. The timeout is specified in milliseconds. For example, set the timeout to 600000 to expire sessions after 10 minutes: + -- [source,yaml] -------------------------------------------------------------------------------- xpack.security.sessionTimeout: 600000 -------------------------------------------------------------------------------- -- . Optional: <>. . Restart {kib}. [[kibana-roles]] . Choose an authentication mechanism and grant users the privileges they need to use {kib}. + -- For more information on Basic Authentication and additional methods of authenticating {kib} users, see <>. You can manage privileges on the *Management / Security / Roles* page in {kib}. If you're using the native realm with Basic Authentication, you can assign roles using the *Management / Security / Users* page in {kib} or the {ref}/security-api-users.html[User Management API]. For example, the following creates a user named `jacknich` and assigns it the `kibana_user` role: [source,js] -------------------------------------------------------------------------------- POST /_xpack/security/user/jacknich { "password" : "t0pS3cr3t", "roles" : [ "kibana_user" ] } -------------------------------------------------------------------------------- // CONSOLE -- . Grant users access to the indices that they will be working with in {kib}. + -- TIP: You can define as many different roles for your {kib} users as you need. For example, create roles that have `read` and `view_index_metadata` privileges on specific index patterns. For more information, see {xpack-ref}/authorization.html[Configuring Role-based Access Control]. -- . Verify that you can log in as a user. If you are running {kib} locally, go to `https://localhost:5601` and enter the credentials for a user you've assigned a {kib} user role. For example, you could log in as the `jacknich` user created above. + -- NOTE: This must be a user who has been assigned the `kibana_user` role. {kib} server credentials should only be used internally by the {kib} server. -- For more information about the settings in these steps, see <>. include::authentication/index.asciidoc[] include::securing-communications/index.asciidoc[] include::audit-logging.asciidoc[] include::{kib-repo-dir}/settings/security-settings.asciidoc[]