ES 8.x 以后,默认启用了自动安全配置,即 $ES_PATH_CONF/elasticsearch.yml 中默认的 xpack.security.enabled: false 变成了默认的 xpack.security.enabled: true,启用elasticsearch 的安全配置。
自动安全配置
自动进行以下安全配置:
为传输层和 HTTP 层生成 TLS 证书和密钥。
TLS 配置设置写入
elasticsearch.yml
。为
elastic
用户生成密码。为 Kibana 生成注册令牌。
NOTE: 仅在安装后第一次启动时会启用自动安全配置,且配置文件中与安全配置相关的默认值没有被更改过。
还有一些小细节需要注意,elastic 超级用户的密码,ca指纹,kibana注册令牌会在第一次启动时输出到控制台,请记录下该信息。而且,不能将该信息输出到文件中,切记,如果输出地址为文件,那么ES基于安全考虑,将隐藏掉 elastic 密码,ca指纹,kibana注册令牌。
打开一个新终端并验证您是否可以通过进行经过身份验证的调用来连接到 Elasticsearch 集群。 出现提示时输入 elastic
用户的密码:
curl --cacert config/certs/http_ca.crt -u elastic https://localhost:9200
最后启动kibana输入注册令牌,使用超级用户登录就可以了
手动安全配置
如果您正在运行禁用安全性的现有 Elasticsearch 集群,则可以手动启用 Elasticsearch 安全功能,然后为内置用户创建密码。 您可以稍后添加更多用户,但使用内置用户可以简化为集群启用安全性的过程。
IMPORTANT
对于生产模式集群来说,最低安全场景是不够的。 如果您的集群有多个节点,则必须启用最低安全性,然后在节点之间配置传输层安全性 (TLS)。
启用 Elasticsearch 安全功能
启用 Elasticsearch 安全功能可提供基本身份验证,以便您可以通过用户名和密码身份验证运行本地集群。
在集群中的每个节点上,停止 Kibana 和 Elasticsearch(如果它们正在运行)。
在集群中的每个节点上,将
xpack.security.enabled
设置添加到$ES_PATH_CONF/elasticsearch.yml
文件并将值设置为true
:xpack.security.enabled: true
NOTE
$ES_PATH_CONF 变量是 Elasticsearch 配置文件的路径。 如果您使用存档发行版(zip 或 tar.gz)安装 Elasticsearch,则该变量默认为
$ES_HOME/config
。 如果您使用软件包发行版(Debian 或 RPM),则该变量默认为/etc/elasticsearch
。如果您的集群有单节点,请在
$ES_PATH_CONF/elasticsearch.yml
文件中添加discovery.type
设置,并将值设置为single-node
。 此设置可确保您的节点不会无意中连接到可能在您的网络上运行的其他集群。discovery.type: single-node
为内置用户设置密码
要与集群通信,您必须为 elastic
和 kibana_system
内置用户配置密码。 除非您启用匿名访问(不推荐),否则所有不包含凭据的请求都会被拒绝。
NOTE
当启用最低或基本安全时,您只需要为
elastic
和kibana_system
用户设置密码。
在集群中的每个节点上启动 Elasticsearch。 例如,如果您使用
.tar.gz
包安装 Elasticsearch,请从ES_HOME
目录运行以下命令:./bin/elasticsearch
在集群中的任何节点上,打开另一个终端窗口,并通过运行
elasticsearch-reset-password
实用程序为elastic
内置用户设置密码。 此命令将密码重置为自动生成的值。./bin/elasticsearch-reset-password -u elastic
如果要将密码设置为特定值,请使用交互式 (-i) 参数运行该命令。
./bin/elasticsearch-reset-password -i -u elastic
设置
kibana_system
内置用户的密码。./bin/elasticsearch-reset-password -u kibana_system
保存新密码。 在下一步中,您将
kibana_system
用户的密码添加到 Kibana。
Next: 配置 Kibana 使用密码连接 Elasticsearch
配置 Kibana 使用密码连接到 Elasticsearch
启用Elasticsearch安全功能后,用户必须使用有效的用户名和密码登录Kibana。
您将配置 Kibana
以使用内置的 kibana_system
用户和您之前创建的密码。 Kibana 执行一些需要使用 kibana_system
用户的后台任务。
该帐户不适用于个人用户,并且无权从浏览器登录 Kibana。 相反,您将以 elastic
超级用户身份登录 Kibana。
将
elasticsearch.username
设置添加到KIB_PATH_CONF/kibana.yml
文件中,并将值设置为kibana_system
用户:elasticsearch.username: "kibana_system"
NOTE
KIB_PATH_CONF
变量是 Kibana 配置文件的路径。 如果您使用存档发行版(zip
或tar.gz
)安装 Kibana,则该变量默认为KIB_HOME/config
。 如果您使用软件包发行版(Debian 或 RPM),则该变量默认为/etc/kibana
。从安装 Kibana 的目录中,运行以下命令来创建 Kibana 密钥库并添加安全设置:
创建 Kibana 密钥库:
./bin/kibana-keystore create
将
kibana_system
用户的密码添加到 Kibana 密钥库:./bin/kibana-keystore add elasticsearch.password
出现提示时,输入
kibana_system
用户的密码。重新启动 Kibana。 例如,如果您使用 .tar.gz 包安装 Kibana,请从 Kibana 目录运行以下命令:
./bin/kibana
以
elastic
用户登录 Kibana。 使用此超级用户帐户来管理空间、创建新用户和分配角色。 如果您在本地运行 Kibana,请访问 http://localhost:5601 查看登录页面。