|
@@ -0,0 +1,167 @@
|
|
|
+[[security-minimal-setup]]
|
|
|
+=== Set up minimal security for {es}
|
|
|
+++++
|
|
|
+<titleabbrev>Set up minimal security</titleabbrev>
|
|
|
+++++
|
|
|
+
|
|
|
+IMPORTANT: You only need to complete the following steps if you're running an
|
|
|
+existing, unsecured cluster and want to enable the {es} {security-features}.
|
|
|
+
|
|
|
+In {es} 8.0 and later, security is
|
|
|
+<<configuring-stack-security,enabled automatically>> when you start {es} for the
|
|
|
+first time.
|
|
|
+
|
|
|
+If you're running an existing {es} cluster where security is disabled, you can
|
|
|
+manually enable the {es} {security-features} and then create passwords for
|
|
|
+built-in users. You can add more users later, but using the built-in users
|
|
|
+simplifies the process of enabling security for your cluster.
|
|
|
+
|
|
|
+include::../security-manual-configuration.asciidoc[tag=minimal-security-note]
|
|
|
+
|
|
|
+==== Enable {es} security features
|
|
|
+
|
|
|
+Enabling the {es} security features provides basic authentication so
|
|
|
+that you can run a local cluster with username and password authentication.
|
|
|
+
|
|
|
+. On *every* node in your cluster, stop both {kib} and {es} if they are running.
|
|
|
+
|
|
|
+. On *every* node in your cluster, add the `xpack.security.enabled` setting to
|
|
|
+the `$ES_PATH_CONF/elasticsearch.yml` file and set the value to `true`:
|
|
|
++
|
|
|
+[source,yaml]
|
|
|
+----
|
|
|
+xpack.security.enabled: true
|
|
|
+----
|
|
|
++
|
|
|
+NOTE: The `$ES_PATH_CONF` variable is the path for the {es}
|
|
|
+configuration files. If you installed {es} using archive distributions
|
|
|
+(`zip` or `tar.gz`), the variable defaults to `$ES_HOME/config`. If you used
|
|
|
+package distributions (Debian or RPM), the variable defaults to `/etc/elasticsearch`.
|
|
|
+
|
|
|
+. If your cluster has a single node, add the `discovery.type` setting in the
|
|
|
+`$ES_PATH_CONF/elasticsearch.yml` file and set the value to `single-node`. This
|
|
|
+setting ensures that your node does not inadvertently connect to other clusters
|
|
|
+that might be running on your network.
|
|
|
++
|
|
|
+[source,yaml]
|
|
|
+----
|
|
|
+discovery.type: single-node
|
|
|
+----
|
|
|
+
|
|
|
+[[security-create-builtin-users]]
|
|
|
+==== Set passwords for built-in users
|
|
|
+
|
|
|
+To communicate with the cluster, you must configure a username for the built-in
|
|
|
+users. Unless you enable anonymous access, all requests that don’t include a
|
|
|
+username and password are rejected.
|
|
|
+
|
|
|
+NOTE: You only need to set passwords for the `elastic` and `kibana_system` users
|
|
|
+when enabling minimal or basic security.
|
|
|
+
|
|
|
+. On *every* node in your cluster, start {es}. For example, if you installed
|
|
|
+{es} with a `.tar.gz` package, run the following command from the `ES_HOME`
|
|
|
+directory:
|
|
|
++
|
|
|
+[source,shell]
|
|
|
+----
|
|
|
+./bin/elasticsearch
|
|
|
+----
|
|
|
+
|
|
|
+. In another terminal window, set the passwords for the built-in users by
|
|
|
+running the <<reset-password,`elasticsearch-reset-password`>> utility.
|
|
|
++
|
|
|
+IMPORTANT: You can run the `elasticsearch-reset-password` utility
|
|
|
+against any node in your cluster. However, you should only run this utility *one
|
|
|
+time* for the entire cluster.
|
|
|
++
|
|
|
+Using the `auto` parameter
|
|
|
+outputs randomly-generated passwords to the console that you can change later
|
|
|
+if necessary:
|
|
|
++
|
|
|
+[source,shell]
|
|
|
+----
|
|
|
+./bin/elasticsearch-reset-password auto
|
|
|
+----
|
|
|
++
|
|
|
+If you want to use your own passwords, run the command with the
|
|
|
+`interactive` parameter instead of the `auto` parameter. Using this mode
|
|
|
+steps you through password configuration for all of the built-in users.
|
|
|
++
|
|
|
+[source,shell]
|
|
|
+----
|
|
|
+./bin/elasticsearch-reset-password interactive
|
|
|
+----
|
|
|
+
|
|
|
+. Save the generated passwords. You'll need them to add the built-in user to
|
|
|
+{kib}.
|
|
|
+
|
|
|
+*Next*: <<add-built-in-users,Configure {kib} to connect to {es} with a password>>
|
|
|
+
|
|
|
+[[add-built-in-users]]
|
|
|
+==== Configure {kib} to connect to {es} with a password
|
|
|
+
|
|
|
+When the {es} security features are enabled, users must log in to {kib} with a
|
|
|
+valid username and password.
|
|
|
+
|
|
|
+You'll configure {kib} to use the built-in `kibana_system` user and the password that
|
|
|
+you created earlier. {kib} performs some background tasks that require use of the
|
|
|
+`kibana_system` user.
|
|
|
+
|
|
|
+This account is not meant for individual users and does not have permission to log in
|
|
|
+to {kib} from a browser. Instead, you'll log in to {kib} as the `elastic` superuser.
|
|
|
+
|
|
|
+. Add the `elasticsearch.username` setting to the `KIB_PATH_CONF/kibana.yml`
|
|
|
+file and set the value to the `kibana_system` user:
|
|
|
++
|
|
|
+[source,yaml]
|
|
|
+----
|
|
|
+elasticsearch.username: "kibana_system"
|
|
|
+----
|
|
|
++
|
|
|
+NOTE: The `KIB_PATH_CONF` variable is the path for the {kib}
|
|
|
+configuration files. If you installed {kib} using archive distributions
|
|
|
+(`zip` or `tar.gz`), the variable defaults to `KIB_HOME/config`. If you used
|
|
|
+package distributions (Debian or RPM), the variable defaults to `/etc/kibana`.
|
|
|
+
|
|
|
+. From the directory where you installed {kib}, run the following commands
|
|
|
+to create the {kib} keystore and add the secure settings:
|
|
|
+
|
|
|
+ a. Create the {kib} keystore:
|
|
|
++
|
|
|
+[source,shell]
|
|
|
+----
|
|
|
+./bin/kibana-keystore create
|
|
|
+----
|
|
|
+
|
|
|
+ b. Add the password for the `kibana_system` user to the {kib} keystore:
|
|
|
++
|
|
|
+[source,shell]
|
|
|
+----
|
|
|
+./bin/kibana-keystore add elasticsearch.password
|
|
|
+----
|
|
|
++
|
|
|
+When prompted, enter the password for the `kibana_system` user.
|
|
|
+
|
|
|
+. Restart {kib}. For example, if you installed {kib} with a `.tar.gz` package, run the following command from the {kib} directory:
|
|
|
++
|
|
|
+[source,shell]
|
|
|
+----
|
|
|
+./bin/kibana
|
|
|
+----
|
|
|
+
|
|
|
+. Log in to {kib} as the `elastic` user. Use this superuser account to
|
|
|
+{kibana-ref}/tutorial-secure-access-to-kibana.html[manage spaces, create new users, and assign roles]. If you're running {kib} locally, go to `http://localhost:5601` to view the login page.
|
|
|
+
|
|
|
+[[minimal-security-whatsnext]]
|
|
|
+==== What's next?
|
|
|
+
|
|
|
+Congratulations! You enabled password protection for your local cluster to
|
|
|
+prevent unauthorized access. You can log in to {kib} securely as the `elastic`
|
|
|
+user and create additional users and roles. If you're running a <<single-node-discovery,single-node cluster>>, then you can stop here.
|
|
|
+
|
|
|
+If your cluster has multiple nodes, then you must configure Transport Layer
|
|
|
+Security (TLS) between nodes. <<dev-vs-prod-mode,Production mode>> clusters
|
|
|
+will not start if you do not enable TLS.
|
|
|
+
|
|
|
+<<security-basic-setup,Set up basic security for the {stack}>> to
|
|
|
+secure all internal communication between nodes in your cluster.
|