为 Elasticsearch 设置最小安全性

编辑

如果您正在运行一个现有的、不安全的集群,并且想要启用 Elasticsearch 安全功能,则只需完成以下步骤。

在 Elasticsearch 8.0 及更高版本中,当您首次启动 Elasticsearch 时,安全功能会自动启用

如果您正在运行一个已禁用安全功能的现有 Elasticsearch 集群,您可以手动启用 Elasticsearch 安全功能,然后为内置用户创建密码。您可以稍后添加更多用户,但使用内置用户可以简化为集群启用安全性的过程。

最小安全性方案不足以用于生产模式集群。如果您的集群有多个节点,您必须启用最小安全性,然后配置节点之间的传输层安全性 (TLS)

启用 Elasticsearch 安全功能

编辑

启用 Elasticsearch 安全功能提供基本身份验证,以便您可以使用用户名和密码身份验证运行本地集群。

  1. 在集群中的每个节点上,停止正在运行的 Kibana 和 Elasticsearch(如果它们正在运行)。
  2. 在集群中的每个节点上,将 xpack.security.enabled 设置添加到 $ES_PATH_CONF/elasticsearch.yml 文件中,并将值设置为 true

    xpack.security.enabled: true

    $ES_PATH_CONF 变量是 Elasticsearch 配置文件的路径。如果您使用归档分发版(ziptar.gz)安装 Elasticsearch,则该变量默认为 $ES_HOME/config。如果您使用软件包分发版(Debian 或 RPM),则该变量默认为 /etc/elasticsearch

  3. 如果您的集群只有一个节点,请在 $ES_PATH_CONF/elasticsearch.yml 文件中添加 discovery.type 设置,并将值设置为 single-node。此设置可确保您的节点不会无意中连接到可能在您的网络上运行的其他集群。

    discovery.type: single-node

为内置用户设置密码

编辑

要与您的集群通信,您必须为 elastickibana_system 内置用户配置密码。除非您启用匿名访问(不推荐),否则所有不包含凭据的请求都会被拒绝。

在启用最小或基本安全性时,您只需要为 elastickibana_system 用户设置密码。

  1. 在集群中的每个节点上,启动 Elasticsearch。例如,如果您使用 .tar.gz 软件包安装了 Elasticsearch,请从 ES_HOME 目录运行以下命令

    ./bin/elasticsearch
  2. 在集群中的任何节点上,打开另一个终端窗口,并通过运行 elasticsearch-reset-password 实用程序来设置 elastic 内置用户的密码。此命令会将密码重置为自动生成的值。

    ./bin/elasticsearch-reset-password -u elastic

    如果要将密码设置为特定值,请使用交互式 (-i) 参数运行该命令。

    ./bin/elasticsearch-reset-password -i -u elastic
  3. kibana_system 内置用户设置密码。

    ./bin/elasticsearch-reset-password -u kibana_system
  4. 保存新密码。下一步,您将把 kibana_system 用户的密码添加到 Kibana。

下一步配置 Kibana 以使用密码连接到 Elasticsearch

配置 Kibana 以使用密码连接到 Elasticsearch

编辑

启用 Elasticsearch 安全功能后,用户必须使用有效的用户名和密码登录 Kibana。

您将配置 Kibana 以使用内置的 kibana_system 用户和您先前创建的密码。Kibana 执行一些后台任务,这些任务需要使用 kibana_system 用户。

此帐户不适用于个人用户,并且无权从浏览器登录 Kibana。相反,您将以 elastic 超级用户身份登录 Kibana。

  1. elasticsearch.username 设置添加到 KBN_PATH_CONF/kibana.yml 文件中,并将值设置为 kibana_system 用户

    elasticsearch.username: "kibana_system"

    KBN_PATH_CONF 变量是 Kibana 配置文件的路径。如果您使用归档分发版(ziptar.gz)安装 Kibana,则该变量默认为 KIB_HOME/config。如果您使用软件包分发版(Debian 或 RPM),则该变量默认为 /etc/kibana

  2. 从安装 Kibana 的目录中,运行以下命令以创建 Kibana 密钥库并添加安全设置

    1. 创建 Kibana 密钥库

      ./bin/kibana-keystore create
    2. kibana_system 用户的密码添加到 Kibana 密钥库

      ./bin/kibana-keystore add elasticsearch.password

      出现提示时,输入 kibana_system 用户的密码。

  3. 重新启动 Kibana。例如,如果您使用 .tar.gz 软件包安装了 Kibana,请从 Kibana 目录运行以下命令

    ./bin/kibana
  4. elastic 用户身份登录 Kibana。使用此超级用户帐户来管理空间、创建新用户并分配角色。如果您在本地运行 Kibana,请访问 https://127.0.0.1:5601 以查看登录页面。

下一步是什么?

编辑

恭喜!您已为本地集群启用密码保护,以防止未经授权的访问。您可以以 elastic 用户身份安全地登录 Kibana,并创建其他用户和角色。如果您正在运行单节点集群,那么您可以在此停止。

如果您的集群有多个节点,那么您必须配置节点之间的传输层安全性 (TLS)。如果您不启用 TLS,生产模式集群将不会启动。

为 Elastic Stack 设置基本安全性,以保护集群中节点之间的所有内部通信。