美文网首页
Elasticsearch 配置用户名密码

Elasticsearch 配置用户名密码

作者: 王某某的笔记 | 来源:发表于2024-07-25 17:37 被阅读0次

从 Elasticsearch 6.8.0 和 7.1.0 开始,Elastic 将基本的安全功能(如用户身份验证和角色管理)包含在免费基础版(Basic license)中。

在这之前的版本中 X-Pack 安全功能在基础版中不可用,需要付费许可证。你可以申请一个 30 天的试用许可证来体验这些功能。

测试版本 Elasticsearch 6.8.6

配置用户名密码

启用 X-Pack 安全功能

在 elasticsearch.yml 配置文件中,添加以下配置来启用基本安全功能:

xpack.security.enabled: true

启动 Elasticsearch

启动或重启 Elasticsearch:

bin/elasticsearch

如果你使用系统服务:

sudo systemctl restart elasticsearch

设置内置用户的密码

运行以下命令来设置内置用户的密码:

bin/elasticsearch-setup-passwords interactive

该命令会提示你设置几个内置用户(如 elastic、kibana、logstash_system 等)的密码。

Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]y


Enter password for [elastic]:
Reenter password for [elastic]:
Enter password for [apm_system]:
Reenter password for [apm_system]:
Enter password for [kibana]:
Reenter password for [kibana]:
Enter password for [logstash_system]:
Reenter password for [logstash_system]:
Enter password for [beats_system]:
Reenter password for [beats_system]:
Enter password for [remote_monitoring_user]:
Reenter password for [remote_monitoring_user]:
Changed password for user [apm_system]
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
Changed password for user [elastic]

验证配置

完成后,你可以使用设置的用户名和密码来连接 Elasticsearch 以验证配置。例如:

curl -u elastic:yourpassword http://localhost:9200

这将使用用户名 elastic 和你设置的密码来进行身份验证。


启用SSL

当设置了 network.host: 0.0.0.0 之后,es会无法启动,要求你配置SSL

使用 elasticsearch-certutil 工具生成自签名证书以及相关配置如下:

生成 CA 证书

CA 证书是用来签署其他证书的。它被用作信任的根证书,能签发节点证书、客户端证书等。
它的主要作用是建立一个信任链,确保被签名的证书是可信的。

运行 elasticsearch-certutil ca 命令:

bin/elasticsearch-certutil ca

你将被提示输入证书相关的信息。一般情况下,可以直接按 Enter 使用默认值。

选择输出格式:

你会看到如下提示:

Please enter the desired output file [elastic-stack-ca.p12]:

输入文件名或按 Enter 使用默认文件名 elastic-stack-ca.p12。

接下来你会看到:

Enter password for elastic-stack-ca.p12 :

输入一个密码并记住它,你将在稍后使用。

最终,你会看到如下信息:

CA certificate written to /path/to/elasticsearch/bin/elastic-stack-ca.p12

生成节点证书

节点证书是由 CA 签署的证书,用于标识和加密特定节点(如服务器、客户端)
它包括节点的公钥和其他身份信息,并由 CA 证书签名,证明其真实性。

运行 elasticsearch-certutil cert 命令并指定 CA 证书:

bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12

你将被提示输入 CA 证书的密码(之前设置的密码)。

选择输出格式:

你会看到如下提示:

Please enter the desired output file [elastic-certificates.p12]:

输入文件名或按 Enter 使用默认文件名 elastic-certificates.p12。

接下来你会看到:

Enter password for elastic-certificates.p12 :

输入一个密码并记住它,你将在配置 Elasticsearch 时使用它。

最终,你会看到如下信息:

Certificate written to /path/to/elasticsearch/bin/elastic-certificates.p12

配置 Elasticsearch 使用生成的证书

将证书文件移动到配置目录

将生成的证书文件 elastic-certificates.p12 移动到 Elasticsearch 配置目录(如 /etc/elasticsearch 或 config 目录)。

编辑 elasticsearch.yml 文件

在 elasticsearch.yml 文件中添加或修改以下配置项

xpack.security.enabled: true

xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: /path/to/your/config/elastic-certificates.p12
xpack.security.transport.ssl.keystore.password: your-password
xpack.security.transport.ssl.truststore.path: /path/to/your/config/elastic-certificates.p12
xpack.security.transport.ssl.truststore.password: your-password

xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: /path/to/your/config/elastic-certificates.p12
xpack.security.http.ssl.keystore.password: your-password
xpack.security.http.ssl.truststore.path: /path/to/your/config/elastic-certificates.p12
xpack.security.http.ssl.truststore.password: your-password

其中 /path/to/your/config/elastic-certificates.p12 替换为你的证书文件路径,your-password 替换为你在生成证书时设置的密码。

重启并访问

修改配置文件后,重启 Elasticsearch 服务以使更改生效。

然后使用https访问,如:
https://127.0.0.1:9200/

然后在浏览器中信任这个证书

会弹出用户名密码输入框,用户可以用elastic,密码就是上面设置的

会提示不安全“您的连接不是私密连接”,点高级,选择继续前往
可以查看证书相关信息,CN是instance,有效期是3年


其他

设置密码时提示需要License

设置密码 报错了:“Please check if you have installed a license that allows access to X-Pack Security feature.”

你的版本太老了,许可证不支持 X-Pack 安全功能

查看许可证

curl -X GET "http://localhost:9200/_xpack/license"

如:

{
  license: {
    status: "active",
    uid: "ae895865-22d6-42e5-aaa0-66b78a65d885",
    type: "basic",
    issue_date: "2023-09-11T09:15:37.704Z",
    issue_date_in_millis: 1694423737704,
    max_nodes: 1000,
    issued_to: "elasticsearch",
    issuer: "elasticsearch",
    start_date_in_millis: -1
  }
}

启动时报错

ERROR: [1] bootstrap checks failed
[1]: Transport SSL must be enabled if security is enabled on a [basic] license. Please set [xpack.security.transport.ssl.enabled] to [true] or disable security by setting [xpack.security.enabled] to [false]

当设置了绑定主机时,需要配置ssl

network.host: 0.0.0.0

相关文章

网友评论

      本文标题:Elasticsearch 配置用户名密码

      本文链接:https://www.haomeiwen.com/subject/furmhjtx.html