2017-11-09 17:28:56 -05:00
|
|
|
[role="xpack"]
|
|
|
|
[[configuring-security]]
|
2018-05-01 17:11:38 -04:00
|
|
|
== Configuring security in {es}
|
2017-11-09 17:28:56 -05:00
|
|
|
++++
|
2018-12-19 17:53:37 -05:00
|
|
|
<titleabbrev>Configuring security</titleabbrev>
|
2017-11-09 17:28:56 -05:00
|
|
|
++++
|
|
|
|
|
2018-12-19 17:53:37 -05:00
|
|
|
The {es} {security-features} enable you to easily secure a cluster. You can
|
2017-11-09 17:28:56 -05:00
|
|
|
password-protect your data as well as implement more advanced security measures
|
|
|
|
such as encrypting communications, role-based access control, IP filtering, and
|
|
|
|
auditing. For more information, see
|
2018-12-19 17:53:37 -05:00
|
|
|
{stack-ov}/elasticsearch-security.html[Securing the {stack}].
|
2017-11-10 12:33:56 -05:00
|
|
|
|
2018-12-19 17:53:37 -05:00
|
|
|
To use {es} {security-features}:
|
2018-04-06 14:48:03 -04:00
|
|
|
|
2018-12-19 17:53:37 -05:00
|
|
|
. Verify that you are using a license that includes the {security-features}.
|
2018-04-06 14:48:03 -04:00
|
|
|
+
|
|
|
|
--
|
2018-12-19 17:53:37 -05:00
|
|
|
If you want to try all of the platinum features, you can start a 30-day trial.
|
|
|
|
At the end of the trial period, you can purchase a subscription to keep using
|
|
|
|
the full functionality. For more information, see
|
2018-04-06 14:48:03 -04:00
|
|
|
https://www.elastic.co/subscriptions and
|
2018-12-19 17:53:37 -05:00
|
|
|
{stack-ov}/license-management.html[License Management].
|
2018-04-06 14:48:03 -04:00
|
|
|
--
|
|
|
|
|
|
|
|
. Verify that the `xpack.security.enabled` setting is `true` on each node in
|
|
|
|
your cluster. If you are using a trial license, the default value is `false`.
|
|
|
|
For more information, see {ref}/security-settings.html[Security Settings in {es}].
|
|
|
|
|
2018-08-21 09:20:00 -04:00
|
|
|
. If you plan to run {es} in a Federal Information Processing Standard (FIPS)
|
|
|
|
140-2 enabled JVM, see <<fips-140-compliance>>.
|
|
|
|
|
2018-04-06 14:48:03 -04:00
|
|
|
. Configure Transport Layer Security (TLS/SSL) for internode-communication.
|
|
|
|
+
|
|
|
|
--
|
|
|
|
NOTE: This requirement applies to clusters with more than one node and to
|
|
|
|
clusters with a single node that listens on an external interface. Single-node
|
|
|
|
clusters that use a loopback interface do not have this requirement. For more
|
|
|
|
information, see
|
2018-12-19 17:53:37 -05:00
|
|
|
{stack-ov}/encrypting-communications.html[Encrypting Communications].
|
2018-04-06 14:48:03 -04:00
|
|
|
|
|
|
|
--
|
|
|
|
.. <<node-certificates,Generate node certificates for each of your {es} nodes>>.
|
|
|
|
|
|
|
|
.. <<tls-transport, Enable TLS on each {es} node>>.
|
|
|
|
|
|
|
|
. If it is not already running, start {es}.
|
|
|
|
|
|
|
|
. Set the passwords for all built-in users.
|
|
|
|
+
|
|
|
|
--
|
2018-12-19 17:53:37 -05:00
|
|
|
The {es} {security-features} provide
|
2018-05-02 16:09:25 -04:00
|
|
|
{stack-ov}/built-in-users.html[built-in users] to
|
2018-04-11 11:21:15 -04:00
|
|
|
help you get up and running. The +elasticsearch-setup-passwords+ command is the
|
|
|
|
simplest method to set the built-in users' passwords for the first time.
|
2018-04-06 14:48:03 -04:00
|
|
|
|
|
|
|
For example, you can run the command in an "interactive" mode, which prompts you
|
2019-03-01 13:29:59 -05:00
|
|
|
to enter new passwords for the built-in users:
|
2018-04-06 14:48:03 -04:00
|
|
|
|
|
|
|
[source,shell]
|
|
|
|
--------------------------------------------------
|
2018-04-11 11:21:15 -04:00
|
|
|
bin/elasticsearch-setup-passwords interactive
|
2018-04-06 14:48:03 -04:00
|
|
|
--------------------------------------------------
|
|
|
|
|
|
|
|
For more information about the command options, see <<setup-passwords>>.
|
|
|
|
|
2018-04-11 11:21:15 -04:00
|
|
|
IMPORTANT: The `elasticsearch-setup-passwords` command uses a transient bootstrap
|
|
|
|
password that is no longer valid after the command runs successfully. You cannot
|
|
|
|
run the `elasticsearch-setup-passwords` command a second time. Instead, you can
|
|
|
|
update passwords from the **Management > Users** UI in {kib} or use the security
|
|
|
|
user API.
|
2018-04-06 14:48:03 -04:00
|
|
|
|
|
|
|
--
|
|
|
|
|
2018-05-01 12:15:13 -04:00
|
|
|
. Choose which types of realms you want to use to authenticate users.
|
|
|
|
** <<configuring-ad-realm,Configure an Active Directory realm>>.
|
2018-05-01 17:11:38 -04:00
|
|
|
** <<configuring-file-realm,Configure a file realm>>.
|
2018-05-02 14:22:32 -04:00
|
|
|
** <<configuring-ldap-realm,Configure an LDAP realm>>.
|
2018-05-02 13:56:31 -04:00
|
|
|
** <<configuring-native-realm,Configure a native realm>>.
|
2018-05-01 16:47:24 -04:00
|
|
|
** <<configuring-pki-realm,Configure a PKI realm>>.
|
2018-05-22 11:50:35 -04:00
|
|
|
** <<configuring-saml-realm,Configure a SAML realm>>.
|
2018-08-20 03:23:14 -04:00
|
|
|
** <<configuring-kerberos-realm,Configure a Kerberos realm>>.
|
2018-05-01 12:15:13 -04:00
|
|
|
|
2018-04-16 13:37:45 -04:00
|
|
|
. Set up roles and users to control access to {es}.
|
|
|
|
For example, to grant _John Doe_ full access to all indices that match
|
|
|
|
the pattern `events*` and enable him to create visualizations and dashboards
|
2018-09-26 10:33:58 -04:00
|
|
|
for those indices in {kib}, you could create an `events_admin` role
|
2018-04-16 13:37:45 -04:00
|
|
|
and assign the role to a new `johndoe` user.
|
|
|
|
+
|
|
|
|
--
|
|
|
|
[source,shell]
|
|
|
|
----------------------------------------------------------
|
2018-12-11 04:13:10 -05:00
|
|
|
curl -XPOST -u elastic 'localhost:9200/_security/role/events_admin' -H "Content-Type: application/json" -d '{
|
2018-04-16 13:37:45 -04:00
|
|
|
"indices" : [
|
|
|
|
{
|
|
|
|
"names" : [ "events*" ],
|
|
|
|
"privileges" : [ "all" ]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"names" : [ ".kibana*" ],
|
|
|
|
"privileges" : [ "manage", "read", "index" ]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}'
|
|
|
|
|
2018-12-11 04:13:10 -05:00
|
|
|
curl -XPOST -u elastic 'localhost:9200/_security/user/johndoe' -H "Content-Type: application/json" -d '{
|
2018-04-16 13:37:45 -04:00
|
|
|
"password" : "userpassword",
|
|
|
|
"full_name" : "John Doe",
|
|
|
|
"email" : "john.doe@anony.mous",
|
|
|
|
"roles" : [ "events_admin" ]
|
|
|
|
}'
|
|
|
|
----------------------------------------------------------
|
|
|
|
// NOTCONSOLE
|
|
|
|
--
|
|
|
|
|
|
|
|
[[enable-auditing]]
|
|
|
|
. Enable auditing to keep track of attempted and successful interactions with
|
|
|
|
your {es} cluster:
|
|
|
|
+
|
|
|
|
--
|
|
|
|
.. Add the following setting to `elasticsearch.yml` on all nodes in your cluster:
|
|
|
|
+
|
|
|
|
[source,yaml]
|
|
|
|
----------------------------
|
|
|
|
xpack.security.audit.enabled: true
|
|
|
|
----------------------------
|
|
|
|
+
|
2018-12-19 17:53:37 -05:00
|
|
|
For more information, see {stack-ov}/auditing.html[Auditing Security Events]
|
2018-04-16 13:37:45 -04:00
|
|
|
and <<auditing-settings>>.
|
|
|
|
|
|
|
|
.. Restart {es}.
|
|
|
|
|
2019-01-29 08:53:55 -05:00
|
|
|
Events are logged to a dedicated `<clustername>_audit.json` file in
|
2019-01-24 05:36:10 -05:00
|
|
|
`ES_HOME/logs`, on each cluster node.
|
2018-04-16 13:37:45 -04:00
|
|
|
--
|
|
|
|
|
2018-09-13 13:42:26 -04:00
|
|
|
:edit_url: https://github.com/elastic/elasticsearch/edit/{branch}/docs/reference/security/securing-communications/securing-elasticsearch.asciidoc
|
|
|
|
include::{es-repo-dir}/security/securing-communications/securing-elasticsearch.asciidoc[]
|
|
|
|
:edit_url: https://github.com/elastic/elasticsearch/edit/{branch}/docs/reference/security/securing-communications/configuring-tls-docker.asciidoc
|
|
|
|
include::{es-repo-dir}/security/securing-communications/configuring-tls-docker.asciidoc[]
|
|
|
|
:edit_url: https://github.com/elastic/elasticsearch/edit/{branch}/docs/reference/security/securing-communications/enabling-cipher-suites.asciidoc
|
|
|
|
include::{es-repo-dir}/security/securing-communications/enabling-cipher-suites.asciidoc[]
|
|
|
|
:edit_url: https://github.com/elastic/elasticsearch/edit/{branch}/docs/reference/security/securing-communications/separating-node-client-traffic.asciidoc
|
|
|
|
include::{es-repo-dir}/security/securing-communications/separating-node-client-traffic.asciidoc[]
|
|
|
|
:edit_url:
|
2018-05-01 12:15:13 -04:00
|
|
|
include::authentication/configuring-active-directory-realm.asciidoc[]
|
2018-05-01 17:11:38 -04:00
|
|
|
include::authentication/configuring-file-realm.asciidoc[]
|
2018-05-02 14:22:32 -04:00
|
|
|
include::authentication/configuring-ldap-realm.asciidoc[]
|
2018-05-02 13:56:31 -04:00
|
|
|
include::authentication/configuring-native-realm.asciidoc[]
|
2018-05-01 16:47:24 -04:00
|
|
|
include::authentication/configuring-pki-realm.asciidoc[]
|
2018-05-22 11:50:35 -04:00
|
|
|
include::authentication/configuring-saml-realm.asciidoc[]
|
2018-08-20 03:23:14 -04:00
|
|
|
:edit_url: https://github.com/elastic/elasticsearch/edit/{branch}/x-pack/docs/en/security/authentication/configuring-kerberos-realm.asciidoc
|
|
|
|
include::authentication/configuring-kerberos-realm.asciidoc[]
|
2018-09-13 13:42:26 -04:00
|
|
|
:edit_url:
|
2018-08-21 09:20:00 -04:00
|
|
|
include::fips-140-compliance.asciidoc[]
|
2018-12-04 16:18:54 -05:00
|
|
|
:edit_url: https://github.com/elastic/elasticsearch/edit/{branch}/docs/reference/security/reference/files.asciidoc
|
|
|
|
include::{es-repo-dir}/security/reference/files.asciidoc[]
|
|
|
|
|